我从一个工作设备中转储了RAM,我希望在FPGA上部分模拟。在Xilinx ISE中,我使用Core Generator生成RAM模块。
现在可以选择使用COE文件初始化RAM。 不幸的是我找不到任何可以将原始内存转储转换为COE文件的工具。或任何到COE。
这样做的最佳方式是什么?
答案 0 :(得分:1)
在FPGA中初始化BRAM可以使用CORE生成器完成,但我更喜欢编写VHDL,以便综合工具推断出BRAM或查找表(LUT)。注意,我从不使用Core Gen来创建/初始化RAM。
我不确定数据是如何格式化的,但这里有一个关于如何读取文本文件的VHDL代码片段,其中每行包含二进制字符串并使用文件内容创建信号。您必须事先知道文件的格式及其长度。
-- define a type for the lookup table (LUT)
type lut_type is array(0 to 2**12-1) of std_logic_vector(15 downto 0);
impure function init_lut_from_file(lut_file_name : in string)
return lut_type is
FILE lut_file : TEXT open READ_MODE is lut_file_name;
variable lut_line : line;
variable bv_temp : bit_vector(15 downto 0);
variable lut : lut_type;
begin
for i in lut_type'range loop
readline(lut_file, lut_line);
read(lut_line, bv_temp);
lut(i) := to_stdlogicvector(bv_temp);
end loop;
return lut;
end function;
signal lut : lut_type := init_lut_from_file("c:\data.txt");
上面的不纯函数会将文件每行包含16位二进制字符串的c:\data.txt
读入一个LUT,其中包含2 ^ 12 = 4096个条目。
然后您可以编写其他代码来阅读&像往常一样写信给lut
。