基于FPGA实验板 #Quartus II Verilog语言

verilog语言 BCD码按键从1到60计数,再跳1循环计数。加入键盘防抖动。

源代码:

module BCD_60(

    input clk,clr,en,

        output reg cout,

        output reg[7:0]q);

        reg[7:0]count;

always @(posedge clk,negedge clr)

    begin

        q<=count;

        if (clr==0) count<=8'b00000000;

          else if(en==1)

                begin

                if(count==8'b01011001)

                   count=8'b00000000;

                        else if(count[3:0]<9) count[3:0]=count[3:0]+1'b1;

                else if(count[7:4]<5)

                begin

                  count[7:4]=count[7:4]+1'b1;

                  count[3:0]=4'b0000;

                end

                if(count==8'b01011001) cout=1;

                else cout=0;

                end

                end

endmodule

键盘仿抖动设计

module eg347(
input clk,key,
output reg keyout);
reg[3:0] cta,ctb;
always@(posedge clk)
begin
if(key==0)
begin cta<=cta+1 ;
      ctb<=4&apos;b0000; 
      end

      if(cta>=5)
         begin
            cta<=0;
            keyout<=0;
         end
else if(key==1)
begin
       ctb<=ctb+1;
       cta<=4&apos;b0000; 
end
      if(ctb>=5)
      begin
           ctb<=0;
           keyout<=1;
      end

end
endmodule

  •  

BCD60计数器设计,以普通按键增加防抖动设计作为时钟输入的测试。

1.新建 Verilog 文件,将例 3.4.7 加入到工程中,并创建符号文件。

2.打开原理图文件,设计电路如图所示,其中防抖动模块 debounce 的时钟连接 24 位分频计数器的 ck[15]输出端。

3.存盘,将该文件设置为顶层编译实体,编译该设计。由于该电路存在巨大的分频比,时钟频率差异巨大,如果要仿真,需要的时钟周期数将非常巨大,仿真时间会非常长。由于电路较简单,每个模块均已独立仿真,因此可以不再做整体仿真。

4.锁定管脚,将 clk 锁定至系统 20MHz 信号源,key、clr、en 均锁定在普通机械开关或拨码开关上,重新编译。

5.下载配置。

6.硬件测试。按动键盘上的 key 键,给计数器输入手动脉冲,观察每按动 1 次,计数数据是否变化,是否只加 1,是否存在按动 1 次,数据增加几个的现象。

7.通过修改调整时钟输入频率或内部延时数值的大小,重新测试,观察不同延时时间对键盘防抖动的影响。

原理图

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值