FPGA设计中RAM和ROM作为存储器用来存储可变或不可变类型的数据。
ROM初始化一般是加载固定数据,RAM声明时默认为不定态数据,初始化时可以让数据为全1或者全0。
一、初始化方式
- 复位时按地址写入初值
always@ (posedge clk_in or negedge rst_n_in ) begin if( !rst_n_in ) begin ram_reg[0] <= xxx; ram_reg[1] <= xxx; ... ram_reg[n-1] <= xxx; end else begin ... end end - 使用initial 和 for循环来初始化
用于初始化为有规律的数据,RAM初始化常使用这种方式。
变量的定义必须在命名块中,因此这里需要使用命名的initial块。initial begin : ram_init integer i; for(i=0;i<n;i++) begin ram_reg[i] = xxx; end end - 通过读文件的方式初始化
将数据存储在.dat文件中,通过读文件实现初始化。
这种方式RAM使用较少,一般ROM初始化时喜欢采用这种做法。initial begin $readmemh("filepath",rom_reg); end
二、测试
方式1的正确性不言而喻。
方式2

本文详细介绍了FPGA设计中RAM和ROM的初始化方法,包括复位时写入初值、使用initial和for循环以及通过文件读取。同时,文中展示了如何在测试代码中验证这两种初始化方式,并解释了编译错误的原因。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



