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

news2025/1/14 13:39:49

基于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.coloradmin.cn/o/2276497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能实验(五)-基于神经网络的模式识别实验

一、实验目的 理解BP神经网络的结构和原理,掌握反向传播算法对神经元的训练过程,了解反向传播公式。通过构建BP网络模式识别实例,熟悉BP网络的原理及结构 二、实验内容 基于提供的数据集,训练1个BP神经网络模型: 1. …

【伪随机数】关于排序算法自测如何生成随机数而引发的……

以 Random 开始 可能一开始&#xff0c;你只是写到了排序算法如何生成随机数 public static void main(String[] args) {Random random new Random();int[] nums new int[10];for (int i 0; i < nums.length; i) {nums[i] random.nextInt(100);}System.out.println(&q…

【LeetCode】力扣刷题热题100道(26-30题)附源码 轮转数组 乘积 矩阵 螺旋矩阵 旋转图像(C++)

目录 1.轮转数组 2.除自身以外数组的乘积 3.矩阵置零 4.螺旋矩阵 5.旋转图像 1.轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 class Solution { public:void rotate(vector<int>& nums, int k) …

IDEA中创建maven项目

1. IDEA中创建maven项目 在IDEA中创建Maven项目&#xff0c;前提是已经安装配置好Maven环境。如还未配置安装Maven的&#xff0c;请先下载安装。如何下载安装&#xff0c;可参考我另外篇文章&#xff1a;maven的下载与安装教程本篇教程是以创建基于servlet的JavaWeb项目为例子&…

【PyQt】如何在mainwindow中添加菜单栏

[toc]如何在mainwindow中添加菜单栏 如何在mainwindow中添加菜单栏 主要有两种方法&#xff1a; 1.直接创建mainwindow进行添加 2.使用ui文件加载添加 第二种方法更为常见&#xff0c;可以应用到实际 1.直接创建mainwindow进行添加 import sysfrom PyQt5.QtWidgets import …

Kubernetes1.28 编译 kubeadm修改证书有效期到 100年.并更新k8s集群证书

文章目录 前言一、资源准备1. 下载对应源码2.安装编译工具3.安装并设置golang 二、修改证书有效期1.修改证书有效期2.修改 CA 证书有效期 三、编译kubeadm四、使用新kubeadm方式1.当部署新集群时,使用该kubeadm进行初始化2.替换现有集群kubeadm操作 前言 kubeadm 默认证书为一…

Web前端:JavaScript标识符与变量

JavaScript介绍 JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”&#xff0c;指的是它不具备开发操作系统的能力&#xff0c;而是只用来编写控制其他大型应用程序的“脚本”。 JavaScript 是一种嵌入式&#xff08;embedded&#xff09;语言。它本身提供的核心语法不算…

【从零开始使用系列】StyleGAN2:开源图像生成网络——环境搭建与基础使用篇(附大量测试图)

StyleGAN2 是英伟达团队 NVIDIA 提出的生成对抗网络&#xff08;GAN&#xff09;的一种改进版本。 它通过创新的网络架构&#xff0c;能够生成细节丰富、逼真的图像&#xff0c;特别在高频细节&#xff08;如皮肤纹理、光照等&#xff09;的表现上表现卓越。与传统 GAN 相比&am…

【时时三省】(C语言基础)经典笔试题2

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 题目 这个代码有什么问题&#xff1f; 过程&#xff1a; 从主函数开始进入Test函数&#xff0c;在这个Test函数里面&#xff0c;创建了一个str指针变量&#xff0c;str里面放了一个空指针&…

Therabody 与Garmin联手,共同推进运动恢复与健康科技新突破

本次合作以数据整合、人工智能驱动的数字教练与科学研究为重点&#xff0c;旨在更好地了解科学恢复对运动表现的影响 &#xff08;2025年1月13日&#xff0c;中国上海&#xff09;全球健康领导者Therabody宣布与智能手表品牌Garmin佳明建立战略合作关系&#xff0c;共同致力于…

vue城市道路交通流量预测可视化系统

项目亮点 编号&#xff1a;R09 &#x1f687; 网站大屏管理三大前端、vuespringbootmysql、前后端分离架构 &#x1f687; 流量预测道路查询流量查询 &#x1f687; echarts可视化、地图流量分析、限流分析、站点流量分析等 &#x1f687; 管理员可以进行、用户管理、道路信息…

云集电商:数据库的分布式升级实践|OceanBase案例

电商行业对数据库有哪些需求 云集电商作为一家传统电商企业&#xff0c;业务涵盖了美妆个护、服饰、水果生鲜、健康保健等多个领域&#xff0c;在创立四年后在纳斯达克上市&#xff08;股票代码&#xff1a;YJ&#xff09;。与京东、淘宝、拼多多等电商平台不同&#xff0c;云…

Lianwei 安全周报|2025.1.13

新的一周又开始了&#xff0c;以下是本周「Lianwei周报」&#xff0c;我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件&#xff0c;保证大家不错过本周的每一个重点&#xff01; 政策/标准/指南最新动态 01 美国国土安全部发布《公共部门生成式人工智能部署手…

【江协STM32】11-2/3 W25Q64简介、软件SPI读写W25Q64

1. W25Q64简介 W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器&#xff0c;常应用于数据存储、字库存储、固件程序存储等场景存储介质&#xff1a;Nor Flash&#xff08;闪存&#xff09;时钟频率&#xff1a;80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI)存储容…

RNN之:LSTM 长短期记忆模型-结构-理论详解-及实战(Matlab向)

0.前言 递归&#xff01;循环神经网络Recurrent Neural Network 循环神经网络&#xff08;又称递归神经网络&#xff0c;Recurrent Neural Network&#xff0c;RNN&#xff09;。是一种用于处理序列数据的神经网络结构&#xff0c;具有记忆功能&#xff0c;能够捕捉序列中的时…

SOLID原则学习,接口隔离原则

文章目录 1. 定义2. 为什么要遵循接口隔离原则&#xff1f;3. 违反接口隔离原则的例子4. 遵循接口隔离原则的改进5. 总结 1. 定义 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09; 接口隔离原则是面向对象设计中的五大原则&#xff08;SOLID&#…

Qt WORD/PDF(五)使用Json一键填充Word表格

关于QT Widget 其它文章请点击这里: QT Widget 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 姊妹篇: 《Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 操作》 《Qt WORD/PDF&#…

AIGC时代 | 探索AI Agent的奥秘:四种设计模式引领未来智能趋势

文章目录 1. 反思案例&#xff1a; 2. 工具使用案例&#xff1a; 3. 规划案例&#xff1a; 4. 多Agent协作案例&#xff1a; 总结作者简介&#xff1a;延伸阅读内容简介&#xff1a;目录 导读&#xff1a;AI Agent是指能够在特定环境中自主执行任务的人工智能系统&#xff0c;不…

消息队列使用中防止消息丢失的实战指南

消息队列使用中防止消息丢失的实战指南 在分布式系统架构里&#xff0c;消息队列起着举足轻重的作用&#xff0c;它异步解耦各个业务模块&#xff0c;提升系统整体的吞吐量与响应速度。但消息丢失问题&#xff0c;犹如一颗不定时炸弹&#xff0c;随时可能破坏系统的数据一致性…

Python爬虫-汽车之家各车系周销量榜数据

前言 本文是该专栏的第43篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者在文章《Python爬虫-汽车之家各车系月销量榜数据》中,有详细介绍,如何爬取“各车系车型的月销量榜单数据”的方法以及完整代码教学教程。 而本文,笔者同样以汽车之家平台为例,…