大括号赋值疑惑

2019-07-16 01:44发布

reg  [15:0]                reg_B;
always @( posedge iClk or negedge iReset_n ) begin   
                if( !iReset_n )
                begin
                  reg_B<= 16'h0000;
                end
                else
                begin  
                  reg_B<= { reg_B[14:0], 1'b1 };//这句话怎么理解
                end
        end
                          
        assign w_A         = reg_B[15];

在iClk过了16个波形后,w_A就一直是高电平了,w_A波形如下:
w_A:_______|-------------------
不是挺理解:
  reg_B<= { reg_B[14:0], 1'b1 };//这句话怎么理解
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
5137796
1楼-- · 2019-07-16 07:26
大括号的意思就是将regB的 高14位和1`b1叠加变成0000000000000001;整个程序是依次给每一位至1
h0001
h0003
h0007
..
....
hffff
soapes
2楼-- · 2019-07-16 08:26
对reg_B向左移位操作,低位补1;
willis.lv
3楼-- · 2019-07-16 09:14
soapes 发表于 2013-4-29 15:52
对reg_B向左移位操作,低位补1;

低位都是补1的吗?
怎么不补0啊?
dingdake
4楼-- · 2019-07-16 12:48
 精彩回答 2  元偷偷看……
cleusewitz
5楼-- · 2019-07-16 16:26
reg_B<= { reg_B[14:0], 1'b1 }
从左到右 由高到低,{reg_B[14],reg_B[13],reg_B[12],……,reg_B[0],1'b1}
每次赋值的时候,都是将原来的14-0位赋值给新reg_B的15-1位,然后最低一位赋值1'b1
不知道你明白了没有
willis.lv
6楼-- · 2019-07-16 20:05
终于明白了,谢谢各位!!!

一周热门 更多>