大学毕业论文 基于FPGA的数字钟设计 (VHDL语言实现)_第1页
大学毕业论文 基于FPGA的数字钟设计 (VHDL语言实现)_第2页
大学毕业论文 基于FPGA的数字钟设计 (VHDL语言实现)_第3页
大学毕业论文 基于FPGA的数字钟设计 (VHDL语言实现)_第4页
大学毕业论文 基于FPGA的数字钟设计 (VHDL语言实现)_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

基于FPGA的数字钟设计(VHDL语言实现)本设计为一个多功能的数字钟,具有年、月、日、时、分、秒计数显示功能,以24小时循环计数;具有校对功能以及整点报时功能。本设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计文件,在MaxplusII工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于FPGA的数字钟。系统主芯片采用EP1K100QC208-3,由时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。经编译和仿真所设计的Ⅱ分、秒的分别显示,由按键输入进行数字钟的校时、清零、启停功能。关键词数字钟;硬件描述语言;VHDL;FPGA;键盘接口hours,minutesandsecprooffunctionsandthewholepointtimekeTheuseofEDAdesigntMaxpluslItoolsenvironment,atop-downdesign,bythevaribroadcastmodule.Aftercompilingthedes目录1绪论 3 21.1.1课题相关技术的发展 21.1.2课题研究的必要性 1.2课题研究的内容 32FPGA简介 4 2.2FPGA基本结构 5Ⅱ2.3FPGA系统设计流程 72.4FPGA开发编程原理 93数字钟总体设计方案 3.2数字钟的工作原理 4单元电路设计 4.1分频模块电路设计与实现 4.2校时控制模块电路设计与实现 4.2.1键盘接口电路原理 4.3计数模块设计与实现 4.3.1秒计数模块 4.3.2日计数模块 4.3.3月计数和年计数模块 4.4动态扫描及显示电路设计与实现 4.4.1动态扫描模块 4.4.2显示模块 5实验结论与研究展望 5.1实验结论 5.2研究展望 致谢 基于FPGA的数字钟设计现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。前者以微细加工技术为代表,而后者的代表就是电子设计自动化(electronicdesignautomatic,EDA)技术。2本设计采用的VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、路,是一种带有逻辑处理的加速处理器。而FPGA是特殊的ASIC芯片,与其他的ASIC芯片相比,它具有设计开发在控制系统中,键盘是常用的人机交换接口,当所设置的功能键或数字键按下的时候,系统应该完成该键所设置的功能。因此,键信息输入是与软件结构密切相关的过程。根据键盘的结构不同,采用不同的编码方法。但无论有无编码以及采用什么样的编码,最后都要转换成为相应的键值,以实现按键功能程序的转移。钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常本节将从FPGA嵌入式应用开发技术与数字钟技术发展的客观实际出发,通过对该技术发展状况的了解,以及课题本身的需要,指出研究基于FPGA的芯片系统与设计——数字钟的设计与实现的必要性。当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。它与传统的电子产品在设计上的显著区别师大量使用大规模可编程术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形美国ALTERA公司的可编程逻辑器件采用全新的结构和先进的技3术,加上MaxplusII(或最新的QUARTUS)开发环境,更具有高性能,开发周期短等特点,十分方便进行电子产品的开发和设计。语言为系统逻辑描述主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译,逻辑化简,逻辑分割,逻辑映射,编程下载等工作。最终形成集成电子系统或专用集本设计利用VHDL硬件描述语言结合可编程逻辑器件进行的,并通过数码管动态显示计时结果。数字钟可以由各种技术实现,如单片机等.利用可编程逻辑器件具有其他方式没有的特点,它具有易学,方便,新颖,有趣,直观,设计与实验项目成功率高,理论与实践结合紧密,体积小,容量大,I/O口丰富,易编程和加密等特点,并且它还具有开放的界面,丰富的设计库,模块化的工具以及LPM定制等优良性能,应用非常方便。因此,本设计采用可编程逻辑器件实现。现在是一个知识爆炸的新时代。新产品、新技术层出不穷,电子技电子技术正在不断地改变我们的生活,改变着我们的世界。在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。因此我们需要一个定时系统来提醒这些忙碌的人。数字化的钟表给人们带来了极大的方便。近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、本设计主要研究基于FPGA的数字钟,要求时间以24小时为一个4月、日、时、分及秒进行单独校对,使其校正到标准时间。校对时间由4×4矩形键盘进行控制,为了保证计时的稳定及准确须由晶体振荡器提本设计小组成员共有三人:其他两人分别采用原理图设计和VerilogFPGA是现场可编程门阵列(FieldProgrammableGateArray)的简称,与之相应的CPLD是复杂可编程逻辑器件(ComplexProgrammableLogicDevice)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。CPLD/PGFA几乎能完成任何数字器件的功能,上至高性5能CPU,下至简单的74电路。它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个数字系统。通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。使用CPLA/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。这些优点使得CPLA/FPGA技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言HDL的2.2FPGA基本结构FPGA具有掩膜可编程门阵列的通用结构,它由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储LogicBlock)、输入/输出模块(IOB--I/OBlock)和互连资源 (IR—InterconnectResource)。可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一1.CLB是FPGA的主要组成部分。图2-1是CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G'、F'和H'。G有4个输函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数。逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G'和F',而另一个输入信号是来自信号变换电路的输出H1。这个函数发生器能实现3输入变量的各种组合函数。这3个函数发生器结合起来,可实现多达CLB中有许多不同规格的数据选择器(四选一、二选一等),通过6对CLB内部数据选择器的编程,逻辑函数发生器G、F和H的输出可以连接到CLB输出端X或Y,并用来选择触发器的激励输入信号、时钟有效边沿、时钟使能信号以及输出信号。这些数据选择器的地址控制信号均由编程信息提供,从而实现所需的电路结构。CLB中的逻辑函数发生器F和G均为查找表结构,其工作原理类似于ROM。F和G的输入等效于ROM的地址码,通过查找ROM中的地址表可当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先送入输入缓冲器。缓冲器的输出分成两路:一路可以直接送到MUX,另一路经延可编程开关矩输入输出模块可编程开关矩输入输出模块互连资源口口口口□口口口7时几纳秒(或者不延时)送到输入通路D触发器,再送到数据选择器。通过编程给数据选择器不同的控制信息,确定送至CLB阵列的I1和I2是来自输入缓冲器,还是来自触发器。或截止,分别经上拉电阻接通Vcc、地线或者不接通,用以改善输出波形和负载能力。3.可编程互连资源IR。可编程互连资源IR可以将FPGA内部的CLB布线实现各种电路的连接。2.3FPGA系统设计流程细分去具体实现,这就是TOPDOWN(自顶向下)的设计方法。目前这8VHDL代码或图形方式输入②综合器⑤适配前时序仿真⑥适配器⑦CPLD/FPGA实现仿真综合库ASIC实现2.输入VHDL代码,这是设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。4.进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。95.利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化6.利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及7.利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。8.在适配完成后,产生多项设计结果:(a)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(b)适配后的仿真模型;(c)器件编程文件。根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求。最后将适配器产生的器件编程文件通过编程器或下载电缆载入到硬件设计需要根据各种性能指标、成本、开发周期等因素,确定最佳的实现方案,画出系统框图,选择芯片,设计PCB并最终形成样机。言主要有VHDL和Verilog两种硬件描述语言;编程工具主要是两大厂家Altera和Xilinx的集成综合EDA软件(如MAX+plusII、QuartusII、计,但它不容易做到较高的工作速度和芯片利用率。用这种方式描述的项目最后所能达到的性能与设计人员的水平、经验以及综合软件有很大的关系。2.图形方式。可以分为电路原理图描述,状态机描述和波形描述3形输入方式只支持电路原理图描述和波形描述两种。电路原理图方式描述比较直观和高效,对综合软件的要求不高。一般大都使用成熟的IP核和中小规模集成电路所搭成的现成电路,整体放到一片可编程逻辑器件的内部去,所以硬件工作速度和芯片利用率很高,但是但项目很大的时候,该方法就显得有些繁琐;状态机描述主要用来设计基于状态机思想的时序电路。在图形的方式下定义好各个工作状态,然后在各个状态上输入转换条件以及相应的输入输出,最后生成HDL语言描述,送去综合软件综合到可编程逻辑器件的内部。由于状态机到HDL语言有一种标准的对应描述方式,所以这种输入方式最后所能达到的工作速度和芯片利用率主要取决于综合软件;波形描述方式是基于真值表的一种图形输入方式,直接描述输入与输出的波形关系。这种输入方式最后所能达到的工作速度和芯片利用率也是主要取决于综合软件。数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。图3-1所示为数字钟的一般构成框图。主要包括时间基准电路、计数器电路、控制电路、译码和显示电路。其中的控制逻辑电路是比较灵活多样的,不断完善它可以增强数字钟的功能。译码驱动时十位计数译码驱动时个位计数译码驱动分十位计数校时控制电路晶体振荡器电路分频器电路译码驱动分个位计数译码驱动秒十位计数译码驱动秒个位计数校分控制电路分频器电路本设计在上面数字钟结构的基础上还加入了显示年、月、日的功能,其显示范围为2000年1月1日至2099年12月31日。其总体框架如图3-2。图3-2总体框架振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计满后各计数器清零,重新计数。日期部分由于日有28天、29天、30天、31天4种情况,故日由年和月共同判断其天数,日计满后向月进位,月满后向年进位。计数器的输出分别经译码器送数码管显示。计时出现误差时,可以用校时电路校时、校分、校秒和校年、校月和校日。在控制信号中除了一般的校时信号外,还有时钟使能信号、时钟清零信号。控制果晶振频率为1MHz,经过6次十分频就可以得到秒脉冲信号。译码显示电路由七段译码器完成,显示由数码管构成。4.1分频模块电路设计与实现如图4-1。石英晶体振荡电路分频电路秒信号图4-1秒信号产生电路框图本系统使用的晶体振荡器电路给数字钟提供一个频率稳定准确的40MHz的方波信号,其输出至分频电路。分频电路的逻辑框图如图4-2所示。图4-2分频电路模块Ad其内部结构图见图4-3。电路中采用Max+plusII元器件库中的计数器7490进行硬件分频。经分频后输出1HZ的标准秒信号CLK1、4MHZ的按键扫描信号、1KHZ的按键去抖信号和500HZ用于报时模块的输入信号。该模块的时序仿真图如图4-4所示,满足设计要求。100011000校时控制模块在本系统中也就是键盘接口电路部分。下面先介绍键盘接口电路的工作原理,如图4-5。本系统采用的就是这种行列式键盘接口,相对个按键的键盘接口来说节省了I/O接口。如图所示,行线通过一个电阻被上拉到+5V电压。行线与按键的一个引脚相连,列线与按行线保持高电平,而有按键被按下的时候,行线被拉成低电平,这时候控制器就知道有按键被按下,但只能判断出在哪一行,不能判断出在哪一列,因此接下来就要进行键盘扫描,以确定具体是哪个按键被按下。键盘扫描的过程事将列线逐列置成低电平,然后读取行线状态,直到行线中出现低电平,可知这时哪一列是低电平,然后将行线与列线的状态装入键码寄存器,进行按键译码,得到按下的按键的相应编码,这样就完成了按键扫描的过程。当然,一个完整的按键扫描过程还需要配合相应的键盘去抖手段才能正确的识别按键,不会发生重键和错误判断等情m图4-5键盘接口电路4.2.2键盘接口的VHDL描述1.按键消抖本模块用于当有按键按下时,采用软件消抖的办法去除按键抖动。模块的实现方法是先判断是否有按键按下,如有按键按下则延时一段时间,待抖动过去之后再读行线状态,如果仍有低电平行线,则确定有按块的逻辑框图如图4-6所示。architecturebehavofqudouis程序说明:这段程序是实现按键消抖,在这里实现的比较简单,原理是当有按键按下的时候,temp1会变成低电平,这时把sig2变成高电平,如果此时counter不为"1111"时,内部计数器计数,从“0000”直到“1111",当计数到“1111”时,key_pre输出高电平,同时计数器清零。由于计数脉冲为1KHZ,故从有按键按下到输入信号产生大概需要15ms。计数过程不会停止,原因是计数由sig2的电平决定,而sig2一旦变成高电平,再要变成低电平,需要计数完成即counter等于"1111"时。所以计数过程不会受抖动影响。一旦计数完成,抖动已经过去,不会发键扫描模块的框图如图4-7所示。3CLKY为输入时钟,该时钟是分频模块分出的4MHZ的时钟信号,之所以在这里采用频率高的时钟信号就是因为键扫描是一个快过程,不需要太慢的时钟。Key_pre是由去抖模块输出的有键按下的信号,这个信号引发按键扫描模块内部信号的变化,在该状态信号的作用下,模块可以键盘扫描。ROW[3..0]是行输入信号,与键盘的行线相连,COM[3..0]是列输出信号,与键盘的列线相连。键扫描的基本方法是将列线逐一置成低电平,然后读行线输入端口,如果行线中有低电平出现,说明按键已经确定,将行向量和列向量读入键码中即可。键盘扫描程序如下:useieee.std_logic_arith.all;architecturebehavofajsmistmp<=row(0)androw(1)androw(2)androw(3);if(clky'eventandclky='1')then--计数进程jt:=sig_com(3);--列线逐位输出低电平--键码信号赋值程序说明:该程序较长,用个4个进程,这里逐一介绍。r第二个进程是根据状态变量的状态进行列线的低电平的逐位输出。如果sig1等于1,那么sigcom就进行循环移位,每个钟周期循环左移第三个进程决定列线的输出,平时输出“0000”,当sig1为1时,输出sig_com。最后一个进程就是给键码信号赋值的过程。该模块框图如图4-8所示。模块主要完成从键扫描码到按键编码的CLKYKEY_coDE[3..o]键码转换的核心程序如下:entityjmzhisendjmzh;architecturebehavofjmzhis_when"11101101"=>key_code<="0001";when"11101011"=>key_code<="0010";when"11100111"=>key_code<="0011";when"11011110"=>key_code<="0100";when"11011101"=>key_code<="0101";when"01111110"=>key_code<="1100";when"01111011"=whenothers=>key_code<="1111";程序中采用case语句进行按键编码,也可以用elsif语句实现此段程序设计。完整的键盘程序应加上刚开始介绍的分频模块,键盘接口电路总的逻辑连接框图如图4-9所示。概4.3.1秒计数模块秒计数模块逻辑框图如图4-10所示。输入端口ENL是秒时钟使能信号,也是整个数字中的使能信号,和MDEC是同步校时控制信号,MADD是控制秒信号加一,MDEC是端口是进位输出端口,当秒计数到59时输出高电平,其它时候输出低useieee.std_logic_unsigned.all;port(enl,res,clk,madd,mdec:instd_loifres='l'thenm0:="0000";elsifclk'eventandclk='1'thenifmadd='1'orenl='1'thenifm0="1000"andml="0101"thenca<='I';--实际是第59个--脉冲ifm0<"1001"thenm0:=m0+1;ifml>"0101"thenm0:="0000";elsifmdec='1'thenifm0="0000"andml="0000"thenm0:="1001";elsifm0>"0000"thenm0:=m0-1;秒时钟的仿真波形图如图4-11所示,仿真图满足设计的要求。分计数和时计数模块的设计原理与秒模块的类似。-一用口0即趣4.3.2日计数模块由于一年中各个月份的日的长短不同,共有28、29、30和31天四种情况,可知日由年和月共同决定,如表4-1。年中0表示闰年,1表示平年;月中0表示1、2、3、5、7、8、10和12月,1表示其它月份;二月中1表示2月,0表示其它月份。年月二月日000100010110001101011一111日计数模块的逻辑框图如图4-12所示输入引脚SEL[2..0]是决定日长短的输入信号,其它信号功能与秒计数模块功能类似。日计数模块的核心程序如下:port(enl,res,clk,radd,rdec:instd_logic;variabler0,r1:std_logic_vectifres='l'thenr0:="0000";r1:="0000";elsifclk'eventandclk='1'thenifradd='1'orenl='1'thenifrO=sr0andrl=sr1thenr0:="0001";elsifr0<"1001"thenr0:=r0+1;elsifrdec='1'thenifrO="0001"andrl="0000"thenr0:=sr0;elsifrO>"0000"thenr0:=r0-1;程序中第一个进程主要是对日的长短的设置,sr0和sr1分别是日的减控制。日计数模块的时序仿真图如图4-13所示,仿真图满足设计的00B0nl们的图4-13日计数仿真时序图1.月计数模块逻辑框图如图4-14所示。输出ERYUE端口接日模块的sel[2],YSEL端口接sel[1]。其VHDL图4-14月计数逻辑框图其仿真时序图如图4-15所示。仿真图中有毛刺出现,但并不会对本模块的计数产生影响,满足本设计的需要。图4-15月模块仿真时序图2.年计数模块的逻辑框图如图4-16所示。年计数模块的输出NSEL端口接日模块的sel[0]。其它端口的功能与上述模块类似。其VHDL描述见附录。NIANDD[3.0]图4-16年计数逻辑框图年模块的计数范围是从2000到2099,在这之间的闰年见表4-2。由于年份都带有20,所以省略,用年份数来表示。将表4-2中的年份用二进制表示即可得到以下规律:当年个位的后2位为“00”且十位的最后一位为“0”,或者年的个位的后2位为“10”且年十位的最后一位为"1"的时候,该年为闰年,否则为平年。表4-2闰年表其仿真时序图如图4-17所示,满足设计的要求。2021100004.4动态扫描及显示电路设计与实现动态扫描电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且输出数码管的片选信号和位选信号。所谓动态扫描显示方式是在显示某一位LED显示块的数据的时候,让其它位不显示,然后在显示下一位的数据,同时关闭其他显示块。这样做可以使每一个显示块显示与自己相对应的数据。只要保证每一位显示的时间间隔不要太大,利用人眼的视觉暂留的现象,就可以造成各位数据同时显示的假象。一般每一位的显示时间为1~10ms。动态扫描逻辑框图如图4-18所示。该模块的输入端口DISCLK是频率为500HZ的扫描时钟,故每一位显示的时间为2ms,需要扫描10个数码管,故显示间隔为20ms。由分频模块提供;端口CONV显示转换信号,当其为高电平时,数码管显示时、分和秒。当其为低电平时显示年、月和日;其它输入端口接计数模块输出的数据;输出端口DATAOUT[3..0]动态输出扫描的数据;端口WSEL[3..0]输出数码管的片选信号。其VHDL程序描述见附录。N2[3..0]N3[3.o]本系统选择7448作为显示译码电路,选择数码管作为显示单元电路。计数器实现了对时间的累计并以8421BCD码的形式输送到动态扫描模块,再由其输出的端送到7448,将BCD码转换为七段码,再由数码管显示出来。数码管位选连接电路4-19所示。由于所用到的数码管为两组,故位选电路用到两片7448模块。将设计程序下载到实验箱上运行调试后,最终结果与预期效果基本一致,年、月、日和时、分、秒能够正常计数并能由控制键分别显示,在此次的数字钟设计过程中,更进一步地熟悉有关数字电路的知识硬件描述语言VHDL的编写,程序的仿真等工作。并能根据仿真结果分析设计的存在的问题和缺陷,从而进行程序的调试和完善。在设计电路中,往往是先仿真后连接实物图,但有时候仿真和电路连接并不是完全一致的,例如在对具体模块的仿真的过程中,往往没有考虑到整体设计的层面以及与上下模块接口的设计。再加上器件对信号的延时等问题,实际下载到实验箱上后会出现一系列的问题,因此仿真图和电路连接图还是有一定区别的。此次的数字钟设计重在于按键的控制和各个模块代码的编写,虽然能把键盘接口和各个模块的代码编写出来,并能正常显示,但对于各个模块的优化设计还有一定的缺陷和不足。总的来说,通过这次的设计实验更进一步地增强了实验的动手能力,对数字钟的工作原理也有了更加透彻的理解。在本设计调试过程中遇到了一些问题如下:经分析得知程序中的总的清零信号保持有效状态,改动程序后计数器开2.当秒时钟计数到59时变0时,分计数模块滞后计数,考虑的器件的延时,将程序中秒的进位信号提前1秒。3.利用控制按键给月模块加计数时,发现的月加到12时,年则在没有按键按下的情况下一直加计数。检查程序后得知,月的进位信号在月为12后变一直有效,其它模块也存在这种情况,改动程序后各个模块4.在检测按键时,由于有些按键控制是秒时钟同步的,所以控制起来显得梢慢些,但是工作正常,能满足实际的需要。本设计中虽然有控制键对时钟进行控制,但是用到的按键太多,在实际应用上存在不足。故提出改进方案为用一个按键控制数码管的片选,再用两个按键控制计数的加减。这样可以节省按键资源,以供更多本设计是采用硬件描述语言和FPGA芯片相结合进行的数字钟的研究,从中可以看出EDA技术的发展在一定程度上实现了硬件设计的软件化。设计的过程变的相对简单,容易修改等优点,相信随着电子技术的发展,数字钟的功能会更加多样化,满足人们的各种需要。在论文完成之际,我首先要向指导老师和志强和章瑞平老师表示最真挚的谢意。和志强和张瑞平老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。无论在理论上还是在实践中,都给与我很大的帮助。在理论上,老师耐心讲解电路原理图的绘制,以及元器件的性能;在实际操作中,从系统的设计到最终系统的调试,老师都给予了诸多帮助,使我得到不少的提高,这是在这次设计中我所得到的最宝贵的财富。对于我以后的工作和学习都是一种巨大的帮助,感谢他耐心的辅导。在这次毕业设计中,我的专业知识水平也取得一定的进步。而这些进步都离不开老师和同学的帮助。在此我向曾经帮助和关心我的老师和同学致以诚挚的感谢。由于本人学识有限,加之时间仓促,文中不免有错误和待改进之处,真诚欢迎各位师长、同学提出宝贵意见。附录1.月计数模块的程序:useieee.std_logic_unsigned.all;port(enl,res,clk,yadd,ydec:instd_logic;variabley0,y1:std_logic_vector(3downto0);ifyadd='I'orenl='1'thenelsify0<"1001"theny0:=y0+1;elsifydec='1'thenifyO="0001"andyl="0000"theny0:="0010";elsifyO>"0000"theny0:=y0-1;if((y0="0100"oryO="0110"ory0="1001")andyl="0000")or(yO="0000"ifyO="0010"andyl="0000"theneryue<='1';2.年计数模块的程序:useieee.std_logic_arith.all;port(enl,res,clk,nadd,ndec:instd_logic;architecturendofniandisifres='1'thenn0:="0000";n2:="0000";elsifclk'eventandcl

温馨提示

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

评论

0/150

提交评论