1、基于 FPGA 的学校打铃器的设计本论文版权归作者所有,仅供学习参考,盗者必究!作 者 姓 名 cici 专 业 电子信息工程 指导教师姓名 jiji 专业技术职务 教授 目 录摘 要 1第一章 绪论 .31.1 选题目的 31.2 课题研究内容 41.2.1 FPGA 的发展历程 .41.2.2 FPGA 的优点 .41.3 器件及工具介绍 51.3.1 Quartus设计步骤 51.3.2 VHDL 特点 5第二章 系统方案设计 52.1 设计方案分析与选择 52.2 学校打铃器总体构成 62.3 分频模块设计 72.4 消抖模块设计 82.5 时钟模块设计 102.5.1 秒计数模块 .
2、102.5.2 分计数模块 .112.5.3 时计数模块 .122.5.4 调时模块 .122.6 闹钟模块设计 132.6.1 定时模块 .142.6.2 比较模块 .152.7 打铃模块设计 162.8 报警模块设计 192.8.1 报警时长设定模块 .192.8.2 蜂鸣器发声模块 .202.9 显示模块设计 212.9.1 时间切换模块 .212.9.2 动态扫描模块 .232.10 按键电路设计 252.11 电源电路设计 26第三章 实验结果分析 273.1 测试过程 273.2 结果分析 29参考文献 31附 录 32致 谢 41本论文版权归作者所有,仅供学习参考,盗者必究!0摘
3、 要打铃器为学校上下课时间的准确控制提供了很大的便利,并且在工厂、办公室等场合也起到了提醒人们时间的作用,因此打铃器的设计有一定的实用意义。本设计的学校打铃器采用基于现场可编程门阵列(FPGA)的方法,底层模块采用硬件描述语言(HDL)设计,不仅能对时、分、秒正常计时和显示,而且还可进行闹铃时间的设定,上下课时间报警,报警时间可在 1 至 15 秒自由设定。系统主芯片采用美国 Altera 公司的 EP3C40F484I7 器件,由时钟模块、控制模块、闹钟模块、定时模块、数据译码模块、显示以及报时等模块组成,由按键进行时钟的校时、清零、启停等。本文在介绍 FPGA 器件的基础上,着重阐述了如何
4、使用 FPGA 器件进行系统的开发,以及如何实现学校打铃系统。通过仿真验证及实际测试,打铃器具有正常计时、定时报警、报警时长设定等功能,可为日常作息提供准确、便捷的提醒。系统运行稳定,设计方法可行。关键词:打铃器 现场可编程门阵列 硬件描述语言 本论文版权归作者所有,仅供学习参考,盗者必究!1ABSTRACTSchool Bell provides great convenience for people to control the accurate bell-time in school, and also plays an important role in the work and l
5、ife in factories, offices, and many other occasions. So it is of great practical significance for us. This design is based on FPGA and the underlying module is designed by HDL. Not only can it display the right time in hour, minute and second, but the alarming time can also be setted from 1s to 15s,
6、 which rings on class time. We choose EP3C40F484I7(Altera Corp.,the USA) as the system main chip. This system is made of five modules,including the clock module, control module, alarm clock, time decoding module, display module, data and time module,etc. You can press the keys to correct or clean th
7、e time, and start or stop the clock. Based on describing devices of FPGA,this article focuses on the development method and the way to implement a school bell system.Through simulation and practical test, this system has the function of normal timing, alarming, alarming-time setting, which can provi
8、de convenient and accurate remind of daily routine.It is proved that the operation of this system is stable, and the design method is possible.Key words:alarm clock; Field Programmable Gate Array; hardware description language本论文版权归作者所有,仅供学习参考,盗者必究!2第一章 绪论1.1 选题目的当今社会,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变
9、着我们的世界。在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。因此我们需要一个定时系统来提醒这些忙碌的人。数字化的时钟给人们带来了极大的方便。近些年,随着科技的发展和社会的进步,人们对时钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性能还是在样式上都发生了质的变化,学校打铃器就是以时钟为基础的,在平时校园生活中是必不可少的工具。打铃器的数字化给人们生产生活带来了极大的方便,而且大大地扩展了时钟原先的报时功能。诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时
10、电气的自动启用等,所有这些,都是以时钟数字化为基础的。因此,研究时钟及扩展应用,有着非常现实的意义。电铃广泛应用于学校、机关及工矿企事业单位,可实现作息时间的固定周期打铃,提示人们工作、学习或是休息。自古以来教育就已经成为社会生活中必不可少的一部分,随着教育体系的逐渐完善,定时提醒上下课时间的工具也尤为重要,不仅是学校中,在工厂、办公室等任何需要时间提醒的场合,打铃器都拥有举足轻重的位置,尤其是进入现代化社会以后,准确、方便的多功能打铃器便具有独特的研究意义。另外,打铃器也拥有悠久的历史,从最早的人工打铃,到如今的电动打铃、智能打铃,经历了一系列的变革,人工打铃不仅费时费力,而且准确性也不能保
11、证,还可能会造成人为的误时误报。当代社会飞速发展的主要标志之一就是信息产品的广泛使用,而且产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。随着技术的发展,出现了各种各样的打铃器,有些带有音乐播放功能,可编入作息时间程序,并且能同时控制路灯、广播等其他电器,无线音乐打铃器无需施工布线,降低了安装成本,还可以根据使用需要随时移动音乐电铃的位置,无线遥控的距离可达 500 米,成为学校、部队、工厂等部门的打铃控制新宠,十分简洁、便捷。如今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。它与传统的
12、电子产品在设计上的显着区别是大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低,同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期 1。EDA 技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术。本设计将借助 EDA 技术,完成基于 FPGA 器件的学校打铃器的设计。 EDA 技术的发展经历了一个由浅到深的过程,先后经历了 CAD、CAE 和现代意义上的 EDA 三本论文版权归作者所有,仅供学习参考,盗者必究!3个阶段。在可编程逻辑器件(PLD)内部,数字电路可用硬件描述语言可以进行方便的描述,经过生成元件后可作为一个标准元件进行
13、调用。同时,借助于开发设计平台,可以进行系统的仿真和硬件测试等。对于数字电子技术实验和课程设计等,特别是数字系统性的课题,借助PLD器件和硬件描述语言等开发手段,即可设计出各种比较复杂的数字系统,如设计频率计、交通控制灯、秒表等,有助于实验质量的提高和对学生综合能力的锻炼。同时,作为电子信息工程专业的学生,EDA技术应用于毕业设计中,可快速、经济地设计各种高性能的电子系统,并且很容易实现、修改及完善。1.2 课题研究内容随着社会的发展,科技水平的日益提高,很多高新技术都应用于电子设计产品的设计中,比如,本设计中的学校打铃器就应用了FPGA技术,不仅能够非常准确的设定响铃时间,而且能直观地显示时
14、、分、秒等信息,为人们的使用带来了很大的方便。本课题是基于FPGA的学校打铃器的设计,下面简要介绍现场可编程门阵列(FPGA)的发展历程及其优点。1.2.1 FPGA 的发展历程作为一种可编程逻辑器件,现场可编程门阵列(Field Programmable Gate Array, FPGA)的出现是 PLD 发展变化的必然,他的出现推动着可编程逻辑器件的进一步发展。因此说,了解了可编程逻辑器件的发展历程,也就了解了 FPGA 的发展历程。PLD 是 20 世纪 70 年代发展起来的一种新型器。它的应用不仅简化了电路设计,降低了成本,提高了系统的可靠性,而且给数字系统的设计方式带来了革命性的变化
15、,其结构和工艺的变化经历了一个不断发展的过程。20 世纪 70 年代,早期的可编程逻辑器件只有可编程只读存储器(PROM) 、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(EEPROM)3 种。随后,出现了一类结构稍微复杂的可编程芯片,即可编程逻辑阵列(Programmable Logic Array, PLA) 。PLA 在结构上由一个可编程的与阵列和可编程的或阵列构成,阵列规模小,编程过程复杂繁琐。PLA 既有现场可编程的,又有掩膜可编程的 2。如今,FPGA 期间已经成为当前主流的可编程逻辑器件之一。经过 20 年的发展,可编程逻辑器件已经取得了长足的进步,资源更加丰富,使用
16、越来越方便。将来的可编程逻辑器件,密度会更高,速度会更快,功耗会更低,同时还会增加更多的功能,向着继承了可编程逻辑、CPU 、存储器等组件的可编程单片系统(System On Programmable Chip,SOPC)方向发展。1.2.2 FPGA 的优点概括地说,FPGA器件具有下列优点:高密度、高速度、系列化、标准化、小型本论文版权归作者所有,仅供学习参考,盗者必究!4化、多功能、低功耗、低成本,设计灵活方便,可无限次反复编程,并可现场模拟调试验证。使用FPGA器件,一般可在几天到几周内完成一个电子系统的设计和制作,可以缩短研制周期,达到快速上市和进一步降低成本的要求。用FPGA器件实
17、现数字系统时用的芯片数量少,从而减少芯片的使用数目,减少印刷线路板面积和印刷线路板数目,最终导致系统规模的全面缩减 3。1.3 器件及工具介绍1.3.1 Quartus设计步骤Quartus II 是 Altera 公司的综合性 PLD 开发软件,支持原理图、VHDL、VerilogHDL 以及 AHDL(Altera Hardware Description Language)等多种设计输入形式。内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD 设计流程 4。其设计流程包括设计输入、编译、仿真与定时分析、编程与验证。设计输入包括原理图输入、HDL 文本输入、EDIF 网表
18、输入、波形输入等几种方式。编译时要根据设计要求设定编译方式和编译策略,然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合、器件适配,供分析、仿真和编程使用。设计完成后需要进行仿真,可以测试设计的逻辑功能和延时特性。最后可以用得到的编程文件通过编程电缆配置PLD,进行在线测试。在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重新测试。1.3.2 VHDL 特点硬 件 描 述 语 言 HDL( HardwareDescriptionLanguage) 诞 生 于 1962 年 。 与SDL( SoftwareDescriptionLanguage) 相 似 , 经
19、历 了 从 机 器 码 ( 晶 体 管 和 焊 接 ) 、汇 编 ( 网 表 ) 、 到 高 级 语 言 ( HDL) 的 过 程 5。 HDL 是 用 形 式 化 的 方 法 描 述 数 字电 路 和 设 计 数 字 逻 辑 系 统 的 语 言 。 主 要 用 于 描 述 离 散 电 子 系 统 的 结 构 和 行 为 。HDL 和原理图是两种最常用的数字硬件电路描述方法,HDL 设计法具有更好的可移植性、通用性和模块划分与重用性的特点,在目前的工程设计开发流程是基于 HDL 的 6。在目前的工程设计中被广泛使用。所以,我们在使用 FPGA 设计数字电路时,其开发流程是基于 HDL 的。VH
20、DL 描 述 数 字 电 路 系 统 设 计 的 行 为 、 功 能 、 输 入 和 输 出 。 它 在 语 法 上 与 现 代编 程 语 言 相 似 , 比 如 C 语 言 。 应 用 VHDL 进 行 系 统 设 计 , 有 以 下 几 方 面 的 特 点 :功 能 强 大 、 可 移 植 性 、 独 立 性 、 可 操 作 性 、 灵 活 性 。第二章 系统方案设计2.1 设计方案分析与选择方案一:采用通用数字器件来设计。比如,打铃器结构组成中最基本的是数字钟。数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间本论文版权归作者所有,仅供学习参考,盗者必究!5不可
21、能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的 1HZ 时间信号必须做到准确稳定。采用此方法设计数字钟通常使用石英晶体振荡器电路构成数字钟。基于此设计方案的数字钟部分结构组成如图 2-1 所示。图 2-1 数字钟部分结构组成方案二:采用基于 FPGA 的 EDA 技术来设计。打铃器结构组成中的数字部分可全部在 FPGA 内部完成,底层模块可以采用 HDL 语言或者软件中的库元件。这种设计方法可使得系统的集成度提高,抗干扰能力也相应提高。综合分析和比较方案一和二,方案二中利用 EDA 技术设计学校打铃器相对设计方式灵活,系统连线简单并易于校验,修改及完善也相对便捷,可以
22、避免方案一中所用的芯片比较多,连线过于麻烦的问题。因此,本设计总体设计方案采用基于 EDA技术的方法。2.2 学校打铃器总体构成本设计内容为基于 FPGA 的学校打铃器,控制器底层模块采用硬件描述语言设计,顶层模块设计方法采用原理图方式;打铃器具有计时功能,能对时、分、秒正常计时和显示;又具有定时打铃功能,当设定的打铃时间与学校上下课时间点相同时打铃;并且计时时间、定时时间、打铃时长(1S15S 内)自由设置和调整,其数据信息通过数码管或 LCD 显示。学校打铃器总体设计框图如图 2-2 所示。振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒计数器满 60
23、后向分计数器进位,分计数器满 60 后向小时计数器进位,小时计数器按照“24 翻 1”规律计数。计满后各计数器清零,重新计数。计数器的输出分别经译码器送数码管显示。在控制信号中除了一般的校时信号外,还有时钟清零本论文版权归作者所有,仅供学习参考,盗者必究!6信号。时基电路可以由石英晶体振荡电路构成,晶振频率为 25MHz,经过分频可得到秒脉冲信号。译码显示电路由七段译码器完成,显示由数码管构成。图 2-2 学校打铃器总体设计框图2.3 分频模块设计晶体振荡器是构成数字时钟的核心,振荡器的稳定度及频率的精度决定了数字钟计时的准确程度,它保证了时钟的走时准确及稳定。石英晶体的选频特性非常好,只有某
24、一频率点的信号可以通过它,其它频率段的信号均会被它所衰减,而且振荡信号的频率与振荡电路中的 R、C 元件的数值无关 7。因此,这种振荡电路输出的是准确度极高的信号。本设计 FPGA 外部使用的是 25MHz 晶振,在其内部再根据需要进行分频。如图 2-3 所示为分频模块连接图。分频模块由 25k 分频、200 分频、5 分频、50k分频、250 分频组成。其中 25k 分频的输出作为按键消抖模块的输入时钟信号,其频率为 1kHz; 200 分频的输出作为计时模块调分模块的时钟输入,其频率为 5Hz,周期为 0.2s;5 分频的输出作为计时模块中秒计时的输入,为 1Hz 频率的 1s 时钟信号;
25、50k 分频的输出作为动态扫描模块的输入时钟,其频率为 500Hz;250 分频的输出作为计时模块调时模块的输入时钟,其频率为 2Hz,周期为 0.5s。本论文版权归作者所有,仅供学习参考,盗者必究!7图 2-3 分频模块连接图现以 5 分频为例进行仿真,当时钟到第五个上升沿时,输出由“0”变为“1” ,下降沿时又由“1”变为“0” ,产生一个脉冲。满足设计要求。如图 2-4、2-5 所示分别为分频模块仿真图及其 RTL 图。图 2-4 分频模块仿真图图 2-5 分频模块 RTL 图2.4 消抖模块设计按键开关电子设备实现人机对话的重要的器件之一 8。由于大部分按键式机械触点,在触点闭合和断开
26、时都会产生抖动,为避免抖动引起的误动作造成系统的不稳定,就要求消除按键的抖动,确保按键每按一次只做一次响应。绝大多数按键都是机械式开关结构,由于机械式开关的核心部件为弹性金属簧片,因而在开关切换的瞬间会在接触点出现来回弹跳的现象,虽然只是进行了一次按键,结果在按键信号稳定的前后出现了多个脉冲 9。如果将这样的信号直接送给微处理器扫描采集的话,将可能把按键稳定前后出现的脉冲信号当做按键信号,这就出现人为的一次按键但微处理器以为多次按键的现象。机械式按键的抖动次数、抖动时间、抖动波形都是随机的,不同类型的按键其最长抖动时间也有差别,抖动时间的长短和按键的机械特征有关,一般为 510ms,但是,有些
27、按键的抖动时间可达到 20ms,甚至更长。在本设计初期完成后,下载程序测试时,拨动按键或者按下按键时显示出现异常,本论文版权归作者所有,仅供学习参考,盗者必究!8这就需要加入按键消抖模块。按键消抖模块一般有硬件和软件两种方式,硬件就是加入去抖动电路,这样从根本上解决了按键抖动问题,除了专用电路以外,还可用编程FPGA 或者 CPLD 设计相应的逻辑和时序电路,对按键信号进行处理,同样可以达到去抖动的目的,本次设计中采用硬件模块消抖动方式。模块的实现方法是先判断是否有按键按下,如有按键按下则延时一段时间,待抖动过去之后再读行线状态,如果仍有低电平行线,则确定有按键按下,然后产生一个有按键按下的信
28、号。该模块有一个时钟输入端口,输入时钟信号是分频出来的 1kHZ的时钟;有一个输入端口与按键端相连;一个输出端口,用于输出有按键按下的信号。如图 2-6 所示为消抖模块符号图。图 2-6 消抖模块符号图本设计的按键消抖模块内部电路相当于一个 D 触发器,如图 2-7 所示为消抖模块RTL 图。图 2-7 消抖模块 RTL 图该模块在这里实现的比较简单,原理是当有按键按下的时候,d 会变成高电平,当有时钟上升沿到来且按键按下时,q 输出高电平。由于时钟脉冲为 1kHZ,故从有按键按下到输入信号产生大概需要 1ms。而按键产生抖动的时间大约 2ms 到 10ms,所以一旦计数完成,抖动已经过去,不
29、会发生重键现象了,这样就去除了抖动。如图2-8 所示为按键消抖模块波形仿真图。本论文版权归作者所有,仅供学习参考,盗者必究!9图 2-8 消抖模块波形仿真2.5 时钟模块设计时钟模块是学校打铃器最基本的模块,主要实现基本计时、调时、调分功能,包括秒计数模块、分计数模块、时计数模块和调时模块。2.5.1 秒计数模块如图 2-9 所示为秒计数模块符号图。输入端口 clr 是秒计数模块的清零信号,也是整个数字中的使能信号,低电平有效; cp 是秒脉冲输入端口,外接分频模块频率为 1Hz 的时钟信号;输出端口 sqmsl30是秒时钟的低位,sqmsh30 是高位;co 端口是进位输出端口,当秒计数到
30、59 时输出高电平,其它时候输出低电平。图 2-9 秒计数模块符号图如图 2-10、2-11 所示分别为秒计数模块 RTL 图及波形仿真图。由图可以看出,随着 1s 时钟脉冲上升沿的到来,每来一次秒计数的低位就产生一个脉冲,当计到 9时变为 0,秒计数的高位变为 1,当低位为 9,高位为 5 时,也就是计到 59 时,高、低位都变为 0,且输出 co 产生一个脉冲信号,由仿真图可知满足设计的要求。图 2-10 秒计数模块 RTL 图本论文版权归作者所有,仅供学习参考,盗者必究!10图 2-11 秒计数模块波形仿真图2.5.2 分计数模块如图 2-12、2-13 所示为分计数模块符号图及 RTL
31、 图。输入端口 clr 是分计数模块的清零信号,也是整个数字中的使能信号,低电平有效; clk 是秒脉冲输入端口输出端口;min030是分计时的低位,min130是分计时的高位;co 端口是进位输出端口,接时计数的 clk 作为时钟输入,当秒计数到 59 时输出高电平,其它时候输出低电平。图 2-12 分计数模块符号图图 2-13 分计数模块 RTL 图如图 2-14 所示为分计数模块波形仿真图。给 clk 一定时钟信号之后,clr 高电平清零无效,每次达到时钟脉冲上升沿时,分计数低位 min0 计一个数,计到 9 时向高位进位,当计到 59 时,模块进位输出 co 产生一个脉冲信号,由仿真图
32、可知此模块设计满足设计要求。本论文版权归作者所有,仅供学习参考,盗者必究!11图 2-14 分计数模块波形仿真图2.5.3 时计数模块图 2-15 时计数模块符号图如图 2-15 所示为时计数模块符号图。输入端口 clr 是时计数模块的清零信号,也是整个数字中的使能信号,低电平有效; clk 是秒脉冲输入端口输出端口; sl30是分计时的低位,sh30是分计时的高位。图 2-16 时计数模块波形仿真图时计数模块波形仿真图如图 2-16 所示。clk 接分计时模块的仅为输出,给定时钟信号,clr 高电平清零无效,每次达到时钟脉冲上升沿时,时计数低位 sl 计一个数,计到 9 时向高位进位,当计到
33、 24 时,高、低都变为零,计数重新开始,由仿真图可知此模块设计满足设计要求。本论文版权归作者所有,仅供学习参考,盗者必究!122.5.4 调时模块图 2-17 调时模块符号图如图 2-17 所示为调时模块符号图。本设计的调时模块类似于二选一数据选择器,输入端口 key 是调时模块的调时开关,当为高电平是输出 a 的数据,当为低电平时输出 b 的数据;a 端接上一个计时模块的进位输出;b 端接分频器的输出时钟脉冲;c 为模块的输出,作为计时模块的输入时钟。由此可知当 key 为低电平时可进行调时、调分。图 2-18 调时模块波形仿真图如图 2-18 所示为调时模块波形仿真图。当 key 为低电
34、平时,调时模块输出 b 的脉冲;当 key 为高电平时,输出 a 的脉冲。由此可知,本模块满足设计要求。2.6 闹钟模块设计本论文版权归作者所有,仅供学习参考,盗者必究!13图 2-19 闹钟模块总体设计框图如图 2-19 所示为闹钟模块总体设计框图。本模块主要由定时模块、比较模块组成,另外还有正常计时时间和定时时间输出选择切换模块,连接基本数字钟模块的时、分、秒输出,以及定时时间的时、分输出,另一端连接动态显示模块,通过外部按键来选择基本时钟或者是闹钟时间设定的显示。定时控制模块有复位键、调时调分切换键、累加键,来设定闹钟时间。2.6.1 定时模块如图 2-20、2-21 所示分别为定时模块
35、符号图及 RTL 图。输入端口 reset 是定时模块的复位信号,也是整个打铃器的使能信号,低电平有效; k1 是闹钟时间设定时、分切换按键,高电平时对时进行调节,低电平时对分进行调节;up_key 是调整闹钟时间的累加按键,另一端接按键消抖模块,每按一次计数加一;Q_tmpma、Q_tmpmb、Q_tmpha、Q_tmphb 分别为闹钟时间的分低位、分高位、时低位时高位。本论文版权归作者所有,仅供学习参考,盗者必究!14图 2-20 定时模块符号图图 2-21 定时模块 RTL 图如图 2-22 所示为定时模块波形仿真图。当复位键为高电平、k1 为低电平时,每按下一次 up_key 闹钟分低
36、位就计一个数,计到 9 时向高位进一,当计到 59 时重新从0 开始计数;当复位键为高电平、k1 为高电平时,开始对时计数,up_key 每来一个脉冲时低位就计一个数,计到 9 时变为 0,高位进位,计到 23 时重新计数,由波形仿真克制此模块满足设计要求。本论文版权归作者所有,仅供学习参考,盗者必究!15图 2-22 定时模块波形仿真图2.6.2 比较模块如图 2-23 所示为比较模块设计框图。设计思路为:将闹钟设定的时间与及时模块的时间分别比较,即时高位、时低位、分高位、分低位分别进行比较,若时间相等,则输出高电平,输出信号与 1Hz 时钟信号相与,获得的信号接蜂鸣器,可实现时隔一秒报警一
37、次,报警时长为一秒。图 2-23 比较模块设计框图如图 2-24 所示为比较模块符号图。Clk0 为比较模块的时钟,接 200 分频器输出的 1Hz 时钟信号; QH_B30为时钟的时高位,QH_A30为时钟的时低位,QMB30为时钟的分高位,QM_A30为时钟的分低位;HARM_B30为闹钟时间的时高位,HARM_A30为闹钟时间的时低位,MARM_B30 为闹钟时间的分高位,MARM_A30为闹钟时间的分低位;SPEAK 为比较模块的输出,接报警时长设定模块的输入。图 2-24 比较模块符号图如图 2-25 所示为比较模块波形仿真图。给 clk0 一定时钟,设定闹钟时间时高位本论文版权归作
38、者所有,仅供学习参考,盗者必究!16为 1,时低位为 2,分高位、分低位都为 0,即闹钟时间为十二点整,;首先设定时钟模块的时高位设定为 1,时低位为 1,分高位为 5,分低位为 9,即十一点五十九分,再设定为十二点整;由波形仿真图可知,当时钟时间由十一点五十九分变为十二点整时,speak 输出时钟波形,可知比较模块的设计满足要求。图 2-25 比较模块波形仿真图2.7 打铃模块设计如表 2-1 所示为学校作息时间。学校作息时间分为春季和夏季之分,上课下课时间共包括 46 个时间点,将此写入程序中,当时钟时间与这些时间相同时,输出高电平,与时钟信号相与,作为报警模块的输入。表 2-1 学校作息
39、时间春季作息时间 夏季作息时间上课 下课 上课 下课08:30 09:15 08:30 09:1509:15 10:10 09:15 10:1010:20 11:05 10:20 11:05上午11:15 12:00 11:15 12:0013:30 14:15 14:00 14:4514:25 15:10 14:55 15:4015:20 16:05 15:50 16:35下午16:15 17:00 16:45 17:3018:30 19:15 19:00 19:4519:25 20:10 19:55 20:4020:20 21:05 20:50 21:35晚上22:00 22:00作 息时
40、 段本论文版权归作者所有,仅供学习参考,盗者必究!17图 2-26 打铃模块设计框图如图 2-26 所示为打铃模块设计框图。模块包括作息选择和时间比较部分,其设计思路为:通过 k3 进行春夏作息时间选择,将时钟的时高位、时低位、分高位、分低位分别于表 2.1 中的打铃时间数据进行比较,若相等,则 Q_Y 输出高电平,否则输出低电平。图 2-27 打铃模块符号图如图 2-27 所示为打铃模块符号图。K3 为切换春夏作息时间的按键,当 K3 为高电平时选择春季作息时间,方为低电平时选择夏季作息时间;Q_HB30接时钟时间的时高位,Q_HA30 接时钟时间的时低位, Q_MB30接时钟时间的分高位,
41、Q_MA30接时钟时间的时低位;Q_Y 为打铃模块的输出,接报警模块的输入。本论文版权归作者所有,仅供学习参考,盗者必究!18图 2-28 打铃模块波形仿真图如图 2-28 所示为打铃模块波形仿真图。可以看出:当 K3 为高电平时,选择春季作息时间,当时钟时间由八点二十九分跳变为八点三十分时,Q_Y 由低电平变为高电平,此为春季作息时间上午的的八点三十分;当 K3 为低电平时,选择夏季作息时间,当时钟时间由八点二十九分跳变为八点三十分时,Q_Y 由低电平变为高电平,此为夏季作息时间上午的八点三十分;当 K3 为高电平时,选择春季作息时间,当时钟时间由十三点二十九分跳变为十三点三十分时,Q_Y
42、由低电平变为高电平,此为春季作息时间下午的十三点三十分;当 K3 为低电平时,选择夏季作息时间,当时钟时间由十三点五十九分跳变为十四点整时,Q_Y 由低电平变为高电平,此为夏季作息时间下午的十四点整。由此可知打铃模块满足设计要求。2.8 报警模块设计报警模块主要包括报警时长设定模块和蜂鸣器发生模块,实现学校作息时间报时和闹钟报警的功能。2.8.1 报警时长设定模块如图 2-29、2-30 所示分别为报警时长设定模块符号图和 RTL 图。其中 Reset 为复位端,低电平有效;up_key 为调节报警时间的按键,时长可从一秒调至十五秒,连接本论文版权归作者所有,仅供学习参考,盗者必究!19按键模
43、块;speaktime30为报警时长的输出,连接蜂鸣器发生模块的输入端。图 2-29 报警时长设定模块符号图图 2-30 报警时长设定模块 RTL 图如图 2-31 所示为报警时长设定模块波形仿真图。复位按键 reset 设为高电平,给up_key 一定脉冲时钟,没到达一次脉冲上升沿,speaktime 就加一,当计到 15 时重新从 0 开始,实现了报警时长在 1 至 15 秒内自由设定的要求。图 2-31 报警时长设定模块波形仿真图2.8.2 蜂鸣器发声模块如图 2-32 所示为蜂鸣器电路。本设计需用两个蜂鸣器,一个蜂鸣器用于学校作息时间报时,另外一个蜂鸣器用于闹钟报警。本论文版权归作者所
44、有,仅供学习参考,盗者必究!20图 2-32 蜂鸣器电路如图 2-33,2-34 所示为蜂鸣器发声模块符号图和 RTL 图。QY 接比较模块的输出,相当于蜂鸣器发生模块的使能信号;CLK 接 1Hz 的时钟模块,报警可实现每一秒响一下;speaktime30接报警时长设定模块的输出,为报警持续的时间长度,范围在一秒至十五秒以内;q_20s 为蜂鸣器发声模块的输出,接蜂鸣器的负极。图 2-33 蜂鸣器发声模块符号图图 2-34 蜂鸣器发声模块 RTL 图如图 2-35 所示为蜂鸣器发声模块波形仿真图。给 clk 接入一定脉冲,speaktime为一秒,当 Q_Y 为高电平时,伴随时钟脉冲下一个周
45、期的到来,q_20s 由低电平变为高电平,高电平持续时间与时钟脉冲的一个周期相等,实际测试时,时钟脉冲为 1Hz的秒信号,所以报警时长为 1s;当设定 speaktime 为 15 秒时,q_20s 伴随时钟脉冲下一个周期的到来,由低电平变为高电平,持续时间与时钟脉冲的 15 个周期相等,可实现 15s 的报警时长。由此可知,蜂鸣器发生模块满足设计要求,可实现 1-15 秒自由本论文版权归作者所有,仅供学习参考,盗者必究!21调节。图 2-35 蜂鸣器发声模块波形仿真图2.9 显示模块设计对于本学校打铃器的设计,必不可少的就是显示模块的设计,因为根据设计要求,时钟的计时显示、闹钟的时间设定、蜂
46、鸣器报警时长的设定,都需要数码管来显示,实际应用的时候,数码管的显示是最直观的表现。2.9.1 时间切换模块如图 2-36 所示为时间切换模块设计框图。设计思路为:通过 K2 来进行时间切换,当 K2 为高电平时,输出正常计时时间;当 K2 为低电平时,输出定时时间。本论文版权归作者所有,仅供学习参考,盗者必究!22图 2-36 时间切换模块设计框图图 2-37 时间切换模块符号图如图 2-37 所示为时间切换模块符号图。K2 为切换按键输入,用于切换时间输出;QSAI30为时钟时间秒低位,QSBI30为时钟时间秒高位,QMAI30 为时钟时间分低位,QMBI30为时钟时间分高位,QHAI30
47、为时钟时间时低位,QHBI30为时钟时间时高位;QH_ARM_A30为定时时间时低位, QH_ARM_B30为定时时间时高位,QM_ARM_A30为定时时间分低位,QM_ARM_B30 为定时时间分高位;Q_HAO30为时间切换模块的时低位,Q_HBO30 为时间切换模块的时高位,本论文版权归作者所有,仅供学习参考,盗者必究!23Q_MAO30为时间切换模块的分低位,Q_MBO30 为时间切换模块的分高位,Q_SAO30为时间切换模块的秒低位,Q_SBO30 为时间切换模块的秒高位。图 2-38 时间切换模块波形仿真图如图 2-38 所示为时间切换模块波形仿真图。设定时钟时间为 21 点 34
48、 分 52 秒,定时时间为 12 点整;当 K2 为高电平时,模块输出为时钟时间 21 点 34 分 52 秒;当K2 为低电平时,模块输出为定时时间十二点整。由此可知,本模块满足设计要求。2.9.2 动态扫描模块所谓动态显示就是一位一位地轮流点亮各位显示器(扫描) ,对于显示器的每一位而言,每隔一段时间点亮一次。虽然在同一时刻只有一位显示器在工作(点亮) ,但利用人眼的视觉暂留效应和发光二极管熄灭时的余辉效应,看到的却是多个字符“同时”显示。显示器的亮度既与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关 10。若显示器的位数不大于 8 位,则控制显示器公共极电位只需一个 8位 I/O
49、 口(称为扫描口或字位口) ,控制各位 LED 显示器所显示的字形也需要一个 8位口(称为数据口或字形口) 。调整电流和时间参烽,可实现亮度较高较稳定的显示11。7 段数码管一般由 8 个发光二极管组成,其中由 7 个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。当发光二极管导通时,相应的一个点或一个笔画发光。控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。发光二极管的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极数码管,本设计使用共阴数码管,如图 2-39 所示为七段共阴数码管结构图。本论文版权归作者所有,仅供学习参考,盗者必究!24图 2-39 七段数码管结构如图 2-40 所示为数码管显示连接图。动态扫描电路将计数器输出的 8421BCD 码转换为数码管需要的逻辑状态,并且输出数码管的片选信号和位选信号 12。所谓动态扫描显示方式是在显示某一位 LED 显示块的数据的时候,让其它位不显示,然后在显示下一位的数据,同时关闭其他显