梁麗
摘 要 介紹基于FPGA的微波爐定時系統(tǒng)的設計思想、開發(fā)過程和仿真結(jié)果。用EDA技術(shù)設計電子系統(tǒng),具有設計效率高、修改快捷、易于升級和性能穩(wěn)定等一系列優(yōu)點。
關(guān)鍵字 FPGA;EDA技術(shù);微波爐;定時系統(tǒng)
中圖分類號:G642 文獻標識碼:B
文章編號:1671-489X(2016)20-0047-03
1 前言
以EDA工具為開發(fā)環(huán)境,以硬件描述語言VHDL為編程語言,以可編程邏輯器件FPGA為設計載體,采用EDA技術(shù)自頂向下的電子系統(tǒng)設計,改進傳統(tǒng)的電子系統(tǒng)設計觀念。這種方法從系統(tǒng)級設計入手,在頂層、方框圖級、功能級、門級等分別進行系統(tǒng)描述、功能設計、邏輯設計、電路設計等,由于設計的主要仿真和調(diào)試過程是在高層次上完成的,極大地提高了電子系統(tǒng)的設計效率、可靠性和靈活性。
下面以微波爐定時系統(tǒng)的設計為例,介紹在MAX+
PLUSⅡ軟件環(huán)境下進行設計、測試,基于FPGA芯片進行硬件實現(xiàn)的設計過程。
2 設計要求
設計一種基于FPGA的微波爐定時系統(tǒng)。要求:系統(tǒng)通電后處于復位狀態(tài)。首先,系統(tǒng)讀入烹調(diào)時間,并顯示在數(shù)碼管上;然后按START鍵,系統(tǒng)進入烹調(diào)狀態(tài),剩余烹調(diào)時間在數(shù)碼管上實時刷新;烹調(diào)結(jié)束后,數(shù)碼管顯示烹調(diào)結(jié)束信息,系統(tǒng)回到復位狀態(tài)。在烹調(diào)過程中,按PAUSE鍵或RESET鍵,可使系統(tǒng)暫停工作或使系統(tǒng)回到復位狀態(tài);在復位狀態(tài)下,按TEST鍵可測試數(shù)碼管工作是否正常[1]。
3 總體設計方案
從系統(tǒng)設計要求出發(fā),自頂向下地將設計細化,使功能具體化、模塊化。微波爐定時系統(tǒng)由狀態(tài)控制器、數(shù)據(jù)裝載器、烹調(diào)計時器和動態(tài)顯示電路等模塊構(gòu)成。將各模塊連接起來,用圖形輸入法形成頂層模塊,微波爐定時系統(tǒng)頂層模塊連接如圖1所示。
4 設計實現(xiàn)
首先進行系統(tǒng)設計,劃分各個功能模塊,然后借助于EDA工具進行具體的模塊設計。采用VHDL語言對各模塊進行編程,在MAX+PLUSⅡ環(huán)境下對各程序進行編譯和仿真驗證,創(chuàng)建各模塊的器件符號,待建立整體系統(tǒng)頂層文件時調(diào)用。
狀態(tài)控制器 狀態(tài)控制器的功能是根據(jù)輸入信號和微波爐所處的狀態(tài)控制自身工作狀態(tài)的轉(zhuǎn)換,并輸出相應的控制信號。仿真波形如圖2所示,測試信號TEST=‘1時,則LD_8888=‘1,指示數(shù)據(jù)裝載器裝入用于測試的數(shù)據(jù)“8888”;置位端SET_T=‘1時,則LD_CLK=‘1,指示數(shù)據(jù)裝載器裝入設置的烹調(diào)時間數(shù)據(jù);啟動信號START=‘1時,則COOK=‘1,指示烹調(diào)正在進行之中,并提示計時器進行減計數(shù);直到DONE=‘1時,則LD_ DONE=‘1,指示數(shù)據(jù)裝載器裝入烹調(diào)完畢的狀態(tài)信息“donE”,才使COOK=‘0。中間信號量CURR_STATE指示出狀態(tài)控制器的5種狀態(tài),分別用0、1、2、3、4來代表。
數(shù)據(jù)裝載器 數(shù)據(jù)裝載器的功能是在狀態(tài)控制器輸出信號的控制下選擇定時時間、測試數(shù)據(jù)或烹調(diào)完成等信息的裝載。利用3個裝載信號的組合LD_8888&LD_DONE&LD_CLK賦給變量TEMP,巧妙地解決裝載數(shù)據(jù)的選擇問題。仿真波形如圖3所示,當LD_8888=‘1時,輸出測試數(shù)據(jù),DATA2=“8888”;當LD_CLK=‘1時,輸出設置的烹調(diào)時間數(shù)據(jù),DATA2=“2453”;當LD_DONE=‘1時,輸出烹調(diào)完畢的狀態(tài)信息數(shù)據(jù),DATA2=“ABCD”,將其轉(zhuǎn)化為數(shù)碼管顯示,應為“donE”;當LOAD=‘1時,表示烹調(diào)計時器正處于數(shù)據(jù)裝入狀態(tài)。
烹調(diào)計時器 烹調(diào)計時器的功能是實現(xiàn)烹調(diào)過程中的時間遞減計數(shù),且當計時結(jié)束時向狀態(tài)控制器提供狀態(tài)信號,以便狀態(tài)控制器產(chǎn)生烹調(diào)完成信號。烹調(diào)計時器的內(nèi)部組成原理圖如圖4所示,利用兩個減法十進制和兩個減法六進制計數(shù)器的級聯(lián),可實現(xiàn)59′59″數(shù)之間的計時和初始數(shù)據(jù)的裝載。LOAD=‘1時完成裝入功能,COOK=‘1時執(zhí)行逆計數(shù)功能,DATA3為來自于數(shù)據(jù)裝載器的輸出數(shù)據(jù);MIN_H、MIN_L、SEC_H和SEC_L為完成烹調(diào)所剩時間,PLUS和MINUS為控制MIN_L進行加‘1和減‘1的信號輸入端;當數(shù)碼管顯示信息為DONE時,指示烹調(diào)完成。
動態(tài)顯示電路 動態(tài)顯示電路的功能是以動態(tài)掃描的方式將各種顯示信息顯示在4個LED數(shù)碼管上,4個數(shù)碼管的8個數(shù)據(jù)端是分別并聯(lián)的,由片選信號控制各數(shù)碼管輪流顯示。該模塊由片選、掃描、顯示譯碼子模塊整合實現(xiàn)。
對整個系統(tǒng)進行方案設計和功能劃分,對各模塊VHDL程序進行編寫、編譯和仿真驗證。根據(jù)系統(tǒng)設計的行為要求和功能要求,對各模塊調(diào)用各模塊的器件符號,按照圖1所示邏輯功能連接起來,形成整體系統(tǒng)頂層文件;通過編
譯、功能仿真后,設置芯片的管腳位置,最后將執(zhí)行文件下載到FPGA芯片中,與外圍電路一起構(gòu)成微波爐定時系統(tǒng)的硬件電路,并進行實際測試。
微波爐定時系統(tǒng)的仿真波形圖如圖5所示。將測試信號TEST置為‘1時,數(shù)碼管上顯示字形“8888”,在置位的過程中,置位端SET_T要始終保持高電平直到置位完成。置入的數(shù)為“2828”,當開始信號START為高電平時,整個系統(tǒng)開始工作,進入倒數(shù)計時狀態(tài)。當PAUSE置為‘1時,暫停工作,仿真波形圖中系統(tǒng)暫停時的烹調(diào)剩余時間是“2821”;PAUSE回到電平時,繼續(xù)工作。
5 結(jié)語
EDA設計工具和可編程邏輯器件是現(xiàn)代電子技術(shù)的基礎。以VHDL硬件描述語言進行設計,將微波爐定時系統(tǒng)的核心部分集成在一片F(xiàn)PGA芯片內(nèi),可以通過軟件編程的方法對其硬件結(jié)構(gòu)和工作方式進行重構(gòu),使得硬件的設計可以如同軟件設計那樣方便快捷,為電子系統(tǒng)的設計帶來極大的靈活性和通用性。
參考文獻
[1]徐志軍,徐光輝.CPLD/FPGA的開發(fā)與應用[M].北京:電子工業(yè)出版社,2002.