FPGA Verilog语言实现数字钟

这篇博客详细介绍了如何使用Verilog语言在FPGA平台上实现一个基本的数字时钟。通过计时模块和扫描显示逻辑,实现了秒、分钟的计数和显示。代码已验证成功,适用于Cyclone IV E系列的CE4CP6F17C8芯片。
摘要由CSDN通过智能技术生成

  FPGA第一次练手

 仅有基本的计时功能,其他的功能正在赶来

程序如下:


module column_scan_module
(
    CLK, RSTn, Column_Scan_Sig,Row_Scan_Sig
);
    
input CLK;
input RSTn;
output [5:0]Column_Scan_Sig;
output [7:0]Row_Scan_Sig;
 
/*****************************/
 
  parameter T4MS = 18'd19_9999;
 
/*****************************/
 
reg [18:0]Count1;
 
always @ ( posedge CLK or negedge RSTn )
    if( !RSTn )
     Count1 <= 18'd0;
 else if( Count1 == T4MS )
     Count1 <= 18'd0;
 else
     Count1 <= Count1 + 1'b1;

/******************************/
 
reg [2:0]t;
 
always @ ( posedge CLK or negedge RSTn )
    if( !RSTn )
     t <= 3'd0;
 else if( t == 3'd6 )
     t <= 3'd0;
 else if( Count1 == T4MS )
     t <= t + 1'b1;

    /*********************************/
 
reg [5:0]rColumn_Scan;
 
always @ ( posedge CLK or negedge RSTn )
    if( !RSTn )
     rColumn_Scan <= 6'b111111;
 else if( Count1 == T4MS )
     case( t )

   3'd0 : rColumn_Scan <= 6'b111110;
3'd1 : rColumn_Scan <= 6'b111101;
   3'd2 : rColumn_Scan <= 6'b111011;
3'd3 : rColumn_Scan <= 6'b110111;
3'd4 : rColumn_Scan <= 6'b101111;
3'd5 : rColumn_Scan <= 6'b011111;
endcase  

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
按键消抖是指在数字电路中,通过一定的逻辑设计手段,解决按键在按下或释放时可能产生的抖动问题。抖动是指在按键按下或释放的瞬间,由于机械接触或其他因素的影响,按键可能会产生不稳定的信号变化,导致系统误触发或无法正确识别按键的状态。 在FPGAVerilogHDL语言中,可以使用计数器来实现按键消抖。一个常见的方法是使用两个计数器来判断按键持续的时间,并根据持续时间判断按键的状态。例如,在设计中可以设置一个计数器,当检测到按键按下时,计数器开始计数,同时另一个计数器判断计数值是否达到一定阈值。如果计数值达到阈值,表示按键已稳定按下,可以进行相应的处理;如果计数值没有达到阈值,表示按键还在抖动状态,需要继续等待。 当然,也可以使用状态机来实现按键消抖。状态机可以根据按键的状态变化进行状态转移,从而判断按键的稳定状态。例如,可以定义状态机的初始状态为按键待机状态,当检测到按键按下时,状态机切换到按下滤波状态,并等待一段时间。如果在这段时间内没有检测到按键的状态变化,表示按键已稳定按下,可以进行相应的处理;如果在这段时间内检测到按键的状态变化,表示按键还在抖动状态,状态机回到初始态继续等待。 总之,按键消抖是通过逻辑设计手段解决按键抖动问题的一种方法,在FPGAVerilogHDL语言中可以使用计数器或状态机来实现按键消抖。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值