学生实验实习报告册
学 年 学 期 :
2017 -2018 学年春秋学期
课 程 名 称 :
数字电路与逻辑设计实验A
实 验 项 目 :
基于FPGA的数字电子钟的设计与实现
姓
学
名 :
号 :
学院和专业:
班
级 :
指 导 教 师 :
1. 系统顶层模块设计
文字说明分析系统功能要求,说明设计思路,给出顶层设计结果(电路截图,注意图片清晰完整)
分别通过分频、计数、显示、延时(按键消抖)及按键控制五个模块实现时钟的显示、校时、
校分、秒表、整点报时、切换时钟频率、清零暂停等功能。
图 1 系统顶层电路图
2. 主要功能模块电路设计
2.1 分频模块
(1) 模块功能:
将 50mhz 的信号分为 1khz、500hz、1hz 三个小频率信号。
(2) 设计思路:
先将 50mhz 信号通过两个 m100 器件得到 5000hz 信号,再利用 74390 芯片的两个模二和两个模
五中的一个模五得到 1khz 信号,1khz 信号经过模二得到 500hz 信号、500hz 信号经过另一个模五
得到 100hz 信号,最后通过 m100 器件得到 1hz 信号。
(3) 设计结果:
成功得到 1khz、500hz、1hz 三种频率的信号。
2.2 计时模块
2.2.1 分、秒计时模块(模 60 计数)
(1) 模块功能(计数、进位):
在秒和分的四位数码管上分别实现模 60 的功能,即从 00 显示到 59 再循环回 00,同时实现每
60s 向分钟进 1 位。
(2) 设计思路:
利用 74390 器件先将两个模五和两个模二用 8421 的方式级联完成各由 4 位输出组成的个位和
十位的模 100,然后在个位为 0、十位为 6 的为 1 的输出通过门电路接到 74390 的两个清零端。
(3) 设计结果:
成功实现模 60 计数和进位信号的产生。
2.2.2 小时计时模块(模 24 计数)
(1) 模块功能:
实现对应于小时的两位数码管从 00 到 23 的循环显示。
(2) 设计思路:
利用 74390 器件先将两个模五和两个模二用 8421 的方式级联完成各由 4 位输出组成的个位和
十位的模 100,然后在个位为 4、十位为 2 的为 1 的输出通过门电路接到 74390 的两个清零端。
(3) 设计结果:
成功实现小时的模 24 功能。
2.2.3 计时进位信号的设计:
将 1hz 的信号连至秒钟的信号输入端,秒钟的计时模块的信号输出端需要经过一个 m60 器件再
连接到分钟的计时模块信号输入端以实现秒进位,分钟的计时模块的信号输出端需要经过一个 m60
器件再连接到小时的计时模块信号输入端以实现分进位。再将分钟的计时模块的信号输出端需要经
过一个 m60 器件连接到小时的计时模块信号输入端以实现小时的计数。
2.3 数码管动态显示模块
2.3.1 数码管动态显示模块
(1) 模块功能:
在 8 位数码管上分别显示数字时钟的时、分、秒以及秒表的分秒。
(2) 设计思路:
利用 74390 和 74138 器件进行位选和段选。
(3) 设计结果:
成功在数码管上显示对应内容。
2.3.2 扫描模块 couner6
(1) 模块功能:
实现模八。
(2) 设计思路:
利用 74390 中的一个模二和模五级联,在为 6 时把为 1 的输出通过门电路连接到清零端,最终输
出 0-5 对应 8421BCD 码。
(3) 设计结果:
成功实现模 6。
2.3.3 位选模块 dig_select
(1) 模块功能:
实现位选,选中对应数码管。
(2) 设计思路:
收到 counter6 传来的输出经过 74138 译码器在对应位输出一个 0,选中该位。
(3) 设计结果:
成功实现位选功能。
2.3.4 段选模块 seg_select
(1) 模块功能:
实现段选功能,根据相应输入输出对应段码。
(2) 设计思路:
利用 74151 数据选择器。
(3) 设计结果:
根据的对应输入输出对应数据。
2.3.5 译码模块 decoder
(1) 模块功能:
实现译码功能。
(2) 设计思路:
将位选输出信号输入到 7448 译码器输入端,使其显示对应断码。
(3) 设计结果:
成功实现断码输出功能。
2.4 其他扩展功能 1,整点报时:
(1) 模块功能:
当分钟和秒钟均为 0 时,有持续 1s 的 500hz 的蜂鸣器响声。
(2) 设计思路:
将分钟和秒钟计时的 counter60 的所有输出通过或非门的输出与 500hz 信号相与在输出到蜂鸣器
上。
(3) 设计结果:
成功实现整点报时功能。
2.5 其他扩展功能 2,调时调分功能:
(1) 模块功能:
当按下第一个拨码开关,分钟所对应的两位数码管将以 1hz 的频率依次进一。当按下第二个拨码
开关,分钟所对应的两位数码管将以 1hz 的频率依次进一。
(2) 设计思路:
将 1hz 的频率和 60 进一的信号以及拨码开关通过一系列的逻辑门电路达到当拨码开关为 0 时,
进位信号为数字钟的进位信号;当拨码开关为 1 时,进位信号为 1hz 从而达到时和分的调节功能。
(3) 设计结果:
成功实现分钟和小时的调节功能。
2.6 其他拓展功能 3,清零和暂停:
(1) 模块功能:
当调节第三个拨码开关使其为 1,电路进行清零,全部数码管显示为 0,当其为 0,电路从 0 重
新显示;当调节第四个拨码开关使其为 1,电路暂停,数码管一直显示当前时间,当其为 0 时电路
继续计数并显示。
(2) 设计思路:
将第四个拨码开关通过非门和时钟信号相与使其当拨码开关为 0 时为时钟信号,为 1 时无信号输
入,达到暂停功能。将第三个拨码开关通过非门与清零信号相或使其当拨码开关为 0 输出为清零信
号,当其为 1 直接清零达到清零效果。
(3) 设计结果:
成功实现电路的清零和暂停功能。
2.7 其他拓展功能 3,秒表功能:
(1) 模块功能:
实现分秒的显示。
(2) 设计思路:
将原本的 counter6 改为 counter8,同时在段选里加上分秒的部分以及时钟信号需改为 100hz 的
信号输入,还要将之前的清零和暂停也连接到秒表的电路里。
(3) 设计结果:
成功实现秒表的暂停,清零,计数功能。
3. 各模块的测试方案及测试结果
3.1 计时模块
3.1.1 分、秒计时模块
测试方案:用 quartus II 软件仿真模 60 计数结果。
测试结果:如图 2 为模 60 仿真结果。
测试结果分析:十位从 0-5 循环,各位从 0-9 循环,共同实现从 00 到 59 的循环即模 60。
3.1.2 小时计时模块
测试方案:用 quartus II 软件仿真模 24 计数结果。
测试结果:如图 3 为模 24 仿真结果。
测试结果分析:当十位从 0 计到 1,个位计数从 0-9;当十位为 2,个位只计数到 3,从而实现从
00-23,完成模 24 功能。
3.2 数码管动态显示模块
3.2.1 扫描模块 counter6
测试方案:用 quartus II 软件仿真模 6 计数结果。
测试结果:如图 3 为 counter6 模块仿真结果。
测试结果分析:从 0-5 进行计数,实现模 6 功能。
3.2.2 位选模块 dig_select(实现数码管的选中)
测试方案:用 quartus II 软件仿真位选 dig_select 结果。
测试结果:如图 4 为位选 dig_select 模块仿真结果。
测试结果分析:根据输入信号输出 0 分别从右依次向左移动一位实现段选功能。
3.3 扩展功能模块
3.3.1 秒表的分秒计数(模 100 和模 10)
测试方案:用 quartus II 软件仿真 m100 和 m10 结果。
测试结果:如图 4 为 m100 模块仿真结果。
如图 4 为 m10 模块仿真结果。
测试结果分析:当十位从 0-9 变化时,十位每处于一个数个位都从 0-9 实现模 10,从而实现模 100;
输出从 0-9 实现模 10 功能。
3.3.2 扫描模块 counter8
测试方案:用 quartus II 软件仿真模 8 计数结果。
测试结果:如图 3 为 counter6 模块仿真结果。
测试结果分析:从 0-7 进行计数,实现模 8 功能。
3.4 系统总体测试
表 1 系统总体测试结果记录表
测试内容
测试方案
测试结果
秒计数
时钟连接 1Hz,观察秒计数结果是否能够从 00-59 正
秒计数功能实现
常计数,且能够正常向分进位。
分计数
时钟连接 100Hz,观察分计数结果是否能够从 00-59
分计数功能实现
正常计数,且能够正常向小时进位。
小时计数 时钟连接 1KHz,观察分计数结果是否能够从 00-23
小时计数功能实现
正常计数,且能够正常归零。
秒表
时钟连接 100hz,观察秒表能否从 00-99 正常计数,
秒表计数、暂停、清零
拨动拨码开关能否暂停,拨动拨码开关能否清零。
功能均实现
整点报时 分钟和秒钟的输出和 500hz 信号经过门电路后输出
整点报时功能实现
到蜂鸣器,观察在分钟和秒钟均为 00 时能否听到 1s
的响声。
校时校分 当拨动对应拨码开关时,分钟和小时从正常进位信
校时校分功能实现
号切换为 1hz 的信号进行快速校时校分,观察小时
和分钟能否快速校时。
切换频率 当拨动对应拨码开关时,秒进行快速计数,观察秒
切换频率功能实现
能否快速计数。
4. 系统设计实现过程中遇到的主要问题、解决思路和解决方案