移位寄存器的设计
设计一个同步并行预置功能的8位右移移位寄存器。
CLK是移位时钟信号,DIN[7 : 0]是8位并行预置数据端口, LOAD是并行数据预置使能控制信号,QB是串行输出端口。
工作方式:当CLK的上升沿到来时过程被启动。如果这时预置使能LOAD为高电平,则输入端口处的8位二进制数被同步并行置入移位寄存器中,用作串行右移输出的初始值;如果预置使能LOAD为低电平,则执行赋值语句“REG8[6 :0] <= REG8[7 : 1]”,此语句表明:
1)一个时钟周期后将上一时钟周期移位寄存器中的高7位二进制数,即以当前值REG8[7 : 1]更新此寄存器的低7位REG8[6 : 0],且其串行移空的最高位始终由最初并行预置数的最高位填补。
2)将上一个时钟周期移位寄存器中的最低位,即当前值REG8[0]向QB输出。
module SHFT1(CLK, LOAD, DIN, QB);
input CLK, LOAD;
input [7 :0] DIN;
output QB;
reg [7 : 0] REG8;
always @(posedge CLK)
begin
if(LOAD)
REG8 <= DIN;
else
REG8[6 : 0] <= REG8[7 : 0];
assign QB = REG8[0];
end
endmodule
时序仿真图如下: