实验就是设计一个双向的移位寄存器,该寄存器可以对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