1. 系统顶层模块设计

    图1 系统顶层设计电路

图2 数字钟功能设计电路

图3 秒表功能设计电路

图4 闹钟功能设计电路

1.1系统功能

该系统分为数字钟、秒表、闹钟三个功能模块,通过开关控制模块key_53,可以用两个开关控制秒表和闹钟的使用及设置界面(初始化为数字钟使用及设置界面)。数字钟的功能包括秒、分钟、小时的计时、奇数秒整点报时、以及星期显示,并将计数结果清晰稳定地显示到8位数码管上,格式为“xx(时)-xx(分)-xx(秒)”,其中,数字6和9为补段后的显示效果,并可以通过开关控制数字钟的暂停、清零以及调频功能,通过按键进行数字钟小时、分钟的校时,在计时为“xx:59:51-xx:59:59”时在奇数秒报时,前4次以500Hz报时,最后一次为1khz,同时,通过7个LED灯显示星期数。秒表的功能包括开始、暂停、清零,通过按键控制。闹钟的功能包括闹钟小时、分钟设置,以及闹钟铃声的停止。

基本功能:秒、分钟、小时的计数及进位。

拓展功能:数字钟调频、暂停、清零、奇数秒不同频率整点报时、校时、星期显示、八位数码管显示、69补段;秒表开始、暂停、清零;闹钟设置、停止。

1.2设计思路

分别设计好数字钟、秒表、闹钟三个模块的功能,然后将其封装,再设计一个开关模块,控制LPM_MUX三选一数据选择器选择三个模块的输出作为总输出,使其清晰稳定地显示到8位数码管上。下面分别概述数字钟、秒表、闹钟的设计思路。

数字钟:数字钟的时、分、秒计时功能可以用74390芯片设计模60、模24计数器并封装,实现计时和进位功能;调频、暂停功能可用74151芯片进行1Hz、500Hz、1000Hz的选择,暂停则不选择输入信号;清零功能通过开关经过消抖装置连入秒、分、时的清零端,实现清零;利用参数译码器(LPM_DECODE)组成整点报时模块,与蜂鸣器相连即可实现整点前奇数秒报时的功能;将key2,key3经过消抖装置分别与分、秒进位信号相或以后输入时、分的信号端,实现手动校时的功能。

秒表:用74390芯片设计模10、模60和模100计数器,用模60实现秒、分钟的计数;输入1kHz信号,经过模10计数器之后进位信号连接模100的信号输入模块temp_53,temp_53模块用74151设计,按键输入连接消抖模块后作为temp_53模块的输入,实现秒表的开始和暂停功能;清零功能通过开关经过消抖装置连接模60、模100的清零端,实现秒表清零。

闹钟:闹钟模块包括设置闹钟时间的set_Naozhong模块和比较闹钟设置时间与数字钟时间是否相同的compare_53模块。设置闹钟时间模块包含模60和模24计数器,按键输入连接消抖模块后作为模60和模24的信号输入,从而达到设置小时、分钟的功能;compare_53模块用7485数值比较器比较闹钟设置时间与数字钟时间是否相同,输出作为闹铃信号,从而达到闹钟功能。

  1. 分频模块电路设计及仿真
  1. 模块功能

对50mHz的时钟信号分频,输出1Hz的秒时钟、500Hz和1kHz的扫描时钟。

  1. 设计思路

利用74390芯片实现模2、5、10、100的计数功能,将50mHz的信号经过两次m100的分频后得到5kHz的时钟信号,接入74390的1CLKB端,该计数器以5421BCD码进行模十计数,通过1QA输出得到500Hz信号,1QD输出得到1kHz信号,将1QA接入2CLKB端,通过模5计数器进行5分频后再通过一个m100分频,即可得到1Hz信号。

  1. 设计结果(电路)

图5 分频功能电路

  1. 测试结果

图6  m100波型仿真

  1. 计时模块设计及仿真

    1. 分、秒计时模块
  1. 模块功能

实现模60计数的功能,1QD-1QA为个位上二进制数的输出,2QD-2QA为十位上二进制数的输出,当计数满60时清零,输出进位信号;同时设置clr信号和报时信号(报时模块介绍),当clr信号为1时清零。

  1. 设计思路

利用74390芯片实现模100计数器,时钟信号接入1CLKA端,1QA连接1CLKB,1QD连接2CLKA,2QA连接2CLKB,1QD-1QA为个位上二进制数的输出,2QD-2QA为十位上二进制数的输出,当个位为0000十位为0110时清零,实现模60计数的功能;74390芯片清零端高电平有效,故将十位的2QB和2QC相与后接一个输出端作为进位信号输出,再将清零信号与清零按钮输入端相或后接入1CLR和2CLR,实现当两者其中一个为1时立即清零的功能。最后将1QD-1QA和2QD-2QA分别对应接输出端ge_53[3..0]和shi_53[3..0],同时从输出端用与操作输出报时信号。

  1. 设计结果

图7 模60设计电路

  1. 仿真测试

图8 模60波形仿真

    1. 小时计时模块
  1. 模块功能

实现模24计数的功能,1QD-1QA为个位上二进制数的输出,2QD-2QA为十位上二进制数的输出,当计数满24时清零,输出进位信号(用于显示星期);同时输出clr信号,当clr信号为1时清零。

  1. 设计思路

利用74390芯片实现模24计数器,时钟信号接入1CLKA端,1QA连接1CLKB,1QD连接2CLKA,2QA连接2CLKB,1QD-1QA为个位上二进制数的输出,2QD-2QA为十位上二进制数的输出,当个位为0100十位为0010时清零,实现模24计数的功能;74390芯片清零端高电平有效,故将十位的2QB和个位的1QC相与后接一个输出端作为进位信号输出,再将清零信号与清零按钮输入端相或后接入1CLR和2CLR,实现当两者其中一个为1时立即清零的功能。最后将1QD-1QA和2QD-2QA分别对应接输出端ge_53[3..0]和shi_53[3..0]。

  1. 设计结果

图9 模24设计电路

  1. 仿真测试

图10 模24波形仿真

  1. 数码管动态显示模块

    1. 动态显示模块的设计

图11 动态显示模块功能框图

    1. 扫描模块cnt8
  1. 模块功能

产生dig_select和code_select模块所需要的地址信息,扫描时钟决定位选信号和数据切换的速度。(为满足后续八位数码管显示功能,这里将cnt6模块改为cnt8模块)

  1. 设计思路

使用74390芯片,将1QD连入1CLR端,实现模8的功能。

  1. 设计结果(电路)

图12 扫描模块cnt8设计电路

  1. 仿真测试

图13 扫描模块cnt8波形仿真

    1. 位选模块dig_select
  1. 模块功能

在地址端的控制下,产生位选信号。

  1. 设计思路

选用74138三线-八线译码器,输入信号为vcc的高电平,当位选的信号输入时,输出对应的位选变为高电平,使该输出位对应的一位数码管工作。在输入信号时要保证位选信号实现000-111循环,从而让对应的8位数码管依次循环进入工作状态,利用视觉暂留达到八位数码管显示的结果。

  1. 设计结果

图14 dig_select设计电路

  1. 仿真测试

图15  dig_select波形仿真

    1. 数据选择模块code_select
  1. 模块功能

输入 6 组数据,每组数据 4bit,本模块完成在地址端的控制下从 6 组数据当中选择 1 组输出。

  1. 设计思路

利用74151数据选择器从八组数据中的第0、1、2、3位中选择一个作为该位的输出。

  1. 设计结果

图16  code_select设计电路

  1. 仿真测试

图17  code_select波形仿真

    1. 译码模块decoder
  1. 模块功能

将输入的4位8421BCD码译为七段码,使数码管以十进制数子的形式显示数字,同时利用基本逻辑门进行69补段功能的实现。

  1. 设计思路

因7448对“6”,“9”输出不符合日常认知,故将其输出补全,补全后功能被如下。

D

C

B

A

Qa

Qb

Qc

Qd

Qe

Qf

Qg

字形

0

0

0

0

1

1

1

1

1

1

0

0

0

0

0

1

0

1

1

0

0

0

0

1

0

0

1

0

1

1

0

1

1

0

1

2

0

0

1

1

1

1

1

1

0

0

1

3

0

1

0

0

0

1

1

0

0

1

1

4

0

1

0

1

1

0

1

1

0

1

1

5

0

1

1

0

1

0

1

1

1

1

1

6

0

1

1

1

1

1

1

0

0

0

0

7

1

0

0

0

1

1

1

1

1

1

1

8

1

0

0

1

1

1

1

1

0

1

1

9

表1  补全“6”,“9”后7448功能表

  1. 设计结果

图18  decoder设计电路

  1. 仿真测试

图19  decoder波形仿真

  1. 动态显示模块电路图

图20  动态显示模块dispay设计电路

输入1Hz信号,经过模8计数器,输出四位二进制码信号,利用视觉暂留效果,通过dig_select模块产生位选输出,code_select在输入时、分、秒的个、十位信号后,输出段选的二进制码,最后通过decoder模块产生段选输出。

通过实验观察,结果符合预期,因此方案设计正确。

  1. 其他扩展功能

    1. 调频功能
  1. 模块功能

通过拨动sw3sw2sw1来控制计时速度。当sw3sw2sw1=000时,输入1Hz信号;当sw3sw2sw1=001时,输入500Hz信号;当sw3sw2sw1=010时,输入1kHz信号。

  1. 设计思路

选用74151芯片,三个开关经过消抖后连接输入段,1Hz、500Hz、1kHz连接D0、D1、D2,从而通过开关实现选频。

  1. 设计结果

图21 调频功能设计电路

  1. 仿真测试

图22  m100波形仿真

    1. 暂停
  1. 模块功能

通过开关sw3,控制闹钟的暂停和开始。

(2)  设计思路

选用74151芯片,开关经过消抖后连接输入段,1Hz连接D0,开关sw3连接高位C,这样,拨码开关上拨则选择输出D4,即无脉冲输出,从而达到暂停效果。由于暂停和调频设计思路大致相同,这里将调频和暂停一起封装为一个模块,方便调用。

  1. 设计结果

图23  暂停模块设计电路

  1. 仿真测试

由于总输入频率50mHz过大,这里进行m100仿真。

图24  m100模块波形仿真

  1. 清零

(1)  模块功能

通过开关sw0实现清零,当sw为逻辑1时,数字钟清零,为逻辑0时,数字钟恢复计时功能。

  1. 设计思路

对各个计数模块添加一个外界输入信号,当信号为1时实现清零计数功能,该信号与原计数模块进位信号相或接入清零端,从而实现手动清零功能。

(3)  设计结果

图25 小时清零模块设计电路

图26 分钟清零模块设计电路

图27 清零模块设计电路

(4) 仿真测试

图28 小时清零模块波形仿真

图29 分钟清零模块波形仿真

    1. 校时功能
  1. 模块功能

按键k1、k2从而实现分钟、小时数+1。

  1. 设计思路

Key2和分钟的进位信号相或后连接至时钟的进位模块,Key1和秒钟的进位进行相或后连接至分钟的进位模块。

  1. 设计结果

图30 校时功能设计电路

  1. 整点报时

(1)  模块功能

在计时为“xx:59:51-xx:59:59”时,奇数秒报时,前4次以500Hz报时,最后一次为1kHz。

设计思路

(2)  设计思路

利用参数译码器(LPM_DECODE)组成整点报时模块,控制秒、分计时的模块对报时模块进行秒、分钟的个位和十位的参数输入,满足分钟为59,秒为51-59计数时输出信号,前四次输出为500hz闹铃信号,最后一次为1kHz信号。

(3)  设计结果

图31 整点报时设计电路

  1. 仿真测试

图32 整点报时波形仿真

  1. 69补段

69补段在decoder模块的介绍中已进行设计功能、思路分析和波形仿真,这里不在赘叙。

    1. 八位显示分隔符-
  1. 模块功能

在八位数码管上的时、分、秒之间加上一个横杠。

  1. 设计思路

要加上两个-,故设计cnt8扫描8个数码管,使其能按要求同时显示不同的数值。我们可以观察到当DCBA为1111时,decoder译码器的输出刚好为0000000,所以让数据选择模块中每片74151的D2D5都接1,再对decoder改动一下可以使得当DCBA为1111时输出为0000001,,即可以实现加两条横杠的功能。

  1. 设计结果

前述cnt8、decoder、dig_select、code_select模块已展示过设计电路图,这里不再赘述。

  1. 仿真测试

前述cnt8、decoder、dig_select、code_select模块已展示过波形仿真图,这里不再赘述。

    1. 星期显示
  1. 模块功能

用led灯记录星期,小时计时满24进位,星期一则led0亮,星期二则led1亮,依此类推。

  1. 设计思路

要满足星期显示,这里我们选用74390芯片设计模7计数器,其中小时计满24小时后向模7计数器进位,进行7进制计数,并输出此时对应的计数结果。

  1. 设计结果:

图33  星期显示设计电路

图34  模7设计电路

图35  led模块设计电路

  1. 仿真测试

图36 模7波形仿真

图37  led模块波形仿真

  1. 秒表功能

(1)  模块功能

通过按键k3实现秒表的计时开始、暂停,按键k4实现秒表的清零

(2)  设计思路

根据前述数字钟设计的启发,考虑到秒表计时的小数位,这里我们输入1kHz信号将其先接入一个模10分频为100Hz信号(0.01s),再接入一个模100和两个模60计数,由数字电路与逻辑设计理论课的启发,开始暂停选用JK触发器接高电平vcc实现。

(3)  设计结果

图38 秒表总模块设计电路

图39 秒表计时模块设计电路

图40 秒表开关模块设计电路

(4)  仿真测试

考虑到输入信号50mHz、1kHz等数值过大,这里进行模100模块的波形仿真。

图41 模100波形仿真

  1. 闹钟功能

(1)  模块功能

通过按键k5、k6设置闹钟时间,当数字钟到大与闹钟相同时间后响铃,通过k7通知闹钟响铃声音的关闭。

(2)  设计思路

由设计数字钟时的灵感,参考数字钟校时电路,将开关分别与分钟的进位信号相或后连接至时钟的进位模块、与秒钟的进位进行相或后连接至分钟的进位模块,从而达到设置时间的功能,然后通过compare模块比较数字钟时间与闹钟时间是否相同。compare模块选用7485数值比较器,分别比较时、分的个、十位二进制代码,从而达到比较闹钟设置时间与数字钟时间是否相同的功能,若相同则输出逻辑1,实现响铃,持续一分钟,否则输出逻辑0。

(3)  设计结果

图42  闹钟总模块电路

图43 闹钟时间设置模块电路

图44 闹钟总比较模块compare设计电路

图45  闹钟时、分每一位二进制码比较模块small_compare设计电路

  1. 系统总体测试

系统总体测试结果如“附件一  评分细则及测试原始数据记录”。

  1. 系统设计实现过程中遇到的主要问题、解决思路和解决方案

7.1闹钟设置时间与数字钟时间比较模块compare_53的设计

  1. 主要问题

在进行这一模块设计时,刚开始对两个时间的比较没有头绪,无从下手。

  1. 解决思路

用百度查阅相关资料了解数值比较器7485后我便打开了思路,用数据比较设置时间与数字钟时间的小时和分钟是否相同,若相同,则输出闹钟信号,实现闹钟响铃。

  1. 解决方案

用7485芯片设计一个四位数值比较器并封装,然后将小时、分钟各自的个、十位二进制码分别进行比较,全部相同则输出逻辑1。

7.2数码管显示

  1. 主要问题

当进行秒表、闹钟功能的使用时,disply模块只能输出一组dig和seg信号。

  1. 解决思路

采用LPM_MUX进行数字钟、秒表、闹钟的deg、seg信号选择输出。

  1. 解决方案

将数字钟、秒表、闹钟分别封装,然后设计一个开关控制模块key_53连接LPM_MUX,对其各自的deg、seg信号进行选择输出(具体设计见顶层电路图)。

  1. 心得体会

本实验仅供参考,请勿抄袭。

图46  数电实验回忆

基于FPGA的数字电子钟的设计与实现-实验报告相关推荐

  1. 基于FPGA的数字电子钟的设计与实现

    背景:本实验所有结果基于Quartus II 13.1 (64-bit)实现,实验过程采用自下而上 2020年6月21日更新 我的实验报告,希望大家可以借鉴理解. 链接:https://pan.bai ...

  2. 基于 FPGA 的数字抢答器设计

    下面是基于 FPGA 的数字抢答器设计,在quartusII下,modelsim下仿真,编程语言VHDL.   1.抢答器的工作原理 主持人宣布可以抢答后,在 20s 的定时时间内若有人按键抢答,则这 ...

  3. 基于FPGA的数字视频信号处理器设计(中)

    今天给大侠带来基于FPGA的数字视频信号处理器设计,由于篇幅较长,分三篇.今天带来第二篇,中篇,视频信号概述和视频信号处理的框架.话不多说,上货. 之前也有图像处理相关方面的文章,这里超链接几篇,给各 ...

  4. 基于FPGA的数字视频信号处理器设计(下)

    基于FPGA的数字视频信号处理器设计(下) 今天给大侠带来基于FPGA的数字视频信号处理器设计,由于篇幅较长,分三篇.今天带来第三篇,下篇,程序测试与运行.话不多说,上货. 导读 图像是用各种观测系统 ...

  5. 基于FPGA的数字秒表的设计

    应用VHDL语言设计数字系统,很多设计工作可以在计算机上完成,从而缩短了系统的开发时间,提高了工作效率.本文介绍一种以FPGA为核心,以VHDL为开发工具的数字秒表,并给出源程序和仿真结果. 1 系统 ...

  6. 基于FPGA的数字时钟的设计课设(HUAT)

    目录 前言 一.数字时钟课设目标 二.部分代码 1.clock.v代码的编写 2.完整代码 3.仿真代码 总结 前言 学校黄老师的FPGA的设计课设,最后的课设为数字时钟,实现分时的计数功能,带有整点 ...

  7. m基于FPGA的数字下变频verilog设计

    目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA 1.算法描述 整个数字下变频的基本结构如下所示 NCO使用CORDIC算法,CIC采用h结构的CIC滤波器,HBF采 ...

  8. [FPGA]基于FPGA的数字跑表

    基于FPGA的数字跑表的设计与实现 一.设计要求 用FPGA设计并实现一个数字跑表,范围为0~59分59.99秒.可以实现数字跑表进行启动.停止计时和显示读数三个操作,可以在数码管上显示读数. 二.设 ...

  9. 基于FPGA的数字时钟设计

    基于FPGA的数字时钟设计 芯片与开发板 技术指标 1.具有正常的日时分秒技术显示功能,用七个数码管分别显示日,时,分,秒. 2.有按键校日,校时,校分,校秒. 3.利用led模拟整点报时功能. 4. ...

最新文章

  1. iOS自动签名打包(xcodebuild)----常用
  2. 华为手机获取状态栏高度是错误的_华为后置指纹这么多功能,你不会还以为只能解锁和支付吧...
  3. oracle创建数据库步骤
  4. 有趣,机器人吵架视频!
  5. 牛顿插值法及其C++实现
  6. makefile通用版本
  7. Linux使用FlowScan
  8. #pragma pack 用法详解
  9. 火车票能不能选座_在火车站买火车票可以选座位吗?
  10. SQL Server 2012笔记分享-28:使用日志文件查看器
  11. Axis1.x WebService开发指南—目录索引
  12. JS Navigator onLine 获取系统是否处于脱机模式
  13. python defaultdict 递归_在Python中使用defaultdict初始化字典以及应用方法
  14. Java写入磁盘阵列_什么是RAID?RAID有什么用?RAID原理
  15. Matlab中镜头畸变矫正
  16. 【自学Python:Day3】放假的心该怎么冷静下来学……
  17. VisualStudio2022 Enterprise(vs2022)离线安装包下载
  18. Widows系统截屏工具
  19. QQ工具手机软件+实用小软件+恶搞小软件合集
  20. python数独伪代码回溯法_数独的暴力回溯解法和Python GUI

热门文章

  1. 超标量处理器设计——第四章_分支预测
  2. springboot整合阿里云短信验证服务
  3. 平安科技移动开发二队技术周报(第十五期)
  4. [应用方案]ML51单片机通过ADC驱动NTC传感器测量温度
  5. ImageX继续评测系列(1):Discuz 用上AVIF图片格式
  6. 计算机专业术语e-mail是什么意思,E-mail是什么意思?
  7. 1. 安装Proxmox VE
  8. 智慧城市以及智慧医疗
  9. NUXT3项目中使用element-plus的el-dialog组件无法正常显隐
  10. 2013 年度最新的 20 大热门开源软件