13

我一直在查看一些大量使用$readmemh$writememh.

我有一个模糊的理解,这些函数基本上是从内存中读取和写入的。它们的具体功能是什么,它们是如何工作的?

4

1 回答 1

25

我同意要找到有关 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
于 2009-03-10T11:45:12.397 回答