记录记录这个实验过程,由于这个实验并没有要求要提交实验工程,懒狗本人用的是老师的工程文件
模 4 计数器顶层电路图(含管脚分配的)截图+文字说明
此处管脚分配在模4计数器作为元件的顶层电路,可见输入clk在pin91。
下面是对其顶层电路图的说明:
首先是ENT ENF都接高电平,表示当CLRN不为0时一直处于计数状态。输出只取低二位设其为q1q0,其后还接着一个与非门表示当输入为11时准备使CLRN有效,但是会先存入到触发器中,因此对于00的输出实际上存在了两个时间周期。
模4计数器下载现象描述并举证从验证实验时的现象上如何看出你实现的电路行为正确并下结论。
反正没人看没有必要把视频搬过来咯
下图为我实现的模4计数器仿真结果
下载现象进行了三次时钟调整,clk频率递增。Clk的pin为91,pin为86的二极管表示q1,pin为81的二极管表示q0情况。二极管发亮表示1。首先第一个时钟时频率较低,我们可以看到二极管在00->01->10->11间循环,符合仿真结果。细心一点会发现00时间比其他情况时间更长一点,符合我们上面说的couter4中00出现两个时间周期情况。从这两点可以看出实现的模4计数器电路行为正确。后面对实验板的时钟频率进行增加,会发现循环过程变快,以至于最后人会看见两个灯”同时亮”的现象,实际上还是循环亮的过程。
比较仿真验证与下载验证2种方法
仿真验证实际上比较客观,在理想情况下对输入的时钟以及信号进行分析,得出结果。特别是功能仿真,只保证理想条件下的正确性。因此一般利用功能仿真来验证正确性。时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为做出实际地估价。下载仿真则是考虑了实际的模块和连线的延时信息,通过发光二极管的闪烁展示输出,时钟信号开关来改变时钟,拨码开关和按钮改变输入信号来观察电路行为的正确性。我个人感觉这两个应该互相照应,下载验证是对仿真验证在事情情况的正确性验证。
三位数码管顶层电路截图(带附加电路与管脚分配),并说明各模块的功能与实现方式等方面(未优化7449)
首先是左上块元件couter4,这是模4计数器,产生未译码前位选信号值,输出在00->01->10->11循环,其内部利用74161芯片以及一个D触发器设计。图形输入法设计。
Decoder2_3是2-3译码器,表示对二位输入向量进行译码成三位向量。此处将00 01分别译码为100,010,而其他情况译码为001。当然译码结果并不能作为我们的位选信号,因为位选信号是共阴极的,很明显译码结果1是有效位,这样在后面加上一个反相器使得0作为向量有效位。其利用vhdl代码编写实现。
接着是mux4_3,这是一个四位三路复用器,三选一,根据输入的sel,当为00时选择d0,当01时选择d1输出,其他情况选择d2输出。其实现方式也为vhdl代码编写实现。
接着是7449芯片,这是BCD码-7段译码器,对于输入为0-9,都可以正确表示。对于d进行译码成数码管的段选信号。7449是系统自带芯片。
下载实作截图,列表记录输入0-f时,7449译码符号的显示情况
看第一位就OJBK咯
在不删除7449的情况下,如何优化让其能正确显示数据“A-F”; 说明自己的设计思路并在proteus中实现
我们可以观察显示情况的图片,可见A-F显示并不正确,改进时我们需要将6改进,因为段选七位0011111需要作为B字符的显示,因此改为1011111。由于没有删除7449,我就尽可能地去利用7449元件,我们可以通过检测当前段选信号是否是蓝色区域的情况,是我们则修改并输出,否则我们直接输出7449处理的结果。
修改具体如下:(只改6,A-F)
输入0110,输出段选信号1011111。输入1010,输出1110111。输入1011,输出0011111。输入1100,输出段选信号1001110。输入1101,输出段选信号0111101。输入1110,输出段选信号1001111。输入1111,输出段选信号1000111。
Pro7449会对7449的输出进行一个判断,若为需要修改的段选信号,则修改后输出。
可见更改后输出为所需值,6对应1011111。A-F对应应修改后的值,优化完毕。
quartus顶层实体内部其他实现
74139实现2-3译码器
四位三选一多路复用器
3 位数码管实验下载到实验板上的操作说明以及现象描述:(没有板子,纯抄书的)
1.首先将下载电缆线和 USB 接口连接,打开实验平台开关。在 Quartus 中选择
Tools->Programmer 命令,进入下载窗口。
2.单击 Hardware Setup 按钮,弹出配置对话框。USB 版电缆连接成功会在 Available hardware
items 列表中显示 USB-Blaster,双击该行,添加到 Currently Selected hardware 已选硬件,
然后 close。
3.单击 Add Hardware 按钮。在 Hardware type 下拉列表中选择 ByteBlasterMV or ByteBlasterII
项,Port 设置为 LPT1。
4.单击 OK 按钮,返回到 Hardware Setup 界面,确认设置后 close,完成电缆配置。
5.JTAG 下载:在下载窗口中添加下载的 sof 文件。单击 Start 按钮,Progress 栏出现 100%则下载成功。
示波器测量位选信号和时钟信号的截图+文字说明:(proteus 仿真观察)
上面的为时钟信号,下面为位选信号的高位,在利用 74161 设 计模 4 计数器时就知道,计数器的输出 q1q0 总是在 00->01->10->
11 走动,而当到达 11 时会先进入触发器,此时先自加到 100,
然后下一个时钟再清空模 4 计数器,因此对于模 4 计数器的输
出,00 会存在两个时钟周期,其他存在一个时钟周期,在后面
2-3 译码器中,由于译码规则是输入 00,输出 011。输入 01,
输出 101。其他输出 110。因此 011 会占两个时钟周期,101 占一个时钟周期,110 占两个
时钟周期(因为 q1q0 为 10,11 都输出 110)。对应波形图 seg 最高位为 0,对应 011,占两个
周期,其他时 seg 最高位为 1,占三个时钟周期。
总结
1.学到的知识总体而言学习到了三位数码管的运作过程,细分的话学习到了三种74系列芯片的功能以及运用。利用74161设计模4计数器、利用74139设计2-3译码器,利用7449将输入的BCD码转化为段选信号。了解了74161二进制计数器的清零功能,明白四位二进制计数器转化为两位二进制计数器的操作。学习了数码管各个段选信号的位置以及字符表示。学习了组合逻辑电路和时序逻辑电路各个特征。三位数码管”同时亮”的原理,以及quartus、proteus的一些操作。
2.掌握的技能首先是quartus软件使用方面更熟练,在实验过程中对quartus出现的一些典型的错误有了一定的认识。然后熟悉了proteus软件,这个软件用来模拟实验板显示情况,这次试验给出了工程图,实际上里面的设计与我们quartus中设计大部分相同,用来分析显示情况以及波形情况。接着是查阅资料阅读资料的能力,查阅资料更具体性,比如某些芯片或者元件不明白搜查。适应阅读一些英文文献。
3. 人文:文字记录社交、生活心得由于三位数码管是当时我们要做的第一个实验,在实验开始时我本来以为经过上学期的CPU设计,并且感觉自己好像理解了三位数码管这个实验,认为这个实验不就主要注意段选位选信号嘛,但是真正做起实验来才发现许多问题:位选信号时间为什么不均匀,怎么在7449基础上显示A-F……在遇到这些问题时我也经常和同学讨论交流,我觉得实验交流是十分有必要的,因为在遇到一个个人感觉很棘手,思考了很久的问题时请教别人,不仅会印象深刻,还可以节约时间。讨论得到的知识是多份的,有你的想法也会有别人的想法。做过这个大实验后我明白了,要想完成好一个实验,就应该提前思考开工。这样自己思考的时间多,遇到的问题都可以及时解决,获得提高。
真·总结
数字系统第一个实验,当时第一次做感觉挺麻烦的,但是现在做了后面的发现当时太天真了,这个实验只会越做越难。做完之后一切都好,只是头顶凉凉。话说怎么感觉Markdown编辑器用起来挺限制的。