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

下載本文檔

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

文檔簡介

數(shù)字系統(tǒng)設計與硬件描述語言期末考試作業(yè)題目: 洗衣機控制器的設計 學院: 電子信息工程學院 專業(yè): 物聯(lián)網(wǎng)工程 學號: 3014204328 姓名: 劉涵凱 2016-12-10一、 選題設計描述1. 功能介紹洗衣機控制器,能夠實現(xiàn)開始與暫停、注水,洗滌、排水、脫水和警報提醒的功能,并且可以隨時更改洗衣模式。洗衣機提供兩種模式:模式1:注水-洗滌-排水-注水-洗滌-排水-脫水;模式2:脫水。洗衣模式?jīng)Q定洗衣時間。默認模式為模式2。洗衣機界面如下圖所示:運轉方式如下圖所示:2. 算法簡介總程序描述:總程序通過調用5種模塊,在洗衣機控制器輸入變化時,立刻轉換模式并產(chǎn)生對應輸出。當開關關閉時,所有輸出為0;暫停時,除顯示開關狀態(tài)的輸出外,所有輸出為0。開關開啟后,設置洗衣模式,之后按下“開始”即可開始工作。在洗衣機控制器輸入變化時,立刻轉換模式并產(chǎn)生對應輸出。電子元器件模型如下圖所示:switch為開關信號,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為數(shù)碼管顯示的當前模式(02),timedecade為數(shù)碼管顯示的剩余時間的十位,timeunit為數(shù)碼管顯示的剩余時間的個位。下面介紹各模塊功能與算法:1)開關與模式選擇模塊a接收開關信息,b接收模式選擇信息。c輸出總電路的開關信息(開啟洗衣機并且設置完畢電路后,即可準備工作,等待“開始”信號)。e為開關信息,將輸入到數(shù)碼管中顯示。time1與time2分別代表洗衣時間的十位和個位,將輸入到計數(shù)器與警報模塊中。y為模式信息,將輸入到碼管中顯示。2)開始/暫停模塊a接收開關信息,b接收開始/暫停信息,clk接收系統(tǒng)時序脈沖信號。startorpause輸出受開始/暫停信息調控的系統(tǒng)時序脈沖信號。y為開始/暫停信息,將輸入到碼管中顯示。3)計數(shù)器與警報模塊clk接收受開始/暫停信息調控的系統(tǒng)時序脈沖信號,a接收開關信息,time1和time2分別接收洗衣時間的十位和個位。alarm輸出警報信息;outtime1和outtime2分別為剩余時間的十位和個位,將輸入到數(shù)碼管中顯示,同時將輸入到控制模塊中。在脈沖信號的控制下,剩余時間逐漸減少,當剩余時間為0時,停止減小,并開啟警報。4)控制模塊a接收開關信息,b接收開始/暫停信息,time1和time2分別接收剩余時間的十位和個位。water、wash、drain、dry分別輸出注水、洗滌、排水、脫水的控制信息。act為模塊內部使用的BUFFER量。控制模塊根據(jù)剩余時間的多少決定工作狀態(tài)。如:剩余時間為16-30分鐘時洗滌,31-35分鐘時注水。則剩余時間33分鐘時,water為1,其他控制信息為0;剩余時間21分鐘時,wash為1,其他控制信息為0。5)譯碼器與數(shù)碼管顯示模塊b接收開關信息,a接收4位二進制數(shù)據(jù)。q在數(shù)碼管上顯示字形。二、 程序源代碼及說明程序代碼由主程序及5個模塊代碼組成1)主程序LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY xyj IS PORT(switch,modelselect,clkin,sorp: IN STD_LOGIC; -電源開關、模式選擇、時鐘、開始/暫停按鍵狀態(tài)的輸入 waterstate,washstate,drainstate,drystate,alarmout: OUT STD_LOGIC; -注水程序、洗滌程序、排水程序、脫水程序、警報狀態(tài)的輸出 switchstate,spstate,state,currentmodel,timedecade,timeunit: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -工作狀態(tài)、工作模式、剩余時間的輸出END ENTITY xyj;ARCHITECTURE behave OF xyj ISCOMPONENT model -調用開關與模式選擇模塊 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 -調用計數(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 -調用譯碼器與數(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 -調用開始/暫停模塊 PORT(a,b,clk: IN STD_LOGIC; startorpause: OUT STD_LOGIC; e: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 ); END COMPONENT startpause; COMPONENT control -調用控制模塊 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; SIGNAL sig1,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: model PORT MAP(a=switch,b=modelselect,c=aout,y=sigBCD7_1,time1=sig1,time2=sig2,e=sigBCD7_5); U2: startpause PORT MAP(a=aout,b=sorp,clk=clkin,startorpause=bout,e=sigBCD7_6); U3: control PORT MAP(a=aout,b=sorp,time1=sigBCD7_2,time2=sigBCD7_3,water=waterstate,wash=washstate,drain=drainstate,dry=drystate,act=sigBCD7_4); U4: count PORT MAP(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,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 behave;2)開關與模式選擇模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY model IS -開關與模式選擇模塊 PORT(a,b: IN STD_LOGIC; -定義開關和模式選擇按鍵的輸入 c: OUT STD_LOGIC; -洗衣機工作開關的輸出 e,time1,time2,y: OUT STD_LOGIC_VECTOR ( 3 DOWNTO 0 ); -定義所需時間/min,time1為十位,time2為各位END ENTITY model;ARCHITECTURE behave OF model ISBEGIN PROCESS(a,b) BEGIN IF(a=1)THEN -開關開啟時執(zhí)行 CASE b IS WHEN 1 = y=0001;time1=0110;time2 y=0010;time1=0001;time2=0000; -模式2:10分鐘 END CASE; c=1;e=0001; -開關開啟且模式選擇完畢,開始工作 ELSE y=0000;time1=0000;time2=0000; c=0;e startorpause=clk;e startorpause=0;e=0000; END CASE; ELSIF(a=0)THEN startorpause=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); 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):=01; -intime3與intime4聯(lián)系,實現(xiàn)變量的合理賦值SIGNAL intime4 : STD_LOGIC_VECTOR(1 DOWNTO 0):=00;BEGINPROCESS(time1) -此段的作用為當模式更改時,令變量重新賦值 BEGIN IF(time1/=0110)THEN intime3=10;ELSIF(time1/=0001)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(clkEVENT AND clk=1)THENIF(a=1)THENIF(intime3/=intime4)THEN -第一個PROCESS運行時,變量被重新賦值 intime4=intime3; intime1:=intime11; intime2:=intime22;END IF; IF(intime2/=0000)THEN intime2:=intime2-1; alarm=0; ELSIF(intime1/=0000)THEN intime2:=1001; intime1:=intime1-1; alarm=0; ELSE alarm=1; END IF;outtime1=intime1;outtime201010101)THEN act01000000)THENact00110101)THENact00110000)THENact00010101)THENact00010000)THENact00000000)THENact=0100; -脫水ELSE act=0000; END IF; ELSE act=0000;END IF;ELSE act water=1;wash=0;drain=0;dry water=0;wash=1;drain=0;dry water=0;wash=0;drain=1;dry water=0;wash=0;drain=0;dry water=0;wash=0;drain=0;dry q q q q q q q q q q q=0000000; END CASE; ELSE q=1111110; END IF; END PROCESS; END behav;三、 仿真結果及分析首先對每個模塊進行仿真:1)開關與模式選擇模塊1、 仿真結果表明,只有a為1時,輸出變化。但a為1的一瞬間便已有了模式,這不符合洗衣機的操作流程,所以在之后的模塊中寫入了控制其輸出變化的程序。2、 仿真考慮多種情況,如:a變換時、a為0且b變化時等,輸出皆符合所需。2)開始/暫停模塊1、 仿真結果表明,只有a為1時,輸出變化,產(chǎn)生受b控制的脈沖信號。2、 仿真考慮多種情況,如:a變換時、a為0且b變化時等,輸出皆符合所需。3)計數(shù)器與警報模塊模塊運行完全符合所需,輸出了正確的剩余時間與alarm。4)控制模塊1、對模塊在開關、開始/暫停及剩余時間變化下控制的仿真。2、仿真結果表明,暫停時(b為0),洗衣進程停止,開始時,進程繼續(xù); 3、仿真模擬了“暫停-切換模式-開始”的進程,輸出符合所需。5)譯碼器與數(shù)碼管顯示模塊1、對模塊在開關及輸入控制下的輸出仿真。2、仿真

溫馨提示

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

評論

0/150

提交評論