别看名字起的高大上,bit位选择,翻译成通俗的语言就是切割,分片。详细举例如下
reg [15:0] dword;
假设dword经过赋值后为:dword = 16'1111_1011_1101_1110;
①+
如果选择后8位
第一种方法:那就是dword [7:0] = 8'b1101_1110;在dword从右边数,数到8bit就是这个数
第二种方法:dword [0 + :8] = 8'b1101_1110;这种写法着实有点骚,需要着重强调一下
首先是0表示从0bit位开始,对应dword的最低位(0),+表示向上选择切分,8表示总共选择8bit,
综合下来也就是dword [7:0]和上面一样。
②-
有+就有-
下面举例dword[15:8] = 8'b1111_1011;
另外一种方法就是dword [15 - :8] 就等于dword [15:8]
15表示从15bit位开始,- 表示向下切分,切分到8bit位。
③*
有了加减,当然还有乘法,此时重新定义dword
reg[31:0] dword;//32bit
reg[2:0] sel;
dword = 32'b1111_0000_1010_0101_1100_0011_1110_0001;
dword [8*sel +:8];对其进行片选
当sel == 0,则片选结果为dword[7:0]=1110_0001;
当sel == 1,则片选结果为dword[15:8]=1100_0011;
当sel == 2,则片选结果为dword[23:16]=1010_0101;
当sel == 3,则片选结果为dword[31:24]=1111_0000;
这个规律你掌握了么????????
9.Verilog中的bit位选择/(切分)
最新推荐文章于 2024-07-12 16:40:15 发布