数字系统设计与verilog HDL课程设计
设计题目:实用多功能数字钟
专 业:电子信息科学与技术 班 级:0313410 学 号:
姓 名:杨存智 指导老师:黄双林
摘要
本课程设计利用QuartusII软件Verilog?VHDL语言的基本运用设计一个多功能数字钟,经分析采用模块化设计方法,分别是顶层模块、alarm、alarm_time、counter_time、clk50mto1、led、switch、bitel、adder、sound_ddd、sound_ddd_du模块,再进行试验设计和软件仿真调试,分别实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能。?
单个模块调试达到预期目标,再将整体模块进行试验设计和软件仿真调试,已完全达到分块模式设计功能,并达到设计目标要求。 关键字:多功能数字钟、Verilog、模块、调试、仿真、功能
目录
1.课程设计的目的及任务 .............. 错误!未定义书签。
?课程设计的目的 .................................. 3 ?课程设计的任务与要求 ............................ 3 2.课程设计思路及其原理 .............................. 4 3.QuartusII软件的应用 .............................. 6
工程建立及存盘 ................................... 6 工程项目的编译 ................................... 7 时序仿真 ......................................... 7 4.分模块设计、调试、仿真与结果分析 .................. 8
?clk50mto1时钟分频模块 ........................... 8 ?adder加法器模块 ................................ 8 ?hexcounter16?进制计数器模块 ..................... 8 ?counter_time?计时模块 ........................... 9 ?alarm闹铃模块 ................................. 10 ?sound_ddd嘀嘀嘀闹铃声模块 ...................... 11 ?sound_ddd_du嘀嘀嘀—嘟声音模块 ................. 12 ?alarm_time闹钟时间设定模块 ..................... 12
?bitsel将输出解码成时分秒选择模块 ............... 13 ?switch去抖模块 ................................ 13 ?led译码显示模块 ............................... 14 ??clock顶层模块 ................................ 15 5.实验总结 ......................................... 16
5.1调试中遇到的问题及解决的方法 ................ 16 实验中积累的经验 ................................ 17 心得体会 ........................................ 17 6.参考文献? ........................................ 18
?课程设计的目的
通过课程设计的锻炼,要求学生掌握Verilog HDL语言的一般设计方法,掌握Verilog HDL语言的基本运用,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,基于实践、源于实践,实践出真知,实践检验真理,培养学生的创新精神。?
掌握现代数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。
?课程设计的任务与要求
用Verilog HDL语言设计一个多功能的数字钟,具有下述功能:
(1)计时功能。包括时、分、秒的计时;? (2)定时与闹钟功能:能在设定的时间发出闹铃音; (3)校时功能。对时、分和秒能手动调整以校准时间;
(4)整点报时功能;每逢整点,产生“嘀嘀嘀嘀一嘟”四短一长的报时音。
2.课程设计思路及其原理
数字计时器要实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能,所有功能都基于计时功能。?因此首先需要获得具有精确振荡时间的脉振信号,以此作为计时电路的时序基础,实验中可以使用的振荡频率源为50MHZ,通过分频获得所需脉冲频率1Hz。得到1hz脉冲后,要产生计时模块,必须需要加法器来进行加法,因此需要一个全加器,此实验中设计一个八位全加器来满足要求。?
数字电路设计中,皆采用二进制加法,为实现实验中时分秒的最大功能,本实验中采用十六进制加法器,再进行BCD码进行转换来实现正常时钟显示。为产生秒位,设计一个模60计数器,利用加法器对1HZ的脉冲进行秒计数,产生秒位;为产生分位,通过秒位的进位产生分计数脉冲,分位也由模60计数器构成;为产生时位,用一个模24计数器对分位的进位脉冲进行计数。整个数字计时器的计数部分共包括六位:时十位、时个位、分十位、分个位、秒十位和秒个位。基本的计时模块完成之后,整点报时、清零、校时、LED显示、闹铃模块可以相互实现,其中,闹铃模块与计时模块的显示相互并行。?
清零功能是通过控制计数器清零端的电平高低来实现的。只需使清零开关按下时各计数器的清零端均可靠接入有效电平(本实验中是低电平),而清零开关断开时各清零端均接入无效电平即可。
保持功能是通过逻辑门控制秒计数器输入端的1Hz脉冲实现的。正常情况下,开关不影响脉冲输入即秒正常计数,当按下开关后,使脉冲无法进入计数端,从而实现计时保持功能。?
要进行闹钟功能,是否进行闹钟模块nowmode,当选择00表示即使模块,10闹钟模式,01手动调整模式。当选择闹铃模块之后,是否是整点报时闹铃还是闹钟闹铃,又需要设置一个选择模块alarmout,当00模式时不开启闹铃,01进行闹铃模式,10进行整点报时模块。整点报时是本实验中的sound_ddd_du模块(详见附录中程序清单),sound_ddd_du模块与计时模块有点类似,但整点报时模块中不要分时分秒计数,可直接利用1hz的分频计数至时位进位时的数值,开启ddd_du闹铃。
闹钟报时功能。在计时电路走到设定的时间时闹铃报时功能会被启动,通过与ddd产生电路进行逻辑组合,使得在达到闹铃时,发出ddd。
闹铃模块和校正模块中,需要选择闹铃调时Alarmode还是Checkmode校时模块,因此需要利用bitsel模块进行选择。
闹钟只设定时和分,基本模块Alarmode与正常计时电路里的校时校分电路相同。本实验中为节省按键,闹钟时间调节键复用正常调时的校时校分开关,为使设定闹铃与正常计时中调节时间按键互不影响,额外用一个闹钟使能键,按下该键后进入闹钟设定界面,此时校时校分开关用于调节闹钟时