Verilog语法中使用+: 和-: 主要用来进行位选择,语法如下:
reg [31:0] value;
value[base_expr +: width_expr];
-
1. base_expr表示起始bit。
-
2. width_expr表示位宽。
Verilog描述位宽有2种方式:
-
1. 大端序:比较常用,如reg [31:0] value, 高位在左边,低位在右边。
-
2. 小端序:不常用,如reg [0:31] value,低位在左边,高位在右边。
位选择等效如下代码。
reg [15:0] big_value;
big_value[0+:8] 等价于 big_value[7:0]
big_value[8+:8] 等价于 big_value[15:8]
big_value[7-:8] 等价于 big_value[7:0]
big_value[15-:8] 等价于 big_value[15:8]
reg [0:15] little_value;
little_value[0+:8] 等价于 little_value[0:7]
little_value[8+:8] 等价于 little_value[8:15]
little_value[7-:8] 等价于 little_value[0:7]
little_value[15-:8] 等价于 little_value[8:15]