基于VHDL的洗衣機控制器設計_第1頁
基于VHDL的洗衣機控制器設計_第2頁
基于VHDL的洗衣機控制器設計_第3頁
基于VHDL的洗衣機控制器設計_第4頁
基于VHDL的洗衣機控制器設計_第5頁
免費預覽已結(jié)束,剩余9頁可下載查看

下載本文檔

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

文檔簡介

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。洗衣機界面如下圖所示:運轉(zhuǎn)方式如下圖所示:.2. 算法簡介總程序描述: 總程序通過調(diào)用5 種模塊,在洗衣機控制器輸入變化時,立刻轉(zhuǎn)換模式并產(chǎn)生對應輸出。當開關(guān)關(guān)閉時,所有

2、輸出為 0;暫停時,除顯示開關(guān)狀態(tài)的輸出外,所有輸出為 0。開關(guān)開啟后,設置洗衣模式,之后按下“開始”即可開始工作。在洗衣機控制器輸入變化時,立刻轉(zhuǎn)換模式并產(chǎn)生對應輸出。電子元器件模型如下圖所示:switch 為開關(guān)信號, modelselect為開關(guān)選擇信號, clkin 為系統(tǒng)時序脈沖信號, sorp 為開始 /暫停信號。waterstate為注水程序的工作狀態(tài), washrstate為洗滌程序的工作狀態(tài), drainstate為排水程序的工作狀態(tài), drystate 為脫水程序的工作狀態(tài)。alarmout 為警報提醒的狀態(tài)。switchstate 為數(shù)碼管顯示的開關(guān)的狀態(tài)( 0/1),

3、spstate為數(shù)碼管顯示的開始 /暫停的狀態(tài) (0/1), state 為數(shù)碼管顯示的洗衣機工作狀態(tài) (04),currentmodel 為數(shù)碼管顯示的當前模式 (02), timedecade為數(shù)碼管顯示的剩余時間的十位, timeunit 為數(shù)碼管顯示的剩余時間的個位。下面介紹各模塊功能與算法:1)開關(guān)與模式選擇模塊.a 接收開關(guān)信息, b 接收模式選擇信息。c 輸出總電路的開關(guān)信息(開啟洗衣機并且設置完畢電路后,即可準備工作,等待“開始”信號)。e 為開關(guān)信息,將輸入到數(shù)碼管中顯示。time1 與 time2 分別代表洗衣時間的十位和個位,將輸入到計數(shù)器與警報模塊中。y 為模式信息,將

4、輸入到碼管中顯示。2)開始 /暫停模塊a 接收開關(guān)信息, b 接收開始 /暫停信息, clk 接收系統(tǒng)時序脈沖信號。startorpause輸出受開始 /暫停信息調(diào)控的系統(tǒng)時序脈沖信號。y 為開始 /暫停信息,將輸入到碼管中顯示。3)計數(shù)器與警報模塊.clk 接收受開始 /暫停信息調(diào)控的系統(tǒng)時序脈沖信號, a 接收開關(guān)信息,time1 和 time2 分別接收洗衣時間的十位和個位。alarm 輸出警報信息;outtime1 和 outtime2 分別為剩余時間的十位和個位, 將輸入到數(shù)碼管中顯示, 同時將輸入到控制模塊中。在脈沖信號的控制下,剩余時間逐漸減少,當剩余時間為 0 時,停止減小,并

5、開啟警報。4)控制模塊a 接收開關(guān)信息, b 接收開始 /暫停信息, time1 和 time2 分別接收剩余時間的十位和個位。water、wash、 drain、 dry 分別輸出注水、洗滌、排水、脫水的控制信息。act 為模塊內(nèi)部使用的BUFFER 量??刂颇K根據(jù)剩余時間的多少決定工作狀態(tài)。如:剩余時間為 16-30 分鐘時洗滌, 31-35 分鐘時注水。則剩余時間 33 分鐘時, water 為 1,其他控制信息為 0;剩余時間 21 分鐘時, wash 為 1,其他控制信息為 0。5)譯碼器與數(shù)碼管顯示模塊b 接收開關(guān)信息, a 接收 4 位二進制數(shù)據(jù)。q 在數(shù)碼管上顯示字形。.二、

6、程序源代碼及說明程序代碼由主程序及5 個模塊代碼組成1)主程序LIBRARY IEEE ;ENTITY xyj ISPORT(switch,modelselect,clkin,sorp:INSTD_LOGIC;-電源開關(guān)、模式選擇、時鐘、開始/暫停按鍵狀態(tài)的輸入waterstate,washstate,drainstate,drystate,alarmout:OUTSTD_LOGIC;-注水程序、洗滌程序、排水程序、脫水程序、警報狀態(tài)的輸出switchstate,spstate,state,currentmodel,timedecade,timeunit:OUTSTD_LOGIC_VECTOR

7、(6 DOWNTO 0);-工作狀態(tài)、工作模式、剩余時間的輸出END ENTITY xyj;ARCHITECTURE behave OF xyj ISCOMPONENT model-調(diào)用開關(guān)與模式選擇模塊PORT(a,b: IN STD_LOGIC;c: OUT STD_LOGIC;e,time1,time2,y: 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_VECTO

8、R(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 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 ST

9、D_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,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;SIGNA

10、Lsig1,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=>switch,b=>modelselect,c=>aout,y=>sigBCD7_1,time1=>sig1,time2=>sig2,e=>sigBCD7_5);U2:startpausePORTMAP(a=>aout,b=>sorp,clk=

11、>clkin,startorpause=>bout,e=>sigBCD7_6);U3:controlPORTMAP(a=>aout,b=>sorp,time1=>sigBCD7_2,time2=>sigBCD7_3,water=>waterstate,wash=>washstate,drain=>drainstate,dry=>drystate,act=>sigBCD7_4);U4:countPORTMAP(a=>aout,clk=>bout,time1=>sig1,time2=>sig2,alar

12、m=>alarmout,outtime1=>sigBCD7_2,outtime2=>sigBCD7_3);U5: BCD7PORT MAP(b=>aout,a=>sigBCD7_1,q=>currentmodel);U6: BCD7PORT MAP(b=>aout,a=>sigBCD7_2,q=>timedecade);U7: BCD7PORT MAP(b=>aout,a=>sigBCD7_3,q=>timeunit);U8: BCD7PORT MAP(b=>aout,a=>sigBCD7_4,q=>st

13、ate);U9: BCD7PORT MAP(b=>aout,a=>sigBCD7_5,q=>switchstate);U10: BCD7PORT MAP(b=>aout,a=>sigBCD7_6,q=>spstate);END ARCHITECTURE behave;2)開關(guān)與模式選擇模塊LIBRARY IEEE ;ENTITY model IS-開關(guān)與模式選擇模塊.PORT(a,b: IN STD_LOGIC;-定義開關(guān)和模式選擇按鍵的輸入c: OUT STD_LOGIC;-洗衣機工作開關(guān)的輸出e,time1,time2,y: OUT STD_LOGIC_

14、VECTOR ( 3 DOWNTO 0 ); - 定義所需時間 /min, time1 為十位, time2 為各位END ENTITY model;ARCHITECTURE behave OF model ISBEGINPROCESS(a,b)BEGINIF(a='1')THEN-開關(guān)開啟時執(zhí)行CASE b ISWHEN '1' => y<="0001"time1<="0110"time2<="0000" - 模式 1:60 分鐘WHEN '0' => y

15、<="0010"time1<="0001"time2<="0000" - 模式 2:10 分鐘END CASE;c<='1'e<="0001"-開關(guān)開啟且模式選擇完畢,開始工作ELSE y<="0000"time1<="0000"time2<="0000"c<='0'e<="0000"-開關(guān)關(guān)閉時不工作END IF;END PROCESS;END

16、 ARCHITECTURE behave;3)開始 /暫停模塊LIBRARY IEEE ;ENTITY startpause IS-開始 /暫停模塊PORT(a,b,clk: IN STD_LOGIC;startorpause: OUT STD_LOGIC;e: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 ); END ENTITY startpause;ARCHITECTURE behave OF startpause IS BEGINPROCESS(a,b)BEGINIF(a='1')THENCASE b ISWHEN '1' =&g

17、t; startorpause<=clk;e<="0001"WHEN '0' => startorpause<='0'e<="0000"END CASE;ELSIF(a='0')THENstartorpause<='0'e<="0000"END IF;END PROCESS;.END ARCHITECTURE behave;4)計數(shù)器與警報模塊LIBRARY IEEE ;ENTITY count IS -計數(shù)器與警報模塊 PORT

18、(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 ENTITY count;ARCHITECTURE behave OF count ISSIGNAL intime11 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL intime22 : STD_LOGIC_VECTOR(3 DOWNTO 0):=&

19、quot;0000"SIGNAL intime3 : STD_LOGIC_VECTOR(1 DOWNTO 0):="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"

20、)THENintime3<="11"ELSE intime3<="01"END 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 -第一個

21、PROCESS運行時,變量被重新賦值 intime4<=intime3;intime1:=intime11;intime2:=intime22;END IF;IF(intime2/="0000")THENintime2:=intime2-'1'alarm<='0'ELSIF(intime1/="0000")THEN.intime2:="1001"intime1:=intime1-'1'alarm<='0'ELSE alarm<='1'

22、;END IF;outtime1<=intime1;outtime2<=intime2;END IF;END IF;END PROCESS;END ARCHITECTURE behave;5)控制模塊LIBRARY IEEE ;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 co

23、ntrol;ARCHITECTURE 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>"0011010

24、1")THENact<="0011"-排水ELSIF(time1&time2>"00110000")THENact<="0001"-注水ELSIF(time1&time2>"00010101")THENact<="0010"-洗滌ELSIF(time1&time2>"00010000")THENact<="0011"-排水ELSIF(time1&time2>"

25、;00000000")THENact<="0100"-脫水ELSE act<="0000"END IF;.ELSE act<="0000"END IF;ELSE act<="0000"END IF;CASE act ISWHEN "0001" => water<='1'wash<='0'drain<='0'dry<='0' WHEN "0010" =

26、> water<='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

27、'WHEN OTHERS => water<='0'wash<='0'drain<='0'dry<='0'END CASE;END PROCESS;END ARCHITECTURE behave;6)譯碼器與數(shù)碼管顯示模塊LIBRARY IEEE;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 TO 6) );-7

28、段輸出END BCD7;ARCHITECTURE behav OF BCD7 ISBEGINPROCESS (a)BEGINIF(b='1')THENCASE a(3 DOWNTO 0) IS- BCD 7 段譯碼表WHEN "0000" => q<="1111110"WHEN "0001" => q<="0110000"WHEN "0010" => q<="1101101"WHEN "0011" =&g

29、t; q<="1111001"WHEN "0100" => q<="0110011"WHEN "0101" => q<="1011011"WHEN "0110" => q<="1011111"WHEN "0111" => q<="1110000"WHEN "1000" => q<="1111111"WHEN "1001" => q<="1111011"WHEN OTHERS => q<="0000000"END CASE;ELSE q<="1111110"END IF;END PROCESS;END behav;三、仿真結(jié)果及分析首先對每個模塊進行仿真:.1)開關(guān)與模式選擇模塊1、 仿真結(jié)果表明,只有a 為 1 時,輸出變化。但a 為 1 的一瞬間便已有了模式,這不符合洗衣機的操作流程,所以在之后的模塊中寫入了控制其輸出變化的程序。2、 仿真考慮多種情況,如

溫馨提示

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

評論

0/150

提交評論