基于FPGA的系统设计与应用
实验二
计数器设计实验
一、实验目的:
学习计数器的设计、仿真和硬件测试方法。
二、实验内容及步骤:
1.用Verilog HDL设计2位16进制计数器,由DE2的KEY0输入计数值,在HEX1,HEX0上显示计数值。
2.使用嵌入式逻辑分析仪进行仿真;
3.将实验程序下载到DE2运行。
实验注意事项:去抖动
三、程序代码
module lib22(out1,out2,clk,rst,key);
output [6:0] out1,out2;
input clk,rst;
input key;
reg [19:0]count;
reg [7:0]in;
reg [6:0]out1,out2;
reg C,K;
reg [9:0] r1;
always@(posedge clk)
if(count==20'd5000)
begin
C=~C;
count<=1'b0;
end
else
count=count+1'b1;
always @ (posedge C)
begin
if(r1<10'd1000)
begin
K<=1'b0;
r1<=r1+1'b1;
end
else
begin
K<=1'b1;
r1<=1'b0;
end
end
always @ (posedge C,negedge rst)
if(!rst)
in<=1'b0;
else if(!K)
begin
in=in+8'b1;
end
always @ (in[3:0])
case(in[3:0])
4'b0000:out1=7'b1000000;
4'b0001:out1=7'b1111001;
4'b0010:out1=7'b0100100;
4'b0011:out1=7'b0110000;
4'b0100:out1=7'b0011001;
4'b0101:out1=7'b0010010;
4'b0110:out1=7'b0000010;
4'b0111:out1=7'b1011000;
4'b1000:out1=7'b0000000;
4'b1001:out1=7'b0010000;
4'b1010:out1=7'b0001000;
4'b1011:out1=7'b0000011;
4'b1100:out1=7'b1000110;
4'b1101:out1=7'b1100001;
4'b1110:out1=7'b0000110;
4'b1111:out1=7'b0001110;
default:out1=7'b1111111;
endcase
always @ (in[7:4])
case(in[7:4])
4'b0000:out2=7'b1000000;
4'b0001:out2=7'b1111001;
4'b0010:out2=7'b0100100;
4'b0011:out2=7'b0110000;
4'b0100:out2=7'b0011001;
4'b0101:out2=7'b0010010;
4'b0110:out2=7'b0000010;
4'b0111:out2=7'b1011000;
4'b1000:out2=7'b0000000;
4'b1001:out2=7'b0010000;
4'b1010:out2=7'b0001000;
4'b1011:out2=7'b0000011;
4'b1100:out2=7'b1000110;
4'b1101:out2=7'b1100001;
4'b1110:out2=7'b0000110;
4'b1111:out2=7'b0001110;
default:out2=7'b1111111;
endcase
endmodule
四、实验原理图:
DE2按键电路图
五、实验总结与分析:
1.不加去斗时,出现的结果不稳定,不同的DE2板子结果不一样,在加上去斗时,实验结果很稳定;
2.去斗可以是检测抖动阶段也可以是不抖动阶段;
3.实验二包含了实验一的一些内容,例如数码管的显示,但是加了去抖动程序,使结果更加的稳定。
因篇幅问题不能全部显示,请点此查看更多更全内容