《微波炉控制器设计.docx》由会员分享,可在线阅读,更多相关《微波炉控制器设计.docx(19页珍藏版)》请在优知文库上搜索。
1、定时器集成电路的设计一、根本功能1、复位开关:reset2、启动开关:start_cook3、烹调时间设置:setjime4、烹调时间显示:min;sec5、七段码测试:test6、启动输出:cook二、信号描述T、CLK:外部时钟。std_logic;2、 RESET:复位信号,“1有效。StLbgic;3、 TEST:测试信号1”有效。StdJogic;4、SETTIME:时间设置1有效。std_logic;5、 DATA15.0:4*4BCD数码设置(59分59秒)std_logic_vector(15.0);6、 STRTCOOK:烹调开始“1”有效。StdJogic;1、COOk:烹
2、调进行信号,接继电器“1有效。StdJogic;2、min_msb:3、minsb:4、sec_msb:5、sejlsb:std_logic_vector(1to7);std_logic_vector(1to7);std_logic_vector(1to7);std_logic_vector(1to7);三、设计分析1、控制状态机:工作状态状态转换。2、数据装入电路:根据控制信号选择定时时间、测试数据或完成信号的装入。3、定时器电路:负责完成烹调过程中的时间递减计数和数据译码供应七段数码显示,同时还可以提供烹调完成时间的状态信号供控制状态机产生完成信号。microwave_timer四、模块设
3、计CL. KDONE TE STSE TeTXMERE SE TTfRT.COOKCUK一COOKDONECOOKTE STLORD.8888TLORD.8888SET.TXMEI.OAD_CI_KTL.OAD.CL.KRE SE TL.OAD_DONE-XLOAD_DONESTaT一CoUZTROLSTRRTeOOOK1、控制状态机设计输入输出信号ENTITYstate_countrolISPORT(elk,done,resetJest,set_time,start_cook:INstd_logic;cook,load_8888,load_clk,load_done:OUTstd_logic
4、);END;根据输入信号和自身当时的状态完成状态转换和输出相应的信号。Cook:指示烹调进行中,同时提示计时器减数。load_8888:指示LoADER装入完成测试数据。load_clk:指示LoADER装入设置烹调时间数据。load.done:指示LoADER装入完成信息数据。 状态分析idle:复位状态。IamPjeSt:数码管测试状态。Sejclock:烹调时间设置状态。Timer:减数定时状态。done_msg:完成信息显示状态。 程序设计libraryIEEE;useIEEE.std_logic_1164.aIl;ENTITYstate_countrolISPORT(elk,done
5、,reset,test,set_time,start_cook:INstd_logic;cook,load_8888,load_clk,load_done:OUTstd_logic);END;ARCHITECTUREaOFstate_countrolISTYPESTATE_TYPEIS(idle,lamp_test,set_clock,timer,done_msg);SIGNALnext_state,current_state:STATE_TYPE;BEGINPROCESS(elk,reset)BEGINIFreset=TTHENcurrent_state=idle;ELSIF(clkEVEN
6、TANDelk=)THENcurrent_state=next_state;endif;endPROCESS;PROCESS(current_state,set_time,start_cook,test,done)beginnext_state=idle;load_8888=,0;load-clk-0;load-done=0,;cookload_8888=1;next-stateload_clk-1,;next-stateload_done=1;next_stateiftest=thennext_state=lamp_test;load_8888=;elsifset_time-thennext
7、_state=set_clock;load-clk=;elsifstart-cook=1anddone=0thennext_state=timer;cookifdone-thennext_state=done_msg;load-done=;elsenext_state=timer;cookL.OAD.CL.KLOADX LORDLORDsDONELORDmDOHELORD.VAUX5. . OJ -KL,ORDmVRLM TRC IS . . ODATAXS.OJIoaCL8888:1”时,输出测试数据。load_clk:输出设置烹调时间数据。load_done:T输出完成信息数据。load:
8、指示TlMER处于数据装入状态并装入有效数据。程序设计1.ibraryIEEE;uselEEE.stdOgic164.all;useIEEE.std_logic_arith.all;ENTITYloaderISPORT(load_8888,load_clk,load_done:INstd_logic;data:INstdOgijVeCtOr(15downto0);load:OUTstdOgic;load_val:OUTstdOgijVeCtOr(15downto0);END;ARCHITECTUREaOFloaderISBEGINPROCESS(data,load_8888,load_clk,
9、load_done)variabletemp:std_logic_vector(2downto0);BEGINloadload_valload_valIoad_valnull;ENDCASE;ENDPROCESS;ENDa;3、定时电路设计 输入输出信号ENTITYtimerISPORT(clk:INstdOgic;data:INstd_logic_vector(15downtoO);down:INstd_logic;load:INstd_logic;done:outstd_logic;min_msb:outstd_logic_vector(1to7);min_lsb:outstd_logic
10、_vector(1to7);sec_msb:outstd_Iogic_vector(1to7);sec_lsb:outstd_Iogic_vector(1to7);END;定时电路根据输入信号的描述是时序逻辑电路,主要由计数器构成。设计方法采用例化设计法。电路具有装入功能、逆计数功能及数据译码功能。1.oad:ii,f时,完成装入功能。down:“1时,执行逆计数功能。Done:表不宾调完成。min_msbminSbsec_msbsec_lsb:用于驱动七段数码管显示。注意:(1) 需要4个计数器(COImter4),每个计数器宽度为4。(2) 分、秒在个位“10”进制,在十位上“6进制。如“
11、59分:59秒。timer程序设计1.ibraryIEEE;useIEEE.std_logic_1164.aIl;useIEEE.std_logic_arith.all;useIEEE.std_logic_unsigned.aIl;ENTITYtimerISPORT(clk:INstdOgic;data:INstd_logic_vector(15downtoO);down:INstd_logic;load:INstd_logic;done:outstd_logic;min_msb:outstd_logic_vector(1to7);min_lsb:outstd_logic_vector(1to
12、7);sec_msb:outstd_logic_vector(1to7);sec_lsb:outstd_Iogic_vector(1to7);END;ARCHITECTUREaaOFtimerIScomponentcounter4PORT(clk:INstdogic;cnt_f_5:INStdJogic;data_in:INstd_logic_vector(3downto0);down:INStdJogic;load:INstd_logic;zero:OUTstdOgic;segs:OUTstd_logic_vector(1to7);endcomponent;signalzer,zerl,zer2,zer3:StdJogic;signaldownO,downl,down2,down3:std_logic;signaldata,data1,data2,data3:std_logic_vector(3downtoO);signalis_five,is_nine:std_logic;beginis-five=1,;is-nine=O;data3=data(15downto12);data2=data(11downto8);datal=data(7downto4);dat