$ readmemh加载内存子块

时间:2014-05-12 10:53:24

标签: system-verilog

很抱歉,如果这个问题太新手了。我一直在寻找有关readmemh的信息,但我找不到适合我问题的解决方案。

我有一个大的hex文件,其中包含要从中读取的内存内容。但由于文件太大,我希望每次都能为我的程序带来一个更小的内存块。例如,如果我的内存有32位长的地址,只能加载2048个地址的块,并在变量中存储上部,以便知道我是否在正确的块中。

或多或少,如果我的hex文件如下:

@00000000 1212
@00000001 3434
@00000002 5656
...
@ffffffff 9a9a

我希望能够将其保存在包含以下字段的结构中:

logic [15:0] chunck [11:0]; // Keeps 2048 entries
logic [20:0] address_top;   // Keeps the top part of the address

查看文档,我看到readmemh允许我指示开始和结束地址,但我看到的是它指的是目标数组中的位置,而不是来自源。

我该怎么办? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

如果您正在使用SystemVerilog,那么您可以使用关联数组来建模您的内存,并让它根据需要分配和映射物理内存,而不是自己动手。