《設(shè)計(jì)基于VHDL的簡易全自動(dòng)控制洗衣機(jī).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《設(shè)計(jì)基于VHDL的簡易全自動(dòng)控制洗衣機(jī).doc(17頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、華東理工大學(xué)2009 -2010 學(xué)年第2學(xué)期電子綜合設(shè)計(jì)DEA課程設(shè)計(jì)作業(yè) 2010.6 班級:XXXX 學(xué)號: XXX 姓名:XXXX開課學(xué)院:信息學(xué)院 任課老師: XXXX 成績: 題目:1、簡易全自動(dòng)洗衣機(jī)控制器設(shè)計(jì) 2、通信系統(tǒng)信道編碼器設(shè)計(jì)作業(yè)要求:電子系統(tǒng)設(shè)計(jì)EDA課程是電子信息工程、自動(dòng)控制、計(jì)算機(jī)科學(xué)與工程等專業(yè)的技術(shù)課之一,具有很強(qiáng)的工程實(shí)踐性。課程學(xué)習(xí)要求學(xué)生:掌握現(xiàn)代硬件數(shù)字電路的軟件化設(shè)計(jì)的基本方法、掌握應(yīng)用VHDL及EDA工具開發(fā)設(shè)計(jì)數(shù)字系統(tǒng)的基本方法以及對現(xiàn)代電子系統(tǒng)設(shè)計(jì)技術(shù)有一定的了解 設(shè)計(jì)報(bào)告要求:1、按照設(shè)計(jì)題目要求構(gòu)建設(shè)計(jì)框圖 2、用EDA設(shè)計(jì)軟件按照設(shè)計(jì)
2、題目要求進(jìn)行原型設(shè)計(jì)并給出仿真結(jié)果 3、對仿真結(jié)果進(jìn)行一定的討論 4、原程序和仿真波形等附錄。教師評語: 教師簽名: 年 月 日電子綜合設(shè)計(jì)EDA綜合設(shè)計(jì)題設(shè)計(jì)一簡易全自動(dòng)洗衣機(jī)控制器。該控制器由兩大狀態(tài)A和B組成,每個(gè)狀態(tài)分三個(gè)子狀態(tài),每個(gè)狀態(tài)分別由選擇A和選擇B控制。其中A為步進(jìn)選擇按紐,每步跳轉(zhuǎn)一個(gè)子狀態(tài)、B也為步進(jìn)選擇按紐,但每步選擇B中的所有組合中的一種。當(dāng)啟動(dòng)時(shí),時(shí)間序列控制器按已選的B類子狀態(tài)順序執(zhí)行。過程啟動(dòng)由啟動(dòng)/暫停鍵控制(暫停鍵在過程啟動(dòng)后任意時(shí)間可暫停/恢復(fù)過程)過程啟動(dòng)后機(jī)蓋開啟應(yīng)均能暫停過程,復(fù)蓋間停30秒后重新繼續(xù)原過程。A:強(qiáng)洗 標(biāo)準(zhǔn) 弱洗B:洗滌 漂洗 甩干
3、(洗滌,漂洗時(shí)電機(jī)分別正轉(zhuǎn)、反轉(zhuǎn))強(qiáng)洗:(共36分鐘) 洗滌 18分漂洗 14分甩干 4分(洗滌時(shí)電機(jī)分別正轉(zhuǎn)4分、反轉(zhuǎn)4分,正反轉(zhuǎn)間停30秒;漂洗時(shí)電機(jī)分別正轉(zhuǎn)3分、反轉(zhuǎn)3分,正反轉(zhuǎn)間停30秒;甩干時(shí)電機(jī)分別正轉(zhuǎn)1.5分,間停30秒)標(biāo)準(zhǔn):(共26分鐘) 洗滌 14分漂洗 8 分甩干 4分(洗滌時(shí)電機(jī)分別正轉(zhuǎn)3分、反轉(zhuǎn)3分,正反轉(zhuǎn)間停30秒;漂洗時(shí)電機(jī)分別正轉(zhuǎn)1.5分、反轉(zhuǎn)1.5分,正反轉(zhuǎn)間停30秒;甩干時(shí)電機(jī)分別正轉(zhuǎn)1.5分,間停30秒)弱洗(共20分鐘) 洗滌 10分漂洗 6分甩干 4分(洗滌時(shí)電機(jī)分別正轉(zhuǎn)2分、反轉(zhuǎn)2分,正反轉(zhuǎn)間停30秒;漂洗時(shí)電機(jī)分別正轉(zhuǎn)1分、反轉(zhuǎn)1分,正反轉(zhuǎn)間停30
4、秒;甩干時(shí)電機(jī)分別正轉(zhuǎn)1.5分,間停30秒)設(shè)定秒脈沖已給定,指示為LED,整過程完成后,蜂鳴器響30秒。整個(gè)設(shè)計(jì)為正邏輯。一、程序如下: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;二、仿真波形如下強(qiáng)洗全部過程強(qiáng)洗 漂洗、甩干強(qiáng)洗(甩干)標(biāo)準(zhǔn)全部過程標(biāo)準(zhǔn)(漂洗、甩干)標(biāo)準(zhǔn)(甩干)弱洗全過程弱洗(漂洗、甩干)九、弱洗(甩干)強(qiáng)開蓋子:一、強(qiáng)洗強(qiáng)開蓋一、 標(biāo)準(zhǔn)強(qiáng)開蓋二、 弱洗強(qiáng)開蓋暫停和啟動(dòng)一、 強(qiáng)洗暫停二、 強(qiáng)洗重新啟動(dòng)三、 標(biāo)準(zhǔn)暫停四、 標(biāo)準(zhǔn)重新啟動(dòng)五、 弱洗暫停六、 弱洗重新啟動(dòng)兩次洗衣一、 兩次強(qiáng)洗兩次標(biāo)準(zhǔn)(漂洗、甩干)二、 兩次弱甩干三、設(shè)計(jì)思想討論設(shè)計(jì)時(shí)參考了已有程序,此芯片有五個(gè)輸入和
15、三個(gè)輸出,輸入COUNT_M和輸入COUNT_N是狀態(tài)控制鍵,輸入START是輸入啟動(dòng)和暫停鍵,以及一個(gè)時(shí)鐘CLK。輸出是洗衣結(jié)束鈴聲端口和電機(jī)驅(qū)動(dòng)端口。在設(shè)計(jì)中,為便于調(diào)試和觀察將時(shí)鐘周期假設(shè)為30S。本次設(shè)計(jì)大致可以分成兩個(gè)模塊來看待,控制端和工作端。控制部分使用了三個(gè)進(jìn)程來處理,進(jìn)程一控制狀態(tài)COUNT_M,進(jìn)程二控制狀態(tài)COUNT_N,進(jìn)程三控制開始和暫停。工作部分使用了一個(gè)進(jìn)程來處理,在該進(jìn)程中主要處理強(qiáng)制開蓋,洗衣的各個(gè)狀態(tài),以及洗衣結(jié)束后的鈴聲??刂贫薈OUNT_M中,SG是工作結(jié)束標(biāo)志信號,信號TS控制洗衣機(jī)的暫停和重新啟動(dòng),DT是狀態(tài)的中間變量。COOKK為強(qiáng)開洗衣機(jī)蓋子信號
16、端,DCP輸入狀態(tài)中間信號。洗衣機(jī)正常工作過程:洗衣機(jī)總共有九種工作狀態(tài),這九種狀態(tài)可以分成三大部分,強(qiáng)洗,標(biāo)準(zhǔn),弱洗,此三種狀態(tài)的洗衣過程類似,因此以強(qiáng)洗來解釋說明。洗滌完成后,將信號TP變換到漂洗狀態(tài),然后變換到甩干,甩干結(jié)束后將TP置零,以及輸出狀態(tài)置一。然后等待下次洗滌。CLK主分頻器洗滌定時(shí)器水流控制器正反向控制主分頻器四、心得體會(huì)這次EDA對我來說是一項(xiàng)很大的挑戰(zhàn),看到題目后幾乎沒有思路,翻閱教材,看了下自動(dòng)洗衣機(jī)那張的講解,有了眉目,但是設(shè)計(jì)的內(nèi)容過于龐雜,很難下手。這時(shí)候,我選擇從已有的程序著手,先看懂,然后和同學(xué)討論思路,最后形成了這個(gè)作業(yè)。做仿真波形的時(shí)候,就是驗(yàn)證結(jié)論的時(shí)候,過程還算順利。通過這次作業(yè),我覺得許多困難的事,需要借鑒已有的經(jīng)驗(yàn),請查閱資料,和同學(xué)交流討論,就基本可以完成。