一種基于VHDL的洗衣機控制器設計
2.3 控制模塊設計
本文引用地址:http://dyxdggzs.com/article/246896.htm控制模塊是洗衣機控制器的核心模塊,它根據按鍵選擇模塊輸入的各種控制信息和計時(shí)模塊輸入的計時(shí)信息控制洗衣4種狀態(tài)的轉換和電機轉速,并輸出當前洗衣?tīng)顟B(tài)、電機轉速,以及剩余時(shí)間。
洗衣四種狀態(tài)的轉換可以方便對由狀態(tài)機實(shí)現。狀態(tài)機是一種輸出由當前狀態(tài)和當前輸入決定的時(shí)序電路,它通??梢杂脿顟B(tài)轉換圖表示。使用VHDL設計狀態(tài)機不必知道電路的具體實(shí)現細節,只需在邏輯上加以描述,因此采用狀態(tài)機實(shí)現控制模塊是一種非常方便的方法。
狀態(tài)機的用VHDL實(shí)現有通用格式,它包含兩個(gè)個(gè)進(jìn)程:狀態(tài)機狀態(tài)轉換進(jìn)程Change_State和狀態(tài)機輸出進(jìn)程O(píng)utput_Process。其中狀態(tài)轉換進(jìn)程由狀態(tài)轉換圖決定,洗衣機的狀態(tài)轉換圖如圖2所示,S0、S1、S2、S3、S4分別為進(jìn)水、洗滌、漂洗、脫水以及結束狀態(tài),n0、n1、n2、n3分別表示由按鍵選擇模塊輸出的進(jìn)水、洗滌、漂洗與脫水時(shí)間,num為計數模塊輸出的洗衣機運行時(shí)間,reset為洗衣機啟動(dòng)信號。當洗衣機啟動(dòng)時(shí),即reset按鍵撥動(dòng),進(jìn)入S0狀態(tài),開(kāi)始進(jìn)水;當洗衣機運行時(shí)間num=n0時(shí),進(jìn)水完成,狀態(tài)轉為S1,開(kāi)始洗滌;當洗衣機運行時(shí)間num=n0+n1時(shí),洗滌完成,狀態(tài)轉為S2,開(kāi)始漂洗;當洗衣機運行時(shí)間num=n0+n1+n2時(shí),漂洗完成,狀態(tài)轉為S3,開(kāi)始脫水;當洗衣機運行時(shí)間num=n0+n1+n2+n3時(shí),脫水完成,狀態(tài)轉為結束狀態(tài)S4,洗衣停止。
狀態(tài)轉換進(jìn)程的VHDL代碼如下:

當reset=1時(shí),啟動(dòng)進(jìn)程,當前狀態(tài)state置S0。每當掃描時(shí)鐘scan_clk為上升沿時(shí),啟動(dòng)進(jìn)程,根據當前狀態(tài)state和洗衣機運行時(shí)間num,按照狀態(tài)轉換圖決定新的當前狀態(tài)。
輸出進(jìn)程通過(guò)輸出4種洗衣?tīng)顟B(tài)信號控制4個(gè)LED燈當明滅來(lái)顯示當前洗衣?tīng)顟B(tài)。輸出進(jìn)程通過(guò)輸出進(jìn)水信號控制進(jìn)水。當洗衣為進(jìn)水狀態(tài)時(shí),若暫停信號為0,則輸出進(jìn)水信號為1,開(kāi)始進(jìn)水;若暫停信號為1,輸出進(jìn)水信號為0,暫停進(jìn)水。而當洗衣為其他狀態(tài)時(shí),輸出進(jìn)水信號始終為0,停止進(jìn)水。輸出進(jìn)程通過(guò)輸出電機控制信號控制電機運行。根據洗滌電機的邏輯控制過(guò)程,當洗衣?tīng)顟B(tài)為進(jìn)水時(shí),輸出電機控制信號為零電平,表示電機暫停;當洗衣?tīng)顟B(tài)為洗滌和漂洗時(shí),輸出電機控制信號為頻率為洗滌轉速(默認60轉/分鐘,即1Hz)的方波持續5秒(默認時(shí)輸出1 Hz的方波5個(gè)),然后高電平持續1秒(控制電機極性轉向);洗衣?tīng)顟B(tài)為脫水時(shí),輸出電機控制信號為頻率為脫水轉速(600轉/分鐘,即10 Hz)的方波持續5秒(默認狀態(tài)下,輸出10 Hz的方波50個(gè)),然后零電平持續1秒(控制電機暫停)。輸出進(jìn)程根據當前狀態(tài)和洗衣機運行時(shí)間輸出當前狀態(tài)剩余時(shí)間到顯示模塊。例如,當洗衣為洗滌狀態(tài)時(shí),輸出剩余時(shí)間為n0+n1-num。
2.4 顯示模塊設計
本模塊用于在7段數碼管上顯示當前狀態(tài)剩余時(shí)間,其輸入為控制模塊輸出的當前狀態(tài)剩余時(shí)間和掃描時(shí)鐘。首先,將輸入的剩余時(shí)間由秒轉換為分鐘(四舍五入);然后進(jìn)行分位,分為個(gè)位ge和十位shi(顯然剩余時(shí)間不超過(guò)100分鐘,最多2位);最后通過(guò)動(dòng)態(tài)掃描在2個(gè)共陰極的七段數碼上交替顯示個(gè)位數字和十位數字。當交替頻率高于28 Hz時(shí),由于人眼的視覺(jué)殘留效果,這2位數字看上去是同時(shí)顯示在2個(gè)七段數碼管上。動(dòng)態(tài)掃描進(jìn)程的VHDL代碼如下:

3 結束語(yǔ)
我們在QuartusⅡ軟件開(kāi)發(fā)平臺上,基于模塊化的設計思想,使用VHDL語(yǔ)言完成洗衣機控制器設計、編譯和仿真,并下載到FPGA硬件實(shí)驗箱上進(jìn)行測試。仿真波形和測試結果表明該洗衣機能正確實(shí)現各種設計功能,該設計方案切實(shí)可行。
評論