如何在Verilog中初始化整数数组?

如何在Verilog中初始化整数数组?,verilog,Verilog,在Samir Palnitkar的《Verilog HDL:数字设计和合成指南》第36页上,它说,阵列“在Verilog中允许reg、integer、time和矢量寄存器数据类型。”例如,它声明了一个整数阵列,其计数为整数[0:7]。如何用一组值初始化数组(计数) 我翻遍了那本书,寻找如何初始化(计数)的指针,但我找不到任何帮助 是像编码一样简单的解决方案,整数计数[0:7]={2,3,5,7,11,13,17,19}?对于Verilog,您可以使用系统任务$readmemh()/$readme

在Samir Palnitkar的《Verilog HDL:数字设计和合成指南》第36页上,它说,阵列“在Verilog中允许reg、integer、time和矢量寄存器数据类型。”例如,它声明了一个整数阵列,其计数为
整数[0:7]。如何用一组值初始化数组(计数)

我翻遍了那本书,寻找如何初始化(计数)的指针,但我找不到任何帮助


是像编码一样简单的解决方案,
整数计数[0:7]={2,3,5,7,11,13,17,19}

对于Verilog,您可以使用系统任务
$readmemh()
/
$readmemb()

通过
分配
一个
条目

a
时间

a
程序性

(添加额外的行以反映冗长)

如果赋值是某种表达式,则重新开始使用for循环。如果数字是完全唯一的,则需要编写许多语句


分配整个数组的能力(例如:
integer count[0:7]={2,3,5,7,11,13,17,19};
amd
arrayB=arrayA;
)是SystemVerilog的一项功能。现代Verilog模拟器是SystemVerilog模拟器。通常,启用SystemVerilog只需将文件扩展名从.v更改为.sv即可。对于Verilog,您可以使用系统任务分配一个数组
$readmemh()
/
$readmemb()

通过
分配
一个
条目

a
时间

a
程序性

(添加额外的行以反映冗长)

如果赋值是某种表达式,则重新开始使用for循环。如果数字是完全唯一的,则需要编写许多语句


分配整个数组的能力(例如:
integer count[0:7]={2,3,5,7,11,13,17,19};
amd
arrayB=arrayA;
)是SystemVerilog的一项功能。现代Verilog模拟器是SystemVerilog模拟器。通常,启用SystemVerilog只需将文件扩展名从.v更改为.sv

是的,Verilog中允许使用reg、integer、time和vector寄存器数据类型的数组

初始化阵列时,请确保在初始块内执行此操作

您可以使用for循环进行初始化

`module test;
  integer i;
  integer count[0:7];
  initial
    begin
      for(i=0;i<8;i=i+1)
        count[i]=i**2;
      for(i=0;i<8;i=i+1)
        $display(count[i]);
    end
endmodule`
模块测试; 整数i; 整数计数[0:7]; 最初的 开始
对于(i=0;iYes),Verilog中允许使用reg、integer、time和vector寄存器数据类型的数组

初始化阵列时,请确保在初始块内执行此操作

您可以使用for循环进行初始化

`module test;
  integer i;
  integer count[0:7];
  initial
    begin
      for(i=0;i<8;i=i+1)
        count[i]=i**2;
      for(i=0;i<8;i=i+1)
        $display(count[i]);
    end
endmodule`
模块测试; 整数i; 整数计数[0:7]; 最初的 开始
对于(i=0;不可用。使用纯Verilog无法分配整个阵列。我只是在3个模拟器上尝试了它,确保它们配置为Verilog-1995(并使用Verilog-2001再次运行)。SystemVerilog可以分配整个阵列(使用相同的模拟器验证)另外,
i++
是SystemVerilog,它在Verilog中不存在。你是对的,Greg。我在EDA中编写了这个代码,所以我不记得之前和之后的增量。是的,这可以在SV中完成,但在Verilog中,我们可以像i=i+1;不。使用纯Verilog,你不能分配整个阵列。我只是在3个模拟器上尝试了它,确保它们是conf为Verilog-1995配置(并使用Verilog-2001再次运行)。SystemVerilog可以分配整个阵列(使用相同的模拟器验证)。另外,
i++
是SystemVerilog,它在Verilog中不存在。你是对的,Greg。我在EDA中编写了此代码,因此我不记得之前和之后的增量。是的,这可以在SV中完成,但在Verilog中,我们可以像i=i+1一样完成;