基于VHDL的自动打铃设计毕业设计 精品Word文件下载.docx
《基于VHDL的自动打铃设计毕业设计 精品Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于VHDL的自动打铃设计毕业设计 精品Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
随着EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益突出。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,对以硬件描述语言HDL(HardwareDescriptionlanguage)为系统逻辑描述手段完成的设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
本设计是基于VHDL语言的自动打铃系统。
在论文中,介绍了基于VHDL语言自动打铃系统的思路,整个系统需包含秒计时模块、分计时模块、时计时模块、校时模块、打铃模块。
在QuartusII开发环境中编译和仿真所设计的程序,并逐一调试验证程序的运行状况。
仿真和验证的结果表明,该设计方法切实可行,该打铃系统可以实现调时定时打铃功能,具有一定的实际应用性。
关键字:
EDA、VHDL、打铃、QuartusII
Abstract
WiththedevelopmentofEDAtechnologyandtheexpansionofapplication,thefunctionofEDAtechnologyinthefieldofelectronicinformationcommunication,automaticcontrolandcomputerapplication,isbecomingmoreandmoreimportant.EDAtechnologyusecomputerasatool.However,designersonlyneedtousethehardwaredescriptionlanguageHDLtodescribethesystemontheEDAsoftwareplatform.Thencomputerautomaticallyfinishespartition,synthesis,optimization,simulationandotherfunctionuntiltheelectroniccircuitsystemachievesthestatedperformance.
ThisdesignisbasedontheVHDLhardwaredescriptionlanguagetoprojectasystem.Iintroduceideasofthebellsysteminthisdesign.Allofthedesignincludessecondtimermodule,minutetimermodule,hourtimermodule,moduletoadjusttimeandmoduletoringthebellaccordingtotherequireofdesign.IcompletethedescriptionofdifferentmoduleswithVHDLlanguageintheQuartusIIdevelopmentenvironment,anddebugonebyonetochecktheoperationalstatusoftheverificationprocess.Simulationresultsshowthatthedesignmethodisfeasible,andthebellsystemcanbeputintopracticalapplications.
Keywords:
EDA,VHDL,rangthebell,theQuartusII
绪论
本次毕业设计是基于VHDL的自动打铃系统,而自动打铃就是像现在的学校一样在规定的时间段铃声响起,用以作为每节课的作休时间。
而自动打铃系统可以像现在的闹钟功能类似,起到提醒的作用,从早上8点开始计时,每隔一个小时铃声响一次,每次铃声持续响30秒,一直到下午5点都是每隔一个小时响一次铃声,下午5点以后铃声即使一个小时计时到了铃声也不再响了。
为了高效率的验证设计的结果另外还需要增加一个校时模块,可以用两个指示灯的亮、灭的状态来区分两个按键的工作状态。
增加的两个按键,一个是调分按键,一个是调时按键。
开始时按下按键K1时,此时指示灯LED1变亮,指示灯LED提示系统正处于调分的状态,想调至几分时直接按K2按键下N就是想要的N分。
再次按K1键一下后,指示灯LED2处于常亮状态,即系统处于调时状态,想要7点即按K2键7下即可。
调完时和分的状态后再按K1键一下系统才会处于正常的计时状态,系统处于正常计时时LED1、LED2全都不亮。
在整个设计中,首先先做一个顶层模块,以top命名,然后再将各个模块在顶层模块中做好后再生成各模块的元器件,最后在top模块中将各个元器件按功能要求连接好后连进行编译看,是能否通过。
通过编译后再按照附录表查询对各个引脚进行设定,引脚设定完后再对顶层文件进行编译,通过编译后再进行波形仿真,如果时序仿真与功能仿真的波形都正确后再到试验箱上下载验证,验证铃声是否在规定时间内响起。
第1章基本概念简介
1.1VHDL简介
VHDL是VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage的缩写,意思是超高速集成电路硬件描述语言。
对于复杂的数字系统的设计,它有独特的作用。
它的硬件描述能力强,能轻易的描述出硬件的结构和功能。
这种语言的应用至少意味着两种重大的改变:
电路的设计竟然可以通过文字描述的方式完成;
电子电路可以当作文件一样来存储。
随着现代技术的发展,这种语言的效益与作用日益明显,每年均能够以超过30%的速度快速成长。
VHDL是美国电气和电子工程师协会制定的标准硬件描述语言(IEEE标准1076),它可用于数字电路与系统的描述、仿真和自动设计。
另外VHDL作为IEEE标准的硬件描述语言,经过十几年的发展、应用和完善,以其强大的系统描述能力,规范的程序设计结构,灵活的语言表达风格和多层次的仿真测试手段,受到业界的普遍认同和推广,成为现代EDA领域的首选硬件设计语言,而且各大EDA公司推出的EDA工具软件全部支持VHDL。
并且随着EDA技术和VHDL的广泛应用,各高等院校也纷纷开设了VHDL电路设计课程,且要求某些专业的本科生、研究生必须掌握用VHDL进行电路系统设计的方法。
VHDL已经成为高等教育中电类专业知识结构的重要组成部分。
学习者可以用EDA工具软件编辑VHDL文件,使用仿真工具仿真所设计的电路系统,并学会使用综合语句以及下载工具,最终达到能够独立设计硬件电路系统的目的。
1.2FPGA/CPLD简介
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
FPGA的基本特点包括:
首先它采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
其次,FPGA可做其它全定制或半定制ASIC电路的中试样片,FPGA内部有丰富的触发器和I/O引脚,而且FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
最重要的是FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
随着电子设计自动化(EDA)技术的发展,利用计算机辅助设计和用高密度可编程逻辑器件实现数字系统已经成为发展趋势。
本次毕业设计就利用VHDL语言的强大的电路描述和建模能力设计基于FPGA的电子时钟,可以提高利用计算机辅助设计和用高密度可编程逻辑器件实现数字系统的能力。
1.3QuartusII的简介
QuartusII是Altera公司继Max+plusII之后开发的一种针对其公司生产的系列CPLD/PGFA器件的综合性开发软件,它的版本不断升级,从4.0版到10.0版,QuartusII的优软件界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。
该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式。
内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,还提供了完善的用户图形界面设计方式,具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera公司的MAX3000A系列、MAX7000系列、MAX9000系列、ACEX1K系列、APEX20K系列、APEXII系列、FLEX6000系列、FLEX10K系列,支持MAX7000/MAX3000等乘积项器件,支持MAXIICPLD系列、Cyclone系列、CycloneII、StratixII系列、StratixGX系列等。
还支持IP核,包含了LPM/MegaFunction宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂性,加快了设计速度。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统。
它还支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
此外QuartusII对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台,该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络的编辑功能,而且提高了调试能力。
第2章设计整体概述
2.1设计方案
自动打铃是一种现代提醒工具,有着广泛的应用。
例如学校的上课铃声,每天在既定的时间响铃,就是是自动打铃系统的具体应用。
打铃系统设置从早上的8点开始计时打铃,每隔一个小时铃声持续响30秒,这样一直持续到下午的17点。
17点以后再出现的打铃间隔时间,铃声也不会再响起,直到第二天的早晨重新开始从8点正常计时响铃。
利用IF语句控制打铃的时间,在规定的时间内到打设既定的打铃间隔时间时给出一个30秒的高电平脉冲,让铃声连续响起。
此外还要增加一个校时模块,因为时钟都会存在计时误差,所以增加一个校时模块也是为了调整准确的时间,功能验证时也可以调至铃声响起的前一分钟,检测打铃功能是否正确。
其具体实现如下:
(1)每隔一个小时打铃一次,但是不能让铃声一直响,给一个控制打铃时间的功能,让打铃响起30秒后停止。
即到打铃时间是会给出一个30秒的高电平脉冲。
(2)因为自动打铃系统不是24小时都在计时打铃,在晚上的时候会停止打铃功能。
即设定打铃系统只在早上8点至下午17点的时间段内在规定的时间内响铃。
其他时间自动打铃系统处于休眠状态。
(3)增加一个自动校时模块,可以进行校时,还可以使打铃模块尽快到铃声响起的前一分钟。
(4)显示模块是让时钟信号在实验箱上的八个数码管上显示,将打铃响起的时间显示在数码管上,调分时对应的LED1指示灯亮,按K2键可以在数码管上看到分在增加。
同样调时时对应的LED2指示灯亮,按K2键可以让时增加。
让计时模块重新回到正常计时,只要两个按键的指示灯不亮状态就可以正常计时,否则指示灯亮计数器就不能正常计时,即秒到59时不会网分上进位。
(5)整个时钟系统中,秒、分是60进制计数器,由二进制数7位表示。
而时是24进制计数器,仅需要5位二进制码就可以表示。
2.2设计原理图
在整个系统设计中,应用到的模块有秒计时模块、分计时模块、时计时模块、校时模块和显示器模块。
系统框图如图2.1所示:
CLK
K1
K2
图2.1系统框图
2.3设计流程图
图2.2自动打铃的设计流程图
第3章各模块设计分析
3.1计数器模块
计数器模块包括秒计数器模块、分计数模块、时计数模块以及功能按键的设计。
给定固定频率的时钟信号,输入计数60秒的秒计数器模块电路,等待计数到60秒的瞬间,进位至60分的分计数器模块电路加1后,秒计数器电路同时清为零重新计时。
分计数器模块电路与秒计数器模块电路功能类似,当分计时模块计时到60分的瞬间时计时模块电路加1,分计时模块清为零重新进行计时。
时计时模块与秒、分计时模块类似,当来自分计时模块的进位达到24瞬间,时计数器模块清为零,再从零进行计时。
这样秒、分、时计时模块依次进行计时完成24进制的计时功能。
3.1.1秒和分计数器模块
秒计时模块和分计数器模块都为60进制的计数器,其代码为:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYsecondIS
PORT(clk:
INSTD_LOGIC;
q1,q2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
c:
OUTSTD_LOGIC);
ENDENTITYsecond;
ARCHITECTUREartOFsecondIS
SIGNALq11,q22:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(clk)
BEGIN
IFclk'
EVENTANDclk='
1'
THEN
q11<
=q11+'
;
IFq11=9ANDq22/=5THEN
="
0000"
q22<
=q22+'
ENDIF;
IFq22=5ANDq11=9THEN
c<
='
ELSE
0'
ENDPROCESS;
q1<
=q11;
q2<
=q22;
ENDARCHITECTUREart;
秒和分计时模块编译完成后生成的秒的元器件为图3.1、3.2所示
图3.1秒模块的元器件图3.2分计时模块的元器件
给定输入信号进行波形仿真得到秒、分计时模块的波形仿真如图3.3
图3.3秒、分计数器模块的输出仿真波形
模块说明:
由仿真波形图可以看出,当秒或分计时到59时,给C一个高电平脉冲,即分或时计时模块加1,秒或分计时模块清零后开始重新计时。
3.1.2时计数器模块
时计数器模块为24进制的计数器,其代码为:
ENTITYhourIS
q1,q2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDENTITYhour;
ARCHITECTUREartOFhourIS
IFq11=9THEN
IFq22=2ANDq11=3THEN
时计时模块编译通过后生成的时计时模块的元器件如图3.4所示
图3.4时计时模块的元器件图
时计时模块采用24进制的计时器模式,输出仿真波形为图3.5:
图3.5时计时模块的仿真波形
由仿真波形图可以看出,当时计数到23时时计数器模块清零后,再重新开始从0时计时。
3.2计时校时模块
计时校时模块的代码为:
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYjiaoshiIS
PORT(sec,min:
--调时模块的输入信号
k1,k2:
--调时模块的控制,调时信号输入
fen,shi:
OUTSTD_LOGIC;
--各计数器的输入时钟信号
led1,led2:
--工作模式显示灯的控制信号
ENDENTITYjiaoshi;
ARCHITECTUREartOFjiaoshiIS
SIGNALa:
STD_LOGIC_VECTOR(1downto0);
PROCESS(k1,k2)
IFk1'
EVENTANDk1='
THENa<
=a+1;
IFa=2THENa<
00"
ENDIF;
CASEaIS
WHEN"
=>
fen<
=sec;
shi<
=min;
--模式0正常计时
led1<
led2<
01"
=k2;
--模式1,分模块,调分
10"
--模式2,时模块,调时
WHENOTHERS=>
NULL;
ENDCASE;
ENDPROCESS;
计时校时模块编译通过后,生成校时模块的元器件,计时校时模块的元器件图为图3.6:
图3.6计时校时模块的元器件
给定输入信号后校时模块的输出仿真波形如图3.7所示:
图3.7计时校时模块的仿真波形
由仿真波形可以看出,K1键是控制调时调分按键,按一下K1键系统处于调分状态,并且LED1灯常亮即提示此时处于调分状态,再按K2键对分进行加时。
若再次按K1键系统就会处于调时状态,此时LED2灯常亮。
按K2键系统就会对时进行加时作用。
等分别对系统进行调时、调分后要让系统处于正常计时状态,再次按K1键使指示灯LED1、LED2都不亮的情况下系统才会正常计时。
由仿真波形图可知,此时所调的时间为2:
02分。
3.3打铃功能模块
打铃功能模利用IF语句实现时间控制,在预设的铃声响起的时间给C一段连续的30秒的高电平,30秒的高电平控制是用IF语句判断秒计数器的计数实现的。
打铃功能模块的代码为:
ENTITYringIS
PORT(s1,s2,min1,min2,h1,h2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
clk,clk1:
q1,q2,q3,q4,q5,q6:
ENDENTITYring;
ARCHITECTUREartOFringIS
SIGNALq11:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALq22:
SIGNALq33:
SIGNALq44:
constantjs:
INTEGER:
=29;
q11<
=s2&
s1;
q33<
=h2&
h1;
q22<
=min2&
min1;
q6<
=h2;
q5<
=h1;
q4<
=min2;
q3<
=min1;
=s2;
q1<
=s1;
BEGIN
IFclk'
IF(q33="
00001000"
ANDq22="
00000000"
AND(q11>
ANDq11<
"
00110000"
))T