微波炉控制器的设计改进版(井冈山大学电信学院)

上传人:1777****777 文档编号:36281643 上传时间:2021-10-30 格式:DOC 页数:35 大小:1.65MB
收藏 版权申诉 举报 下载
微波炉控制器的设计改进版(井冈山大学电信学院)_第1页
第1页 / 共35页
微波炉控制器的设计改进版(井冈山大学电信学院)_第2页
第2页 / 共35页
微波炉控制器的设计改进版(井冈山大学电信学院)_第3页
第3页 / 共35页
资源描述:

《微波炉控制器的设计改进版(井冈山大学电信学院)》由会员分享,可在线阅读,更多相关《微波炉控制器的设计改进版(井冈山大学电信学院)(35页珍藏版)》请在装配图网上搜索。

1、微波炉控制器的设计与分析学院:电子与信息工程学院专业:电子信息科学与技术 姓名:詹丽君 学号:80514062 指导老师:肖开选- 1 - 时间:2010 年 12 月 15 日摘要摘要:本论文介绍了应用 FPGA 芯片和硬件描述语言(VHDL)设计微波炉控制器系统的方法。系统使用 VHDL 编程实现各底层模块的功能,顶层的设计采用图形输入完成。论文主要阐述模块化设计的思想和状态图的描述方法,以及他们在硬件描述语言中的应用,并展示了其在 MAXplusII 开发系统下的仿真结果。 微波炉控制器系统是一个实用型的系统,系统不仅具有操作简单的功能,而且烹调效果好,你可以按照固定程序烹调一些家常菜,

2、可以采取分时、分不同级别火力加热,既能节约时间又能节约能源。主要有以下几个模块:输入模块、控制模块和显示模块。输入模块实现按键扫描和键盘译码、控制模块包括状态转换控制、数据装载、烹饪计时、温度控制、音效提示等等、显示模块涉及到显示译码和指示灯的闪烁。 经过对系统做需求分析,详细功能设计、编码,模块连接,并利用 FPGA 实现相应的功能,经过波形仿真、下载调试,验证了设计方案的可行性及实现方法的有效性,基本实现了系统的要求。关键词关键词:FPGA;VHDL;微波炉定时控制器;状态图Abstract:This paper introduces the method that applying FP

3、GA chip and VHDL to design the control system of microwave ovens. The system uses VHDL to fulfill the function of - 2 -each bottom module and the design of the top layer is completed via graphic entering. This paper mainly illustrates the idea of module design and description method of state chart a

4、nd that their application in VHDL and simulation results in the develop system of MAXplusII. Microwave controller system is a utility-type system that includes not only the function of simple operation, but also good effect of cook. According to fixed routine, you can cook some homely dish via takin

5、g different time and different level firepower to heat, and this can not only save time, but also save energy. It mainly includes a couple of modules as follows: input module, control module and display module. Input module fulfills key-press scanning and keyboard decoding, control module includes s

6、tatus switching control, data loading, cook time, temperature control, sound effect tip and so on, display module comes down to display coding decipher and the flashing of indicator light. Through the analysis of requirement, detailed function design, coding, module connection, using FPGA to fulfill

7、 relevant function. Through waveform simulation, download debugging, it verifies the feasibility of the design and the effectiveness of realization method and basically fulfill the requirement of the system. Keywords: FPGA;VHDL; Microwave oven timer controller; Status chart1.绪论绪论随着人民生活水平的提高,微波炉开始进人越

8、来越多的家庭,它给人们的生活带来了极大的方便。微波炉由 2450MHz 的超高频来加热食物。它省时、省电、方便和卫生。作为现代的烹饪工具,微波炉的控制器体现着它的重要性能指标。目前大部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。本文采用先进的 EDA 技术,利用 MAXplus II 工作平台和 VHDL 设计语言,设计了一种新型的微波炉控制器系统。该系统具有系统复位、时间设定、烹饪计时、温度控制和音效提示等功能,在 FPGA 上实现。1.1.任务的提出任务的提出在现代人快节奏生活中,微波炉已成为便捷生活的一部分。随着控制技术和智能技术的发展,微波炉也向着智能化、信息化发展。

9、而现有市售的微波炉其主要弊- 3 - 端为:不能按既有程序进行烹调,需要使用者根据食物的类型、数量、温度等因素去设定微波炉的工作时间,若设定的工作时间过长,含水分较多的食物可能会产生过热碳化的现象,若时间过短则达不到预期的烹调效果。不仅在节能方面未做过多考虑,使用者还需要经常翻看使用说明书才能完成操作过程。针对这些问题,笔者认为有必要研制一种操作简单且烹调效果好的微波炉,根据一些家常菜按固定程序烹调的现象,可采取分时、分档火力加热,节时又节能。1.2.课题的内容和要求课题的内容和要求 本课题是基于 FPGA 的微波炉控制器设计,设计题目为微波炉定时控制器。 设计要求如下: 1、复位开关: 2、

10、启动开关: 3、烹调时间设置: 4、烹调时间显示: 5、七段码测试: 6、启动输出: 7、按 TEST 键可以测试七段码管,显示为“5959” ; 8、设定时间后,按启动键开始烹调,同时七段码显示剩余时间,时间为 0 时,显示烹调完成信息“CDEF” 。1.3.设计的目的和意义设计的目的和意义目前大部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。本设计采用先进的 EDA 技术,利用 VHDL 设计语言,设计一种新型的微波炉控制器。该控制器具有系统复位、状态控制、时间设定、火力档位选择、烹饪计时、温度控制、显示译码和音效提示等功能,基于 FPGA 芯片实现。该微波炉控制系统,除实

11、现常规的解冻、烹调、烘烤的基本功能外,还进行了创新设计,实现了微波炉的自定义设置。本系统控制部分以 FPGA 芯片为核心,通过功能按键设置和手动数据输入,完成不同功能时自动以预置方案或者自定义方案加热。其中,预制方案提供烹调、烘- 4 -烤、解冻等系统烹调流程,仅供用户选择,无需设置;而自定义方案,用户根据食物含量、重量等手动设置时间、温度和选择火力等操作。在烹饪过程中,能通过数码管显示或者指示灯提示知道食物的成熟度,可以智能控制。该系统在功能执行时,能实现门开关检测、键盘输入扫描、温度控制、LED 显示、工作状态指示、蜂鸣等。 2.系统总体设计系统总体设计2.1.系统总体设计方案系统总体设计

12、方案根据题目要求,现需设计一个微波炉控制器 WBLKZQ,通过该控制器再配以 4 个七段数码二极管完成微波炉的定时及信息显示。该系统控制部分以 FPGA 芯片为核心,根据该微波炉控制器的功能设计要求,本系统可由以下 4 个模块组成: 状态控制器 KZQ; 数据装载器 ZZQ; 烹调计时器 JSQ; 显示译码器YMQ47。 以下是该系统总体框图,如图 1 所示:图 1 微波炉控制器系统总体框图指示灯功能如下:完成提示:提示微波炉工作完成。该灯亮时,表示烹饪完成;意外报警:提示意外情况发生。该灯亮时,表示出现意外,微波炉暂停工作;- 5 - 解冻:该灯亮时,表示工作在解冻模式下;烘烤:该灯亮时,表

13、示工作在烘烤模式下;烹调:该灯亮时,表示工作在烹调模式下;测试:该灯亮时,表示微波炉处于测试状态;开门指示:指示微波炉的门的状态,门开时灯亮,门关时灯灭;工作状态:指示微波炉处于工作状态,工作时灯亮,不工作时灯灭;2.2.系统功能模块描述系统功能模块描述本系统主要由输入、控制和显示部分组成。输入部分主要完成用户对控制功能的设置,采用按键作为输入设备。控制部分是本系统的核心,它接收用户的输入,完成相应的控制逻辑功能,并将当前的工作状态等信息送到显示部分。显示部分主要监视系统工作状态并提示用户进行控制操作。以下是该系统功能模块图,如图 2 所示- 6 -图图 2 2 系统功能模块图系统功能模块图2

14、.2.1.2.2.1.输入模块输入模块输入部分一般采用键盘或旋钮作为输入,本系统采用键盘进行输入设置,即由一个 4*4 矩阵键盘实现数据输入控制。该矩阵键盘上 16 个按键分别是:10Min 1Min/100/High 10Sec/10/Middle 1Sec/1/Low /+1 复位 暂停/取消 测试 /-1 火力设定 温度设定 时间设置 烹调 烘烤 解冻 开始/确认。输入模块包括时钟脉冲电路、键盘扫描电路、消枓同步电路和键盘译码电路,通过该模块将扫描得到的按键值送到控制模块。由于实验室的设备有限,则此部分模块不具体阐述。2.2.2.控制模块控制模块控制部分作为整个微波炉控制器系统的核心,它

15、采用 FPGA 芯片作为主控核心,完成许多复杂的控制和数据处理任务。它通过输入模块提供的按键输入实现数据信息装载处理,并将处理结果通过显示模块显示出来。其涉及到数据的装载、状态转换控制、烹饪计时、温度控制、火力控制、音响效应提示等。2.3.3.显示模块显示模块显示部分采用七段数码管和发光二极管来实现。由于数码管显示信息较少,一些信息用数码管显示不够直观,因此本系统在采用数码管显示的同时,还用发光二极管作为辅助显示。其中,用七段数码管作为时间、温度、火力大小显示,用发光二极管作为状态提示显示。具体设计时,采用 4 位 LED 数码管显示加热倒计时,3位 LED 数码管显示当前温度值,1 位 LE

16、D 数码管显示当前火力档位。8 个状态提示指示灯分别表示:工作状态、开门指示、测试、烹调、烘烤、解冻、意外报警、完成提示。2.4.系统的工作流程系统的工作流程微波炉控制器系统的工作流程为:上电后,系统首先处于一种复位状态,其各电路模块均处于初始状态。此时,8 个数码管上会显示“88888888”的信息,所有指示灯亮。按 TEST 键,数码管和发光二极管全亮、全灭交替闪烁,可以测试数码管和指示灯工作是否正常。系统工作时,首先通过键盘输入数据,比如,按烹调、烘- 7 - 烤、解冻键选择系统预置方案,或者按时间设置键设置时间,按温度设定键设置温度,按火力选择键选择火力,结合 10Min、1Min/1

17、00/High、10Sec/10/Middle、1Sec/1/Low 按键进行自定义方案设置,设置结束以后,表示数据装载完成,按 START 键后系统进入烹调状态。在烹饪过程中,可以按暂停/取消键暂停烹饪,或者重新设置时间、温度、火力。烹饪结束后,系统会发出音效提示,同时,系统自动进入复位状态。根据系统工作流程,绘制主程序流程图,如图 3 所示:- 8 -图 3 系统工作流程图- 9 - 3.系统详细设计系统详细设计3.1.控制模块设计控制模块设计控制模块是整个微波炉控制器系统的核心,完成许多复杂的控制和数据处理任务,它通过输入模块提供的按键输入实现数据信息装载处理,控制显示模块显示相应的信息

18、。控制模块采用 FPGA 芯片作为主控芯片,其涉及到数据的装载、状态控制转换、烹饪计时、温度控制、火力控制、音效提示等。其中,状态控制转换子模块,其功能是控制微波炉工作过程中的状态转换,并发出相关控制信号。数据装载子模块,其功能是根据按键信号设置定时时间、最高温度、火力档位,烹调属性设置以及烹调数据信息装载。烹饪计时子模块,其功能是对时钟进行减法计数,提供烹调完成时的状态信号。温度控制子模块,其功能是在食物烹饪过程中进行温度测定和控制,它同时实现火力控制。音效控制子模块,其功能是控制微波炉工作时的音效提示,这里直接外接一个蜂鸣器实现该功能。 其功能子模块图如下,图 4 所示:控控制制模模块块C

19、ontrol数数据据装装载载子子模模块块ZZQ烹烹饪饪计计时时子子模模块块JSQ温温度度控控制制子子模模块块KWQ音音效效控控制制子子模模块块ALARM状状态态转转换换控控制制子子模模块块KZQ4 控制模块功能子模块图控制模块功能子模块图3.1.1.状态转换控制状态转换控制器器根据微波炉工作流程的描述,分析状态转换条件及输出信号,可以得到控制模块的状态转换图。如图 5 所示:- 10 -时时间间、温温度度设设置置状状态态SET_CLOCK显显示示译译码码测测试试状状态态LAMP_TEST完完成成信信息息显显示示状状态态DONE_MSG减减法法计计数数定定时时状状态态TIMER初初始始状状态态I

20、DLEX/LD_TESTTEST/LD_TESTSET_T&TEST/LD_CLKX/LD_CLKLD_DONE/COOKRESETX/LD_DONEDONE/LD_DONESTART&DONE&TEST&SET_T/COOKOTHERWISE/ALL OUTPUT=0图图 5 控制模块状态转换图控制模块状态转换图图中,当 RESET 信号有效时,系统复位清零;输入/输出对应时间温度设置、显示译码测试、完成信号显示和减法计数定时四种状态进行相应的转换。由此生成的状态转换 ASM 图如图 6 所示:图 6 状态转换 ASM 图- 11 - 3.1.2.数据装载数据装载器器数据装载器 ZZQ,它本

21、质上就是一个三选一的数据选择器。根据其应完成的逻辑功能,本设计可采用一个进程来完成,但由于三个被选择的数据只有一个来自输入口,因此另两个被选择的数据则通过进程的说明部分定义两个常数来产生。由于 ZZQ 装入测试的数据可以用 8 个 8 作为显示驱动信息数据,因此,将该用于显示的常数 ALLS 分解成 8 个“8”,其中 4 个“8”作为时间显示驱动信息,3 个“8”作为温度显示驱动信息,1 个“8”作为火力档位显示驱动信息,分别经过八个译码器译码后显示驱动信息编码。因此,该常数应是 8 个分段的 4 位 BCD 码,即“1000 1000 1000 1000”和“1000 1000 1000

22、1000” ,同理,DONE 的 BCD 码分别为“1010 1011 1100 1101”以显示 DONE 的常数 DONE。3.1.3.烹饪计时烹饪计时器器烹饪计时器 JSQ 为减计数计数器,其最大计时时间为 59:59,因此可用两个减计数十进制计数器 DCNT10 和两个减计数六进制计数器 DCNT6 级联构成。其中,两个十进制的减法计数器用于分、秒的个位减法计数,两个六进制的减法计数器用于分、秒的十位减法计数。由所学知识可知,计数的功能是累计输入脉冲的个数,实现计数功能的数字电路即计数器,被计数的脉冲可以是周期性脉冲,也可以是非周期性脉冲,通常加在计数器的时钟脉冲输入端,作为计数器的时

23、钟脉冲。因此,根据减法计数器随计数脉冲的不断输入而递减计数,在具体设计该十进制减法计数器和六进制减法计数器过程中,可以当计数值减到 0 时,其计数器的数值自动转为定时设定时间,在十进制计数器的设计过程中,可表达为: IF CQI=0000 THEN CQI=1001; ELSE CQI=CQI-1;同理,六进制计数器的设计表达式为: IF CQI=0000 THEN CQI=0101; ELSE CQI=CQI-1;设计完两个计数器之后,在计时器电路模块,对该十进制和六进制计数器电路模块进行定义并元件例化,生成相应的元件符号。然后将两计数器级联构成。由六进制计数器和十进制计数器级联构成的计时器

24、。- 12 -3.2.显示模块设计显示模块设计显示部分采用七段数码管和发光二极管来实现。由于数码管显示信息较少,一些信息用数码管显示不够直观,因此本系统在采用数码管显示的同时,还用发光二极管作为辅助显示。其中,用七段数码管作为时间、温度、火力大小显示,用发光二极管作为状态提示显示。具体设计时,采用 4 位 LED 数码管显示加热倒计时,3位 LED 数码管显示当前温度值,1 位 LED 数码管显示当前火力档位。8 个状态提示指示灯分别表示:工作状态、开门指示、测试、烹调、烘烤、解冻、意外报警、完成提示。其外观显示如图 7 所示:图 7 显示界面外观效果图其中,时间/温度/火力显示主要由 LED

25、 数码管实现。分段式显示器(LED 数码管)由 7 条线段围成,只要按规律控制各发光段的亮、灭,就可以显示各种字形或符号。 LED 数码管有共阳、共阴之分。图 8 是共阴式 LED 数码管的原理图。使用时,公共阴极接地,7 个阳极 ag 由相应的 BCD 七段译码。图 8 七段数码管电路图- 13 - BCD 七段译码器的输入是 1 组 BCD 码,输出是数码管各段的驱动信号(以ag 表示) ,也称 4-7 译码器。若用它驱动共阴 LED 数码管,则输出应为高有效,即输出为高(1)时,相应显示段发光。根据组成 09 这 10 个字形的要求可以列出该七段译码器的真值表。本显示译码器不仅要对数字

26、09 进行显示译码,还要对字母d、o、n、E 进行显示译码。这其译码对照表如表 1 所示:表表 1 译码对照表译码对照表显显示示的的数数字字或或字字母母BCD编编码码七七段段显显示示驱驱动动编编码码( ga)000000111111100010000110200101011011300111001111401001100110501011101101601101111101701110000111810001111111910011101111d10101011110o10111011100n11001010100E110111110014.4.主要主要 VHDL 源程序源程序4.1.4.1.

27、控制模块控制模块 VHDL 源程序源程序4.1.1.4.1.1.状态转换控制器状态转换控制器 VHDLVHDL 源程序源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY controllor IS PORT(RESET,SET_T,START,TEST,CLK,DONE: IN STD_LOGIC;- 14 - COOK,LD_TEST,LD_CLK,LD_DONE: OUT STD_LOGIC);END ENTITY controllor;ARCHITECTURE rtl OF con

28、trollor ISTYPE STATES IS(IDLE,LAMP_TEST,SET_CLOCK,TIMER,DONE_MSG);SIGNAL NXT,CUR:STATES;BEGIN PROCESS(CLK,RESET) BEGIN IF RESET=1 THEN -如果 RESET=1 ,则系统清零, CUR=IDLE; -当前状态为初始状态, ELSIF CLKEVENT AND CLK=1 THEN -当同步时钟脉冲, CUR=NXT; -当前状态为下一状态 END IF; END PROCESS; PROCESS(CLK,CUR,SET_T,START,TEST,DONE) IS

29、BEGIN NXT=IDLE; LD_TEST=0; -当前状态为初始状态时, LD_DONE=0; LD_CLK=0; COOK -此时,译码显示测试状态 LD_TEST=1; COOK -时间温度设置状态 LD_CLK=1; COOK -完成信息显示状态 LD_DONE=1; COOK IF TEST=1 THEN -在初始状态,如果按下“TEST”键, NXT=LAMP_TEST; LD_TEST=1; -下一状态即为显示测试状态- 15 - ELSIF SET_T=1 THEN -如果按下“SET_T”键, NXT=SET_CLOCK; LD_CLK=1; -下一状态即为时间设置状态

30、ELSIF START=1 AND DONE=0 THEN -如果按下“START”键, NXT=TIMER; -即烹调开始进行时, COOK -在减法计数定时状态,如果输出 DONE 指示 IF DONE=1 THEN -烹调信息完成,则下一状态为 NXT=DONE_MSG; LD_DONE=1; -显示信息完成状态,显示烹调完成信息, ELSE -否则,下一状态还是减法计数定时状态, NXT=TIMER; -COOK 高电平有效 COOK=1; END IF; END CASE; END PROCESS;END rtl;生成的控制模块相应的电路符号,如图 9 所示: 图图 9 KZQ 电路

31、符号电路符号- 16 -4.1.2.4.1.2.数据装载器数据装载器 VHDL 源程序源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY loader IS PORT( DATAIN: IN STD_LOGIC_VECTOR(15 DOWNTO 0); LD_TEST:IN STD_LOGIC; LD_CLK: IN STD_LOGIC; LD_DONE:IN STD_LOGIC; DATAOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); LOAD:OUT S

32、TD_LOGIC );END loader;ARCHITECTURE rtl OF loader ISBEGIN PROCESS(DATAIN,LD_TEST,LD_CLK,LD_DONE) CONSTANT ALLS: STD_LOGIC_VECTOR(15 DOWNTO 0) :=1000100010001000; CONSTANT DONE: STD_LOGIC_VECTOR(15 DOWNTO 0) :=1010101111001101; VARIABLE TEMP: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN LOAD DATAOUT DATAOUT DA

33、TAOUTNULL; END CASE; END PROCESS;END rtl;完成 VHDL 源程序的输入,编译、运行,生成相应的电路符号,如下图 10 所示: - 17 - 图图 10 ZZQ 电路符号电路符号4.1.3.4.1.3.烹饪计时器烹饪计时器 VHDLVHDL 源程序源程序5.1.3.1.十进制计数器的 VHDL 源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt10 IS PORT( CLK:IN STD_LOGIC; LOAD:IN STD_LO

34、GIC; EN:IN STD_LOGIC; DATAIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC );END cnt10;ARCHITECTURE rtl OF cnt10 ISSIGNAL TMP: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK,LOAD,EN) BEGIN IF LOAD=1 THEN TMP=DATAIN; ELSIF CLKEVENT AND CLK=1 THEN IF EN=

35、1 THEN IF TMP=0000 THEN -当计数值减到 0 时,其计数器的数值 TMP=1001; ELSE -自动转为定时设定时间- 18 - TMP=TMP-1; END IF; END IF; END IF; END PROCESS; PROCESS(CLK,TMP) BEGIN IF CLKEVENT AND CLK=1 THEN IF TMP=0000 THEN CARRY_OUT=1; ELSE CARRY_OUT=0; END IF; END IF; END PROCESS; Q=TMP;END rtl;4.1.3.2 六进制计数器的 VHDL 源程序如下:LIBRARY

36、 IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt6 IS PORT( CLK:IN STD_LOGIC; LOAD:IN STD_LOGIC; EN:IN STD_LOGIC; DATAIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC );END cnt6;ARCHITECTURE rtl OF cnt6 ISSIGNAL TMP: STD_LOGI

37、C_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK,LOAD,EN) BEGIN IF LOAD=1 THEN TMP=DATAIN; ELSIF CLKEVENT AND CLK=1 THEN IF EN=1 THEN- 19 - IF TMP=0000 THEN -当计数值减到 0 时,其计数器的数值 TMP=0101; ELSE -自动转为定时设定时间 TMP=TMP-1; END IF; END IF; END IF; END PROCESS; PROCESS(CLK,TMP) BEGIN IF CLKEVENT AND CLK=1 THEN IF TMP=0

38、000 THEN CARRY_OUT=1; ELSE CARRY_OUT=0; END IF; END IF; END PROCESS; Q=TMP;END rtl;设计完两个计数器之后,在计时器电路模块,对该十进制和六进制计数器电路模块进行定义并元件例化,生成相应的元件符号。如图 11 和 12 所示:- 20 - 图图 11 十进制计数器电路符号十进制计数器电路符号 图图 12 六进制计数器电路符号六进制计数器电路符号 4.1.3.3.由六进制计数器和十进制计数器级联构成的计时器 VHDL 程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTI

39、TY counter IS PORT( COOK:IN STD_LOGIC; LOAD:IN STD_LOGIC; CLK :IN STD_LOGIC; DATA:IN STD_LOGIC_VECTOR(15 DOWNTO 0); SEC0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEC1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MIN0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MIN1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); DONE:OUT STD_LOGIC );END cou

40、nter;ARCHITECTURE rtl OF counter ISCOMPONENT cnt10 IS PORT( CLK:IN STD_LOGIC; LOAD:IN STD_LOGIC; EN:IN STD_LOGIC; DATAIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC );END COMPONENT cnt10;COMPONENT cnt6 IS PORT( CLK:IN STD_LOGIC; LOAD:IN STD_LOGIC; EN

41、:IN STD_LOGIC; DATAIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC );END COMPONENT cnt6;- 21 - SIGNAL CLK0:STD_LOGIC;SIGNAL S0:STD_LOGIC;SIGNAL S1:STD_LOGIC;SIGNAL S2:STD_LOGIC;SIGNAL S3:STD_LOGIC;BEGIN U1:cnt10 PORT MAP(CLK,LOAD,COOK,DATA(3 DOWNTO 0)

42、,SEC0,S0); U2:cnt6 PORT MAP(S0,LOAD,COOK,DATA(7 DOWNTO 4),SEC1,S1); U3:cnt10 PORT MAP(S1,LOAD,COOK,DATA(11 DOWNTO 8),MIN0,S2); U4:cnt6 PORT MAP(S2,LOAD,COOK,DATA(15 DOWNTO 12),MIN1,S3); DONE=S0 AND S1 AND S2 AND S3;END rtl;然后将两计数器级联构成。由六进制计数器和十进制计数器级联构成的计时器内部组成原理图如图 13 所示: 图图 1313 烹饪计时器烹饪计时器 JSQJSQ

43、的内部原理图的内部原理图这里,计时器相应的顶层文件电路符号如图 14 所示:- 22 -图图 1414 JSQJSQ 的电路符号的电路符号 其中,输入信号 LOAD 为高电平时完成信号的载入;COOK 信号为高电平时,在每个时钟周期的上升沿进行减法计数。输出信号 DONE 表示烹调时间到;SEC_03.0、SEC_13.0、MIN_03.0、MIN_13.0显示所剩时间,和测试状态信息、烹调完毕状态信息等。4.1.4.4.1.4.控制模块控制模块的顶层文件完整的顶层文件完整 VHDLVHDL 程序程序综合上述分析,对该控制模块进行完整设计,以下是该模块顶层文件全部程序。 LIBRARY IEE

44、E;USE IEEE.STD_LOGIC_1164.ALL;ENTITY top IS PORT( DATA: IN STD_LOGIC_VECTOR(15 DOWNTO 0); RESET:IN STD_LOGIC; SET_T:IN STD_LOGIC; START:IN STD_LOGIC; TEST :IN STD_LOGIC; CLK :IN STD_LOGIC; COOK :OUT STD_LOGIC; SEC0 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEC1 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MIN0 :OUT

45、STD_LOGIC_VECTOR(3 DOWNTO 0);- 23 - MIN1 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );END top;ARCHITECTURE rtl OF top ISCOMPONENT controllor IS PORT( RESET,SET_T,START,TEST,CLK,DONE: IN STD_LOGIC; COOK,LD_TEST,LD_CLK,LD_DONE: OUT STD_LOGIC );END COMPONENT controllor;COMPONENT loader IS PORT( DATAIN: IN STD_L

46、OGIC_VECTOR(15 DOWNTO 0); LD_TEST:IN STD_LOGIC; LD_CLK: IN STD_LOGIC; LD_DONE:IN STD_LOGIC; DATAOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); LOAD:OUT STD_LOGIC );END COMPONENT loader;COMPONENT counter IS PORT( COOK:IN STD_LOGIC; LOAD:IN STD_LOGIC; CLK :IN STD_LOGIC; DATA:IN STD_LOGIC_VECTOR(15 DOWNTO 0);

47、SEC0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEC1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);- 24 - MIN0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MIN1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); DONE:OUT STD_LOGIC );END COMPONENT counter;SIGNAL COOK_TMP:STD_LOGIC;SIGNAL TEST_TMP:STD_LOGIC;SIGNAL CLK_TMP :STD_LOGIC;SIGNAL DONE_TMP:S

48、TD_LOGIC;SIGNAL LOAD_TMP:STD_LOGIC;SIGNAL DONE:STD_LOGIC;SIGNAL DATA_TMP:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGIN U1:controllor PORTMAP(RESET,SET_T,START,TEST,CLK,DONE,COOK_TMP,TEST_TMP,CLK_TMP,DONE_TMP); U2:loader PORTMAP(DATA,TEST_TMP,CLK_TMP,DONE_TMP,DATA_TMP,LOAD_TMP); U3:counter PORTMAP(COOK_TMP,LOA

49、D_TMP,CLK,DATA_TMP,SEC0,SEC1,MIN0,MIN1,DONE); COOK=COOK_TMP;END rtl;生成相应的电路符号,如图 15 所示- 25 - 图图 1515 控制模块顶层文件电路符号控制模块顶层文件电路符号其中,输入信号 CLK 为时钟输入信号,时钟上升沿敏感;TEST 为数码显示管测试信号,高电平有效,用于测试显示管是否正常工作;SET_T 为烹调时间设置时间,高电平有效时允许设置烹调时间;DATA 为数据输入信号,用于设置烹调时间的长短和最高温度值;START 为烹调开始的控制信号,高电平有效时开始烹调;RESET 为复位信号,高电平有效时系统复

50、位清零。输出信号 COOK 指示微波炉状态,它外接用于控制烹调的工作状态指示灯,高电平时表示烹调已经开始或正在进行,低电平便是烹调结束或没有进行;SEC_0、SEC_1、MIN_0、MIN_1 分别表示秒个位、秒十位、分个位、分十位, ,他们分别接 4 个七段数码管,动态地显示完成烹调所剩的时间以及测试状态信息“8888”、烹调完毕的状态信息“DONE”。以下是该控制模块的内部原理图,如图 16 所示图图 16 控制模块内部原理图控制模块内部原理图4.2.4.2.显示模块的显示模块的 VHDLVHDL 源程序源程序根据以上译码对照表对该显示译码器进行设计,其具体代码如下:- 26 -扫描选择l

51、ibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity scanselect is port (clk:in std_logic; res:in std_logic; in1,in2,in3,in4:in std_logic_vector(3 downto 0); sel:out std_logic_vector(1 downto 0); daout:out std_logic_vector(3 downto 0); end scanselect;architecture behave of

52、scanselect is begin PROCESS (clk) VARIABLE cnt:std_logic_vector(1 downto 0); BEGIN IF(clkevent AND CLK=1)THENif res=0then cnt:=00;else IF cnt=11 THEN cnt:=00; ELSE cnt:=cnt+1; END IF; END IF; if cnt=00 then daout(0)=in1(0); daout(1)=in1(1); daout(2)=in1(2); daout(3)=in1(3);elsif cnt=01 then- 27 - da

53、out(0)=in2(0); daout(1)=in2(1); daout(2)=in2(2); daout(3)=in2(3);elsif cnt=10 then daout(0)=in3(0); daout(1)=in3(1); daout(2)=in3(2); daout(3)=in3(3);elsif cnt=11 then daout(0)=in4(0); daout(1)=in4(1); daout(2)=in4(2); daout(3)=in4(3);end if;end if;selqqqqqqqqqq=1101111;end case;end process;end rtl;

54、生成相应的电路符号,如图 17 所示 图图 1717 YMQYMQ 的电路符号的电路符号 5.5.系统波形仿真系统波形仿真5.1.5.1.状态转换控制器波形仿真状态转换控制器波形仿真 完成状态转换控制器 KZQ 子模块 VHDL 源程序文件输入后,保存文件,对文件进行编译,然后进入波形仿真图:Controllor 模块在时钟上升沿到来时,NXT=IDLE=000,传送给 CUR,然后进入- 29 - CASE 语句比较,设置 TEST=1,LD_TEST 翻转为 1,同时 LAMP_TEST=001的状态转送给 NXT,于是 CUR=NXT=001,后 LD_TEST=1。波形仿真图如图 18

55、 所示: 图图 1818 状态转换控制器状态转换控制器 KZQ 仿真图仿真图同理:设置 SET_T=1,对应波形仿真图如图 19 所示: 图图 1919 状态转换控制器状态转换控制器 KZQ 仿真图仿真图设置 START=1 且 DONE=0,CUR=NXT=TIMER=011,此时表示开始烹饪,如中途 DONE=1,则CUR=NXT=DONE_MSG,此时 LD_DONE=1;COOK=0;表示停止烹饪。波形仿真图如图20 所示:- 30 - 图图 2020 状态转换控制器状态转换控制器 KZQ 仿真图仿真图分析该仿真文件,可以看到,当测试信号 TEST 为高电平有效时,测试输出信号 LD_

56、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 时,DATAI

57、N 输出常数 ALLS 的值为“1000100010001000” ;当 LD_TEST=0、LD_DONE=10、LD_CLK=0 时,DATAIN 输出常数 DONE 的值为“1010101111001101” ;当 LD_TEST=1、LD_DONE=0、LD_CLK=0 时,DATAIN 输出常数 DATAIN 的值。由以上分析可得出数据装载器 Loader 模块波形仿真图如图 21 所示: 图图 2121 数据装载器数据装载器 ZZQZZQ 仿真图仿真图分析该模块仿真结果,由于数据装载器本质上即多了选择译码电路。可知,当LD_CLK、LD_TEST、LD_DONE 三路信号中有且仅有

58、一路信号电平有效时,选择器相应的值作为输出。5.3.5.3.烹饪计时器仿真烹饪计时器仿真 由于烹调计时器是由两个减计数十进制计数器 DCNT10 和两个减计数六进制计数器 DCNT6 级联构成,因此,先完成两个减计数十进制和六进制计数器的 VHDL 源程- 31 - 序文件输入,保存文件并对文件进行编译、仿真。以下分别是两减计数器的功能仿真图。六进制计数器模块波形仿真图如图 22 所示: 图图 2222 六进制计数器六进制计数器 DCNT6DCNT6 仿真图仿真图六进制计数器模块波形仿真图如图 23 所示: 图图 2323 六进制计数器六进制计数器 DCNT6DCNT6 仿真图仿真图 分析以上

59、计数器仿真结果,LOAD 为 1 时,DATAIN 里面的数据传给 TMP,再将其传递给 Q,完成数据的加载;而时钟上升沿到来且 EN=1 时,计数器开始减 1,在此期间 CARRY_OUT 一直输出 0。直到 TMP 为“0000” ,此时 CARRY_OUT 输出 1,同时TMP 有从“0101”开始减 1。同理,十进制计数器模块波形仿真图如图 24 所示: 图图 2424 十进制计数器十进制计数器 DCNT10DCNT10 仿真图仿真图Counter 模块波形仿真图如图 25 所示:- 32 - 图图 2525 烹饪计时器烹饪计时器 CounterCounter 模块仿真图模块仿真图简要

60、描述:设置 LOAD 一段时间(时间设定小心!) ,然后通过设置 COOK 为 1 微波炉工作,设定的时间在时钟的控制下进行减计数。当数据从设定值减到 0 时,DONE 跳变为 1,表示时间到,微波炉停止工作。5.4.5.4.显示译码器仿真显示译码器仿真 完成显示译码器 YMQ 模块 VHDL 源程序文件输入后,保存文件,对文件进行编译,然后进行波形仿真。Top 模块波形仿真图如图 26 所示: 图图 2626 显示译码器显示译码器 YMQYMQ 仿真图仿真图分析仿真结果,可知,该译码器实现了显示译码功能。- 33 - 5.55.5 总体设计的原理图总体设计的原理图 图图 2727 顶层原理图

61、设计顶层原理图设计5.65.6 硬件仿真图硬件仿真图 图图 2828 硬件仿真图硬件仿真图- 34 -6.6.结论结论 该课题是利用 ALTERA 公司的 MAXplus II 开发环境和软件,进行 VHDL 程序设计,然后进行仿真,调试,以 CYC-L2 V2.0 便携式 EDA/SOPC/DSP 实验系统为硬件平台,实现了一个简单的微波炉控制器系统的设计。在整个的设计过程中进行了系统的总体设计,硬件设备的选用,软件和开发环境的安装,VHDL 程序设计与仿真。设计的难点主要在功能控制上,数据和控制信号较多,状态之间的转化也较为复杂,在设计中带来了一些困难。另外在仿真分析上,因为需要测试的结果

62、很多,有些结果无法预料,无法在仿真中看到。本设计也存在一定的不足。由于本身能力和实验器材的限制,无法在系统中建立完善的体制,只是实现了一个微波炉控制器的基本功能。比如像存储功能,就没有在系统中考虑到,这些都有待以后的继续提高和完善。参考文献参考文献1 张志刚FPGA 与 SOPC 设计教程:DE2 实践西安:西安电子科技大学出版社,20072 陈荣,陈华VHDL 芯片设计北京:机械工业出版社,20063 徐光辉,程东旭,黄如基于 FPGA 的嵌入式开发与应用北京:电子工业出版社,20064 王国强EDA 技术与应用北京:电子工业出版社,20065 亿特科技CPLD/FPGA 应用系统设计与产品开发北京:人民邮电出版社,20056 Bob Zeidman基于 FPGA&CPLD 的数字 IC 设计方法北京:北京航空航天大学出版社,2004

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!