当前位置: 首页 > article >正文

基于FPGA的多功能数字钟设计

基于FPGA的多功能数字钟设计

    • 前言
    • 基础知识
      • 按键
      • 数码管
    • 系统概述
    • 按键使用说明
    • 模块描述
    • 模块设计
      • button_debounce
      • button_controller
      • clock_controller
      • digital_tube
    • 整体资源用量
    • 测试视频

前言

本工程主要是数码管、按键、LED的应用开发。

注:本工程所有IP均使用源码开发。

基础知识

按键

按键作为基本的人机输入接口,在很多电子设计中都能见到。由于机械特性,在按键按下或松开的时候,按键输入值是有抖动的,无论按下去是多平稳,都难以消除抖动。
在这里插入图片描述

本设计通过 FPGA 计时来消抖。当按键输入有变化时,计时器清零,否则就累加,直到加到一个预定值(例如10ms),就认为按键稳定,输出按键值,这样就得到一个没有抖动的按键值。

由于在很多地方需要用到按键下降沿或上升沿的检测,所以按键模块也集成了上升沿和下降沿检测的功能。

数码管

分为共阳极数码管和共阴极数码管。

  • 共阳极数码管:将8个LED的正极连接在一起接入高电平,将需要点亮的LED的引脚给低电平即可

在这里插入图片描述

  • 共阴极数码管:将8个LED的负极连接在一起接入低电平,将需要点亮的LED的引脚给高电平即可

在这里插入图片描述

通过给 a,b,c,d,e,f,g,dp 各个脚加上不同的控制电压可以使不同的 LED 灯导通、发光,从而显示 0~9 各个数字和 A,B,C,D,E,F 各个字母,因此数码管可以用来显示二进制数、十进制数、十六进制数,如下图所示:

在这里插入图片描述

系统概述

系统框图如下图所示:

在这里插入图片描述

系统在 Xilinx XC7A35T-2FGG484I FPGA 上开发,使用共阳极数码管进行显示。多功能数字钟功能如下:

  1. 时钟功能
    • 显示时、分、秒,默认12:00:00
    • 可通过按键更改时间
    • 整点报时:整点报时音为缓慢的 “滴滴滴” 音,响声延续5s
  2. 闹钟功能
    • 可设定闹钟的时、分、秒
    • 闹钟提醒:闹铃音为急促的 “滴滴滴” 音,响声延续5s
    • 按键开启/禁用闹钟功能,并通过 LED 显示闹钟功能开启(LED亮)或禁用(LED灭)状态
  3. 秒表功能
    • 可实现一小时以内精确至百分之一秒的计时
    • 复位功能
    • 暂停功能
  4. 计时器功能
    • 可设定计时器的时、分、秒
    • 暂停、重新计时功能
    • 计时提醒:计时到0时,产生连续5s的 “滴滴滴”音

按键使用说明

button1

  • 显示模式下:短按切换功能显示,长按进入编辑模式
  • 编辑模式下:短按切换编辑项

button2

  • 显示模式下:

    • 闹钟显示下,短按开启/禁用闹钟功能
    • 计时器显示下,短按开始/暂停计时
    • 秒表显示下,短按开始/暂停计时
  • 编辑模式下:短按每次加1

button3

  • 显示模式下:

    • 秒表显示下,短按复位
  • 编辑模式下:短按每次加10

button4

  • 显示模式下:无操作
  • 编辑模式下:短按确认修改并退出编辑模式

模块描述

  • button_debounce:按键消抖模块, 支持消抖时间配置、支持按键上升沿和下降沿检测;

  • button_controller:按键控制模块, 生成短按/长按指示信号;

  • clock_controller:多功能时钟控制模块, 支持时钟、闹钟、秒表、计时器的功能.;

  • digital_tube:数码管驱动模块,支持刷新频率配置、支持共阴极/共阳极数码管类型选择、数码管个数配置。

模块设计

button_debounce

在这里插入图片描述

button_controller

在这里插入图片描述

clock_controller

在这里插入图片描述

digital_tube

在这里插入图片描述

整体资源用量

在这里插入图片描述

测试视频

基于FPGA的多功能数字钟设计


http://www.kler.cn/a/507063.html

相关文章:

  • 我的世界-与门、或门、非门等基本门电路实现
  • Linux安装Docker教程(详解)
  • CentOS 9 Stream 上安装 Node.js 18.20.5
  • 具体场景的 MySQL 与 redis 数据一致性设计
  • 机器学习中的凸函数和梯度下降法
  • java根据模板导出word,并在word中插入echarts相关统计图片以及表格
  • 获取当前页面的url相关信息
  • 万物互联的背后:MCU嵌入式硬件的奇幻之旅
  • 理解CPU负载与使用率
  • Java语言的数据结构
  • 电力场景红外测温图像绝缘套管分割数据集labelme格式2436张1类别
  • C++ QT 自绘呼吸灯
  • SpringSecurity详解
  • Java语言的软件工程
  • Python----Python高级(面向对象:对象,类,属性,方法)
  • wireshark抓路由器上的包 抓包路由器数据
  • Vue.js组件开发-如何实现表头搜索
  • 如何在谷歌浏览器中创建自动化工作流
  • web漏洞扫描有什么作用?web漏洞扫描原理
  • React 第三方状态管理库相关 -- Jotai 篇
  • Mysql--实战篇--大数据量表的分页优化(自增长主键,子查询主键主查询全部,查询条件加索引,覆盖索引等)
  • 如何使用wireshark 解密TLS-SSL报文
  • 深度学习-84-RAG技术之Facebook AI Similarity Search工具Faiss基础应用示例
  • 【单片机开发 - STM32(H7)】启动流程、方式、烧录方式详解
  • JS Clipboard API
  • 本地部署Web-Check网站检测与分析利器并实现远程访问实时监测