这是一个简单的SystemVerilog问题,我很难找到答案。这个Verilog初始化语法的重要性顺序是什么?
在这种位阵列初始化语法中,b [0]部分是分配给最高有效位还是最低有效位?
bit a[7:0];
bit b[7:0] = 8'hff;
bit c[7:0] = 8'h00;
a = {b[0], c[6:0]};
那么[0] == 1或[7] == 1?
这是一个简单的SystemVerilog问题,我很难找到答案。这个Verilog初始化语法的重要性顺序是什么?
在这种位阵列初始化语法中,b [0]部分是分配给最高有效位还是最低有效位?
bit a[7:0];
bit b[7:0] = 8'hff;
bit c[7:0] = 8'h00;
a = {b[0], c[6:0]};
那么[0] == 1或[7] == 1?
你找到答案的原因很难找到答案,因为结果取决于你声明的东西。您已将a
宣告为[7:0]
。因此,在a
的位被分布是这样的:
a7 a6 a5 a4 a3 a2 a1 a0
你可以分配给{b[0], c[6:0}
a
:
a7 a6 a5 a4 a3 a2 a1 a0 = b0 c6 c5 c4 c3 c2 c1 c0
1 0 0 0 0 0 0 0 = 1 0 0 0 0 0 0 0
A[7] == 1
如果你宣布a
是[0:7]
结果将是:
a0 a1 a2 a3 a4 a5 a6 a7 = b0 c6 c5 c4 c3 c2 c1 c0
1 0 0 0 0 0 0 0 = 1 0 0 0 0 0 0 0
A[0] == 1
谢谢保罗!一个很好的解释加上一个答案。另外,感谢编辑,我主要是一个C人,只是犯了一个错误。 – Rich
b[0]
被分配给最高有效位a[7]
;即a[7] == 1
。
但是,我不确定这是打字错误还是打算使用解压声明。 bit a[7:0]
是unpacked array
,它并不意味着连续存储,它不能直接指定打包或整数值。
以下是从SystemVerilog for Design
,P.114,5.3.1压缩数组
解压缩后的数组存储通过每个元件独立地,但在一个共同的阵列名称分组。
P.122,5.3.5分配值,以阵列
SystemVerilog的延伸的Verilog与两种其他方法将值分配给压缩数组:
- 整个阵列可以被分配值的列表
- 可以为数组的一个片段分配一个值列表。值的列表在'{}括号之间指定,与初始化解压缩数组相同。
对于包装数组,bit [7:0] a
,我们的确有Paul的正确答案。
请发表合法的Verilog代码。 0xff不能编译。 – toolic