基于FPGA技術的微波爐控制器_第1頁
基于FPGA技術的微波爐控制器_第2頁
基于FPGA技術的微波爐控制器_第3頁
基于FPGA技術的微波爐控制器_第4頁
基于FPGA技術的微波爐控制器_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

3、顯示譯碼器YMQ47仿真圖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和decoder15171.緒論隨著人民生活水平的提高,微波爐開始進入越來越多的家庭,它給人們的生活帶來了極大的方便。它省事、省電、方便和衛生。作為現代的烹飪工具,微波爐控制器體現著它的重要性能指標。目前大部分微波爐控制器采用單片機進行設計,電路比較復雜,性能不夠靈活。本文

4、采用先進的EDA技術,利用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)動態顯示電路的功能是將顯示譯碼器YMQ

7、47驅動信息編碼在數碼管有限的條件下顯示出來。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

12、std_logic; qcnt:buffer 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(clk'event and clk='1')then qcnt<=qcnt+1; end if; end process; co<=qcnt

13、(19); end behave;7.2.2控制器KZQ-KZQ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_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_CLOC

14、K,TIMER,DONE_MSG); SIGNAL NXT_STATE,CURR_STATE:STATE_TYPE; BEGIN PROCESS(CLK,RESET) IS BEGIN IF RESET='1' THEN 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<

15、=IDLE; -DEFAULT NEXT STATE IS IDLE; LD_8888<='0' LD_DONE<='0' LD_CLK<='0' COOK<='0' CASE CURR_STATE IS WHEN LAMP_TEST=> LD_8888<='1' COOK<='0' WHEN SET_CLOCK=> LD_CLK<='1' COOK<='0' WHEN DONE_MSG => LD_D

16、ONE<='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&#

17、39; 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 BEHAVE;7.2.3裝載器ZZQ-ZZQ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY ZZ

18、Q IS PORT(DATA1: IN STD_LOGIC_VECTOR(15 DOWNTO 0); LD_8888:IN STD_LOGIC; LD_CLK: IN STD_LOGIC; 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

19、DOWNTO 0):="1000100010001000" CONSTANT DONE:STD_LOGIC_VECTOR(15 DOWNTO 0):= "1010101111001101" VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN LOAD<=LD_8888 OR LD_DONE OR LD_CLK; TEMP:=LD_8888 & LD_DONE & LD_CLK; CASE TEMP IS WHEN "100" => DATA2<=ALL_

20、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;USE IEEE.STD_LOGIC_UNSIGNED.ALL

21、;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:OUT STD_LOGIC_VECTOR(3 DOWNTO

22、 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(CLK,LOAD,ENA:IN STD_LOGIC; DATAI

23、N: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,DATA3(3 DOWNTO 0),SEC_L,S1); U2:DC

24、NT6 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_1164.ALL;USE IEEE.STD_LO

25、GIC_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 DOWNTO 0); BEGIN PROCESS(

26、CLK,LOAD,ENA) IS BEGIN IF LOAD='1' THEN CQI<=DATAIN; ELSIF CLK'EVENT AND CLK='1' THEN IF ENA='1' THEN IF CQI="0000" THEN CQI<="0101" ELSE CQI<=CQI-'1' END IF; END IF; END IF;END PROCESS; PROCESS(CLK,CQI) IS BEGIN IF CLK'EVENT AND C

27、LK='1' THEN IF CQI="0000" THEN CARRY_OUT<='1' ELSE CARRY_OUT<='0' 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 S

28、TD_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 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;

29、 ELSIF CLK'EVENT AND CLK='1' THENIF ENA='1' THEN IF CQI="0000" THEN CQI<="1001" ELSE CQI<=CQI-'1' END IF; END IF; END IF; END PROCESS; PROCESS(CLK,CQI) IS BEGIN IF CLK'EVENT AND CLK='1' THEN IF CQI="0000" THEN CARRY_OUT<=

30、'1'ELSE CARRY_OUT<='0'END IF; END IF; END PROCESS; CQ<=CQI;END ARCHITECTURE ART;7.2.5譯碼器YMQ47-YMQ47.VHDLIBRARY 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); EN

31、D ENTITY YMQ47;ARCHITECTURE ART OF YMQ47 IS BEGIN PROCESS(AIN4) BEGIN CASE AIN4 IS WHEN "0000"=>DOUT7<="0111111" -顯示0的ga WHEN "0001"=>DOUT7<="0000110" -1 WHEN "0010"=>DOUT7<="1011011" -2 WHEN "0011"=>DOUT7<

32、="1001111" -3 WHEN "0100"=>DOUT7<="1100110" -4 WHEN "0101"=>DOUT7<="1101101" -5 WHEN "0110"=>DOUT7<="1111101" -6 WHEN "0111"=>DOUT7<="0000111" -7 WHEN "1000"=>DOUT7<=&quo

33、t;1111111" -8 WHEN "1001"=>DOUT7<="1101111" -9 WHEN "1010"=>DOUT7<="1011110" -d WHEN "1011"=>DOUT7<="1011100" -o WHEN "1100"=>DOUT7<="1010100" -n WHEN "1101"=>DOUT7<="111

34、1001" -E WHEN OTHERS=>DOUT7<="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; q

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論