我有一个类似下面的代码:
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.任何方法来实现它?
答案 0 :(得分:1)
是的,有办法实现这一目标。例如:
s <= {s[0],s[3:1]}