verilogHDL课设(数字钟)_第1页
verilogHDL课设(数字钟)_第2页
verilogHDL课设(数字钟)_第3页
verilogHDL课设(数字钟)_第4页
verilogHDL课设(数字钟)_第5页
已阅读5页,还剩21页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1课程设计(报告)任务书(理工科类)、课程设计(报告)题目实时时钟电路的设计、课程设计(论文)工作内容一、课程设计目标硬件描述语言是一门技术性、应用性很强的学科,实验课教学是它的一个极为重要的环节。不论理论学习还是实际应用,都离不开实验课教学。如果不在切实认真地抓好学生的实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节、学习与应用脱节的局面。HDL项目设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及时序逻辑、组合逻辑、声光输出的,具有实用性、趣味性的小系统设计,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对分析、解决实际的数字电路问题进一步加深认识,为今后能够独立进行某些数字应用系统的开发设计工作打下一定的基础。二、课程设计任务与要求(1)设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式);(2)为了演示方便,应具有分钟、小时快进功能;(3)时、分、秒设置功能(选作)。三、课程设计考核2平时20;验收40;报告40摘要数字钟是人们日常生活中经常使用的计时工具,本次的课程设计是基于VERILOGHDL的多功能数字钟,完成时、分、秒的显示功能。设计利用VERILOGHDL语言自顶向下的设计理念,突出其作为硬件描述语言的良好的可读性、可移植性以及易于理解等优点。通过QUARTUSII50和MODELSIMSE61F软件完成仿真、综合。程序下载到FPGA芯片后,可用于实际的数字钟显示中。此次设计的逻辑结构主要由分频器、计数器和译码显示器三个模块构成。分频模块将50MHZ系统基准时钟分频产生两路时钟信号,一路是1HZ的数字钟计时工作频率,一路是数码管动态显示的扫描频率;计时模块对1HZ的时钟信号进行计时,分为时、分、秒三个部分;译码显示模块采用动态扫描的方式完成数码管的显示。最后通过主模块调用三个子模块函数完成整个设计。【关键词】硬件描述语言FPGA数字钟动态显示3ABSTRACTTHEDIGITALCLOCKISOFTENUSEDINPEOPLESDAILYLIFEOFTHECOURSE,THETIMINGTOOLDESIGNISBASEDONTHEMULTIFUNCTIONDIGITALCLOCKVERILOGHDL,COMPLETE,MINUTESANDSECONDSDISPLAYFUNCTIONDESIGNVERILOGHDLLANGUAGEUSINGTHETOPDOWNDESIGNCONCEPT,THEHARDWAREDESCRIPTIONLANGUAGEASTHEGOODREADABILITYANDPORTABILITYANDEASYTOUNDERSTAND,ETCTHROUGHTHEQUARTUSII50ANDMODELSIMSE61FSOFTWARESIMULATION,ANDCOMPREHENSIVEDOWNLOADTOFPGACHIPSCANBEUSEDAFTERTHEACTUAL,DIGITALCLOCKSHOWSTHEDESIGNOFTHELOGICSTRUCTURECONSISTSMAINLYOFPRESCALER,COUNTERANDDECODINGDISPLAYTHREEMODULES50MHZSYSTEMFREQUENCYMODULEWILLPRODUCEBENCHMARKCLOCKCLOCKSIGNAL,TWO1HZWAYISTHEDIGITALCLOCKFREQUENCY,DYNAMICDISPLAYOFDIGITALTUBEISSCANNINGTIMERMODULESFOR1HZCLOCKSIGNALTIMING,WHENINTOTHREEPARTS,MINUTESANDSECONDS,DECODEDISPLAYMODULEUSESDYNAMICSCANNINGOFTHEDIGITALDISPLAYTHROUGHTHEMAINMODULECALLINGTHREEMODULESFUNCTIONCOMPLETETHEWHOLEDESIGN【KEYWORDS】HARDWAREDESCRIPTIONLANGUAGEFPGAADIGITALCLOCKDYNAMICDISPLAY4目录第一章系统设计6第一节课题目标及总体方案6第二节系统模块实现方案对比及实现7一、分频模块实现方案7二、计时模块实现方案9三、译码显示模块的实现16第三节系统及各模块方框图说明19第二章结果与讨论22第一节调试现象及解决分析22一、编写程序过程中出现的语法问题22二、方案实现过程中出现的问题22第二节相关数据分析24第三节系统整体实现24心得体会25参考文献26附录275第一章系统设计第一节课题目标及总体方案目前,电子系统向集成化、大规模和高速度等方向发展,以硬件描述语言和逻辑综合为基础的自顶向下的电路设计方法得到迅猛发展。本次设计课题目标完成是基于VERILOGHDL语言的多功能数字钟的设计,通过数码管实时显示时、分、秒,具有小时和分钟快进功能。设计遵循VERILOGHDL语言的设计理念,代码具有良好的可读性和易理解性。系统主要分三个模块实现,分别是分频模块、计数模块、译码显示模块。分频模块用来提供计时电路工作时钟(1HZ)和数码管动态显示的扫描频率(200HZ500HZ),计数模块是对1S信号源进行秒、分、时的计时,译码显示模块是通过控制信号控制八个数码管的位选、段选来实现对译码后的计时信号进行动态显示。主函数通过调用三个子模块来实现整体的系统功能。显示模块计时模块分频模块200HZ系统基准时钟复位小时调节分钟调节6第二节系统模块实现方案对比及实现一、分频模块实现方案分频模块用于为系统的实现提供稳定的工作频率和计时信号源,要求产生两路不同频率的信号,分频为1HZ频率的信号作为计时模块的信号源,200HZ的信号用于数码管动态显示的扫描频率。方案一定义变量并根据需要得到的分频信号设定计数值,对该变量进行加或减计数,每到达一次计数值点,将该变量清零或重置,并且对输出信号取一次反,即可以得到所需的分频信号。PARAMETERC_COUNT25D500_00_000/定义变量C_COUNT并给该变量设定计数值点ALWAYSPOSEDGECLOCKBEGINIFCOUNTER0BEGINCOUNTERC_COUNT/减计数到0后对该变量进行重置CLKDIVCLKDIV/对输出信号取反一次ENDELSECOUNTERCOUNTER1/对变量减计数END方案二定义变量并且设定一个上限值,每次加计数到该上限值时,输出该计数值的最高位PARAMETERDIV_SIZE25ALWAYSPOSEDGECLOCKCOUNTERCOUNTER1;ASSIGNCLKDIVCOUNTERDIV_SIZE1方案比较方案二能够产生准确的1HZ的频率且在程序实现上较为简单,但在产生数码管动态显示的扫描频率时可调度不如方案一,即在调节200HZ500HZ范围内的频率时DIV_SIZE变7量的值不便于计算;方案一实现分频信号的设计思路简单易懂,且变量值易于计算和调节。故采用方案一。分频模块的实现MODULECLKGENCLOCK,CLKDIV,CLK500INPUTCLOCKOUTPUTCLKDIVOUTPUTCLK500REG310COUNTER1REGCLKDIVREGCLK500REG310COUNTER0PARAMETERC_COUNT025D500_00_000/变量0用于产生1HZ的信号PARAMETERC_COUNT125D100_000/变量1用于产生500HZ的信号/产生1HZ频率的信号/ALWAYSPOSEDGECLOCKBEGINIFCOUNTER00BEGINCOUNTER0C_COUNT0CLKDIVCLKDIVENDELSECOUNTE0COUNTER01END/产生500HZ频率的信号/ALWAYSPOSEDGECLOCKBEGINIFCOUNTER10BEGINCOUNTER1C_COUNT1CLK500CLK500ENDELSECOUNTER1COUNTER118ENDENDMODULE在该程序段中,只要更改变量COUNTER的值,就可以改变输出频率。适当调节COUNTER1的值,使得数码管动态显示在一个最佳的显示状态。变量COUNTER的计算方法是已知所需要的频率,根据公式(COUNTER值系统基准频率/所需频率)即可求得变量值。二、计时模块实现方案计时模块是对1S的信号源进行秒计时,计时满后向上进位的设计思想方案一计时采用十进制数计时,然后分别对时、分、秒三个数进行取余数、取除数,分别得到三个数的高位和低位9开始时钟上升沿是否为RESET信号秒是否计满60否全消零是秒清零是秒加1否分是否计满60分清零是小时是否计满24全部消零是取除得秒高位数取除得秒低位数分加1否取除得分高位数取除得分低位数取除得分高位数取除得分低位数小时加1否取除得小时高位数取除得小时低位数取除得秒高位数取除得秒低位数取除得小时高位数取除得小时低位数ALWAYSPOSEDGECLKDIVORNEGEDGERESETBEGINIFRESET/判断是否为复位信号BEGINCNTH8D0/将小时信号清零HHCNTH/10/取除操作求得小时信号的高位HLCNTH10/取余操作求得小时信号的低位CNTM8D010MHCNTM/10MLCNTM10CNTS8D0SHCNTS/10SLCNTS10ENDELSEBEGINIFCNTS59/判断秒钟信号是否计满BEGINBEGINCNTS8D0/秒信号清零SHCNTS/10SLCNTS10ENDBEGINIFCNTM59/判断分信号是否计满BEGINBEGINCNTM8D0/分信号清零MHCNTM/10MLCNTM10ENDBEGINIFCNTH23/判断小时信号是否计满BEGINCNTH8D0/小时信号清零HHCNTH/10HLCNTH10ENDELSEBEGINCNTHCNTH8D1HHCNTH/10HLCNTH10ENDENDENDELSEBEGINCNTMCNTM8D1MHCNTM/10MLCNTM10END11ENDENDELSEBEGINCNTSCNTS1D1SHCNTS/10SLCNTS10ENDENDEND方案二计时分每个信号的高低位进行判断及计时IFSL9BEGINSL0IFSH5BEGINSH0IFML9BEGINML0IFMH5BEGINMH0IFHL9BEGINHL0HHHH1ENDELSEIFHL3HH0ENDELSEHLHL1ENDELSEMHMH1ENDELSEMLML1ENDELSESHSH1ENDELSESLSL1END12开始时钟信号上升沿是否为RESET信号是否为小时调节信号否小时的低位是否为9小时低位消零小时高位加1是小时信号是否计满24否小时信号清零是小时信号低位加1否是是否为分钟调节信号否秒低位是否为9否秒低位清零是秒加1否秒高位是否为5秒高位清零是秒高位加1否分低位是否为9是分低位清零是分低位加1否分高位是否为5分高位清零是分高位加1否分地位是否为9分低位清零是分低位加1否分高位是否为5分高位清零是分高位加1否小时低位是否为9小时信号是否计满24否小时信号清零是小时信号低位加1否小时低位清零高位加1否方案比较方案一在思路方面较为通俗易懂,且判断过程简短明了,但在程序中使用的进制数较多,进制转换时容易混乱,在最终的显示时出现毛刺干扰现象,且该方案中不便于增加小时和分钟的调节信号,方案最终失败。方案二虽然判断复杂,但没有进制混杂引起的毛刺现象,在最终的数码管显示时较为稳定。综合考虑,使用方案二。时钟调节模块的实现13MODULECOUNTERCLKDIV,RESET,S1,S2,HH,HL,MH,ML,SH,SLINPUTCLKDIVINPUTRESETINPUTS1INPUTS2OUTPUTHHOUTPUTHLOUTPUTMHOUTPUTMLOUTPUTSHOUTPUTSLREGHHREGHLREGMHREGMLREGSHREGSLREG70CNTH/十进制的小时信号REG70CNTM/十进制的分钟信号REG70CNTS/十进制的秒信号ALWAYSPOSEDGECLKDIVORNEGEDGERST/判断是否为复位信号/IFRSTBEGINSL0SH0ML0MH0HL0HH0END/判断是否为小时调节信号/ELSEBEGINIFS1BEGINIFHL914BEGINHL0HHHH1ENDELSEIFHL3HH0ENDELSEHLHL1END/判断是否为分钟调节信号/ELSEIFS2BEGINIFML9BEGINML0IFMH5MH0ELSEMHMH1ENDELSEMLML1ENDELSEIFSL9BEGINSL0IFSH5BEGINSH0IFML9BEGINML0IFMH5BEGINMH0IFHL9BEGINHL0HHHH1END15ELSEIFHL3HH0ENDELSEHLHL1ENDELSEMHMH1ENDELSEMLML1ENDELSESHSH1ENDELSESLSL1ENDENDMODULE三、译码显示模块的实现译码显示模块采用的是数码管的动态扫描方式,定义变量COM来控制数码管显示的位选信号(通过变量UWEIXUAN来给数码管的各个位选位送出低电平信号)。由于试验箱上的八个数码管是每四个的位选端连接在一起,分为两组数码管,所以定义两个变量SHOW_TEMP_H和SHOW_TEMP_L来分别控制两组数码管,该变量决定了哪个数码管显示哪个信号,再根据这两个变量判断显示的是哪一组数码管,确定之后通过送入的数据利用变量HIGH和LOW控制数码管的段选信号完成译码显示工作。16500HZ始终上升沿SM扫描变量循环自加UWEIXUAN变量控制COM变量给数码管位选位送高低电平SM变量COM口高低位判断得出2组各个数码管分别显示的信号位2组数码管信号位判断变量HIGH,LOW控制数码管段选位根据送入信号完成译码MODULEDECODECLK500,RESET,HH,HL,MH,ML,SH,SL,HIGH,LOW,COMINPUTCLK500INPUTRESETINPUTHH,HL/小时的高、低位信号INPUTMH,ML/分钟的高、低位信号INPUTSH,SL/秒的高、低位信号OUTPUT60HIGH,LOW/分别控制两组数码管的段选信号OUTPUT70COM/控制数码管的位选信号REG70SHOW_TEMP_H,SHOW_TEMP_L/定义的内部变量,决定数码管上显示的信号REG70COMREG70UWEIXUAN/通过控制COM变量给数码管的位选位送出高低电平REG20SM/扫描变量REG60HIGH/控制高四位数码管的段选信号REG60LOW/控制低四位数码管的段选信号ALWAYSPOSEDGECLK20017BEGINIFSM3B111SM3B000ELSESMSM3B001UWEIXUANUWEIXUAN1/通过对变量的左移操作依次给数码管的位选位送高电平IFUWEIXUAN8B0000_0000UWEIXUAN8B0000_0001/给UWEIXUAN变量设定的初值COMUWEIXUAN/共阴极数码管显示的位选信号应为低电平,故对UWEIXUAN变量进行取反操作ENDALWAYSSMBEGINCASECOM8B1111_1110SHOW_TEMP_HSL/最低位的数码管用于显示秒信号的低位8B1111_1101SHOW_TEMP_HSH8B1111_1011SHOW_TEMP_H4B10108B1111_0111SHOW_TEMP_HML8B1110_1111SHOW_TEMP_LMH8B1101_1111SHOW_TEMP_L4B10108B1011_1111SHOW_TEMP_LHL8B0111_1111SHOW_TEMP_LHH/最高位的数码管用于显示小时信号的高位ENDCASEENDALWAYSSHOW_TEMP_H/高四位的数码管显示BEGINCASESHOW_TEMP_H4B0000HIGH7B011_11114B0001HIGH7B000_01104B0010HIGH7B101_10114B0011HIGH7B100_11114B0100HIGH7B110_01104B0101HIGH7B110_11014B0110HIGH7B111_11014B0111HIGH7B000_01114B1000HIGH7B111_11114B1001HIGH7B110_1111184B1010HIGH7B100_0000DEFAULTHIGH7B000_0000ENDCASEENDALWAYSSHOW_TEMP_L/低四位的数码管显示BEGINCASESHOW_TEMP_L4B0000LOW7B011_11114B0001LOW7B000_01104B0010LOW7B101_10114B0011LOW7B100_11114B0100LOW7B110_01104B0101LOW7B110_11014B0110LOW7B111_11014B0111LOW7B000_01114B1000LOW7B111_11114B1001LOW7B110_11114B1010LOW7B100_0000DEFAULTLOW7B000_0000ENDCASEENDENDMODULE第三节系统及各模块方框图说明分频模块系统时钟信号CLK1HZCLK200HZ分频模块输入信号为系统基准时钟50MHZ输出为1HZ频率和200HZ500HZ频率两路信号19计时模块CLKLIVRESETS1S2HHHLMHMLSHSL计时模块输入信号1S时钟信号CLKDIV,复位信号RESET,小时调节信号S1,分钟调节信号S2输出信号为小时信号的高、低位HH、HL,分钟信号的高、低位MH、ML,秒信号的高、低位SH、SL译码显示模块CLK500RESETHHHLMHMLSHSLCOMHIGHLOW译码显示模块输入信号该模块工作频率500HZ,复位信号RESET,小时信号的高、低位HH、HL,分钟信号的高、低位MH、ML,秒信号的高、低位SH、SL输出信号为八个数码管的位选控制信号COM,高四位数码管显示的段选信号HIGH,低四位数码管显示的段选信号LOW20显示模块计时模块分频模块200HZ系统基准时钟复位小时调节分钟调节COMHIGHLOW系统功能实现主函数的输入信号为系统基准时钟信号、复位信号、小时调节信号、分钟调节信号。输出信号为数码管的位选控制信号COM、高四位数码管的段选控制信号HIGH、低四位数码管的段选控制信号LOW。21第二章结果与讨论第一节调试现象及解决分析系统方案确定,程序编写完成后进入调试阶段,调试分模块进行。首先是分频模块,在程序编写且编译通过后,加观察窗口观察所得波形,可以判定是否得到所需频率的信号。在调试过程中出现的问题一、编写程序过程中出现的语法问题(1)要注意编写程序的过程中BEGIN和END配对问题,类似于C语言中的括号匹配问题,在编写计数模块时编译不通过,最后检查出是缺少一个END结束符号,经修改后编译通过。(2)VERILOGHDL语言编写时的语法问题。在最初的计时模块的程序设计中,将小时、分钟的调节信号放在了另外的一个ALWAYS语句块中,编译无法通过,经查阅资料,在VERILOGHDL语言的编写中应该注意不同的ALWAYS语句块不可以对同一个变量进行操作,即一个变量不可以经过两个ALWAYS语句块操作。将对小时和分钟调节信号的操作与计时放在同一个语句块中,编译通过。二、方案实现过程中出现的问题(1)数码管显示高四位、低四位保持一致。在数码管显示时没有达到预计的目标,没有实现动态显示,而是高四位同时显示一个数字,低四位同时显示一个数字,经过对程序的检查调试,是因为对数码管位选端口的控制不正确,初始程序用是通过变量UWEIXUAN给数码管位选端依次送入高电平UWEIXUANUWEIXUAN1IFUWEIXUAN8B0000_0000UWEIXUAN8B0000_0001COMUWEIXUAN22分析得知是COM信号没有正确的送给数码管显示,经修改对后成功显示。修改的程序增加了一个扫描信号ALWAYSPOSEDGECLK200BEGINIFSM3B111SM3B000ELSESMSM3B001在扫描信号到来时判断COM信号并给数码管送出位选端控制信号。(2)数码管计时只显示二进制数。初始程序使用的是十进制数计时,对十进制数进行取除、取余操作,再译码,程序中进制数使用混乱,出现毛刺现象。将计时模块的程序重新修改后实现了计时的译码显示功能。(3)数码管显示不佳。问题出在对数码管动态显示的扫描频率设置不适当,频率太低时无法八个数码管一起显示,频率太高时数码管显示的亮度降低,需要在200HZ500HZ范围内调出一个适当的频率。(4)数码管的显示需要一直按着“复位键”进行。系统的复位信号为低电平有效,所以在编写程序时注意是复位信号的下降沿有效,应该为ALWAYSPOSEDGECLKDIVORNEGEDGERSTIFRSTBEGINSL0SH0ML0MH0HL0HH0END23第二节相关数据分析分频模块的COUNTER变量值计算系统基准时钟为50MHZ,COUNTER值操作一次所需时间为1/50M,操作到计数值点所需时间则为(1/50M)COUNTER,其倒数即为所得到的时钟频率,根据公式求出COUNTER变量值,分别得到计时模块和译码显示模块所需要的时钟频率。第三节系统整体实现系统使用一个主函数调用各个子模块实现系统功能,通过系统方框图编写主函数MODULEMAINCLOCK,RESET,HIGH,LOW,COM/PARAMETERDIV_SIZE25INPUTCLOCKINPUTRESETOUTPUT60HIGH,LOWOUTPUT70COMWIRECLKDIVWIRECLK500CLKGENUUT1C

温馨提示

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

评论

0/150

提交评论