版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。VHDL語言的洗衣機控制器設計目錄TOCo1-3hzuHYPERLINKl_Toc311108450一、目的PAGEREF_Toc311108450h2HYPERLINKl_Toc311108451二、內容及要求PAGEREF_Toc311108451h2HYPERLINKl_Toc3111084521、設計的主要內容PAGEREF_Toc311108452h2HYPERLINKl_Toc3111084532、設計的主要要求PAGEREF_Toc311108453h3HYPERLINKl_Toc3111
2、08454三、原理PAGEREF_Toc311108454h3HYPERLINKl_Toc3111084551基于狀態(tài)機的控制電路設計PAGEREF_Toc311108455h3HYPERLINKl_Toc3111084562洗衣機控制器的工作原理PAGEREF_Toc311108456h3HYPERLINKl_Toc311108457(1)洗衣機的工作狀態(tài)PAGEREF_Toc311108457h3HYPERLINKl_Toc311108458(2)全自動洗衣過程PAGEREF_Toc311108458h4HYPERLINKl_Toc311108459(3)單獨執(zhí)行某個洗衣程序PAGEREF
3、_Toc311108459h4HYPERLINKl_Toc311108460(4)設計思路PAGEREF_Toc311108460h5HYPERLINKl_Toc311108461四、步驟及仿真圖7HYPERLINKl_Toc311108463五、程序設計PAGEREF_Toc311108463h10(1)時鐘分頻模塊10HYPERLINKl_Toc311108464(2)數碼管顯示PAGEREF_Toc311108464h11HYPERLINKl_Toc311108465(3)定時器電路PAGEREF_Toc311108465h12。(4)預置時間和編碼電路13HYPERLINKl_Toc3
4、11108466(5)時序電路PAGEREF_Toc311108466h13HYPERLINKl_Toc311108467(6)譯碼器14HYPERLINKl_Toc311108468六、心得體會PAGEREF_Toc311108468h14HYPERLINKl_Toc311108469七、參考文獻PAGEREF_Toc311108469h15一、目的1學習掌握全自動洗衣機的控制原理。2掌握基于有限狀態(tài)機的控制電路設計方法.二、內容及要求1、設計的主要內容:設計一個全自動洗衣機控制器電路,實現對洗衣機的全自動控制。根據全自動洗衣機的控制原理設計一個控制電路,使之能夠控制全自動洗衣機完成整個工作
5、過程。洗衣機工作過程分為兩種情況:(1)全部自動完成當按下復位按鈕時,洗衣機上電,控制電路復位到初始狀態(tài)(默認水位為“中”;使用)者可根據衣服的多少,按下水位控制按鈕,改變水位設置,以控制上水時加水的多少;當按下啟動/暫停按鈕時,洗衣機開始洗衣的第一個操作:進水閥門打開,開始上水,并根據水位設置(高、中、低、少)歷時不同的時間timeadd(8s、7s、6s、5s);然后進水閥門關閉,電機開始運轉,開始洗衣過程,并歷時9s;然后電機停止運轉,排水閥門打開,開始排水,并根據水位設置(高、中、低、少)歷時不同的時間timedrain(7s、6s、5s、4s);然后排水閥門關閉,進水閥門打開,開始第
6、二次上水,并歷時timeadd當甩干結束后,整個洗衣過程完成,揚聲器發(fā)出持續(xù)15秒的急促的“嘀嘀”音,提示用戶洗衣結束。正常運行狀態(tài)下全自動洗衣機工作過程:空閑(idle)第一次加水(water1)7s洗衣(wash)9s第一次排水(drain1)6s第二次加水(water2)7s漂洗(rinse)9s第二次排水(drain2)6s甩干(dry)5s蜂鳴15s。洗衣機整個工作過程可分為9個狀態(tài),運用有限狀態(tài)機的設計思想來實現。(2)人工干預在每個工作狀態(tài)下,如果想要洗衣機暫停工作,可按下啟動/暫停按鈕,則洗衣機立刻暫停當時的操作。比如,在第一次加水過程中,若按下啟動/暫停按鈕,則進水閥門立刻關
7、閉,暫停上水,計時暫停;當再次按下啟動/暫停按鈕,則進水閥門又打開,并繼續(xù)計時,直到加水滿timeadd后,進入洗衣過程。洗衣機功能設置:打開洗衣機蓋/合上洗衣機蓋:當洗衣機在甩干過程中,若打開洗衣機蓋,則洗衣機應立即暫停工作,停止電機運轉和排水;只有合上洗衣機蓋,洗衣機才能繼續(xù)工作。因此洗衣機控制器有一個open_door輸入信號,并根據此信號控制洗衣機的動作。水位控制:有一個水位控制按鈕,逐次按動它,水位可以在高、中、低、少這4檔間切換,以控制上水時加水的多少。洗衣模式選擇:有一個洗衣模式選擇按鈕,在洗衣機上電后開始啟動之前,按動此按鈕,可以選擇洗衣機單獨執(zhí)行不同的洗衣程序:浸泡、洗滌、漂
8、洗、脫水(甩干);若不按此按鈕,則默認全程自動執(zhí)行浸泡、洗滌、漂洗、甩干這4個程序。2、設計的主要要求:(1)根據設計題目要求編寫相應程序代碼。(2)畫出洗衣機控制器包括不同洗衣模式的完整的狀態(tài)轉移圖。(3)對編寫的VHDL程序代碼進行編譯和仿真。(4)總結設計內容。三、原理1基于狀態(tài)機的控制電路設計有限狀態(tài)機(FSM,FiniteStateMachine)是一種重要的時序邏輯電路單元,尤其適合于設計數字系統(tǒng)的控制模塊。狀態(tài)機可以認為是組合邏輯和寄存器邏輯的特殊組合,它一般包括兩個部分:組合邏輯部分和寄存器部分。組合邏輯部分又包括次態(tài)邏輯和輸出邏輯,分別用于狀態(tài)譯碼和產生輸出信號;寄存器部分用
9、于存儲狀態(tài)。狀態(tài)機的次態(tài)是現態(tài)及輸入信號的函數,輸出信號根據狀態(tài)機的現態(tài)或輸入信號而定。根據輸出信號產生方法的不同,狀態(tài)機可分為兩類:摩爾(Moore)型狀態(tài)機和米里(Mealy)型狀態(tài)機。對于Moore型狀態(tài)機,其輸出只為狀態(tài)機當前狀態(tài)的函數,而與輸入無關。而對于Mealy型狀態(tài)機,其輸出不僅與狀態(tài)機當前狀態(tài)有關,而且與輸入有關。實用的狀態(tài)機一般都設計為同步時序電路,它在時鐘信號的觸發(fā)下,完成各狀態(tài)之間的轉移,并產生相應的輸出。采用VerilogHDL語言實現基于狀態(tài)機的控制電路設計,就是在時鐘信號的觸發(fā)下,完成兩項任務:(1)用case或if-else語句描述出狀態(tài)的轉移,(2)描述狀態(tài)機
10、的輸出信號(通常是控制信號)。2洗衣機控制器的工作原理(1)洗衣機的工作狀態(tài)洗衣機有9個工作狀態(tài)分別為:空閑(idle)、第一次加水(water1)、洗衣(wash)、第一次排水(drain1)、第二次加水(water2)、漂洗(rinse)、第二次排水(drain2)、甩干(dry)、蜂鳴(beep)。(2)全自動洗衣過程最簡單的操作是在洗衣機上電后(默認水位為“中”,通過水位控制按鈕設置好合適的)水位,然后按下start_pause啟動/暫停按鈕,使洗衣機全自動完成整個洗衣過程,此時洗衣機控制器狀態(tài)轉移圖如圖1所示。圖1洗衣機控制器狀態(tài)轉移圖start_pauserstidlem=0,w=
11、0d=015sbeepm=0,d=0speakerwater1w=1m=0,7swashm=1w=0,浸泡9s甩干5sdrym=1,d=1w=06sdrain2d=1w=0,m=09srinsem=1w=0,d=07sdrain1d=1w=0,m=06swater2w=1m=0,d=0洗滌漂洗圖1全自動洗衣機控制器的狀態(tài)轉移圖。一旦按下rst按鈕,則電路復位到初始狀態(tài),控制信號m=0,w=0,d=0。當按下start_pause啟動/暫停按鈕時,則進入water1狀態(tài),w=1,使進水閥門打開,開始上水,并歷時7s。然后轉移到下一狀態(tài)wash,w=0,使進水閥門關閉;同時m=1,使電機開始運轉,
12、開始洗衣過程,并歷時9s。再轉移到下一狀態(tài)drain1,直到當甩干結束后,整個洗衣過程完成,揚聲器發(fā)出持續(xù)15秒的急促的“嘀嘀”音,提示用戶洗衣結束,控制器又返回到初始狀態(tài)。(3)單獨執(zhí)行某個洗衣程序但有時候,人們可能需要單獨執(zhí)行某個洗衣程序,如洗滌或脫水,這時可以在洗衣前通過按動洗衣模式選擇按鈕來選擇不同的洗衣程序。在這種情況下,洗衣機控制器的狀態(tài)轉移圖就會比圖1更復雜一些,下面加以詳細說明。首先在idle狀態(tài)下,當按下啟動/暫停按鈕時,控制器要根據不同的洗衣模式跳轉到不同的狀態(tài):若默認是全自動洗衣程序或選擇浸泡程序,則跳轉到water1;若選擇洗滌程序,則跳轉到wash;若選擇漂洗程序,則
13、跳轉到water2;若選擇甩干,則跳轉到dry。而當洗衣機執(zhí)行完相應的洗衣程序后,則所有控制信號、計時器應清零,同時控制器應返回初始狀態(tài)。因此,在water1狀態(tài)下,當加好水時控制器不是直接跳轉到wash,而是要先判斷洗衣模式是否為浸泡程序,若是,則跳轉到idle;若不是,才直接跳轉到wash。同理,在drain1狀態(tài)下,當排完水時控制器不是直接跳轉到water2,而是要先判斷洗衣模式是否為洗滌程序,若是,則跳轉到idle;若不是,才直接跳轉到water2。在drain2狀態(tài)下,當排完水時控制器不是直接跳轉到dry,而是要先判斷洗衣模式是否為漂洗程序,若是,則跳轉到idle;若不是,才直接跳轉
14、到dry。(4)設計思路洗衣機控制器系統(tǒng)結構圖如圖2所示,將整個設計劃分為兩個子模塊:時鐘分頻子模塊和洗衣機狀態(tài)控制器子模塊。圖2洗衣機控制器系統(tǒng)結構圖(1)時鐘分頻子模塊clkdiv.v將系統(tǒng)時鐘50MHz分頻為1KHz,再將1KHz分頻為1Hz,以產生洗衣結束時的提示蜂鳴音speaker=clk_1Hz&clk_1KHz&alarm(每間隔1s產生一個音頻為1KHz的提示音)。1Hz的時鐘信號還作為洗衣機狀態(tài)控制器子模塊的輸入時鐘信號,驅動洗衣定時器計數。(2)洗衣機狀態(tài)控制器子模塊wash_ctrl.v設計時,首先應畫出狀態(tài)轉移圖并仔細分析,明確在每個狀態(tài)下控制器要輸出哪些控制信號,計數
15、器該怎樣計數;當希望洗衣機暫停時,所有控制信號應都變?yōu)?,計數器暫停計數。當計數器正常計數到預定值時,應跳轉到下一狀態(tài)。然后用case語句、if-else語句對狀態(tài)轉移和輸出進行描述。信號定義:inputclk_1KHz,clk_1Hz,rst,start_pause,mode,level,open_door;/*start_pause:啟動/暫停按鈕信號,高有效;mode:洗衣模式選擇信號,高有效。不按時,默認全程執(zhí)行浸泡、洗滌、漂洗、甩干這4個程序;每按一下,單獨選擇浸泡,或洗滌,或漂洗,或甩干程序。level:水位控制信號(負脈沖),每按一下,循環(huán)選擇水位(高、中、低、少);open_d
16、oor:洗衣機蓋打開信號(負脈沖)第一次按是,“開蓋”,再按一次則是合蓋。*/outputW,M,D;/W是進水閥門控制信號,M是引擎工作信號,D是放水閥門控制信號output3:0times;/定時計數器,用于洗衣各過程的定時計數outputspeaker;/洗衣結束提示音信號,驅動揚聲器發(fā)聲output3:0nextstate;/狀態(tài)機,描述洗衣機的狀態(tài)轉移過程為方便設計,這里還定義了一些中間變量:reg3:0modestate;/洗衣模式計數器,0:默認全自動洗程序,1:只執(zhí)行浸泡程序,2:只執(zhí)行洗滌程序,3:只執(zhí)行漂洗程序,4:只執(zhí)行甩干程序。根據其值決定控制器從idle狀態(tài)應跳轉到哪
17、一狀態(tài)。reg3:0waterlevel;/水位計數器,用來控制加水時間,當水位為高、中、低、少時其值為0、1、2、3。reg3:0timeadd;/加水時間計數器,根據水位選擇控制加水時間,當水位為高、中、低、少時其值為8s、7s、6s、5s。reg3:0timedrain;/排水時間計數器,根據水位選擇控制排水時間,當水位為高、中、低、少時其值為7s、6s、5s、4s;regdoorstate;/洗衣機蓋的狀態(tài),為“1”表示蓋是打開的,為“0”表示蓋是合上的。regstart_pause_level;/將啟動/暫停脈沖信號轉換為相應的高低電平信號。regalarm;/蜂鳴狀態(tài)信號,蜂鳴時a
18、larm為“1”,平時為“0”整個模塊包括8大部分:5/用parameter常量定義狀態(tài)機的狀態(tài),洗衣、漂洗、甩干和蜂鳴的時間長度/將啟動/暫停脈沖信號轉換為高低電平信號always(posedgestart_pauseorposedgerst)/洗衣模式選擇(對modestate賦值)always(posedgerstorposedgemode)/水位控制(對waterlevel賦值)always(posedgerstornegedgelevel)/復位時默認水位為“中”/open_door信號控制always(posedgerstornegedgeopen_door)/根據水位選擇控制加水
19、時間和排水時間always(posedgeclk_1KHz)begincase(waterlevel)endcaseend/狀態(tài)機輸出及狀態(tài)轉移always(posedgeclk_1Hzorposedgerst)beginif(rst)/控制信號清零,計數器清零,狀態(tài)機回到空閑狀態(tài)elsebegincase(nextstate)idle:/(1)空閑狀態(tài)/根據modestate的值判斷應跳轉到哪個狀態(tài)water1:/(2)第一次加水beginif(!start_pause_level)beginend/暫停操作elsebeginif(timestimeadd-1)beginend/若未加好水,
20、則一直加水elsebeginend/否則根據modestate是否為4d1判斷應跳轉到空閑態(tài)或下一個狀態(tài)endendwash:/(3)洗衣6drain1:/(4)第一次排水/若未排完水,則一直排水/否則根據modestate是否為4d2判斷應跳轉到空閑態(tài)或下一個狀態(tài)water2:/(5)第二次加水rinse:/(6)漂洗drain2:/(7)第二次排水/若未排完水,則一直排水/否則根據modestate是否為4d3判斷應跳轉到空閑態(tài)或下一個狀態(tài)dry:/(8)甩干beep:/(9)蜂鳴endcaseendend/speaker信號輸出assignspeaker=clk_1Hz&clk_1KHz
21、&alarm;四、步驟及仿真圖(1)在上面的代碼提示框架中完成核心子模塊wash_ctrl.v的設計。(2)對核心子模塊wash_ctrl.v進行時序仿真。仿真全程自動順序執(zhí)行浸泡、洗滌、漂洗、甩干這4個程序當rst信號來到時,所有的信號置零;當start_pause信號有效時,進入加水狀態(tài);只要不再按下start_pause按鈕,洗衣機將按照預定的時序自動完成洗衣的全過程。如圖3所示。圖3洗衣過程全部自動完成的仿真圖仿真人工干預洗衣過程在洗衣過程全部自動完成后,再分別給rst和start_pause一個正脈沖,模擬一次新的洗衣過程。在洗衣狀態(tài)(wash)下,第二次按下start_pause按
22、鈕,則M從“1”變?yōu)椤?”,洗衣機暫停操作;稍后第三次按下start_pause按鈕時,則M從“0”變?yōu)椤?”,洗衣機繼續(xù)操作。如圖4所示。圖4人工干預洗衣過程的仿真圖仿真選擇洗衣模式在人工干預洗衣過程結束后,再給rst一個正脈沖,模擬一次新的洗衣過程。當第一次按下mode按鈕時,洗衣機進入浸泡程序操作;第二次按下mode按鈕時,洗衣機進入洗滌程序。當然,若依次按下mode按鈕時,洗衣機會依次進入漂洗、甩干程序(后兩個程序限于篇幅不作圖解)。如圖5所示。仔細觀察modestate和nextstate的變化。圖5選擇洗衣模式的仿真圖仿真進行水位控制在上述洗衣過程結束后,再給rst一個正脈沖,模擬
23、一次新的洗衣過程。先給level一個負脈沖,設置水位為低,再啟動;到第二次加水期間,給level一個負脈沖,設置水位為少。觀察洗衣和漂洗過程中的加水時間和排水時間是否分別與設置的水位相一致。圖6設置水位分別為低和少時的仿真圖仿真在甩干過程中,打開洗衣機蓋的現象圖7在甩干過程中,先后打開和合上洗衣機蓋時的仿真圖(3)設計頂層圖形文件(如圖8所示),編譯。注意這里用未消抖按鍵9、按鍵10(低有效),作為水位控制信號level_n與洗衣機蓋打開信號open_door_n的控制鍵,因此還需要增加按鈕消抖模塊。圖8頂層圖形文件wash_top.bdt(4)進行引腳鎖定。輸入信號:clk(f=50MHz)
24、接Pin28;rst接鍵1(Pin233);start_pause接鍵4(Pin236);mode接鍵7(Pin239);level_n:水位控制信號,負脈沖有效,接鍵9(Pin132);open_door_n:洗衣機蓋打開信號,負脈沖有效,接鍵10(Pin128)。輸出信號:W接發(fā)光二極管D8(Pin168);M接D7(Pin167)接D6(Pin166);D;times3.0:當前狀態(tài)工作時間,接數碼管1,從高位到低位分別接Pin16、Pin15、Pin14、Pin13;nextstate3.0:當前工作狀態(tài),接數碼管2,從高位到低位分別接Pin20、Pin19、Pin18、Pin17;m
25、odestate3.0:所選洗衣模式,接數碼管7,從高位到低位分別接Pin140、Pin139、Pin138、Pin137;10waterlevel3.0:當前水位檔位,接數碼管8,從高位到低位分別接Pin160、Pin159、Pin158、Pin141;speaker接Pin174。五、程序設計(1)時鐘分頻模塊數碼管顯示(3)定時器電路end(4)預置時間和編碼電路(5)時序電路(6)譯碼器六、心得體會課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現,提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.從選題到定稿,從理論到實踐,可以說得是苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中,難免會遇到過各種各樣
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度PVC環(huán)保涂料研發(fā)與生產合同3篇
- 2025年度美發(fā)行業(yè)創(chuàng)新技術研發(fā)與應用合同4篇
- 二零二五版環(huán)保節(jié)能零配件研發(fā)與應用合同4篇
- 二零二五年酒店健身房承包經營及設備維護合同3篇
- 二零二四廈門抗浮錨桿維修保養(yǎng)與定期檢查合同3篇
- 2025年度門禁系統(tǒng)與訪客預約系統(tǒng)對接合同4篇
- 2025年場項目投標失敗后的合同履行監(jiān)督與違約責任合同4篇
- 二零二五版高性能門窗材料供應與加工合同4篇
- 2025年度苗木種植項目招投標合同4篇
- 2025年度廢油品回收處理承包合同樣本4篇
- 2025年溫州市城發(fā)集團招聘筆試參考題庫含答案解析
- 2025版高考物理復習知識清單
- 2024年度工作總結與計劃標準版本(2篇)
- 全球半導體測試探針行業(yè)市場研究報告2024
- 2024年注冊計量師-一級注冊計量師考試近5年真題附答案
- 2023-2024學年深圳市高一年級下冊英語期末考試題(含答案)
- 工程管理重大風險應對方案
- 直播帶貨助農現狀及發(fā)展對策研究-以抖音直播為例(開題)
- 《光伏發(fā)電工程工程量清單計價規(guī)范》
- (完整版)保證藥品信息來源合法、真實、安全的管理措施、情況說明及相關證明
- 營銷專員績效考核指標
評論
0/150
提交評論