EDA数字钟.docx
- 文档编号:7552864
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:15
- 大小:41.13KB
EDA数字钟.docx
《EDA数字钟.docx》由会员分享,可在线阅读,更多相关《EDA数字钟.docx(15页珍藏版)》请在冰豆网上搜索。
EDA数字钟
广西工学院
EDA课程设计
说明书
设计题目数字钟
系别
专业班级
学生姓名
学号
指导教师
日期
目录
一.引言-------------------------------------------------------------1
二设计要求-------------------------------------------------------------3
三试验目的---------------------------------------------------------------------3
四总体设计方案------------------------------------------------------3
五程序清单-----------------------------------------------------------10
六实验心得-----------------------------------------------------------13
七参考文献-----------------------------------------------------------13
一.引言
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。
这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
1.2国内外发展现状
从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。
中国EDA市场已渐趋成熟,不过大部分设计工程师面向的是PC主板和小型ASIC领域,仅有小部分(约11%)的设计人员工发复杂的片上系统器件。
为了与台湾和美国的设计工程师形成更有力的竞争,中国的设计队伍有必要购入一些最新的EDA技术。
在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。
要大力推进制造业信息化,积极开展计算机辅助设计(CAD)、计算机辅助工程(CAE)、计算机辅助工艺(CAPP)、计算机机辅助制造(CAM)、产品数据管理(PDM)、制造资源计划(MRPII)及企业资源管理(ERP)等。
有条件的企业可开展“网络制造”,便于合作设计、合作制造,参与国内和国际竞争。
开展“数控化”工程和“数字化”工程。
自动化仪表的技术发展趋势的测试技术、控制技术与计算机技术、通信技术进一步融合,形成测量、控制、通信与计算机(M3C)结构。
在ASIC和PLD设计方面,向超高速、高密度、低功耗、低电压方向发展。
外设技术与EDA工程相结合的市场前景看好,如组合超大屏幕的相关连接,多屏幕技术也有所发展。
中国自1995年以来加速开发半导体产业,先后建立了几所设计中心,推动系列设计活动以应对亚太地区其它EDA市场的竞争。
在EDA软件开发方面,目前主要集中在美国。
但各国也正在努力开发,EDA技术发展迅猛,完全可以用日新月异来描述EDA技术的应用广泛,现在已涉及到各行各业。
EDA水平不断提高,设计工具趋于完美的地步[1]。
1.3本文的主要研究工作
本文以EDA技术为研究背景,对EDA的设计流程、数字基本单元的硬件语言描述、EDA中仿真软件的应用、硬件数字系统的功耗和面积优化进行了研究,并以此为基础设计了一个数字钟,基本要求为数字钟显示时、分、秒,数字钟的时间周期为24小时,数字钟的时间基准一秒对应现实生活中的时钟的一秒,另外可以进行整点报时等。
本设计的原理是对时钟信号进行分频得到秒信号,然后用两个计数器分别得到时和分信号,进而进行显示,结果表明本时钟能有效正确的显示时间和实现其他相关的功能。
本系统的具体实现是根据方案的要求,可以用VHDL语言 ,采用自顶向下的设计方法。
可用分频的方法得到1Hz的时钟用与计数;用7段数码管来显示时间,需要6个数码管;同时可以根据不同的频率的输入来调节蜂鸣器的鸣叫声音,从而实现整点报时功能和闹铃功能。
结果表明本数字钟可以高效正确的显示时间。
二设计要求
(1)设计一台能显示时、分、秒的数字钟。
具体要求如下:
(2)由实验箱上的时钟信号经分频产生秒脉冲;
(3)计时计数器用24进制计时电路;
(4)可手动校时,能分别进行时、分的校正;
(5)整点报时;
(6)LED灯按个人口味在整点时有花样显示信号发生。
三试验目的
(1)掌握时十进制、六进制和二十四进制计数器的设计方法。
(2)掌握多位计数器相连的设计方法。
(3)掌握多位共阴极扫描显示数码管的驱动及编码。
掌握LED灯的花样显示。
(4)掌握扬声器的驱动。
(5)掌握FPGA/CPLD技术的层次化设计方法。
四总体设计方案
本数字系统实现数字钟的基本的计时功能,输入1kHz的时钟,采用24小时制计时,能显示时、分、秒。
本系统还具有校正功能,可以进行时分的校时,当计时器运行到59分49秒开始报时,另外可设定夜间某个时段不报时,还可以设定闹钟,当按下闹铃开关时,可在规定时间闹铃,当开关复位时,闹铃停止。
本数字钟实际上是一个对标准频率(1Hz)进行计数的计数电路。
由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1MHz时间信号必须做到准确稳定。
通常使用石英晶体振荡器电路构成数字钟。
数字钟的基本组成
本数字钟的实现可分为以下几个模块:
(1)秒计数模块:
秒计数,在频率为1Hz的时钟下以60次为循环计数,并产生进位信号影响分计数;
(2)分计数模块:
分计数,在秒进位信号为高电平时,计数一次,同样以60次为一个循环计数,同时产生分进位信号影响时计数;
(3) 时计数模块:
时计数,在分进位信号为高电平时,计数一次,以24次为一个循环计数;
(4)频率产生模块:
主要有2个部分,一个是产生1Hz的计数频率,一个是产生725Hz和500Hz的蜂鸣器鸣叫频率;
(5) 时间显示模块:
通过选中不同的数码管,同时进行一定频率的扫描显示时,分,秒。
(6) 时间设置模块:
设置调试使能端,可以调时,分。
基本功能是在使能端为高电平时,可以使时和分循环计数;
(7) 整点报时模块:
在秒计数到50秒时,同时分计数到59分开始,丰鸣器产生每个2秒的鸣叫(500Hz),到整点是产生750Hz的鸣叫。
(8) 闹钟模块:
在设定闹钟闹铃时间后,当闹钟使能端有效时,可在闹铃时间闹铃,通过人工拨0后停闹。
一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器和定时器组成。
干电路系统由秒信号发生器、“时”,“分”,“秒”计数器、译码器及显示器、电路组成。
本设计方案可以这样实现,首先构成一个CB555定时器产生震荡周期为一秒的标准秒脉冲,由74LS160采用清零法分别组成六十进制的秒记数器、六十进制分记数器、二十四进制时记数器。
使用CB555定时器的输出作为秒记数器的CP脉冲,把秒记数器地进位输出作为分记数器地CP脉冲,分记数器的进位输出作为时记数器的CP脉冲。
使用74LS48为驱动器,BS201A数码管作为显示器。
本系统也可以这样实现,首先构成一个CB555定时器产生震荡周期为一秒的标准秒脉冲,由74LS160采用置数法分别组成六十进制的秒记数器、六十进制分记数器,二十四进制时记数器采用清零法。
使用CB555定时器的输出作为秒记数器的CP脉冲,把秒记数器地进位输出作为分记数器地CP脉冲,分记数器的进位输出作为时记数器的CP脉冲。
使用74LS48为驱动器,BS201A数码管作为显示器。
但是第二种方法在60进制计数器上采用的是置数法,效果比较好。
因为清零法在计数进位上不稳定,需要加一个触发器,效果就会非常好,但是本着设计简单从实现的角度,本设计可分为以下几个实现模块:
晶体振荡器:
晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定。
一般输出为方波的数字式晶体振荡器电路通常有两类,一类是用TTL门电路构成;另一类是通过CMOS非门构成的电路
分频器电路:
通常,数字钟的晶体振荡器输出频率较高,为了得到1Hz的秒信号输入,需要对振荡器的输出信号进行分频。
通常实现分频器的电路是计数器电路,一般采用多级2进制计数器来实现。
例如,将32768Hz的振荡信号分频为1HZ的分频倍数为32768,即实现该分频功能的计数器相当于15级2进制计数器。
常用的2进制计数器有74HC393等。
时间计数单元:
时间计数单元有时计数、分计数和秒计数等几个部分。
时计数单元一般为12进制计数器或24进制计数器,其输出为两位8421BCD码形式;分计数和秒计数单元为60进制计数器,其输出也为8421BCD码。
一般采用10进制计数器如74HC290、74HC390等来实现时间计数单元的计数功能。
欲实现12进制和60进制计数还需进行计数模值转换。
译码驱动及显示单元:
计数器实现了对时间的累计以8421BCD码形式输出,为了将计数器输出的8421BCD码显示出来,需用显示译码电路将计数器的输出数码转换为数码显示器件所需要的输出逻辑和一定的电流,一般这种译码器通常称为7段译码显示驱动器。
常用的7段译码显示驱动器有CD4511。
校时电源电路:
当重新接通电源或走时出现误差时都需要对时间进行校正。
通常,校正时间的方法是:
首先截断正常的计数通路,然后再进行人工出触发计数或将频率较高的方波信号加到需要校正的计数单元的输入端,校正好后,再转入正常计时状态即可。
整点报时电路:
一般时钟都应具备整点报时电路功能,即在时间出现整点前数秒内,数字钟会自动报时,以示提醒。
其作用方式是发出连续的或有节奏的音频声波,较复杂的也可以是实时语音提示。
本设计的总体结构框如图1-1所示:
图1-1数字钟组成框图
通过数字钟方框图和原理图可以看出,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现,在此我们用555定时器来实现。
将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计时器,可实现对一天24小时的累计。
译码显示电路将“时”、“分”、“秒”、连接到硬件后计数器的输出状态送到七段显示译码器译码,通过七位LED七段显示器显示出来。
该数字钟的设计是采取各个击破的方法,即分别写出各个模块,然后通过仿真以及硬件下载测试。
而且这也是一个反复的过程,不停的测试,不停地修改程序。
介于仿真的时序很常,也就就不在这里给出仿真的时序图了。
在完成顶层文件后,硬件下载测试其数字钟的时序、整点闹铃和设置闹铃均达到了实验的要求。
自顶向下的设计方法
通常设计数字电路大都采用自顶向下将系统按功能逐层分割的层次化设计方法,这比传统自下向上的EDA设计方法有更明显的优势(当时的主要设计文件是电路图)。
因为由自顶向下的设计过程可以看出,从总体行为设计开始到最终逻辑综合,形成网络表为止。
每一步都要进行仿真检查,这样有利于尽早发现系统设计中存在的问题,从而可以大大缩短系统硬件的设计周期。
这也是HDL语言设计系统硬件的最突出的优点之一。
并且在顶层设计中,要对内部各功能块的连接关系和对外的接口关系进行描述。
而功能块实际的逻辑功能和具体的实现形式则由下一层模块来描述。
在系统的底层设计中,由于其对系统很强的行为描述能力,可以不必使系统层层细化,从而避开具体的器件结构,从逻辑行为上直接对模块进行描述和设计,随后EDA设计软件或相应的第三方工具软件中的综合器将程序自动综合成为具体工艺实现的目标芯片的网表文件,这种避开具体器件结构的方式也是它的重要优势之一[4]。
VHDL的优势
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
VHDL语言有以下特点:
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
VHDL基本结构
实体ENTITY是VHDL语言中最重要的抽象概念。
由于VHDL支持多层次描述,因此实体的对象相当广泛,可以是完整的系统(特大型)、电路板、芯片、电路单元、小函数或是逻辑门。
实体说明主要描述对象的外貌,即对象的输入和输出(I/O)的端口信息,它并不描述器件的具体功能。
在电路原理图上实体相当于元件符号。
实体有实体名。
实体名×××可以取英文名,且不能以数字开头;注意在编写完VHDL文本存盘时,设计文件×××.vhd的前缀一定要和实体名×××完全相同,否则有的EDA软件无法编译。
实体说明的一般格式如下:
ENTITY实体名IS
[GENERIC(类属表);]
[PORT(端口表);]
END[ENTITY][实体名];
实体说明格式是以"ENTITY实体名IS"开始至END[ENTITY][实体名]结束,中间包含了类属表和端口表两部分,其中类属表可以没有,而端口表必须有。
VHDL语言描述数字系统
VHDL设计是行为级的设计,设计简单,易学易用,它主要是设计者主要是根据VHDL的语法规则对系统目标的逻辑行为进行描述然后通过综合工具进行电路结构的综合、编译、优化,通过仿真工具进行逻辑功能仿真和系统时延的仿真。
实际设计过程中,由于每个工程师对语言规则、对电路行为的理解程度不同,每个人的编程风格不同,往往同样的系统功能,描述的方式是不一样的,综合出来的电路结构更是大相径庭。
因此,即使最后综合出的电路都能实现相同的逻辑功能,其电路的复杂程度和时延特性都会有很大的差别,甚至某些臃肿的电路还会产生难以预料的问题。
从这个问题出发,我们就很有必要深入讨论在VHDL设计中如何简化电路结构,优化电路设计的问题。
用VHDL进行设计,其最终综合出的电路的复杂程度除取决于设计要求实现的功能的难度外,还受设计工程师对电路的描述方法和对设计的规划水平的影响。
最常见的使电路复杂化的原因之一是设计中存在许多本不必要的类似LATCH的结构。
而且由于这些结构通常都由大量的触发器组成,不仅使电路更复杂,工作速度降低,而且由于时序配合的原因而导致不可预料的结果。
例如对于同一译码电路有不同VHDL描述:
方法一:
IFINDEX=″00000″THEN
STEPSIZE<=″0000111″;
WLSIFINDEX=″00001″THEN
STEPSIZE<=″0001000″;
LSIFINDEX=″00010″THEN
STEPSIZE<=″0001001″;
……
ELSE
STEPSIZE<=″0000000″;
ENDIF;
方法二:
STEPSIZE<=″0000111″WHENINDEX=″00000″ELSE
″0001000″WHENINDEX=″00001″ELSE
″0001001″WHENINDEX=″00010″ELSE
……
″0000000″;
以上两段程序描述了同一个译码电路。
第二段程序由于WHEN......ELSE的语句不能生成锁存器的结构且ELSE后一定要有结果,所以不会有问题,而第一个程序如果不加ELSESTEPSIZE〈=“0000000”这句,则会生成一个含有7位寄存器的结构,虽然都能实现相同的译码功能。
但是电路复杂度会大增。
而由于每个工程师的写作习惯不同,有的喜欢用IF....ELSE的语句,有的喜欢用WHEN....ELSE的方式,而用IF....ELSE时,如稍不注意,在描述不需要寄存器的电路时没加ELSE,则会引起电路不必要的开销。
所以在VHDL设计中要慎用IF....ELSE这类能描述自身值代入的语句。
逻辑设计对电路结构的影响,还有一个使电路复杂化的原因是逻辑电路的输入项太多以致需占用过多的面积。
我们从以上两个例子可以分析两个相同功能的逻辑电路和他们对应的VHDL描述导致结果不同。
比较结果可知,方法二是二级逻辑门,每个输入信号与不只一个逻辑门相连,方法一是三级的逻辑门,每个输入信号只与一逻辑门相连。
由于级数少,延时也较少,因此方法一的速度要比方法二快。
然而,由于方法一的输入项要比方法二大的多,因此,占用的面积必然也比图3大。
其实可以通过提取公因数使两种方法相同,这是把附加的中间项加到结构描述中去的一种过程,它使输入到输出中的逻辑级数增加,牺牲速度换来电路占用面积的减少。
对于对延时要求不高的情况下采用这种方法分解逻辑电路以达到减少电路复杂度的目的[5]。
通过以上简单、初步的探讨,我们可以知道,用VHDL进行集成电路的设计,牵涉到对VHDL语言的使用方法和对设计的理解程度[19]。
通过分析我们知道在使用VHDL描述系统时,要注意以下几个方面:
(1)在用VHDL进行设计中要注意避免不必要的寄存器描述。
(2)在编写程序前要先对整个设计进行较深入的了解,科学的划分设计,多设想几种方案再进行比较用多个较少位数的单元取代较多位数的单元。
(3)在延时要求不高的情况下,可提取逻辑电路公因子,把它分解成含有中间变量的多级电路。
五程序清单
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityshuzizhongis
port(clk,,clk1,set,change,s1,s2,s3:
instd_logic;
second1,second2,minite1,minite2,hour1,hour2:
outstd_logic_vector(3downto0);
Light:
outstd_logic_vector(7downto0);
cout:
outstd_logic);
endentity;
architectureoneofshuzizhongis
begin
pro1:
process(clk,set,s1,s2,s3,change)
variablemsecond1,msecond2,mminite1,mminite2,mhour11,mhour12,mhour21,mhour22:
std_logic_vector(3downto0);
begin
ifclk'eventandclk='1'then
ifset='1'then-----启动校验
ifs1='1'
thenmsecond1:
=msecond1+1;
ifmsecond1="1010"
thenmsecond1:
="0000";
msecond2:
=msecond2+1;
ifmsecond2="0110"
thenmsecond2:
="0000";
endif;
endif;
endif;--------秒校验
ifs2='1'
then
mminite1:
=mminite1+1;
ifmminite1="1010"
thenmminite1:
="0000";
mminite2:
=mminite2+1;
ifmminite2="0110"
thenmminite2:
="0000";
endif;
endif;
endif;---------分校验
ifs3='1'then
mhour11:
=mhour11+1;
mhour21:
=mhour21+1;
ifmhour11="1010"thenmhour11:
="0000";
mhour12:
=mhour12+1;
endif;
ifmhour11="0011"andmhour12="0001"
thenmhour11:
="0001";mhour12:
="0000";
endif;
ifmhour21="1010"thenmhour21:
="0000";
mhour22:
=mhour22+1;
endif;
ifmhour21="0100"andmhour22="0010"
thenmhour21:
="0000";mhour22:
="0000";
endif;
endif;-------时校验
elsemsecond1:
=msecond1+1;-----正常计时工作
ifmsecond1="1010"
thenmsecond1:
="0000";
msecond2:
=msecond
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 数字
![提示](https://static.bdocx.com/images/bang_tan.gif)