收藏 分销(赏)

基于FPGA技术的微波炉控制器.doc

上传人:快乐****生活 文档编号:3979590 上传时间:2024-07-24 格式:DOC 页数:14 大小:62.04KB
下载 相关 举报
基于FPGA技术的微波炉控制器.doc_第1页
第1页 / 共14页
基于FPGA技术的微波炉控制器.doc_第2页
第2页 / 共14页
基于FPGA技术的微波炉控制器.doc_第3页
第3页 / 共14页
基于FPGA技术的微波炉控制器.doc_第4页
第4页 / 共14页
基于FPGA技术的微波炉控制器.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、基于FPGA技术的微波炉控制器大学*学院现代电子系统设计*系(院)*专业题目:基于FPGA技术的微波炉控制器学生姓名:班级:学号:指导教师:完成日期:年月摘要本文介绍了应用FPGA芯片和硬件描述语言(VHDL)设计微波炉控制器系统的方法.系统使用VHDL编程实现各底层模块的功能,顶层的设计采用图形输入完成。本文主要阐述模块化设计的思想和状态图的描述方法,以及它们在硬件描述语言中的应用,并展示了其在Quartus开发系统下的仿真结果和烧写到EPM570T100C5后的现象. 主要有以下几个模块:状态控制器KZQ、数据装载器ZZQ、烹调计时器JSQ、显示译码器YMQ47以及分频器和动态显示电路。

2、该控制器具有系统复位、状态控制、时间设定、烹饪计时、动态显示译码等功能.关键字:FPGA;VHDL;微波炉;控制器;状态图;定时器目录1。绪论11.1任务的提出11.2设计的基本要求11。3设计的目的和意义12。系统总体设计22。1系统总体方案设计22。2系统功能模块描述(具体的电路图和VHDL设计文件将在附件中给出)23.系统详细设计23。1 状态控制器KZQ的设计23.2 数据装载器ZZQ的设计53。3 烹调计时器JSQ的设计53。4 显示译码器YMQ47的设计54系统仿真64.1状态转换控制器KZQ仿真图64。2数据装载器ZZQ仿真图64。3计时器JSQ仿真74。4显示译码器YMQ47仿

3、真图85.设计总结86。参考文献87。附件97。1整体的原理图97.2各个基本模块的VHDL语言972。1分频器97。2.2控制器KZQ107。2。3装载器ZZQ117.2。4计时器JSQ,和其中需用到的DCNT6和DCNT10127。2。5译码器YMQ47157。2.6动态显示电路需要用到的DCNT4和decoder15121。绪论随着人民生活水平的提高,微波炉开始进入越来越多的家庭,它给人们的生活带来了极大的方便。它省事、省电、方便和卫生。作为现代的烹饪工具,微波炉控制器体现着它的重要性能指标。目前大部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。本文采用先进的EDA技术,

4、利用Quartus工作平台和VHDL设计语言,设计了一种新型的微波炉控制器系统.该控制器具有系统复位、状态控制、时间设定、烹饪计时、动态显示译码等功能。1。1任务的提出设计一个微波炉控制器1。2设计的基本要求(1)七段数码管及发光二极管完成微波炉的定时及状态显示;(2)控制器的输入信号包括定时控制信号、定时数据的输入、复位信号、开始煮饭的控制信号等;(3)其他(我们自己添加了测试数码管是否能够正常显示的TEST信号)。1.3设计的目的和意义目前大部分微波炉控制器采用单片机进行设计,电路比较复杂,性能不够灵活。本文采用先进的EDA技术,利用Quartus工作平台和VHDL设计语言,设计了一种新型

5、的微波炉控制器系统。该控制器具有系统复位、状态控制、时间设定、烹饪计时、动态显示译码等功能。2.系统总体设计2.1系统总体方案设计根据该微波炉控制器的功能设计要求,本系统可由以下6个模块组成:1。分频器;2.状态控制器KZQ;3。 数据装载器ZZQ;4。 烹调计时器JSQ;5。 显示译码器YMQ47;6。动态显示电路.其内部组成原理图如图1所示。图12。2系统功能模块描述(具体的电路图和VHDL设计文件将在附件中给出)各个模块的功能介绍(1)分频器fenpinqi模块的功能是实现对实验箱上的50Mhz的分频,是整个系统能够正常显示的基础。(2) 状态控制器KZQ的功能是控制微波炉工作过程中的状

6、态转换,并发出有关控制信息;输入信号为CLK、TEST、START、SET_T、RESET和DONE,输出信号为LD_DONE、LD_CLK、LD_8888和COOK信号。 (3) 数据装载器ZZQ的功能是根据KZQ发出的控制信号选择定时时间、测试数据或烹调完成信息的装入.(4) 计时器JSQ的功能是负责烹调过程中的时间递减计数,并提供烹调完成时的状态信号供KZQ产生烹调完成信号.(5) 显示译码器YMQ47的功能就是负责将各种显示信息的BCD转换成七段数码管显示的驱动信息编码。需要译码的信息有:数字09,字母d、o、n、E。(6)动态显示电路的功能是将显示译码器YMQ47驱动信息编码在数码管

7、有限的条件下显示出来.3。系统详细设计3。1 状态控制器KZQ的设计 状态控制器KZQ的功能是控制微波炉工作过程中的状态转换,并发出有关控制信息,因此我们可用一个状态机来实现它。经过对微波炉工作过程中的状态转换条件及输出信号进行分析,我们可得到其状态转换图如图2所示,其输入、输出端口如图3所示。图2 KZQ的状态转换图图3 KZQ的输入、输出端口图3。2 数据装载器ZZQ的设计ZZQ的输入、输出端口如图4所示,根据其应完成的逻辑功能,它本质上就是一个三选一数据选择器。本设计采用一个进程来完成,但由于三个被选择的数据只有一个来自输入端口,因此另两个被选择的数据则通过在进程的说明部分定义两个常数来

8、产生。图4 ZZQ的输入、输出端口图3。3 烹调计时器JSQ的设计烹调计时器JSQ为减数计数器,其最大计时时间为59:59.因此我们可用两个减计数十进制计数器DCNT10和两个减计数六进制计数器DCNT6级联构成.3.4 显示译码器YMQ47的设计本显示译码器YMQ47不但要对数字09进行显示译码,还要对字母d、o、n、E进行显示译码,其译码对照表如表1所示.表1 YMQ47的译码对照表4系统仿真4。1状态转换控制器KZQ仿真图4。2数据装载器ZZQ仿真图4。3计时器JSQ仿真因为计时器是由两个减计数十进制计数器DCNT10和两个减计数六进制计数器DCNT6级联构成,所以,先完成两个减计数十进

9、制和六进制计数器的仿真.以下分别是两减计数器的功能仿真图。十进制计数器DCNT10仿真图六进制计数器DCNT6仿真图在前面仿真正确的基础上,生成相应的元件,对两计数器进行级联,进行编译、仿真得到仿真结果图。下图是对59分59秒的仿真结果.由以上仿真结果可以看出,该JSQ模块实现了烹调计时的定时作用。4。4显示译码器YMQ47仿真图5.设计总结本设计使用Quartus软件进行编写,并在实验箱上实现.本设计有六个小模块模块,也可以分成两个大模块,一个模块是由KZQ、ZZQ、JSQ组成的,这个模块是本设计的基本,另一个模块是有分频器、译码器、动态显示电路组成的,这个模块是为了配合实验箱。第一次实验的

10、时候,发现管脚不够分配,知道这是因为实验箱上只有一个静态显示数码管,有8个动态显示数码管。于是,进行改进,在原来的基础上增加了动态显示模块.第二次实验的时候,发现数码管跳的过快,基本分辨不出来数字的变化,于是,想到是分频分的不够,于是,又改了一下分频器的分频系数.最后一次实验时,能够正确的进行显示,并能够完成系统复位、状态控制、时间设定、烹饪计时、动态显示译码等功能.唯一的缺陷是,当计时到00:00时,显示灯是灭了一下,然后继续亮。这是需要改进的地方。对于时间的设定,我们虽然没有实现键盘控制,但是我们可以通过软件进行设置,并不是通过接地或者接高电平写死了,而是可以改变的.我们自己添加了测试数码

11、管是否能够正常显示的TEST信号。6。参考文献1谭会生,张昌凡。EDA技术及其应用M。西安:西安电子科技大学出版社2江思敏.VHDL数字电路及系统设计.北京:机械工业出版社3院现代电子设计课本和实验指导书7。附件7。1整体的原理图7。2各个基本模块的VHDL语言72。1分频器library ieee;use ieee。std_logic_1164。all;use ieee.std_logic_unsigned.all;entity fenpinqi is port (nreset:in std_logic; clk:in std_logic; co:out std_logic; qcnt:bu

12、ffer std_logic_vector(19 downto 0) ); end fenpinqi;architecture behave of fenpinqi is begin process(clk,nreset) begin if(nreset=0)then qcnt=00000000000000000000; elsif(clkevent and clk=1)then qcnt=qcnt+1; end if; end process; co=qcnt(19); end behave;7.2.2控制器KZQ-KZQ.VHDLIBRARY IEEE;USE IEEE。STD_LOGIC

13、_1164.ALL;USE IEEE。STD_LOGIC_ARITH.ALL;ENTITY KZQ ISPORT(RESET,SET_T,START,TEST,CLK,DONE:IN STD_LOGIC; COOK,LD_8888,LD_CLK,LD_DONE:OUT STD_LOGIC);END ENTITY KZQ;ARCHITECTURE BEHAVE OF KZQ IS TYPE STATE_TYPE IS(IDLE,LAMP_TEST,SET_CLOCK,TIMER,DONE_MSG); SIGNAL NXT_STATE,CURR_STATE:STATE_TYPE; BEGIN PR

14、OCESS(CLK,RESET) IS BEGIN IF RESET=1 THEN CURR_STATE=IDLE; ELSIF CLKEVENT AND CLK=1 THEN CURR_STATE=NXT_STATE; END IF; END PROCESS; PROCESS(CLK,CURR_STATE,SET_T,START,TEST,DONE) IS BEGIN NXT_STATE=IDLE; -DEFAULTNEXTSTATE IS IDLE; LD_8888=0; LD_DONE=0; LD_CLK=0; COOK=0; CASE CURR_STATE IS WHEN LAMP_T

15、EST= LD_8888=1; COOK=0; WHEN SET_CLOCK= LD_CLK=1; COOK=0; WHEN DONE_MSG = LD_DONE=1; COOK=0; WHEN IDLE= IF(TEST=1) THEN NXT_STATE=LAMP_TEST; LD_8888=1; ELSIF SET_T=1 THEN NXT_STATE=SET_CLOCK; LD_CLK=1; ELSIF ((START=1) AND (DONE=0)) THEN NXT_STATE=TIMER; COOK=1; END IF; WHEN TIMER= IF DONE=1 THEN NX

16、T_STATE=DONE_MSG; LD_DONE=1; ELSE NXT_STATE=TIMER; COOK=1; END IF; END CASE; END PROCESS;END ARCHITECTURE BEHAVE;7.2。3装载器ZZQ-ZZQ.VHDLIBRARY IEEE;USE IEEE。STD_LOGIC_1164。ALL;USE IEEE.STD_LOGIC_ARITH。ALL;ENTITY ZZQ IS PORT(DATA1: IN STD_LOGIC_VECTOR(15 DOWNTO 0); LD_8888:IN STD_LOGIC; LD_CLK: IN STD_L

17、OGIC; LD_DONE:IN STD_LOGIC; DATA2:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); LOAD:OUT STD_LOGIC);END ENTITY ZZQ;ARCHITECTURE BHV OF ZZQ IS BEGINPROCESS(DATA1,LD_8888,LD_CLK,LD_DONE)IS CONSTANT ALL_8:STD_LOGIC_VECTOR(15 DOWNTO 0):=1000100010001000”; CONSTANT DONE:STD_LOGIC_VECTOR(15 DOWNTO 0):= 1010101111001

18、101”; VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN LOAD DATA2=ALL_8;-LOAD_8888 =1 WHEN ”010” = DATA2=DONE;-LOAD_DONE WHEN 001” = DATA2=DATA1;-LOAD_CLK WHEN OTHERS= NULL; END CASE; END PROCESS;END ARCHITECTURE BHV; 7.2.4计时器JSQ,和其中需用到的DCNT6和DCNT10-JSQ。VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164。ALL;U

19、SE IEEE。STD_LOGIC_UNSIGNED.ALL;USE IEEE。STD_LOGIC_ARITH.ALL;ENTITY JSQ IS PORT(COOK:IN STD_LOGIC; DATA3:IN STD_LOGIC_VECTOR(15 DOWNTO 0); LOAD:IN STD_LOGIC; CLK:IN STD_LOGIC; SEC_L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEC_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MIN_L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MIN_H

20、:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); DONE:OUT STD_LOGIC);END ENTITY JSQ;ARCHITECTURE ART OF JSQ IS COMPONENT DCNT10 IS PORT(CLK,LOAD,ENA:IN STD_LOGIC; DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC); END COMPONENT DCNT10; COMPONENT DCNT6 IS PORT(CL

21、K,LOAD,ENA:IN STD_LOGIC; DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC);END COMPONENT DCNT6; SIGNAL NEWCLK:STD_LOGIC; SIGNAL S1:STD_LOGIC; SIGNAL S2:STD_LOGIC; SIGNAL S3:STD_LOGIC; SIGNAL S4:STD_LOGIC; BEGIN U1:DCNT10 PORT MAP(CLK,LOAD,COOK,DATA

22、3(3 DOWNTO 0),SEC_L,S1); U2:DCNT6 PORT MAP(S1,LOAD,COOK,DATA3(7 DOWNTO 4),SEC_H,S2); U3:DCNT10 PORT MAP(S2,LOAD,COOK,DATA3(11 DOWNTO 8),MIN_L,S3); U4:DCNT6 PORT MAP(S3,LOAD,COOK,DATA3(15 DOWNTO 12),MIN_H,S4); DONE=S4 AND S3 AND S2 AND S1;END ARCHITECTURE ART;-DCNT6。VHDLIBRARY IEEE;USE IEEE.STD_LOGIC

23、_1164。ALL;USE IEEE.STD_LOGIC_UNSIGNED。ALL; ENTITY DCNT6 IS PORT(CLK:IN STD_LOGIC; LOAD:IN STD_LOGIC; ENA: IN STD_LOGIC; DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT: OUT STD_LOGIC );END ENTITY DCNT6; ARCHITECTURE ART OF DCNT6 ISSIGNAL CQI:STD_LOGIC_VECTOR(3

24、DOWNTO 0); BEGIN PROCESS(CLK,LOAD,ENA) IS BEGIN IF LOAD=1 THEN CQI=DATAIN; ELSIF CLKEVENT AND CLK=1 THEN IF ENA=1 THEN IF CQI=0000” THEN CQI=”0101; ELSE CQI=CQI1; END IF; END IF; END IF;END PROCESS; PROCESS(CLK,CQI) IS BEGIN IF CLKEVENT AND CLK=1 THEN IF CQI=”0000 THEN CARRY_OUT=1; ELSE CARRY_OUT=0;

25、 END IF; END IF; END PROCESS; CQ=CQI;END ARCHITECTURE ART;DCNT10。VHDLIBRARY IEEE;USE IEEE。STD_LOGIC_1164。ALL;USE IEEE。STD_LOGIC_UNSIGNED。ALL;ENTITY DCNT10 IS PORT(CLK:IN STD_LOGIC; LOAD:IN STD_LOGIC; ENA: IN STD_LOGIC; DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARR

26、Y_OUT: OUT STD_LOGIC );END ENTITY DCNT10; ARCHITECTURE ART OF DCNT10 IS SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK,LOAD,ENA) IS BEGIN IF LOAD=1 THEN CQI=DATAIN; ELSIF CLKEVENT AND CLK=1 THENIF ENA=1 THEN IF CQI=”0000” THEN CQI=”1001”; ELSE CQI=CQI1; END IF; END IF; END IF; END PROCES

27、S; PROCESS(CLK,CQI) IS BEGIN IF CLKEVENT AND CLK=1 THEN IF CQI=”0000” THEN CARRY_OUT=1;ELSE CARRY_OUTDOUT7DOUT7DOUT7DOUT7=”1111101; -6 WHEN 0111=DOUT7DOUT7=”1101111”; -9 WHEN 1010=DOUT7=”1011110; -d WHEN ”1011”=DOUT7=1011100; o WHEN 1100=DOUT7=”1010100; n WHEN 1101”=DOUT7=”1111001”; E WHEN OTHERS=DO

28、UT7=”0000000”; END CASE; END PROCESS;END ARCHITECTURE ART;7。2。6动态显示电路需要用到的DCNT4和decoder-cntm4。vhdlibrary ieee;use ieee。std_logic_1164.all;use ieee。std_logic_unsigned。all;entity cntm4 is port (ci:in std_logic; nreset:in std_logic; clk:in std_logic; co:out std_logic; qcnt:buffer std_logic_vector(3 dow

29、nto 0) );end cntm4;architecture behave of cntm4 is begin co=1 when (qcnt=”0011 and ci=1) else 0; process(clk,nreset) begin if(nreset=0) then qcnt=0000; elsif(clkevent and clk=1) then if(qcnt=3)then qcnt=0000”; else qcntseg=min_h; scan=0111”; when ”0001”=seg=min_l; scan=1011”; when ”0010”=seg=sec_h; scan=1101; when ”0011”=seg=sec_l; scan=”1110”; when others=seg=0000000”; scan=”0111; end case; end process;end bhv;

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服