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

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

文章目录

  • 前言
  • 一、设计要求
  • 二、设计原理
  • 三、设计过程
    • 1.数码管扫描模块
    • 2.计时模块
    • 3.闹钟模块
    • 4.闹钟响铃模块
    • 5.数码管显示模块
    • 6.整点报时功能
    • 7.模式选择模块(计时器主控电路)
  • 四、实验中遇到的困难及解决方案
  • 五、总结


前言

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

一、设计要求

设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进行手动调节以校准时间,每逢整点,产生报时音报时。系统框图如图4-1-1所示:基于Quartus II软件的FPGA综合实验——多功能数字钟_第1张图片

二、设计原理

基于Quartus II软件的FPGA综合实验——多功能数字钟_第2张图片

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

三、设计过程

1.数码管扫描模块

基于Quartus II软件的FPGA综合实验——多功能数字钟_第3张图片
采用一片74161实现0 ~ 7,再经三—八译码器转换为扫描信号。数码管扫描部分,因为不需要第四第六位,所以没有接MS4、MS6

2.计时模块

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

3.闹钟模块

基于Quartus II软件的FPGA综合实验——多功能数字钟_第7张图片
两片60和12进制计数器之间没有接进位,脉冲由控制部分提供,控制元器件的内部电路如下:基于Quartus II软件的FPGA综合实验——多功能数字钟_第8张图片
闹钟的控制部分采用一片74135双四选一数据选择器,AB接模式选择开关,选择00时正常计时,数据选择端C0接高电平以保证在不同模式切换时不会由意外的脉冲。两个C2端接到二选一数据选择器,由turn开关控制此时脉冲加在时位或是分位。

4.闹钟响铃模块

基于Quartus II软件的FPGA综合实验——多功能数字钟_第9张图片
比较器是自制的元器件,输入分别接到闹钟和时钟的时位和分位,当闹钟和时钟的时分位都相同时输出位高电平。输出接到与非门组成的触发器。初始状态为00,输出保持去拿一个状态,当时钟与闹钟的时分为相同时,触发器输入10,输出为1,当reset1为1,即闹钟工作时,输出为0,指示灯亮,当比较结果回到0时,因为00保持前一状态,所以灯不会灭,只有手动拨reset1开关时才能关闭闹钟。比较器的内部电路如图所示:
基于Quartus II软件的FPGA综合实验——多功能数字钟_第10张图片

5.数码管显示模块

基于Quartus II软件的FPGA综合实验——多功能数字钟_第11张图片
采用四片二选一数据选择器,当A为0时,数码管显示计时器数值,A为1时,数码管显示闹钟数值。

6.整点报时功能

基于Quartus II软件的FPGA综合实验——多功能数字钟_第12张图片
经过逻辑推理可得,当分位给时位进位时即为整点,因此整点报时信号接在此进位端口上,在由AB端的逻辑作为约束条件,只有当A B = 0 0 状态时,整点才会报时。

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

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

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

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

五、总结

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

你可能感兴趣的:(fpga开发)