《設計基于VHDL的簡易全自動控制洗衣機.doc》由會員分享,可在線閱讀,更多相關(guān)《設計基于VHDL的簡易全自動控制洗衣機.doc(17頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、華東理工大學2009 -2010 學年第2學期電子綜合設計DEA課程設計作業(yè) 2010.6 班級:XXXX 學號: XXX 姓名:XXXX開課學院:信息學院 任課老師: XXXX 成績: 題目:1、簡易全自動洗衣機控制器設計 2、通信系統(tǒng)信道編碼器設計作業(yè)要求:電子系統(tǒng)設計EDA課程是電子信息工程、自動控制、計算機科學與工程等專業(yè)的技術(shù)課之一,具有很強的工程實踐性。課程學習要求學生:掌握現(xiàn)代硬件數(shù)字電路的軟件化設計的基本方法、掌握應用VHDL及EDA工具開發(fā)設計數(shù)字系統(tǒng)的基本方法以及對現(xiàn)代電子系統(tǒng)設計技術(shù)有一定的了解 設計報告要求:1、按照設計題目要求構(gòu)建設計框圖 2、用EDA設計軟件按照設計
2、題目要求進行原型設計并給出仿真結(jié)果 3、對仿真結(jié)果進行一定的討論 4、原程序和仿真波形等附錄。教師評語: 教師簽名: 年 月 日電子綜合設計EDA綜合設計題設計一簡易全自動洗衣機控制器。該控制器由兩大狀態(tài)A和B組成,每個狀態(tài)分三個子狀態(tài),每個狀態(tài)分別由選擇A和選擇B控制。其中A為步進選擇按紐,每步跳轉(zhuǎn)一個子狀態(tài)、B也為步進選擇按紐,但每步選擇B中的所有組合中的一種。當啟動時,時間序列控制器按已選的B類子狀態(tài)順序執(zhí)行。過程啟動由啟動/暫停鍵控制(暫停鍵在過程啟動后任意時間可暫停/恢復過程)過程啟動后機蓋開啟應均能暫停過程,復蓋間停30秒后重新繼續(xù)原過程。A:強洗 標準 弱洗B:洗滌 漂洗 甩干
3、(洗滌,漂洗時電機分別正轉(zhuǎn)、反轉(zhuǎn))強洗:(共36分鐘) 洗滌 18分漂洗 14分甩干 4分(洗滌時電機分別正轉(zhuǎn)4分、反轉(zhuǎn)4分,正反轉(zhuǎn)間停30秒;漂洗時電機分別正轉(zhuǎn)3分、反轉(zhuǎn)3分,正反轉(zhuǎn)間停30秒;甩干時電機分別正轉(zhuǎn)1.5分,間停30秒)標準:(共26分鐘) 洗滌 14分漂洗 8 分甩干 4分(洗滌時電機分別正轉(zhuǎn)3分、反轉(zhuǎn)3分,正反轉(zhuǎn)間停30秒;漂洗時電機分別正轉(zhuǎn)1.5分、反轉(zhuǎn)1.5分,正反轉(zhuǎn)間停30秒;甩干時電機分別正轉(zhuǎn)1.5分,間停30秒)弱洗(共20分鐘) 洗滌 10分漂洗 6分甩干 4分(洗滌時電機分別正轉(zhuǎn)2分、反轉(zhuǎn)2分,正反轉(zhuǎn)間停30秒;漂洗時電機分別正轉(zhuǎn)1分、反轉(zhuǎn)1分,正反轉(zhuǎn)間停30
4、秒;甩干時電機分別正轉(zhuǎn)1.5分,間停30秒)設定秒脈沖已給定,指示為LED,整過程完成后,蜂鳴器響30秒。整個設計為正邏輯。一、程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY xiyiji IS PORT(COUNT_N,COUNT_M,START,COOK,CLK:IN STD_LOGIC; LOOK:OUT STD_LOGIC; DOUT :OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END XIYIJI;ARCHITECTURE BEHAV OF
5、 xiyiji ISSIGNAL DT1,DT2:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL DICSOUNT,TEM:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DCP:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL CT:STD_LOGIC_VECTOR(5 DOWNTO 0);SIGNAL CT1,CT2:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SG,CMKS:STD_LOGIC;BEGIN PROCESS(COUNT_N,SG) BEGINIF SG=1 THENDT1=00
6、;ELSIF COUNT_NEVENT AND COUNT_N=1 THENIF DT1=3 THENDT1=01;ELSEDT1=DT1+1;END IF;END IF;END PROCESS;PROCESS(COUNT_M,SG)BEGINIF SG=1 THENDT2=00;ELSIF COUNT_MEVENT AND COUNT_M=1 THENIF DT2=3 THENDT2=01;ELSEDT2=DT2+1;END IF;END IF;END PROCESS; PROCESS(START)BEGINIF SG=1 THENCMKS=0;ELSIF STARTEVENT AND ST
7、ART=1 THEN DICSOUNT=DT1&DT2;CMKS=CMKS XOR 1;END IF;END PROCESS; PROCESS(CLK,START,COOK)BEGINIF START=1 AND DCP=0000 THENDCP=DICSOUNT;ELSIF CLKEVENT AND CLK=1 THENIF COOK=1 THENDOUT0000 THENDOUT=00;ELSIF SG=1 THENIF CT10001 THENCT1=0000;SGIF CT35 THENCT=CT+1;IF CT18 THENDOUT=01;CT1=CT1+1;ELSIF CT1=8
8、THENDOUT=00;CT1=CT1+1;ELSIF CT28 THENDOUT=10;CT2=CT2+1;ELSIF CT2=8 THENDOUT=00;CT1=0000;CT2=0000;END IF;ELSEDCP=0110;CT=000000;CT1=0000;CT2=0000;DOUTIF CT27 THENCT=CT+1;IF CT16 THENDOUT=01;CT1=CT1+1;ELSIF CT1=6 THENDOUT=00;CT1=CT1+1;ELSIF CT26 THENDOUT=10;CT2=CT2+1;ELSIF CT2=6 THENDOUT=00;CT1=0000;C
9、T2=0000;END IF;ELSEDCP=0111;CT=000000;CT1=0000;CT2=0000;DOUTIF CT8 THENCT=CT+1;IF CT13 THENDOUT=01;CT1=CT1+1;ELSIF CT1=3 THENDOUT=00;CT1=CT1+1;ELSIF CT23 THENDOUT=10;CT2=CT2+1;ELSIF CT2=3 THENDOUT=00;CT1=0000;CT2=0000;END IF;ELSEDCP=0000;CT=000000;CT1=0000;CT2=0000;SGIF CT27 THENCT=CT+1;IF CT16 THEN
10、DOUT=01;CT1=CT1+1;ELSIF CT1=6 THENDOUT=00;CT1=CT1+1;ELSIF CT26 THENDOUT=10;CT2=CT2+1;ELSIF CT2=6 THENDOUT=00;CT1=0000;CT2=0000;END IF;ELSEDCP=1010;CT=000000;CT1=0000;CT2=0000;DOUTIF CT15 THENCT=CT+1;IF CT13 THENDOUT=01;CT1=CT1+1;ELSIF CT1=3 THENDOUT=00;CT1=CT1+1;ELSIF CT23 THENDOUT=10;CT2=CT2+1;ELSI
11、F CT2=3 THENDOUT=00;CT1=0000;CT2=0000;END IF;ELSEDCP=1011;CT=000000;CT1=0000;CT2=0000;DOUTIF CT8 THENCT=CT+1;IF CT13 THENDOUT=01;CT1=CT1+1;ELSIF CT1=3 THENDOUT=00;CT1=CT1+1;ELSIF CT23 THENDOUT=10;CT2=CT2+1;ELSIF CT2=3 THENDOUT=00;CT1=0000;CT2=0000;END IF;ELSEDCP=0000;CT=000000;CT1=0000;CT2=0000;SGIF
12、 CT19 THENCT=CT+1;IF CT14 THENDOUT=01;CT1=CT1+1;ELSIF CT1=4 THENDOUT=00;CT1=CT1+1;ELSIF CT24 THENDOUT=10;CT2=CT2+1;ELSIF CT2=4 THENDOUT=00;CT1=0000;CT2=0000;END IF;ELSEDCP=1110;CT=000000;CT1=0000;CT2=0000;DOUTIF CT11 THENCT=CT+1;IF CT12 THENDOUT=01;CT1=CT1+1;ELSIF CT1=2 THENDOUT=00;CT1=CT1+1;ELSIF C
13、T22 THENDOUT=10;CT2=CT2+1;ELSIF CT2=2 THENDOUT=00;CT1=0000;CT2=0000;END IF;ELSEDCP=1111;CT=000000;CT1=0000;CT2=0000;DOUTIF CT8 THENCT=CT+1;IF CT13 THENDOUT=01;CT1=CT1+1;ELSIF CT1=3 THENDOUT=00;CT1=CT1+1;ELSIF CT23 THENDOUT=10;CT2=CT2+1;ELSIF CT2=3 THENDOUT=00;CT1=0000;CT2=0000;END IF;ELSEDCP=0000;CT
14、=000000;CT1=0000;CT2=0000;SGDOUT=00;END CASE;END IF;END IF;END PROCESS;LOOK=SG; END BEHAV;二、仿真波形如下強洗全部過程強洗 漂洗、甩干強洗(甩干)標準全部過程標準(漂洗、甩干)標準(甩干)弱洗全過程弱洗(漂洗、甩干)九、弱洗(甩干)強開蓋子:一、強洗強開蓋一、 標準強開蓋二、 弱洗強開蓋暫停和啟動一、 強洗暫停二、 強洗重新啟動三、 標準暫停四、 標準重新啟動五、 弱洗暫停六、 弱洗重新啟動兩次洗衣一、 兩次強洗兩次標準(漂洗、甩干)二、 兩次弱甩干三、設計思想討論設計時參考了已有程序,此芯片有五個輸入和
15、三個輸出,輸入COUNT_M和輸入COUNT_N是狀態(tài)控制鍵,輸入START是輸入啟動和暫停鍵,以及一個時鐘CLK。輸出是洗衣結(jié)束鈴聲端口和電機驅(qū)動端口。在設計中,為便于調(diào)試和觀察將時鐘周期假設為30S。本次設計大致可以分成兩個模塊來看待,控制端和工作端??刂撇糠质褂昧巳齻€進程來處理,進程一控制狀態(tài)COUNT_M,進程二控制狀態(tài)COUNT_N,進程三控制開始和暫停。工作部分使用了一個進程來處理,在該進程中主要處理強制開蓋,洗衣的各個狀態(tài),以及洗衣結(jié)束后的鈴聲。控制端COUNT_M中,SG是工作結(jié)束標志信號,信號TS控制洗衣機的暫停和重新啟動,DT是狀態(tài)的中間變量。COOKK為強開洗衣機蓋子信號
16、端,DCP輸入狀態(tài)中間信號。洗衣機正常工作過程:洗衣機總共有九種工作狀態(tài),這九種狀態(tài)可以分成三大部分,強洗,標準,弱洗,此三種狀態(tài)的洗衣過程類似,因此以強洗來解釋說明。洗滌完成后,將信號TP變換到漂洗狀態(tài),然后變換到甩干,甩干結(jié)束后將TP置零,以及輸出狀態(tài)置一。然后等待下次洗滌。CLK主分頻器洗滌定時器水流控制器正反向控制主分頻器四、心得體會這次EDA對我來說是一項很大的挑戰(zhàn),看到題目后幾乎沒有思路,翻閱教材,看了下自動洗衣機那張的講解,有了眉目,但是設計的內(nèi)容過于龐雜,很難下手。這時候,我選擇從已有的程序著手,先看懂,然后和同學討論思路,最后形成了這個作業(yè)。做仿真波形的時候,就是驗證結(jié)論的時候,過程還算順利。通過這次作業(yè),我覺得許多困難的事,需要借鑒已有的經(jīng)驗,請查閱資料,和同學交流討論,就基本可以完成。