基于Quartus II软件的FPGA综合实验——多功能数字钟

有很多自制元器件,内部电路附在文章中


前言

FPGA综合实验——多功能数字钟
基于Quartus II软件

一、设计要求

设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进行手动调节以校准时间,每逢整点,产生报时音报时。系统框图如图4-1-1所示:在这里插入图片描述

二、设计原理

在这里插入图片描述

整个系统分为五大模块,分别为数码管扫描和显示模块,计时模块、闹钟模块和闹钟响铃模块,另外,还实现了整点报时的功能。数码管扫描采用一片74161实现0~7,再经三—八译码器转换为扫描信号;计时器部分同样采用计数器构成12进制和60进制;控制部分由74153数据选择器实现时钟脉冲由晶振或是手动按键提供;数码管显示由二选一数据选择器选择数据来源;响铃部分采用触发器存储信号。

三、设计过程

1.数码管扫描模块


采用一片74161实现0 ~ 7,再经三—八译码器转换为扫描信号。数码管扫描部分,因为不需要第四第六位,所以没有接MS4、MS6

2.计时模块

从上到下依次位时、分、秒的计数器,低位的进位端接到高位的计时使能端(EP、ET)才用两个反相器以消除竞争冒险现象。内部电路如下:秒位——60进制计时器
分位——61进制计时器
(因为分位接成60进制,实际显示到59分时,不足一分钟就进位了,所以最后采取61进制,时钟显示时,60会虚显一下)
应该是时序的问题导致的
时位——13进制计时器
和分位有同样的问题,理论上应为12进制,但实际采用了13进制以实现理想效果

3.闹钟模块


两片60和12进制计数器之间没有接进位,脉冲由控制部分提供,控制元器件的内部电路如下:在这里插入图片描述
闹钟的控制部分采用一片74135双四选一数据选择器,AB接模式选择开关,选择00时正常计时,数据选择端C0接高电平以保证在不同模式切换时不会由意外的脉冲。两个C2端接到二选一数据选择器,由turn开关控制此时脉冲加在时位或是分位。

4.闹钟响铃模块

在这里插入图片描述
比较器是自制的元器件,输入分别接到闹钟和时钟的时位和分位,当闹钟和时钟的时分位都相同时输出位高电平。输出接到与非门组成的触发器。初始状态为00,输出保持去拿一个状态,当时钟与闹钟的时分为相同时,触发器输入10,输出为1,当reset1为1,即闹钟工作时,输出为0,指示灯亮,当比较结果回到0时,因为00保持前一状态,所以灯不会灭,只有手动拨reset1开关时才能关闭闹钟。比较器的内部电路如图所示:
在这里插入图片描述

5.数码管显示模块

在这里插入图片描述
采用四片二选一数据选择器,当A为0时,数码管显示计时器数值,A为1时,数码管显示闹钟数值。

6.整点报时功能

在这里插入图片描述
经过逻辑推理可得,当分位给时位进位时即为整点,因此整点报时信号接在此进位端口上,在由AB端的逻辑作为约束条件,只有当A B = 0 0 状态时,整点才会报时。

7.模式选择模块(计时器主控电路)

在这里插入图片描述
在这里插入图片描述
模式选择模块采用两片74153双四选一数据选择器,AB作为输入端(注意芯片上B为低位,A为高位),C0接到clk1(1Hz),C1通过二选一数据选择器接到change,提供手动脉冲,数据选择器由turn控制,当turn = 0时,change接到分位的clk,当turn = 1时,change接到时位的clk。
另外,为了防止切换模式时会出现意外的脉冲,所以C2端口都接到高电平。
在外电路上可以看到,由A、B、turn三个开关又经过逻辑门电路接到LED上,用于显示调整分位或时位,真值表如下:
在这里插入图片描述

四、实验中遇到的困难及解决方案

1.实验中遇到的第一个难题是计时部分实际显示的进制与理论不符的情况,最后是采用了更改逻辑的方案。
2.设计模式选择电路时,为实现turn按键的功能,初次采取的方案是用逻辑门控制四选一芯片是否工作来控制change脉冲信号接到时位或是分位。但在后续的测试过程中发现该种方案再模式切换过程中由于数据选择器的开关会导致输出端优异常的脉冲信号,所以最终采用二选一数据选择器实现turn拨码开关的功能。
3.发现在手动校时模式下,change的脉冲信号加在计数器的clk端无用,分析电路后发现是由于计数器采用并行进位方式,在手动校时的模式下进位信号始终为0,即计数器并未使能,因此在进位端加了AB的约束条件,将进位信号与AB相或,以此保证在手动校时模式下计时器仍能使能。
4.比较器元器件的制作,原本采取的是用四位数值比较器接成十六位数值比较器,但在功能测试时发现不可行,最终摒弃了该种方案。原电路如下:a0b0为高位,a3b3为低位

五、总结

学习这门实验课我学会了Quartus II软件的使用。在设计多功能计数器的过程中加深了我对计数器相关知识的理解,深刻体会到竞争与冒险现象在数字电路设计中的弊端。同时发现了许多只有在实践才能了解到的问题,和同学交流不同的设计方案时也颇为有趣,总之,在这门课的学习中收获颇多。

  • 47
    点赞
  • 418
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
使用Quartus进行数字时钟设计是一项相对简单且常见的任务。以下是一个基本的步骤指南: 1. 打开Quartus Prime软件,选择一个新的项目,并创建一个工程文件来容纳所有的设计文件。 2. 在新的工程中,添加一个顶层实体(Top-level entity)文件,该文件定义了数字时钟的整体结构和功能。这个文件通常是一个VHDL或Verilog文件。 3. 编写顶层实体文件,定义时钟模块的接口和内部逻辑。这包括时钟的各个部分,如时、分、秒、闹钟功能等。 4. 在实体文件中,将输入和输出引脚添加到时钟模块。输入引脚可以包括时钟源引脚和设置闹钟的引脚。输出引脚可以是数字时钟显示的引脚。 5. 在Quartus的项目管理器中,添加其他所需的文件,如时钟计数器和数字显示控制器等。这些文件是设计时钟功能所必需的子模块。 6. 编译整个设计,以检查是否存在语法错误并生成相应的网表文件。 7. 配置FPGA器件,选择适当的型号和设置。然后,将编译后的设计下载到FPGA开发板中。 8. 在开发板上通过外部或内部时钟源提供时钟输入,并连接输出引脚到数码管显示模块。 9. 运行时钟模块,你应该能够看到数码管上显示的当前时间,并能通过设置闹钟等功能来操作时钟。 总之,使用Quartus设计数字时钟需要进行项目设置、创建顶层实体、添加子模块、编译设计、配置FPGA器件以及连接外部硬件。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值