




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 微波炉控制器的设计与分析 学院:电子与信息工程学院 专业:电子信息科学与技术 姓名:詹丽君 学号:80514062 指导老师:肖开选 - 1 - 时间:2010 年 12 月 15 日 摘要摘要:本论文介绍了应用 fpga 芯片和硬件描述语言(vhdl)设计微波炉控制器系统的方法。系统 使用 vhdl 编程实现各底层模块的功能,顶层的设计采用图形输入完成。论文主要阐述模块化设 计的思想和状态图的描述方法,以及他们在硬件描述语言中的应用,并展示了其在 maxplusii 开发系统下的仿真结果。 微波炉控制器系统是一个实用型的系统,系统不仅具有操作简单的功能,而且烹调效果好, 你可以按照固定程序
2、烹调一些家常菜,可以采取分时、分不同级别火力加热,既能节约时间又 能节约能源。主要有以下几个模块:输入模块、控制模块和显示模块。输入模块实现按键扫描 和键盘译码、控制模块包括状态转换控制、数据装载、烹饪计时、温度控制、音效提示等等、 显示模块涉及到显示译码和指示灯的闪烁。 经过对系统做需求分析,详细功能设计、编码,模块连接,并利用 fpga 实现相应的功能, 经过波形仿真、下载调试,验证了设计方案的可行性及实现方法的有效性,基本实现了系统的 要求。 关键词关键词:fpga;vhdl;微波炉定时控制器;状态图 abstract:this paper introduces the method t
3、hat applying fpga 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
4、of state chart and 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 homel
5、y dish via taking 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 m
6、odule includes status 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
7、 fpga to fulfill 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 chart 1.绪论绪论 随着
8、人民生活水平的提高,微波炉开始进人越来越多的家庭,它给人们的生活 带来了极大的方便。微波炉由 2450mhz 的超高频来加热食物。它省时、省电、方便 和卫生。作为现代的烹饪工具,微波炉的控制器体现着它的重要性能指标。目前大 部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。本文采用 先进的 eda 技术,利用 maxplus ii 工作平台和 vhdl 设计语言,设计了一种新型的 微波炉控制器系统。该系统具有系统复位、时间设定、烹饪计时、温度控制和音效 提示等功能,在 fpga 上实现。 1.1.任务的提出任务的提出 在现代人快节奏生活中,微波炉已成为便捷生活的一部分。随着控制技
9、术和智 能技术的发展,微波炉也向着智能化、信息化发展。而现有市售的微波炉其主要弊 - 3 - 端为:不能按既有程序进行烹调,需要使用者根据食物的类型、数量、温度等因素 去设定微波炉的工作时间,若设定的工作时间过长,含水分较多的食物可能会产生 过热碳化的现象,若时间过短则达不到预期的烹调效果。不仅在节能方面未做过多 考虑,使用者还需要经常翻看使用说明书才能完成操作过程。针对这些问题,笔者 认为有必要研制一种操作简单且烹调效果好的微波炉,根据一些家常菜按固定程序 烹调的现象,可采取分时、分档火力加热,节时又节能。 1.2.课题的内容和要求课题的内容和要求 本课题是基于 fpga 的微波炉控制器设计
10、,设计题目为微波炉定时控制器。 设 计要求如下: 1、复位开关: 2、启动开关: 3、烹调时间设置: 4、烹调时间显示: 5、七段码测试: 6、启动输出: 7、按 test 键可以测试七段码管,显示为“5959” ; 8、设定时间后,按启动键开始烹调,同时七段码显示剩余时间,时间为 0 时, 显示烹调完成信息“cdef” 。 1.3.设计的目的和意义设计的目的和意义 目前大部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。 本设计采用先进的 eda 技术,利用 vhdl 设计语言,设计一种新型的微波炉控制器。 该控制器具有系统复位、状态控制、时间设定、火力档位选择、烹饪计时、温度
11、控 制、显示译码和音效提示等功能,基于 fpga 芯片实现。 该微波炉控制系统,除实现常规的解冻、烹调、烘烤的基本功能外,还进行了 创新设计,实现了微波炉的自定义设置。 本系统控制部分以 fpga 芯片为核心,通过功能按键设置和手动数据输入,完 成不同功能时自动以预置方案或者自定义方案加热。其中,预制方案提供烹调、烘 - 4 - 烤、解冻等系统烹调流程,仅供用户选择,无需设置;而自定义方案,用户根据食 物含量、重量等手动设置时间、温度和选择火力等操作。在烹饪过程中,能通过数 码管显示或者指示灯提示知道食物的成熟度,可以智能控制。 该系统在功能执行时,能实现门开关检测、键盘输入扫描、温度控制、l
12、ed 显 示、工作状态指示、蜂鸣等。 2.系统总体设计系统总体设计 2.1.系统总体设计方案系统总体设计方案 根据题目要求,现需设计一个微波炉控制器 wblkzq,通过该控制器再配以 4 个 七段数码二极管完成微波炉的定时及信息显示。该系统控制部分以 fpga 芯片为核 心,根据该微波炉控制器的功能设计要求,本系统可由以下 4 个模块组成: 状 态控制器 kzq; 数据装载器 zzq; 烹调计时器 jsq; 显示译码器 ymq47。 以下是该系统总体框图,如图 1 所示: 图 1 微波炉控制器系统总体框图 指示灯功能如下: 完成提示:提示微波炉工作完成。该灯亮时,表示烹饪完成; 意外报警:提示
13、意外情况发生。该灯亮时,表示出现意外,微波炉暂停工作; - 5 - 解冻:该灯亮时,表示工作在解冻模式下; 烘烤:该灯亮时,表示工作在烘烤模式下; 烹调:该灯亮时,表示工作在烹调模式下; 测试:该灯亮时,表示微波炉处于测试状态; 开门指示:指示微波炉的门的状态,门开时灯亮,门关时灯灭; 工作状态:指示微波炉处于工作状态,工作时灯亮,不工作时灯灭; 2.2.系统功能模块描述系统功能模块描述 本系统主要由输入、控制和显示部分组成。输入部分主要完成用户对控制功能 的设置,采用按键作为输入设备。控制部分是本系统的核心,它接收用户的输入, 完成相应的控制逻辑功能,并将当前的工作状态等信息送到显示部分。显
14、示部分主 要监视系统工作状态并提示用户进行控制操作。 以下是该系统功能模块图,如图 2 所示 - 6 - 图图 2 2 系统功能模块图系统功能模块图 2.2.1.2.2.1.输入模块输入模块 输入部分一般采用键盘或旋钮作为输入,本系统采用键盘进行输入设置,即由 一个 4*4 矩阵键盘实现数据输入控制。该矩阵键盘上 16 个按键分别是:10min 1min/100/high 10sec/10/middle 1sec/1/low /+1 复位 暂停/取消 测试 /-1 火力设定 温度设定 时间设置 烹调 烘烤 解冻 开始/确 认。输入模块包括时钟脉冲电路、键盘扫描电路、消枓同步电路和键盘译码电路,
15、 通过该模块将扫描得到的按键值送到控制模块。由于实验室的设备有限,则此部分 模块不具体阐述。 2.2.2.控制模块控制模块 控制部分作为整个微波炉控制器系统的核心,它采用 fpga 芯片作为主控核心, 完成许多复杂的控制和数据处理任务。它通过输入模块提供的按键输入实现数据信 息装载处理,并将处理结果通过显示模块显示出来。其涉及到数据的装载、状态转 换控制、烹饪计时、温度控制、火力控制、音响效应提示等。 2.3.3.显示模块显示模块 显示部分采用七段数码管和发光二极管来实现。由于数码管显示信息较少,一 些信息用数码管显示不够直观,因此本系统在采用数码管显示的同时,还用发光二 极管作为辅助显示。其
16、中,用七段数码管作为时间、温度、火力大小显示,用发光 二极管作为状态提示显示。具体设计时,采用 4 位 led 数码管显示加热倒计时,3 位 led 数码管显示当前温度值,1 位 led 数码管显示当前火力档位。8 个状态提示指 示灯分别表示:工作状态、开门指示、测试、烹调、烘烤、解冻、意外报警、完成 提示。 2.4.系统的工作流程系统的工作流程 微波炉控制器系统的工作流程为:上电后,系统首先处于一种复位状态,其各 电路模块均处于初始状态。此时,8 个数码管上会显示“88888888”的信息,所有 指示灯亮。按 test 键,数码管和发光二极管全亮、全灭交替闪烁,可以测试数码管 和指示灯工作是
17、否正常。系统工作时,首先通过键盘输入数据,比如,按烹调、烘 - 7 - 烤、解冻键选择系统预置方案,或者按时间设置键设置时间,按温度设定键设置温 度,按火力选择键选择火力,结合 10min、1min/100/high、10sec/10 /middle、1sec/1/low 按键进行自定义方案设置,设置结束以后,表示数据装载 完成,按 start 键后系统进入烹调状态。在烹饪过程中,可以按暂停/取消键暂停 烹饪,或者重新设置时间、温度、火力。烹饪结束后,系统会发出音效提示,同时, 系统自动进入复位状态。 根据系统工作流程,绘制主程序流程图,如图 3 所示: - 8 - 图 3 系统工作流程图 -
18、 9 - 3.系统详细设计系统详细设计 3.1.控制模块设计控制模块设计 控制模块是整个微波炉控制器系统的核心,完成许多复杂的控制和数据处理任 务,它通过输入模块提供的按键输入实现数据信息装载处理,控制显示模块显示相 应的信息。 控制模块采用 fpga 芯片作为主控芯片,其涉及到数据的装载、状态控制转换、 烹饪计时、温度控制、火力控制、音效提示等。其中,状态控制转换子模块,其功 能是控制微波炉工作过程中的状态转换,并发出相关控制信号。数据装载子模块, 其功能是根据按键信号设置定时时间、最高温度、火力档位,烹调属性设置以及烹 调数据信息装载。烹饪计时子模块,其功能是对时钟进行减法计数,提供烹调完
19、成 时的状态信号。温度控制子模块,其功能是在食物烹饪过程中进行温度测定和控制, 它同时实现火力控制。音效控制子模块,其功能是控制微波炉工作时的音效提示, 这里直接外接一个蜂鸣器实现该功能。 其功能子模块图如下,图 4 所示: 控控制制模模块块 control 数数据据装装载载 子子模模块块 zzq 烹烹饪饪计计时时 子子模模块块 jsq 温温度度控控制制 子子模模块块 kwq 音音效效控控制制 子子模模块块 alarm 状状态态转转换换控控制制 子子模模块块 kzq 4 控制模块功能子模块图控制模块功能子模块图 3.1.1.状态转换控制状态转换控制器器 根据微波炉工作流程的描述,分析状态转换条
20、件及输出信号,可以得到控制模 块的状态转换图。如图 5 所示: - 10 - 时时间间、温温度度 设设置置状状态态 set_clock 显显示示译译码码 测测试试状状态态 lamp_test 完完成成信信息息 显显示示状状态态 done_msg 减减法法计计数数 定定时时状状态态 timer 初初始始状状态态 idle x/ld_test test/ld_test set_t else cqi=cqi-1; 同理,六进制计数器的设计表达式为: if cqi=0000 then cqi=0101; else cqi=cqi-1; 设计完两个计数器之后,在计时器电路模块,对该十进制和六进制计数器电
21、路 模块进行定义并元件例化,生成相应的元件符号。然后将两计数器级联构成。由六 进制计数器和十进制计数器级联构成的计时器。 - 12 - 3.2.显示模块设计显示模块设计 显示部分采用七段数码管和发光二极管来实现。由于数码管显示信息较少,一 些信息用数码管显示不够直观,因此本系统在采用数码管显示的同时,还用发光二 极管作为辅助显示。其中,用七段数码管作为时间、温度、火力大小显示,用发光 二极管作为状态提示显示。具体设计时,采用 4 位 led 数码管显示加热倒计时,3 位 led 数码管显示当前温度值,1 位 led 数码管显示当前火力档位。8 个状态提示 指示灯分别表示:工作状态、开门指示、测
22、试、烹调、烘烤、解冻、意外报警、完 成提示。其外观显示如图 7 所示: 图 7 显示界面外观效果图 其中,时间/温度/火力显示主要由 led 数码管实现。分段式显示器(led 数码 管)由 7 条线段围成,只要按规律控制各发光段的亮、灭,就可以显示各种字形或 符号。 led 数码管有共阳、共阴之分。图 8 是共阴式 led 数码管的原理图。使用 时,公共阴极接地,7 个阳极 ag 由相应的 bcd 七段译码。 图 8 七段数码管电路图 - 13 - bcd 七段译码器的输入是 1 组 bcd 码,输出是数码管各段的驱动信号(以 ag 表示) ,也称 4-7 译码器。若用它驱动共阴 led 数码
23、管,则输出应为高有效,即 输出为高(1)时,相应显示段发光。根据组成 09 这 10 个字形的要求可以列出该七 段译码器的真值表。本显示译码器不仅要对数字 09 进行显示译码,还要对字母 d、o、n、e 进行显示译码。这其译码对照表如表 1 所示: 表表 1 译码对照表译码对照表 显显示示的的数数字字或或字字母母bcd编编码码七七段段显显示示驱驱动动编编码码( ga) 000000111111 100010000110 200101011011 300111001111 401001100110 501011101101 601101111101 701110000111 8100011111
24、11 910011101111 d10101011110 o10111011100 n11001010100 e11011111001 4.4.主要主要 vhdl 源程序源程序 4.1.4.1.控制模块控制模块 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_
25、logic; - 14 - cook,ld_test,ld_clk,ld_done: out std_logic); end entity controllor; architecture rtl of controllor is type 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
26、and clk=1 then -当同步时钟脉冲, cur=nxt; -当前状态为下一状态 end if; end process; process(clk,cur,set_t,start,test,done) is 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_te
27、st; ld_test=1; -下一状态即为显示测试状态 - 15 - elsif set_t=1 then -如果按下“set_t”键, nxt=set_clock; ld_clk=1; -下一状态即为时间设置状态 elsif start=1 and done=0 then -如果按下“start”键, nxt=timer; -即烹调开始进行时, cook -在减法计数定时状态,如果输出 done 指示 if done=1 then -烹调信息完成,则下一状态为 nxt=done_msg; ld_done=1; -显示信息完成状态,显示烹调完成信息, else -否则,下一状态还是减法计数定
28、时状态, nxt=timer; -cook 高电平有效 cook=1; end if; end case; end process; end rtl; 生成的控制模块相应的电路符号,如图 9 所示: 图图 9 kzq 电路符号电路符号 - 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
29、_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 loader; architecture rtl of loader is begin process(datain,ld_test,ld_clk,ld_done) constant alls: std_logic_vector(15 downto 0) :=1000100010001000; constant done: std_
30、logic_vector(15 downto 0) :=1010101111001101; variable temp: std_logic_vector(2 downto 0); begin load dataout dataout dataoutnull; end case; end process; end rtl; 完成 vhdl 源程序的输入,编译、运行,生成相应的电路符号,如下图 10 所示: - 17 - 图图 10 zzq 电路符号电路符号 4.1.3.4.1.3.烹饪计时器烹饪计时器 vhdlvhdl 源程序源程序 5.1.3.1.十进制计数器的 vhdl 源程序如下: li
31、brary ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity 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 cnt10; architecture rtl of cnt10 is signal
32、 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=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
33、=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 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
34、_vector(3 downto 0); q:out std_logic_vector(3 downto 0); carry_out:out std_logic ); end cnt6; architecture rtl of cnt6 is signal 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=1 then - 19 - if tmp=0000 then -当计 数值减 到
35、 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=0000 then carry_out=1; else carry_out=0; end if; end if; end process; q=tmp; end rtl; 设计完两个计数器之后,在计时器电路模块,对该十进制和六进制计数器电路模块 进行定义并元件例化,生成相应的元件符号。如图 11 和
36、12 所示: - 20 - 图图 11 十进制计数器电路符号十进制计数器电路符号 图图 12 六进制计数器电路符号六进制计数器电路符号 4.1.3.3.由六进制计数器和十进制计数器级联构成的计时器 vhdl 程序如下: library ieee; use ieee.std_logic_1164.all; entity 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
37、 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 counter; architecture rtl of counter is component cnt10 is port( clk:in std_logic; load:in std_logic; en:in std_logic; datain: in std_logic_vecto
38、r(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: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;
39、 - 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),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:c
40、nt6 port map(s2,load,cook,data(15 downto 12),min1,s3); done=s0 and s1 and s2 and s3; end rtl; 然后将两计数器级联构成。由六进制计数器和十进制计数器级联构成的计时器内部 组成原理图如图 13 所示: 图图 1313 烹饪计时器烹饪计时器 jsqjsq 的内部原理图的内部原理图 这里,计时器相应的顶层文件电路符号如图 14 所示: - 22 - 图图 1414 jsqjsq 的电路符号的电路符号 其中,输入信号 load 为高电平时 完成信号的载入;cook 信号为高电平时,在每个时钟周期的上升沿进行减法
41、计数。 输出信号 done 表示烹调时间到;sec_03.0、sec_13.0、min_03.0、 min_13.0显示所剩时间,和测试状态信息、烹调完毕状态信息等。 4.1.4.4.1.4.控制模块控制模块的顶层文件完整的顶层文件完整 vhdlvhdl 程序程序 综合上述分析,对该控制模块进行完整设计,以下是该模块顶层文件全部程序。 library ieee; 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
42、 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 std_logic_vector(3 downto 0); - 23 - min1 :out std_logic_vector(3 downto 0) ); end top; architecture rtl of top is com
43、ponent 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_logic_vector(15 downto 0); ld_test:in std_logic; ld_clk: in std_logic; ld_done:in std_logic; dataout:out std_logi
44、c_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); sec0:out std_logic_vector(3 downto 0); sec1:out std_logic_vector(3 downto 0); - 24 - min0:out std_logic_vector
45、(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:std_logic; signal load_tmp:std_logic; signal done:std_logic; signal data_tmp:std_logic_vector(15 downto 0
46、); begin u1:controllor portmap(reset,set_t,start,test,clk,done,cook_tmp,test_tmp,c lk_tmp,done_tmp); u2:loader portmap(data,test_tmp,clk_tmp,done_tmp,data_tmp,load_tm p); u3:counter portmap(cook_tmp,load_tmp,clk,data_tmp,sec0,sec1,min0,min 1,done); cook=cook_tmp; end rtl; 生成相应的电路符号,如图 15 所示 - 25 - 图
47、图 1515 控制模块顶层文件电路符号控制模块顶层文件电路符号 其中,输入信号 clk 为时钟输入信号,时钟上升沿敏感;test 为数码显示管 测试信号,高电平有效,用于测试显示管是否正常工作;set_t 为烹调时间设置时 间,高电平有效时允许设置烹调时间;data 为数据输入信号,用于设置烹调时间 的长短和最高温度值;start 为烹调开始的控制信号,高电平有效时开始烹调; reset 为复位信号,高电平有效时系统复位清零。 输出信号 cook 指示微波炉状态,它外接用于控制烹调的工作状态指示灯,高 电平时表示烹调已经开始或正在进行,低电平便是烹调结束或没有进行; sec_0、sec_1、m
48、in_0、min_1 分别表示秒个位、秒十位、分个位、分十位, ,他 们分别接 4 个七段数码管,动态地显示完成烹调所剩的时间以及测试状态信息 “8888”、烹调完毕的状态信息“done”。 以下是该控制模块的内部原理图,如图 16 所示 图图 16 控制模块内部原理图控制模块内部原理图 4.2.4.2.显示模块的显示模块的 vhdlvhdl 源程序源程序 根据以上译码对照表对该显示译码器进行设计,其具体代码如下: - 26 - -扫描选择 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; e
49、ntity 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 scanselect is begin process (clk) variable cnt:std_logic_vector(1 downto
50、 0); begin if(clkevent and clk=1)then if 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 - daout(0)=in2(0); daout(1)=in2(1); daout(2)=in2(2); daout(3)=in2(3); el
51、sif 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; 生成相应的电路符号,如图 17 所示 图图 1717 ymqymq 的电路符号的电路符号 5.5.系统波形仿真系统波形
52、仿真 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 所示: 图图 1818 状态转换控制器状态转换控制器 kzq 仿真图仿真图 同理:设置 set_t=1,对
53、应波形仿真图如图 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_test 为高电平;否则,当时间设置信号 set_t 为高电平时,对应的指示信号 ld_clk
54、 输出高电平;当烹饪开始信号 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=0、ld_done=10、ld_clk=0 时,datain 输出常数 done 的值为 “1010101111001101” ; 当 ld
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚不离家财产分割及共同生活协议范本
- 2025最具示范性门面租赁合同模板
- 2025家具销售合同的范本
- 2025医用电梯设备供应与维护全包合同
- 2025-2030封装晶体振荡器行业周期性特征与逆周期投资策略
- 2025-2030封装晶体振荡器在边缘计算节点的能效比优化实验报告
- 2025-2030多模态大模型在工业质检中的落地难点与对策
- 2025-2030复合调味酱包在快餐行业应用前景展望
- 2025-2030基因编辑技术在农业育种领域的商业化应用前景分析
- 2025-2030固态电池量产工艺突破与动力电池格局重塑研究报告
- 外科患者疼痛护理与管理
- 2024年共青团入团考试测试题库及答案
- 韩信点兵与中国剩余定理
- 2024年度网站域名合作契约
- 中国心力衰竭诊断和治疗指南2024解读(完整版)
- 第1章 直线与方程章末题型归纳总结(解析版)
- 眼球破裂伤护理查房
- Unit 1 (知识清单)-2024-2025学年三年级英语上学期期中复习讲练测(译林版三起·2024秋)
- 2024年秋季新人教版八年级上册物理全册教案(2024年新教材)
- 化工建设项目竣工验收管理办法
- 部编版五年级上册第二单元集体备课
评论
0/150
提交评论