数字钟EDA课程设计_第1页
数字钟EDA课程设计_第2页
数字钟EDA课程设计_第3页
数字钟EDA课程设计_第4页
数字钟EDA课程设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、武汉理工大学电子科学与技术专业课程设计课程设计说明书-课程设计任务书 学生姓名: 专业班级: 指导教师: 李成军 工作单位: 信息工程学院 题 目: 数字钟 设计目的:1、掌握在quartus软件的使用方法,并能熟练的在quartus环境中运用vhdl语言完成一些简单程序的设计;2、掌握数字钟的主要功能与在fpga中的实现方法。 要求完成的主要任务: 1、课程设计工作量:1周。2、技术要求:(1)设计一个6位led动态扫描显示的数字钟,根据一个控制键能选择显示时、分、秒或年、月、日;(2)通过拨码开关可以进行时、分、年、月、日的调整,可以实现翻屏;3、查阅至少5篇参考文献。按武汉理工大学课程设

2、计工作规范要求撰写设计报告书。全文用a4纸打印,图纸应符合绘图规范。时间安排:1、 2012 年 6 月 11日集中,作课设具体实施计划与课程设计报告格式的要求说明。2、 2012 年 6 月 12日,查阅相关资料,学习电路的工作原理。2、 2012 年 6 月 12 日 至 2012 年 6 月 15 日,方案选择和电路设计。2、 2012 年 6 月 20 日 至 2012 年 6 月 21 日,电路调试和设计说明书撰写。3、 2011 年 6 月 22日上交课程设计成果及报告,同时进行答辩。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日ii 武汉理工大学eda课程设计说

3、明书目 录摘 要iabstractii1 绪论12 设计内容及要求12.1设计目的及主要任务12.1.1设计目的12.1.2 设计任务及要求12.2设计思想13 数字钟的设计23.1 设计原理与方法23.2 单元模块设计23.2.1时间走动与修改23.2.2消抖电路33.3.3 数据选择33.2.4 数码管34 电路仿真与硬件调试34.1 电路仿真34.2 硬件调试65 总结与心得体会6参考文献8附录 实验所用程序9本科生课程设计成绩评定表17摘 要伴随着计算机、集成电路和电子设计技术的发展,eda技术在过去的几十年里取得了巨大的进步。eda技术使得设计者的工作仅限于利用软件的方式,即利用硬件

4、描述语言和eda软件quartus 等即可完成对系统硬件功能的实现。eda技术研究的对象是电子设计的全过程,有上到下依次包括了系统级、电路级和物理级三个层次。本设计是通过quartus 软件、vhdl语言编程及fpga芯片来实现常见的数字钟,该数字钟可以根据一个控制键能选择显示时、分、秒或年、月、日,并且可以显示翻屏。本设计中用6位led数码管显示时、分和秒,而用8位led数码管显示年、月、日,同时可以通过拨码开关调整时、分、年、月和日及对秒进行清零。关键词:quartus ;vhdl;数字钟abstractalong with computers, integrated circuits a

5、nd electronic design technology development, eda technology in the past few decades has made tremendous progress. eda technology allows designers to work is limited to the use of software methods, namely, the use of hardware description languages and eda software, quartus and other functions to comp

6、lete the implementation of the system hardware. eda technology research object is the whole process of electronic design, there are up to the next turn, including system-level, circuit level and physical level three levels.the design is by quartus software, vhdl language programming and cpld chip to

7、 achieve a common digital clock, the digital clock according to a control keys can choose to display hours, minutes and seconds or year, month, day, and can display scroll off. this design using 6 led digital tube display hours, minutes and seconds, but with the 8-bit led digital tube display year,

8、month, day, at the same time can be adjusted through the dip switches hour, minute, year, month and day, and on the seconds to clear.keywords:quartus ;vhdl;digital clockii武汉理工大学eda课程设计说明书1 绪论随着数字电子技术的飞速发展,信息化得到了有力的推动和促进,从与普通百姓生活息息相关的手机、计算机、数字电视,到国家安定社会和谐的军用设备、航天技术,都采用了数字电子技术,它的应用已经渗透到人们的生活中的方方面面。现代电

9、子设计技术的核心已经逐步转向基于计算机的电子设计自动化技术,即eda(electronic design automation)1。随着eda技术的逐渐成熟,也包括了其他的印刷版电子系统的设计。本设计是通过对数字钟重要组成部分的vhdl源程序编程来实现的。在本设计中数字钟的主要组成部分有拨码开关模块、计数器模块、分频计模块、七段译码器模块和数据选择器模块。通过按键可以实现选择显示时、分、秒或年、月、日,同时可以显示翻屏,还可以通过拨码开关调整时、分、年、月和日及对秒进行清零。2 设计内容及要求2.1设计目的及主要任务2.1.1设计目的(1)掌握在quartus软件的使用方法,并能熟练的在qua

10、rtus环境中运用vhdl语言完成一些简单程序的设计;(2)掌握数字钟的主要功能与在fpga中的实现方法。2.1.2 设计任务及要求根据已知条件,完成基于quartus 的数字钟的设计、连接与仿真。该数字钟须符合以下要求: (1)设计一个6位led动态扫描显示的数字钟,根据一个控制键能选择显示时、分、秒或年、月、日;(2)通过拨码开关可以进行时、分、年、月、日的调整,可以实现翻屏。2.2设计思想本次设计中根据数字钟的工作原理首先进行计数器的设计,其中包括分秒60进制计数器、时24进制计数器、日30进制计数器、月12进制计数器和年10进制计数器,然后根据要求设置一数据选择器并且通过控制键实现选择

11、显示时、分、秒或年、月、日,最后再设置3个拨码开关调整数字钟,并且通过一个七段译码器和8进制计数器控制七段数码管实现显示。3 数字钟的设计3.1 设计原理与方法根据本设计的要求,该数字钟的程序设计由上至下分为以下几个部分:数码管的编码、十位个位的函数分离、分频、时间走动及修改、按键扫描与消抖、蜂鸣器报警、秒分时个位十位的分离、数据选择和翻屏。其中计数为本数字钟的重要组成部分,可以分为是数字钟的主要模块,由秒计数模块、分计数模块、时计数模块。其中秒、分、时计数模块之间通过进位进行连接,秒每计数60次产生一次进位至分,分每计数60次产生一次进位至时,而秒60进制计数器的时钟信号由分频器产生的1hz

12、脉冲提供。分频模块可以产生1hz、200hz和1khz共3中脉冲信号,200hz脉冲信号用来提供消抖电路的时钟信号,通过消抖模块和一个置数端可以对秒进行清零,对分、时进行调整。通过数据选择模块可以对各个计数模块产生的数字逐一显示,并显示翻屏。通过七段译码模块可以产生数码管的段选码,实现数码管的动态显示。23.2 单元模块设计3.2.1 时间走动与修改其中计时模块有3部分构成:秒计时器、分计时器、时计时器。 1) 秒计时器(second)是由一个60进制的计数器构成的,具有清0功能。其中cs为高电平时,秒计时器清0;cs为低电平时,秒计数器开始计数。当秒计数器记满59后,下一个时钟脉冲来临时产生

13、一个进位信号,作为下一级的时钟输入信号。 2)分计时器(minute)是由一个60进制的计数器构成的,具有清零和计数功能。当cm为高电平时,分计数器根据秒计数器的输入信号进行计数,当记满59后下一个输入信号脉冲来临时产生一个进位信号,作为下一级的时钟输入信号。当cm为低电平时,分计数器根据时钟脉冲进行计数,记满59后下一个脉冲来临时清零。3)时计时器(hour)是由一个24进制的计数器构成的,具有清0和计数功能。当ch为高电平时,时计数器根据分计数器的输入信号进行计数,当记满59后下一个输入信号脉冲来临时产生一个进位信号,作为下一级的时钟输入信号。当cm为低电平时,分计数器根据时钟脉冲进行计数

14、,记满59后下一个脉冲来临时清零。 3.2.2 消抖电路通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号并不稳定,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均有一连串的抖动,抖动的时间的长短有按键的机械特性决定,一般为5ms10ms。3所以在设计程序时应考虑到抖动的消除。消抖模块的vhdl程序如附录所示。3.2.3 数据选择根据设计要求,需要将时、分、秒和年、月、日分别同时显示,同时为了实现翻屏,需要将该模块加入一个选择控制端。其程序如附录所示。 3.2.4 数码管显示由于本设计需要用数码管进行显示,需要加

15、入一个七段译码程序实现转换,该模块的程序如附录所示。4电路仿真与硬件调试4.1 电路仿真由于数字钟设计中仅仅对程序的观察不容易发现一些错误,所以在将程序烧录到芯片之前需要进行仿真,这样对程序的功能有个更直观的显示,更便于检查错误,从而对程序进行修改。5首先建立波形文件:选择 filenew,在new窗中选中“other file”标签。在出现的屏幕中选择“vector waveform file”项出现一新的操作界面,如图1。在出现的新屏幕中,双击“name”下方的空白处,弹出“insert nod or bus”对话框,单击该对话框的“node finder”。在屏幕中的 filter 中选

16、择 pins,单击“list”。而后,单击“”,所有输入/输出都被拷贝到右边的一侧,这些正是我们希望的各个引脚,如图2所示。也可以只选其中的的一部分,根据实际情况决定。然后单击屏幕右上脚的 “ok”。在出现的小屏幕上单击“ok”,这样我们就可以设置一系列仿真参数了,如图3所示。 图1 新建仿真菜单图2 选择结点图3 仿真准备设定仿真时间宽度。选择 edit end time选项,在end time选择窗中选择适当的仿真时间域,以便有足够长的观察时间。波形文件存盘。选择filesave as 选项,直接存盘即可。运行仿真器。在菜单中选择项,直到出现,仿真结束。最终得到仿真波形如图4所示。图4 仿

17、真结果由上述波形可以清楚的看到:当cs为低电平时,秒计时器开始计时,当到达59秒后,秒计时器sec又从0开始计时,同时分钟min加了1,为00分;当cs为高电平时,秒计时器清零,对其他无影响。当cm为高电平时,分计时器开始计时,当到达59分后,分计时器min又从0开始计时,同时小时hour加了1,为24时。当cm为低电平时,分计时器依靠秒计时器的输入脉冲进行计数。当ch为高电平时,时计时器开始计时,当到达23时后,时计时器hour又从0开始计时;当ch为低电平时,分计时器依靠分计时器的输入脉冲进行计数。4.2 硬件调试1.首先将下载线把计算机的打印机口与目标板(如开发板或实验板)连接好,打开电

18、源,选择模式7。2.打开编辑窗和配置文件。选择,弹出一个编辑窗。在mode栏中选择jtag,并在选项下的小方框打勾。注意核对下载文件路径与文件名。如果文件没有出现或者出错,单击左add file侧按钮,手动选择配置文件 clocksof。 3.最后单击下载标符start,即进入对目标器件 fpga 的配置下载操作。当 progress 显示100%,以及在底部的处理栏中出现 configuration succeeded 时,表示编程成功,如图所示。注意,如果必要时,可再次单击 start ,直至编程成功。4经过调试,仿真结果正确后,可将程序下载到芯片中。连接硬件系统后,通上电源,经quart

19、us中的programmer菜单,调出编程器窗口。一切就绪后,按下编程器窗口中的“start”按钮,设计的内容就开始下载到fpga芯片中。通过实验箱上的拨码开关和按键开关可以逐一对数字钟的功能进行验证。通过数码管显示可知本设计可以实现基本的时、分、秒的计数与清零,通过按键和拨码开关的配合可以实现时、分、秒的校准以及年、月、日显示翻屏。故本设计完全符合设计要求。5 总结与心得体会通过这次课设,我对在quartus环境中运用vhdl语言设计方法构建具有一定逻辑功能的模块的应用更加熟练,对quartus的应用和对vhdl语言的使用有了进一步的加强。本次设计的核心内容就是quartus环境中,利用vh

20、dl语言设计出基于fpga的数字钟。此次eda课程设计对我们的总体电路的设计的要求更严格,需要通过翻阅复习以前学过的知识确立了实验总体设计方案,然后逐步细化进行各模块的设计;其次,在电路仿真的过程中总会出现一些问题,需要我们细心解决,所以这两周下来,我对电路故障的排查能力有了很大的提高;再次,通过此次课程设计,我对设计所用到的软件有了更加深刻地了解,这对我们以后的工作和学习的帮助都很有用处。当然,经过了课程设计,我也发现了自己的很多不足。但是通过自己的动手动脑,既增加了知识,又给了我专业知识以及专业技能上的提升,我也会更加努力,认真学习,争取在以后的课程中做得更好!在这次课设中,我首先要感谢学

21、校给我们提供的机会,其次我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把设计做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。最后,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计上的难题。同时也感谢学院为我提供良好的做课程设计的环境。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。参考文献1 卢毅,赖杰. vhdl与数字电路设计. 科学出版社,2009.2 北京理工大学asic研究所.vhdl语言100例详解. 清华大学出版社,20

22、01.3 杨丽英.电路eda技术与应用. 清华大学出版社,2011.4 谢自美.电子线路设计(第二版).华中科技大学出版社,2000.5 赵世强.电子电路eda技术.西安电子科技大学出版社,2006.附录 实验所用程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;package my_package isfunction bcd_to_seg7(signal bcd:integer range 0 to 9) return std_log

23、ic_vector;procedure sec_min_hour(signal n:in integer range 0 to 59;signal shi,ge:out integer);end my_package;package body my_package isfunction bcd_to_seg7(signal bcd:integer range 0 to 9)return std_logic_vector isvariable seg7:std_logic_vector(7 downto 0);begincase bcd iswhen 0= seg7:=x3f;when 1= s

24、eg7:=x06;when 2= seg7:=x5b; when 3= seg7:=x4f;when 4= seg7:=x66; when 5= seg7:=x6d; when 6= seg7:=x7d;when 7= seg7:=x07; when 8= seg7:=x7f;when 9=seg7:=x6f;when others=end case;return seg7;end bcd_to_seg7;procedure sec_min_hour(signal n:in integer range 0 to 59;signal shi,ge:out integer)isbegincase

25、n iswhen 0|1|2|3|4|5|6|7|8|9=shishishishishishinull;end case;case n iswhen 0|10|20|30|40|50=gegegegegegegegegegenull;end case;end sec_min_hour;end my_package;-main.vhd -library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;use work.my_package.all;entit

26、y digitalclock isport(clk:in std_logic; cs:in std_logic; cm:in std_logic; ch:in std_logic; key_sel:in std_logic; buzz:inout std_logic; wei_sel:out std_logic_vector(2 downto 0); data_out:out std_logic_vector(7 downto 0);end digitalclock;architecture behavior of digitalclock issignal sec:integer range

27、 0 to 59:=50;signal min:integer range 0 to 59:=59;signal hour:integer range 0 to 23:=0;signal sec_ge:integer range 0 to 9;signal min_ge:integer range 0 to 9;signal hour_ge:integer range 0 to 9;signal sec_shi:integer range 0 to 9;signal min_shi:integer range 0 to 9;signal hour_shi:integer range 0 to

28、9;signal clk_1:std_logic;signal clk_1000:std_logic;signal buzz_freque:integer;signal key_value:integer;signal cnt:integer range 0 to 7;-the scan frequencesignal h:std_logic;beginprocess(clk)-divider the clk to different hzvariable cnt1:integer range 0 to 5000;-9999variable cnt2:integer range 0 to 2;

29、variable cnt3:integer range 0 to 2500;-500beginif(clkevent and clk=1)thenif(cnt1=5000)thencnt1:=0;clk_1000=not clk_1000;-1000hz扫描按键if(cnt2=2)thencnt2:=0;if(cnt=7)thencnt=0;elsecnt=cnt+1;end if;if(cnt3=800)thencnt3:=0;clk_1=not clk_1;elsecnt3:=cnt3+1;end if;elsecnt2:=cnt2+1;end if;elsecnt1:=cnt1+1;en

30、d if;end if;end process;process(clk_1,cs,cm,ch)variable delay:integer range 0 to 10;beginif(clk_1event and clk_1=1)thenif(key_value=3)thensec=0;elsif(key_value=2)thenif(min=59)thenmin=0;elsemin=min+1;end if;elsif(key_value=1)thenif(hour=23)thenhour=0;elsehour=hour+1;end if;elseif(sec=59)thensec=0;if(min=59)thenmin=0;if(hour=23)thenhour=0;elsehour=hour+1;end if;elsemin=min+1;end if;elsesecif(delay

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论