9.Verilog中的bit位选择/(切分)

位选择在编程中涉及对二进制数据的切割和组合,如dword[15:0]表示从高位到低位的16位数据。选择后8位可以写作dword[7:0]或dword[0+:8],而dword[15:8]和dword[15-:8]表示相同的一组位。通过乘法和变量sel,可以动态地片选32位dword中的不同8位块,实现灵活的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

别看名字起的高大上,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;

这个规律你掌握了么????????


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值