带锁存移位寄存器(verilog)
带锁存的移位寄存器
rclk——锁存时钟
sclk——移位时钟
din——输入数据
dout——输出数据
[shiftBitNumbers——移位寄存器位数
module shifter_latch(rclk,reset_n,sclk,din,dout);
parameter shiftBitNumbers = 32;
input din,sclk,reset_n,rclk;
output reg[shiftBitNumbers-1:0] dout;
reg[shiftBitNumbers-1:0] dout_temp;
always @(posedge sclk)
begin
dout_temp <= dout_temp << 1; //输出信号左移一位
dout_temp[0] <= din; //输入信号补充到输出信号的最低位
end
always @(posedge rclk or negedge reset_n)
begin
if (!reset_n)
dout = 0;
else if(rclk)
dout = dout_temp; //输出8位信号
end
endmodule