天天看點

關于Verilog HDL的移位運算

在Verilog HDL中有兩種移位運算符。

<<:(左移位運算符)

>>:(右移位運算符)

其使用方法如下:

a >> n;

a << n;

a代表要進行移位的操作數,n代表要移幾位。這兩種移位運算都用0來填補移出的空位。下面舉例說明:

module shift;
   reg [3:0] start, result;
      initial 
      begin
          start = 1; //start在初始時刻設為值0001
          result = (start<<2); //移位後,start的值0100,然後賦給result
      end
endmodule
           

從上面的例子可以看出,start在移過兩位以後,用0來填補空出的位。進行移位運算時應注意移位前後變量的位數,下面舉例說明。

4’b1001<<1 = 5’b10010; //左移1位後用0填補低位

4’b1001<<2 = 6’b100100; //左移2位後用00填補低位

1<<6 = 32’b1000000; //左移6位後用000000填補低位

4’b1001>>1 = 4’b0100; //右移1位後,低1位丢失,高1位用0填補

4’b1001>>4 = 4’b0000; //右移4位後,低4位丢失,高4位用0填補

【注意】左移運算使位數增加,右移運算不改變位數。