加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

基于小脚丫FPGA开发板和四位数码管 的数字时钟设计

2016/08/11
47
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
方块图
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

1、设计要求

基于小脚丫FPGA开发板和四位数码管实现数字时钟的设计,要求:

1)采用FPGA+按键+四位数码管实现数字时钟功能;

2)时间显示格式:XX:XX:XX (时:分:秒),采用24小时制;

3)四位数码管显示时分秒,可以通过按键控制选择显示时分界面还是分秒界面。

4)通过按键设定初始时间。

5)设置在整点12点时,通过蜂鸣器响示意整点报时。蜂鸣器响维持大概5S;

2、硬件连接

FPGA的系统时钟来自于小脚丫FPGA开发板配置的24MHz时钟晶振,连接FPGA的C1引脚

本设计用到五个个按键K1~K5,硬件设计如图1所示,五个按键分别连接到FPGA的B8、C8、A10、A11和A12引脚。

图1. 按键硬件设计

本设计用到一个蜂鸣器来示意整点报时,硬件设计如图1所示,蜂鸣器连接到FPGA的B2引脚。

图2. 蜂鸣器硬件设计

本设计用到四位数码管来显示时间,四位数码管用两个74HC595驱动,硬件设计如图1所示,74HC595的串行时钟SCK、并行时钟RCK和串行数据DIN分别连接到FPGA的N2、M1和K1引脚上。

图3. 数码管驱动74HC595硬件设计

3、工作原理

1)使用计数器做分频处理,得到周期为1秒的脉冲信号

2)使用三个8bit的BCD码表示时钟、分钟、秒钟的值,其中高4bit表示值的十位,低4bit表示值的个位;

3)正常运行时,每来一个1S脉冲信号个位加1,个位满10清零同时十位加1,当秒钟满60清零同时分钟个位加1,依次进行...直到23:59:59的下一刻全部清零;

4)按键K5,模式调节,设计共分4中模式(分秒显示、分秒调节、时分显示、时分调节),按动K5依次切换模式;

5)按键K2,时间调节,当数字时钟在时针调节、分针调节或秒针调节模式时,按动K2调节对应时间位;

6)在调时分和调分秒两个状态,可以通过K4和K2键分别左移右移要调整的位,要调整的位会通过对应位的闪烁来示意。通过K4和 K2左右移动选择好要调整的位以后,就可以通过K1和K3来增大或调小对应的位;

4、代码设计

为了实现所需要的功能,我们将整个设计划分不同的模块,如图4所示。

图4. 数字时钟程序设计框架

4.1 五位按键消抖模块

图5. 五位按键消抖模块

  • Ø输入:五位的按键电平信息输入
  • Ø输出:五位消抖后的脉冲输出
  • Ø功能:将按键按下一次的电平信号,经过消抖后变成一个维持一个时钟周期的脉冲信号;
  • Ø原理:

图6. 按键抖动特性

FPGA过20ms检测按键是否按下,存储检测到的值,并且按位取反与前一个20ms检测的值相与,得到一个值,如果为1,则判断按键按下,否则则无按下。

图7. FPGA按键的理解示意图

4.2 电子表显示控制模块。

图8. 电子表显示控制模块

  • Ø输入:五位的按键脉冲
  • Ø输出:十六位的BCD码输出,每四个代表一个十进制数;
  • Ø原理:四位的位闪烁控制信号。某一位为一代表这位对应的数码管的一位进行闪烁显示。(在调整状态下,会让当前调整的哪一位进行闪烁。正常显示状态下seg_flash_data全为零);
  • Ø功能:主要就是一个状态机,通过检查输入的按键信息,进行显示状态切换,时间调整。四个状态分别为:显示分秒,调分秒,时分显示,调时分;当K5按键按下(key_pulse[4])时依次跳转,如图9所示。

图 9. 数字时钟状态控制设计

4.3 数码管译码模块

图10. 数码管译码模块

  • Ø输入:四位的BCD码数据
  • Ø输出:八位的七段数码数据
  • Ø功能:一个case语句,将输入的四位BCD码转化为七段数码数据;
  • Ø原理:数码管分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳极(COM)需接+5V才能使其工作。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码,共阴极(COM)需接GND才能使其工作。小脚丫拓展板上的数码管如下图所示:

图11. 数码管内部电路

共阴极数码管:

位选为低电平(即0)选中数码管;各段选为高电平(即接+5V时)选中各数码段;由0到f的编码为:

4.4 四位数码管显示控制模块。

图12. 数码管显示控制模块

  • Ø输入:四个八位的七段数码管数据和位闪烁控制信号seg_flash_data.
  • Ø输出:需要串行输出给74HC595的十六位数据;
  • Ø功能:模块就是循环的将四位七段数码数据,组合一个十六位的输出数据;

4.5 74HC595驱动功能模块

图13. 74HC595驱动功能模块

  • Ø输入:十六位的位选段选数据。
  • 1)duan_wei_data[13:0]分别对应:
  • 2)[ X,X,H+,H-,DIG4,DIG3,DIG2,DIG1,DP,G,F,E,D,C,B,A] ;
  • Ø输出:SPI接口输出,串行输出十六位位选段选信号;
  • Ø功能:将输入的并行的十六位的位选段选数据通过SPI接口转化为串行输出;
  • Ø原理:详见Text8.数码管显示及74HC595芯片资料

5、系统运行

图14. 系统运行

视频地址:

https://v.youku.com/v_show/id_XMTM5MDE4OTE2MA==.html?from=s1.8-1-1.2

6、资源报告

资源 数量 比例 说明
LUTs 244 38%
寄存器 203 13%
存储器 0 0%
IO管脚 11
时钟频率 25MHz

7、知识点

Ø时钟计数分频Ø按键消抖处理

Ø功能建模

Ø波形仿真

ØSPI时序实现

Ø74HC575数码管驱动原理

8、参考文档

Lattice MachXO2数据手册

9、相关文件

文件名称 功能
Watch_system 顶层模块,将所有功能模块接口连接起来
Clock_control_module 实现数字钟的计时,调整,整点报时功能
Key_jitter 实现按键消抖
Smg_encoder_module 实现BCD码到数码管段码的转换
Seg595_control_module 循环送出每位数码管段位数据
Seg595_function_module 实现SPI时序,十六位的段位数据串行移入74HC595
  • STEP_BaseBoard.pdf
    描述:小脚丫FPGA资源扩展板原理图
  • Watch_system.zip
    描述:小脚丫FPGA数字时钟数码管显示逻辑代码
  • 基于小脚丫FPGA和四位数码管的数字时钟设计.docx
    描述:小脚丫FPGA数字时钟数码管显示设计资料

相关推荐

电子产业图谱