基于 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.实验二包含了实验一的一些内容,例如数码管的显示,但是加了去抖动程序,使结果更加的稳定。