基于VHDL的洗衣機控制器設計_第1頁
基于VHDL的洗衣機控制器設計_第2頁
基于VHDL的洗衣機控制器設計_第3頁
基于VHDL的洗衣機控制器設計_第4頁
基于VHDL的洗衣機控制器設計_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、數(shù)字系統(tǒng)設計與硬件描述語言期末考試作業(yè)題目:洗衣機控制器的設計學院:電子信息工程學院專業(yè):物聯(lián)網(wǎng)工程學號: 3014204328姓名: 劉涵凱2016-12-10一、選題設計描述1 .功能介紹洗衣機控制器,能夠?qū)崿F(xiàn)開始與暫停、注水,洗滌、排水、脫水和警報提醒的功能,并且可以隨時更改洗衣模式。洗衣機提供兩種模式:模式1:注水-洗滌-排水-注水-洗滌-排水-脫水;模式2:脫水。洗衣模式?jīng)Q定洗衣時間。默認模式為模式2。洗衣機界面如下圖所示:教 小 昌瞬昔 顯示當 前鍬數(shù)明管 顯示開 始事 停狀態(tài)剩余時間:UtMC口:修11:1:注水2 :3: 3席4:K*數(shù)用管顯示工作鑰:Word資料運轉(zhuǎn)方式如下圖

2、所示:2 .算法簡介總程序描述:總程序通過調(diào)用5種模塊,在洗衣機控制器輸入變化時,立刻轉(zhuǎn)換模式并產(chǎn)生對應輸出。當開關關閉時,所有輸出為 0;暫停時,除顯示開關狀態(tài)的輸出外,所有輸出為0o開關開啟后,設置洗衣模式,之后按下“開始”即可開始工作。在洗衣機控制器輸入變化時,立刻轉(zhuǎn)換模式并產(chǎn)生對應輸出。電子元器件模型如下圖所示:-switchwaterstate rmodelselectwashstate :clkindrainstate :i(sorpdry state :ala mi out *switch&Ute6 0 ispstate6 0state(6. 0,-currentm &a

3、mp;del60-timedecade|6 0timeunit6 -0inst5switch為開關信號,modelselect為開關選擇信號,clkin為系統(tǒng)時序脈沖信號, sorp為開始/暫停信號。waterstate為注水程序的工作狀態(tài),washrstate為洗滌程序的工作狀態(tài),drainstate為排水程序的工作狀態(tài),drystate為脫水程序的工作狀態(tài)。alarmout為警報提醒的狀態(tài)。switchstate為數(shù)碼管顯示的開關的狀態(tài)(0/1 ), spstate為數(shù)碼管顯示的開始/暫 停的狀態(tài)(0/1) , state為數(shù)碼管顯示的洗衣機工作狀態(tài)(04) , currentmodel

4、為數(shù)碼 管顯示的當前模式(02) , timedecade 為數(shù)碼管顯示的剩余時間的十位,timeunit為 數(shù)碼管顯示的剩余時間的個位。F面介紹各模塊功能與算法:1)開關與模式選擇模塊model3Cbe3 0Jtnne13.Otime23.0J丫心0.:inst3i ! rV " "V ' 一r ' r-“ » « V» ' %", ' yF ' RB » i s>J-t V « '尸='>>a接收開關信息,b接收模式選擇信息。c輸出總電路

5、的開關信息(開啟洗衣機并且設置完畢電路后,即可準備工作,等待“開始”信號)。e為開關信息,將輸入到數(shù)碼管中顯示。timel與time2分別代表洗衣時間的十位和個位,將輸入到計數(shù)器與警報模塊中。y為模式信息,將輸入到碼管中顯示。2)開始/暫停模塊startpause;:astartorpausebe(3.0elk:in5t4l|i " , s - >s 曠* -e|.、-一 “y- | - - , | t- f - -'一< -t| - - - % ,a接收開關信息,b接收開始/暫停信息,clk接收系統(tǒng)時序脈沖信號startorpause輸出受開始/暫停信息調(diào)控的系

6、統(tǒng)時序脈沖信號。y為開始/暫停信息,將輸入到碼管中顯示。3)計數(shù)器與警報模塊Fti raw trail nan i,airi n i , r r aa ran iief trail b ra rai *(:count.I*;ciKalarm1 aouttimei3r.O1 timei 3 _00Littime23 .0-,tim&23.0;insl2clk接收受開始/暫停信息調(diào)控的系統(tǒng)時序脈沖信號a接收開關信息,timel和time2分別接收洗衣時間的十位和個位alarm輸出警報信息;outtimel和outtime2分別為剩余時間的十位和個位,將輸入到數(shù)碼管中顯示, 同時將輸入到控制

7、模塊中。在脈沖信號的控制下,剩余時間逐漸減少,當剩余時間為0時,停止減小,并開啟警報。4)控制模塊controlwalerwashtirneip 0time23 0draindry r533.3rinstij I 111 F j I I ! ! I l-V I I 4 I I I金 I I IJM I ! ! I I I I Bfa-* I I V -! I ! J 4 I 4 I |> I I |i«4 II用 I If > I 1-8 4 I « 4 I |. F 4 Ia接收開關信息,b接收開始/暫停信息,timel和time2分別接收剩余時間的十位和個位

8、water、wash、drain、dry分別輸出注水、洗滌、排水、脫水的控制信息act為模塊內(nèi)部使用的BUFFER*??刂颇K根據(jù)剩余時間的多少決定工作狀態(tài)。如:剩余時間為 16-30分鐘時洗滌, 31-35分鐘時注水。則剩余時間33分鐘時,water為1,其他控制信息為0;剩余時間 21分鐘時,wash為1,其他控制信息為005)譯碼器與數(shù)碼管顯示模塊:i'BCD'7>: bq0.6,- - 33. 01:;inst匚-b接收開關信息,a接收4位二進制數(shù)據(jù)q在數(shù)碼管上顯示字形??谳擟入£AX.產(chǎn).出宇騰/%R凡OO001111110LI “一 1OODL0L1

9、0000O0011O1101匚OO11JL11Q01E:01000110O111_| 101011Q11Q115Q10Q11111BO111111口QOP1Q0Q1111111EI1O011111O11二、程序源代碼及說明程序代碼由主程序及5個模塊代碼組成1)主程序LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY xyj ISPORT(switch,modelselect,clkin,sorp:INSTD_LOGIC;-電源開關、模式選擇、時鐘、開始/暫停按鍵狀態(tài)的輸入waters

10、tate,washstate,drainstate,drystate,alarmout:OUTSTD_LOGIC;-注水程序、洗滌程序、排水程序、脫水程序、警報狀態(tài)的輸出switchstate,spstate,state,currentmodel,timedecade,timeunit:OUTSTD_LOGIC_VECTOR(6 DOWNTO 0);工作狀態(tài)、工作模式、剩余時間的輸出END ENTITY xyj;ARCHITECTURE behave OF xyj ISCOMPONENT model調(diào)用開關與模式選擇模塊PORT(a,b: IN STD_LOGIC;c: OUT STD_LOG

11、IC;e,time1,time2y OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 );END COMPONENT model;COMPONENT count調(diào)用計數(shù)器與警報模塊PORT(clk,a: IN STD_LOGIC;time1,time2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);alarm: OUT STD_LOGIC;outtime1,outtime2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT count;COMPONENT BCD7-調(diào)用譯碼器與數(shù)碼管顯示模塊PORT(b: IN

12、 STD_LOGIC;a: IN STD_LOGIC_VECTOR(3 DOWNTO 0);q : OUT STD_LOGIC_VECTOR(0 TO 6);END COMPONENT BCD7;COMPONENT startpause-調(diào)用開始/暫停模塊PORT(a,b,clk: IN STD_LOGIC;startorpause: OUT STD_LOGIC;e: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 );END COMPONENT startpause;COMPONENT control-調(diào)用控制模塊PORT(a,b: IN STD_LOGIC;time1,

13、time2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);water,wash,drain,dry: OUT STD_LOGIC;act: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT control;SIGNALsig1,sig2,sigBCD7_1,sigBCD7_2,sigBCD7_3,sigBCD7_4,sigBCD7_5,sigBCD7_6:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL aout,bout:STD_LOGIC;BEGINU1:modelPORTMAP(a=>swi

14、tch,b=>modelselect,c=>aout,y=>sigBCD7_1,time1=>sig1,time2=>sig2,e=>sigBCD7_5);U2:startpausePORTMAP(a=>aout,b=>sorp,clk=>clkin,startorpause=>bout,e=>sigBCD7_6);U3:controlPORTMAP(a=>aout,b=>sorp,time1=>sigBCD7_2,time2=>sigBCD7_3,water=>waterstate,wash=&g

15、t;washstate,drain=>drainstate,dry=>drystate,act=>sigBCD7_4);U4:countPORTMAP(a=>aout,clk=>bout,time1=>sig1,time2=>sig2,alarm=>alarmout,outtime1 二>sigBCD7_2,outtime2=>sigBCD7_3);U5: BCD7 PORT MAP(b=>aout,a=>sigBCD7_1,q=>currentmodel);U6: BCD7 PORT MAP(b=>aout,

16、a=>sigBCD7_2,q=>timedecade);U7: BCD7 PORT MAP(b=>aout,a=>sigBCD7_3,q=>timeunit);U8: BCD7 PORT MAP(b=>aout,a=>sigBCD7_4,q=>state);U9: BCD7 PORT MAP(b=>aout,a=>sigBCD7_5,q=>switchstate);U10: BCD7 PORT MAP(b=>aout,a=>sigBCD7_6,q=>spstate);END ARCHITECTURE behav

17、e;2)開關與模式選擇模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY model IS-開關與模式選擇模塊PORT(a,b: IN STD_LOGIC;定義開關和模式選擇按鍵的輸入c: OUT STD_LOGIC;洗衣機工作開關的輸出e,time1,time2y OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 ); 定義所需時間/min , timel為十位,time2為各位END ENTITY model;ARCHITECTURE behave OF model ISBEGINPROCESS(a,b)BEGINIF(a

18、='1')THEN開關開啟時執(zhí)行CASE b ISWHEN '1' => y<="0001"time1<="0110"time2<="0000”;- 模式 1: 60分鐘WHEN '0' => y<="0010"time1<="0001"time2<="0000”;- 模式 2: 10分鐘END CASE;c<='1'e<="0001"-開關開啟且模式選

19、擇完畢,開始工作ELSE y<="0000"time1<="0000"time2<="0000"c<='0'e<="0000"開關關閉時不工作END IF;END PROCESS;END ARCHITECTURE behave;3)開始/暫停模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY startpause IS開始/暫停模塊PORT(a,b,clk: IN STD_LOGIC;startorpause: OUT

20、STD_LOGIC;e: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 );END ENTITY startpause;ARCHITECTURE behave OF startpause ISBEGINPROCESS(a,b)BEGINIF(a='1')THENCASE b ISWHEN '1' => startorpause<=clk;e<="0001"WHEN '0' => startorpause<='0'e<="0000"EN

21、D CASE;ELSIF(a='0')THENstartorpause<='0'e<="0000"END IF;END PROCESS;END ARCHITECTURE behave;4)計數(shù)器與警報模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY count IS計數(shù)器與警報模塊PORT(clk,a: IN STD_LOGIC;time1,time2: IN STD_LOGIC_VECTOR(3 DOWNTO 0

22、);alarm: OUT STD_LOGIC;outtime1,outtime2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY count;ARCHITECTURE behave OF count ISSIGNAL intime11 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL intime22 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL intime3 : STD_LOGIC_VECTOR(1 DOWNTO 0):=&q

23、uot;01" -intime3 與 intime4聯(lián)系,實現(xiàn)變量的合理賦值SIGNAL intime4 : STD_LOGIC_VECTOR(1 DOWNTO 0):="00"BEGINPROCESS(time1)-此段的作用為當模式更改時,令變量重新賦值BEGINIF(time1/="0110")THENintime3<="10"ELSIF(time1/="0001")THENintime3<="11"ELSE intime3<="01"END

24、 IF;intime11<=time1;intime22<=time2;END PROCESS;PROCESS(clk,intime3,intime4)VARIABLE intime1,intime2 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF(clk'EVENT AND clk='1')THENIF(a='1')THENIF(intime3/=intime4)THEN-第一個 PROCESS運行時,變量被重新賦值intime4<=intime3;intime1:=intime11;intime2:=i

25、ntime22;END IF;IF(intime2/="0000")THENintime2:=intime2-'1'alarm<='0'ELSIF(intime1/="0000")THENintime2:="1001"intime1:=intime1-'1'alarm<='0'ELSE alarm<='1'END IF;outtime1<=intime1;outtime2<=intime2;END IF;END IF;END

26、PROCESS;END ARCHITECTURE behave;5)控制模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY control IS控制模塊PORT(a,b: IN STD_LOGIC;time1,time2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);water,wash,drain,dry: OUT STD_LOGIC;act: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY control;AR

27、CHITECTURE behave OF control ISBEGINPROCESS(time1,time2)BEGINIF(a='1')THENIF(b='1')THENIF(time1&time2>"01010101")THENact<="0001"注水ELSIF(time1&time2>"01000000")THENact<="0010"洗滌ELSIF(time1&time2>"00110101")TH

28、ENact<="0011"排水ELSIF(time1&time2>"00110000")THENact<="0001"注水ELSIF(time1&time2>"00010101")THENact<="0010"洗滌ELSIF(time1&time2>"00010000")THENact<="0011"排水ELSIF(time1&time2>"00000000"

29、;)THENact<="0100"脫水ELSE act<="0000"END IF;ELSE act<="0000"END IF;Word資料ELSE act<="0000"END IF;CASE act ISWHEN "0001" => water<='T;wash<='0'drain<='0'dry<='0'WHEN "0010" => water<=

30、'0'wash<='1'drain<='0'dry<='0'WHEN "0011" => water<='0'wash<='0'drain<='1'dry<='0'WHEN "0100" => water<='0'wash<='0'drain<='0'dry<='1'WHEN OTHERS

31、 => water<='0'wash<='0'drain<='0'dry<='0'END CASE;END PROCESS;END ARCHITECTURE behave;6)譯碼器與數(shù)碼管顯示模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BCD7 IS-譯碼器與數(shù)碼管顯示模塊PORT(b: IN STD_LOGIC;a: IN STD_LOGIC_VECTOR(3 DOWNTO 0);-數(shù)據(jù)輸入q : OUT STD_LOGIC_VECTOR(0

32、 TO 6) );-7 段輸出END BCD7;ARCHITECTURE behav OF BCD7 ISBEGINPROCESS (a)Word資料BEGINIF(b='1')THENCASE a(3 DOWNTO 0) ISWHEN "0000" => q<="1111110”;WHEN "0010" => q<="1101101”;WHEN "0100" => q<="0110011”;WHEN "0110" => q&l

33、t;="1011111”;WHEN "1000" => q<="1111111”;WHEN OTHERS => q<="0000000”;END CASE;ELSE q<="1111110”;END IF;END PROCESS;END behav;-BCD 7段譯碼表WHEN "0001" => q<="0110000"WHEN "0011" => q<="1111001"WHEN "010

34、1" => q<="1011011"WHEN "0111" => q<="1110000"WHEN "1001" => q<="1111011"三、仿真結果及分析首先對每個模塊進行仿真:1)開關與模式選擇模塊仿真結果表明,只有a為1時,輸出變化。但a為1的一瞬間便已有了模式,這不符合洗衣機的操作流程,所以在之后的模塊中寫入了控制其輸出變化的程序2、仿真考慮多種情況,如:a變換時、a為0且b變化時等,輸出皆符合所需。2)開始/暫停模塊0 ps320-0

35、 H3400.J ns 曰Q.QQQQ.O h? 9E0,Q nfL加B0巡>raMM如#rtor.,.B0Ili kih 3s工皿皿皿幾皿MonmuLU皿皿皿rn皿皿皿r皿皿Jinm:配強就, . 口。由二 X ,. “. x 。歐;nnnnr.n.innnn'- 'nirnnnnnnrn.innnnnn.i.inn1、仿真結果表明,只有a為1時,輸出變化,產(chǎn)生受b控制的脈沖信號。2、仿真考慮多種情況,如:a變換時、a為0且b變化時等,輸出皆符合所需。3)計數(shù)器與警報模塊D pa BOR 幗l加但 240.0 rtifH 40&.D Kl *。0 M 540.0

36、 Prfi &。力哂 720.0自M。加電M.口 他能皿口旭1tLhii_d iiiiii _ _II% dk B&3a 也 BQ* > iimei 8 mliQ& citnez B gnoo日 口 iDiittirnei B OflC'DCUtt- 6。個cutt.n o罩OJtL .B 0三Okrtt.,BO:3 * 口uKimfe2 B DDC'D卷ortt“B0理cun.,bo%cutt.BO吟CdtL.B <D看 lOElBO口睥uJiL; hl n n n rLi_j ; i; ; 111 用 i ; : n ijn , n 口 n n 口 n. .:n. . n.PHnn n.nn.n rm nn n.n .二,.i i i汨nnplnmmmnnjimmwwuL 4iJUUUiL JinmLU i _r : M u 1門汴 m模塊運行完全符合所需,輸出了正確的剩余時間與alarmWdETlrrel3 00 Kitime29 OOLkOwrar3 Qk< ps 3O.£l he 16QlD ns

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論