资源描述
通信工程专业课程设计任务书院(系)电 信 工 程 系 专业班级通 信 工 程 专 业 071班学生XX 王飞 一、课程设计题目数字钟的设计二、课程设计工作自 2010 年 3 月 1 日 起至 2010 年 3 月 19 日止三、课程设计进行地点:电 信 工 程 系 实 验 室 四、课程设计的内容要求: 设计一个数字时钟,要求显示时(2位),分(2位),秒(2位),具体要求是:具有时分秒计数显示功能,以24小时循环计时;数码管动态显示时,分,秒;具有清零,调节小时,分钟,以及整点报时 指 导 教 师系(教 研 室) 通 信 工 程 教 研 室 接受任务开始执行日期2010年3月1日学生签名基于VHDL的数字钟的设计与分析魏丽娟(XX理工学院电信工程系通信071班,XX XX 723003)指导教师:魏瑞摘要随着基于CPLD的EDA技术的发展和应用领域的扩大与深入,技术在电子信息,通信,自动控制用计算机等领域的重要性日益突出。作为一个学习通信工程专业的学生,我们必须不断的了解更多的新产品信息,这就更加要求我们对EDA有个全面认识。本程序设计的是基于VHDL的数字时钟,采用EDA作为开发工具,VHDL语言为硬件描述语言,QUARTUSII作为程序的运行平台,所开发的程序经过调试运行,波形仿真验证,初步实现了设计目标。本程序使用的硬件描述语言VHDL,可以大大降低了硬件数字系统设计的入门级别,让人感觉就是C语言的亲近。通过本次的课程设计,不但使同学们进一步了解EDA技术在实际中的应用,也使同学们对EDA的综合应用有了更深一步的应用,这次的课程设计给同学们以后的学习与工作中有了一个全面的指导作用.关 键 词技术,语言,数字时钟,报警器,译码显示,时间调节中图分类号TN702 文献标志码ADesign of cymometer displayed by LCDWei lijuan(Grade07,Class1,Major of munication Engineering,Dept. of E.I.ofShaanxiUniversity of Technology, Hanzhong 723003,China)Tutor:WeiRuiAbstractWith the CPLD-based EDA technology and expansion of application fields and in-depth, EDA technology in electronic information, munication, automatic control areas such as the importance of puter is increasingly prominent. As a learning munications engineering students, we must continually learn more about new product information, it is even more requires us to have a full understanding of the EDA. The program design is based on VHDL digital clock, using EDA as a development tool, VHDL language for hardware description language, QUARTUSII as a program running platform, developed by the program to run through the debugging, waveform simulation, preliminary design goals achieved. This program uses the hardware description language VHDL, can greatly reduce the hardware of the entry-level digital system design, people feel that is closer to C language. Through this curriculum design, not only the students a better understanding of EDA technology in practical application, but also so that students have a prehensive application of EDA deeper applications, this course designed for students to study and work after China has a prehensive guide.Key wordsEDA TechnologyVHDL languageDigital ClockAlarmDecode displayTime DebuggingCLC TN702 33 / 33目 录I摘要III IIAstract.IV1.绪论.21.1课题背景31.2系统总体设计42.单元模块的设计.72.1秒计数器的模块.72.2分计数器的模块.82.3时计数器的模块.102.4整点报时器模块.122.5调时调分模块.152.6LED显示译码器模块.173.顶层模块设计.194.结论27参考文献.26附录.301 绪 论2 数字钟是一种用数字电路实现时,分,秒计时的装置,与机械性时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。数字中从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。因此,我们此次设计与制作数字钟就是为了了解数字钟的原理,从而学会制作数字钟,而且通过数字钟的制作进一步了解各种在制作中用到的中小规模集成电路的作用及实现方法。且由于数字钟包括组合逻辑电路和时序电路,通过它们可以进一步学习与掌握各种组合逻辑电路和时序电路的原理与使用方法。1.1 课题背景EDA技术的初级培训主要帮助同学们尽快掌握语言的开发流程和设计方法,以工程实践为例,循序渐进的学习的集成开发环境,开发流程,以及硬件电路设计等知识。每次课程都匹配有相关实践训练,每个实践题目都可以通过编程实现编译仿真,再下载到以为主芯片的实验箱上进行验证,学生们可以更好的理解并消化课堂知识,工程实践水平会得到迅速提高。下面我们来具体介绍一下EDA技术的有关内容.是电子设计自动化(lcctronic Design Automation)的缩写,是90年代初从CAD(计算机辅助设备),CAM(计算机辅助制造),CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具,根据硬件描述语言HDL完成的设计文件,自动的完成逻辑编译,化简,分割,综合及优化,布局布线,仿真以及对特定目标芯片的适配编译和编程下载等工作,典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器,综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL原理图或状态图形描述,针对给定的硬件系统组件,进行编译,优化,转换和综合,最终获得我们欲将实现的功能的描述文件。综合器在工作前,必须给定要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来,也就是说综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换成低级的,可与目标器件CPLD相映射的网表文件。适配器的功能是将由综合器产生的网表文件配置与指定的目标器件中,产生最终的下载文件。适配器所选的目标器件(CPLD芯片)必须包含于在综合器中已指定的目标器件系列。硬件描述语言HDL是相对于一般的计算机软件语言,如:C,PASCAL而言的HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能,电力结构和连接方式,设计者可利用HDL程序来描述所希望的电子系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制和CPLD内部结构,并实现相应功能的门级或更底层的结构网表文件或下载文件。硬件描述语言VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language。它主要用于描述数字系统的结构,行为,功能和接口。除了还有很多硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似与一般的高级计算机语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。其优点是:与其它硬件描述语言相比,VHDL具有更强的行为描述能力,从而解决了他成为系统设计领域最佳的硬件描述语言,强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证;VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能和可行性,及时可对设计进行仿真模拟;VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能,符合市场需求的大规模系统高效,高速的完成必须有甚至多个代发组共同并行工作才能实现;对于VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表;VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。.系统总体设计如下图所示为EPM7000S芯片内的系统方块图. 该系统框图由八个模块组成,分别为:秒、分、时计数模块,分隔符显示模块,整点、整天报时模块,LED动态显示扫描模块,LED显示译码器模块组成。其工作原理是:基准脉冲输入信号同时加到秒、分、时、分隔符的脉冲输入端,采用并行计数的方式,秒的进位接到分的使能端上,秒的使能借到分隔符的使能上,分得接到时的使能端上,完成秒、分、时和分隔符的循环计数。整点报时是根据分的A、B输出同时为0时,整点报时模块输出高电平控制报时。整天报时是根据时、分得输出都为0时而输出高电平控制整天报时的。LED显示扫描模块根据输入的扫描信号CKDSP轮流选通秒、分、时、分隔符的8位八段数码管,LED显示译码器完成计数器输出的BCD的译码。系统设计方案方案一:数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。总体方案设计如下图所示。方案二:鉴于我们通信班级已经学习了几种工具语言,我们也可以通过软件编程(例如通过语言或者EDA编程语句)来实现本次要的数字时钟。方案比较:对比方案一与方案二,我们组决定用第二种方案来实现本次的数字时钟,原因有:1,EDA语言我们去年实验经常使用,比较熟悉,通过编程语言实现对数字钟的控制相对硬件来说比较容易,更何况其连线简单易于校验。2,硬件实现起来所用的芯片比较多,连线过于麻烦,而且出现错误后不易检查。2 单元模块的设计2.1.秒计数器模块LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second ISPORT(clk,reset,setmin:IN STD_LOGIC;enmin:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0);END entity second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 downto 0);SIGNAL enmin_1,enmin_2:STD_LOGIC;BEGINdaout=count;enmin_2=(setmin and clk);enmin=(enmin_1 or enmin_2);process(clk,reset,setmin)beginif(reset=0) then count=0000000;elsif(clkevent and clk=1)thenif(count(3 downto 0)=1001)thenif(count16#60#)thenif(count=1011001)thenenmin_1=1;count=0000000;elsecount=count+7;end if;elsecount=0000000;end if;elsif(count16#60#)thencount=count+1;enmin_1=0 after 100 ns;elseend if;end if;end process;end fun ;编译过程:仿真图如下:2.2分计数器模块LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY minute ISPORT(clk,clk1,reset,sethour:IN STD_LOGIC;enhour:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0);END entity minute;ARCHITECTURE fun OF minute ISSIGNAL count:STD_LOGIC_VECTOR(6 downto 0);SIGNAL enhour_1,enhour_2:STD_LOGIC;BEGINdaout=count;enhour_2=(sethour and clk1);enhour=(enhour_1 or enhour_2);process(clk,reset,sethour)beginif(reset=0)thencount=0000000;elsif(clkevent and clk=1)thenif(count(3 downto 0)=1001)thenif(count16#60#)thenif(count=1011001)thenenhour_1=1;count=0000000;ELSEcount=count+7;end if;elsecount=0000000;end if;elsif(count16#60#)thencount=count+1;enhour_1=0after 100 ns;elsecount=0000000;end if;end if;end process;END fun;编译过程:仿真图如下:2.3.时计数器模块LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY hour ISPORT(clk,reset:IN STD_LOGIC;daout:out std_logic_vector(5 downto 0);END entity hour;ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_VECTOR(5 downto 0);BEGINdaout=count;process(clk,reset)beginif(reset=0)thencount=000000;elsif(clkevent and clk=1)thenif (count(3 downto 0)=1001)thenif(count=16#23#)thencount=count+7;elsecount=000000;end if;elsif(count16#23#)thencount=count+1;elsecount=000000;end if;end if;end process;END fun;编译过程:仿真图如下:2.4.整点报时器模块LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY alert ISPORT(clk:IN STD_LOGIC;dain:IN STD_LOGIC_VECTOR (6 DOWNTO 0);speak:OUT STD_LOGIC;lamp:OUT STD_LOGIC_VECTOR (2 DOWNTO 0);END alert;ARCHITECTURE fun OF alert ISsignal coun:std_logic_vector (1 downto 0);signal count1:std_logic_vector (1 downto 0);BEGINspeaker:process(clk)beginspeak=10)thencount1=00;elsecount1=count1+1;end if;end if;end if;end process speaker;lamper:process(clk)beginif(rising_edge(clk)thenif(coun=10)thenif(coun=00)thenlamp=001;elsif(coun=01)thenlamp=010;elsif(coun=10)thenlamp=100;end if;coun=coun+1;elsecoun=00;end if;end if;end process lamper;END fun;编译过程:仿真图如下:2.5调时调分模块LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY seltime ISPORT(clk1,reset:IN STD_LOGIC;sec,min:IN STD_LOGIC_VECTOR(6 downto 0);hour:in std_logic_vector(5 downto 0);daout:OUT STD_LOGIC_vector(3 downto 0);dp:OUT std_LOGIC;sel:out std_logic_vector(2 downto 0);END seltime;ARCHITECTURE fun OF seltime ISSIGNAL count:STD_LOGIC_vector(2 downto 0);BEGINsel=count;process(clk1,reset)beginif(reset=0)thencount=101)thencount=000;elsecountdaout=sec(3 downto 0);dpdaout(3)=0;daout(2 downto 0)=sec(6 downto 4);dpdaout=min(3 downto 0);dpdaout(3)=0;daout(2 downto 0)=min(6 downto 4);dpdaout=hour(3 downto 0);dpdaout(3 downto 2)=00;daout(1 downto 0)=hour(5 downto 4);dp=0;end case;end process;end fun;编译过程:仿真图如下:2.6.LED显示译码器模块LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY deled ISPORT(num:IN std_logic_vector(3 downto 0);led:OUT std_logic_vector(6 downto 0);end deled;ARCHITECTURE fun OF deled ISBEGINled=1111110when num=0000else0110000when num=0001else1101101when num=0010else1111001when num=0011else0110011when num=0100else1011011when num=0101else1011111when num=0110else1110000when num=0111else1111111when num=1000else1111011when num=1001else1110111when num=1010else0011111when num=1011else1001110when num=1100else0111101when num=1101else1001111when num=1110else1000111when num=1111;END fun;编译过程:仿真图如下:3顶层模块的设计library ieee;use ieee.std_logic_1164.all;entity clock_top isport(clk,reset,setmin,sethour,clkdsp:in std_logic;speaker:out std_logic;lamp:out std_logic_vector(2 downto 0);sel:out std_logic_vector(2 downto 0);a,b,c,d,e,f,g,dpout:out std_logic);end clock_top;architecture a of clock_top isPONENT secondPORT(clk,reset,setmin:IN STD_LOGIC;daout:out std_logic_vector(6 downto 0);enmin:OUT STD_LOGIC);END PONENT;PONENT minutePORT(clk,clk1,reset,sethour:IN STD_LOGIC;enhour:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0);END PONENT;PONENT hourPORT(clk,reset:IN STD_LOGIC;daout:out std_logic_vector(5 downto 0);END PONENT;PONENT alertPORT(clk:IN STD_LOGIC;dain:in std_logic_vector(6 downto 0);lamp:out std_logic_vector(2 downto 0);speak:OUT STD_LOGIC);END PONENT;PONENT seltimePORT(clk1,reset:IN STD_LOGIC;sec,min:in std_logic_vector(6 downto 0);hour:in std_logic_vector(5 downto 0);dp:out std_logic;daout:out std_logic_vector(3 downto 0);sel:OUT STD_LOGIC_vector(2 downto 0);END PONENT;PONENT deledPORT(num:IN STD_LOGIC_vector(3 downto 0);led:out std_logic_vector(6 downto 0);END PONENT;signal enmin_re,enhour_re:std_logic;signal second_daout,minute_daout:std_logic_vector(6 downto 0);signal hour_daout:std_logic_vector(5 downto 0);signal seltime_daout:std_logic_vector(3 downto 0);signal ledout:std_logic_vector(6 downto 0);begina=ledout(6);b=ledout(5);c=ledout(4);d=ledout(3);e=ledout(2);f=ledout(1);greset,clk=clk,setmin=setmin,enmin=enmin_re,daout=second_daout);u2:minute port map(clk=enmin_re,clk1=clk,reset=reset,sethour=sethour,enhour=enhour_re,daout=minute_daout);u3:hour port map(clk=enhour_re,reset=reset,daout=hour_daout);u4:alert port map(clk=clk,dain=minute_daout,speak=speaker,lamp=lamp);u5:seltime port map(clk1=clkdsp,reset=reset,sec=second_daout,min=minute_daout,hour=hour_daout,daout=seltime_daout,dp=dpout,sel=sel);u6:deled port map(num =seltime_daout,led=ledout);end a;编译过程:仿真图如下:4结论本次试验我们组做出的数字时钟能够正确的报警,显示时间,但是对于调时调分功能不能正确显示经过努力,简易电子时钟的设计基本上算是完成了,在整个设计中,我最大的体会就是:难!我们在本次的课程设计中,发现了很多问题,同时做起来也很难不顺手,看着简单的电路,要动手把它设计出来实非易事,主要原因是我们没有经常动手设计电路,这就要求我们在以后的学习中,应该注意到这一点,更重要的是我们要学会把从书本上学到的知识和实际电路联系起来,这不论对我们以后的学习还是就业,都会起到很大的促进和帮助,我相信,通过这次的课程设计,在下一阶段的学习中我们会更加努力,力争把这门课学好学精。同时通过本次课程设计,巩固了我们以前学过的专业知识,通过这次的程序设计,使我们对数字系统结构也有了更进一步的了解与认识,同时对数据库软件技术,语言等系列知识都有了一定的了解与认识。使用技术开发页面的能力也有了提高,也使我们把理论与实践从正真意义上结合了起来,考研了我们的动手能力,查阅相关资料的能力,还有组织材料的能力。通过此次实践,我们从中可以找出自己知识的不足与欠缺,以便我们在日后的学习中得以改进与提高。经过本次设计使我们对大学四年期间所学习到的知识得以进一步实践,这将对我们走出校园走向社会走向工作岗位奠定坚实的基础。致 谢本次课程设计软件是在侯宝生老师和魏瑞老师的共同指导下完成的,在此我们对他们表示非常的感谢。硬件连接上,我们班同学表现了非常好的团队合作精神,在此,我们对帮助过我们的同学表示感谢,同时也感谢XX理工学院给我们通信班级的学生提供这次实训的机会,感谢他们为我们提供环境良好设备齐全的实验室,使得这次数字钟的设计能够顺利的完成,在此我们表示隆重的感谢。参考文献1潘松,黄继业.VHDL设计初步 J.EDA技术实用教材,2009,5-29:70-82.2华成英,童诗白.集成运算放大电路J.模拟电子基础,2006,5-4:185-187.3阎石.时序逻辑电路 M.:高等教育,2008.4李建东,郭梯云,邬国扬.移动通信.第四版.M.XX:XX电子科技大学,2006.附 录1.系统设计方案2.秒计数器仿真图3.分计数器仿真图4.是计数器仿真图5.整点报时仿真图6.调时调分仿真图7.LED显示译码仿真图8.顶层模块仿真图9.硬件实现管脚如下所示:Clk chip :input pin =83En chip ;input pin =12Del7s00 chip :output pin =15Del7s01chip :output pin =16Del7s02chip :output pin =17Del7s03chip :output pin =18Del7s04chip :output pin =19Del7s05chip :output pin =20Del7s06chip :output pin =22Del7s10chip :output pin =24Del7s11chip :output pin =25Del7s12chip :output pin =27Del7s13chip :output pin =28Del7s14chip :output pin =29Del7s15chip :output pin =30Del7s16chip :output pin =31Del7s20chip :output pin =33Del7s21chip :output pin =34Del7s22chip :output pin =35Del7s23chip :output pin =36Del7s24chip :output pin =37Del7s25chip :output pin =39Del7s26chip :output pin =40Del7s30chip :output pin =41Del7s31chip :output pin =44Del7s32chip :output pin =45Del7s33chip :output pin =46Del7s34chip :output pin =48Del7s35chip :output pin =49Del7s36chip :output pin =50Del7s40chip :output pin =51Del7s41chip :output pin =52Del7s42chip :output pin =54Del7s43chip :output pin =55Del7s44chip :output pin =57Del7s45chip :output pin =58Del7s46chip :output pin =59Del7s50chip :output pin =60Del7s51chip :output pin =61Del7s52chip :output pin =63Del7s53chip :output pin =64Del7s54chip :output pin =65Del7s55:chip :output pin =67Del7s56chip :output pin =68qlkchip :output pin =6910.实物照片
展开阅读全文