数字系统实验:三位数码管

一、日志(2019.3.4完成)

1.1、3位数码管实验下载:

在下载时首先要查看芯片的状态,是否与实际芯片相符,通过assignment->device进行查看,由于我的板子是cyclone||-ep2c5t144c8,便设置。如果不设置的话,在下载的过程中会报错,提示板子的型号不正确。
选好板子后再通过assignment->pins进行针脚设置。之后再进行全编译,为processing->compiler tool进行全编译。之后通过tools->programmer进行下载,注意驱动设置为USB,选择正确的sof文件。下载后的结果如图所示
在这里插入图片描述
实际上在实际中是一种频闪的状态,这是由于clk3的时钟信号的频率只有1Khz,已经可以产生视觉暂留。可以通过下方的拨码开关对显示数值进行调整,拨码开关每四位一组,满足“8421”。修改左上方的时钟信号的档位可以对时钟信号的频率进行微调,发现是进行频闪,且顺序为从左到右依次闪烁。

1.2、示波器测量位选信号和时钟信号:

时钟信号:
在这里插入图片描述
其中的黄色是时钟信号,可以看出时钟信号是一个十分规整的方波,占空比大约为50%,频率为1.00002KHZ,这与时钟信号的特性有关。
位选信号:
在这里插入图片描述
可以看出位选信号也是一个方波,但占空比不一定为50%,而是60%,这是因为我们这里是三个数码管循环显示,在计数器的时候产生的是0,1,2,3,其比值为2:1:1:1,其中0表示了一个数码管,1表示了一个数码管,2,3共同表示了一个数码管,导致最终的三个数码管的时间之比为2:1:2。其频率为200.005HZ

二、报告

2.1、实验目的:

实验目的是熟悉quartus||的数字系统设计流程,DDA系列数字系统实验平台的使用,图形输入、文本输入(硬件描述语言)、层次设计的过程,三位数码管的使用方法、代码编写和针脚设计,以及图形输入的注意事项和画图技巧。
我的实验资源是一台基于windows 10 专业版的联想拯救者r700电脑,一块装有cyclone||-ep2c5t144c8的DDA数字系统实验平台,以及quartus||配套软件

2.2、设计

2.2.1、模4计数器电路图:
在这里插入图片描述
如图所示,即为一个模4计数器,其中由于仅仅是用来计数,所以a~d不需要输入,而由于是用来进行连续的输出,所以直接将两个使能端ent和enp设置为vcc高电平,使其永远成立。而qa和qb是输出端,其中qa是低位,qb是高位,并进行输出。取nand后当且仅当两者全为1的时候会输出0,而当他输出0的时候发生器dff会产生一个时钟周期的停留,所以展示出来的结果就是数字0占据了两个时钟周期,而1,2,3都只占据了一个时钟周期。如图所示:
在这里插入图片描述
2.2.2、模4计数器下载:
首先设置阵脚(由于之前芯片已经设置好了,所以不需要进行额外的更改),这里为了可以直观显示,将始终的阵脚设置为91,将输出的阵脚设置为二极管118~115,然后进行全编译,再进行下载,下载结果为:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
可以看出在设置时钟信号为最低档的时候,可以很明显的看到二极管118和115在交替闪烁,闪烁的规律大致为00(全灭)->01->10->11(全亮),并且00的时间明显要长于其他情况。此现象和仿真的结果相吻合,所以证明电路行为正确,并得出结论:74161模块是一个计数模块,通过clrn端口进行置零,并进行计数,最高可以达到15。
2.2.3、比较仿真验证与下载验证:
仿真验证有时序仿真和功能仿真两种,功能仿真是在忽略了所有的延迟之后进行的仿真,仅仅用来考察功能是否正确;时序仿真添加上了延迟。实际上在我们的实验过程中功能仿真已经足够我们进行观察是否正常。
下载验证是将所写好的mof文件通过USB接口下载到板子上,然后板子开始运行程序,通过观察板子上出现的现行,比方说二极管发光,数码管显示等来变相观察代码是否正确。
总的来说,一般先进行仿真验证再进行下载验证,一方面是因为通过仿真波形图可以比实际下载更轻松更直接的找出可能出现的错误;另一方面是因为如果程序本身出现了结果上的问题,直接下载到板子上可能会导致板子出现错误,发生损坏等。

2.3、实现

2.3.1、顶层电路
在这里插入图片描述
可以看出整个电路大致是通过四个模块组成,左上角的是一个counter4模块,即上文的模4计数器;右上角的是一个2-3译码器,将模4计数器产生的两位信号进行译码,译码成一个三位的信号用来控制三个位选信号,以此来控制三个数码管进行显示;左下角是一个4-3-1模块,是自己写出来用来通过拨码开关对数码管上的显示数字进行控制的模块,其产生的数据dout将会传给右下角的模块;右下角的模块式一个7449芯片,用来进行4-7的BCD译码,以此来对段选信号进行控制,通过从ABCD输入的一个四位二进制数,对其进行编译解码,是之可以在数码管上进行显示,比方说数字0展示在数码管上就要求段选信号a~g的值是1111110。
2.3.2下载
结果如图:
在这里插入图片描述
注意我在这里进行了修改,由于时钟信号clk4的频率太低,在使用时会出现频闪的情况,所以我使用了clk3,即针脚89代替了针脚91的clk4,通过此方法来得到一个不会发生可视频闪的三位数码管展示。以下为输入0~f时的符号显示结果

输入数值译码情况(段选信号)
0(0000)1111110
1(0001)0110000
2(0010)1101101
3(0011)1111001
4(0100)0110011
5(0101)1011011
6(0110)0011111
7(0111)1110000
8(1000)1111111
9(1001)1110011
a(1010)0001101
b(1011)0011001
c(1100)0100011
d(1101)1001011
e(1110)0001111
f(1111)0000000

这里可以很明显的看出,在quartus2里面的7449芯片不能完全处理0-f的所有情况,所以需要在下面对电路图进行改进,需要改进显示6,9以及a-f的情况,在这里我通过设置新的模块来达到优化的目的。
2.3.3优化
由于需要在不删除7449芯片的时候进行优化,所以想到可以自己新建两个模块,一个模块是将判断是否可以使用7449芯片,另一个是在7449芯片不能使用的时候进行补充替换,后来在实际制作的过程中发现实际上两个模块可以进行合并。由此先得到6,9以及a~f的段选信号表示:

输入数值段选信号值
6(0110)1011111
9(1001)1111011
a(1010)1110111
b(1011)0011111
c(1100)1001110
d(1101)0111101
e(1110)1001111
f(1111)1000111

经过优化后最终电路图如下:
在这里插入图片描述
其中新加模块if_else为:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
这里是通过直接加入一个if_else模块,当d(数据)的值不是6,9,af的时候,就直接输出输入的数据,将数据导入到7449模块中进行译码;而如果满足6,9,af的时候,就直接在该模块中进行译码。同时输出一个dd判断信号,用来判断是通过那个模块得到的数值,再通过该判断信号对三态门进行控制,将两个模块所得到的值进行汇总融合便可以达到0~f全显示的目的。最终结果如下:
仿真结果为:
在这里插入图片描述
由于针脚没有改变,所以不需要重新设定针脚的值,芯片与阵脚保持不变,直接全编译
通过下载的结果可知,符合仿真结果,实验正确

三、总结

3.1、学到的知识点:

学习到了对数码管的使用方法,以及段选信号和位选信号的作用究竟是什么。可以自己使用数码管进行简单的编译和制造调用,为以后的多种输出,输出数量超过了板子所能承受的最大数量的时候,可以通过数码管进行结果展示。还熟悉了下载的方法。

3.2、掌握的技能:

数码管的简单使用——跑马灯
这是我在闲暇之余帮同学做的一个生日礼物,本来想通过数码管来显示“birthday”这个单词,后来发现实在是太麻烦了,所以没有办法,就设计成了简单的跑马灯,并且可以通过拨码开关来设置数值,也算是加深一下自己对板子的理解。
这个的原理实际上是通过对段选信号和位选信号的使用。首先我这里通过一个计数器来对时钟进行分组,将八个时钟分为一组,分别对应八位数码管中的每一位,使每个周期只有一个数码管点亮。通过拨码开关输入数值,由于拨码开关总共只有十六位,所以每四位拨码开关对应两个数码管。通过一个BCD码3-8译码器,对输入进行译码,转换成段选信号,注意之所以八位,因为段选信号本身就是八位,除了常见的a~g之外还有一个h用来控制每两位数码管之间的小数点,也要进行设置避免出错。通过三态门对输入、输出进行控制。最终每个时钟只有一组段选信号传播到输出端,只有一个数码管会进行显示。
最后在实验的时候出现了一点问题(对0~f的设置不是很正确,而且由于我一开始的初衷是写出来一个显示“birthday”的跑马灯,所以很多字母需要自己设置),但最终还是实现了birthday的跑马灯展示,如图所示:
在这里插入图片描述

3.3、人文:

还是要尽量少熬夜,虽然这篇报告的初稿是我在接到任务后的当天晚上写出来的,一直写到了凌晨四点,或者说第二天的早晨四点,但感觉还是要减少熬夜的次数,毕竟身体才是本钱,为了学习这么拼命容易得不偿失的。
在这里插入图片描述

3.4、记忆:

表格型:如上面我多次运用了表格的方法,对输入的可能情况进行设定以及整合,并对输出进行书写与描述,最终得到了一个输入与输出的对应表格,通过这个表格,我在编写代码的时候就少走了很多的弯路,感觉优点很多。
树形:在本篇报告中树形其实并没有体现太多,但在我的电脑中体现的很丰富。由于这次实验时间跨度长,实验知识点多,所以需要记录的实验结果也很多;而我就在每次实验之后直接进行分门别类的放置和存储,并形成了一个相互嵌套的树形结构,这样在我这次编写实验报告的时候我可以很轻易的找到我所需要的实验记录,实验结果在哪里,为我撰写实验报告提供了很大的便利。

相关推荐
本书第一章为数字电路实验基础知识,主要介绍电子电路的实验要求,电路的安装、调试等技术。第二章为数字电路实验,共有 15 个实验,采用以数字实验箱、电子实验设备为工作平台进行电路实验的传统实验方法。第三章为计算机辅助实验,共有 6个实验,主要以 CPU为工作平台,通过电子电路仿真软件进行电路的仿真实验。 本书所列实验共 21 个。其中基本实验有 4 个实验仪器的使用及门电路逻辑功能的测试”、“OC门与TS门”、“波形的产生及单稳态触发器”、“数字电路逻辑功能的测试” 。前3 个为传统实验方法,最后一个为计算机辅助实验。设计性实验有 9 个 “ TTL 与非门应 用” 、“组合电路的设计” 、 “编码器” 、“数据选择器” 、“RS触发器与D 触发器” 、“JK触发器”、“移位寄存型计数器”、 “加法器”、“CMOS门电路在波形产生与整形中的应用”,前7 个为传统实验方法,后 2个为计算机辅助实验。综合性实验有 8 个“译码器及数码显示”、“集成计数器及应用” 、“时序电路的设” 、“555 定时器及其应用” 、“数字秒表” 、“计数器及译码显示”、“智力抢答器”、“家用电扇控制器”,前 5 个为传统实验方法,后 3 个为计算机辅助实验。 书末附录 A、B、C 分别介绍了数字实验箱、示波器、Multisim 2001 电路仿真软件的使用简介,附录 D为实验用集成电路管脚排列图,以供查阅。
数字逻辑与数字电路课程时的一些实验报告 《数字逻辑与数字电路》实验指导 实验1.Verilog HDL输入方式组合电路的设计 多路选择器和三人表决电路的设计 (1) 实验目的进一步熟悉Quartus II的Verilog HDL文本设计流程,组合电路的设计仿真和硬件测试。 (2) 实验内容1、多路选择器的设计 根据教材5.1节的流程,利用Quartus II完成2选1多路选择器的文本编辑输入(MUX21.v)和仿真测试等步骤,给出仿真波形。 在实验系统上硬件测试,验证此设计的功能。对于引脚锁定以及硬件下载测试,a和b分别接来自不同的时钟;输出信号接蜂鸣器。最后进行编译、下载和硬件测试实验(通过选择键1,控制s,可使蜂鸣器输出不同音调)。 (4) 实验内容2、三人表决电路的设计 根据教材5.1节的流程,利用Quartus II完成三人表决电路的文本编辑输入(图5-36)和仿真测试等步骤,给出仿真波形。 在实验系统上硬件测试,验证此设计的功能。对于引脚锁定以及硬件下载测试,ABC[2..0]分别接自键3、键2、键1;CLK接自时钟CLOCK0(256Hz),输出信号X接D1,输出信号Y接蜂鸣器。最后进行编译、下载和硬件测试实验(通过按下键3、键2、键1,控制D1的亮灭)。 (5) 实验报告根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。参考ppt实验指导课件。 实验2.原理图输入方式全加器设计 (1) 实验目的熟悉利用Quartus II的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握文本和原理图输入方式设计的详细流程。 (2) 实验原理一个8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。 (3) 实验内容1按照教材4.6节完成半加器和1位全加器的设计,包括用文本或原理图输入,编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设置成一个元件符号入库。 (4) 实验内容2建立一个更高层次的原理图或文本设计,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真和硬件测试。 (5) 实验报告根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。参考ppt实验指导课件。 实验3.7段数码显示译码器设计 (1) 实验目的进一步熟悉Quartus II的Verilog HDL文本设计流程,组合电路的设计仿真和硬件测试。熟悉利用Quartus II的原理图输入方法设计简单组合电路,掌握层次化设计的方法,把握文本和原理图输入方式设计的详细流程。 (2) 实验原理7段数码显示译码器设计采用case语句对数码管的七个段分别进行赋值0或1,实现数字的显示;使用if-else语句设计模16计数器。 (3) 实验内容1使用VerilogHDL语言设计一个7段数码显示译码器并进行仿真及下载。 (4) 实验内容2使用VerilogHDL语言设计一个模16计数器,含计数使能端(en)与异步清零端(clr),当en为高电平时开始计数,为低电平时停止计数,将计数器与7段数码显示译码器使用原理图进行连接,并仿真及下载。 (5) 实验报告根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。参考ppt实验指导课件。 原理工程图 实验4.基于LPM宏模块的计数器设计 (1) 实验目的初步掌握Quartus II基于LPM宏模块的设计流程与方法并由此引出基于LPM模块的许多其他实用数字系统的自动设计技术。 (2) 实验内容 根据教材175页8.5节的流程,利用Quartus II完成基于LPM宏模块的计数器设计编辑和仿真测试等步骤,给出仿真波形。 在实验系统上硬件测试,验证此设计的功能并进行解说。对于引脚锁定以及硬件下载测试。 (3) 实验报告根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。 实验5.序列检测器状态机设计 (1) 实验目的用状态机实现序列检测器的设计,了解一般状态机的设计与应用。 (2) 实验原理序列检测器可用于检测一组或多组由二进制吗组成的脉冲序列信号,当序列检测器连接收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。 (3) 实验内容1按照教材180页8.7节的流程,利用Q
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:马嘣嘣 返回首页