赛灵思
直播中

李勇进

7年用户 231经验值
私信 关注
[问答]

怎么在virtex5中阻止RAM双端口内存

嗨,
在我的应用程序中,我有一个双端口内存,其中第2个内存位置具有固定的数据值。
想出这个的最佳方法是什么?
我想用文件初始化RAM。
双端口RAM为512 X 64位。
我有一个状态机来填充RAM。
谢谢,
苏妮

以上来自于谷歌翻译


以下为原文

Hi,
In my aaplication i have a dual port memory in which the fisrt 2 memory locations have fixed data values. what is the best way to come up with this? i was thinking to initialize the RAM with a file. Dual port RAM is 512 X 64 bits. I have a state machine to populate the RAM.

Thanks,
Suni

回帖(1)

杨玲

2019-2-13 13:54:51
如果您在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
举报

更多回帖

发帖
×
20
完善资料,
赚取积分