如果您在HDL中推断RAM,则可以从文件初始化它。
例如,在Verilog中,您可以:
reg [63:0] MEM [0:511];
initial $ readmemh(“init_file.hex”,MEM);
如果使用CoreGen制作RAM,则可以在生成核心时使用.coe文件对其进行初始化。
遗憾的是,如果您决定更改.coe文件中的值,则需要重新生成核心。
如果直接实例化BRAM原语,则可以在HDL代码中附加INIT属性,但这些属性具有
一种非常不友好的格式,每行256位。
在任何情况下,除非数据动态地改变,否则使用状态机来填充RAM是不必要的。
还有一个选项,使用data2mem填充比特流中的RAM数据。
这可以节省时间
如果外部初始化数据发生变化,您的项目需要很长时间才能合成和构建。
- Gabor
- Gabor
以上来自于谷歌翻译
以下为原文
If you infer the RAM in HDL, you can initialize it from a file. In Verilog for example you can have:
reg [63:0] MEM [0:511];
initial $readmemh ("init_file.hex", MEM);
If you use CoreGen to make the RAM you can use a .coe file to initialize it when you generate the core.
Unfortunately you need to regenerate the core if you decide to change the values in the .coe file.
If you directly instantiate BRAM primitives, you can attach INIT attributes in the HDL code, but these have
a very unfriendly format with something like 256 bits per line.
In any case it is not nencessary to have a state machine to populate the RAM unless the data changes dynamically.
One more option, use data2mem to populate the RAM data in the bitstream. This can be a timesaver
if your external initialization data changes and your project takes a long time to synthesize and build.
-- Gabor
-- Gabor
如果您在HDL中推断RAM,则可以从文件初始化它。
例如,在Verilog中,您可以:
reg [63:0] MEM [0:511];
initial $ readmemh(“init_file.hex”,MEM);
如果使用CoreGen制作RAM,则可以在生成核心时使用.coe文件对其进行初始化。
遗憾的是,如果您决定更改.coe文件中的值,则需要重新生成核心。
如果直接实例化BRAM原语,则可以在HDL代码中附加INIT属性,但这些属性具有
一种非常不友好的格式,每行256位。
在任何情况下,除非数据动态地改变,否则使用状态机来填充RAM是不必要的。
还有一个选项,使用data2mem填充比特流中的RAM数据。
这可以节省时间
如果外部初始化数据发生变化,您的项目需要很长时间才能合成和构建。
- Gabor
- Gabor
以上来自于谷歌翻译
以下为原文
If you infer the RAM in HDL, you can initialize it from a file. In Verilog for example you can have:
reg [63:0] MEM [0:511];
initial $readmemh ("init_file.hex", MEM);
If you use CoreGen to make the RAM you can use a .coe file to initialize it when you generate the core.
Unfortunately you need to regenerate the core if you decide to change the values in the .coe file.
If you directly instantiate BRAM primitives, you can attach INIT attributes in the HDL code, but these have
a very unfriendly format with something like 256 bits per line.
In any case it is not nencessary to have a state machine to populate the RAM unless the data changes dynamically.
One more option, use data2mem to populate the RAM data in the bitstream. This can be a timesaver
if your external initialization data changes and your project takes a long time to synthesize and build.
-- Gabor
-- Gabor
举报