用+索引向量和数组:我在SystemVerilog中看到了这样的代码:if(address[2*pointer+:2])
do_something;我该如何理解+:当索引这个向量的时候?我发现它被称为比特切片,但我找不到任何解释。
3 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
logic [31: 0] a_vect; logic [0 :31] b_vect; logic [63: 0] dword; integer sel; a_vect[ 0 +: 8] // == a_vect[ 7 : 0] a_vect[15 -: 8] // == a_vect[15 : 8] b_vect[ 0 +: 8] // == b_vect[0 : 7] b_vect[15 -: 8] // == b_vect[8 :15] dword[8*sel +: 8] // variable part-select with fixed width
sel
dword[8*(0) +: 8] == dword[7:0]
sel
dword[8*(7) +: 8] == dword[63:56]
+
-
address
if(address[2*pointer+:2])
if({address[2*pointer+1],address[2*pointer]})
白板的微信
TA贡献1883条经验 获得超3个赞
它使代码更具可读性。 您可以在引用位片时指定迭代器,而不会得到“不能有非常量值”错误。
缥缈止盈
TA贡献2041条经验 获得超4个赞
a_vect[ 0 +: 8]
b_vect[ 0 +: 8]
a_vect[7:0]
b_vect[7:0]
- 3 回答
- 0 关注
- 293 浏览
添加回答
举报
0/150
提交
取消