基于fpga的数字时钟设计毕业设计论文_第1页
基于fpga的数字时钟设计毕业设计论文_第2页
基于fpga的数字时钟设计毕业设计论文_第3页
基于fpga的数字时钟设计毕业设计论文_第4页
基于fpga的数字时钟设计毕业设计论文_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

摘要本设计为一个多功能的数字时钟,具有时、分、秒计数显示功能,以24小时循环计数;具有校对功能。本设计采用EDA技术,以硬件描述语言VERILOGHDL为系统逻辑描述语言设计文件,在QUARTUSII工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于FPGA的数字钟。系统由时钟模块、控制模块、计时模块、数据译码模块、显示以及组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,按键进行校准,整点报时,闹钟功能。关键词数字时钟,硬件描述语言,VERILOGHDL,FPGAABSTRACTTHEDESIGNFORAMULTIFUNCTIONALDIGITALCLOCK,WITHHOURS,MINUTESANDSECONDSCOUNTDISPLAYTOA24HOURCYCLECOUNTHAVEPROOFFUNCTIONSFUNCTIONTHEUSEOFEDADESIGNTECHNOLOGY,HARDWAREDESCRIPTIONLANGUAGEVHDLDESCRIPTIONLOGICMEANSFORTHESYSTEMDESIGNDOCUMENTS,INQUAETUSIITOOLSENVIRONMENT,ATOPDOWNDESIGN,BYTHEVARIOUSMODULESTOGETHERBUILDAFPGABASEDDIGITALCLOCKTHEMAINSYSTEMMAKEUPOFTHECLOCKMODULE,CONTROLMODULE,TIMEMODULE,DATADECODINGMODULE,DISPLAYANDBROADCASTMODULEAFTERCOMPILINGTHEDESIGNANDSIMULATIONPROCEDURES,THEPROGRAMMABLELOGICDEVICETODOWNLOADVERIFICATION,THESYSTEMCANCOMPLETETHEHOURS,MINUTESANDSECONDSRESPECTIVELY,USINGKEYSTOCLEARED,TOCALIBRATINGTIMEANDONTIMEALARMANDCLOCKFORDIGITALCLOCKKEYWORDSDIGITALCLOCK,HARDWAREDESCRIPTIONLANGUAGE,VERILOGHDL,FPGA目录摘要1ABSTRACT2第一章绪论111选题意义与研究现状112国内外研究及趋势113论文结构2第二章编程软件及语言介绍321QUARTERSII编程环境介绍3211菜单栏3212工具栏8213功能仿真流程922VERILOGHDL语言介10221什么是VERILOGHDL语言10222主要功能11第三章数字化时钟系统硬件设计1331系统核心板电路分析1332系统主板电路分析15321时钟模块电路15322显示电路15323键盘控制电路17324蜂鸣电路设计17第四章数字化时钟系统软件设计1841整体方案介绍18411整体设计描述18412整体信号定义19413模块框图2042分频模块实现20421分频模块描述20422分频模块设计20423分频模块仿真2143计时模块实现21431计时模块描述与实现21432计时模块仿真2344按键处理模块实现23441按键处理模块描述23442按键去抖处理模块设计24443按键模块去抖仿真2445闹钟模块实现25451闹钟模块设计25452闹钟设定模块仿真2546蜂鸣器模块实现25461蜂鸣器模块描述25462蜂鸣器模块实现26463蜂鸣器模块仿真2747显示模块实现27471显示模块描述27472显示模块实现27473显示模块仿真29第五章系统调试及运行结果分析3051硬件调试3052软件调试3153调试过程及结果3154调试注意事项33第六章总结和展望3455总结3456展望34参考文献35致谢36附录37第一章绪论11选题意义与研究现状在这个时间就是金钱的年代里,数字电子钟已成为人们生活中的必需品。目前应用的数字钟不仅可以实现对年、月、日、时、分、秒的数字显示,还能实现对电子钟所在地点的温度显示和智能闹钟功能,广泛应用于车站、医院、机场、码头、厕所等公共场所的时间显示。随着现场可编程门阵列FIELDPROGRAMMABLEGATEARRAY,FPGA的出现,电子系统向集成化、大规模和高速度等方向发展的趋势更加明显,作为可编程的集成度较高的ASIC,可在芯片级实现任意数字逻辑电路,从而可以简化硬件电路,提高系统工作速度,缩短产品研发周期。故利用FPGA这一新的技术手段来研究电子钟有重要的现实意义。设计采用FPGA现场可编程技术,运用自顶向下的设计思想设计电子钟。避免了硬件电路的焊接与调试,而且由于FPGA的I/O端口丰富,内部逻辑可随意更改,使得数字电子钟的实现较为方便。本课题使用CYCLONEEP1C6Q240的FPGA器件,完成实现一个可以计时的数字时钟。该系统具有显示时、分、秒,智能闹钟,按键实现校准时钟,整点报时等功能。满足人们得到精确时间以及时间提醒的需求,方便人们生活。12国内外研究及趋势随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。二十一世纪的今天,最具代表性的计时产品就是电子时钟,它是近代世界钟表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。第三次革命就是单片机数码计时技术的应用,使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期的显示功能,它更符合消费者的生活需求因此,电子时钟的出现带来了钟表计时业界跨跃性的进步。我国生产的电子时钟有很多种,总体上来说以研究多功能电子时钟为主,使电子时钟除了原有的显示时间基本功能外,还具有闹铃,报警等功能。商家生产的电子时钟更从质量,价格,实用上考虑,不断的改进电子时钟的设计,使其更加的具有市场。13论文结构第一章详细论述了近些年来,数字化时钟系统研究领域的动态及整个数字化时钟系统的发展状况,同时分析了所面临的问题与解决方案,从而提出了本论文的研究任务。第二章从研究任务着手,选择符合设计要求的常用芯片及其它元器件,详细论述了各接口电路的设计与连接,以模块化的形式,整合数字化时钟硬件的设计从小到大,从局部到整体,循序渐进,最终实现一个功能齐全的数字化时钟系统。第三章根据系统设计要求,着手对数字化时钟系统软件进行功能的实现,将各功能模块有机结合,实现时钟走时,实现闹铃、整点报时附加功能。第四章按照设计思路,在联机调试过程中,对时钟系统的不足和缺点进行分析,将调试过程作重点的记录。第五章对全文的总结,对本系统功能实现以及制作过程中需要注意的方面,及整个系统软件编写中所吸取的经验教训进行论述,同时,也对整个研究应用进行展望。第二章编程软件及语言介绍21QUARTERSII编程环境介绍运行环境设计采用QUARTUSII软件实现,因此针对软件需要用到的一些功能在这里进行描述QUARTUSII软件界面简单易操作,如下图21图21QUARTUSII软件界面图211菜单栏1【FILE】菜单QUARTUSII的【FILE】菜单除具有文件管理的功能外,还有许多其他选项图22QUARTUSII菜单栏图(1)【NEW】选项新建工程或文件,其下还有子菜单【NEWQUARTUSIIPROJECT】选项新建工程。【DESIGNFILE】选项新建设计文件,常用的有AHDL文本文件、VHDL文本文件、VERILOGHDL文本文件、原理图文件等。【VECTORWAVEFORMFIVE】选项矢量波形文件。(2)【OPEN】选项打开一个文件。(3)【NEWPROJECTWIZARD】选项创建新工程。点击后弹出对话框。单击对话框最上第一栏右侧的“”按钮,找到文件夹已存盘的文件,再单击打开按钮,既出现如图所示的设置情况。对话框中第一行表示工程所在的工作库文件夹,第二行表示此项工程的工程名,第三行表示顶层文件的实体名,一般与工程名相同。图23QUARTUSII新建工程图(4)【CREAT/UPDATE】选项生成元件符号。可以将设计的电路封装成一个元件符号,供以后在原理图编辑器下进行层次设计时调用。2【VIEW】菜单进行全屏显示或对窗口进行切换,包括层次窗口、状态窗口、消息窗口等。图24QUARTUSII菜单栏全屏切换图3【ASSIGNMENTS】菜单(1)【DEVICE】选项为当前设计选择器件。(2)【PIN】选项为当前层次树的一个或多个逻辑功能块分配芯片引脚或芯片内的位置。(3)【TIMINGANANLYSISSETTING】选项为当前设计的TPD、TCO、TSU、FMAX等时间参数设定时序要求。(4)【EDATOOLSETTING】选项EDA设置工具。使用此工具可以对工程进行综合、仿真、时序分析,等等。EDA设置工具属于第三方工具。(5)【SETTING】选项设置控制。可以使用它对工程、文件、参数等进行修改,还可以设置编译器、仿真器、时序分析、功耗分析等。(6)【ASSIGNMENTEDITOR】选项任务编辑器。(7)【PINPLANNER】选项可以使用它将所设计电路的I/O引脚合理的分配到已设定器件的引脚上。图25QUARTUSII菜单栏设定引脚下拉图4【PROCESSING】菜单【PROCESSING】菜单的功能是对所设计的电路进行编译和检查设计的正确性。(1)【STOPPROCESS】选项停止编译设计项目。(2)【STARTCOMPILATION】选项开始完全编译过程,这里包括分析与综合、适配、装配文件、定时分析、网表文件提取等过程。(3)【ANALYZECURRENTFILE】选项分析当前的设计文件,主要是对当前设计文件的语法、语序进行检查。(4)【COMPILATIONREPORT】选项适配信息报告,通过它可以查看详细的适配信息,包括设置和适配结果等。(5)【STARTSIMULATION】选项开始功能仿真。(6)【SIMULATIONREPORT】选项生成功能仿真报告。(7)【COMPILERTOOL】选项它是一个编译工具,可以有选择对项目中的各个文件进行分别编译。(8)【SIMULATIONTOOL】选项对编译过电路进行功能仿真和时序仿真。(9)【CLASSICTIMINGANALYZERTOOL】选项CLASSIC时序仿真工具。(10)【POWERPLAYPOWERANALYZERTOOL】选项POWERPLAY功耗分析工具。图26QUARTUSII菜单栏运行下拉图5【TOOLS】菜单【TOOLS】菜单的功能是(1)【RUNEDASIMULATIONTOOL】选项运行EDA仿真工具,EDA是第三方仿真工具。(2)【RUNEDATIMINGANALYZERTOOL】选项运行EDA时序分析工具,EDA是第三方仿真工具。(3)【PROGRAMMER】选项打开编程器窗口,以便对ALTERA的器件进行下载编程。图27QUARTUSII仿真菜单下拉图212工具栏工具栏紧邻菜单栏下方,它其实是各菜单功能的快捷按钮组合区。28QUARTUSII菜单栏图图29QUARTUSII菜单栏按键功能图213功能仿真流程1、新建仿真文件图210QUARTUSII菜单栏新建文件夹图2、功能方正操作在菜单上点PROCESSING在下拉菜单中,如下图图211QUARTUSII菜单栏PROCESSING下拉图22VERILOGHDL语言介221什么是VERILOGHDL语言VERILOGHDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。VERILOGHDL语言具有下述描述能力设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,VERILOGHDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。VERILOGHDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用VERILOG仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。VERILOGHDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,VERILOGHDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。222主要功能下面列出的是VERILOG硬件描述语言的主要能力基本逻辑门,例如AND、OR和NAND等都内置在语言中。用户定义原语(UP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。开关级基本结构模型,例如PMOS和NMOS等也被内置在语言中。提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。可采用三种不同方式或混合方式对设计建模。这些方式包括行为描述方式使用过程化结构建模;数据流方式使用连续赋值语句方式建模;结构化方式使用门和模块实例语句描述建模。VERILOGHDL中有两类数据类型线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。能够描述层次设计,可使用模块实例结构描述任何层次。设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。VERILOGHDL不再是某些公司的专有语言而是IEEE标准。人和机器都可阅读VERILOG语言,因此它可作为EDA的工具和设计者之间的交互语言。VERILOGHDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。PLI是允许外部函数访问VERILOG模块内信息、允许设计者与模拟器交互的例程集合。设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。能够使用内置开关级原语在开关级对设计完整建模。同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。VERILOGHDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。在行为级描述中,VERILOGHDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。能够使用门和模块实例化语句在结构级进行结构描述。如图显示了VERILOGHDL的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。VERILOGHDL还具有内置逻辑函数,例如/模块名CLOCKINPUTCLK/输入时钟INPUT40KEY/输入按键,KEY30分别为秒,分钟,小时的增加按键。KEY4为闹钟设置按键,KEY5为校准设置按键。OUTPUT70DIG/数码管选择输出引脚AOUTPUT70SEG/数码管段输出引脚OUTPUTBEEP/蜂鸣器输出端REG70SEG_R8H0/定义数码管输出寄存器REG70DIG_R/定义数码管选择输出寄存器REG30DISP_DAT/定义显示数据寄存器REG80COUNT1/定义计数寄存器REG140COUNT/定义计数中间寄存器REG230HOUR24H235956/定义现在时刻寄存器REG230CLKTIME24H000000/定义设定闹钟REG10KEYEN2B11/定义标志位REG40DOUT15B11111REG40DOUT25B11111REG40DOUT35B11111/寄存器WIRE40KEY_DONE/按键消抖输出REG150BEEP_COUNT16H0/蜂鸣器寄存器REG150BEEP_COUNT_END16HFFFF/蜂鸣器截止寄存器REGCLKTIME_EN1B1/闹钟使能寄存器REGSEC/1秒时钟REGCLK1/1MS时钟REGBEEP_R/寄存器WIREBEEPEN/闹钟使能信号413模块框图通过QUARTUSII的CREATSYMBLEFORCURRENTFILE功能生成框图如下图42生成的符号图分频模块实现,计数电路所需时钟信号为1HZ,而系统时钟为48MHZ,所以要对系统时钟进行分频以来满足电路的需要。42分频模块实现421分频模块描述对于分频模块,关键是生成个1HZ的时钟信号。考虑到仿真的需要,模块中间生成1个1KHZ的时钟信号。1HZ的信号的产生用来产生时钟的秒脉冲,框图如下图42图43分频模块图422分频模块设计本系统程序设计时钟的准确与否主要取决于秒脉冲的精确度。为了保证计时准确,我们对系统时钟48MHZ进行了48000分频生成1KHZ信号CLK1,在通过1KHZ信号,生成1HZ信号CLK。/1MS信号产生部分ALWAYSPOSEDGECLK/定义CLOCK上升沿触发BEGINCOUNTCOUNT1B1IFCOUNT15D24000/05MS到了吗BEGINCOUNT15D0/计数器清零CLK1CLK1/置位秒标志ENDEND/秒信号产生部分ALWAYSPOSEDGECLK1/定义CLOCK上升沿触发BEGINCOUNT1COUNT11B1IFCOUNT19D500/05S到了吗BEGINCOUNT19D0/计数器清零SECSEC/置位秒标志ENDEND423分频模块仿真通过设置功能仿真,检查代码的正确性1、仿真结果图44分频模块波形仿真图右上图可以知道,计数寄存器COUNT累加到23999时,重新变为0,共计数了24000个值。触发CLK1跳变,使得COUNT1加一,COUNT1累加到499的时候,下一个数据为0,共技术500个值。所以,SEC信号的频率为1HZ,满足设计要求。43计时模块实现431计时模块描述与实现计时模块是采用16进制来实现的,将HOUR23,0定义为其时分秒,其中HOUR3,0为其秒钟上的个位数值,HOUR4,7为其秒钟上的十位数值,以此类推分钟、时钟的个位和十位。当CLK脉冲过来时,秒个位HOUR3,0便开始加1,当加到9时,秒十位加1,与此同时秒个位清零,继续加1。当秒十位HOUR7,4为5秒个位为9时(即59秒),分个位HOUR11,8加1,与此同时秒个位和秒十位都清零。以此类推,当分十位HOUR15,12为5和分个位为9时(即59分),时个位加1,与此同时分个位HOUR19,16和分十位都清零。当时分十位23,20为2和分个位为4,全部清零,开始重新计时。从功能上讲分别为模60计数器,模60计数器和模24计数器。/时间计算及校准部分ALWAYSNEGEDGESEC/计时处理BEGINHOUR30HOUR301B1/秒加1IFHOUR304HA/加到10,复位BEGINHOUR304H0HOUR74HOUR741B1/秒的十位加一IFHOUR744H6/加到6,复位BEGINHOUR744H0HOUR118HOUR1181B1/分个位加一IFHOUR1184HA/加到10,复位BEGINHOUR1184H0HOUR1512HOUR15121B1/分十位加一IFHOUR15124H6/加到6,复位BEGINHOUR15124H0HOUR1916HOUR19161B1/时个位加一IFHOUR19164HA/加到10,复位BEGINHOUR19164H0HOUR2320HOUR23201B1/时十位加一ENDIFHOUR23168H24/加到24,复位HOUR23168H0ENDENDENDENDENDEND432计时模块仿真对计时模块进行仿真,记录仿真波形图45计时模块仿真图由上图可见,当SEC信号下降沿跳变时,HOUR寄出去会加1,也就相当于跳了一秒钟时间。当HOUR的时间为235959是,下一个计数器的值为000000,HOUR寄存器归零,相当于半夜0点的时刻。仿真的结果达到预期,通过。44按键处理模块实现441按键处理模块描述框图如下图44图46按键控制功能图模块讲计时部分和时间调整部分整合到一起,正常态的时候,时间正常运行,当KEY5被按下时,进入时间校准,可以通过KEY20三个键,分别对秒,分,时进行加1操作,从而进行时间校准。当KEY3被按下时,进入闹钟设定,可以通过KEY20三个键,分别对秒,分,时进行加1操作,从而进行闹钟的设定。图47按键模块仿真图通过按键KEY进行仿真控制,可以发现CLKTIME会随着按键的按下,分别有时钟,分钟秒钟加1,仿真结果满足设计要求。442按键去抖处理模块设计按键模块实现去抖处理,及乒乓按键设计,确保后面的计时模块与闹钟模块的功能实现。ASSIGNKEY_DONEKEY|DOUT3/按键消抖输出ALWAYSPOSEDGECOUNT15/按键去噪声BEGINDOUT1HOUR230。正常情况下,闹铃时间到会进行为时1分钟的蜂鸣报时,可以通过按下闹钟按键KEY3使其停止。当闹铃设置为整点是,会先进行整点报时,然后进入闹铃。图49闹钟控制键功能图452闹钟设定模块仿真图410闹钟模块仿真图通过按键KEY进行仿真控制,可以发现CLKTIME会随着按键的按下,分别有时钟,分钟秒钟加1,仿真结果满足设计要求。46蜂鸣器模块实现461蜂鸣器模块描述蜂鸣器模块负责整点报时,和闹铃的时候进行出声的作用。整点报时的时候,播放音乐,10秒音乐播报完后停止整点报时。闹钟触发时,播放嘀嘀嘀报警声。当闹铃设置为整点是,会先进行整点报时,然后进入闹铃。当闹钟设定键被按下,响起的蜂鸣声会被屏蔽。模块框图如下图49462蜂鸣器模块实现/蜂鸣器的计数定时器ALWAYSPOSEDGECLKBEGINBEEP_COUNTBEEP_COUNT1B1/计数器加1IFBEEP_COUNTBEEP_COUNT_END/计数器清零BEEP_RBEEP_R/取反输出信号ENDENDALWAYSPOSEDGECLKBEGINIFBEEPENCASEHOUR30/整点报时音乐内容4H0BEEP_COUNT_END16H6A88/中音6的分频系数值4H1BEEP_COUNT_END16H8637/中音4的分频系数值4H2BEEP_COUNT_END16H7794/中音5的分频系数值4H3BEEP_COUNT_END16HB327/中音1的分频系数值4H5BEEP_COUNT_END16HB327/中音1的分频系数值4H6BEEP_COUNT_END16H7794/中音5的分频系数值4H7BEEP_COUNT_END16H6A88/中音6的分频系数值4H8BEEP_COUNT_END16H8637/中音4的分频系数值DEFAULTBEEP_COUNT_END16HFFFF/其他情况无声ENDCASEELSEIFCLKTIME_ENBEGINCASECOUNT185/闹钟嘀嘀嘀声内容4H0,4H2,4H6,4H8BEEP_COUNT_END16H2F74/高音7的分频系数值DEFAULTBEEP_COUNT_END16HFFFF/其他情况不出声ENDCASEENDELSEBEEP_COUNT_END16HFFFFEND/闹铃使能控制ALWAYSPOSEDGECLKBEGINIFKEYEN0/判断闹铃是否有取消CLKTIME_EN1B1/闹铃响起后,需要手动关闭闹铃ELSEIFCLKTIME230HOUR230/闹铃过一点时间,自动关闭。CLKTIME_EN1B0END463蜂鸣器模块仿真功能仿真,记录波形图图411蜂鸣器模块仿真图通过上图可以看出来,当HOUR与CLKTIME相等时,闹铃被触发,经过一段时间后,闹铃停止工作,设计满足要求。47显示模块实现471显示模块描述此设计中的LED七段数码管显示模块主要显示时间的时、分、秒信息,数码管为共阳的。在此设计中占非常重要的地位,它是确保时间能直观呈现的桥梁。在设计过程中,首先进行程序编写和调试的应该是显示模块。下面输入的端口为闹钟设定键被按下,七段数码管会显示闹钟设定情况下数码管所对应的数字。正常时间情况、闹钟设定以及查看闹钟所设定好的时间都是同样的原理,当他们被按下数码管会显示对应的模式相应的数字。图412显示模块图472显示模块实现/数码管显示内容ALWAYSPOSEDGECLKBEGINCASEKEYEN0,COUNT131/选择扫描显示数据4D0DISP_DATCLKTIME30/秒个位4D1DISP_DATCLKTIME74/秒十位4D2DISP_DAT4HA/显示“4D3DISP_DATCLKTIME118/分个位4D4DISP_DATCLKTIME1512/分十位4D5DISP_DAT4HA/显示“4D6DISP_DATCLKTIME1916/时个位4D7DISP_DATCLKTIME2320/时十位4D8DISP_DATHOUR30/秒个位4D9DISP_DATHOUR74/秒十位4D10DISP_DAT4HA/显示“4D11DISP_DATHOUR118/分个位4D12DISP_DATHOUR1512/分十位4D13DISP_DAT4HA/显示“4D14DISP_DATHOUR1916/时个位4D15DISP_DATHOUR2320/时十位DEFAULTDISP_DAT4HA/显示“ENDCASE/数码管选择CASECOUNT131/选择数码管显示位3D0DIG_R8B11111110/选择第一个数码管显示3D1DIG_R8B11111101/选择第二个数码管显示3D2DIG_R8B11111011/选择第三个数码管显示3D3DIG_R8B11110111/选择第四个数码管显示3D4DIG_R8B11101111/选择第五个数码管显示3D5DIG_R8B11011111/选择第六个数码管显示3D6DIG_R8B10111111/选择第七个数码管显示3D7DIG_R8B01111111/选择第八个数码管显示ENDCASEEND/数码管显示ALWAYSPOSEDGECLKBEGINCASEDISP_DAT4H0SEG_R8HC0/显示04H1SEG_R8HF9/显示14H2SEG_R8HA4/显示24H3SEG_R8HB0/显示34H4SEG_R8H99/显示44H5SEG_R8H92/显示54H6SEG_R8H82/显示64H7SEG_R8HF8/显示74H8SEG_R8H80/显示84H9SEG_R8H90/显示94HASEG_R8HBF/显示DEFAULTSEG_R8HFF/不显示ENDCASEIFCOUNT1313D2END473显示模块仿真编译程序,进行功能仿真,记录仿真图形图413显示模块仿真图通过上面的图可以知道,LED数码管是通过扫描的方式实现数据更新,通过DIG,SEG寄存器的数据可以知道,数据能正常显示,满足设计要求。第五章系统调试及运行结果分析51硬件调试在软件联机调试之前,首先要确定硬件是否完全正确。检查方面主要包括(1)PC机的接口和核心板上的JTAG下载口是否连接正确;(2)蜂鸣器的电路是否为通路;(3)检查接地、电源线是否连接正确;(4)用示波器检测核心板的各个引脚是否有信号输出;(5)LED七段数码管显示正常。引脚分布如下表51表51引脚分布图信号引脚说明信号引脚说明SEG0169DIG0160SEG1170DIG1159SEG2167DIG2162SEG3168DIG3161SEG4165DIG4215SEG5166DIG5216SEG6163DIG6213SEG7164数码管断信号选择DIG7214数码管片选信号控制KEY0121秒加1控制CLK28时钟信号KEY1122分加1控制BEEP175蜂鸣器信号KEY2123时加1控制KEY3124闹钟控制KEY4143时间校准控制52软件调试在确定好硬件系统正确之后,我对本设计进行分模块的软件调试。功能模块先后调试顺序为显示模块时间模块键盘模块时间设定及其显示模块闹铃、整点报时设定及其显示模块。每完成一个模块就与前一个已完成的模块结合起来调试,直至实现相应功能,再编写下一模块程序。在与主程序衔接时,主程序和各子程序也需作相应的改动,以便与子程序更好的衔接,特别是显示子程序需作较大改动,以便对不同内容进行显示。软件编译后的结果图51软件编译结果图通过上图51可以知道,整个设计值用了383个逻辑单元,占用很少的资源。53调试过程及结果调试过程按照显示模块时间模块键盘模块时间设定及其显示模块闹铃、整点报时设定及其显示模块的顺序进行调试。(1)显示模块调试本系统功能完整运行离不开正确显示,所以显示模块的实现非常重要,在联机调试第一步就要确定系统的显示是否能够正常运行。将需要显示的内容编写在程序内,单独得进行仿真。此模块调试结果如图41所示图52显示模块调试图(2)时间系统模块调试确定系统显示成功后,进行时间系统的调试。时间系统需要实现时、分、秒的正确走时。显示结果为时、分、秒,其中秒钟可以正常走动。此模块调试结果如图42所示图53时间系统模块调试图(3)按键模块调试KEY1按键被按下进入校时状态,KEY2按键被按下进入调闹钟状态(在闹铃响时按此键能屏蔽闹铃音),在两个不同状态下,KEY3、KEY4、KEY5三个按键的功能是相同的,当被按下时,时、分、秒的数值加1。(由于图片限制校时状态下和闹钟设定类似不予以截图。)图54时间调整/闹钟设定模块调试图54调试注意事项软件设计时,需要确定好软件设计的思路,即先确定各个功能需要实现的先后,再将各功能模块单独进行编写调试,待各模块功能完善后,再进行总体联合调试。调试过程中出现了一些问题,并一一解决(1)在进行系统联机调试时,要注意电源是否接通,PC机的接口和核心板上的JTAG下载口是否连接正确。确定将未使用的引脚设置为三态输入,否则可能会损坏芯片。(2)显示模块正确调试之后,进行时钟系统的调试过程中,出现时间信息并没有显示在屏幕上,而在对应时间信息的位置上显示的是“”。出现此问题时候,首先对硬件进行再次检查,用示波器检查引脚两端是否有信号的输入输出。结果发现硬件电路连接正确,问题出现在引脚设置的方面。在设定引脚时,没有选择正确的输出引脚。通过查找书本,修改输出引脚,解决了这个问题。(3)时钟模块时,出现秒钟走的过快的现象。最终发现是分频程序中没有正确的对时钟脉冲信号进行正确的分频。通过在网络资源和书籍的学习正确的改善了这个问题。(4)键盘调整时间程序中,出现了无法正常调时情况,按键盘后,时间信息没有改变或者改变过多。经过检查,找到原因是没有给按键进行按键去抖动。这说明在编写程序时候要充分了解各芯片内容资料,减少编写小错误引起对整个程序造成的影响。(5)闹钟报时和整点报时蜂鸣时间问题。闹钟报时中,如果闹钟时间到就会闹铃1分钟,考虑到实际生活中,闹钟都是可以手动关闭的,于是设定了一个闹钟开关键,为了减少系统硬件的繁杂,当系统时间到达闹铃时间和整点报时的时间,蜂鸣器才会响起。第六章总结和展望55总结在FPGA上设计和调试都需要耐心,时钟设计在生活中无处不在,设计的过程要考虑到应用的习惯,设计更人性化的体验,才会是一个好的设计。在VERILOGHDL语言的学习上还存在一些问题,没有深入的学习,对于有些语法错误,还需要仔细的查找。如果将这个数字时钟应用于现实生活中,还存在些许的问题。例如按键太多,操作起来没那么的方便等等。56展望针对数字时钟的设计,通过以上的验证,我们可以知道,对数字时钟来说,其实占用很少逻辑资源,也就意味着如果一点制作成SOC的话,成本会非常的低,所以基于这点,整个模块完全可以依附在其他功能产品(如CPU内部)上,给整个产品增加的优势。参考文献1刘君,常明,秦娟,基于硬件描述语言(VHDL)的数字时钟设计,天津理工大学学报,2007,第23卷第4期,40412廖日坤,CPLD/FPGA嵌入式应用开发技术白金手册,中国电力出版社,2003,212218。3王开军,姜宇柏,面向CPLD/FPGA的VHDL设计,机械工业出版社,2006,2865。4赵保经,中国集成电路大全,国防工业出版社,1985。5高吉祥,电子技术基础实验与课程设计,电子工业出版社,2002。6吕思忠,数子电路实验与课程设计,哈尔滨工业大学出版社,2001。7谢自美,电子线路设计、实验、测试,华中理工大学出版社,2003。8赵志杰,集成电路应用识图方法,机械工业出版社,2003,3540。9张庆双,电子元器件的选用与检测,机械工业出版社,2003。10谭会生,张昌凡,EDA技术及应用,西安电子科技大学出版社,2002。11李可,数字钟电路及应用M,北京电子工业出版社,1996。12康华先,电子技术基础数字部分第四版M北京高等教育出版社,2000213224。13集成电路手册分编委会编,中外集成电路简明速查手册,TTL、CMOS电路M,北京电子工业出版社,1997。14康华光,电子技术基础,高等教育出版社,200215宋春荣,通用集成电路速查手册,山东科学技术出版社,1995。16阎石,数字电子技术基础第四版M,北京高等教育出版社,1998。17KAWASAKIHIROAKI,SAKURADAHIROSHI,NARUSHIMASHINICHI,ETALDOUBLEFACEDVACUUMFLUORESCENTDISPLAYPUSPATENT5463276,1995致谢在我进行此毕业论文撰写的过程中,我的导师给了我极大的帮助。在这里,我要感谢在这些在我毕业设计过程中指导和帮助过我的人。首先,我要感谢我的指导严格要求。本论文的选题和撰写都是在她的指导下完成的。从开始对VERILOGHDL语言不懂的情况下,慢慢学习,经过一段时间的摸索,开始学着在实验板上进行练习操作,才有了长足的进步,最终调试成功;老师对于问题思路的指导,都将成为今后工作、学习的宝贵精神财富。在我走向社会,走向工作岗位的过程中,老师给予我的教诲、帮助和殷切期望,促使我更加积极追求新的人生目标。感谢父母一直默默地给予我关心和支持,父母的悉心关怀,永远是鼓励我积极向上的不竭动力。最后,还要感谢和我一样即将毕业的同班同学;感谢大学四年的同寝室室友;感谢那些没有提及姓名,但也同样给予我帮助的老师、同学和朋友附录MODULECLOCKCLK,KEY,DIG,SEG,BEEP/模块名CLOCKINPUTCLK/输入时钟INPUT40KEY/输入按键OUTPUT70DIG/数码管选择输出引脚AOUTPUT70SEG/数码管段输出引脚OUTPUTBEEP/蜂鸣器输出端REG70SEG_R8H0/定义数码管输出寄存器REG70DIG_R/定义数码管选择输出寄存器REG30DISP_DAT/定义显示数据寄存器REG80COUNT1/定义计数寄存器REG140COUNT/定义计数中间寄存器REG230HOUR24H235956/定义现在时刻寄存器REG230CLKTIME24H000000/定义设定闹钟REG10KEYEN2B11/定义标志位REG40DOUT15B11111REG40DOUT25B11111REG40DOUT35B11111/寄存器WIRE40KEY_DONE/按键消抖输出REG150BEEP_COUNT16H0/蜂鸣器寄存器REG150BEEP_COUNT_END16HFFFF/蜂鸣器截止寄存器REGCLKTIME_EN1B1/闹钟使能寄存器REGSEC/1秒时钟REGCLK1/1MS时钟REGBEEP_R/寄存器WIREBEEPENASSIGNBEEPBEEP_R/输出音乐ASSIGNDIGDIG_R/输出数码管选择ASSIGNSEGSEG_R/输出数码管译码结果ASSIGNBEEPEN|HOUR154ASSIG

温馨提示

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

评论

0/150

提交评论