1、eda数字电子钟之欧阳史创编唐 山 学 院时间:2021.02.10创作:欧阳史 EDA技术 课 程 设 计 题 目 数字电子钟设计 系 (部) 智能与信息工程学院班 级 13电本1班姓 名 马建雨学 号 4130208144指导教师 郭耀华、王默琦、戴彦2016年7 月 4日至 7月 8 日 共1 周2016年 7 月8日1 引言12 EDA技术简介22.1 EDA技术的基本特征22.2 硬件描述语言23 QuartusII软件简介43.1软件介绍43.2 QuartusII工作环境介绍54 课程设计说明84.1设计内容84.2设计要求84.3设计目的84.4设计思路84.5 设计具体方案及
2、实现94.5.1秒、分、时计时模块94.5.2 动态显示模块114.5.3 整点报时模块134.5.4 校时模块144.6 总程序165 总结18参考文献191 引言随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升;电子类的高新技术项目的开发也愈益依赖于EDA技术的应用。即使是普通的电子技术的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、性能价格比大幅提高。不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。EDA技术的设
3、计语言为VHDL(硬件描述语言),实验载体为可编程器件CPLD或者FPGA,进行元件模拟和仿真的目标器件为ASIC/SOC芯片。它是一种自动化设计电子产品的过程。在电子设计仿真的领域里,EDA技术的出现具有非常重要的现实意义。EDA源自于计算机辅助设计、制造、测试以及辅助工程。利用EDA工具,设计者们可以从概念、算法、协议等方面来设计电子系统。值得一提的是,在整个电子系统的设计过程中,设计电路、分析性能、布置IC和PCB版图等步骤都可以在电脑上自动完成。时钟是我们日常生活中必备的生活用品之一。而数字时钟的出现更是给人们的生产生活带来了极大的便利。钟表的数字化给人们生产生活带来了极大的方便,而且
4、大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。EDA技术为数字类产品提供了一个非常简便实用的开发平台。随着EDA技术的快速发展,数字时钟的应用越来越广泛,并且它在功能外观方面也有了很大的改善和提高。本文就是基于EDA技术的基础知识,利用Quartus2软件再现一个具有传统时钟功能和自动报时功能的数字时钟。数字钟采用EDA技术设计,利用硬件描述语言VHDL按模块化方式设计、编程及时序仿真等。该数
5、字钟能实现时、分、秒计数的显示功能,且以24小时循环计时,具有清零的功能,且能够对计时系统的小时、分钟进行调整,具有整点报时功能。整个系统包括传统数字时钟所拥有的计时模块、校时模块、译码显示模块以及整点报时模块。整个系统使用方便,功能齐全,精度高。2 EDA技术简介电子设计技术的核心就是EDA 技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术、最新成果二研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。2.1 EDA技术的基本特征EDA代表了当今电子技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方
6、法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为及设计,最后通过综合器和适配器生成最终的目标器件,这样的设计被称为高层次的电子设计方法。这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一进行享验证。然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现既可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程实在高层次上完成的,这既有利于早期发现结构设计上的一些错误,避免设计工作的浪费,又减少了逻辑
7、功能仿真的工作量,提高了设计的一次成功率。2.2 硬件描述语言 硬件描述语言是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。例如一个32位的加法器,利用图形输入软件需要输入500至1000个门,而利用VHDL语言只需要书写一行A=B+C即可。而且VHDL语言可读性强,易于修改和发现错误。早期的硬件描述语言,如ABEL、HDL、AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了克服以上不足,1985年美国国防部正式推出了高速集成电路硬件描述语
8、言VHDL,1987年IEEE采纳VHDL为硬件描述语言标准(IEEESTD1067)。VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或者自底向上的电子设计过程都可以用VHDL来完成。VHDL还具有以下优点:(1)VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现.(2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重
9、用。(3)VHDL的设计不依赖于特定的期间,方便了工艺的转换。(4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是
10、VHDL系统设计的基本点。与其他的硬件描述语言相比,VHDL的优势在于:(1)VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用
11、EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。3 Quartus软件简介3.1软件介绍Quartus II 是Altera公司的综合性PLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware 支持Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用
12、,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻
13、辑设计于一体,是一种综合性的开发平台。Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组
14、合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。3.2 Quartus工作环境介绍1启动Quartus,进入如图3.1管理器窗口:2新建工程,如图3.2所示:3代码输入:执行File菜单下的New命令,点击VHDL File。如图3.3所示:4进行程序仿真,如图3.4所示:5建立波形文件,进行波形仿真。执行File菜单下的New命令,点击Vector Waveform File。如图3.5所示:图3.5 功能仿真界面4 课程
15、设计说明4.1设计内容在本次课程设计中使用Quartus软件并基于实验室现有的EDA实验箱,实现数字电子钟的设计:(1)设计一个能进行时、分、秒计时数字钟。(2)能对时、分和秒进行手动调节以校准时间。(3)具有整点报时功能,通过选择此功能,能在整点时间发出报时声音。(4)系统具有整体复位功能(5)进阶设计:报时声响为四低一高,最后一响正好为整点4.2设计要求(1)根据任务要求确定电路各功能模块;(2)写出设计程序并给出时序仿真结果;(3)最后要有设计总结;4.3设计目的(1)加深对VHDL语言设计的理解并熟悉Quartus软件的工作方法及应用。(2)通过设计加深对EDA课程的理解并了解简易集成
16、电路的设计思路。(3)熟悉Quartus软件的工作方法及应用技术。4.4设计思路本设计包含:校时模块、秒、分计时模块(60进制计数器)、时计时模块(24进制计数器)、数码显示模块、整点报时模块。具体框图如图4.1所示:moshi=1moshi=0 moshi=2 moshi=34.5 设计具体方案及实现4.5.1秒、分、时计时模块(1)秒、分计时模块的设计原理秒、分计时模块实质上是一个60进制计数器其设计思想是将输入脉冲进行计数,每来一个上升沿记一次数,当计到60是清零并且进位端输出1,否则输出0。而秒计时的进位端用于控制分计时的clk脉冲,分计时的进位端用于控制小时计时的clk脉冲。小时计时
17、模块则是一个24进制计数器,与前两个不同的是其在计到24时清零但不需要使用进位输出端。(以下均以秒计时为例分析)(2)程序如下:library ieee;use ieee.std_logic_1164.all;entity miao is port(clk,rst:in std_logic;m1,m2:out std_logic_vector(3 downto 0);-m1为秒的低位;m2为秒的高位; cin:out std_logic);end miao;architecture bhv of miao isbeginprocess(clk,rst)variable temp1:intege
18、r range 0 to 10;variable temp2:integer range 0 to 6;beginif rst=1 then temp1:=0;temp2:=0;elsif clkevent and clk=1 then temp1:=temp1+1;if temp1=10 then temp1:=0; temp2:=temp2+1;if temp2=6 then temp2:=0; cin=1;else cinm1m1m1m1m1m1m1m1m1m1null;end case;case temp2 iswhen 0=m2m2m2m2m2m2null;end case;end
19、process;end bhv;(3)波形仿真在Quartus II软件输入上述代码,再通过编译和时序仿真,可得到如下的仿真波形。如图4.2所示:图4.2 仿真波形(4)将我们设计的计时模块电路编译成库中的一个元件。如下图所示:4.5.2 动态显示模块(1)动态显示模块的设计原理将计时模块的输出作为显示模块的输入,用动态扫描的方式实现四位二进制的七段数码显示。本设计采用了两个四位七段数码显示模块实现XXXXXX。(2)设计程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD
20、_LOGIC_UNSIGNED.ALL;ENTITY xianshi1 IS PORT (c1,c2,c3: IN STD_LOGIC_VECTOR(3 DOWNTO 0); clk : IN std_logic; rst : IN std_logic; led_out1 : OUT std_logic_vector(7 DOWNTO 0); led_bit1 : OUT std_logic_vector(3 DOWNTO 0); END xianshi1 ;ARCHITECTURE bhv OF xianshi1 ISsignal dongtai : std_logic_vector(5 d
21、ownto 0 );signal data : std_logic_vector(3 downto 0);signal m_bit: std_logic_vector(3 downto 0);begin process(clk,rst) begin if(rst=1)then dongtai=000000; elsif(clkevent and clk=1)then dongtai m_bit m_bit m_bit m_bit m_bit data data data data data led_out1 led_out1 led_out1 led_out1 led_out1 led_out
22、1 led_out1 led_out1 led_out1 led_out1 led_out1 null; END CASE; END PROCESS; led_bit1=m_bit;end bhv;(4)将动态显示模块编译为库中的元件,如下图所示:a4.5.3 整点报时模块(1)模块设计原理本次设计中要求完成进阶设计:报时声响为四低一高,最后一响正好为整点。所以在设计中用case语句对alarm进行赋值,例如当分计时模块输出为59,而秒计时模块为56、57、58、59时,对alarm赋低频clk;当秒、分计时模块输出都为00时,对alarm赋1;其他情况时对alarm赋0;(2)设计程序如下:
23、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity baoshi isport(clk:in std_logic; m1,m2,f1,f2,h1,h2:in std_logic_vector(3 downto 0); alarm:out std_logic);end baoshi;architecture bhv of baoshi is signal a:std_logic;beginprocess(clk)variable c
24、nt:integer range 0 to 10000; variable c:std_logic;beginif clkevent and clk=1 then if cnt10000 then cnt:=cnt+1;else cnt:=0; c:=not c; end if; end if;a=c; end process;process(f1,f2,m1,m2)beginif f1=0000 and f2=0000 and m1=0000 and m2=0000 then alarm=1;elsif f1=1001 and f2=0101 and m1=0110 and m2=0101 then alarm=a;elsif f1=1001 and f2=0101 and m1=0111 and m2=0101 then alarm=a;elsif f1=1001 and f2=0101 and m1=1000 and m2=0101 then alarm=a;elsif f1=1001 and f2=0101 and m1=1001 and m2=0101 then alarm=a;else alarmout1=c1;out2=c2;out3out1=k2;out2=1;out3out1=1;out2=k2;out3out1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1