我正在尝试在 FPGA 上实现微控制器,我需要为其程序提供一个 ROM。如果我使用 $readmemb,它会被正确合成到 ROM 中吗?如果不是,执行此操作的标准方法是什么?
这取决于合成工具是否$readmemb
是可以合成的。
阿尔特拉的推荐的 HDL 编码风格指南包括示例 10-31(第 10-38 页),它演示了从$readmemb
(转载如下):
module dual_port_rom (
input [(addr_width-1):0] addr_a, addr_b,
input clk,
output reg [(data_width-1):0] q_a, q_b
);
parameter data_width = 8;
parameter addr_width = 8;
reg [data_width-1:0] rom[2**addr_width-1:0];
initial // Read the memory contents in the file
// dual_port_rom_init.txt.
begin
$readmemb("dual_port_rom_init.txt", rom);
end
always @ (posedge clk)
begin
q_a <= rom[addr_a];
q_b <= rom[addr_b];
end
endmodule
同样,赛灵思的XST 用户指南指出:
The $readmemb
and $readmemh
系统
任务可用于初始化块
回忆。有关更多信息,请参阅:
从外部文件初始化 RAM
编码示例
Use $readmemb
为了
二进制和$readmemh
对于十六进制
表示。为了避免可能发生的
XST和模拟器的区别
行为,Xilinx® 建议您
在这些系统中使用索引参数
任务。请看下面的编码
例子。
$readmemb("rams_20c.data",ram, 0, 7);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)