1、 EDA技术多功能数字钟系统的设计摘 要近年来,随着电子技术和通信技术的飞速发展,要求设计研究方面运用电子设计自动化(Electronic Design Automation,简称EDA)工具进行开发。在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路
2、设计的效率和可靠性,减轻了设计者的劳动强度。本设计为通过EDA仿真软件MAX+PLUSII设计一个多功能数字钟,并下载到硬件中实现。本系统的设计电路由计时电路、动态显示电路、闹钟电路、控制电路、显示电路等部分组成。本系统采用动态显示的原理在数码管上显示12小时计时的时刻,具有清零、保持、校时、报时的功能,并在此基础上增加了闹铃、秒表、12小时制计时、A/P显示等功能。在设计过程中,将各部分均模块化,各模块间相互独立,又相互联系。本实验吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。本系统不仅成功的实现了要求的基本功能,发挥部分也得到完全的实现,而且有一定的
3、创新功能。关键词 数字钟、计数器、多功能、动态显示、原理图、仿真、模块化Abstract Recently, with the rapid development of electronic and communication technology, it is required to use Electronic Design Automation (EDA) as a tool in designing systems. EDA derives from the concepts of Computer Aided Design, Computer Aided Manufacture, C
4、omputer Aided Test and Computer Aided Engineering in the 1990s. Designers use Hardware Describe Language to accomplish designing files on the platform of software. Then, computer will finish the work of logical compiling, simplification, division, synthesis, optimizing, layout, tracking and simulati
5、ng automatically, and it can also accomplish the work of proper compiling, logical projecting and downloading of the target chip. As a result, it evidently improves the efficiency and reliability of the circuit design, and it also lighten designers workload. This experiment has designed a multifunct
6、ional digital clock via using the MAX+PLUSII, and the basic and extended performances and functions are successfully realized in the hardware. This system includes time circuit, alarm circuit, dynamic display circuit, control circuit, display circuit. In the system, the segment display can display t
7、ime in the 24-hour format, it includes such functions as clear, hold, check the time and so on. We can also add alarm, stopwatch, 12-hour format display and other functions on that basic. In the designing process, many parts are modularized, they are not only independent but also related. Many funct
8、ions are finished by the software. So it simples the circuit and enhances the stability of the system. Not only all the basic and extended performances and functions are successfully realized, but also accomplish some innovation functions.Keywords:Digital clock, arithmometer, multifunctional, dynami
9、c display,schematic diagram, simulate, modularization目 录摘 要2Abstract31、引 言52、 EDA技术介绍62.1 EDA技术概况62.2 ALTERA QUARTUS II软件介绍63、设计电路的内容和功能要求83.1 设计内容简介83.2 设计功能要求83.3 74153芯片功能简介84、硬件语言Verilog HDL语言简介104.1 Verilog HDL发展史104.2 Verilog HDL概念114.3 Verilog HDL特点114.2 Verilog HDL应用实例115、方案论证125.1 设计方案125.2
10、 整体设计方案介绍126、各子模块设计的原理和电路仿真136.1 主控制模块的设计及仿真136.2时间及其设置模块166.2.1时间模块166.2.2时间设置模块206.3 时间显示动态位选模块246.4 显示模块276.5 秒表模块316.6闹钟模块326.7 分频模块367、设计过程中遇到的问题38结束语39参考资料40致谢411、 引 言多功能数字钟数字钟是采用数字电路实现对时,分,秒。数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,运运超过老式钟表, 钟表的数字化给
11、人们生产生活带来了极大的方便而且大大地扩展了钟表原先的报时功能。因此,研究数字钟及扩大其应用,有着非常现实的意义。 数字钟计时的标准信号应该是频率相当稳定的1HZ秒脉冲,所以要设置标准时间源。 数字钟计时周期是24小时,因此必须设置24小时计数器,应由模为60的秒计数器和分计数器及模为24的时计数器组成,秒、分、时由七段数码管显示。为使数字钟走时与标准时间一致,校时电路是必不可少的。设计中采用开关控制校时直接用秒脉冲先后对“时”“分”“秒”计数器进行校时操作。能进行整点报时。在从59分50秒开始,每隔2秒钟发出一次低音“嘟”的信号,连续五次,最后一次要求最高音“嘀”的信号,此信号结束即达到正点
12、。本文基于数字钟的的设计原理,利用Altera公司出品QuartusII软件以及相应的实验平台完成设计。通过实验了解QuartusII的各种功能,学习对个子模块设计后的仿真基本方法。利用所学数字电路知识,用电路元件设计数字钟基本部分,经过仿真调试后下载到实验箱上。此次设计的数字钟具有清零、校时和校分功能、计时显示功能、整点报时功能。 2、 EDA技术介绍2.1 EDA技术概况 20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到
13、广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。 EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻
14、辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可*性,减轻了设计者的劳动强度2.2 ALTERA QUARTUS II软件介绍 Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使
15、用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体
16、,是一种综合性的开发平台。Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观
17、易用的接口,越来越受到数字系统设计者的欢迎。 Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。支持MAX7000/MAX3000等乘积项器件在本次设计中,用的软件是Alter公司的QUARTUSII5.0英文版
18、, 如下图,就是QUARTUSII5.0启动时出现的界面。43 3、设计电路的内容和功能要求3.1 设计内容简介 综合运用所学的数字逻辑电路和系统设计的知识,学会采用层次化设计的概念,将此次任务分成若干模块,规定某一模块的功能和各模块之间的接口,然后将各模块组合起来构成系统框图。任务要求设计一个多功能数字时钟电路,可以完成00:00:00-11:59:59的计时功能,并且具有清零功能、快速校分校小时、整点报时等基本功能。3.2 设计功能要求1、能进行正常的时、分、秒计时功能;2、分别由六个数码管显示00小时00分00秒到11小时59分59秒的计时;3、键1是系统的启停(键1为0停止运行,键1为
19、1时正常工作);4、键2是系统的清零(键2为0清零,键2为1时不清零);5、键3是系统的校时开关(键3为0正常工作,键3为1时可以快速校时);6、键4是系统的校分开关(键4为0正常工作,键4为1时可以快速校分);7、可增加数字钟的附加功能,例如数字钟的闹钟功能、彩铃的报时和闹铃功能等。3.3 74153芯片功能简介74153 是一种常用的双4选1 数据选择器。图4(a)为 74153的逻辑符号,符号顶部为公共控制框,因此地址 A1A0 是公用的;下部为两个相同的单元框,每单元有4 路输入通道,另有一选通控制端ST,ST为低电平有效,用 EN 说明它的使能作用,由于这个 EN 后面无数字,所以它
20、对本单元的所有输入均起作用,故可称之为单元选通端。当ST= 1 时,则该单元禁止工作,或称未被选中,输出为0。根据图(b)可写出每单元的输出表达式为: 系统层次图如图3.4计数控制 模块 调时 调分 计时时间显示输出 整点报时控制 reset clk 蜂鸣器输出动态显示 模块 时间 显示闹钟控制 模块 调时 调分 闹钟时间显示输出 闹钟报时控制 reset clk 蜂鸣器输出整点报时模块 clk分频器 模块 1024Hz sound sound 1024Hz 512Hz 时间 4Hz 闹钟报时模块 1Hz clk sound 时间图3.4、硬件语言Verilog HDL语言简介4.1 Veri
21、log HDL发展史Verlog HDL的发展历史:1、1981年Gateway Automation(GDA)硬件描述语言公司成立。2、1983年该公司的Philip Moorby首创了Verilog HDL,Moorby后来成为Verrlog HDL-XL的主要设计者和Cadence公司的第一合伙人。3、1984-1985年Moorby设计出第一个关于Verilog HDL的仿真器。4、1986年Moorby对Verilog HDL的发展又做出另一个巨大的贡献,提出了用于快速门级仿真的XL算法。5、随着Verilog HDL-XL的成功,Verilog HDL语言得到迅速发展。6、1987
22、年Synonsys公司开始使用Verilog HDL行为语言作为综合工具的输入。7、1989年Cadence公司收购了Gateway公司,Verilog HDL成为Cadence公司的私有财产。8、1990年初Cadence公司把Verilong HDL和Verilong HDL-XL分开,并公开发布了Verilog HDL.随后成立的OVI(Open Verilog HDL International)组织负责Verilog HDL的发展,OVI由Verilog HDL的使用和CAE供应商组成,制定标准。9、1993年,几乎所有ASIC厂商都开始支持Verilog HDL,并且认为Veril
23、og HDL-XL是最好的仿真器。同时,OVI推出2.0版本的Verilong HDL规范,IEEE接收将OVI的Verilong HDL2.0作为IEEE标准的提案。10、1995年12月,IEEE制定了Verilong HDL的标准IEEE1364-1995. 任何新生事物的产生都有它的历史沿革,早期的硬件描述语言是以一种高级语言为基础,加上一些特殊的约定而产生的,目的是为了实现RTL级仿真,用以验证设计的正确性,而不必像在传统的手工设计过程中那样,必须等到完成样机后才能进行实测和调试。Verilog HDL就是在用用最广泛的C语言的基础上发展起来的一种件描述语言,它是由GDA(Gatew
24、ay Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得VerilogHDL成为了该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995.4.2 Verilog HDL
25、概念Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。4.3 Verilog HDL特点Verilog HDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把Verilog HDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。与之相比,VHDL的学习要困难一些
26、。但Verilog HDL较自由的语法,也容易造成初学者犯一些错误,这一点要注意4.2 Verilog HDL应用实例一个简单的VerilogHDL的例子:(12位寄存器)/ Verilog Example/ User-Defined Macrofunctionmodule reg12 ( d, clk, q);define size 11input size:0d;input clk;output size:0q;reg size:0q;always (posedge clk)q = d;endmodule5、方案论证5.1 设计方案方案一:利用AT89C2051单片机控制的数字钟的硬件结构
27、与软件设计,给出了汇编语言源程序。此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。它的计时周期为12小时,显示满刻度为12时59分59秒99毫秒,另外应有校时功能。电路由时钟脉冲发生器、时钟计数器、译码驱动电路和数字显示电路以及时间调整电路组成。用晶体振荡器产生时间标准信号,这里采用石英晶体振荡器。根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个60进制(秒、分)、一个12进制(时)的计数器。构成秒、分、时的计数,实现计时的功能。显示器件选用LED七段数码管。在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。针对数字钟会产生走时误差的现象,在电
28、路中就设计有有校准时间功能的电路方案二:采用自顶向下的设计方法,它由秒计数模块,分计数模块,小时计数模块,报警模块,秒分时设置模块和译码模块六部分组成。方案三:用无进位六进制计数器选择数码管的亮灭以及对应的数,循环扫描显示,用六选一选择器选择给定的信号输出对应的数送到七段码译码器。模块进行复位,设置小时和分,输出整点报时信号和时,分,秒信号5.2 整体设计方案介绍 在整个设计中,数字钟具有记时、闹钟、整点报时、校时和显示的功能。设计分为4个步骤。第一,数字钟的时、分、秒的设计,时钟采用12进制,到了11:59:59,数字钟自动跳到00:00:00,分和秒采用60进制;第二,数字钟闹钟到点闹铃的
29、设计,包括闹钟响的频率(例如每5秒响一次)、以及次数;第三,数字钟的整点报时,到了整点后,会自动的“嘟嘟”响2下;第四,数字钟的校时及显示,包括对时间的调整以及闹钟的调整。各个方面完成后即可对电路进行仿真。6、各子模块设计的原理和电路仿真6.1 主控制模块的设计及仿真主控制模块实现对各个功能模块的整体设计,包括对时间显示与调整、日期显示与调整、闹钟显示与调整、秒表操作等的控制根据模块实现的功能设计Verilog HDL源代码如下:module maincontrol(SW3,Timepiece_EN,TimeSet_EN,Stopwatch_EN,Alarmclock_EN,Date_EN,D
30、ateSet_EN);output Timepiece_EN,TimeSet_EN,Stopwatch_EN,Alarmclock_EN,Date_EN,DateSet_EN;input SW3;reg Timepiece_EN,TimeSet_EN,Stopwatch_EN,Alarmclock_EN,Date_EN,DateSet_EN;reg 2:0 Function; /存放功能号always (posedge SW3)begin if(Function 3b101)Function = Function + 3b1; else Function = 3b0; case(Functio
31、n) /时钟 3b000: begin Timepiece_EN = 1b1; TimeSet_EN = 1b0; Stopwatch_EN = 1b0; Alarmclock_EN = 1b0; Date_EN = 1b0; DateSet_EN = 1b0; end /时钟设置 3b001: begin Timepiece_EN = 1b0; TimeSet_EN = 1b1; Stopwatch_EN = 1b0; Alarmclock_EN = 1b0; Date_EN = 1b0; DateSet_EN = 1b0; end /秒表 3b010: begin Timepiece_EN
32、 = 1b0; TimeSet_EN = 1b0; Stopwatch_EN = 1b1; Alarmclock_EN = 1b0; Date_EN = 1b0; DateSet_EN = 1b0; end/闹钟设置 3b011: begin Timepiece_EN = 1b0; TimeSet_EN = 1b0; Stopwatch_EN = 1b0; Alarmclock_EN = 1b1; Date_EN = 1b0; DateSet_EN = 1b0; end /日期显示 3b100: begin Timepiece_EN = 1b0; TimeSet_EN = 1b0; Stopw
33、atch_EN = 1b0; Alarmclock_EN = 1b0; Date_EN = 1b1; DateSet_EN = 1b0; end/日期设置3b101: begin Timepiece_EN = 1b0; TimeSet_EN = 1b0; Stopwatch_EN = 1b0; Alarmclock_EN = 1b0; Date_EN = 1b0; DateSet_EN = 1b1; end default: begin Timepiece_EN = 1b0; TimeSet_EN = 1b0; Stopwatch_EN = 1b0; Alarmclock_EN = 1b0;
34、Date_EN = 1b0; DateSet_EN = 1b0; end endcaseendendmodule在软件工具中编译和仿真得到的编译报告和波形图如图6.1.1(a)和(b)6.1.图6.1.1(a)波形图如下:图6.1.1(b)6.2时间及其设置模块 时间及其设置模块主要完成时间的自动显示和正常运行,以及在相应的功能号下,实现时间的调整与设置。6.2.1时间模块时间模块主要完成时间的自动显示功能。其Verilog HDL代码如下:module time_auto_and_set( CLK,Timepiece_EN, TimeSet_EN, SW1, SW2, Day_EN, hou
35、r_0,hour_1, minute_0,minute_1, second_0,second_1, TimeSet_disp_drive );inputCLK;inputTimepiece_EN;inputTimeSet_EN;inputSW1;inputSW2;outputDay_EN;output3:0 hour_1,hour_0;output3:0 minute_1,minute_0;output3:0 second_1,second_0;output2:0 TimeSet_disp_drive;reg 3:0 hour_1,hour_0;reg 3:0 minute_1,minute_
36、0;reg 3:0 second_1,second_0;reg 2:0 TimeSet_disp_drive;wire3:0 SYNTHESIZED_WIRE_18;wire3:0 SYNTHESIZED_WIRE_19;wire3:0 SYNTHESIZED_WIRE_2;wire3:0 SYNTHESIZED_WIRE_3;wire3:0 SYNTHESIZED_WIRE_20;wire3:0 SYNTHESIZED_WIRE_21;wire3:0 SYNTHESIZED_WIRE_6;wire3:0 SYNTHESIZED_WIRE_7;wire3:0 SYNTHESIZED_WIRE_
37、22;wire3:0 SYNTHESIZED_WIRE_23;wire3:0 SYNTHESIZED_WIRE_10;wire3:0 SYNTHESIZED_WIRE_11;timepiece_mainb2v_inst1(.CLK(CLK), .Timepiece_EN(Timepiece_EN),.day_EN(Day_EN), .hour0(SYNTHESIZED_WIRE_18),.hour1(SYNTHESIZED_WIRE_19), .minute0(SYNTHESIZED_WIRE_20),.minute1(SYNTHESIZED_WIRE_21), .second0(SYNTHE
38、SIZED_WIRE_22),.second1(SYNTHESIZED_WIRE_23);time_muxb2v_inst2(.TimeSet_EN(TimeSet_EN), .hour0(SYNTHESIZED_WIRE_18),.hour1(SYNTHESIZED_WIRE_19), .hour_set0(SYNTHESIZED_WIRE_2),.hour_set1(SYNTHESIZED_WIRE_3), .minute0(SYNTHESIZED_WIRE_20),.minute1(SYNTHESIZED_WIRE_21), .minute_set0(SYNTHESIZED_WIRE_6
39、),.minute_set1(SYNTHESIZED_WIRE_7),.second0(SYNTHESIZED_WIRE_22),.second1(SYNTHESIZED_WIRE_23), .second_set0(SYNTHESIZED_WIRE_10),.second_set1(SYNTHESIZED_WIRE_11), .hour_0(hour_0),.hour_1(hour_1), .minute_0(minute_0),.minute_1(minute_1), .second_0(second_0),.second_1(second_1);timesetb2v_inst3(.Tim
40、eSet_EN(TimeSet_EN), .SW1(SW1),.SW2(SW2), .hour0(SYNTHESIZED_WIRE_18),.hour1(SYNTHESIZED_WIRE_19), .minute0(SYNTHESIZED_WIRE_20),.minute1(SYNTHESIZED_WIRE_21), .second0(SYNTHESIZED_WIRE_22),.second1(SYNTHESIZED_WIRE_23), .disp_drive(TimeSet_disp_drive), .hour_set0(SYNTHESIZED_WIRE_2),.hour_set1(SYNT
41、HESIZED_WIRE_3), .minute_set0(SYNTHESIZED_WIRE_6),.minute_set1(SYNTHESIZED_WIRE_7),.second_set0(SYNTHESIZED_WIRE_10),.second_set1(SYNTHESIZED_WIRE_11);Endmodule编译报告如图6.2.1(a):图6.2.1(a) 仿真后的波形图如图6.2.1(b):图6.2.1(b)6.2.2时间设置模块 时间设置模块主要完成对时间的设置相关的闪烁显示控制以及时间的小时、分钟、秒等数据的改变。其相应功能的Verilog HDL源代码如下:module timeset( TimeSet_EN, SW1,SW2, hour1,