ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:149.60KB ,
资源ID:9243016      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9243016.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EDA数字时钟课程设计.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

EDA数字时钟课程设计.docx

1、EDA数字时钟课程设计EDA课程设计报告书课题名称数字时钟姓 名 学 号 院 系 专 业 指导教师 一、 设计任务及要求:1、使学生掌握EDA开发工具QuartusII5.0的常用工具的使用。2、使学生掌握EDA设计流程及输入方法。3、使学生掌握的硬件描述语言VHDL的基本应用。4、使学生掌握原理图输入、波形图输入、VHDL文本输入等硬件设计方法。5、使学生掌握硬件测试的方法,验证实际设计电路的。6、使学生了解FPGA/CPLD工作原理及结构。指导教师签名: 年 月 日 二、指导教师评语:指导教师签名: 年 月 日 三、成绩验收盖章 年 月 日 数字时钟 一设计目的综合本学期所学知识设计数字时

2、钟,使用VHDL语言进行编程,掌握多位计数器相连的设计方法;掌握二十四进制,六十进制计数器的设计方法;掌握电子电路一般的设计方法,并了解电子产品的研制开发过程,基本掌握电子电路安装和调试的方法。培养独立分析问题,解决问题的能力。二设计的主要内容及方法1.用HDL语言编写时分秒计时器程序;2.编写顶层文件,用来对元件进行例化,以及对端口进行映射;3.编译、仿真并生成波形图;4.生成元件;三设计原理数字钟是一个将“时”“分”“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时;显示满刻度为23时59分59秒,另外具备校时功能和报时功能。因此,一个基本的数字钟电路主要由“时”“分”“秒”计数器

3、校时电路组成。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累加60秒发送一个“分脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计数器,可实现对一天24小时的累计。钟计数采用层次化设计,将设计任务分成若干个模块。规定每一模块的功能和各模块之间的接口。a.second(秒) 60进制BCD码计数;b.minute(分) 60进制BCD码计数;c.hour (时) 24进制BCD码计数;d.clock top 顶层设计;同时整个计数器有清零,调时,调分功能。端口引脚名称输入clk,reset,setmin,sethour;输出second-daout,minut

4、e-daout,hour-daout;四设计过程 SECOND模块:用来对秒进行计时,当记到计数器的低四位为1001时,若高三位不是101时,则秒计数器加7,目的是使计数值变为BCD码。若高三位是101时,则有一进位。当计数器的低四位不为1001时,计数器加1。SECOND模块给MINUTE的时钟由SETMINUTE和它本身记到60的进位两部分组成。SECOND模块源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport(clk,reset,setmin

5、: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)

6、;process(clk,reset,setmin)beginif(reset=1)then count=0000000; -对秒计时器清零elsif(clkevent and clk=1)then -当产生时钟上升沿是进行计数if(count(3 downto 0)=1001)then if(count16#60#)then if(count=1011001)then enmin_1=1;count=0000000;-当秒计数至59秒 产生分钟进位信号elsecount=count+7; -秒计数器加7,使计数值变为BCD码end if; else count=0000000; -对计数值清

7、零 end if;elsif(count16#60#)thencount=count+1; -当计数值少于60时 计数值加一enmin_1=0after 100 ns;elsecount=0000000; -计数值等于60时对计数值清零end if;end if;end process;end fun;SECOND生成的元件如图4.1: 图4.1MINUTE模块:用来对分进行计时,当记到计数器的低四位为1001时,若高三位不是101时,则分计数器加7,目的是使计数值变为BCD码。若高三位是101时,则有一进位。当计数器的低四位不为1001时,计数器加1。MINUTE模块的时钟由SETMIN和S

8、ECOND记到60的进位两部分组成。MINUTE模块源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute isport(clk,reset,clk1,sethour:in std_logic;-时钟信号、复位端口定义enhour:out std_logic; -时计数信号进位端daout:out std_logic_vector(6 downto 0) 分钟计数输出 );end entity minute;architecture fun of minute is

9、signal 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=1)then count=0000000; -对计数值复位elsif(clkevent and clk=1)then -当产生时钟上升沿是进行计数if(count(3 downto 0)=1001

10、)then if(count16#60#)thenif(count=1011001)then enhour_1=1;count=0000000; -当计数值为59时产生小时进位信号,-并清计数值elsecount=count+7;-若高三位不是101,则分计数器加7,使计数值变为BC码 end if; else count=0000000; end if;elsif(count16#60#)thencount=count+1; -当计数值小于60时 计数值加一enhour_1=0after 100 ns; -时钟中间信号延时100纳秒置零elsecount=0000000; -当计数值等于60

11、时 对计数清零end if;end if;end process;end fun;MINTUE生成元件如图4.2:图4.2HOUR模块:用来对时进行计数,当记到计数器的低四位为1001时,若高三位小于010时,则时计数器加7,目的是使计数值变为BCD码。当计数器的高三位小于010,低四位小于1001时,计数器加1;若当计数器记到0100100时,则有一进位。HOUR模块的时钟由SETHOUR和MINUTE记到60的进位两部分组成。HOUR模块源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.al

12、l;entity hour isport(clk,reset:in std_logic; -时钟信号、复位信号输入端 daout:out std_logic_vector(5 downto 0) -小时信号输出端);end entity hour;architecture fun of hour is signal count:std_logic_vector(5 downto 0); -信号变量定义begindaout=count; process(clk,reset)beginif(reset=1)thencount=000000; -当复位信号为“1”时,对计数清零elsif(clkev

13、ent and clk=1)then - 当产生时钟上升沿时进行计数操作if(count(3 downto 0)=1001)thenif(count16#23#)thencount=count+7; -当记到计数器的低四位为1001时,若高三位小于010时, -则时计数器加7,使计数值变为BCD码。else count=000000; -当计数等于24时 对计数清零 end if;elsif(count16#23#)thencount=count+1; -当计数值小于23时 对计数值进行加一操作 elsecountreset, clk=clk, setmin=setmin, enmin=enm

14、in_re, daout=second_daout); -秒端口关联u2:minute port map(clk=enmin_re, reset=reset, clk1=clk, sethour=sethour, enhour=enhour_re, daout=minute_daout); -分端口关联u3:hour port map(clk=enhour_re, reset=reset, daout=hour_daout); -时计数端口关联end a;生成电路元件图如图4.4:图4.4五仿真波形图计时仿真波形图如图5.1图5.1输入:CLK时钟脉冲,RESET复位信号,SETMIN分加1信

15、号,SETHOUR秒加1信号输出:SECOND_DAOUT秒输出,MINUTE_DAOUT分输出,HOUR_DAOUT时输出时序仿真:程序主要运用计数器完成,在时钟脉冲的作用下,完成时钟功能,由时序图可以看出每一个时钟脉冲上升沿秒加1,当接收到reset信号,即reset为高电平,所有计数为零,并重新计数,setmin和sethour可以完成调节时钟功能,都是高电平调节,每来一个脉冲,相应的时或分加1。六设计总结通过两周的单片机课程设计使我对单片机这门课程有了更加深入的了解,知道它是一门需要不断地实践才能真正掌握的课程。这次单片机课程设计不仅使我熟悉手机键盘的工作原理,工作过程和所需的相关器件

16、,而且增加对单片机编程方法,编程步骤,相应的操作流程和软件操作等的熟悉度。更重要的是使我在设计的过程中积累对数字电路简单系统的实际制作经验,培养独立设计电路系统的专业素养,也深刻认识到其他相关课程之间的联系对于我们电子信息工程专业的学生重要性。只有认真扎实的学好相应的基础课程才能在以后的学习工作中解决更加复杂困难的问题。参考文献1 彭伟,单片机C语言程序设计实训100例.北京航空航天大学出版社.2010.5.1.2 楼然苗,51系列单片机设计实例.北京航空航天出版社.2003.3:100-115.3 唐俊翟,单片机原理与应用.冶金工业出版社.2003.9:255-258.4 刘瑞新,单片机原理及应用教程.机械工业出版社,2003.7:56-89.5 吴国经,单片机应用技术.中国电力出版社,2004.1:89-103.

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2