实验就是设计一个双向的移位寄存器,该寄存器可以对4位信号串行输入的数据进行移动输出。另外,该寄存器还有一个异步清零端,低电平有效。还有一个load装载数据的信号输入,用于预置数据,还有一个控制左移或是右移的信号输入,其功能表如表1.1所示。
表1.1 双向移位寄存器功能表
module shiftdata ( left_right ,load ,clr ,clk ,DIN ,DOUT );
input left_right ;
input load ;
input clr ;
input clk ;
input [3:0] DIN ;
output [3:0] DOUT ;
reg [3:0] data_r;
assign DOUT = data_r ;
always @ ( posedge clk or posedge clr or posedge load )
begin
if ( clr == 1)
data_r <= 0;
else if (load )
data_r <= DIN;
else begin
if ( left_right)
begin
data_r <= (data_r<<1);
data_r[0] <= 0;
end
else begin
data_r <= (data_r>>1);
data_r[3] <= 0;
end
end
end
endmodule