版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 秒计数模块102.5.2 分计数模块112.5.3 时计数模
2、块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摘 要打铃器为学校上下课时间的准确控制提供了很大的便利,并且在工厂、办公室等场合也起到了提醒人们时间的作用,因此打铃器的设计有一定的实用意义。本设计的学校打铃器
3、采用基于现场可编程门阵列(FPGA)的方法,底层模块采用硬件描述语言(HDL)设计,不仅能对时、分、秒正常计时和显示,而且还可进行闹铃时间的设定,上下课时间报警,报警时间可在1至15秒自由设定。系统主芯片采用美国Altera公司的EP3C40F484I7器件,由时钟模块、控制模块、闹钟模块、定时模块、数据译码模块、显示以及报时等模块组成,由按键进行时钟的校时、清零、启停等。本文在介绍FPGA器件的基础上,着重阐述了如何使用FPGA器件进行系统的开发,以及如何实现学校打铃系统。通过仿真验证及实际测试,打铃器具有正常计时、定时报警、报警时长设定等功能,可为日常作息提供准确、便捷的提醒。系统运行稳定
4、,设计方法可行。关键词:打铃器 现场可编程门阵列 硬件描述语言 ABSTRACTSchool Bell provides great convenience for people to control the accurate bell-time in school, and also plays an important role in the work and life in factories, offices, and many other occasions. So it is of great practical significance for us. This design i
5、s 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, which rings on class time. We choose EP3C40F484I7(Altera Corp.,the USA) as the system main chip. This system is ma
6、de 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 the time, and start or stop the clock. Based on describing devices of FPGA,this article focuses on the development me
7、thod 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 provide convenient and accurate remind of daily routine.It is proved that the operation of this system is stable, and th
8、e design method is possible.Key words:alarm clock; Field Programmable Gate Array; hardware description language第一章 绪论1.1选题目的打铃器的数字化给人们生产生活带来了极大的方便,而且大大地扩展了时钟原先的报时功能。诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以时钟数字化为基础的。因此,研究时钟及扩展应用,有着非常现实的意义。电铃广泛应用于学校、机关及工矿企事业单位,可实现作息时间的固定周期打铃,提示人们工作、学习或是休息
9、。自古以来教育就已经成为社会生活中必不可少的一部分,随着教育体系的逐渐完善,定时提醒上下课时间的工具也尤为重要,不仅是学校中,在工厂、办公室等任何需要时间提醒的场合,打铃器都拥有举足轻重的位置,尤其是进入现代化社会以后,准确、方便的多功能打铃器便具有独特的研究意义。另外,打铃器也拥有悠久的历史,从最早的人工打铃,到如今的电动打铃、智能打铃,经历了一系列的变革,人工打铃不仅费时费力,而且准确性也不能保证,还可能会造成人为的误时误报。当代社会飞速发展的主要标志之一就是信息产品的广泛使用,而且产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平
10、的提高和电子产品设计开发技术的发展。随着技术的发展,出现了各种各样的打铃器,有些带有音乐播放功能,可编入作息时间程序,并且能同时控制路灯、广播等其他电器,无线音乐打铃器无需施工布线,降低了安装成本,还可以根据使用需要随时移动音乐电铃的位置,无线遥控的距离可达500米,成为学校、部队、工厂等部门的打铃控制新宠,十分简洁、便捷。如今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。它与传统的电子产品在设计上的显着区别是大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低,同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期1。EDA技术正是为了适应现代电子技
11、术的要求,吸收众多学科最新科技成果而形成的一门新技术。本设计将借助EDA技术,完成基于FPGA器件的学校打铃器的设计。EDA技术的发展经历了一个由浅到深的过程,先后经历了CAD、CAE和现代意义上的EDA三个阶段。在可编程逻辑器件(PLD)内部,数字电路可用硬件描述语言可以进行方便的描述,经过生成元件后可作为一个标准元件进行调用。同时,借助于开发设计平台,可以进行系统的仿真和硬件测试等。对于数字电子技术实验和课程设计等,特别是数字系统性的课题,借助PLD器件和硬件描述语言等开发手段,即可设计出各种比较复杂的数字系统,如设计频率计、交通控制灯、秒表等,有助于实验质量的提高和对学生综合能力的锻炼。
12、同时,作为电子信息工程专业的学生,EDA技术应用于毕业设计中,可快速、经济地设计各种高性能的电子系统,并且很容易实现、修改及完善。1.2课题研究内容 FPGA的发展历程作为一种可编程逻辑器件,现场可编程门阵列(Field Programmable Gate Array,FPGA)的出现是PLD发展变化的必然,他的出现推动着可编程逻辑器件的进一步发展。因此说,了解了可编程逻辑器件的发展历程,也就了解了FPGA的发展历程。PLD是20世纪70年代发展起来的一种新型器。它的应用不仅简化了电路设计,降低了成本,提高了系统的可靠性,而且给数字系统的设计方式带来了革命性的变化,其结构和工艺的变化经历了一个
13、不断发展的过程。20世纪70年代,早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(EEPROM)3种。随后,出现了一类结构稍微复杂的可编程芯片,即可编程逻辑阵列(Programmable Logic Array,PLA)。PLA在结构上由一个可编程的与阵列和可编程的或阵列构成,阵列规模小,编程过程复杂繁琐。PLA既有现场可编程的,又有掩膜可编程的2。如今,FPGA期间已经成为当前主流的可编程逻辑器件之一。经过20年的发展,可编程逻辑器件已经取得了长足的进步,资源更加丰富,使用越来越方便。将来的可编程逻辑器件,密度会更高,速度会更快
14、,功耗会更低,同时还会增加更多的功能,向着继承了可编程逻辑、CPU、存储器等组件的可编程单片系统(System On Programmable Chip,SOPC)方向发展。 FPGA的优点用FPGA器件实现数字系统时用的芯片数量少,从而减少芯片的使用数目,减少印刷线路板面积和印刷线路板数目,最终导致系统规模的全面缩减3。1.3器件及工具介绍 Quartus设计步骤Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式。内嵌自有的综合器以
15、及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程4。其设计流程包括设计输入、编译、仿真与定时分析、编程与验证。设计输入包括原理图输入、HDL 文本输入、EDIF 网表输入、波形输入等几种方式。编译时要根据设计要求设定编译方式和编译策略,然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合、器件适配,供分析、仿真和编程使用。设计完成后需要进行仿真,可以测试设计的逻辑功能和延时特性。最后可以用得到的编程文件通过编程电缆配置PLD,进行在线测试。在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重新测试。 VHDL特点硬件描述语言HDL(HardwareDesc
16、riptionLanguage)诞生于1962年。与SDL(SoftwareDescriptionLanguage)相似,经历了从机器码(晶体管和焊接)、汇编(网表)、到高级语言(HDL)的过程5。HDL是用形式化的方法描述数字电路和设计数字逻辑系统的语言。主要用于描述离散电子系统的结构和行为。HDL和原理图是两种最常用的数字硬件电路描述方法,HDL 设计法具有更好的可移植性、通用性和模块划分与重用性的特点,在目前的工程设计开发流程是基于 HDL 的6。在目前的工程设计中被广泛使用。所以,我们在使用 FPGA 设计数字电路时,其开发流程是基于HDL的。VHDL描述数字电路系统设计的行为、功能、
17、输入和输出。它在语法上与现代编程语言相似,比如C语言。应用VHDL进行系统设计,有以下几方面的特点:功能强大、可移植性、独立性、可操作性、灵活性。第二章 系统方案设计2.1设计方案分析与选择方案一:采用通用数字器件来设计。比如,打铃器结构组成中最基本的是数字钟。数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。采用此方法设计数字钟通常使用石英晶体振荡器电路构成数字钟。基于此设计方案的数字钟部分结构组成如图2-1所示。图2-1 数字钟部分结构组成方案二:采用基于F
18、PGA的EDA技术来设计。打铃器结构组成中的数字部分可全部在FPGA内部完成,底层模块可以采用HDL语言或者软件中的库元件。这种设计方法可使得系统的集成度提高,抗干扰能力也相应提高。综合分析和比较方案一和二,方案二中利用EDA技术设计学校打铃器相对设计方式灵活,系统连线简单并易于校验,修改及完善也相对便捷,可以避免方案一中所用的芯片比较多,连线过于麻烦的问题。因此,本设计总体设计方案采用基于EDA技术的方法。2.2学校打铃器总体构成本设计内容为基于FPGA的学校打铃器,控制器底层模块采用硬件描述语言设计,顶层模块设计方法采用原理图方式;打铃器具有计时功能,能对时、分、秒正常计时和显示;又具有定
19、时打铃功能,当设定的打铃时间与学校上下课时间点相同时打铃;并且计时时间、定时时间、打铃时长(1S15S内)自由设置和调整,其数据信息通过数码管或LCD显示。学校打铃器总体设计框图如图2-2所示。振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计满后各计数器清零,重新计数。计数器的输出分别经译码器送数码管显示。在控制信号中除了一般的校时信号外,还有时钟清零信号。时基电路可以由石英晶体振荡电路构成,晶振频率为25MHz,经过分频可得到秒脉冲信号。译码显示电路由七段
20、译码器完成,显示由数码管构成。图2-2 学校打铃器总体设计框图2.3分频模块设计振荡器的稳定度及频率的精度决定了数字钟计时的准确程度,石英晶体的选频特性非常好,只有某一频率点的信号可以通过它,其它频率段的信号均会被它所衰减,而且振荡信号的频率与振荡电路中的R、C元件的数值无关7。因此,这种振荡电路输出的是准确度极高的信号。Hz如图2-3所示为。按键开关电子设备实现人机对话的重要的器件之一8。由于大部分按键式机械触点,在触点闭合和断开时都会产生抖动,为避免抖动引起的误动作造成系统的不稳定,就要求消除按键的抖动,确保按键每按一次只做一次响应。绝大多数按键都是机械式开关结构,由于机械式开关的核心部件
21、为弹性金属簧片,因而在开关切换的瞬间会在接触点出现来回弹跳的现象,虽然只是进行了一次按键,结果在按键信号稳定的前后出现了多个脉冲9。时钟模块是学校打铃器最基本的模块,主要实现基本计时、调时、调分功能,包括秒计数模块、分计数模块、时计数模块和调时模块。秒计数模块如图2-9所示为秒计数模块符号图。输入端口clr是秒计数模块的清零信号,也是整个数字中的使能信号,低电平有效; cp是秒脉冲输入端口,外接分频模块频率为1Hz的时钟信号;输出端口sqmsl3.0是秒时钟的低位,sqmsh3.0是高位;co端口是进位输出端口,当秒计数到59时输出高电平,其它时候输出低电平。图2-9 秒计数模块符号图如图2-
22、10、2-11所示分别为秒计数模块RTL图及波形仿真图。由图可以看出,随着1s时钟脉冲上升沿的到来,每来一次秒计数的低位就产生一个脉冲,当计到9时变为0,秒计数的高位变为1,当低位为9,高位为5时,也就是计到59时,高、低位都变为0,且输出co产生一个脉冲信号,由仿真图可知满足设计的要求。图2-10 秒计数模块RTL图分计数模块如图2-12、2-13所示为分计数模块符号图及RTL图。输入端口clr是分计数模块的清零信号,也是整个数字中的使能信号,低电平有效; clk是秒脉冲输入端口输出端口;min03.0是分计时的低位,min13.0是分计时的高位;co端口是进位输出端口,接时计数的clk作为
23、时钟输入,当秒计数到59时输出高电平,其它时候输出低电平。如图2-14所示为分计数模块波形仿真图。给clk一定时钟信号之后,clr高电平清零无效,每次达到时钟脉冲上升沿时,分计数低位min0计一个数,计到9时向高位进位,当计到59时,模块进位输出co产生一个脉冲信号,由仿真图可知此模块设计满足设计要求。时计数模块如图2-15所示为时计数模块符号图。输入端口clr是时计数模块的清零信号,也是整个数字中的使能信号,低电平有效; clk是秒脉冲输入端口输出端口;sl3.0是分计时的低位,sh3.0是分计时的高位。时计数模块波形仿真图如图2-16所示。clk接分计时模块的仅为输出,给定时钟信号,clr
24、高电平清零无效,每次达到时钟脉冲上升沿时,时计数低位sl计一个数,计到9时向高位进位,当计到24时,高、低都变为零,计数重新开始,由仿真图可知此模块设计满足设计要求。2.5.4调时模块如图2-17所示为调时模块符号图。本设计的调时模块类似于二选一数据选择器,输入端口key是调时模块的调时开关,当为高电平是输出a的数据,当为低电平时输出b的数据;a端接上一个计时模块的进位输出;b端接分频器的输出时钟脉冲;c为模块的输出,作为计时模块的输入时钟。由此可知当key为低电平时可进行调时、调分。 如图2-18所示为调时模块波形仿真图。当key为低电平时,调时模块输出b的脉冲;当key为高电平时,输出a的
25、脉冲。由此可知,本模块满足设计要求。2.6闹钟模块设计如图2-19所示为闹钟模块总体设计框图。本模块主要由定时模块、比较模块组成,另外还有正常计时时间和定时时间输出选择切换模块,连接基本数字钟模块的时、分、秒输出,以及定时时间的时、分输出,另一端连接动态显示模块,通过外部按键来选择基本时钟或者是闹钟时间设定的显示。定时控制模块有复位键、调时调分切换键、累加键,来设定闹钟时间。定时模块如图2-20、2-21所示分别为定时模块符号图及RTL图。输入端口reset是定时模块的复位信号,也是整个打铃器的使能信号,低电平有效; k1是闹钟时间设定时、分切换按键,高电平时对时进行调节,低电平时对分进行调节
26、;up_key是调整闹钟时间的累加按键,另一端接按键消抖模块,每按一次计数加一;Q_tmpma、Q_tmpmb、Q_tmpha、Q_tmphb分别为闹钟时间的分低位、分高位、时低位时高位。如图2-22所示为定时模块波形仿真图。当复位键为高电平、k1为低电平时,每按下一次up_key闹钟分低位就计一个数,计到9时向高位进一,当计到59时重新从0开始计数;当复位键为高电平、k1为高电平时,开始对时计数,up_key每来一个脉冲时低位就计一个数,计到9时变为0,高位进位,计到23时重新计数,由波形仿真克制此模块满足设计要求。比较模块如图2-23所示为比较模块设计框图。设计思路为:将闹钟设定的时间与及
27、时模块的时间分别比较,即时高位、时低位、分高位、分低位分别进行比较,若时间相等,则输出高电平,输出信号与1Hz时钟信号相与,获得的信号接蜂鸣器,可实现时隔一秒报警一次,报警时长为一秒。如图2-24所示为比较模块符号图。Clk0为比较模块的时钟,接200分频器输出的1Hz时钟信号;QH_B3.0为时钟的时高位,QH_A3.0为时钟的时低位,QMB3.0为时钟的分高位,QM_A3.0为时钟的分低位;HARM_B3.0为闹钟时间的时高位,HARM_A3.0为闹钟时间的时低位,MARM_B3.0为闹钟时间的分高位,MARM_A3.0为闹钟时间的分低位;SPEAK为比较模块的输出,接报警时长设定模块的输
28、入。如图2-25所示为比较模块波形仿真图。给clk0一定时钟,设定闹钟时间时高位为1,时低位为2,分高位、分低位都为0,即闹钟时间为十二点整,;首先设定时钟模块的时高位设定为1,时低位为1,分高位为5,分低位为9,即十一点五十九分,再设定为十二点整;由波形仿真图可知,当时钟时间由十一点五十九分变为十二点整时,speak输出时钟波形,可知比较模块的设计满足要求。2.7打铃模块设计如表2-1所示为学校作息时间。学校作息时间分为春季和夏季之分,上课下课时间共包括46个时间点,将此写入程序中,当时钟时间与这些时间相同时,输出高电平,与时钟信号相与,作为报警模块的输入。表2-1 学校作息时间作息时段春季
29、作息时间夏季作息时间上课下课上课下课上午08:3009:1508:3009:1509:1510:1009:1510:1010:2011:0510:2011:0511:1512:0011:1512:00下午13:3014:1514:0014:4514:2515:1014:5515:4015:2016:0515:5016:3516:1517:0016:4517:30晚上18:3019:1519:0019:4519:2520:1019:5520:4020:2021:0520:5021:3522:0022:00 如图2-26所示为打铃模块设计框图。模块包括作息选择和时间比较部分,其设计思路为:通过k3
30、进行春夏作息时间选择,将时钟的时高位、时低位、分高位、分低位分别于表2.1中的打铃时间数据进行比较,若相等,则Q_Y输出高电平,否则输出低电平。如图2-27所示为打铃模块符号图。K3为切换春夏作息时间的按键,当K3为高电平时选择春季作息时间,方为低电平时选择夏季作息时间;Q_HB3.0接时钟时间的时高位,Q_HA3.0接时钟时间的时低位,Q_MB3.0接时钟时间的分高位,Q_MA3.0接时钟时间的时低位;Q_Y为打铃模块的输出,接报警模块的输入。如图2-28所示为打铃模块波形仿真图。可以看出:当K3为高电平时,选择春季作息时间,当时钟时间由八点二十九分跳变为八点三十分时,Q_Y由低电平变为高电
31、平,此为春季作息时间上午的的八点三十分;当K3为低电平时,选择夏季作息时间,当时钟时间由八点二十九分跳变为八点三十分时,Q_Y由低电平变为高电平,此为夏季作息时间上午的八点三十分;当K3为高电平时,选择春季作息时间,当时钟时间由十三点二十九分跳变为十三点三十分时,Q_Y由低电平变为高电平,此为春季作息时间下午的十三点三十分;当K3为低电平时,选择夏季作息时间,当时钟时间由十三点五十九分跳变为十四点整时,Q_Y由低电平变为高电平,此为夏季作息时间下午的十四点整。由此可知打铃模块满足设计要求。2.8报警模块设计报警模块主要包括报警时长设定模块和蜂鸣器发生模块,实现学校作息时间报时和闹钟报警的功能。
32、报警时长设定模块如图2-29、2-30所示分别为报警时长设定模块符号图和RTL图。其中Reset为复位端,低电平有效;up_key为调节报警时间的按键,时长可从一秒调至十五秒,连接按键模块;speaktime3.0为报警时长的输出,连接蜂鸣器发生模块的输入端。如图2-31所示为报警时长设定模块波形仿真图。复位按键reset设为高电平,给up_key一定脉冲时钟,没到达一次脉冲上升沿,speaktime就加一,当计到15时重新从0开始,实现了报警时长在1至15秒内自由设定的要求。蜂鸣器发声模块如图2-32所示为蜂鸣器电路。本设计需用两个蜂鸣器,一个蜂鸣器用于学校作息时间报时,另外一个蜂鸣器用于闹
33、钟报警。图2-32 蜂鸣器电路如图2-33,2-34所示为蜂鸣器发声模块符号图和RTL图。QY接比较模块的输出,相当于蜂鸣器发生模块的使能信号;CLK接1Hz的时钟模块,报警可实现每一秒响一下;speaktime3.0接报警时长设定模块的输出,为报警持续的时间长度,范围在一秒至十五秒以内;q_20s为蜂鸣器发声模块的输出,接蜂鸣器的负极。 如图2-35所示为蜂鸣器发声模块波形仿真图。一秒,当Q_Y为高电平时,伴随时钟脉冲下一个周期的到来,q_20s由低电平变为高电平,高电平持续时间与时钟脉冲的一个周期相等,实际测试时,时钟脉冲为1Hz的秒信号,所以报警时长为1s;当设定speaktime为15
34、秒时,q_20s伴随时钟脉冲下一个周期的到来,由低电平变为高电平,持续时间与时钟脉冲的15个周期相等,可实现15s的报警时长。由此可知,蜂鸣器发生模块满足设计要求,可实现1-15秒自由调节。2.9显示模块设计对于本学校打铃器的设计,必不可少的就是显示模块的设计,因为根据设计要求,时钟的计时显示、闹钟的时间设定、蜂鸣器报警时长的设定,都需要数码管来显示,实际应用的时候,数码管的显示是最直观的表现。时间切换模块如图2-36所示为时间切换模块设计框图。设计思路为:通过K2来进行时间切换,当K2为高电平时,输出正常计时时间;当K2为低电平时,输出定时时间。 如图2-37所示为时间切换模块符号图。K2为
35、切换按键输入,用于切换时间输出;QSAI3.0为时钟时间秒低位,QSBI3.0为时钟时间秒高位,QMAI3.0为时钟时间分低位,QMBI3.0为时钟时间分高位,QHAI3.0为时钟时间时低位,QHBI3.0为时钟时间时高位;QH_ARM_A3.0为定时时间时低位,QH_ARM_B3.0为定时时间时高位,QM_ARM_A3.0为定时时间分低位,QM_ARM_B3.0为定时时间分高位;Q_HAO3.0为时间切换模块的时低位,Q_HBO3.0为时间切换模块的时高位,Q_MAO3.0为时间切换模块的分低位,Q_MBO3.0为时间切换模块的分高位,Q_SAO3.0为时间切换模块的秒低位,Q_SBO3.0
36、为时间切换模块的秒高位。如图2-38所示为时间切换模块波形仿真图。设定时钟时间为21点34分52秒,定时时间为12点整;当K2为高电平时,模块输出为时钟时间21点34分52秒;当K2为低电平时,模块输出为定时时间十二点整。由此可知,本模块满足设计要求。动态扫描模块显示器的亮度既与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关10。调整电流和时间参烽,可实现亮度较高较稳定的显示11。7段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。当发光二极管导通时,相应的一个点或一个笔画发光。控制相应的二极管导通,就能显示出各种字符,尽管显
37、示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。发光二极管的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极数码管,本设计使用共阴数码管,如图2-39所示为七段共阴数码管结构图。动态扫描电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且输出数码管的片选信号和位选信号12。只要保证每一位显示的时间间隔不要太大,利用人眼的视觉暂留的现象,就可以造成各位数据同时显示的假象13。2.10按键电路设计本设计需要对计时时间和闹钟时间进行调整,调整的过程需要用到按键电路,用到两种按键,一种是机械式开关,另外一种是拨码开关。由于按键电路比较简单,在此主要介绍按键
38、各自完成的功能。本设计由8个独立按键组成,包括两个拨码开关,六个机械式开关。其中2个拨码开关分别用于调节报警时长以及闹钟定时时间的调节;另外6个机械式开关分别用于复位,数码管显示切换,闹钟定时时、分切换,作息时间切换,时钟时间时、分调节。如图2-43所示为按键介绍图。图2-43 按键介绍2.11电源电路设计设计电源的目地是给FPGA、数码管、蜂鸣器、按键提供工作电压,所以电路设计极其重要,稳定性必须好,否则会影响各种器件的正常工作,进而影响到打铃器的准确性,在电子电路及设备中,一般都需要稳定的直流电源供电。单相交流电经过电源变压器、整流电路、滤波电路和稳压电路转换成稳定的直流电压。图2-44
39、直流稳压电源电路图如图2-44所示为直流稳压电源电路图。220V交流市电通过电源变压器变换成交流低压,再经过桥式整流电路D1D4和滤波电容C1的整流和滤波,在固定式三端稳压器LM7805的Vin和GND两端形成一个并不十分稳定的直流电压(该电压常常会因为市电电压的波动或负载的变化等原因而发生变化)。此直流电压经过LM7805的稳压和C3的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。LM317作为输出电压可变的集成三端稳压块,是一种使用方便、应用广泛的集成稳压块,改变R2阻值即可调整稳压电压值。D1,D2用于保护LM317,最大输出电流为2.2A,输出电压范围为1.2537V。
40、三端稳压器是一种标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件14。 第三章 实验结果分析3.1测试过程将设计程序下载到实验箱上进行实际测试,如图3-2所示为实际测试图二。此图为闹钟设定时间的显示,通过时钟、闹钟显示切换按键来进行切换,当为低电平时显示闹钟时间,可通过定时调时调分切换按键来选择调整时或分,按下闹钟时间调节的拨码开关进行闹钟时间设定,图中数码管显示从左到右依次为:报警时长高位、低位,定时时间时高位、时低位,分高位、分地位,秒高位、秒低位,当前显示闹钟设定时间为十二点十三
41、分,报警时长为十五秒,当时钟时间为十二点十三分时,蜂鸣器报警,时长为十五秒。如图3-3所示为实际测试图三。通过按下报警时长调节键来改变报警时长,图中报警时长更改为1秒,左为报警时长显示,右为时钟时间显示,显示时间为十二点十一分二十九秒。时钟时间计到设定的学校作息时间时,蜂鸣器报警,持续时间为当前设定的报警时长。测试说明,最终结果与预期效果基本一致,时、分、秒能够正常计数并可调节时间,学校上下课时间打铃功能正常,并且可以通过按键调整作息时间以及报警时长。1、当程序下载到实验箱上后,数码管显示全部为零,计数器不工作,经分析得知程序中的总的清零信号保持有效状态,改动程序后计数器开始计数。2、当秒时钟
42、计数到59时变0时,分计数模块滞后计数,考虑的器件的延时,将程序中秒的进位信号提前1秒。3、在对学校打零时间设置及更改的问题上,一开始想通过ROM实现,但思考之后还是采用了通过程序实现的方法,因为ROM只能读不能写。4、3.2结果分析从实际系统测试可知,学校打铃器满足设计要求,通过复位按键可对系统进行复位,可实现基本时钟的显示及调时调分,具有闹钟功能,作息时间有春夏之分,当前时钟时间与学校上下课时间点相同时打铃,且计时时间、定时时间、打铃时长可自由设置和调整,报警时长可在1至15秒内进行调节,其数据信息都可以通过数码管显示,闹钟报警和作息报时通过蜂鸣器来实现。本设计是采用硬件描述语言和FPGA
43、芯片相结合进行的学校打铃器的研究,从中可以看出EDA技术的发展在一定程度上实现了硬件设计的软件化,设计的过程相对简单,容易修改。本设计中仍存在一定不足,用来控制学校打铃器的按键为八个,数量较多,在实际应用中会带来不便,以后可以考虑进一步优化,如,可通过加入位选控制按键来实现节省按键资源,一键多用,便可以减少按键,实现同样的控制功能。另外,在本设计的基础上还可以进行一系列的创新,比如增加音乐报警的功能,取代稍有刺耳的蜂鸣声,会使用户在实际应用中多一份乐趣,还可以加入遥控功能、语音识别等等,相信随着电子技术的发展,打铃器的功能会更加多样化,满足人们的各种需要,为人们以后的工作和生活提供更多的方便。
44、参考文献1 刘皖,何道君,谭明编著.FPGA设计与应用M.北京:清华大学出版社,2006.6:12-162 廖日坤.CPLD/FPGA嵌入式应用开发技术白金手册M.北京:中国电力出版社,2003:212-2183 J.Bhasker著,徐振林等译.Verilog HDL硬件描述语言M.北京:机械工业出版社,2000:36-424 侯伯亨,顾新.VHDL硬件描述语言与数字电路逻辑设计M.西安:西安电子科技大学出版社,2001:12-165 高吉祥.电子技术基础实验与课程设计M.北京:电子工业出版社,2002:67-736 李国洪,沈明山.可编程器件EDA技术与实践M.北京:机械工业出版社,200
45、0:56-577 张庆双.电子元器件的选用与检测M.北京:机械工业出版社,2003:23-258 李婷.基于FPGA的按键弹跳消除模块的研究与应用J.科技创新导报,2008,(2):82-839 邢远秀,陈姚节.键盘消抖电路的研究与分析J.中国科技信息,2008,(1):20-2210 Zainalabedin Navabi.Vhdl: Analysis and Modeling of Digital SystemsM.New York:McGraw-Hill Professional,1998,(2):342-34611 王开军,姜宇柏.面向CPLD/FPGA的VHDL设计M.北京:机械工业
46、出版社,2006:28-6512 刘君,常明,秦娟.基于硬件描述语言(VHDL)的数字时钟设计J.天津理工大学学报,2007,23(4):40-4113 谭会生,张昌凡.EDA技术及应用M.西安:西安电子科技大学出版社,2002:89-92 14 李可.数字钟电路及应用M.北京:电子工业出版社,1996:72-76附 录一、程序清单1.分频模块(1)library ieee;use ieee.std_logic_1164.all;entity fenpin25k is port( clk :in std_logic; co:out std_logic);end entity;Architect
47、ure art of fenpin25k issignal cqi : integer range 1 to 25000;beginco<='1' when cqi=25000 and clk='0'else '0' process (clk) is beginif clk'event and clk='1'then if cqi=25000 then cqi<=1; else cqi<=cqi+1; end if; end if; end process; end architecture art;(2
48、)library ieee;use ieee.std_logic_1164.all;entity cnt5 is port( clk :in std_logic; co:out std_logic);end entity;Architecture art of cnt5 issignal cqi : integer range 1 to 5;beginco<='1' when cqi=5 and clk='0'else '0' process (clk) is beginif clk'event and clk='1'
49、;then if cqi=5 then cqi<=1; else cqi<=cqi+1; end if; end if; end process; end architecture art;(3)library ieee;use ieee.std_logic_1164.all;entity cnt200 is port( clk :in std_logic; co:out std_logic);end entity;Architecture art of cnt200 issignal cqi : integer range 1 to 200;beginco<='1&
50、#39; when cqi=200 and clk='0'else '0' process (clk) is beginif clk'event and clk='1'then if cqi=200 then cqi<=1; else cqi<=cqi+1; end if; end if; end process; end architecture art;(4)library ieee;use ieee.std_logic_1164.all;entity cnt50e is port( clk :in std_logic;
51、co:out std_logic);end entity;Architecture art of cnt50e issignal cqi : integer range 1 to 50e3;beginco<='1' when cqi=50e3 and clk='0'else '0' process (clk) is beginif clk'event and clk='1'then if cqi=50e3 then cqi<=1; else cqi<=cqi+1; end if; end if; end
52、process; end architecture art;(5)library ieee;use ieee.std_logic_1164.all;entity cnt250 is port( clk :in std_logic; co:out std_logic);end entity;Architecture art of cnt250 issignal cqi : integer range 1 to 250;beginco<='1' when cqi=250 and clk='0'else '0' process (clk) is
53、beginif clk'event and clk='1'then if cqi=250 then cqi<=1; else cqi<=cqi+1; end if; end if; end process; end architecture art;2.消抖模块library ieee;use ieee.std_logic_1164.all;entity Dcfq isport(d,clk:in std_logic;q:out std_logic);end entity Dcfq;architecture art of Dcfq isbegin proces
54、s(clk)isbeginif(clk'event and clk='1') thenq<=d;end if;end process;end architecture art;3.时钟模块(1)秒计数模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity SECOND isport(cp,clr:in std_logic; sqmsl,sqmsh:out std_logic_vector(3 downto 0); co:out std_logic);end
55、SECOND;architecture SEC of SECOND isbeginprocess(cp,clr)variable cnt1,cnt0:std_logic_vector(3 downto 0);beginif clr='0' thencnt1:="0000"cnt0:="0000"elsif cp'event and cp='1' thenif cnt1="0101" and cnt0="1000" thenco<='1'cnt0:=&qu
56、ot;1001"elsif cnt0<"1001" thencnt0:=cnt0+1;elsecnt0:="0000"if cnt1<"0101" thencnt1:=cnt1+1;elsecnt1:="0000"co<='0'end if;end if;end if;sqmsh<=cnt1;sqmsl<=cnt0;end process;end SEC;(2)分计数模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity MINUT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 骨折牵引治疗护理培训课件
- 2026年旅游达人模拟题及答案详解
- 2026年素养在线模拟题及答案详解
- 2026年场地安全员模拟试题(含答案)
- 2026年设备检验员助理新员工岗位专业知识笔模拟题目及答案详解
- 2026年10月公司法模拟试题(含答案)
- 2026年宁德电大培训模拟题及答案详解
- 2026年高职机械钳工模拟试题(含答案)
- 2026年郭敬明作文模拟试题(含答案)
- 2026年快递英文模拟题及答案详解
- 2026中国数字员工技术应用报告 -多智能体大脑场景实践研究
- 购物中心七周年庆和梅溪音乐节活动策划方案
- 支气管哮喘的护理内科护理学第七版
- T/CI 878-2025钠离子电池用生物质硬炭负极材料技术要求
- 2026年四川省基层法律服务工作者执业核准题库及完整答案
- 2026年法治思想试题库及答案
- 2026年四川省党政领导干部政治理论水平(理论测试)考试考前模拟试题及答案
- 2026年初中数学动点问题与最值问题讲座
- 2026年地铁司机职业资格认证标准试题附答案
- 建筑垃圾设备安装调试方案
- 110kV~750kV架空输电线路铁塔组立施工工艺导则
评论
0/150
提交评论