Arrays 在verilog中创建可存储实际值的数组
谁能告诉我如何创建一个数组,它可以在Arrays 在verilog中创建可存储实际值的数组,arrays,verilog,Arrays,Verilog,谁能告诉我如何创建一个数组,它可以在verilog中存储实际值? 我尝试了以下方法,但无效: real[31:0]在1_表[0:256]中一种方法是使用未打包的数组。更改: real [31:0] in1_table [0:256]; 致: 这对我来说适用于两种不同的模拟器: module tb; real in1_table [31:0] [0:256]; initial begin in1_table[0][0] = 5.666; in1_table[0][1] = 1
verilog
中存储实际值?
我尝试了以下方法,但无效:
real[31:0]在1_表[0:256]中代码>一种方法是使用未打包的数组。更改:
real [31:0] in1_table [0:256];
致:
这对我来说适用于两种不同的模拟器:
module tb;
real in1_table [31:0] [0:256];
initial begin
in1_table[0][0] = 5.666;
in1_table[0][1] = 16.67;
$display(in1_table[0][0]);
$display(in1_table[0][1]);
end
endmodule
/*
Output:
5.666
16.67
*/
参考IEEE标准1800-2012第7.4节“封装和非封装阵列”
来自“7.4.1压缩阵列”
压缩阵列只能由单位数据类型(位、,
逻辑、reg)、枚举类型和递归其他压缩数组和
填充结构
我认为这意味着不允许使用real
类型的压缩数组
这假设您想要一个多维实数数组(32x257实数)。如果您想要一个32位实数,则需要使用shortreal,否则real为64位。对于实数,这是你仅有的两个选择。您编写的范围[31:0]
被视为压缩数组范围,它仅对整数类型有效 仅仅说“它不工作”是没有帮助的。你收到错误消息了吗?那是什么?你有没有得到意想不到的结果?那是什么?
module tb;
real in1_table [31:0] [0:256];
initial begin
in1_table[0][0] = 5.666;
in1_table[0][1] = 16.67;
$display(in1_table[0][0]);
$display(in1_table[0][1]);
end
endmodule
/*
Output:
5.666
16.67
*/