reg[0:31]lw;lw[0+:8];
答案:Lw[0+:8]=lw[0:7]
表示从lw的第0位开始,数8位数。即0+表示的是从第几位开始,8表示一共有几位数。
对此我进行了一些讨论:
(1)
定义形式[0:23]a [7:0]b [0:4]e
a=24’b111000100010100011111010;
b<=a[0+:8];
c<=b[0];
d<=b[7];
e<=b[0+:5];
结果:
b=8’b11100010;
c=0
d=1
e=5’b00010
(2)在(1)的基础上更改b的定义方式为[0:7],其余保持不变
结果:
b=8‘b11100010
c=1;
d=0;
e=5’b11100;
从(1)和(2)可以看出以下结论:
b<=a[0+:8];//表示从a的第0位开始,数8位数。即0+表示的是从第几位开始,8表示一共有几位数。 而a的定义方式为[0:23]a,a=24’b111000100010100011111010;
则a的最低位是最左边,也就是是说把最左边的8位数直接整体存入b中。但是存入b中后,哪一个数是最高位,要看b的定义方式。
定义的是[0:7]还是[7:0],影响的是访问顺序,若为0:7,则最左边的数是最低位,最右边的数是最高位。若为7:0,则最左边的数是最高位,最右边的数是最低位。
(3)在(2)的基础上修改a的定义方式为[23:0],结果如下:
根据总结的规律,可以推测出结果就是上图所示。
如有问题,希望各位能够指出来。