FPGA_异步清零4位并入串出移位寄存器

                                                                           

真值表:

clr clk din[3:0] dout qout
1 X X 0 0
0 din1[3:0] din1[3:0] X
0 X din1[2]、din1[1]、din1[0]、X din1[3]
0 X din1[1]、din1[0]、X、X din1[2]
0 X din1[0]、X、X、X din1[1]
0 din2[3:0] qin2[3:0] din1[0] 
0 X din2[2]、din2[1]、din2[0]、X din2[3]

Verilog代码:

module yiweireg4(clr,clk,din,qout);

input clk,clr;
input[3:0] din;
output qout;

reg qout;
reg[3:0] q;
reg[1:0] cnt;

always@(posedge clk)
begin
cnt <= cnt+1;
if(clr)
begin
q <= 4'b0000;
end
else
begin
if(cnt>0)
begin
q[3:1] <= q[2:0];
end
else if(cnt==2'b00)
begin
q <= din;
end
qout <= q[3];
end
end


endmodule

功能仿真:

 

 cnt        din            q                qout

 00     din[3:0]      din[3:0]           X

 01         X            din[2:0],X       din[3]

10          X            din[1:0],X,X     din[2]

11          X            din[0],X,X,X     din[1]

00      din2[3:0]     din2[3:0]         din[0]       

在Verilog程序中,当计数寄存器cnt为0时,读入din值的同时输出上次读入值的最低位din[0].

 

posted @ 2013-07-24 17:23  ToolsLab  阅读(1489)  评论(0编辑  收藏  举报