基于VHDL简易数字钟设计

上传人:夏** 文档编号:497366687 上传时间:2023-11-03 格式:DOCX 页数:39 大小:293.19KB
返回 下载 相关 举报
基于VHDL简易数字钟设计_第1页
第1页 / 共39页
基于VHDL简易数字钟设计_第2页
第2页 / 共39页
基于VHDL简易数字钟设计_第3页
第3页 / 共39页
基于VHDL简易数字钟设计_第4页
第4页 / 共39页
基于VHDL简易数字钟设计_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《基于VHDL简易数字钟设计》由会员分享,可在线阅读,更多相关《基于VHDL简易数字钟设计(39页珍藏版)》请在金锄头文库上搜索。

1、课 程 设 计 报 告设计题目:基于VHDL语言的简易数字钟设计摘 要随着电子设计自动化技术(EDA)的进步,数字电路在实际生活当中已经占据了重要的位置。在EDA技术中,最为瞩目的是以现代电子技术为特征的逻辑设计仿真测试技术。该技术的出现,使电子系统设计发生了质的变化。设计速度快、体积小、重量轻、功耗小的集成电路已成为趋势。用VHDL 语言开发的数字电路,大大简化了对工控电路的设计并且减低了成本。本文介绍了利用VHDL硬件描述语言设计一款多功能数字钟的方法。可以实现显示、预置时分秒,年月日(可以准确显示每月天数,包括对闰年的计算);秒表;整点报时的功能。利用6个7段数码管显示时分秒或年月日。在

2、Quartus II 开发环境下编译仿真了设计的程序。仿真结果表明,该设计方法切实可行,具有一定的借鉴性。关键词: EDA,VHDL,数字钟,Quartus II目 录摘要 I一、课程设计目的1二、课程设计内容及要求1 2.1 设计内容12.2 设计要求12.3 发挥部分1三、VHDL程序设计1 3.1 整体介绍 13.2 时钟模块 23.3 日期模块23.4 整点报时模块33.5 秒表模块4四、仿真与分析5五、器件编程下载及设计结果5六、课程设计总结 5七、参考文献6八、附录7一、课程设计目的掌握利用可编程逻辑器件和EDA设计工具进行电子系统设计的方法二、课程设计内容及要求2.1 设计内容用

3、VHDL语言实现数字钟的设计,要求设计实现一个具有带预置数的数字钟,具有显示年月日时分秒的功能。2.2 设计要求用6个数码管显示时分秒,set按钮产生第一个脉冲时,显示切换年月日,第2个脉冲到来时可预置年份,第3个脉冲到来时可预置月份,依次第4、5、6、7个脉冲到来时分别可预置日期、时、分、秒,第 8个脉冲到来后预置结束,正常工作,显示的是时分秒。Up为高电平时,upclk有脉冲到达时,预置位加1.否则减1.2.3 发挥部分本设计除满足基本要求外,还实现了秒表及整点报时的功能。三、VHDL程序设计3.1 整体介绍本设计采用VHDL中元件例化的思想,将数字钟模块化如图1所示图 1 本设计顶层实体

4、有6个输入端口,25(6*4+1)个输出端口:输入端口setpin用来切换工作状态、Sset和Srst用来设置秒表、f1000是1000Hz的方波信号,用来分频出所用的时钟信号、upclk和up用来预置数,upclk产生脉冲,up设置增减。输出端口alertt用来输出整点报时信号、其余6组输出端口送进7段数码管显示数字。顶层实体下划分成7大模块,分别是second_wave时钟模块、h_m_s_time时分秒模块、date日期模块、month_year月,年模块、LED_dispLED显示模块、alert整点报时模块、second_clock秒表模块。本文选取其中重点的部分作介绍。3.2 时钟

5、模块PROCESS(f1000,cnt)BEGINIF(f1000EVENT AND f1000=1)THENIF(cnt=111110011)THENcnt=000000000;second_wave=NOT second_wave; ELSE cnt=cnt+1;END IF;END IF;END PROCESS;PROCESS(f1000,Scnt)BEGINIF(f1000EVENT AND f1000=1)THENIF(Scnt=0100)THENScnt=0000;Ssecond_wave=NOT Ssecond_wave;ELSE Scnt=Scnt+1;END IF;END I

6、F;END PROCESS;cnt为计数器,当cnt=111110011(十进制499)时,在下一个时钟到来后cnt清零并取反,相当于把1000Hz的时钟1000分频成了数字钟需要的1Hz的时钟信号。Scnt同理,将1000Hz的时钟10分频成了秒表的百分秒位所需的100hz的时钟信号。3.3 日期模块IF(tempy1=0AND tempy0=00)OR(tempy1=1AND tempy0=10)THENIF(date0=1001AND date1=0010)THENov=1;ELSE ov=0;END IF;ELSIF(date0=1000AND date1=0010)THENov=1;

7、ELSE ov=0;END IF;本模块重点介绍闰年的算法(tempy1=0AND tempy0=00)OR(tempy1=1AND tempy0=10)tempy1是年高位bcd码的最低位,tempy0是年低位bcd码的低两位,通过列表我们可以发现满足上述代码的年份为闰年,如表1年高位bcd码年高位十进制数年低位bcd码年低位十进制数0000000000001020100401004100080110610008闰年:00、04、08、20、24、28、40、44、48、60、64、68、80、84、8800011001020011301106010150111710019闰年:12、16、

8、32、36、52、56、72、76、92、96表13.4 整点报时模块 IF(clkEVENT AND clk=1)THENIF(lock/=000 AND lock/=001)THENov=0; ELSIF(sec0=0000AND sec1=0000AND min0=0000AND min1=0000)THENov=1;ELSIF(sec0=1001AND sec1=0000AND min0=0000AND min1=0000)THENov=0;END IF;END IF;当lock不在000和001状态,即数字钟工作在预置状态的时候,输出永远为0,整点报时模块不应在预置时间的状态下工作,

9、当其工作在正常及时的状态下时,每有一个时钟上升沿到来时,检测一次秒和分的状态,此代码设置的为分秒均为00的时候,输出变成1,分位是00秒位为10的时候,输出变回0。即从0分0秒开始报时,至0分10秒结束。也就是说本设计可以通过设置报时起始时间的方式使其在任意时段报时任意时长。3.5 秒表模块PROCESS(TSclk,Slock,Sclk)BEGINIF(Slock=10)THENTSclk=Sclk;ELSETSclk=0;END IF;END PROCESS;PROCESS(Sclk,Srst,TSclk)BEGINIF (Srst=1)THENSmsec0=0000;Smsec1=000

10、0;Ssec0=0000;Ssec1=0000;Smin0=0000;Smin1=0000;ELSIF(TSclkEVENT AND TSclk=1)THENadd_year(TSms0,TSms1,Smsec0,Smsec1);IF(Smsec0=1001 AND Smsec1=1001)THENaddsec_addmin(TSs0,TSs1,Ssec0,Ssec1);END IF;IF(Smsec0=1001AND Smsec1=1001 AND Ssec0=1001AND Ssec1=0101)THENaddsec_addmin(TSm0,TSm1,Smin0,Smin1);END IF

11、;IF(Smsec0=1001AND Smsec1=1001 AND Ssec0=1001AND Ssec1=0101AND Smin0=1001AND Smin1=0101)THENSmsec0=0000;Smsec1=0000;Ssec0=0000;Ssec1=0000;Smin0=0000;Smin1=0000;END IF;END IF;END PROCESS;除此段代码外还需要在LED模块添加一段代码 IF (Slock/=00)THENa0=Smsec0;a1=Smsec1;b0=Ssec0;b1=Ssec1;c0=Smin0;c1=Smin1;ELSESlock被设置成2位共4种

12、状态来设置秒表的状态,每按下Sset键时Slock则+1,四种状态分别为 00 秒表关闭不显示,01 显示秒表界面,10 秒表开始工作,11 秒表暂停。我们可以通过设置只要Slock不为00,则LED模块显示秒表(所以Slock的级别要高于lock的级别,先判断Slock的状态,再判断lock的状态);只有当Slock为10时,秒表模块才接入100Hz的时钟的方式,来完成这4种状态的设置。其余部分则与时分秒计时的代码类似,值得一提的是我们发现百分秒的加法过程与work库中年加法完全一致,从而可以直接使用add_year这个过程。四、仿真与分析首先要说的是本设计使用的晶振频率为1000Hz,所以

13、时钟要1000分频后才能使用,而在电脑上仿真则不能1000分频,因为这意味着时钟每变化1000次才会有一次变化,这对计算机配置有极高的要求,也是没有必要的,所以在仿真前我们需要稍稍修改代码,注释掉1000分频的部分。从图2、图3中我们可以看出实现了加减预置功能以及整点报时功能。图4可以看出实现了秒表显示,开始暂停的功能(图2、3、4见附录)五、器件编程下载及设计结果由于实验室没有足够的开发板,我们无法进行这一步骤。六、课程设计总结 这次课程设计花费了大量的精力,好在是努力没有白费,通过了仿真测试,虽然书上有例程,但也是第一次手打700行的代码,第一次查错花费了好几个小时,但在边读代码边查错的过程中,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号