基于FPGA的会议发言智能限时器设计.docx
毕业设计(论文) 题 目 基于FPGA的会议发言智能限时器设计 学 院 电子信息学院 专 业 电子信息工程 学生姓名 谭家松 学号 159120522 线长度不足指导教师 李翠锦 职称 工程师 2019年 4 月 20 日 学生毕业设计(论文)原创性声明 本人以信誉声明:所呈交的毕业设计(论文)是在导师的指导下进行的设计(研究)工作及取得的成果,设计(论文)中引用他(她)人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人成果及为获得重庆工程学院或其它教育机构的学位或证书而使用其材料。与我一同工作的同志对本设计(研究)所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 毕业设计(论文)作者(签字): 年 月 日重庆工程学院本科生毕业设计 摘要摘 要本设计实现了一种基于FPGA的会议限时器,该设计的功能主要是通过将时间显示在数码管上,同时通过指示灯和语音播报的方式提醒使用者注意时间,实现计时准确,叫停规范,自动提醒,超时叫停的特性,控制、缩短会议这类活动的时间,提高会议效率。该设计包括以下6个模块,时间设定模块、数码管显示模块、语音播报模块、电源模块、指示灯显示模块、全局复位模块,其中主控芯片为altera公司的EP2C5T144C8N型号的FPGA器件。本设计的工作原理是设定一个时间进行倒计时,倒计时的同时通过指示灯、语音播报、数码管显示等方式提示使用者活动的进度,让使用者可以更好地控制活动的进程。本设计的优势是时间处理精度高,响应速度快,可靠性高,易于硬件升级及扩展等功能。关键词:限时器 FPGA 倒计时显示 语音播报 I重庆工程学院本科生毕业设计 ABSTRACT ABSTRACTThis design realizes a kind of FPGA-based meeting timer. The function of this design is to display the time on the digital tube and remind the user to pay attention to the time by means of indicator lights and voice broadcasting. It realizes the characteristics of accurate timing, stop specification, automatic reminding and overtime stop, controls and shortens the time of meetings and other activities, and improves the meeting efficiency. The design includes the following six modules: time setting module, digital tube display module, voice broadcast module, power supply module, indicator light display module and global reset module, among which the main control chip is FPGA device of EP2C5T144C8N model of altera Company. The working principle of this design is to set a time to count down. At the same time of counting down, the user's activity progress is prompted by means of indicator lights, voice broadcasting, digital tube display, etc., so that the user can better control the activity process. The advantages of this design are high time processing precision, fast response speed, high reliability and easy hardware upgrade and expansion.Keywords: timer; FPGA; Countdown display; voice broadcastII重庆工程学院本科生毕业设计 目录目 录摘 要IABSTRACTII1绪 论11.1国内外发展现状11.1.1发展历史11.1.2分类11.1.3采用技术21.2研究目的及意义22系统硬件总体设计32.1 系统所需功能模块概述32.2 系统设计方案42.2.1 硬件选型方案一42.2.2 硬件选型方案二52.2.3 硬件选型方案三52.3 各模块功能描述63系统软件设计93.1系统整体设计要求93.2系统整体描述103.3软件模块设计113.3.1时间设定模块113.3.2扫描计数模块113.3.3 1mhz分频计数模块123.3.4 50mhz-1mhz分频模块123.3.5秒计数模块133.3.6秒时钟转换模块133.3.7倒计时模块143.3.8指示灯控制模块143.3.9语音三位合并模块153.3.10语音控制模块163.3.11时间设定分位模块173.3.12数码管位选模块173.3.13时间分位位选模块183.3.14数码管显示模块193.3.15 LED灯控制模块193.4主要功能软件设计203.4.1时钟分频203.4.2时钟设定203.4.3指示灯203.4.4数码管显示203.4.5语音播报203.5 modelsim功能时序仿真213.6 quartus II综合214性能测试与结果讨论234.1 测试平台234.2 测试方案234.3 测试结果及分析244.3.1测试结果244.3.2测试分析与结论245总结与展望26参考文献27致谢29重庆工程学院本科生毕业设计 1 绪论1 绪 论随着FPGA技术的大规模应用和推广,需要用到FPGA技术的方面也越来越多,开发环境和工具也在不断更新。在FPGA技术中最难处理的部分是时序逻辑的图像仿真分析并修改程序。该部分通过计算机对设计的程序是否能实现想要的功能进行理论上的分析,观察波形与端口理想的状态是否一致,不一致则返回程序进行修改,直到所有端口的波形达到理想状态时就把程序下载到芯片进行实际测试,由于仿真是理论上的可行,所以不能疏忽实际状态。随着科学技术的发展,会议发言限时器种类繁多,更新换代飞快。会议发言限时器主要由数码管显示、语音模块、拨码开关、喇叭等部分组成,拨码开关设定时间,数码管显示设定时间及倒计时的显示,语音播报距离发言结束剩余时间,喇叭将语音播报出来和时间为零时进行类似下课铃的提醒。下面就是现在主流的会议发言限时器。1.1 国内外发展现状1.1.1 发展历史目前,国内外对智能会议发言限时器及相关问题的研究成果较多,在节约时间和提高会议效率方面取得了不错的效果。限时器这样的器件本身在20世纪90年代或者更早就已经诞生了,戴树鸿先生在1995年就对会议发言限时器进行了研究,并制作了袖珍会议发言限时器1。而西方国家则在会议限时器上的研究非常的少,那个时候的限时器功能也很单一,将时间分为5分钟、十分钟、十五分钟几个时段,用PROG-111可编程控制器制作的,发言者准备若有差错,可以按暂停复位后重新开始计时,当发言时间到后会有声音和文字出现来提示时间到了2。由于目前该设备的功能比较单一普通,跟不上社会智能化的节奏,所以我们正在把它往智能化这个方向发展。1.1.2 分类在大多数情况下,使用手机计时和秒表计时这两种是比较多的,由于手机和秒表计时都是通过人为控制,时间的误差增大,准确性和公平性方面缺失。这两种设备的提示叫停功能也会通过人为控制,所以不是很强制性的叫停。目前会议中常见的会议发言限时器按实现技术可分为单片机PROG-110可编程控制器实现和基于windows平台的VB语言实现3。PROG-110可编程控制器非常小,所以非常方便,但是由于这个单片机系统太小导致功能比较单一,需要外加很多的器件来充实整个系统,且不便于主持人、使用者、听众同时控制、掌控、知晓发言时间,不便于实际操作。基于windows平台的VB语言实现这种方式相当于是在使用一款APP,通过驱动计算机的一些硬件来达到限时器这样的效果,但是它的根本还是计算机和软件。1.1.3 采用技术关于会议发言限时器的研究,研究本身可以通过多种技术及形式来实现,但是大多数实现的方法是基于单片机原理来实现的,也有基于windows平台的VB语言来实现这样的功能。通过单片机系统实现的会议发言限时器,但由于计时精度较低,而且由单片机制成的会议发言限时器在反复的使用过程中,很容易乱码,或者其部分功能丢失。基于windows平台的VB语言实现会议发言限时器,其实设计本身是能够达到要求且适合实际操作的,这相当于一款软件,需要基于计算机才能使用,所以具有一定的局限性。因此采用结构更为简单,工作稳定性更高的FPGA技术来实现4。本设计还可以和会议讲话的话筒相结合,通过时间结束后切断话筒的声音公放功能来实现强制叫停,并且发出警告,使发言人意识到发言时间结束,因此,本设计的功能及规格都非常符合某些特定的场合及场所的需求。1.2 研究目的及意义随着国家的发展速度越来越快,国民水平的提高,智能化开始融入生活当中,与人们的生活变得息息相关,智能化将是未来社会的发展方向。然而在目前这个生活节奏飞快的时代,节约时间提高工作效率成为重中之重,因此这个智能会议发言限时器成了某些场所或场合必不可少的一个工具。由于它的性能强大,规格小巧,同时它的成本也很低廉,目前它已逐步深入到社会的各个方面。本课题设计的智能会议发言限时器中用到时间倒计时技术、单片机控制原理、FPGA编程技术、语音播报技术已运用于工农业生产、医疗设备等诸多领域,尤其是在许多需要时间公平且有时间限制的场合有很大的发展空间,由于很多机构对这个方面的制度不完善和不重视,还有这方面的设备与需要这些设备的场所或场合没有很好的结合,因此该课题有着很重要的研究意义。本设计的智能会议限时器要求能够实现时间倒计时、数码管显示、语音播报提示、按键设定、led指示灯、鸣笛提示等功能。该课题要求能够实际动手设计,学会这个产品的开发流程,掌握FPGA编程的基础、硬件设计与制图的基本能力、FPGA方面软件应用的基本操作使用等。2重庆工程学院本科生毕业设计 2 系统硬件总体设计2 系统硬件总体设计2.1 系统所需功能模块概述整个系统由主芯片、电源模块、晶振模块、语音播报模块、数码管显示模块、指示灯模块、时间设定模块、复位按键构成。主芯片为整个芯片的控制系统,电源模块为整个的系统外电路和内核分别供电,晶振模块为整个系统提供时钟,时间设定模块为系统的输入端,为整个系统运转提供一个条件,将时间设定,然后开始倒计时,在倒计时过程中指示灯模块开始随着时间变化而变化,同时将时间变化显示在数码管模块上,在倒计时要结束时,语音播报模块开始运行起来,播报相应的语音。复位按键作用在于使用错误时,用于归零后重新使用。系统总体框架图如图2.1所示。图 2.1 总体框架图(1)主芯片本设计主芯片采用Altera公司的Cyclone II系列的EP2C5T144C8N型号的芯片,采用贴片封装形式,拥有144个引脚,其主要控制是实现一个时钟分频和控制输入各个模块的电平的高低,实现各个模块的驱动5。(2)电源模块主要为整个系统供电,由于系统核心芯片内核供电1.5V,外部供电3.3V,所以电源模块将USB输入的正负5V的电压转成各个模块需要的电压,电源采用AMS1117芯片,通过该稳压芯片,实现输出电压1.5V和3.3V6。(3)晶振模块 晶振主要为整个系统提供基本的时钟信号,本设计主控芯片将提供的50MHz的时钟进行分频处理,将50MHz的时钟分成设计所需的1Hz为单位的时钟,为整个系统提供以秒为单位的时钟7。(4)语音播报在接收到FPGA芯片处理数据后给出的指令,语音报警模块接收到该指令,会播报距离时间结束还有多久,给使用者一个心理准备,使设计更为人性化。当时间倒计时结束时,语音播报模块触发,会播报时间已结束,请停止一切活动的语音8。(5)数码管显示模块该系统采用的共阳数码管,通过给要亮的数码段给低电平,使数码管显示出想要的数字,数码管前四位显示最开始设定的时间,后四位显示倒计时的过程,让使用者能够清楚的看到倒计时的整个过程。(6)指示灯模块由于使用者在使用时不能一直盯着数码管看,因此设计了指示灯,使用者只需要瞄一眼就能大概知道自己处于怎样的时间段,指示灯工作时分为闪烁和一直亮两个状态。(7)时间设定模块拨码开关输入时间,拨码开关采用二进制编码方式输入,比较适合硬件的识别,不用转换进制,而且拨码开关不会像其它一些开关会接触不好或者多次感应,会存在一些输入数据的变化,而这些变化会影响使用者使用该设备。所以拨码开关虽然简单,但是它的输入很稳定,不会存在抖动。(8)复位按键全局复位就是主芯片的最后一个引脚是全局复位引脚,将开关的引脚分配为这个全局复位引脚,在每一次使用完之后全局复位,这样就不会出现数据错乱的情况,使得下一次使用和第一次使用是一样的9。开始键就是在设定好时间后按下这个键,时间开始倒计时,使用者一定的准备工作时间,如果没有这个键,时间设定好就开始计时,就相当于有一部时间是被使用者不经意间就浪费掉的,这样不太符合该计的初衷。2.2 系统设计方案系统通过外部设定时间获取,将设定的时间数据传入FPGA芯片,经过时钟分频、时间倒计时等处理,将对应的时间变化显示到数码管上,同时经过时间对比结果做出不同的提示,其形式包括指示灯和语音播报10。经过各方面的筛选,列出了以下三个。2.2.1 硬件选型方案一表2.1 方案一器件选型结果主芯片EP1C12Q240C8N时间设定模块矩阵键盘晶振50MHz数码管显示模块共阳数码管4语音播报模块M3语音播放模块电源模块LD1085D2T2.2.2 硬件选型方案二表2.2 方案二器件选型结果主芯片EP2C5T144C8N时间设定模块拨码开关晶振50MHz数码管显示模块共阴数码管语音播报模块M3语音播放模块电源模块AMS1117 3.3/1.52.2.3 硬件选型方案三表2.3方案三器件选型结果主芯片EP2C5T144C8N时间设定模块12个按键直列晶振50MHz数码管显示模块共阳数码管语音播报模块M3语音播放模块电源模块AIC1085本设计最终采用的方案二,主芯片选用的是EP2C5T144C8N型号的FPGA芯片,由于设计以后可能还有升级的部分,所以不选EP1C12Q240C8N,因为该芯片的组合逻辑资源和触发器资源相对要少一些,如果以后随着功能的升级,资源需求的增多,可以选择资源更为富足的主芯片实现功能的拓展和升级11。时间设定选用的是12位的拨码开关,低6位代表秒钟位,高6位代表分钟位,拨码开关以二进制输入,二进制是机器最容易识别的指令。矩阵键盘也可以实现相同的功能,但是会有很多按键没有用到,同时还需要对键盘扫描的结果进行转换,让机器能够识别,所以选择拨码开关比较方便。晶振选择50MHz的石英晶振,石英晶振的频率比较准确,且50MHz比较常见和易于分频,数码管选择共阳共阴其实没什么区别,只是在段选的时候给高亮或者给低亮的区别,对类型没有特定要求。语音播报模块选择应用比较广泛的M3语音播报模块,播放语音文件类型为wav和mp3格式,只需要在模块上安装储存卡,且按照规定格式创建文件夹,将录音放到文件中就可以使用了12。电源模块芯片选择AMS1117,虽然这三种方案的芯片都可以将5V电压转换成3.3V和1.5V,但是LD1085D2T转换成其他电压跨度太大了,AIC1085虽然跨度小,但是还是有转换成其他电压的可能,本设计只需要3.3V和1.5V,所以选择稳压芯片AMS1117芯片,稳定输出外部电路和内核需要的电压,综上所述,选择方案三作为本设计的器件选型。72.3 各模块功能描述设计一个时间精确和反应速度快且成本较低的会议发言限时器,具体功能分为以下几个部分。(1)电源模块该模块主要为主控芯片的内核供电和少数外部模块供电,在为内核供电的途中还有个时钟锁相环给电源模块提供的1.5V电压进行滤波13。电源对USB接口的5V电压进行分压,采用的芯片为AMS11173.3型号的芯片,通过稳压芯片控制电源输出电压的大小,实现1.5V和3.3V的供电电压,实物如图2.2所示。图2.2 AMS11173.3/1.5芯片(2)晶振模块该模块主要是为本系统提供必要的工作时钟,而本设计初步规划输入主时钟为50MHz,所以选用50MHz的石英晶振,实物如图2.3所示。图2.3 50MHZ石英晶振(3)时间设定模块由于机器能直接识别的是二进制,所以采用最为简便的拨码开关,整个时间设定由两个6位拨码开关组成,分别设定时间的分钟位和秒钟位,并以二进制编码方式将输入的时间显示在数码管上14。再输入时间后按下确定键,开始进行倒计时,如果时间设定设定错误,可以按下复位键从新开始。其电气特性如表2.4所示,实物如图2.4所示。表2.4 拨码开关的电气特性电器寿命开关在理想环境可来回波动2000次开关不常切换的额定电流100mA 耐压500VDC开关经常切换的额定电流25mA 耐压24VDC接触阻抗初始50m 测试后限大值100m耐压强度500VAC/1分钟电容限大5pF回路单接点单选择图 2.4 六位拨码开关(4)数码管显示将设定好的时间现在上面,设定好按下确认键,时间开始倒计时,并将倒计时的状态显示到数码管上,分钟位与秒钟位以分钟位数码管的点为分隔。其产品参数如表2.5所示,实物如图2.5所示。表2.5 数码管产品参数产品名称LED数码管发光、字体颜色红色正常电流20mA极性共阳性图 2.5 数码管(5)语音播报在时间临近结束的时候进行语音播报,第一次播报距离时间结束还剩下多少分钟或秒,时间结束后,第二次播报为像下课铃声一般的声音,提醒正在进行活动的人员时间已经结束15。模块相关参数如表2.6所示,实物如图2.6所示。表2.6 模块相关参数供电直流5V 1A(不得高于5V)触发端口9个喇叭参数0- 2瓦 4-8欧(音量可调)支持最大内存16GB如图2.6所示,该模块具备9个直接触发端口,是A1-A9这9根排针。这9个端口同时对应9个MP3文件,分别是第一个到第九个,先放入TF卡的为第一个。触发方式为低电平触发,也可以通过连接语音播报模块上的GND去触发,或者直接用单片机IO口触发。给模块上电前,先把A10接地,可以直接用短路帽把A10和GND合上,这样上电后就切换为编码模式,编码端口为A1-A5,以二进制为编码方式来表示要播报第几个MP3文件。图 2.6 语音播报模块(6)状态指示灯指示灯分为3种状态,第一种为最左边的灯亮起状态,其含义为时间还很充足,距离临近时间还早。第二种状态为中间的灯为亮起状态,其含义为距离时间结束还有最后5分钟或者1分钟,由于时间设定的不同,提醒距离时间结束也不同16。第三种状态为最右边的灯亮起或闪烁状态,其含义为时间到了,在灯亮的同时,下课铃声般警示同时响起,提醒人员时间到了,活动结束,实物如图2.7所示。图 2.7 状态指示灯(7)总体复位按键在活动突然中止或者时间设定错误的时候,可以按下复位键进行总体复位,使设备回到最初的状态。在一次使用结束后也要使用复位键将各项数据清零,便于下次使用。73 系统软件设计3.1 系统整体设计要求系统整体设计就是要实现一个相当于到时间就能提醒使用者时间到了这样一个装置,这个装置需要有多方面提示的功能,比如时间自由设定、数码管显示时间、阶段性提示、语音预警及叫停。(1)时间自由设定预计用两个6位拨码开关来设定时间,由于Verilog语言和所有的机器语言一样,都是基于二进制来识别的,所以改设计采用最为直接的二进制输入17。采用六位的拨码开关就是因为六位刚刚能够达到六十,由于改设计只能设定分钟位,秒钟位太小,不太适用该设备用到的环境,所以设置只能设定分钟位。(2)数码管显示时间时间设定好后显示到数码管,然后时间开始倒计时,并在数码管上显示倒计时的过程,直到倒计时为零。设备显示分钟位和秒钟位,所以采用8位数码管,分为两组以数码管DP位高亮隔开,更为直观的看到时间的变化和使用者能合理安排活动进程。(3)语音播报在活动即将结束的时候语音播报距离结束的时间,在最后时间结束后,语音长鸣,表示活动结束。除了这些主要的一些功能以为还得有许多小的人性化的功能,让使用者使用更为舒适,迎合市场需求。这些小的功能就是有一个开始的这样一个功能,让使用者在设定时间后有一段准备的时间,在准备好后按下开始键,活动进程开始,但是却不能暂停,由于市场环境限制,暂停键比较没有作用,所以采用复位键代替。还有就是有三个状态指示灯,通过状态指示灯的颜色和位置,能够大概判断出处于哪一个时间阶段,总共分为三个阶段三种状态,D1代表第一阶段,说明时间还很宽裕,距离第一次提示还有一段时间。D2代表第二阶段,说明时间接近尾声了,要加快活动进程,让使用者有一个准备,让活动有一个好的结尾。D3代表第三个阶段,说明时间刚好结束,活动进程停止,这个时候语音报警喇叭一段时间鸣响。综合这些功能,实现一个迎合市场,适用于多种场合的会议发言限时器。重庆工程学院本科生毕业设计 3 系统软件设计3.2 系统整体描述图3.1 系统整体信号流向如图3.1所示,系统整体有四个输入四个输出,通过系统内部各模块的作用,实现本设计的所有功能。输入端的全局复位rst_n全局时钟clk_50mhz,首先就是将50MHz的时钟进行分频,由于系统倒计时还是需要1Hz的时钟来触发,所以模块五是用来时钟分频的,还有就是在时钟分频的同时,通过分频后的时钟触发,然后进行计数,后面各模块的触发条件是通过判断计数来触发,然后在输出到数码管,语音播报和LED灯。系统通过模块一输入设定时间time_set,然后输入time_set_confirm确认设定时间,并将设定时间赋值给t_time_set,再通过模块三和模块四将50MHz的时钟分成1MHz的时钟,模块二通过这个1MHz的时钟触发,实现数码管扫描18。模块五和模块六的主要功能就是将时钟分频为倒计时需要的1Hz的时钟,同时通过时钟的翻转进行计数。模块七通过判断time_set_confirm确认,同时开始倒计时,当秒位减到零时就赋值为59,然后又开始继续减,秒位减到零的同时,分位又减一,实现倒计时的效果。再经过模块八和模块九、十的处理处发语音模块和LED指示灯的效果,时间设定大于10分钟时,倒计时到五分钟这个时间点时触发语音模块播放第一条语音,倒计时到1分钟这个时间点时触发语音模块播放第二条语音,当倒计时为零时触发语音模块播放第三条语音。当时间设定小于10分钟时,倒计时到1分钟这个时间点时触发语音模块播放第四条语音,倒计时到30秒这个时间点时触发语音模块播放第五条语音,当倒计时为零时触发语音模块播放第六条语音。模块五实现LED指示灯的变化,当时间设定大于10分钟时,从设定时间倒计时到5分钟这个时间段,LED灯D1亮,5分钟到1分钟这个时间段,LED灯D2亮,1分钟到最后时间结束这段时间LED灯D3闪烁19。当时间设定小于10分钟时,从设定时间倒计时到1分钟这个时间段,LED灯D1亮,1分钟到1秒钟这个时间段,LED灯D2闪烁,最后时间结束这个时间点LED灯D3亮起,代表时间结束。模块十一就是将时间显示到数码管上的赋值。模块十二就是判断扫描计数,然后扫描数码管,扫描一位就往左边移一位,移到最左边又重头开始,实现数码管动态显示,模块十三和十四就是数码管的段选和位选。最后模块十五就是给八个LED灯的前五位给高电平,处于熄灭状态,只变化最后三位实现LED指示。其详细信号传输如上图3.2.1 系统整体信号流向所示。3.3 软件模块设计3.3.1 时间设定模块图3.2 软件模块一表3.1 模块一输入输出输入输出posedge seconds_clkt_time_setnegedge rst_ntime_settime_set_confirm如图3.2和表3.1所示,该模块就是通过上升沿seconds_clk和下降沿rst_n为触发,复位为低复位,当确认可以开始倒计时情况下,按下确认键key2这个按键,同时将time_set_confirm赋值为零,当time_set_confirm为零时,将拨码开关设定的时间time_set的值赋值给t_time_set,给后续的判断提供条件。3.3.2 扫描计数模块图 3.3 软件模块二表3.2 模块二输入输出输入输出11posedge clk_1mhzscan_cntnegedge rst_n如上图3.3和表3.2所示,该模块就是通过上升沿clk_1mhz和下降沿rst_n为触发,复位为低复位,当scan_cnt为10'd299时,将scan_cnt重置为零,这个数据是自己实验出来的结果,因为数码管的扫描的频率就是当scan_cnt=10'd299时,扫描一次,实现数码管数据的刷新,其他情况按照默认情况自身加一,实现一个scan_cnt计数的功能。3.3.3 1MHz分频计数模块图 3.4 软件模块三表3.3 模块三输入输出输入输出posedge clk_50mhzclk_1mhz_cntnegedge rst_n如上图3.4和表3.3所示,该模块就是通过上升沿clk_50mhz和下降沿rst_n为触发,复位为低复位,由于clk_1mhz时钟是当clk_1mhz_cnt = 5'd24翻转一次,所以当clk_1mhz_cnt为5'd24时,将clk_1mhz_cnt重置为零重新计数,其他情况则自身加一,实现一个clk_1mhz_cnt计数的功能。3.3.4 50MHz-1MHz分频模块图 3.5 软件模块四表3.4 模块四输入输出输入输出posedge clk_50mhzclk_1mhznegedge rst_nclk_1mhz_cnt如上图3.5和表3.4所示,该模块就是通过上升沿clk_50mhz和下降沿rst_n为触发,复位为低复位,当clk_1mhz_cnt为5'd24时,将clk_1mhz_cnt赋值为零重新开始计数,clk_1mhz这个时钟就翻转一次,上升沿和下降沿加起来等于50MHz的时钟,其目的就是将50MHz的时钟分成1MHz,给后面数码管段选位选提供扫描变化的时钟。3.3.5 秒计数模块图 3.6 软件模块五表3.5 模块五输入输出输入输出posedge clk_50mhzseconds_counternegedge rst_n如上图3.6和表3.5所示,该模块就是通过上升沿clk_50mhz和下降沿rst_n为触发,复位为低复位,由于计数从零开始,要将50MHz的时钟分成1Hz的时钟,就是将50MHz的时钟除以二,分成上升沿和下降沿两部分,当seconds_counter为26'd24999999时,将seconds_counter的值置为零,起作用就是将50MHz的时钟分为26'd24999999份上升沿和26'd24999999份下降沿,然后通过计数来判断是否达到翻转条件,为后面分成上升沿和下降沿交替的1Hz的时钟计数。3.3.6 秒时钟转换模块图 3.7 软件模块六表3.6 模块六输入输出输入输出posedge clk_50mhzseconds_clknegedge rst_nseconds_counter如上图3.7和表3.6所示,该模块是通过上升沿clk_50mhz和下降沿rst_n为触发,复位为低复位,当seconds_counter为26'd24999999时,将seconds_clk的值置为零,起作用就是将50MHz的时钟分为26'd24999999个上升沿和26'd24999999个下降沿,其判断依据就是模块五的计数,通过计数判断是否从上升沿翻转到下降沿,变成秒的时钟。133.3.7 倒计时模块图 3.8 软件模块七表3.7 模块七输入输出输入输出posedge seconds_clkscan_cntnegedge rst_ntime_set_confirmtime_set_buf如上图3.8和表3.7所示,该模块就是通过上升沿seconds_clk和下降沿rst_n为触发,复位为低复位,当按下确定键确认开始整个系统开始工作时,将time_set_confirm置为零,将拨码开关设定的时间time_set的值赋值给time_set_buf,当time_set_buf和seconds同时等于零时说明倒计时结束,然后将他们都置零并显示到数码管上,当time_set_buf不等于零和seconds等于零同时满足时,将seconds的值赋值为59,然后让它自减,当second=0的时候说明已经是一分钟的倒计时了,所以倒计时的time_set_buf也自减一,这样才能让显示在数码管分位的数字递减,实现一个以秒为单位的倒计。3.3.8 指示灯控制模块图 3.9 软件模块八表3.8 模块八输入输出输入输出posedge clk_50mhztime_mention_1negedge rst_ntime_mention_2time_set_buftime_mention_3secondsseconds_clkt_time_set如上图3.9和表3.8所示,该模块就是通过上升沿clk_50mhz和下降沿rst_n为触发,复位为低复位,在t_time_set大于等于10的条件下,当time_set_buf >= 7'd5时,3位输出等于011,表示最后三位的第一个灯亮,这个灯代表绿灯。当7'd1<=time_set_buf <= 7'd5时,3位输出等于101,表示最后三位的第二个灯亮,这个灯代表黄灯。当time_set_buf =0和1<seconds <= 59同时满足时,前两位输出等于11,最后一位等于seconds_clk,表示最后三位的第三个灯亮一直闪烁,这个灯代表红灯,表示时间快要结束了,灯一直闪烁提醒使用者20。在t_time_set小于10的条件下,当7'd1<=time_set_buf时,3位输出等于011,表示最后三位的第一个灯亮,这个灯代表绿灯。当time_set_buf =0和1<seconds <= 59同时满足时,前后两位位输出为1,中间的位等于seconds_clk,表示最后三位的第二个灯一直闪烁,这个灯代表黄灯,当time_set_buf =0和seconds=0同时满足时,3位输出等于110,表示最后一个灯亮,这个灯代表红灯,表示时间快要结束了。3.3.9 语音三位合并模块图 3.10 软件模块九表3.9 模块九输入输出 输入输出posedge clk_50mhzvioce_mentionnegedge rst_ntime_mention_1time_mention_2time_mention_3如上图3.10和表3.9所示,该模块就是通过上升沿clk_50mhz和下降沿rst_n为触发,复位为低复位。该模块功能就是将三个led灯合并成一个三位的输出vioce_mention,通过给高给低来控制最后三个led灯的状态。153.3.10 语音控制模块图 3.11 软件模块十表3.10 模块十输入输出输入输出posedge clk_50mhzvoicenegedge rst_nsecondstime_set_buf如上图3.11和表3.10所示,该模块就是通过上升沿clk_50mhz和下降沿rst_n为触发,复位为低复位。在t_time_set大于等于10的条件下,当time_set_buf = 7d5和seconds=0同时满足时,voice = 6b011111,播放第一段语音。当time_set_buf = 7d1和seco