如何在Verilog中右转?

时间:2014-07-04 17:33:57

标签: verilog bit bit-shift

我有一个类似下面的代码:

module scheduler(clk, rst, busy, s);

input clk, rst;
input [3:0] busy;

output [3:0] s;

reg [3:0] s;

wire busyor;
assign busyor = busy[0] | busy[1] | busy[2] | busy[3];

always  @ (posedge clk or negedge rst)
  if       (!rst)     s  <=  4'b1000;
  else if  (!busyor)  s  <=  s >>> 1;

endmodule

关键是“s”从1000开始,然后它一直移动到0001,然后当它再次移动时,它变为0000.关键是当钻头到达终点时,意味着它是0001,当它再次移动时,我希望它出现在开头,意味着它要旋转。所以,在0001之后,如果转变,它应该转到1000.任何方法来实现它?

1 个答案:

答案 0 :(得分:1)

是的,有办法实现这一目标。例如:

s <= {s[0],s[3:1]}