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].