EDA实验报告quartus2仿真Word文件下载.docx
- 文档编号:16790483
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:27
- 大小:730.88KB
EDA实验报告quartus2仿真Word文件下载.docx
《EDA实验报告quartus2仿真Word文件下载.docx》由会员分享,可在线阅读,更多相关《EDA实验报告quartus2仿真Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
关键词:
数字钟;
校时报时;
闹铃;
动态显示;
消颤;
仿真;
下载
1、引言
该数字钟功能丰富、操作简单,可使人们方便的获取时间信息及相关提醒,在实际生活中广泛应用,具有显著的实用价值。
其构成虽较简单,但融合了组合逻辑电路和时序逻辑电路,包括了分频器、计数器、数据选择器、编码器译码器以及锁存器等几乎所有数字逻辑电路的所学内容,是理论联系实际,提高知识技能的绝佳途径。
2、正文
2.1设计要求
利用quartus2软件设计一个数字钟,并下载到EDA实验系统中。
要求可以完成00:
00:
00到23:
59:
59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时(当时钟计到59’53”时开始报时,在59’53”,59’55”,59’57”时报时频率为512HZ,59’59”时报时频率为1KHZ)等功能。
此外,还可以设计闹铃功能或自行添加其他功能。
基本设计要求为:
1、能进行正常的时、分、秒计时功能;
2、分别由六个数码管显示时分秒的计时;
3、K1是系统的使能开关(K1=0正常工作,K1=1时钟保持不变);
4、K2是系统的清零开关(K2=0正常工作,K2=1时钟的分、秒全清零);
5、K3是系统的校分开关(K3=0正常工作,K3=1时可以快速校分);
6、K4是系统的校时开关(K4=0正常工作,K4=1时可以快速校时);
2.2整体电路的工作原理
数字钟主要由脉冲发生电路、计时电路、译码显示电路、报时电路、校时清零电路以及附加功能电路组成。
其中脉冲发生电路产生1HZ、2HZ、500HZ、1KHZ以及1MHZ时钟信号,分别送至计时电路、校时电路、报时电路和动态显示电路等作为时钟信号。
计时电路为系统核心,利用1HZ信号作为计数脉冲,两个模60计数器和一个模40计数器,实现秒分时的计时功能。
译码显示电路将计时电路输出的计时信号进行译码后送至数码管并在时钟的驱动下动态显示计时数据。
报时电路通过计时电路的计时信号而产生相应的选通信号,控制扬声器在特定时间发出不同频率的声音信号,实现报时功能。
清零保持电路通过控制计数器使能端的电位实现清零和保持。
校时电路根据开关的状态,选择输入到计数器的时分时钟信号的信号源,从而实现正常计数和快速校时功能。
附加功能电路依照具体要求对电路进行相关改进,以实现相应功能。
以下为系统电路框图:
图2.2.1整体电路框图
2.3子模块设计原理与仿真波形
自顶向下模块化设计方法,是根据系统的总要求,将系统分解为若干个子系统,再将每个子系统分解为若干个功能模块……直到分成许多各具特定子功能的基本模块为止。
再利用分解的逆过程进行互联,完成系统设计。
2.3.1脉冲发生电路
图2.3.1脉冲发生电路
其中,in为振荡电路48MHZ时钟信号输入端,在模块内部经过分频,分别输出1HZ、1KHZ、1MHZ、500HZ和2HZ信号,送到后级电路作为相应时钟信号。
其中n分频器可由模n计数器来实现,最高位的输出即为n分频之后的信号,且占空比为1:
1。
由于48M=24×
1000×
2
故可以通过模24计数器、模1000计数器以及模2计数器的组合来实现各种所需信号的分频。
模1000计数器选用3片74163级联,利用同步清零实现。
当计数器计数输出为11,1110,0111(十进制999)的时候,通过8位与非门输出清零信号,使计数器清零。
下图为模1000分频器内部原理图和输出仿真波形。
图2.3.2模1000分频器原理图
图2.3.2模1000分频器仿真波形输出
检验以上输出波形,10脚输出的波形周期为时钟的1000倍,且占空比为1:
模24计数器选用两片74160级联,通过异步清零实现。
当计数器输出BCD码10,0100(十进制24)时,两位与非门输出低电平清零信号,送至芯片CLRN端异步清零。
图2.3.3模24分频器原理图
图2.3.4模24分频器仿真输出波形
根据波形可知,最高位输出周期为时钟周期的24倍,满足分频要求。
但由于74160是10进制计数器,故其占空比不再为1:
1,而是5:
同理,模2计数器可采用一片74163或74160构成,也可以用D触发器直接构成,功能较简单,在此就不再赘述。
最后,将各子功能模块组合起来,构成脉冲发生电路模块,并进行封装。
图2.3.5脉冲发生电路总原理图
通过观察其输出的波形,确认输出的各个波形满足要求。
2.3.2计时电路
时钟的计时进制分别为60和24,故可根据要求设计模60和模24的计数器,通过级联,输出各位的计数信号。
其中,模24计数器的设计在脉冲发生部分已经叙述,故不再介绍其设计过程。
模60计数器的设计可采用两片74160级联,辅以四位与非门实现。
以下分析其设计原理。
74160为模10计数器,将其进位信号(个位)作为下一片(十位)的计数使能信号,就能实现级联。
计数器的工作计数为000,0000——110,1001,共60个状态,利用与非门分别接其为110,1001时为1的输出脚,与非之后送到置数端
,实现同步置数。
需要指出的是,由于74160采用的是同步置数、异步清零,为了电路工作稳定,消除冒险,在此选用置数法实现清零。
图2.3.6模60计数器连接图
图2.3.7模60计数器输出波形图
由上图各位输出波形可知计数状态符合要求,且占空比都达到较大,适合作为下级电路的驱动信号。
调试成功后进行封装,以便于调用。
图2.3.8模60封装图
封装后的模60计数器,其低4位(out1~out4)作为秒和分的个位计数值,高三位作为秒分的十位计数值。
clk60为时钟信号,由外部引入。
clear和keyEN分别为计数控制输入端,将在下文中的校时和清零保持电路设计部分进行详细论述。
oclk为进位信号,以便于级联。
但若由计数器的置数位引出,由于为同步清零,下一级将会在本级计数到59时就发生进位。
因此,在进行深入思考之后,我们决定采用D触发器将置位信号锁存一个时钟周期,以便使进位与清零能够同步。
具体解决电路如下:
图2.3.9清零信号锁存输出作为进位信号
从图2.3.7可以看出oclk进位信号成功实现与清零的同步,消除了电路冒险。
此外,我们还考虑了从另一个方面来解决这个问题。
由于是采用可编程逻辑器件(PLD)来实现电路设计,硬件描述语言(HDL,HardwareDescriptionLanguage)可以描述硬件电路的功能,我们采用应用最为广泛的VHDL语言进行了模60计数器的设计,成功的消除了电路中的冒险。
以下为其源代码:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
库和包集合说明语句
ENTITYmod60vhdlIS
PORT
(
ci:
INstd_logic;
nreset:
实体描述部分
load:
d:
INstd_logic_vector(7downto0);
clk:
co:
outstd_logic;
qh:
bufferstd_logic_vector(3downto0);
ql:
bufferstd_logic_vector(3downto0)
);
ENDmod60vhdl;
ARCHITECTUREbehaveOFmod60vhdlIS
BEGIN
co<
='
1'
when(qh="
0101"
andql="
1001"
andci='
)else'
0'
;
结构体描述
PROCESS(clk,nreset)进程及敏感表
BEGIN
IF(nreset='
)THEN清零端低电平清零
qh<
="
0000"
ql<
ELSIF(clk'
EVENTANDclk='
)THEN时钟信号上升沿来临
if(load='
)then置数端高电平同步置数
=d(7downto4);
=d(3downto0);
elsif(ci='
)then
if(ql=9)then各位计满后自动清零
if(ql=5)then
else
=qh+1;
未计满则加计数
endif;
elseql<
=ql+1;
ENDIF;
ENDPROCESS;
结束进程
ENDbehave;
结束结构体
可见,采用VHDL进行设计,不局限于仅有的元器件,相比原理图设计方式,设计的灵活性大大增加,并且思路清晰,逻辑严密,设计起来省时省力。
图2.3.10计数电路的总连接图
可以发现,quartus2的封装功能使设计过程条理清晰,连线简洁,便于识图。
这既是自顶向下模块化设计方法的基本要求,也是其必然结果。
2.3.3译码显示电路
从计数电路送出的各位计数信号为8421BCD码,不能直接送到数码管进行显示。
首先要经过译码电路将其译为对应的段码,才能使数码管显示正确的数字。
此外,为节省电能和电路连线,需采用动态显示电路。
其基本原理为:
在任一时钟周期,只有一个数码管被点亮,并显示其对应的数字。
六个数码管及其段码在选通电路的作用下轮流被点亮和传输。
由于人眼的视觉暂留效应,当选通的频率足够快时(>
60HZ),人眼将会感觉到六位数码管被同时点亮。
以下分别讨论译码和显示电路的具体设计。
图2.3.11七段数码管的结构
数码管的根据点亮时公共端的电平分为共阴和共阳。
显示译码器的功能是将表示数字的BCD码转换为七段显示码。
以下为其真值表:
DCBAabcdefg显示
000000000010
000110011111
001000100102
001100001103
010010011004
010101001005
011001000006
011100011117
000000000008
100100001009
图2.3.127447译码器
化简后表达式为:
a=ABCD+ABC
b=ABC+ABC
c=ABC
d=ABC+ABC+ABCD
e=A+ABC
f=AB+ABCD+ABC
g=ABC+BCD
其中LTN、RBIN以及BIN等管脚与消隐、灯测试有关,本次设计不予考虑,都置为高电位。
动态显示部分的基本框图如下:
图2.3.13动态显示电路框图
计数器在时钟信号的作用下,产生模为6的BCD码计数信号,分别送到24选4MUX和74138中作为地址信号。
24选4数据选择器根据A2A1A0的值选择SL、SH、ML、MH、HL、HH中的一路数据送到7447译码器进行译码,同时74138译码器将A2A1A0的值译码后分别输出到六片数码管的共阴端,作为片选信号。
这样,在时钟信号CLK2的驱动下,各个数码管依次轮流显示对应的数值。
其中,24选4MUX可以用四片74151来组成。
图2.3.1474151
74151芯片为8选1数据选择器。
其根据ABC脚输入的BCD码值分别选通D0~D7的中的一路,从Y输出。
GN为使能控制端。
将4片74151的地址线并联起来,分别输入6路数据的每一位,输出Y端构成4线输出。
具体连接图如下:
图2.3.1524选4MUX内部原理图
图2.3.15中形如nam、nbm的标号,其含义为:
a表示个位,b表示十位,n=1、2、3分别对应着时分秒,m=1、2、3、4分别对应着时(分秒)的四位。
系统化的标号能使设计明确而有条理,便于阅读和查错。
模6计数器用74163通过清零法构成,由于为同步清零,当输出0101时通过与非门实现清零。
其输出的BCD码输出到图2.3.15的abc端,作为选通地址。
同时送到74138经过译码来选通对应的数码管。
图2.3.16计数和片选部分原理图
对其进行功能仿真后输出波形如下:
图2.3.17片选输出信号
从波形图可以看出选用数码应为共阴极的。
每个选通周期有6个时钟周期,每片选通维持1个时钟周期,6片在时钟作用下轮流选通。
最后,将输出BCD码经7447译码送至数码管。
将以上几部分组合起来,就形成了动态显示电路,封装后的电路如图2.3.18中的名为“dongtai”模块。
其iclk接外来时钟信号,ABCDEFG为输出数码管的段码,d1~d6为6片数码管的选通信号。
其余引脚为6个输入的4位BCD码。
图2.3.18计时电路与动态显示电路连接图
由以上分析可知,动态显示电路的输出只有7位段码,外加6根片选线,共计13根。
而若使用静态显示的话,将会用到42根信号线。
相比之下,动态显示电路大大节省了连线。
并且由于每一时刻只有一片点亮,能够节省电能,使电路持续工作较长时间。
对于动态显示频率的选择,既不能太高,也不能太低。
低于60HZ人眼将会感觉到明显的闪烁现象,但若高于几MHZ将会使数码管的显示亮度下降。
因此,本次设计,我们选用了1KHZ作为动态显示频率,效果较满意。
当然,我们可以通过改变动态显示频率从而改变显示亮度这一原理,来为系统增加亮度调节功能,将会使该数字钟更为实用。
2.3.4报时电路
根据设计要求,时钟必须具有整点报时功能。
当时钟计到59’53”时开始报时,在59’53”,59’55”,59’57”时报时频率为512Hz,59’59”时报时频率为1KHz。
其基本设计思路为:
当计时到相应时间时0101,1001,0101,***1时,所对应的时间为59’5*”(末位为奇数)可利用公式
即将out1作为输出选通信号。
但还要求在53’、55’、57’、59’时报时,又可依据
其中fl、fh分别为500HZ和1KHZ的报时信号输入。
再利用
beep接输出扬声器,即可在规定时间内实现报时功能。
按照以上逻辑公式,选用7位与门,辅以适量的两位与门和非门,连接出报时电路。
图2.3.19报时电路原理图
图2.3.20报时电路时序仿真波形
通过仿真波形可以看出beep在各输入端置不同数时,分别输出不同的电位以及蜂鸣信号,经检验其满足以上报时设计要求。
其中,报时脉冲fl、fh要求具有较大的占空比,以为扬声器提供较大能量,发出较响的声音。
2.3.5校时、保持以及清零电路
要求设计K1是系统的使能开关(K1=0正常工作,K1=1时钟保持不变)K2是系统的清零开关(K2=0正常工作,K2=1时钟的分、秒全清零)K3是系统的校分开关(K3=0正常工作,K3=1时可以快速校分)K4是系统的校时开关(K4=0正常工作,K4=1时可以快速校时)。
以下分别对各个子功能电路设计进行说明。
1.开关去抖动电路
由于电路采用机械触点开关,在按键按下的时候,将会产生毛刺,使输入电位发生抖动,影响电路的正常工作,譬如在校时或者保持时发生跳变和翻转。
故需要在开关后面接入消颤电路进行去抖动。
去抖动电路的基本原理是利用触发器和门控锁存器来实现输入状态的延时和锁存。
其具体电路如下:
图2.3.21去抖动电路原理图
图2.3.22去抖动电路封装
keyin为按键输入,keyout为按键去抖后输出,keyclk为时钟同步信号。
图2.3.23去抖动电路输出波形仿真
根据以上波形输出,可以很明显看出,在去抖动电路的作用下,开关输入信号都实现了与时钟信号的同步,有效的避免了毛刺信号的引入。
2.校时电路
校时电路设计的基本思路是设计一个两路信号选择电路。
当按键未按下时,正常计数时钟信号被送往计数电路,若按键按下,则将快速校时时钟信号送往计数电路。
可以利用与门和或门简单实现以上功能。
图2.3.24校时电路原理图
图2.3.25校时电路输出波形
从波形图可以看出,当按键接通与否,输出的相应为正常计时信号和快速计时信号,即满足设计要求。
图2.3.26封装后的校时模块
图中,minclk为正常计数时钟信号,dsecclk为快速计数时钟信号。
key为校时按键,minclkin为输出到下级的时钟信号。
3.保持电路
当保持功能键按下时,电路将停止计时,保持在当前显示时刻。
其实现方法是利用74160芯片的计数使能端ENT、ENP控制计时电路的计时和保持。
当ENT=1,ENP=1时,电路正常计时,当ENT=1,ENP=0时,电路处于保持状态。
因此,可将ENT置高电平,ENP外接至保持开关即可。
图2.3.27保持清零电路原理图
图2.3.27中第一片74160的保持信号ENP接保持开关key,进位信号RCO通过和key相与后输出到下一片的ENP端,只有当保持键key为0时,两片的ENP都为0,电路保持。
只有当key为1时,电路才可以正常计时。
其保持功能接口封装在模60计数器内部,只引出keyEN引脚外接保持开关。
具体见上文的模60封装图。
4.清零电路
当清零键按下时,时钟的分秒全清零。
其主要方法是通过控制计数器的清零端CLRN来实现。
如图2.3.27所示,清零开关通过非门接两片74160的清零端CLRN。
由于其清零电平为低电平有效,当清零键按下,电平为1,非运算之后为0,使计数器清零。
其封装同保持电路,也是在模60计数器引出清零引脚,外接清零开关。
图2.3.28清零保持信号作用输出波形
如图,在清零信号的作用下,计数器清零。
在保持信号的作用下,计数状态一直保持到保持端恢复为低电平。
2.3.6总功能电路连接
在完成各子功能模块的设计并调试通过后,将其封装,然后调用连接,构成总的功能电路,以满足设计要求。
图2.3.29总电路连接原理图
如上图,脉冲信号发生模块mod48M产生频率不同的分频信号,分别送到后级电路作为时钟信号。
各控制按键K1、K2、K3、K4分别通过去抖动模块keysmooth后送到下级电路。
其中校分校时开关K3、K4分别通过时间设定模块minset后连到计时器的时钟信号输入端。
mod24、mod60计数模块构成数字钟的核心,产生计时数据。
其产生的计数BCD码分别送往动态显示电路模块dongtai和报时模块timereport。
送到dongtai的信号经过译码和片选后,送到后级数码管进行显示。
送到timereport的信号经过判断选择后驱动扬声器发出对应的报时音。
图2.3.30总电路封装
clkf为外接48MHZ输入信号,mset、hset为校时校分开关引脚,clear、hold为清零保持开关引脚,abcdefg为输出的7段码,dig1~dig6为片选信号。
整体功能模块whole封装完成。
2.4整体电路下载
在quartus2软件中完成以上原理图,编译通过后就可以下载到EDA实验箱中进行实际检验。
具体操作过程如下:
将whole原理图设为顶层实体后,进行编译。
然后点击菜单栏中的Assignments,下拉后单击其中的PinPlanner项,在其中设置各个管脚对应序号。
图2.4.1下载管脚设置
各管脚设置完成后,重新编译一次。
然后点击Tools中的Programer,选中下载文件,点start,原理图代码就被写入到实验箱的芯片之中,可以在实验箱上看到实际运行的结果。
2.5扩展闹铃功能设计
为数字钟增加闹铃功能。
可以为其设计三个功能按键,闹铃时间设定使能开关alarmEN,时设定开关ah,分设定开关am。
当alarmEN按下时,数码管从显示当前时间切换到显示闹铃时间,此时ah和am设定有效,可以通过按下ah和am来改变闹铃时间的时和分。
当alarmEN松开时,ah、am无效,电路正常计时。
当计时至所设闹铃时间时,扬声器发出闹铃声音,并持续一分钟。
2.5.1闹铃时间设定功能
闹铃时间的显示和设定。
利用已设计的模24和模60计数器的输出作为闹铃时间的计数BCD码,取iclk为2HZ作为闹铃的分时快速设定时钟信号,但是通过与am、ah相与之后送到计数器时钟输入端。
即
只有当闹钟分设定键按下时,alarmmin为高电平,分位模60计数器才会计数,实现闹铃时间分位设定。
同理,闹铃时间时位也是如此。
图2.5.1闹铃时间设定原理图
2.5.2闹铃时间显示功能
当闹铃设定使能键alarmEN按下时,要求数码管切换到显示闹铃时间,而且此时后台仍正常计时。
可以考虑设计通过32选16数据选择器来实现时分位的显示切换。
图2.5.2显示切换电路框图
HH、HL、MH、ML分别接正常计时电路的时分高低位输出BCD码,AHH、AHL、AMH、AML分别接闹铃计时电路的时分高低位输出BCD码。
通过选择端alarmEN选择两路时间数据的输出,送到后级动态显示译码电路处理和显示。
其中,32选16MUX可由4片8选4MUX芯片74157扩展构成,将其选择端并接即可。
图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 实验 报告 quartus2 仿真
![提示](https://static.bdocx.com/images/bang_tan.gif)