EDA 设计(Ⅱ)学号:姓名:院系:指导:谭雪琴时间:2011年4月8日目录1.引言 (03)2.正文 (03)2.1.设计要求 (03)2.2.整体电路工作原理 (04)2.3.子模块设计原理与仿真 (04)2.3.1.脉冲发生电路 (04)2.3.2.计时电路 (07)2.3.3.译码显示电路 (10)2.3.4.报时电路 (15)2.3.5.校时、保持以及清零电路 (16)2.3.6.总功能电路连接 (20)2.4.整体电路下载 (21)2.5.扩展闹铃功能设计 (21)2.5.1.闹铃时间设定功能 (21)2.5.2.闹铃显示功能 (22)2.5.3.闹铃响铃功能 (23)2.5.4.闹铃总电路连接 (24)3.结论 (25)4.致谢 (26)5.参考资料 (26)多功能数字钟设计(南京理工大学)摘要:本文详细介绍了多功能数字钟的工作原理及设计过程。
首先利用quartus2软件,采用模块化设计方法,分别设计分频器、模计数器、动态显示电路、清零校时电路和报时电路等功能模块,然后观察仿真波形,确认功能实现后进行封装与调用。
最后将各功能模块整合起来构成整体电路,仿真和调试通过后下载到EDA实验箱,观察实际运行结果。
此外,本文还描述了附加闹铃功能的设计过程,并记述了实验过程中出现的一些问题及解决方案,以及对这次设计的一些经验教训的反思。
关键词:数字钟;校时报时;闹铃;动态显示;消颤;仿真;下载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×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:1。
模24计数器选用两片74160级联,通过异步清零实现。
当计数器输出BCD 码10,0100(十进制24)时,两位与非门输出低电平清零信号,送至芯片CLRN 端异步清零。
图 2.3.3 模24分频器原理图图2.3.4 模24分频器仿真输出波形根据波形可知,最高位输出周期为时钟周期的24倍,满足分频要求。
但由于74160是10进制计数器,故其占空比不再为1:1,而是5:1。
同理,模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的输出脚,与非之后送到置数端LD,实现同步置数。
需要指出的是,由于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,Hardware Description Language)可以描述硬件电路的功能,我们采用应用最为广泛的VHDL语言进行了模60计数器的设计,成功的消除了电路中的冒险。
以下为其源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; 库和包集合说明语句ENTITY mod60vhdl ISPORT(ci :IN std_logic;nreset :IN std_logic; 实体描述部分load :IN std_logic;d :IN std_logic_vector(7 downto 0);clk :IN std_logic;co :out std_logic;qh :buffer std_logic_vector(3 downto 0);ql :buffer std_logic_vector(3 downto 0));END mod60vhdl;ARCHITECTURE behave OF mod60vhdl ISBEGINco<='1' when(qh="0101" and ql="1001" and ci='1')else '0'; 结构体描述PROCESS(clk,nreset) 进程及敏感表BEGINIF(nreset='0')THEN 清零端低电平清零qh<="0000";ql<="0000";ELSIF(clk 'EVENT AND clk='1')THEN 时钟信号上升沿来临if(load='1')then 置数端高电平同步置数qh<=d(7 downto 4);ql<=d(3 downto 0);elsif(ci='1')thenif(ql=9)then 各位计满后自动清零ql<="0000";if(ql=5)thenqh<="0000";elseqh<=qh+1; 未计满则加计数end if;else ql<=ql+1;end if;END IF;END IF;END PROCESS; 结束进程END behave; 结束结构体可见,采用VHDL进行设计,不局限于仅有的元器件,相比原理图设计方式,设计的灵活性大大增加,并且思路清晰,逻辑严密,设计起来省时省力。
图2.3.10 计数电路的总连接图可以发现,quartus2的封装功能使设计过程条理清晰,连线简洁,便于识图。
这既是自顶向下模块化设计方法的基本要求,也是其必然结果。