使用readmemb初始化内存时索引参数的顺序是否重要

问题描述 投票:0回答:1

因此,为了将存储器加载到FPGA上的“文件”中,我正在使用here中概述的过程。

粗略公式是这个

reg [7:0] ex2_memory [0:15];
$readmemh("ex2.mem", ex2_memory);

这对我来说很奇怪,因为许多指南都建议应该略有不同。例如,这是我的指南之一

Sometimes it can be useful to have structures with more than one dimension – for example, we might want to hold 16 8-bit values. Verilog allows you to define multiple sets of indexes for a variable:
      reg [7:0] string [15:0];

请注意在readmemb示例中它是[n:0]而不是[0:n]。那么这两种定义多维总线的方式有什么区别?

verilog
1个回答
0
投票

对于Verilog,解包尺寸顺序无关紧要。 $readmemh/b始终将起始地址映射到较低的索引,并且一次只能访问一个存储元素。使用Verilog编程接口(VPI)时,C代码有一个罕见的例外,但是我说那是罕见的吗?

在SystemVerilog中,这更重要,因为您可以整体访问未打包的数组,也可以使用零件选择,这与Verilog允许选择打包矢量尺寸的零件的方式类似。当选择位reg [7:0] mr;时,它会在reg [0:7] mr;mr[0]之间产生区别。

© www.soinside.com 2019 - 2024. All rights reserved.