【发布时间】:2009-03-10 01:16:32
【问题描述】:
我一直在查看一些大量使用 $readmemh 和 $writememh 的 Verilog 测试台代码。
我有一个模糊的理解,这些函数基本上都是从内存中读取和写入的。它们的具体功能是什么?它们是如何工作的?
【问题讨论】:
标签: verilog
我一直在查看一些大量使用 $readmemh 和 $writememh 的 Verilog 测试台代码。
我有一个模糊的理解,这些函数基本上都是从内存中读取和写入的。它们的具体功能是什么?它们是如何工作的?
【问题讨论】:
标签: verilog
我同意要找到有关 readmem/writemem 的内容并不容易。你可以在这里找到一点: https://www.fullchipdesign.com/readmemh.htm
反正这些函数就不多说了,语法是:
$readmem[hb]("File", ArrayName, StartAddr, EndAddr)
$writemem[hb]("File", ArrayName, StartAddr, EndAddr)
Verilog 对文件格式很挑剔,文本文件中的位数必须与数组中的位数相匹配。
我建议你先定义一个数组,用数据填充它,然后用 writememh/writememb 写出来,然后打印出来。
这样的事情应该可以帮助您入门(未尝试过!)。
integer i;
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries
initial begin
for (i=0; i<16; i++) begin
memory[i] = i;
end
$writememb("memory_binary.txt", memory);
$writememh("memory_hex.txt", memory);
end
【讨论】: