在FPGA中使用查表的方法

第一种,使用case语句,用excel将所需的数据生成之后,复制到verilog里面去,如下:

always@(posedge CLK)
case(i) 
16'd0: Count_int<=26'd200000 ;
16'd1: Count_int<=26'd 200535 ;
16'd2: Count_int<=26'd 199150 ;
16'd3: Count_int<=26'd 197774 ;
16'd4: Count_int<=26'd 196408 ;
16'd5: Count_int<=26'd 195052 ;
16'd6: Count_int<=26'd 193704 ;
………………

endcase

这样写唯一不好的地方就是,占用逻辑单元,复制粘贴麻烦。


第二种,使用list文件,使用excel文件生成数据保存到txt,另存为.list,保存在工程目录下。

首先,在声明:

parameter Length_Data;

reg [26:0] memory_A  [Length_Data:0]; 

然后,在编写.list文件时,格式为:

Data1   //默认地址:memory_A [0]

Data2

Data3

…………

Datan   //默认地址:memory_A [Length_Data]

最后,加一个语句:

            initial  
begin 
 $readmemh("memory.list", men);
end


如此,便可随心所欲调用memory里面的数据了,调用格式 : memory_A[表达式]。



你可能感兴趣的:(在FPGA中使用查表的方法)