verilog中的>>>符号是什么?

use*_*965 4 verilog

我可以知道verilog中这个符号>>>是什么吗?我应该什么时候使用它?谢谢!

例如

always @(posedge Clock) begin
  if (Clear) begin
    a < = c>>>8;
    b < = d>>>16;
  end
end
Run Code Online (Sandbox Code Playgroud)

Ian*_*Ian 6

它是一个算术右移运算符(请参阅链接的第 19-20 页)。Java 的情况正好相反(Java>>是算术右移,而 Java>>>是逻辑右移)。

算术右移是为了处理右移数字为正/负时的情况:

右移指定位数,如果表达式有符号则填充符号位的值,否则填充零

为了说明这一点,如果您的signed表达式的值为 ,请这样说:

1000 1100 
--------- >>> 2
1110 0011 //note the left most bits are 1
Run Code Online (Sandbox Code Playgroud)

但对于unsigned

1000 1100 
--------- >>> 2
0010 0011
Run Code Online (Sandbox Code Playgroud)

最左边将充满0.