把若干个触发器串接起来,就可以构成一个移位寄存器。由4个边沿D触发器构成的4位移位寄存器逻辑电路如图11-41所示。数据从串行输入端D1输入。左边触发器的输出作为右邻触发器的数据输入。假设移位寄存器的初始状态为0000,现将数码D3D2D1D0(1101)从高位(D3)至低位依次送到D1端,经过第一个时钟脉冲后,Q0=D3。由于跟随数码D3后面的数码是D2,则经过第二个时钟脉冲后,触发器FF0的状态移入触发器FF1,而FF0变为新的状态,即Q1D3,Q0=D2。依此类推,可得4位右向移位寄存器的状态,如表11-3所示。
通过Verilog HDL 实现8 比特位宽、64 深度的移位寄存器。
module shift(
clk,en,d,q
);
input clk,en;
input [7:0]d;
output [7:0]q;
reg [7:0]sr[127:0];
integer n;
always @ ( posedge clk )
begin
if(en==1)
begin
for(n=63;n>=0;n=n-1)
begin
sr[n]<=sr[n-1];
end
sr[0]<=d;
end
end
assign q=sr[63];
endmodule