您的当前位置:首页正文

数电实验报告

2024-08-22 来源:爱go旅游网


学生实验实习报告册

学年学期:

2019 -2020 学年春秋学期

课程名称: 数字电路与逻辑设计实验A

实验项目: 基于FPGA的数字电子钟的设计与实现

姓 名: 康勇

学 号: 2018211580

学院和专业: 计算机科学学院计算机科学与技术专业

班 级: 04911801

指导教师: 罗一静

重庆邮电大学教务处制

1. 系统顶层模块设计

本项目分为四个模块,分别为分频模块、计时模块、数码管动态显示模块、按键消抖模块。功能包括:基本时钟功能,整点报时功能,手动校时功能,秒表功能,小数点分割时分秒功能等。 设计思路如下:

图表 1数字时钟系统顶层模块设计思路 设计结果:

图表 2数字时钟系统顶层模块设计电路图

2. 分频模块电路设计及仿真

(1) 模块功能

将输入的频率为50MHz的时钟信号利用74390通过2、5、100分频,对输入信号进行逐级分频。

(2) 设计思路

图表 3分频模块电路设计思路

(3) 设计结果(电路)

图表 4分频模块电路设计图

图表 5模100电路图

(4) 测试结果

图表 6模100仿真图

图表 7模5仿真图

图表 8模2仿真图

3. 计时模块设计及仿真

本模块主要功能是实现电子时钟计数功能。

图表 9计时模块顶层设计电路图

3.1 分、秒计时模块(模60计数)

(1) 模块功能(计数、进位)

电子时钟的分钟位和秒钟位均采用模60计数; 计数功能:从0到59;

进位功能:当计数记到59的时候,输出一个进位信号。

(2) 设计思路

模60计数器可以通过一个模6计数器和一个模10计数器组成,由分钟位和秒位的特性可知,可以用模10计数器为个位,模6计数器为十位。当个位到9后,向十位进一。本模块使用器件74160。

计数功能:74160是十进制同步计数器(异步清零),为实现计数功能,首先将74160的LDN反,CLRN反,ENT,ENP接高位,再接入时钟脉冲信号CLK,即可完成下图左侧(个位)模

10计数功能;为实现下图右侧(十位)模6计数功能(有效状态为0000~0101),可利用清除端的反馈复位法实现,又因为74160为异步清零,所以当QA QB QC QD = 0110时,(将QBQC取反后连接CLRN反 端)完成清0动作,即可实现模6计数。

进位:74160上升沿触发,分析可知,当个位(左侧)到9后(1001),观察可知,左侧QD 0~7时为0,8~9时为1,然后再跳到0,在其输出端取反后连接右侧的CLK端 ,这时左侧只有从9跳到0的时候才会产生一个上升沿信号,此信号即为进位信号;同理可分析整个计数器进位,即对右侧QC取反后输出的信号为进位信号。

(3) 设计结果(电路)

图表 10模60计数器电路图

(4) 仿真测试

图表 11模60计数器仿真测试图

3.2 小时计时模块(模24计数)

(1) 模块功能

电子时钟的时钟位采用模24计数; 计数功能:从0到23;

(2) 设计思路

模24计数即从(0000 0000 – 0010 0011),又因为74160为异步清零,所以当计数进入暂态(0010 0100)时立即产生清零信号,即CLRN反 = (Q1C Q2B)反,如下图所示,左侧为低位,右侧为高位。

(3) 设计结果(电路)

图表 12模24计数器电路图

(4) 仿真测试

图表 13模24计数器仿真测试图

4. 数码管动态显示模块

模块功能描述及设计

本模块的主要功能是通过数码管的动态扫描实现6位数码管显示计数结果,本模块由数码管选择模块counter6,位选模块dig_select,段选模块seg_select,以及译码模块decoder构成。

图表 14dp模块电路图

4.1 扫描模块couner6

(1) 模块功能

实现000—101计数,选择6位数码管。

(2) 设计思路

本模块利用双十进制异步计数器74390实现。由74390的特性可知,当1CLKB接1QA时,实现模10计数(8421BCD码)。模6计数从000—101,因为74390为异步清零且清零端高电平有效,所以当计数器进入到暂态 110 的同时立即产生清零信号至1CLR端(1CLR = 1QC1QB),即可完成模6计数

(3) 设计结果(电路)

图表 15模6计数器电路图

(4) 仿真测试

图表 16模6计数器仿真测试图

4.2 位选模块dig_select

(1) 模块功能

该模块用于选择数码管显示位,学习板上数码管位共阴数码管,位选低电平有效。 add[2..0] dig[5..0] 000 001 010 011 100 101 111110 111101 111011 110111 101111 011111 图表 17位选模块原理

如上表所示,add从000-101,在实验平台上数码管依次从第一位亮到第六位。(动态显示,人眼分辨不出先后) (2) 设计思路

该模块使用二进制译码器74138实现,由74138的特性可知,当G1接高电平,G2AN反、G2BN反接低电平时实现译码功能,输入端ABC由000—101,输出端dig[0]—dig[5],显示结果与上表所示一致。

(3) 设计结果(电路)

图表 18位选模块设计电路图

(4) 仿真测试

图表 19位选模块仿真测试结果

4.3 段选模块seg_select

(1) 模块功能

6

(hour_shi[3..0],hour_ge[3..0],min_shi[3..0],min_ge[3..0],sec_shi[3..0],sec_ge[3..0])中选择一组输出code[3..0],由add[2..0]控制。

(2) 设计思路

该模块使用74151数据选择器完成6选1功能。

图表 20段选模块原理图

74151有3条数据选择地址输入线,8条数据输出线,此模块只需用到其中6条数据输出线(D0,D1,D2,D3,D4,D5)。为实现数据选择功能,将 GN反 端接地,其余端口如下图。 当add[0]add[1]add[2]为000时,即Y选择D0,输出code[0]code[1]code[2]code[3]即为sec_ge[0]sec_ge[1]sec_ge[2]sec_ge[3]

sec_shi[3..0],min_ge[3..0],min_shi[3..0],hour_ge[3..0],hour_shi[3..0]。

(3) 设计结果

图表 21位选模块电路图

(4) 仿真测试

如下图:为其设置一个初始值进行测试

图表 22位选模块仿真图

4.4 译码模块decoder

(1) 模块功能

7448为共阴极数码管编译器,可将4位8421BCD码译为七位段码,驱动共阴数码管以十进制数形式显示数字字形。

(2) 设计思路

图表 23译码器设计思路

由7448功能可知,LTN反,RBIN反,BIN反均接高电平,ABCD端输入对应二进制码,OA OB OC OD OE OF OG端输出相应的0 1信号。

(3) 设计结果

图表 24译码器设计电路图

(4) 仿真测试

图表 25译码器模块仿真测试

5. 其他扩展功能

5.1 显示分割时分秒的点的模块dp

(1) 模块功能

用两个点将时分秒分隔开来。

(2) 设计思路

用于分隔时分秒只需要显示两个点(第三个和第五个点)即可,而点的亮灭由数码管的dp决定(dp为0表示灭,dp为1表示亮)。此模块输入为add[2..0],输出为seg[7]。由前面分析可知,当add[2..0]=010或100时,seg[7]输出1,公式为seg[7]=m2+m4。此模块可利用74138完成,如下图所示。

(3) 设计结果

图表 26dp模块设计电路图

(4) 波形仿真

图表 27dp模块波形仿真

5.2 整点报时

(1)

模块功能

电子时钟到整点时,蜂鸣器响。

(2)

设计思路

当分钟模60计数器的8个输出端口(min_ge[3..0],min_shi[3..0])同时输出为0的时刻,蜂鸣器响1分钟。可以用一个8或门将8个输出端口连接取反后输出至蜂鸣器。

(3)

设计结果

图表 28整点报时模60设计图

图表 29整点报时计数模块顶层电路图

(4) 波形仿真

图表 30整点报时波形仿真

5.3 手动校时

(1) 模块功能

该模块的功能是实现时分的手动校时。

(2) 设计思路

由前面的分析可知,当秒达到59后产生一个进位信号使分钟加1,当分钟达到59后产生一个

进位信号使时加1。手动校时即使用两个按钮分别模拟秒的进位信号和分的进位信号。同时需要设计一个二选一的模块来启动和关闭手动校时功能。

2选1模块:如下图,s表示开关,当s为0时,选择b(置数关闭);当s为1时,选择a(置

数开启)。通过计算可以得到:输出Y = ab+bs反+as。 (3) 设计结果

图表 31手动校时2选1设计电路图

图表 32手动校时计数模块顶层设计电路图

(4) 波形仿真

图表 33手动校时波形仿真

5.4 秒表

(1) 模块功能

此模块具有秒表功能。计数范围为00分00秒00毫秒—59分59秒99毫秒;具有开始计时、

停止计时、清零及显示功能。 (2) 设计思路

本项目的计数器均使用74160设计。而74160具有如下特点:①CR反(CLRN反) 为0时,立

即有Q3Q2Q1Q0=0000,实现异步清零功能。②CR反、LDN反、ENT接1,ENP为0时实现保持(即暂停)功能。 (3) 设计结果

图表 34 秒表顶层电路设计

图表35秒表模60电路图

图表 36秒表模100电路图 (4)波形仿真

如下图:当清零端始终为1时,输出结果始终为0。

图表 37秒表清零波形仿真

如下图:给start_stop一个脉冲信号,当start_stop为1时暂停,为0时,工作。仿真结果如下

图表 38秒表暂停功能波形仿真

5.5 消抖模块

(1)模块功能

确保FPGA对一次按键动作只确认一次按键有效,消除按键抖动影响。

(2)设计思路

本模块使用D触发器(D触发器是一种延迟型触发器,不管触发的现态是0还是1,CP脉冲上

升沿到来后,触发器的状态都将变成与CP脉冲上升沿到来时的D端输入值相同,相当于将数据D存入了D触发器中。)延时后多次检测按键消抖。如下图所示,该电路为同步时序逻辑电路,一共使用了6个D触发器,由于时钟信号clk频率为500MHz,及信号经过1个D触发器延时2ms,经过6个D触发器延时12ms,满足抖动间最大10ms的要求。

信号每经过1次延时进行一次采样,只有6次采样的结果均为高,输出才为高电平,说明12ms

内信号均为高,判定按键按下。

该模块除了对按键消抖外,还要对start_stop按键进行处理,以保证单按键实现开始计时和

停止计时。此处采用一个JK触发器,当按键按下,产生一次上升沿,JK触发器翻转一次,从而实现start_stop信号按键一次为高,再按一次为低。 (3)设计结果

图表 39消抖模块电路设计图

图表 40按键消抖模块顶层电路

5.6 频率切换

(1) 模块功能

当按下频率切换拨板开关,时钟由原来1Hz变为100Hz。 (2) 设计思路 用一个二选一模块来控制,当二选一开关select为1时,选择1Hz信号输入,当二选一开关select为0时,选择100Hz信号输入。二选一模块设计思路见手动校时模块。 (3) 设计结果

图表 41频率切换部分电路图

6. 系统总体测试

图表 42 系统总体测试结果记录表 测试内容 测试方案 测试结果 秒计数 时钟连接1Hz,观察秒计数结果是否能够从00-59正常计数,且能够正常向分进位。 正确 分计数 时钟连接100Hz,观察分计数结果是否能够从00-59正常计数,且能够正常向小时进位。 正确 小时计数 时钟连接1KHz,观察时计数结果是否能够从00-23正常计数,且能够正常归零。 正确 正确 显示分割时分秒的点 整点报时 时钟连接1Hz,观察时和分后面是否有一个点分割时分秒 时钟连接100Hz在,观察时钟计时到整时(0-23点整)的时候,蜂鸣器是否会响。 正确 手动校时 时钟连接1Hz,将时钟调整至校时模式,按下调整时的按钮,观察时计数是否加1(当到23时跳到00),按下调整分的按钮,观察分计数是否加1(当到59时跳到00)。 正确 秒表 时钟连接1Hz,按下清零键,观察分秒毫秒是否均为0;按下暂停键,观察时分秒是否停止走动;观察工作时,进位是否正确。 正确 按键消抖 时钟连接1Hz,在手动校时和测试秒表的时候,快速重复多次按按键,观察电子时钟是否出现异常跳动或者其他异常现象。 正确 频率切换 时钟连接1Hz,观察时钟是否正常工作;正常后,拨动频率切换拨板开关,观察频率是否由1Hz变为100Hz且时钟正常工作。 正确

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

问题1:在做整点报时的时候,波形图这些都正确,但是接到实验平台的时候,蜂鸣器不响;

解决思路:将输出信号接到蜂鸣器的同时还要给它连接一个时钟脉冲。

解决方案:如下图,其中一个输入为整点报时输入,一个为500Hz的脉冲,一个为开关控制关停。

图表 43蜂鸣器

问题2:在做基本任务的时候,进位不正确。

解决思路:将真值表列出来,分析上升沿还是下降沿触发,选择哪一个输出适合作为进位输出端。

解决方案:下图为模60的进位方案。

图表 44 进位

问题3:在做秒表的时候,暂停开始功能不正确(理想情况:按一下暂停,再按一下开始;问题是要一直按着才会增,不按着就暂停了)

解决思路:导致这个问题原因是按键当按下后一直是高电平,抬起后就是低电平。为了实现按一次是高电平,再按一次才是低电平,可以利用JK触发器一次翻转的特性(指一旦在CP=1期间,主触发器接收了输入激励信号,发生一次翻转后,主触发器状态就一直保持不变)实现。

解决方案:在开关之前加如图所示电路

图表 45 JK触发

8. 心得体会

在本次实验中,我学习到了很多知识:任意模值计数器的设计,计数器之间的进位译码器的使用,选择器的设计和利用,按键消抖的理论和解决方案,数码管结构的认识,动态扫描的原理,段选和位选电路的选择等等。也通过这次实验理解了理论课上之前没有理解的一些东西,比如为什么消抖,稳定清零,各种集成器件的原理使用。在本次实验中也发现了自己很多不足之处,比如设计进位的时候没有认真区分集成器件的区别,导致一些小错误。在设计过程中,我也感受到了亲自动手实践的乐趣,当自己正确完成基本任务和做好一个拓展任务时,能够获得成就感,并且也逐渐对数电感兴趣了。

学号: 2018211580

姓名: 康勇

评分细则及测试原始数据记录

序号 1 基本功能测试项目(学生填写) 测试情况记录(老师填写) 座位号: C4

秒计数(模60) (40分) 分计数(模60) 小时计数(模24) 进位 扩展功能(20分) 2 答辩 (10分) 教师签字: 3 “数字电路与逻辑设计实验A”实验报告评阅表

评阅内容及评分标准 报告完整性 报告格式 (20分) (10分) 格式规范性 (10分) 方案完整性 (10分) 系统方案设计 (40分) 方案合理性 (30分) 设计方案讲解合理,叙述重点突出有条理,且设计有创新或改进;(27-30分) 报告内容完整; (9-10分) 报告格式规范、图标规范且清晰(9-10分) 完整,报告覆盖所有主的设计方案完整;(6-8分) 要核心模块;(9-10分) 注:方案合理性不可评为优 设计方案讲解基本合理,能设计方案讲解不合理,不能够较清楚解释设计原理,但解释设计原理,缺陷较多;存在一定问题或设计有一定(0-17分) 缺陷;(18-26分) 较完整,主要模块的测试方完整,覆盖所有主要核系统测试方案及测试结果 优 (30分) 结果处理和分析(20分) 主要问题描述和分析 路正确,解决方案合(10分) 理;(9-10分) 报告总评成绩 得分 报告内容不完整,缺项较多;(0-5分) 报告格式不规范、图表不规范(0-5分) 不完整,报告缺失较多主要模块的设计方案;(0-5分) 注:方案合理性只能评为差 报告内容基本完整; (6-8分) 报告格式较规范、大部分图表规范(6-8分) 较完整,报告覆盖主要模块不完整,缺失较多主要模块的测试方案及结果,测试方案不合理;(0-5分) 注:测试结果处理只能评为差 案及结果完整,测试方案较合理;(6-8分) 注:测试结果处理不可评为测试方案完整心模块,测试方案合性(10分) 理;(9-10分) 数据处理和分析正确;数据处理和分析较正确;数据处理和分析基本正确,(18-20分) 问题描述准确,分析思(12-17分) 问题描述较准确,分析思路但存在较多问题;(0-11分) 问题描述不够准确,分析思 基本正确,解决方案较合理,路有问题,解决方案有缺陷;但有点缺陷;(6-8分) (0-5分) 教师签名

注:(1)实验报告要求学生独立完成,相似度较高的实验报告全部评定为0分; (2)原始数据单无教师签名者,报告成绩评定为0分;

(3)无扩展功能设计,系统方案设计项最高评分不超过30分。

因篇幅问题不能全部显示,请点此查看更多更全内容