欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载
     

    微波炉定时控制器的设计含程序 仿真EDA课程设计.doc

    • 资源ID:4854899       资源大小:258.27KB        全文页数:26页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微波炉定时控制器的设计含程序 仿真EDA课程设计.doc

    SOPC/EDA综合课程设计报告设计题目: 微波炉控制与设计设 计 者: 钟鹏 学 号: 37 班 级: 测控081 指导老师: 王忠锋 完成时间: 2011-1-7设计报告综合测试总评格式(10)内容(40)图表(10)答辩(20)平时(20)25目录第一章 微波炉定时控制器的设计方案分析31.1 系统设计的要求31.2 系统总体功能描述31.3 各模块的功能实现4第二章 微波炉定时控制器的设计步骤62.1状态控制器的设计62.1.1 controllor状态换图及端口图62.2数据装载器loader的设计72.3烹调计时器counter的设计72.3.1烹调计时器的内部组成原理图82.4显示译码器YMQ47的设计82.5锁存器的设计9第三章 微波炉控制器的VHDL源程序103.1各模块的VHDL源程序10第四章 总体原理图214.1 总体功能的顶层原理图21第五章 系统功能的仿真验证225.1 状态控制电路仿真波形图225.2数据装载电路的仿真225.3 计时电路仿真235.4微波炉控制器显示仿真245.5SCQ的仿真图245.6总体功能的仿真分析25结束语26参考文献27 第一章 微波炉定时控制器的设计方案分析1.1 系统设计的要求 现需设计一个微波炉控制器WBLCONTROLLOR,其外部接口如下图所示。通过该控制器再配以4个七段数码二极管完成微波炉的定时及信息显示。各信号的功能及要求如下: CLK是秒时钟脉冲输入,它接收每秒一个时钟脉冲的节拍信号。RESET为复位信号,高电平有效,用于芯片的复位功能。TEST为测试信号,高电平有效,用于测试4个七段数码二极管工作是否正常。Start为开始加热信号,高电平有效,SET_T信号为定时设置信号,高电平时可以设置定时时间,DATA为定时的时间,cook为 加热输出(用指示灯代替),另外四个输出分别表示显示的定时时间的分和秒。其他功能自行扩展并设计。1.2 系统总体功能描述现需设计的微波炉控制器WBLCONTROLLOR的外部接口如图1-1所示,通过该控制器,再配以七段数码二极管完成微波炉的定时信息和信息的显示。 图1-1 WBLCONTROLLOR的端口图 各信号功能及要求如下:CLK是秒时钟脉冲输入,它接收每秒一个时钟脉冲的节拍信号。RESET为复位信号,高电平有效,用于芯片的复位功能。TEST信号是测试信号,高电平有效,用于测试七段数码管工作是否正常。SET_T是烹调时间设置控制信号,高电平有效。DATA0是一个16为总线输入信号,输入所设置的时间长短,它由高到低分为4组,每一组是BCD码输入,分别表示分、秒十位、个位的数字,如12分59秒。START是烹调开始的控制信号,高电平有效。COOK是烹调进行信号,外接用于控制烹调的继电器开关,高电平时表明烹调已经开始或正在进行,低电平表示烹调结束或没有进行。MIN_0,MIN_1,SEC_0,SEC_1是四组七位总线信号,分别接4个七段数码管,动态的显示完成烹调所剩的时间及测试状态信息“0000”,烹调完毕的状态信息“DONE”. 该微波炉控制器WBLCONTROLLOR的具体功能要求如下9:上电后系统首先处于复位状态。在工作是首先按SET_T键设置烹调时间,此时系统输入DATA0的数据作为烹调所需的时间,然后系统自动回到复位状态,同时4个七段数码管显示时间信息。在按START键后系统进入烹调状态。COOK信号开始为高电平,此时4个七段数码管每隔一秒钟变化一次,用以刷新还剩剩余多少时间结束烹调。烹调结束后,COOK信号变为低电平,同时4个七段数码管组合在一起显示“DONE”的信息,然后系统回到复位状态。系统可以通过按RESET键随时回到复位状态。在复位状态下,按TEST键在4个数码管上会显示“0000”的信息,它可以测试4个七段数码管工作是否正常。1.3 各模块的功能实现根据该微波炉定时控制器的设计要求,本系统有四个模块:状态控制模块controllor,数据装载模块loader,烹调计时模块counter,显示译码模块YMQ47,锁存器模块SCQ。 (1)状态控制器模块是控制微波炉工作过程中的状态转换,并发出有关的控制信息,输入信号为CLK,TEST,SET_T,START,TESET,DONE和SEL.输出信号为LD_DONE,LD_test,LD_CLK,PT,WB等。根据输入的控制信号来完成完成状态转换;LD_DONE指示LOADER装入烹调完毕的状态信息“DONE”的显示驱动信息数据;LD_CLK指示LOADER装入设置的烹饪时间数据;LD_test指示LOADER装入用于测试的数据“0000”以显示驱动信息数据;COOK指示烹调正在进行中,并提示计数器进行减计数,PT和WB是两种状态的选择显示信息。(2)数据装载器LOADER的功能是根据CONTROLLOR发出的控制信号选择定时时间,测试数据或烹调完成信息的装入。当LD_DONE为高电平时,输出烹调完毕的信息数据;LD_CLK为高电平时,输出设置的烹饪时间数据;LD_test为高电平是,输出测试的数据。输出信号LOAD用于指示counter将处于数据装入状态。(3)计时器counter的功能是负责烹调过程中的时间递减计数,并提供烹调完成时的状态信号供CONTROLLOR产生烹调完成信号。LOAD为高电平时完成装入功能,COOK为高电平时执行逆计数功能。输出DONE指示烹调完成。MIN_1,MIN_0,SEC_1,SEC_0为完成烹调所剩的时间及测试状信息“0000”,烹调完毕的状态信息“DONE”的BCD码信息。(4)显示译码器YMQ47的功能是负责将各种显示信息的BCD码转换成七段数码管显示的驱动信息编码。需要译码的信息有:数字0-9,字母D,O,N,E。 1-2 YMQ47原理图第二章 微波炉定时控制器的设计步骤2.1状态控制器的设计 状态控制器的功能是控制微波炉工作过程中的状态转换,并发出有关的控制信息,因此可以用一个状态机来实现。经过对微波炉工作过程中的状态转换条件及输出信号进行分析,我们可以得到其状态转换图如图2-1所示。2.1.1 controllor状态换图及端口图 LAMP_TESTSET_CLOCKDONE_MSGTIMERIDLE图2-1 CONTROLLOR的状态转换图说明:SET_T烹调时间设置状态,LAMP_TEST数码管测试状态;DONE_MSG完成信息显示状态,TIMER减数定时状态。CONTROLLOR的端口图如下图所示: 图2-2 CONTROLLOR的端口图2.2数据装载器loader的设计LOADER的输入、输出端口如图2-3所示,根据其应完成的逻辑功能,它本质上就是一个三选一数据选择器。数据选择是指经过选择,把多个通道的数据传送到唯一的公共数据通道上去。实现数据选择功能的逻辑电路称为数据选择器。它的作用相当于多个输入的单刀多掷开关。数据选择器的电路结构一般由与或门阵列组成,也有用传输门开关和门电路混合而成的。 数据选择器的应用很广,它可以作二进制比较器、二进制发生器、图形发生电路、顺序选择电路。本设计采用一个进程来完成,但由于三个被选择的数据只有一个来自输入端口,因此另两个被选择的数据则通过在进程的说明部分定义两个常数来产生。由于用于显示“8888”的常数ALL 8需分解成4个8,分别经过四个4-7译码器译码后才是真正的显示驱动信息编码,因此该常数应是4个分段的4位BCD码,故应设为“1000100010001000”。同理,显示“donE”的常数DONE可设为“1010101111001101”,其中D,O,N,E的BCD码分别为:“1010”、“1011”、“1100”、“1101”。 该模块主要实现对状态控制器发出的状态信息的相应数据的装载功能。 图2-3 loader的端口图2.3烹调计时器counter的设计计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路。计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能。计数器是由基本的计数单元和一些控制门所组成,计数单元则由一系列具有存储信息功能的各类触发器构成,这些触发器有RS触发器、T触发器、D触发器及JK触发器等10。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。计数器按计数进制不同,可分为二进制计数器、十进制计数器、其他进制计数器和可变进制计数器,若按计数单元中各触发器所接收计数脉冲和翻转顺序或计数功能来划分,则有异步计数器和同步计数器两大类,以及加法计数器、减法计数器、加/减计数器等,如按预置和清除方式来分,则有并行预置、直接预置、异步清除和同步清除等差别,按权码来分,则有“8421”码,“5421”码、余“3”码等计数器,按集成度来分,有单、双位计数器等等10。烹调计时器counter为减数计数器,其最大计时时间为59分59秒,因此我们可以用两个键计数十进制计数器cnt10和两个减计数六进制cnt6级联构成。2.3.1烹调计时器的内部组成原理图 烹调计时器counter的内部组成原理图如图2-4所示。图2-4 counter的内部组成原理图说明:CLK为时钟输入信号,LOAD为装载控制信号,COOK为使能信号,DATA15.0为数据输入信号, SEC_1,SEC_0,MIN_1,MIN_0分别为妙,分的十位个位的输出,DONE为烹调状态的信息指示信号。当使能段信号有效,且时钟上升沿来时计数器根据装载数据的信息装入数据,并完成相应的功能。2.4显示译码器YMQ47的设计本显示译码器不但要对数字0-9进行显示译码,还要对字母D,O,N,E进行显示译码。其译码对照表如表2-1所示, 表2-1 YMQ47的译码对照表显示的数字或字母BCD编码七段显示驱动编码 000000111111 100010000110200101011011300111001111401001100110501011101101 601101111101701110000111810001111111910011101111D10101011110O10111011100N11001010100E110111110012.5锁存器的设计 锁存器SCQ的输入、输出端口如图2-5所示 图2-5 SCQ的端口图此单元主要用于完成定时时间到蜂鸣报警信息的实现,当时钟上升沿到来且清零信号无效时,同时COOK信号开始有高电平变为低电平时,输出信号则是蜂鸣器报警。其实质就是一个D触发器的功能。第三章 微波炉控制器的VHDL源程序3.1各模块的VHDL源程序下面是各模块的源程序:LIBRARY IEEE;-定义库文件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY controllor IS PORT (RESET:IN STD_LOGIC;-复位信号 SET_T:IN STD_LOGIC;-时间设置信号 START:IN STD_LOGIC;-开始烹调信号 TEST:IN STD_LOGIC;-显示电路测试信号 CLK:IN STD_LOGIC;-时钟信号 DONE:IN STD_LOGIC;-完成信号 SEL:IN STD_LOGIC; COOK:OUT STD_LOGIC; LD_test:OUT STD_LOGIC; LD_CLK:OUT STD_LOGIC; LD_DONE:OUT STD_LOGIC; PT:OUT STD_LOGIC; WB:OUT STD_LOGIC); END ENTITY controllor;ARCHITECTURE ART OF controllor IS TYPE STATE_TYPE IS (IDLE,LAMP_TEST,SET_CLOCK,TIMER,DONE_MSG);-状态 SIGNAL NXT_STATE ,CURR_STATE:STATE_TYPE; BEGIN PROCESS(CLK,RESET) IS BEGIN IF RESET ='1' THEN -清零 IF SEL='0'THEN PT<='1'WB<='0' ELSE PT<='0'WB<='1' ; END IF; CURR_STATE<=IDLE; ELSIF CLK 'EVENT 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; LD_test<='0' LD_DONE<='0' LD_CLK<='0' COOK<='0' CASE CURR_STATE IS WHEN LAMP_TEST=>LD_test<='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_test<='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 -减法计数定时状态 NXT_STATE<=DONE_MSG; LD_DONE<='1' ELSE NXT_STATE<=TIMER; COOK<='1' END IF; END CASE; END PROCESS; END ARCHITECTURE ART; 数据装载电路的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 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_logic_vector(15 downto 0)-烹调完成信息 :="1010101111001101" variable temp:std_logic_vector(2 downto 0);begin load<=ld_test or ld_done or ld_clk; temp:=ld_test & ld_done &ld_clk;case temp is when "100"=> -测试 dataout<=alls; when "010"=> -烹调完成 dataout<=done; when "001"=> -设置时间 dataout<=datain; when others=>null; end case ;end process;end rtl;计时电路的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_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 issignal tmp:std_logic_vector(3 downto 0); begin process(clk,load,en ) begin if load='1'thentmp<=datain; elsif clk'event and clk='1'then if en='1'then if tmp="0000"then tmp<="1001"else tmp<=tmp-'1'end if ;end if ;end if;end process;process(clk,tmp) begin if clk'event 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;-六进制减法计数器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_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_logic_vector(3 downto 0 );begin process(clk,load,en )begin if load='1'then tmp<=datain; elsif clk'event and clk='1'then if en='1'then if tmp="0000"then tmp<="0101" else tmp<=tmp-'1' end if ; end if ; end if; end process; process(clk,tmp) begin if clk'event 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;计时电路模块设计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 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_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: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; 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:cnt6 port map(s2,load,cook,data(15 downto 12),min1,s3); done<=s0 and s1 and s2 and s3;end rtl;顶层模块的VHDL实现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 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); min1:out std_logic_vector(3 downto 0); end top; architecture rtl of top is -定义状态控制电路模块 component controllor is port( reset: in std_logic; set_t:in std_logic; start:in std_logic; test:in std_logic; clk:in std_logic; done:in std_logic; cook:out std_logic; ld_test:out std_logic; ld_clk:out std_logic; 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_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); 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 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); begin cook<=cook_tmp;-电路模块例化 U1:controllor port map(reset,set_t,start,test,clk,done,cook_tmp,test_tmp,clk_tmp,done_tmp); U2:loader port map(data,test_tmp,clk_tmp,done_tmp,data_tmp,load_tmp); U3:counter port map(cook_tmp,load_tmp,clk,data_tmp,sec0,sec1,min0,min1,done); end rtl;显示译码YMQ47的VHDL实现LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY YMQ47 IS PORT(AIN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END ENTITY YMQ47;ARCHITECTURE ART OF YMQ47 IS BEGINPROCESS(AIN4) BEGIN CASE AIN4 IS WHEN "0000"=>DOUT7<="0111111" WHEN "0001"=>DOUT7<="0000110" WHEN "0010"=>DOUT7<="1011011" WHEN "0011"=>DOUT7<="1001111" WHEN "0100"=>DOUT7<="1100110" WHEN "0101"=>DOUT7<="1101101" WHEN "0110"=>DOUT7<="1111101" WHEN "0111"=>DOUT7<="0000111" WHEN "1000"=>DOUT7<="1111111" WHEN "1001"=>DOUT7<="1101111" WHEN "1010"=>DOUT7<="1011110" WHEN "1011"=>DOUT7<="1011100" WHEN "1100"=>DOUT7<="1010100" WHEN "1101"=>DOUT7<="1111001" WHEN OTHERS =>DOUT7<="0000000" END CASE; END PROCESS;END ARCHITECTURE ART; -YMQ47的源程序锁存SCQ的VHDL实现LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCQ IS port( clk:in std_logic; done:in std_logic; clr:in std_logic; arlm: out std_logic);end entity;ARCHITECTURE ART OF SCQ ISbegin process( clk,done,clr)begin if (done='1' and

    注意事项

    本文(微波炉定时控制器的设计含程序 仿真EDA课程设计.doc)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开