module shiftRegister4(clk,clr,d, q);
input clk,clr,d;
output [3:0]q;
reg [3:0] q;
always @(posedge clk) begin
if(!clr) q<=4'b0000;
else begin
q <= q << 1 ;
q[0] <= d;
end
end
endmodule
LSBをdで更新
1ビット左シフト << 1
3ビット右シフトなら>> 3
|
q[3] |
q[2] |
q[1] |
q[0] |
左シフト
右シフト
論理回路図と並び順が違うので注意
clkで状態変化
(clrなし)
clr=0で同期リセット