毕业设计(论文)-微波炉控制器的设计与分析.doc_第1页
毕业设计(论文)-微波炉控制器的设计与分析.doc_第2页
毕业设计(论文)-微波炉控制器的设计与分析.doc_第3页
毕业设计(论文)-微波炉控制器的设计与分析.doc_第4页
毕业设计(论文)-微波炉控制器的设计与分析.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

微波炉控制器的设计与分析学院:电子与信息工程学院专业:电子信息科学与技术姓名:学号:80514062指导老师:时间:2010年12月15日-1-摘要摘要:本论文介绍了应用FPGA芯片和硬件描述语言(VHDL)设计微波炉控制器系统的方法。系统使用VHDL编程实现各底层模块的功能,顶层的设计采用图形输入完成。论文主要阐述模块化设计的思想和状态图的描述方法,以及他们在硬件描述语言中的应用,并展示了其在MAXplusII开发系统下的仿真结果。微波炉控制器系统是一个实用型的系统,系统不仅具有操作简单的功能,而且烹调效果好,你可以按照固定程序烹调一些家常菜,可以采取分时、分不同级别火力加热,既能节约时间又能节约能源。主要有以下几个模块:输入模块、控制模块和显示模块。输入模块实现按键扫描和键盘译码、控制模块包括状态转换控制、数据装载、烹饪计时、温度控制、音效提示等等、显示模块涉及到显示译码和指示灯的闪烁。经过对系统做需求分析,详细功能设计、编码,模块连接,并利用FPGA实现相应的功能,经过波形仿真、下载调试,验证了设计方案的可行性及实现方法的有效性,基本实现了系统的要求。关键词关键词:FPGA;VHDL;微波炉定时控制器;状态图Abstract:ThispaperintroducesthethatapplyingFPGAchipandVHDLtodesignthecontrolsystemofmicrowaveovens.ThesystemusesVHDLtofulfillthefunctionofeachbottommoduleandthedesignofthetoplayeriscompletedviagraphicentering.ThispapermainlyillustratestheideaofmoduledesignanddescriptionofstatechartandthattheirapplicationinVHDLandsimulationresultsinthedevelopsystemofMAXplusII.Microwavecontrollersystemisautility-typesystemthatincludesnotonlythefunctionofsimpleoperationbutalsogoodeffectofcook.Accordingtofixedroutineyoucancooksomehomelydishviatakingdifferenttimeanddifferentlevelfirepowertoheatandthiscannotonlysavetimebutalsosaveenergy.Itmainlyincludesacoupleofmodulesasfollows:modulecontrolmoduleanddisplaymodule.modulefulfillskey-pressscanningandkeyboarddecodingcontrolmoduleincludesstatusswitchingcontroldataloadingcooktimetemperaturecontrolsoundeffecttipandsoondisplaymodulecomesdowntodisplaycodingdecipherandtheflashingofindicatorlight.ThroughtheanalysisofrequirementdetailedfunctiondesigncodingmoduleconnectionusingFPGAtofulfillrelevantfunction.Throughwavesimulationdownloaddebuggingitverifiesthefeasibilityofthedesignandtheeffectivenessofrealizationandbasicallyfulfilltherequirementofthesystem.Keywords:FPGAVHDLMicrowaveoventimercontrollerStatuschart-2-1.绪论绪论随着人民生活水平的提高,微波炉开始进人越来越多的家庭,它给人们的生活带来了极大的方便。微波炉由2450MHz的超高频来加热食物。它省时、省电、方便和卫生。作为现代的烹饪工具,微波炉的控制器体现着它的重要性能指标。目前大部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。本文采用先进的EDA技术,利用MAXplusII工作平台和VHDL设计语言,设计了一种新型的微波炉控制器系统。该系统具有系统复位、时间设定、烹饪计时、温度控制和音效提示等功能,在FPGA上实现。1.1.任务的提出任务的提出在现代人快节奏生活中,微波炉已成为便捷生活的一部分。随着控制技术和智能技术的发展,微波炉也向着智能化、信息化发展。而现有市售的微波炉其主要弊端为:不能按既有程序进行烹调,需要使用者根据食物的类型、数量、温度等因素去设定微波炉的工作时间,若设定的工作时间过长,含水分较多的食物可能会产生过热碳化的现象,若时间过短则达不到预期的烹调效果。不仅在节能方面未做过多考虑,使用者还需要经常翻看使用说明书才能完成操作过程。针对这些问题,笔者认为有必要研制一种操作简单且烹调效果好的微波炉,根据一些家常菜按固定程序烹调的现象,可采取分时、分档火力加热,节时又节能。1.2.课题的内容和要求课题的内容和要求本课题是基于FPGA的微波炉控制器设计,设计题目为微波炉定时控制器。设计要求如下:1、复位开关:2、启动开关:3、烹调时间设置:4、烹调时间显示:5、七段码测试:6、启动输出:7、按TEST键可以测试七段码管,显示为“5959”;8、设定时间后,按启动键开始烹调,同时七段码显示剩余时间,时间为0时,-3-显示烹调完成信息“CDEF”。1.3.设计的目的和意义设计的目的和意义目前大部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。本设计采用先进的EDA技术,利用VHDL设计语言,设计一种新型的微波炉控制器。该控制器具有系统复位、状态控制、时间设定、火力档位选择、烹饪计时、温度控制、显示译码和音效提示等功能,基于FPGA芯片实现。该微波炉控制系统,除实现常规的解冻、烹调、烘烤的基本功能外,还进行了创新设计,实现了微波炉的自定义设置。本系统控制部分以FPGA芯片为核心,通过功能按键设置和手动数据输入,完成不同功能时自动以预置方案或者自定义方案加热。其中,预制方案提供烹调、烘烤、解冻等系统烹调流程,仅供用户选择,无需设置;而自定义方案,用户根据食物含量、重量等手动设置时间、温度和选择火力等操作。在烹饪过程中,能通过数码管显示或者指示灯提示知道食物的成熟度,可以智能控制。该系统在功能执行时,能实现门开关检测、键盘输入扫描、温度控制、LED显示、工作状态指示、蜂鸣等。2.系统总体设计系统总体设计2.1.系统总体设计方案系统总体设计方案根据题目要求,现需设计一个微波炉控制器WBLKZQ,通过该控制器再配以4个七段数码二极管完成微波炉的定时及信息显示。该系统控制部分以FPGA芯片为核心,根据该微波炉控制器的功能设计要求,本系统可由以下4个模块组成:状态控制器KZQ;数据装载器ZZQ;烹调计时器JSQ;显示译码器YMQ47。以下是该系统总体框图,如图1所示:-4-图1微波炉控制器系统总体框图指示灯功能如下:完成提示:提示微波炉工作完成。该灯亮时,表示烹饪完成;意外报警:提示意外情况发生。该灯亮时,表示出现意外,微波炉暂停工作;解冻:该灯亮时,表示工作在解冻模式下;烘烤:该灯亮时,表示工作在烘烤模式下;烹调:该灯亮时,表示工作在烹调模式下;测试:该灯亮时,表示微波炉处于测试状态;开门指示:指示微波炉的门的状态,门开时灯亮,门关时灯灭;工作状态:指示微波炉处于工作状态,工作时灯亮,不工作时灯灭;2.2.系统功能模块描述系统功能模块描述本系统主要由输入、控制和显示部分组成。输入部分主要完成用户对控制功能的设置,采用按键作为输入设备。控制部分是本系统的核心,它接收用户的输入,完成相应的控制逻辑功能,并将当前的工作状态等信息送到显示部分。显示部分主要监视系统工作状态并提示用户进行控制操作。以下是该系统功能模块图,如图2所示-5-图图22系统功能模块图系统功能模块图2.2.1.2.2.1.输入模块输入模块输入部分一般采用键盘或旋钮作为输入,本系统采用键盘进行输入设置,即由一个44矩阵键盘实现数据输入控制。该矩阵键盘上16个按键分别是:10Min1Min100High10Sec10Middle1Sec1Low+1复位暂停取消测试-1火力设定温度设定时间设置烹调烘烤解冻开始确认。输入模块包括时钟脉冲电路、键盘扫描电路、消枓同步电路和键盘译码电路,通过该模块将扫描得到的按键值送到控制模块。由于实验室的设备有限,则此部分模块不具体阐述。2.2.2.控制模块控制模块控制部分作为整个微波炉控制器系统的核心,它采用FPGA芯片作为主控核心,完成许多复杂的控制和数据处理任务。它通过输入模块提供的按键输入实现数据信息装载处理,并将处理结果通过显示模块显示出来。其涉及到数据的装载、状态转换控制、烹饪计时、温度控制、火力控制、音响效应提示等。-6-2.3.3.显示模块显示模块显示部分采用七段数码管和发光二极管来实现。由于数码管显示信息较少,一些信息用数码管显示不够直观,因此本系统在采用数码管显示的同时,还用发光二极管作为辅助显示。其中,用七段数码管作为时间、温度、火力大小显示,用发光二极管作为状态提示显示。具体设计时,采用4位LED数码管显示加热倒计时,3位LED数码管显示当前温度值,1位LED数码管显示当前火力档位。8个状态提示指示灯分别表示:工作状态、开门指示、测试、烹调、烘烤、解冻、意外报警、完成提示。2.4.系统的工作流程系统的工作流程微波炉控制器系统的工作流程为:上电后,系统首先处于一种复位状态,其各电路模块均处于初始状态。此时,8个数码管上会显示“88888888”的信息,所有指示灯亮。按TEST键,数码管和发光二极管全亮、全灭交替闪烁,可以测试数码管和指示灯工作是否正常。系统工作时,首先通过键盘输入数据,比如,按烹调、烘烤、解冻键选择系统预置方案,或者按时间设置键设置时间,按温度设定键设置温度,按火力选择键选择火力,结合10Min、1Min100High、10Sec10Middle、1Sec1Low按键进行自定义方案设置,设置结束以后,表示数据装载完成,按START键后系统进入烹调状态。在烹饪过程中,可以按暂停取消键暂停烹饪,或者重新设置时间、温度、火力。烹饪结束后,系统会发出音效提示,同时,系统自动进入复位状态。根据系统工作流程,绘制主程序流程图,如图3所示:-7-图3系统工作流程图-8-3.系统详细设计系统详细设计3.1.控制模块设计控制模块设计控制模块是整个微波炉控制器系统的核心,完成许多复杂的控制和数据处理任务,它通过输入模块提供的按键输入实现数据信息装载处理,控制显示模块显示相应的信息。控制模块采用FPGA芯片作为主控芯片,其涉及到数据的装载、状态控制转换、烹饪计时、温度控制、火力控制、音效提示等。其中,状态控制转换子模块,其功能是控制微波炉工作过程中的状态转换,并发出相关控制信号。数据装载子模块,其功能是根据按键信号设置定时时间、最高温度、火力档位,烹调属性设置以及烹调数据信息装载。烹饪计时子模块,其功能是对时钟进行减法计数,提供烹调完成时的状态信号。温度控制子模块,其功能是在食物烹饪过程中进行温度测定和控制,它同时实现火力控制。音效控制子模块,其功能是控制微波炉工作时的音效提示,这里直接外接一个蜂鸣器实现该功能。其功能子模块图如下,图4所示:控控制制模模块块Control数数据据装装载载子子模模块块ZZQ烹烹饪饪计计时时子子模模块块JSQ温温度度控控制制子子模模块块KWQ音音效效控控制制子子模模块块ALARM状状态态转转换换控控制制子子模模块块KZQ4控制模块功能子模块图控制模块功能子模块图3.1.1.状态转换控制状态转换控制器器根据微波炉工作流程的描述,分析状态转换条件及输出信号,可以得到控制模块的状态转换图。如图5所示:-9-时时间间、温温度度设设置置状状态态SET_CLOCK显显示示译译码码测测试试状状态态LAMP_TEST完完成成信信息息显显示示状状态态DONE_MSG减减法法计计数数定定时时状状态态TIMER初初始始状状态态IDLEXLD_TESTTESTLD_TESTSET_TTESTLD_CLKXLD_CLKLD_DONECOOKRESETXLD_DONEDONELD_DONESTARTDONETESTSET_TCOOKOTHERWISEALLOUTPUT=0图图5控制模块状态转换图控制模块状态转换图图中,当RESET信号有效时,系统复位清零;输入输出对应时间温度设置、显示译码测试、完成信号显示和减法计数定时四种状态进行相应的转换。由此生成的状态转换ASM图如图6所示:图6状态转换ASM图-10-3.1.2.数据装载数据装载器器数据装载器ZZQ,它本质上就是一个三选一的数据选择器。根据其应完成的逻辑功能,本设计可采用一个进程来完成,但由于三个被选择的数据只有一个来自输入口,因此另两个被选择的数据则通过进程的说明部分定义两个常数来产生。由于ZZQ装入测试的数据可以用8个8作为显示驱动信息数据,因此,将该用于显示的常数ALLS分解成8个“8”,其中4个“8”作为时间显示驱动信息,3个“8”作为温度显示驱动信息,1个“8”作为火力档位显示驱动信息,分别经过八个译码器译码后显示驱动信息编码。因此,该常数应是8个分段的4位BCD码,即“1000100010001000”和“1000100010001000”,同理,DONE的BCD码分别为“1010101111001101”以显示DONE的常数DONE。3.1.3.烹饪计时烹饪计时器器烹饪计时器JSQ为减计数计数器,其最大计时时间为59:59,因此可用两个减计数十进制计数器DCNT10和两个减计数六进制计数器DCNT6级联构成。其中,两个十进制的减法计数器用于分、秒的个位减法计数,两个六进制的减法计数器用于分、秒的十位减法计数。由所学知识可知,计数的功能是累计输入脉冲的个数,实现计数功能的数字电路即计数器,被计数的脉冲可以是周期性脉冲,也可以是非周期性脉冲,通常加在计数器的时钟脉冲输入端,作为计数器的时钟脉冲。因此,根据减法计数器随计数脉冲的不断输入而递减计数,在具体设计该十进制减法计数器和六进制减法计数器过程中,可以当计数值减到0时,其计数器的数值自动转为定时设定时间,在十进制计数器的设计过程中,可表达为:IFCQI=0000THENCQI=1001ELSECQI=CQI-1同理,六进制计数器的设计表达式为:IFCQI=0000THENCQI=0101ELSECQI=CQI-1设计完两个计数器之后,在计时器电路模块,对该十进制和六进制计数器电路模块进行定义并元件例化,生成相应的元件符号。然后将两计数器级联构成。由六进制计数器和十进制计数器级联构成的计时器。-11-3.2.显示模块设计显示模块设计显示部分采用七段数码管和发光二极管来实现。由于数码管显示信息较少,一些信息用数码管显示不够直观,因此本系统在采用数码管显示的同时,还用发光二极管作为辅助显示。其中,用七段数码管作为时间、温度、火力大小显示,用发光二极管作为状态提示显示。具体设计时,采用4位LED数码管显示加热倒计时,3位LED数码管显示当前温度值,1位LED数码管显示当前火力档位。8个状态提示指示灯分别表示:工作状态、开门指示、测试、烹调、烘烤、解冻、意外报警、完成提示。其外观显示如图7所示:图7显示界面外观效果图其中,时间温度火力显示主要由LED数码管实现。分段式显示器(LED数码管)由7条线段围成,只要按规律控制各发光段的亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。图8是共阴式LED数码管的原理图。使用时,公共阴极接地,7个阳极ag由相应的BCD七段译码。图8七段数码管电路图-12-BCD七段译码器的输入是1组BCD码,输出是数码管各段的驱动信号(以ag表示),也称4-7译码器。若用它驱动共阴LED数码管,则输出应为高有效,即输出为高(1)时,相应显示段发光。根据组成09这10个字形的要求可以列出该七段译码器的真值表。本显示译码器不仅要对数字09进行显示译码,还要对字母d、o、n、E进行显示译码。这其译码对照表如表1所示:表表1译码对照表译码对照表显显示示的的数数字字或或字字母母BCD编编码码七七段段显显示示驱驱动动编编码码(ga)000000111111100010000110200101011011300111001111401001100110501011101101601101111101701110000111810001111111910011101111d10101011110o10111011100n11001010100E110111110014.4.主要主要VHDL源程序源程序4.1.4.1.控制模块控制模块VHDL源程序源程序4.1.1.4.1.1.状态转换控制器状态转换控制器VHDLVHDL源程序源程序LIBRARYIEEEUSEIEEE.STD_LOGIC_1164.ALLUSEIEEE.STD_LOGIC_ARITH.ALLENTITYcontrollorISPORT(RESETSET_TSTARTTESTCLKDONE:INSTD_LOGIC-13-COOKLD_TESTLD_CLKLD_DONE:OUTSTD_LOGIC)ENDENTITYcontrollorARCHITECTURErtlOFcontrollorISTYPESTATESIS(IDLELAMP_TESTSET_CLOCKTIMERDONE_MSG)SIGNALNXTCUR:STATESBEGINPROCESS(CLKRESET)BEGINIFRESET=1THEN-如果RESET=1,则系统清零,CUR=IDLE-当前状态为初始状态,ELSIFCLKEVENTANDCLK=1THEN-当同步时钟脉冲,CUR=NXT-当前状态为下一状态ENDIFENDPROCESSPROCESS(CLKCURSET_TSTARTTESTDONE)ISBEGINNXT=IDLELD_TEST=0-当前状态为初始状态时,LD_DONE=0LD_CLK=0COOK-此时,译码显示测试状态LD_TEST=1COOK-时间温度设置状态LD_CLK=1COOK-完成信息显示状态LD_DONE=1COOKIFTEST=1THEN-在初始状态,如果按下“TEST”键,NXT=LAMP_TESTLD_TEST=1-下一状态即为显示测试状态-14-ELSIFSET_T=1THEN-如果按下“SET_T”键,NXT=SET_CLOCKLD_CLK=1-下一状态即为时间设置状态ELSIFSTART=1ANDDONE=0THEN-如果按下“START”键,NXT=TIMER-即烹调开始进行时,COOK-在减法计数定时状态,如果输出DONE指示IFDONE=1THEN-烹调信息完成,则下一状态为NXT=DONE_MSGLD_DONE=1-显示信息完成状态,显示烹调完成信息,ELSE-否则,下一状态还是减法计数定时状态,NXT=TIMER-COOK高电平有效COOK=1ENDIFENDCASEENDPROCESSENDrtl生成的控制模块相应的电路符号,如图9所示:图图9KZQ电路符号电路符号-15-4.1.2.4.1.2.数据装载器数据装载器VHDL源程序源程序LIBRARYIEEEUSEIEEE.STD_LOGIC_1164.ALLUSEIEEE.STD_LOGIC_ARITH.ALLENTITYloaderISPORT(DATAIN:INSTD_LOGIC_VECTOR(15DOWNTO0)LD_TEST:INSTD_LOGICLD_CLK:INSTD_LOGICLD_DONE:INSTD_LOGICDATAOUT:OUTSTD_LOGIC_VECTOR(15DOWNTO0)LOAD:OUTSTD_LOGIC)ENDloaderARCHITECTURErtlOFloaderISBEGINPROCESS(DATAINLD_TESTLD_CLKLD_DONE)CONSTANTALLS:STD_LOGIC_VECTOR(15DOWNTO0):=1000100010001000CONSTANTDONE:STD_LOGIC_VECTOR(15DOWNTO0):=1010101111001101VARIABLETEMP:STD_LOGIC_VECTOR(2DOWNTO0)BEGINLOADDATAOUTDATAOUTDATAOUTNULLENDCASEENDPROCESSENDrtl完成VHDL源程序的输入,编译、运行,生成相应的电路符号,如下图10所示:-16-图图10ZZQ电路符号电路符号4.1.3.4.1.3.烹饪计时器烹饪计时器VHDLVHDL源程序源程序5.1.3.1.十进制计数器的VHDL源程序如下:LIBRARYIEEEUSEIEEE.STD_LOGIC_1164.ALLUSEIEEE.STD_LOGIC_UNSIGNED.ALLENTITYcnt10ISPORT(CLK:INSTD_LOGICLOAD:INSTD_LOGICEN:INSTD_LOGICDATAIN:INSTD_LOGIC_VECTOR(3DOWNTO0)Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0)CARRY_OUT:OUTSTD_LOGIC)ENDcnt10ARCHITECTURErtlOFcnt10ISSIGNALTMP:STD_LOGIC_VECTOR(3DOWNTO0)BEGINPROCESS(CLKLOADEN)BEGINIFLOAD=1THENTMP=DATAINELSIFCLKEVENTANDCLK=1THENIFEN=1THENIFTMP=0000THEN-当计数值减到0时,其计数器的数值TMP=1001ELSE-自动转为定时设定时间-17-TMP=TMP-1ENDIFENDIFENDIFENDPROCESSPROCESS(CLKTMP)BEGINIFCLKEVENTANDCLK=1THENIFTMP=0000THENCARRY_OUT=1ELSECARRY_OUT=0ENDIFENDIFENDPROCESSQ=TMPENDrtl4.1.3.2六进制计数器的VHDL源程序如下:LIBRARYIEEEUSEIEEE.STD_LOGIC_1164.ALLUSEIEEE.STD_LOGIC_UNSIGNED.ALLENTITYcnt6ISPORT(CLK:INSTD_LOGICLOAD:INSTD_LOGICEN:INSTD_LOGICDATAIN:INSTD_LOGIC_VECTOR(3DOWNTO0)Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0)CARRY_OUT:OUTSTD_LOGIC)ENDcnt6ARCHITECTURErtlOFcnt6ISSIGNALTMP:STD_LOGIC_VECTOR(3DOWNTO0)BEGINPROCESS(CLKLOADEN)BEGINIFLOAD=1THENTMP=DATAINELSIFCLKEVENTANDCLK=1THENIFEN=1THEN-18-IFTMP=0000THEN-当计数值减到0时,其计数器的数值TMP=0101ELSE-自动转为定时设定时间TMP=TMP-1ENDIFENDIFENDIFENDPROCESSPROCESS(CLKTMP)BEGINIFCLKEVENTANDCLK=1THENIFTMP=0000THENCARRY_OUT=1ELSECARRY_OUT=0ENDIFENDIFENDPROCESSQ=TMPENDrtl设计完两个计数器之后,在计时器电路模块,对该十进制和六进制计数器电路模块进行定义并元件例化,生成相应的元件符号。如图11和12所示:-19-图图11十进制计数器电路符号十进制计数器电路符号图图12六进制计数器电路符号六进制计数器电路符号4.1.3.3.由六进制计数器和十进制计数器级联构成的计时器VHDL程序如下:LIBRARYIEEEUSEIEEE.STD_LOGIC_1164.ALLENTITYcounterISPORT(COOK:INSTD_LOGICLOAD:INSTD_LOGICCLK:INSTD_LOGICDATA:INSTD_LOGIC_VECTOR(15DOWNTO0)SEC0:OUTSTD_LOGIC_VECTOR(3DOWNTO0)SEC1:OUTSTD_LOGIC_VECTOR(3DOWNTO0)MIN0:OUTSTD_LOGIC_VECTOR(3DOWNTO0)MIN1:OUTSTD_LOGIC_VECTOR(3DOWNTO0)DONE:OUTSTD_LOGIC)ENDcounterARCHITECTURErtlOFcounterISCOMPONENTcnt10ISPORT(CLK:INSTD_LOGICLOAD:INSTD_LOGICEN:INSTD_LOGICDATAIN:INSTD_LOGIC_VECTOR(3DOWNTO0)Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0)CARRY_OUT:OUTSTD_LOGIC)ENDCOMPONENTcnt10COMPONENTcnt6ISPORT(CLK:INSTD_LOGICLOAD:INSTD_LOGICEN:INSTD_LOGICDATAIN:INSTD_LOGIC_VECTOR(3DOWNTO0)Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0)CARRY_OUT:OUTSTD_LOGIC)ENDCOMPONENTcnt6-20-SIGNALCLK0:STD_LOGICSIGNALS0:STD_LOGICSIGNALS1:STD_LOGICSIGNALS2:STD_LOGICSIGNALS3:STD_LOGICBEGINU1:cnt10PORTMAP(CLKLOADCOOKDATA(3DOWNTO0)SEC0S0)U2:cnt6PORTMAP(S0LOADCOOKDATA(7DOWNTO4)SEC1S1)U3:cnt10PORTMAP(S1LOADCOOKDATA(11DOWNTO8)MIN0S2)U4:cnt6PORTMAP(S2LOADCOOKDATA(15DOWNTO12)MIN1S3)DONE=S0ANDS1ANDS2ANDS3ENDrtl然后将两计数器级联构成。由六进制计数器和十进制计数器级联构成的计时器内部组成原理图如图13所示:图图1313烹饪计时器烹饪计时器JSQJSQ的内部原理图的内部原理图这里,计时器相应的顶层文件电路符号如图14所示:-21-图图1414JSQJSQ的电路符号的电路符号其中,输入信号LOAD为高电平时完成信号的载入;COOK信号为高电平时,在每个时钟周期的上升沿进行减法计数。输出信号DONE表示烹调时间到;SEC_03.0、SEC_13.0、MIN_03.0、MIN_13.0显示所剩时间,和测试状态信息、烹调完毕状态信息等。4.1.4.4.1.4.控制模块控制模块的顶层文件完整的顶层文件完整VHDLVHDL程序程序综合上述分析,对该控制模块进行完整设计,以下是该模块顶层文件全部程序。LIBRARYIEEEUSEIEEE.STD_LOGIC_1164.ALLENTITYtopISPORT(DATA:INSTD_LOGIC_VECTOR(15DOWNTO0)RESET:INSTD_LOGICSET_T:INSTD_LOGICSTART:INSTD_LOGICTEST:INSTD_LOGICCLK:INSTD_LOGICCOOK:OUTSTD_LOGICSEC0:OUTSTD_LOGIC_VECTOR(3DOWNTO0)SEC1:OUTSTD_LOGIC_VECTOR(3DOWNTO0)MIN0:OUTSTD_LOGIC_VECTOR(3DOWNTO0)-22-MIN1:OUTSTD_LOGIC_VECTOR(3DOWNTO0)ENDtopARCHITECTURErtlOFtopISCOMPONENTcontrollorISPORT(RESETSET_TSTARTTESTCLKDONE:INSTD_LOGICCOOKLD_TESTLD_CLKLD_DONE:OUTSTD_LOGIC)ENDCOMPONENTcontrollorCOMPONENTloaderISPORT(DATAIN:INSTD_LOGIC_VECTOR(15DOWNTO0)LD_TEST:INSTD_LOGICLD_CLK:INSTD_LOGICLD_DONE:INSTD_LOGICDATAOUT:OUTSTD_LOGIC_VECTOR(15DOWNTO0)LOAD:OUTSTD_LOGIC)ENDCOMPONENTloaderCOMPONENTcounterISPORT(COOK:INSTD_LOGICLOAD:INSTD_LOGICCLK:INSTD_LOGICDATA:INSTD_LOGIC_VECTOR(15DOWNTO0)SEC0:OUTSTD_LOGIC_VECTOR(3DOWNTO0)SEC1:OUTSTD_LOGIC_VECTOR(3DOWNTO0)-23-MIN0:OUTSTD_LOGIC_VECTOR(3DOWNTO0)MIN1:OUTSTD_LOGIC_VECTOR(3DOWNTO0)DONE:OUTSTD_LOGIC)ENDCOMPONENTcounterSIGNALCOOK_TMP:STD_LOGICSIGNALTEST_TMP:STD_LOGICSIGNALCLK_TMP:STD_LOGICSIGNALDONE_TMP:STD_LOGICSIGNALLOAD_TMP:STD_LOGICSIGNALDONE:STD_LOGICSIGNALDATA_TMP:STD_LOGIC_VECTOR(15DOWNTO0)BEGINU1:controllorPORTMAP(RESETSET_TSTARTTESTCLKDONECOOK_TMPTEST_TMPCLK_TMPDONE_TMP)U2:loaderPORTMAP(DATATEST_TMPCLK_TMPDONE_TMPDATA_TMPLOAD_TMP)U3:counterPORTMAP(COOK_TMPLOAD_TMPCLKDATA_TMPSEC0SEC1MIN0MIN1DONE)COOK=COOK_TMPENDrtl生成相应的电路符号,如图15所示-24-图图1515控制模块顶层文件电路符号控制模块顶层文件电路符号其中,输入信号CLK为时钟输入信号,时钟上升沿敏感;TEST为数码显示管测试信号,高电平有效,用于测试显示管是否正常工作;SET_T为烹调时间设置时间,高电平有效时允许设置烹调时间;DATA为数据输入信号,用于设置烹调时间的长短和最高温度值;START为烹调开始的控制信号,高电平有效时开始烹调;RESET为复位信号,高电平有效时系统复位清零。输出信号COOK指示微波炉状态,它外接用于控制烹调的工作状态指示灯,高电平时表示烹调已经开始或正在进行,低电平便是烹调结束或没有进行;SEC_0、SEC_1、MIN_0、MIN_1分别表示秒个位、秒十位、分个位、分十位,他们分别接4个七段数码管,动态地显示完成烹调所剩的时间以及测试状态信息“8888”、烹调完毕的状态信息“DONE”。以下是该控制模块的内部原理图,如图16所示图图16控制模块内部原理图控制模块内部原理图4.2.4.2.显示模块的显示模块的VHDLVHDL源程序源程序根据以上译码对照表对该显示译码器进行设计,其具体代码如下:-25-扫描选择libraryieeeuseieee.std_logic_1164.alluseieee.std_logic_unsigned.allentityscanselectisport(clk:instd_logicres:instd_logicin1in2in3in4:instd_logic_vector(3downto0)sel:outstd_logic_vector(1downto0)daout:outstd_logic_vector(3downto0)endscanselectarchitecturebehaveofscanselectisbeginPROCESS(clk)VARIABLEcnt:std_logic_vector(1downto0)BEGINIF(clkeventANDCLK=1)THENifres=0thencnt:=00elseIFcnt=11THENcnt:=00ELSEcnt:=cnt+1ENDIFENDIFifcnt=00thendaout(0)=in1(0)daout(1)=in1(1)daout(2)=in1(2)daout(3)=in1(3)elsifcnt=01then-26-daout(0)=in2(0)daout(1)=in2(1)daout(2)=in2(2)daout(3)=in2(3)elsifcnt=10thendaout(0)=in3(0)daout(1)=in3(1)daout(2)=in3(2)daout(3)=in3(3)elsifcnt=11thendaout(0)=in4(0)daout(1)=in4(1)daout(2)=in4(2)daout(3)=in4(3)endifendifselqqqqqqqqqq=1101111endcaseendprocessendrtl生成相应的电路符号,如图17所示图图1717YMQYMQ的电路符号的电路符号5.5.系统波形仿真系统波形仿真5.1.5.1.状态转换控制器波形仿真状态转换控制器波形仿真完成状态转换控制器KZQ子模块VHDL源程序文件输入后,保存文件,对文件进行编译,然后进入波形仿真图:Controllor模块在时钟上升沿到来时,NXT=IDLE=000传送给CUR,然后进入-28-CASE语句比较,设置TEST=1,LD_TEST翻转为1,同时LAMP_TEST=001的状态转送给NXT于是CUR=NXT=001后LD_TEST=1。波形仿真图如图18所示:图图1818状态转换控制器状态转换控制器KZQ仿真图仿真图同理:设置SET_T=1对应波形仿真图如图19所示:图图1919状态转换控制器状态转换控制器KZQ仿真图仿真图设置START=1且DONE=0CUR=NXT=TIMER=011,此时表示开始烹饪,如中途DONE=1则CUR=NXT=DONE_MSG此时LD_DONE=1COOK=0表示停止烹饪。波形仿真图如图20所示:-29-图图2020状态转换控制器状态转换控制器KZQ仿真图仿真图分析该仿真文件,可以看到,当测试信号TEST为高电平有效时,测试输出信号LD_TEST为高电平;否则,当时间设置信号SET_T为高电平时,对应的指示信号LD_CLK输出高电平;当烹饪开始信号START信号为高电平时,对应输出COOK为高电平;当复位信号RESET为高电平时,系统复位清零,恢复初始状态。仿真结果符合模块设计的要求。5.2.5.2.数据装载器波形仿真数据装载器波形仿真完成数据装载器ZZQ子模块VHDL源程序文件输入后,保存文件,对文件进行编译,然后进入波形仿真图:当LD_TEST、LD_DONE、LD_CLK中任意一个为1时,LOAD就为1;当LD_TEST=1、LD_DONE=0、LD_CLK=0时,DATAIN输出常数ALLS的值为“1000100010001000”;当LD_TEST=

温馨提示

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

评论

0/150

提交评论