畢業(yè)設(shè)計(jì)---可編程微波爐控制器設(shè)計(jì)_第1頁
已閱讀1頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  摘 要</b></p><p>  本論文介紹了應(yīng)用FPGA芯片和硬件描述語言(VHDL)設(shè)計(jì)微波爐控制器系統(tǒng)的方法。系統(tǒng)使用VHDL編程實(shí)現(xiàn)各底層模塊的功能,頂層的設(shè)計(jì)采用圖形輸入完成。論文主要闡述模塊化設(shè)計(jì)的思想和狀態(tài)圖的描述方法,以及他們?cè)谟布枋稣Z言中的應(yīng)用,并展示了其在Quartus II 開發(fā)系統(tǒng)下的仿真結(jié)果。</p><p>

2、;  微波爐控制器系統(tǒng)是一個(gè)實(shí)用型的系統(tǒng),系統(tǒng)不僅具有操作簡單的功能,而且烹調(diào)效果好,你可以按照固定程序烹調(diào)一些家常菜,可以采取分時(shí)、分不同級(jí)別火力加熱,既能節(jié)約時(shí)間又能節(jié)約能源。主要有以下幾個(gè)模塊:輸入模塊、控制模塊和顯示模塊。輸入模塊實(shí)現(xiàn)按鍵掃描和鍵盤譯碼、控制模塊包括狀態(tài)轉(zhuǎn)換控制、數(shù)據(jù)裝載、烹飪計(jì)時(shí)、溫度控制、音效提示等等、顯示模塊涉及到顯示譯碼和指示燈的閃爍。</p><p>  經(jīng)過對(duì)系統(tǒng)做需求分析,詳

3、細(xì)功能設(shè)計(jì)、編碼,模塊連接,并利用FPGA實(shí)現(xiàn)相應(yīng)的功能,經(jīng)過波形仿真、下載調(diào)試,驗(yàn)證了設(shè)計(jì)方案的可行性及實(shí)現(xiàn)方法的有效性,基本實(shí)現(xiàn)了系統(tǒng)的要求。</p><p>  關(guān)鍵詞:FPGA;VHDL;微波爐;狀態(tài)圖;定時(shí)器</p><p><b>  Abstract</b></p><p>  This paper introduces the

4、method that applying FPGA chip and VHDL to design the control system of microwave ovens. The system uses VHDL to fulfill the function of each bottom module and the design of the top layer is completed via graphic enterin

5、g. This paper mainly illustrates the idea of module design and description method of state chart and that their application in VHDL and simulation results in the develop system of Quartus II.</p><p>  Microw

6、ave 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 homely dish via taking different time an

7、d 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-pr

8、ess scanning and keyboard decoding, control module inc</p><p>  Through the analysis of requirement, detailed function design, coding, module connection, using FPGA to fulfill relevant function. Through wave

9、form simulation, download debugging, it verifies the feasibility of the design and the effectiveness of realization method and basically fulfill the requirement of the system. </p><p>  Keywords: FPGA, VHDL,

10、 Microwave oven, Status chart, timer目 錄</p><p><b>  1.緒論1</b></p><p>  1.1.任務(wù)的提出1</p><p>  1.2.課題的內(nèi)容和要求1</p><p>  1.3.設(shè)計(jì)的目的和意義2</p><p>

11、  2.關(guān)鍵技術(shù)簡介3</p><p>  2.1.FPGA簡介3</p><p>  2.2.VHDL語言概述3</p><p>  2.3.Quartus II 開發(fā)系統(tǒng)簡介5</p><p>  3.系統(tǒng)總體設(shè)計(jì)7</p><p>  3.1.系統(tǒng)總體設(shè)計(jì)方案7</p>&l

12、t;p>  3.2.系統(tǒng)功能模塊描述9</p><p>  3.2.1.輸入模塊10</p><p>  3.2.2.控制模塊10</p><p>  3.2.3.顯示模塊11</p><p>  3.3.系統(tǒng)的工作流程11</p><p>  4.系統(tǒng)詳細(xì)設(shè)計(jì)13</p>

13、<p>  4.1.輸入模塊設(shè)計(jì)13</p><p>  4.1.1.鍵盤掃描13</p><p>  4.1.2.鍵盤譯碼16</p><p>  4.1.3.輸入模塊的實(shí)現(xiàn)17</p><p>  4.2.控制模塊設(shè)計(jì)18</p><p>  4.2.1.狀態(tài)轉(zhuǎn)換控制19</

14、p><p>  4.2.2.數(shù)據(jù)裝載22</p><p>  4.2.3.烹飪計(jì)時(shí)23</p><p>  4.2.4.溫度控制26</p><p>  4.2.5.控制模塊的實(shí)現(xiàn)29</p><p>  4.3.顯示模塊設(shè)計(jì)31</p><p>  5.系統(tǒng)仿真35<

15、/p><p>  5.1.輸入模塊仿真35</p><p>  5.2.狀態(tài)轉(zhuǎn)換控制器仿真35</p><p>  5.3.數(shù)據(jù)裝載器仿真36</p><p>  5.4.烹飪計(jì)時(shí)器仿真37</p><p>  5.5.顯示譯碼器仿真39</p><p><b>  6

16、.結(jié)論41</b></p><p><b>  致 謝42</b></p><p><b>  參考文獻(xiàn)43</b></p><p><b>  附 錄44</b></p><p><b>  緒論</b></p>&l

17、t;p>  隨著人民生活水平的提高,微波爐開始進(jìn)人越來越多的家庭,它給人們的生活帶來了極大的方便。微波爐由2450MHz的超高頻來加熱食物。它省時(shí)、省電、方便和衛(wèi)生。作為現(xiàn)代的烹飪工具,微波爐的控制器體現(xiàn)著它的重要性能指標(biāo)。目前大部分微波爐控制器采用單片機(jī)進(jìn)行設(shè)計(jì),電路比較復(fù)雜,性能不夠靈活。本文采用先進(jìn)的EDA技術(shù),利用Quartus II工作平臺(tái)和VHDL設(shè)計(jì)語言,設(shè)計(jì)了一種新型的微波爐控制器系統(tǒng)。該系統(tǒng)具有系統(tǒng)復(fù)位、時(shí)間設(shè)定

18、、烹飪計(jì)時(shí)、溫度控制和音效提示等功能,在FPGA上實(shí)現(xiàn)。</p><p><b>  任務(wù)的提出</b></p><p>  在現(xiàn)代人快節(jié)奏生活中,微波爐已成為便捷生活的一部分。隨著控制技術(shù)和智能技術(shù)的發(fā)展,微波爐也向著智能化、信息化發(fā)展。而現(xiàn)有市售的微波爐其主要弊端為:不能按既有程序進(jìn)行烹調(diào),需要使用者根據(jù)食物的類型、數(shù)量、溫度等因素去設(shè)定微波爐的工作時(shí)間,若設(shè)定的

19、工作時(shí)間過長,含水分較多的食物可能會(huì)產(chǎn)生過熱碳化的現(xiàn)象,若時(shí)間過短則達(dá)不到預(yù)期的烹調(diào)效果。不僅在節(jié)能方面未做過多考慮,使用者還需要經(jīng)常翻看使用說明書才能完成操作過程。針對(duì)這些問題,筆者認(rèn)為有必要研制一種操作簡單且烹調(diào)效果好的微波爐,根據(jù)一些家常菜按固定程序烹調(diào)的現(xiàn)象,可采取分時(shí)、分檔火力加熱,節(jié)時(shí)又節(jié)能。</p><p><b>  課題的內(nèi)容和要求</b></p><p

20、>  本課題是基于FPGA的微波爐控制器設(shè)計(jì),即設(shè)計(jì)一個(gè)具備定時(shí)、溫控、信息顯示和音響效應(yīng)提示功能的微波爐控制器,實(shí)現(xiàn)一些功能:</p><p>  該微波爐控制器能夠在任意時(shí)刻取消當(dāng)前工作,復(fù)位為初始狀態(tài)。</p><p>  可以根據(jù)需要設(shè)置烹調(diào)時(shí)間的長短,系統(tǒng)最長的烹調(diào)時(shí)間為59分59秒;開始烹調(diào)后,能夠顯示剩余時(shí)間的多少。</p><p>  可以根據(jù)

21、需要設(shè)置烹調(diào)最高溫度值,系統(tǒng)最高的烹調(diào)溫度為999℃;開始烹調(diào)后,能夠顯示系統(tǒng)當(dāng)前溫度值。</p><p>  可以控制火力大小,供選擇的火力檔位有高、中、低三個(gè)火力檔位。</p><p>  音響效應(yīng)提示直接外接一個(gè)蜂鳴器,同時(shí)用一個(gè)指示燈提示。</p><p>  顯示微波爐控制器的烹調(diào)狀態(tài)。</p><p><b>  設(shè)計(jì)的

22、目的和意義</b></p><p>  目前大部分微波爐控制器采用單片機(jī)進(jìn)行設(shè)計(jì),電路比較復(fù)雜,性能不夠靈活。本設(shè)計(jì)采用先進(jìn)的EDA 技術(shù),利用VHDL 設(shè)計(jì)語言,設(shè)計(jì)一種新型的微波爐控制器。該控制器具有系統(tǒng)復(fù)位、狀態(tài)控制、時(shí)間設(shè)定、火力檔位選擇、烹飪計(jì)時(shí)、溫度控制、顯示譯碼和音效提示等功能,基于FPGA 芯片實(shí)現(xiàn)。</p><p>  該微波爐控制系統(tǒng),除實(shí)現(xiàn)常規(guī)的解凍、烹調(diào)

23、、烘烤的基本功能外,還進(jìn)行了創(chuàng)新設(shè)計(jì),實(shí)現(xiàn)了微波爐的自定義設(shè)置。</p><p>  本系統(tǒng)控制部分以FPGA芯片為核心,通過功能按鍵設(shè)置和手動(dòng)數(shù)據(jù)輸入,完成不同功能時(shí)自動(dòng)以預(yù)置方案或者自定義方案加熱。其中,預(yù)制方案提供烹調(diào)、烘烤、解凍等系統(tǒng)烹調(diào)流程,僅供用戶選擇,無需設(shè)置;而自定義方案,用戶根據(jù)食物含量、重量等手動(dòng)設(shè)置時(shí)間、溫度和選擇火力等操作。在烹飪過程中,能通過數(shù)碼管顯示或者指示燈提示知道食物的成熟度,可以

24、智能控制。</p><p>  該系統(tǒng)在功能執(zhí)行時(shí),能實(shí)現(xiàn)門開關(guān)檢測、鍵盤輸入掃描、溫度控制、LED顯示、工作狀態(tài)指示、蜂鳴等。</p><p><b>  關(guān)鍵技術(shù)簡介</b></p><p><b>  FPGA簡介</b></p><p>  FPGA(Field-Programmable G

25、ate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。</p><p>  目前以硬件描述語言(Verilog 或 VHDL)所完成的電路設(shè)計(jì),可以經(jīng)過簡單的綜合與布局,快速的燒錄至 FPGA 上進(jìn)行測試,是現(xiàn)代 IC 設(shè)計(jì)驗(yàn)證的

26、技術(shù)主流。這些可編輯元件可以被用來實(shí)現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flip-flop)或者其他更加完整的記憶塊。</p><p>  系統(tǒng)設(shè)計(jì)師可以根據(jù)需要通過可編輯的連接把FPGA內(nèi)部的邏輯塊連接起來,就好像一個(gè)電路試驗(yàn)板被放在了一個(gè)芯片里。一個(gè)出廠后的成品FPGA的邏

27、輯塊和連接可以按照設(shè)計(jì)者而改變,所以FPGA可以完成所需要的邏輯功能。</p><p>  FPGA一般來說比ASIC(專用集成芯片)的速度要慢,無法完成復(fù)雜的設(shè)計(jì),而且消耗更多的電能。但是他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來改正程序中的錯(cuò)誤和更便宜的造價(jià)。廠商也可能會(huì)提供便宜的但是編輯能力差的FPGA。因?yàn)檫@些芯片有比較差的可編輯能力,所以這些設(shè)計(jì)的開發(fā)是在普通的FPGA上完成的,然后將設(shè)計(jì)轉(zhuǎn)移到一

28、個(gè)類似于ASIC的芯片上。</p><p><b>  VHDL語言概述</b></p><p>  VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,誕生于 1982 年。1987 年底,VHDL被 IEEE 和美國國防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語言。</p>

29、;<p>  VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級(jí)語言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就

30、可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。</p><p>  VHDL 語言能夠成為標(biāo)準(zhǔn)化的硬件描述語言并獲得廣泛應(yīng)用,它自身必然具有很多其他硬件描述語言所不具備的優(yōu)點(diǎn)。歸納起來,VHDL 語言主要具有以下優(yōu)點(diǎn):</p><p>  (1) VHDL 語言功能強(qiáng)大,設(shè)計(jì)方式多樣 </p><p>  VHDL 語言具有強(qiáng)大的

31、語言結(jié)構(gòu), 只需采用簡單明確的VHDL語言程序就可以述十分復(fù)雜的硬件電路。同時(shí), 它還具有多層次的電路設(shè)計(jì)描述功能。此外,VHDL 語言能夠同時(shí)支持同步電路、異步電路和隨機(jī)電路的設(shè)計(jì)實(shí)現(xiàn),這是其他硬件描述語言所不能比擬的。VHDL 語言設(shè)計(jì)方法靈活多樣,既支持自頂向下的設(shè)計(jì)方式,也支持自底向上的設(shè)計(jì)方法;既支持模塊化設(shè)計(jì)方法,也支持層次化設(shè)計(jì)方法。 </p><p>  (2) VHDL 語言具有強(qiáng)大的硬件描述能

32、力 </p><p>  VHDL 語言具有多層次的電路設(shè)計(jì)描述功能,既可描述系統(tǒng)級(jí)電路,也可以描述門級(jí)電路;描述方式既可以采用行為描述、寄存器傳輸描述或者結(jié)構(gòu)描述,也可以采用三者的混合描述方式。同時(shí),VHDL 語言也支持慣性延遲和傳輸延遲,這樣可以準(zhǔn)確地建立硬件電路的模型。VHDL 語言的強(qiáng)大描述能力還體現(xiàn)在它具有豐富的數(shù)據(jù)類型。VHDL 語言既支持標(biāo)準(zhǔn)定義的數(shù)據(jù)類型,也支持用戶定義的數(shù)據(jù)類型,這樣便會(huì)給硬件描

33、述帶來較大的自由度。 </p><p>  (3) VHDL 語言具有很強(qiáng)的移植能力 </p><p>  VHDL 語言很強(qiáng)的移植能力主要體現(xiàn)在:對(duì)于同一個(gè)硬件電路的 VHDL 語言描述,它可以從一個(gè)模擬器移植到另一個(gè)模擬器上,從一個(gè)綜合器移植到另一個(gè)綜合器上,或者從一個(gè)工作平臺(tái)移植到另一個(gè)工作平臺(tái)上去執(zhí)行。 </p><p>  (4) VHDL 語言的設(shè)計(jì)描述

34、與器件無關(guān) </p><p>  采用 VHDL 語言描述硬件電路時(shí),設(shè)計(jì)人員并不需要首先考慮選擇進(jìn)行設(shè)計(jì)的器件。這樣做的好處是可以使設(shè)計(jì)人員集中精力進(jìn)行電路設(shè)計(jì)的優(yōu)化,而不需要考慮其他的問題。當(dāng)硬件電路的設(shè)計(jì)描述完成以后,VHDL 語言允許采用多種不同的器件結(jié)構(gòu)來實(shí)現(xiàn)。 </p><p>  (5) VHDL 語言程序易于共享和復(fù)用 </p><p>  VHDL

35、 語言采用基于庫 ( library) 的設(shè)計(jì)方法。在設(shè)計(jì)過程中,設(shè)計(jì)人員可以建立各種可再次利用的模塊,一個(gè)大規(guī)模的硬件電路的設(shè)計(jì)不可能從門級(jí)電路開始一步步地進(jìn)行設(shè)計(jì),而是一些模塊的累加。這些模塊可以預(yù)先設(shè)計(jì)或者使用以前設(shè)計(jì)中的存檔模塊,將這些模塊存放在庫中,就可以在以后的設(shè)計(jì)中進(jìn)行復(fù)用。 </p><p>  由于 VHDL 語言是一種描述、模擬、綜合、優(yōu)化和布線的標(biāo)準(zhǔn)硬件描述語言,因此它可以使設(shè)計(jì)成果在設(shè)計(jì)人

36、員之間方便地進(jìn)行交流和共享,從而減小硬件電路設(shè)計(jì)的工作量,縮短開發(fā)周期。</p><p>  Quartus II 開發(fā)系統(tǒng)簡介</p><p>  Altera公司的Quartus II 開發(fā)系統(tǒng)以其獨(dú)特的設(shè)計(jì)理念,為用戶提供了一種全新的可編程邏輯器件開發(fā)系統(tǒng)。它集合了Altera的全部CPLD/FPGA器件的硬件開發(fā)功能,同時(shí)也可以實(shí)現(xiàn)系統(tǒng)級(jí)設(shè)計(jì)、綜合、仿真、約束等功能,還具有在線測試

37、功能。</p><p>  Quartus II 7.0軟件具有以下特性:</p><p>  1、提供的集成物理綜合技術(shù)</p><p>  Quartus II軟件包括唯一的FPGA供應(yīng)商提供的集成物理綜合優(yōu)化技術(shù)。Quartus II物理綜合選項(xiàng)應(yīng)用在編譯的布局布線階段,而與采用何種綜合工具無關(guān)。</p><p><b>  

38、2、更快的時(shí)序逼近</b></p><p>  Quartus II軟件用戶能夠利用強(qiáng)大的時(shí)序逼近流程特性來優(yōu)化設(shè)計(jì),使其超過按鍵式編譯結(jié)果的性能。Quartus II軟件的時(shí)序逼近流程由于其包含了內(nèi)置物理綜合工具以及豐富的圖形分析和編輯工具,提供了強(qiáng)大的交互探測能力,具有極大的吸引力。</p><p>  3、最易使用的設(shè)計(jì)優(yōu)化技術(shù)</p><p> 

39、 Quartus II軟件采用按鍵式設(shè)計(jì)流程,滿足了大部分設(shè)計(jì)的時(shí)序要求。當(dāng)設(shè)計(jì)人員進(jìn)一步需要更好的編譯結(jié)果時(shí),Quartus II軟件提供了一些高級(jí)工具,可以輕松地實(shí)現(xiàn)優(yōu)化設(shè)計(jì)。用戶可以使用設(shè)計(jì)空間搜索器(DSE)采用自動(dòng)技術(shù),是寄存器到寄存器設(shè)計(jì)性能平均提高21%。時(shí)序優(yōu)化顧問工具在Quartus II軟件內(nèi)給設(shè)計(jì)人員提供了一個(gè)虛擬的現(xiàn)場應(yīng)用工程師。這個(gè)工具基于當(dāng)前設(shè)計(jì)工程設(shè)置和約束,提供詳細(xì)的優(yōu)化設(shè)計(jì)時(shí)序性能的建議。</p&

40、gt;<p>  4、實(shí)現(xiàn)后期設(shè)計(jì)更改的同時(shí)保持性能</p><p>  可編程邏輯設(shè)計(jì)軟件的一個(gè)傳統(tǒng)困難是;當(dāng)引入后期設(shè)計(jì)更改的時(shí)候,如何保持設(shè)計(jì)的性能。然而,Quartus II軟件能夠輕松地實(shí)現(xiàn)后期設(shè)計(jì)更改。最新的增量式設(shè)計(jì)編輯器和編譯技術(shù)給設(shè)計(jì)人員提供了布局布線后設(shè)計(jì)更改的最佳支持。這些技術(shù)包括:</p><p>  Quartus II芯片編輯器;</p>

41、;<p>  在LogicLock(tm)區(qū)域中實(shí)現(xiàn)布局布線鎖定的能力;</p><p>  使用漸進(jìn)式編譯,僅實(shí)現(xiàn)對(duì)部分改動(dòng)的設(shè)計(jì)進(jìn)行修改。</p><p>  5、提供并行開發(fā)FPGA和結(jié)構(gòu)化ASIC</p><p>  Quartus II軟件能夠提供FPGA設(shè)計(jì)和結(jié)構(gòu)化ASIC設(shè)計(jì)之間的無縫移植。Quartus II軟件能夠編譯HardCopy

42、 Stratix器件,從而提供了高性能低成本器件的解決方法。HardCopy Stratix結(jié)構(gòu)化ASIC提供了比Stratix FPGA平均高50%的性能,進(jìn)步一步加強(qiáng)了Stratix III器件系列65nm性能的領(lǐng)先性。</p><p>  Altera 公司的Quartus II設(shè)計(jì)軟件提供完整的多平臺(tái)設(shè)計(jì)環(huán)境,能夠直接滿足特定設(shè)計(jì)需要,為可編程芯片系統(tǒng)(SOPC)提供全面的設(shè)計(jì)環(huán)境。Quartus II軟

43、件含有FPGA核CPLD設(shè)計(jì)所有階段的解決方案,其設(shè)計(jì)流程包含設(shè)計(jì)輸入、綜合、布局布線、時(shí)序分析、仿真、編程和配置等步驟,其中的布局布線還包括功耗分析、調(diào)試、工程更改管理幾個(gè)部分。這些操作都可以利用Quartus II軟件實(shí)現(xiàn)。</p><p>  此外,Quartus II軟件為設(shè)計(jì)流程的每個(gè)階段提供了Quartus II圖形用戶界面、EDA工具界面以及命令行界面??梢栽谡麄€(gè)流程中只使用這些界面中的一個(gè),也可以

44、在設(shè)計(jì)流程的不同階段使用不同的界面。</p><p><b>  系統(tǒng)總體設(shè)計(jì)</b></p><p><b>  系統(tǒng)總體設(shè)計(jì)方案</b></p><p>  根據(jù)題目要求,該系統(tǒng)控制部分以FPGA芯片為核心,實(shí)現(xiàn)時(shí)間設(shè)置、溫度設(shè)定、火力選擇、音效響應(yīng)提示、LED數(shù)碼管顯示等,在硬件組成上,涉及到電源供電、按鍵輸入、LE

45、D數(shù)碼管顯示、指示燈提示等。</p><p>  以下是該系統(tǒng)總體框圖,如圖3.1所示:</p><p>  圖3.1 微波爐控制器系統(tǒng)總體框圖</p><p>  該控制器系統(tǒng)在EDA實(shí)驗(yàn)箱上實(shí)現(xiàn)的外觀布局如圖3.2所示。采用Cyclone II芯片EP2C35F672C8作為控制芯片,16個(gè)按鍵組成的4*4矩陣鍵盤,每個(gè)按鍵代表的功能如圖3.2所示,8個(gè)LED

46、作為8個(gè)狀態(tài)提示指示燈, 4位LED數(shù)碼管顯示加熱倒計(jì)時(shí),3位LED數(shù)碼管顯示當(dāng)前溫度值,1位LED數(shù)碼管顯示當(dāng)前火力檔位。</p><p>  在圖3.2中,各按鍵功能如下:</p><p>  復(fù)位:按下此鍵,系統(tǒng)進(jìn)入初始狀態(tài),8個(gè)數(shù)碼管上會(huì)顯示“88888888”的信息,所有LED指示燈亮。</p><p>  測試 :在待機(jī)狀態(tài)下按下此鍵,則數(shù)碼管和發(fā)光二極

47、管全亮、全滅交替閃爍。</p><p>  10Min 1Min/100℃/High 10Sec/10℃/Middle 1Sec/1℃/Low:四個(gè)鍵用于設(shè)定加熱時(shí)間、最高溫度或者選擇火力檔位。當(dāng)按下時(shí)間設(shè)置按鍵時(shí),四個(gè)按鍵分別表示設(shè)置定時(shí)時(shí)間的分、秒的十位和個(gè)位的數(shù)字;當(dāng)按下溫度設(shè)定 按鍵時(shí),后面三個(gè)按鍵分別表示設(shè)定最高溫度的百位、十位、個(gè)位;當(dāng)按下火力設(shè)定按鍵時(shí),后面三個(gè)按鍵分別表示火力檔位的高、中、

48、低三個(gè)檔位。由于在時(shí)間設(shè)置和溫度設(shè)定時(shí),四個(gè)按鍵初始值均為0,因此需要借助▲/+1 ▼/-1 兩個(gè)按鍵共同實(shí)現(xiàn)時(shí)間、溫度的設(shè)定操作。比如設(shè)定烹飪時(shí)間為12分59秒,只需要選擇10Min 鍵,然后按▲/+1鍵“1”次;選擇1Min/100℃/High鍵,然后按▲/+1鍵“2”次;選擇10Sec/10℃/Middle鍵,然后按▲/+1鍵“5”次;選擇1Sec/1℃/Low鍵,然后按▲/+1鍵“9”次。同理,溫度設(shè)定操作如上。</p&

49、gt;<p>  3.2 系統(tǒng)外觀布局</p><p>  暫停/取消:用于暫停食物烹飪過程或者取消食物烹飪前的參數(shù)設(shè)置過程。在食物烹飪過程中,若按下該鍵,則停止食物烹飪,進(jìn)入待機(jī)狀態(tài);在參數(shù)設(shè)置時(shí),若按下此鍵,可取消設(shè)置的參數(shù)。</p><p>  火力設(shè)定 :用于設(shè)定系統(tǒng)火力檔位。按下該鍵,進(jìn)入選擇1Min/100℃/High 10Sec/10℃/Middle 1S

50、ec/1℃/Low按鍵狀態(tài)。</p><p>  溫度設(shè)定 :設(shè)置加熱的溫度最高值。當(dāng)按下該鍵時(shí),進(jìn)入調(diào)整1Min/100℃/High 10Sec/10℃/Middle 1Sec/1℃/Low按鍵狀態(tài)。</p><p>  時(shí)間設(shè)置 :設(shè)置系統(tǒng)工作時(shí)間。按下該鍵,進(jìn)入調(diào)整10Min 1Min/100℃/High 10Sec/10℃/Middle 1Sec/1℃/Low ▲/+1

51、 ▼/-1 按鍵狀態(tài)。</p><p>  烹調(diào) :快速設(shè)定當(dāng)前烹飪時(shí)間和火力到適合烹調(diào)的值。</p><p>  烘烤 :快速設(shè)定當(dāng)前烹飪時(shí)間和火力到適合烘烤的值。</p><p>  解凍 :快速設(shè)定當(dāng)前烹飪時(shí)間和火力到適合解凍的值。</p><p>  開始/確認(rèn) :在選擇烹調(diào)、烘烤、解凍或者設(shè)置時(shí)間、設(shè)定溫度、選擇火力等烹飪參數(shù)后,

52、按下此鍵,開始進(jìn)行烹飪。</p><p><b>  指示燈功能如下:</b></p><p>  完成提示:提示微波爐工作完成。該燈亮?xí)r,表示烹飪完成;</p><p>  意外報(bào)警:提示意外情況發(fā)生。該燈亮?xí)r,表示出現(xiàn)意外,微波爐暫停工作;</p><p>  解凍:該燈亮?xí)r,表示工作在解凍模式下;</p>

53、;<p>  烘烤:該燈亮?xí)r,表示工作在烘烤模式下;</p><p>  烹調(diào):該燈亮?xí)r,表示工作在烹調(diào)模式下;</p><p>  測試:該燈亮?xí)r,表示微波爐處于測試狀態(tài);</p><p>  開門指示:指示微波爐的門的狀態(tài),門開時(shí)燈亮,門關(guān)時(shí)燈滅;</p><p>  工作狀態(tài):指示微波爐處于工作狀態(tài),工作時(shí)燈亮,不工作時(shí)燈

54、滅;</p><p><b>  系統(tǒng)功能模塊描述</b></p><p>  本系統(tǒng)主要由輸入、控制和顯示部分組成。輸入部分主要完成用戶對(duì)控制功能的設(shè)置,采用按鍵作為輸入設(shè)備??刂撇糠质潜鞠到y(tǒng)的核心,它接收用戶的輸入,完成相應(yīng)的控制邏輯功能,并將當(dāng)前的工作狀態(tài)等信息送到顯示部分。顯示部分主要監(jiān)視系統(tǒng)工作狀態(tài)并提示用戶進(jìn)行控制操作。</p><p&

55、gt;  以下是該系統(tǒng)功能模塊圖,如圖3.3所示</p><p>  圖3.3 系統(tǒng)功能模塊圖</p><p><b>  輸入模塊</b></p><p>  輸入部分一般采用鍵盤或旋鈕作為輸入,由于實(shí)驗(yàn)室已有設(shè)備限制,本系統(tǒng)采用鍵盤進(jìn)行輸入設(shè)置,即由一個(gè)4*4矩陣鍵盤實(shí)現(xiàn)數(shù)據(jù)輸入控制。該矩陣鍵盤上16個(gè)按鍵分別是:10Min 1Min/

56、100℃/High 10Sec/10℃/Middle 1Sec/1℃/Low ▲/+1 復(fù)位 暫停/取消 測試 ▼/-1 火力設(shè)定 溫度設(shè)定 時(shí)間設(shè)置 烹調(diào) 烘烤 解凍 開始/確認(rèn)。輸入模塊包括時(shí)鐘脈沖電路、鍵盤掃描電路、消枓同步電路和鍵盤譯碼電路,通過該模塊將掃描得到的按鍵值送到控制模塊。</p><p><b>  控制模塊</b></p>

57、<p>  控制部分作為整個(gè)微波爐控制器系統(tǒng)的核心,它采用FPGA芯片作為主控核心,完成許多復(fù)雜的控制和數(shù)據(jù)處理任務(wù)。它通過輸入模塊提供的按鍵輸入實(shí)現(xiàn)數(shù)據(jù)信息裝載處理,并將處理結(jié)果通過顯示模塊顯示出來。其涉及到數(shù)據(jù)的裝載、狀態(tài)轉(zhuǎn)換控制、烹飪計(jì)時(shí)、溫度控制、火力控制、音響效應(yīng)提示等。</p><p><b>  顯示模塊</b></p><p>  顯示部分采

58、用七段數(shù)碼管和發(fā)光二極管來實(shí)現(xiàn)。由于數(shù)碼管顯示信息較少,一些信息用數(shù)碼管顯示不夠直觀,因此本系統(tǒng)在采用數(shù)碼管顯示的同時(shí),還用發(fā)光二極管作為輔助顯示。其中,用七段數(shù)碼管作為時(shí)間、溫度、火力大小顯示,用發(fā)光二極管作為狀態(tài)提示顯示。具體設(shè)計(jì)時(shí),采用4位LED數(shù)碼管顯示加熱倒計(jì)時(shí),3位LED數(shù)碼管顯示當(dāng)前溫度值,1位LED數(shù)碼管顯示當(dāng)前火力檔位。8個(gè)狀態(tài)提示指示燈分別表示:工作狀態(tài)、開門指示、測試、烹調(diào)、烘烤、解凍、意外報(bào)警、完成提示。<

59、/p><p><b>  系統(tǒng)的工作流程</b></p><p>  微波爐控制器系統(tǒng)的工作流程為:上電后,系統(tǒng)首先處于一種復(fù)位狀態(tài),其各電路模塊均處于初始狀態(tài)。此時(shí),8個(gè)數(shù)碼管上會(huì)顯示“88888888”的信息,所有指示燈亮。按TEST鍵,數(shù)碼管和發(fā)光二極管全亮、全滅交替閃爍,可以測試數(shù)碼管和指示燈工作是否正常。系統(tǒng)工作時(shí),首先通過鍵盤輸入數(shù)據(jù),比如,按烹調(diào)、烘烤、解凍

60、鍵選擇系統(tǒng)預(yù)置方案,或者按時(shí)間設(shè)置鍵設(shè)置時(shí)間,按溫度設(shè)定鍵設(shè)置溫度,按火力選擇鍵選擇火力,結(jié)合10Min、1Min/100℃/High、10Sec/10℃/Middle、1Sec/1℃/Low按鍵進(jìn)行自定義方案設(shè)置,設(shè)置結(jié)束以后,表示數(shù)據(jù)裝載完成,按START鍵后系統(tǒng)進(jìn)入烹調(diào)狀態(tài)。在烹飪過程中,可以按暫停/取消鍵暫停烹飪,或者重新設(shè)置時(shí)間、溫度、火力。烹飪結(jié)束后,系統(tǒng)會(huì)發(fā)出音效提示,同時(shí),系統(tǒng)自動(dòng)進(jìn)入復(fù)位狀態(tài)。</p>&

61、lt;p>  根據(jù)系統(tǒng)工作流程,繪制主程序流程圖,如圖3.4所示:</p><p>  圖3.4 系統(tǒng)工作流程圖</p><p><b>  系統(tǒng)詳細(xì)設(shè)計(jì)</b></p><p><b>  輸入模塊設(shè)計(jì)</b></p><p>  輸入模塊采用4*4矩陣鍵盤作為輸入設(shè)備,實(shí)現(xiàn)數(shù)據(jù)輸入控制。

62、矩陣鍵盤是一種常見的輸入裝置,在日常生活中,矩陣鍵盤在計(jì)算機(jī)、電話、手機(jī)、微波爐等格式電子產(chǎn)品上已經(jīng)被廣泛應(yīng)用,計(jì)算機(jī)鍵盤通常采用行列掃描法來確定所按下鍵的行列位置。由于鍵盤按鍵是一種機(jī)械開關(guān),所以設(shè)計(jì)其控制電路時(shí),需要涉及到鍵盤掃描、鍵盤譯碼,光靠矩陣鍵盤是無法完成按鍵輸入工作的。其中鍵盤掃描又涉及到時(shí)序產(chǎn)生、按鍵掃描和消除抖動(dòng)。</p><p><b>  鍵盤掃描</b></p&

63、gt;<p>  鍵盤處理的重要環(huán)節(jié)是時(shí)序產(chǎn)生、鍵盤掃描和按鍵消抖,以下分別針對(duì)所涉及到的電路進(jìn)行描述。</p><p><b>  1、時(shí)序產(chǎn)生電路</b></p><p>  本時(shí)序產(chǎn)生電路中使用了三種不同頻率的工作脈沖波形:系統(tǒng)時(shí)鐘脈沖、掃描鍵盤時(shí)鐘、鍵盤消抖動(dòng)時(shí)鐘。分別定義如下:</p><p>  CLK: IN STD

64、_LOGIC; --系統(tǒng)時(shí)鐘脈沖</p><p>  CLK_SCAN : OUT STD_LOGIC; --掃描鍵盤時(shí)鐘 </p><p>  CLK_DEB : OUT STD_LOGIC --鍵盤消抖動(dòng)時(shí)鐘</p><p>  一般消抖動(dòng)信號(hào)時(shí)鐘頻率必須比其它的電路使用的脈沖信號(hào)頻率更高,一般消抖動(dòng)頻率是鍵盤掃描或LED頻率的4倍或更高。這里系統(tǒng)

65、時(shí)鐘頻率取50MHZ,掃描時(shí)鐘頻率取100KHZ,消抖時(shí)鐘頻率取200KHZ。</p><p>  生成的電路符號(hào)如下,圖4.1所示:</p><p>  圖4.1 時(shí)序產(chǎn)生電路符號(hào)</p><p><b>  2、按鍵掃描電路</b></p><p>  所謂行列式鍵盤掃描,即用帶有I/O口的線組成行列式結(jié)構(gòu),按鍵設(shè)

66、置在行列的交點(diǎn)上。行列式矩陣鍵盤原理:按鍵設(shè)置在行列線的交叉點(diǎn),行列線分別連接到按鍵的兩端。列線通過上拉電阻截止+5V電壓,即列線的輸出被定位到高電平狀態(tài);判斷有無按鍵按下時(shí)通過行線送出掃描信號(hào),然后列線讀取狀態(tài)得到。其方法是依次給行線送低電平,檢查列線的輸入。若列線全為高電平,則代表所在行無按鍵按下,若列線出現(xiàn)低電平,則低電平所在的行和出現(xiàn)低電平的列的交叉點(diǎn)處有按鍵 按下。行掃描信號(hào)為KEY_DRV[3..0],列輸入信號(hào)為KEY_I

67、N[3..0],與按鍵的對(duì)應(yīng)關(guān)系如表4.1所示。</p><p>  表4.1 n×m行列矩陣對(duì)應(yīng)關(guān)系表</p><p>  鍵盤掃描電路是用來產(chǎn)生掃描信號(hào)KEY_DRV[3..0],其變化為周期性的有規(guī)律的變化(1110 1101 1011 0111),停留在每個(gè)狀態(tài)的時(shí)間由按鍵的機(jī)械物理特性決定,按鍵在閉合和斷開的瞬太短的按鍵掃描時(shí)間容易采集到按鍵抖動(dòng),太長的掃描時(shí)間容易

68、丟失某些較快的按鍵信息。</p><p>  完成程序設(shè)計(jì),生成相應(yīng)的電路符號(hào),如圖4.2所示:</p><p>  圖4.2 鍵盤掃描電路符號(hào)</p><p><b>  3、按鍵消抖電路</b></p><p>  當(dāng)一個(gè)按鍵按下和釋放時(shí),對(duì)應(yīng)信號(hào)線電平的變化有一個(gè)不穩(wěn)定期,即所謂“抖動(dòng)”,這是因?yàn)槎鄶?shù)開關(guān)的閉合和

69、斷開都有一個(gè)過程,并不是即刻實(shí)現(xiàn)的。在讀取鍵盤狀態(tài)時(shí)必須避開這個(gè)不穩(wěn)定期,以免造成誤判,這樣一個(gè)做法叫做“去抖”。</p><p>  如果當(dāng)在一段時(shí)間內(nèi)都連續(xù)多次讀到同一個(gè)非空(即有鍵按下)的掃描碼,可以認(rèn)為這時(shí)按鍵已處于穩(wěn)定狀態(tài),這時(shí)得到的掃描碼就代表了一個(gè)鍵盤動(dòng)作,抖動(dòng)的影響已經(jīng)被剔除。按照這個(gè)想法,只需設(shè)置一個(gè)倒數(shù)計(jì)數(shù)器,當(dāng)每次讀到的非空掃描碼與上一次的相同,就將計(jì)數(shù)器加1;而當(dāng)一旦讀到不同的掃描碼或空碼

70、則立即將計(jì)數(shù)器清0。如果計(jì)數(shù)器的值達(dá)到某預(yù)定值N時(shí),則表示連續(xù)N次讀到同一掃描碼,于是可認(rèn)為已經(jīng)讀到了有效的按鍵。設(shè)鍵盤掃描的間隔是T,則去抖的時(shí)間就是N * T。在實(shí)際中,因?yàn)橐话闳说陌存I速度至多是10次/秒,亦即一次按鍵時(shí)間是100ms,所以按下的時(shí)間可估算為50ms。因此,鍵盤掃描的頻率取100KHz,消抖時(shí)鐘頻率取200KHz。</p><p>  綜合上述分析,該鍵盤掃描子模塊關(guān)鍵代碼如下:</p

71、><p>  counter:block is </p><p><b>  begin</b></p><p>  process(clk)is</p><p><b>  begin</b></p><p>  if(clk'event and clk='1&

72、#39;)then</p><p><b>  q<=q+1;</b></p><p><b>  end if;</b></p><p>  c_debouncing<=q(7); --去抖時(shí)鐘信號(hào)</p><p>  c_keyboard<=q(9 down to 8); --

73、鍵掃信號(hào)</p><p>  end process;</p><p>  key_scan<="1110" when c_keyboard=0 else</p><p>  "1101" when c_keyboard=1 else</p><p>  "1011" when

74、 c_keyboard=2 else</p><p>  "0111" when c_keyboard=3 else</p><p><b>  "1111";</b></p><p>  end block counter;</p><p>  生成相應(yīng)的電路符號(hào),如圖4.3所示

75、:</p><p>  圖4.3 按鍵消抖電路符號(hào)</p><p><b>  鍵盤譯碼</b></p><p>  通過一個(gè)譯碼程序,將鍵盤掃描后的值根據(jù)需要設(shè)定成相應(yīng)的按鍵。</p><p><b>  程序設(shè)計(jì)如下:</b></p><p>  key_decode

76、: PROCESS(SC_CLK)</p><p><b>  BEGIN</b></p><p>  Z<=KEY_DRV & KEY_IN; --讀入的編碼與掃描結(jié)果拼接</p><p>  IF SC_CLK'EVENT AND SC_CLK='1' THEN</p><p>

77、;  CASE Z IS --數(shù)字按鍵譯碼電路</p><p>  WHEN "11101110"=> K_VALUE<=0; </p><p>  WHEN "11101101"=> K_VALUE<=1;</p><p>  WHEN "11101011"=&

78、gt; K_VALUE<=2;</p><p>  WHEN "11100111"=> K_VALUE<=3;</p><p>  WHEN "11011110"=> K_VALUE<=4;</p><p>  WHEN "11011101"=> K_VALUE&l

79、t;=5;</p><p>  WHEN "11011011"=> K_VALUE<=6;</p><p>  WHEN "11010111"=> K_VALUE<=7;</p><p>  WHEN "10111110"=> K_VALUE<=8; </p&

80、gt;<p>  WHEN "10111101"=> K_VALUE<=9;</p><p>  WHEN "10111011"=> K_VALUE<=10;</p><p>  WHEN "10110111"=> K_VALUE<=11;</p><p&

81、gt;  WHEN "01111110"=> K_VALUE<=12;</p><p>  WHEN "01111101"=> K_VALUE<=13;</p><p>  WHEN "01111011"=> K_VALUE<=14;</p><p>  WHEN

82、 "01110111"=> K_VALUE<=15;</p><p>  WHEN OTHERS => K_VALUE<=K_VALUE; --默認(rèn)情況為K_VALUE保持原來狀態(tài),相當(dāng)于實(shí)現(xiàn)鎖存器</p><p><b>  END CASE;</b></p><p>  生成相應(yīng)的電路符號(hào),

83、如圖4.4所示:</p><p>  圖4.4 鍵盤譯碼電路符號(hào)</p><p><b>  輸入模塊的實(shí)現(xiàn)</b></p><p>  綜合上述分析,對(duì)該鍵盤輸入模塊進(jìn)行完整設(shè)計(jì),以下是該輸入模塊實(shí)現(xiàn)的組成原理圖,如圖4.5所示:</p><p>  圖4.5 輸入模塊內(nèi)部原理圖</p><p&

84、gt;  其中,CLK為系統(tǒng)時(shí)鐘脈沖,KEY_IN[3..0]為按鍵輸入, DATA[15..0]為按鍵輸入譯碼后的輸出值,它為控制模塊提供數(shù)據(jù)輸入。</p><p>  生成相應(yīng)的電路符號(hào),如圖4.6所示:</p><p>  圖4.6 輸入模塊電路符號(hào)圖</p><p><b>  控制模塊設(shè)計(jì)</b></p><p&

85、gt;  控制模塊是整個(gè)微波爐控制器系統(tǒng)的核心,完成許多復(fù)雜的控制和數(shù)據(jù)處理任務(wù),它通過輸入模塊提供的按鍵輸入實(shí)現(xiàn)數(shù)據(jù)信息裝載處理,控制顯示模塊顯示相應(yīng)的信息。</p><p>  控制模塊采用FPGA芯片作為主控芯片,其涉及到數(shù)據(jù)的裝載、狀態(tài)控制轉(zhuǎn)換、烹飪計(jì)時(shí)、溫度控制、火力控制、音效提示等。其中,狀態(tài)控制轉(zhuǎn)換子模塊,其功能是控制微波爐工作過程中的狀態(tài)轉(zhuǎn)換,并發(fā)出相關(guān)控制信號(hào)。數(shù)據(jù)裝載子模塊,其功能是根據(jù)按鍵信

86、號(hào)設(shè)置定時(shí)時(shí)間、最高溫度、火力檔位,烹調(diào)屬性設(shè)置以及烹調(diào)數(shù)據(jù)信息裝載。烹飪計(jì)時(shí)子模塊,其功能是對(duì)時(shí)鐘進(jìn)行減法計(jì)數(shù),提供烹調(diào)完成時(shí)的狀態(tài)信號(hào)。溫度控制子模塊,其功能是在食物烹飪過程中進(jìn)行溫度測定和控制,它同時(shí)實(shí)現(xiàn)火力控制。音效控制子模塊,其功能是控制微波爐工作時(shí)的音效提示,這里直接外接一個(gè)蜂鳴器實(shí)現(xiàn)該功能。</p><p>  其功能子模塊圖如下,圖4.7所示:</p><p>  4.7

87、 控制模塊功能子模塊圖</p><p><b>  狀態(tài)轉(zhuǎn)換控制</b></p><p>  根據(jù)微波爐工作流程的描述,分析狀態(tài)轉(zhuǎn)換條件及輸出信號(hào),可以得到控制模塊的狀態(tài)轉(zhuǎn)換圖。如圖4.8所示:</p><p>  圖4.8 控制模塊狀態(tài)轉(zhuǎn)換圖</p><p>  圖中,當(dāng)RESET信號(hào)有效時(shí),系統(tǒng)復(fù)位清零;輸入/輸出

88、對(duì)應(yīng)時(shí)間溫度設(shè)置、顯示譯碼測試、完成信號(hào)顯示和減法計(jì)數(shù)定時(shí)四種狀態(tài)進(jìn)行相應(yīng)的轉(zhuǎn)換。</p><p>  由此生成的狀態(tài)轉(zhuǎn)換ASM圖如圖4.9所示:</p><p>  圖4.9 狀態(tài)轉(zhuǎn)換ASM圖</p><p>  下面,根據(jù)上述狀態(tài)轉(zhuǎn)換圖和ASM圖進(jìn)行程序設(shè)計(jì),在編寫程序代碼實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換控制子模塊過程時(shí),首先,如果RESET=‘1’,則系統(tǒng)清零,當(dāng)前狀態(tài)為初始狀

89、態(tài),當(dāng)同步時(shí)鐘脈沖,當(dāng)前狀態(tài)為下一狀態(tài),用程序代碼表示如下:</p><p>  IF RESET='1' THEN</p><p>  CURR_STATE<=IDLE;</p><p>  ELSIF CLK'EVENT AND CLK='1' THEN</p><p>  CURR_STAT

90、E<=NEXT_STATE;</p><p><b>  END IF;</b></p><p>  當(dāng)當(dāng)前狀態(tài)為初始狀態(tài)時(shí),</p><p>  LD_TEST<='0';</p><p>  LD_DONE<='0';</p><p>  LD

91、_CLK<='0';</p><p>  COOK<='0';</p><p>  此時(shí),譯碼顯示測試狀態(tài):</p><p>  WHEN LAMP_TEST=> LD_TEST<='1'; COOK<='0';</p><p><b>

92、  時(shí)間溫度設(shè)置狀態(tài):</b></p><p>  WHEN SET_CLOCK=> LD_CLK<='1'; COOK<='0';</p><p><b>  完成信息顯示狀態(tài):</b></p><p>  WHEN DONE_MSG => LD_DONE<='

93、;1'; COOK<='0';</p><p>  在初始狀態(tài),如果按下“TEST”鍵,下一狀態(tài)即為顯示測試狀態(tài),如果按下“SET_T”鍵,下一狀態(tài)即為時(shí)間設(shè)置狀態(tài),如果按下“START”鍵,即烹調(diào)開始進(jìn)行時(shí),此時(shí)下一狀態(tài)為減法計(jì)數(shù)定時(shí)狀態(tài),該過程用程序代碼實(shí)現(xiàn)如下:</p><p>  WHEN IDLE=></p><p>

94、  IF(TEST='1') THEN </p><p>  NEXT_STATE<=LAMP_TEST;</p><p>  LD_TEST<='1';</p><p>  ELSIF SET_T='1' THEN</p><p>  NEXT_STATE<=SET_CLOC

95、K;</p><p>  LD_CLK<='1';</p><p>  ELSIF ((START='1') AND (DONE='0')) THEN</p><p>  NEXT_STATE<=TIMER;</p><p>  COOK<='1';</p

96、><p><b>  END IF;</b></p><p>  在減法計(jì)數(shù)定時(shí)狀態(tài),如果輸出DONE指示烹調(diào)信息完成,則下一狀態(tài)為顯示信息完成狀態(tài),顯示烹調(diào)完成信息,否則,下一狀態(tài)還是減法計(jì)數(shù)定時(shí)狀態(tài),COOK高電平有效,用程序代碼實(shí)現(xiàn)如下:</p><p>  WHEN TIMER=> </p><p>  IF

97、DONE='1' THEN</p><p>  NEXT_STATE<=DONE_MSG;</p><p>  LD_DONE<='1';</p><p><b>  ELSE </b></p><p>  NEXT_STATE<=TIMER;</p>&l

98、t;p>  COOK<='1';</p><p><b>  END IF;</b></p><p>  生成的控制模塊相應(yīng)的電路符號(hào),如圖4.10所示:</p><p>  圖4.10 KZQ電路符號(hào)</p><p><b>  數(shù)據(jù)裝載</b></p>

99、<p>  數(shù)據(jù)裝載器ZZQ,它本質(zhì)上就是一個(gè)三選一的數(shù)據(jù)選擇器。根據(jù)其應(yīng)完成的邏輯功能,本設(shè)計(jì)可采用一個(gè)進(jìn)程來完成,但由于三個(gè)被選擇的數(shù)據(jù)只有一個(gè)來自輸入口,因此另兩個(gè)被選擇的數(shù)據(jù)則通過進(jìn)程的說明部分定義兩個(gè)常數(shù)來產(chǎn)生。</p><p>  由于ZZQ裝入測試的數(shù)據(jù)可以用8個(gè)8作為顯示驅(qū)動(dòng)信息數(shù)據(jù),因此,將該用于顯示的常數(shù)ALLS分解成8個(gè)“8”,其中4個(gè)“8”作為時(shí)間顯示驅(qū)動(dòng)信息,3個(gè)“8”作為

100、溫度顯示驅(qū)動(dòng)信息,1個(gè)“8”作為火力檔位顯示驅(qū)動(dòng)信息,分別經(jīng)過八個(gè)譯碼器譯碼后顯示驅(qū)動(dòng)信息編碼。因此,該常數(shù)應(yīng)是8個(gè)分段的4位BCD碼,即“1000 1000 1000 1000”和“1000 1000 1000 1000” ,同理,DONE的BCD碼分別為“1010 1011 1100 1101”以顯示donE的常數(shù)DONE。</p><p>  通過上述分析,該模塊的主要程序可實(shí)現(xiàn)如下:</p>

101、<p>  PROCESS(DATA1,LD_TEST,LD_CLK,LD_DONE) IS</p><p>  CONSTANT ALLS:STD_LOGIC_VECTOR(15 DOWNTO 0):="1000100010001000";</p><p>  CONSTANT DONE:STD_LOGIC_VECTOR(15 DOWNTO 0):=&qu

102、ot;1010101111001101"; </p><p>  VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  LOAD<=LD_TEST OR LD_DONE OR LD_CLK;</p><p&g

103、t;  TEMP:=LD_TEST & LD_DONE & LD_CLK;</p><p>  CASE TEMP IS</p><p>  WHEN "100" => DATA2<=ALLS;--LOAD_TEST =1</p><p>  WHEN "010" => DATA2<=

104、DONE;--LOAD_DONE </p><p>  WHEN "001" => DATA2<=DATA1;--LOAD_CLK</p><p>  WHEN OTHERS=> NULL;</p><p><b>  END CASE;</b></p><p>  END PR

105、OCESS;</p><p>  完成VHDL源程序的輸入,編譯、運(yùn)行,生成相應(yīng)的電路符號(hào),如下圖4.11所示:</p><p>  圖4.11 ZZQ電路符號(hào)</p><p><b>  烹飪計(jì)時(shí)</b></p><p>  烹飪計(jì)時(shí)器JSQ為減計(jì)數(shù)計(jì)數(shù)器,其最大計(jì)時(shí)時(shí)間為59:59,因此可用兩個(gè)減計(jì)數(shù)十進(jìn)制計(jì)數(shù)器D

106、CNT10和兩個(gè)減計(jì)數(shù)六進(jìn)制計(jì)數(shù)器DCNT6級(jí)聯(lián)構(gòu)成。其中,兩個(gè)十進(jìn)制的減法計(jì)數(shù)器用于分、秒的個(gè)位減法計(jì)數(shù),兩個(gè)六進(jìn)制的減法計(jì)數(shù)器用于分、秒的十位減法計(jì)數(shù)。</p><p>  由所學(xué)知識(shí)可知,計(jì)數(shù)的功能是累計(jì)輸入脈沖的個(gè)數(shù),實(shí)現(xiàn)計(jì)數(shù)功能的數(shù)字電路即計(jì)數(shù)器,被計(jì)數(shù)的脈沖可以是周期性脈沖,也可以是非周期性脈沖,通常加在計(jì)數(shù)器的時(shí)鐘脈沖輸入端,作為計(jì)數(shù)器的時(shí)鐘脈沖。</p><p>  因此,

107、根據(jù)減法計(jì)數(shù)器隨計(jì)數(shù)脈沖的不斷輸入而遞減計(jì)數(shù),在具體設(shè)計(jì)該十進(jìn)制減法計(jì)數(shù)器和六進(jìn)制減法計(jì)數(shù)器過程中,可以當(dāng)計(jì)數(shù)值減到0時(shí),其計(jì)數(shù)器的數(shù)值自動(dòng)轉(zhuǎn)為定時(shí)設(shè)定時(shí)間,在十進(jìn)制計(jì)數(shù)器的設(shè)計(jì)過程中,可表達(dá)為:</p><p>  IF CQI="0000" THEN CQI<="1001";</p><p>  ELSE CQI<=CQI-'

108、1';</p><p>  同理,六進(jìn)制計(jì)數(shù)器的設(shè)計(jì)表達(dá)式為:</p><p>  IF CQI="0000" THEN CQI<="0101";</p><p>  ELSE CQI<=CQI-'1';</p><p>  設(shè)計(jì)完兩個(gè)計(jì)數(shù)器之后,在計(jì)時(shí)器電路模塊,對(duì)

109、該十進(jìn)制和六進(jìn)制計(jì)數(shù)器電路模塊進(jìn)行定義并元件例化,生成相應(yīng)的元件符號(hào)。如圖4.12和4.13所示:</p><p>  圖4.12 十進(jìn)制計(jì)數(shù)器電路符號(hào)</p><p>  圖4.13 六進(jìn)制計(jì)數(shù)器電路符號(hào)</p><p>  然后將兩計(jì)數(shù)器級(jí)聯(lián)構(gòu)成。由六進(jìn)制計(jì)數(shù)器和十進(jìn)制計(jì)數(shù)器級(jí)聯(lián)構(gòu)成的計(jì)時(shí)器內(nèi)部組成原理圖如圖4.14所示:</p><p&g

110、t;  圖4.14 JSQ的內(nèi)部組成原理圖</p><p>  這里,計(jì)時(shí)器相應(yīng)的頂層文件電路符號(hào)如圖4.15所示:</p><p>  圖4.15 JSQ電路符號(hào)</p><p>  其中,輸入信號(hào)LOAD為高電平時(shí)完成信號(hào)的載入;COOK信號(hào)為高電平時(shí),在每個(gè)時(shí)鐘周期的上升沿進(jìn)行減法計(jì)數(shù)。輸出信號(hào)DONE表示烹調(diào)時(shí)間到;ALARM表示音響效應(yīng);SEC_L[3

111、..0]、SEC_H[3..0]、MIN_L[3..0]、MIN_H[3..0]顯示所剩時(shí)間,和測試狀態(tài)信息、烹調(diào)完畢狀態(tài)信息等。</p><p><b>  溫度控制</b></p><p>  溫度控制子模塊,主要涉及到溫度的測定和控制。本設(shè)計(jì)采用模擬溫度傳感器AD590和模數(shù)轉(zhuǎn)換器ADC0809實(shí)現(xiàn)對(duì)溫度的檢測。</p><p>  AD

112、590用于模擬微波爐內(nèi)食品的溫度,AD590溫度傳感器的感測能力是溫度每升高1K就增加1μA的電量,該電流流入10kΩ電阻后,將產(chǎn)生10mV(0.01V)的電壓。而0℃(等于273K)時(shí),輸出電流273 μA,經(jīng)I/V轉(zhuǎn)換后,將產(chǎn)生2.73 V的電壓。如果測到的電壓為x V時(shí),則可由( x-2.73)÷0.01得到要測量的溫度。溫度傳感器AD590的輸出經(jīng)過放大器后,將電壓引入ADC0809的Vin (+) 管腳,由ADC08

113、09進(jìn)行模數(shù)轉(zhuǎn)換。</p><p>  ADC0809是8位模數(shù)轉(zhuǎn)換器,測量精度為0.02 V,當(dāng)ADC0809的轉(zhuǎn)換值為x 時(shí),所測溫度為:T=(x ×0.02-2.73)÷0.01=x ×2-273。ADC0809將當(dāng)前溫度轉(zhuǎn)換成數(shù)字量后送入FPGA控制芯片,控制芯片對(duì)由鍵盤輸入的加熱最高溫度給定值進(jìn)行比較,即通過直接比較設(shè)定值和測得值的BCD編碼,當(dāng)爐內(nèi)溫度高于給定溫度時(shí),立即

114、停止加熱,并輸出控制信號(hào)提示報(bào)警燈亮,從而實(shí)現(xiàn)對(duì)溫度的控制。</p><p>  具體設(shè)計(jì)過程中,涉及到數(shù)據(jù)的采集、時(shí)鐘定時(shí)和溫度控制。數(shù)據(jù)采集主要完成溫度的處理,時(shí)鐘定時(shí)主要對(duì)溫度起定時(shí)作用,溫度控制部分的輸入信號(hào)來自數(shù)據(jù)處理和時(shí)鐘定時(shí)后的輸出,當(dāng)實(shí)際輸出溫度小于預(yù)輸出溫度值時(shí),輸出信號(hào)控制微波爐繼續(xù)加熱。</p><p>  以下是該設(shè)計(jì)的流程圖,如圖4.16所示:</p>

115、<p>  圖4.16 溫度控制部分流程圖</p><p>  數(shù)據(jù)采集主要完成溫度的處理,實(shí)現(xiàn)T=(x×0.02-2.73)÷0.01的運(yùn)算,數(shù)據(jù)調(diào)整為對(duì)應(yīng)的數(shù)字信號(hào),在讀取ADC0809的數(shù)據(jù)后,先將轉(zhuǎn)換數(shù)據(jù)左移1位(相當(dāng)于乘以2),然后減去273,當(dāng)溫度達(dá)到某一數(shù)值時(shí),使能信號(hào)和清零信號(hào)為‘1’,此時(shí)時(shí)鐘開始計(jì)時(shí)。</p><p>  根據(jù)上述分析

116、,編寫該溫度控制器的VHDL程序,其主要程序如下:</p><p><b>  --數(shù)據(jù)采集部分</b></p><p>  process (clk,data) </p><p><b>  begin</b></p><p>  if (clk'event and clk=1) th

117、en</p><p>  if (tout>=(cout-6) AND tout<=(cout+5)) then --設(shè)定值上下5度的范圍內(nèi)開始計(jì)時(shí)</p><p><b>  enout<=1;</b></p><p><b>  else</b></p><p><b

118、>  enout<=0;</b></p><p><b>  end if;</b></p><p>  -- 時(shí)鐘定時(shí)部分 </p><p>  process (clk ,clearing , enin ) </p><p>  variable s , m : integer range

溫馨提示

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

評(píng)論

0/150

提交評(píng)論