洗衣機(jī)洗滌控制電路設(shè)計(jì)實(shí)例_第1頁
洗衣機(jī)洗滌控制電路設(shè)計(jì)實(shí)例_第2頁
洗衣機(jī)洗滌控制電路設(shè)計(jì)實(shí)例_第3頁
洗衣機(jī)洗滌控制電路設(shè)計(jì)實(shí)例_第4頁
洗衣機(jī)洗滌控制電路設(shè)計(jì)實(shí)例_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、洗衣機(jī)洗滌控制電路設(shè)計(jì)實(shí)例一、洗衣機(jī)洗滌控制電路的性能要求1強(qiáng)洗、標(biāo)準(zhǔn)、輕柔三種洗滌模式強(qiáng)洗周期水流控制:正向電機(jī)接通5秒后,停2秒;再反向電機(jī)接通 5秒,停2秒;然后又正向電機(jī)接通 5秒。如此循環(huán)控制電機(jī),直到洗滌定時(shí)結(jié)束。標(biāo)準(zhǔn)洗周期水流控制:其過程與強(qiáng)洗周期水流控制相同,不同的是正向接通時(shí)間為3.5秒,停止時(shí)間為1.5秒,反向接通時(shí)間為 3.5秒。輕柔洗周期水流控制:正向接通時(shí)間為2.5秒,停止時(shí)間為1.5秒,反向接通時(shí)間為2.5秒。2 .三種洗滌定時(shí)洗衣機(jī)洗滌定時(shí)可有三種選擇:5分鐘、10分鐘、15分鐘。3. 上電復(fù)位后的初始設(shè)定初始設(shè)定為標(biāo)準(zhǔn)模式,定時(shí)時(shí)間為15分鐘。如需修改可按模式選

2、擇按鍵和定時(shí)選擇按鍵。每按一次按鍵轉(zhuǎn)換一次,可多次進(jìn)行循環(huán)選擇。當(dāng)某一次洗滌過程結(jié)束后,自動(dòng)返回初 始狀態(tài),等待下一次洗滌過程開始。4 .啟/??刂葡礈爝^程由啟/停鍵控制。每按一次啟/停鍵,狀態(tài)轉(zhuǎn)換一次。5.洗滌定時(shí)精度洗滌定時(shí)誤差要求不大于 0.1秒。為簡化設(shè)計(jì)洗衣機(jī)洗滌控制電路,只要求輸出正向和反向的電機(jī)控制信號(hào)。二、洗衣機(jī)洗滌控制電路的結(jié)構(gòu)根據(jù)上述對(duì)洗衣機(jī)洗滌控制電路的性能要求,可以畫出如圖10-17所示的結(jié)構(gòu)框圖。該控制器由四大部分組成:主分頻器、主控制器、洗滌定時(shí)器和水流控制器。復(fù) 位啟/停一- 洗滌模式選擇- 洗滌時(shí)間選擇-5分鐘10分鐘15分鐘 start_in洗滌定時(shí)器定時(shí)有效

3、主分頻器*7680-標(biāo)準(zhǔn)輕柔強(qiáng)水流控制器正反向控制正向控制反向控制76 800 Hz時(shí)鐘洗衣機(jī)洗滌控制電路的結(jié)構(gòu)框圖1主分頻器主分頻器用來產(chǎn)生 0.1秒的時(shí)鐘供主控制器使用。本方案使用民用的石英晶體,其振蕩頻率為76.8 kHz。這樣,主分頻器的分頻系數(shù)為7680?,F(xiàn)采用3個(gè)分頻器構(gòu)成主分頻器的分頻電路。3個(gè)分頻器是256分頻器、3分頻器和10分頻器。主分頻器的結(jié)構(gòu)如圖 10-18 所示。76 800 Hz主分頻器的結(jié)構(gòu)2. 主控制器主控制器的輸入信號(hào)和輸出信號(hào)如圖10-17所示,分別敘述如下。(1) 輸入信號(hào):reset: 上電復(fù)位;start_stop:啟/停按鍵輸入;modesei:洗滌

4、模式選擇按鍵輸入;系統(tǒng)時(shí)鐘輸入(sysclk): 76 800 Hz主時(shí)鐘;time_sel :洗滌定時(shí)選擇按鍵輸入;timer_down :定時(shí)至U輸入。(2) 輸出信號(hào):5min_out: 5分鐘定時(shí)控制;10min out: 10分鐘定時(shí)控制;15min_out: 15分鐘定時(shí)控制; start_out :啟/停控制; j_out:強(qiáng)水流控制; b_out :標(biāo)準(zhǔn)水流控制; z_out :輕柔水流控制。15分3. 洗滌定時(shí)器洗滌定時(shí)器的功能是根據(jù)主控制器送來的有關(guān)控制信號(hào),實(shí)現(xiàn)5分鐘、10分鐘和鐘的洗滌時(shí)間控制。其輸入和輸出信號(hào)分別如下。(1) 輸入信號(hào):s5minns10min_ins

5、15m in_instart_inresetsysclk(2) 輸出信號(hào): timer_on_ou :定時(shí)有效; timer_down_out :定時(shí)至U。4. 水流控制器水流控制器根據(jù)主控制器輸出的強(qiáng)、標(biāo)準(zhǔn)、輕柔控制信號(hào)產(chǎn)生不同的水流控制周期,控制洗衣機(jī)電機(jī)的工作,其輸入和輸出信號(hào)分別如下。(1)輸入信號(hào):jnb_inz_insysclkclk_01timer_dow nresettimer on(2)輸出信號(hào):off_out :電機(jī)斷開控制信號(hào)輸出;on_out :電機(jī)接通控制信號(hào)輸出。三、洗衣機(jī)洗滌控制電路的算法狀態(tài)機(jī)圖描述1.主控制器算法狀態(tài)機(jī)圖描述根據(jù)主控制器的工作要求,洗衣機(jī)洗滌時(shí)

6、的工作狀態(tài)共有以下9種:Ys 5 min/set 5 min是否 有效?*t N set_j J0標(biāo)準(zhǔn)-15分鐘標(biāo)準(zhǔn)-10分鐘標(biāo)準(zhǔn)-5分鐘輕柔-15分鐘輕柔-10分鐘輕柔-5分鐘強(qiáng)洗一-15分鐘強(qiáng)洗一-10分鐘強(qiáng)洗一5分鐘reset主控制器算法狀態(tài)機(jī)圖(a)模式選擇控制狀態(tài)機(jī)圖;(b)定時(shí)選擇控制狀態(tài)機(jī)圖復(fù)位后進(jìn)入標(biāo)準(zhǔn)洗滌模式,并輸出set_b標(biāo)準(zhǔn)模式狀態(tài)信號(hào)。接著判斷定時(shí)結(jié)束timer_down是否有效。如果有效,則表明洗滌結(jié)束,set_b置“ 0回到標(biāo)準(zhǔn)模式狀態(tài);如果無效,則判別模式選擇按鍵是否按下。如果未按下,則仍處于標(biāo)準(zhǔn)狀態(tài);如果已按下,則進(jìn)入 輕柔狀態(tài)。通過類同的操作和判別,該狀態(tài)機(jī)

7、圖可在標(biāo)準(zhǔn)、輕柔、強(qiáng)洗三種模式下循環(huán)選擇和工作,并送出相應(yīng)的狀態(tài)信號(hào)。2) 定時(shí)選擇控制狀態(tài)機(jī)圖定時(shí)選擇控制狀態(tài)機(jī)圖如10-19(b)所示。其結(jié)構(gòu)與模式選擇控制狀態(tài)機(jī)圖一致,所不同的僅僅是狀態(tài)名、狀態(tài)輸出信號(hào)及引起狀態(tài)轉(zhuǎn)換的按鍵信號(hào)。圖中的3個(gè)狀態(tài)分別為s_5 min、s_10 min、s_15 min。 3 個(gè)狀態(tài)輸出信號(hào)分別為set_5min、set_10min、set_15min。按鍵輸入信號(hào)為timer_sel。3) 啟/??刂扑惴顟B(tài)機(jī)圖描述主控制器還要產(chǎn)生啟/停控制信號(hào),啟/??刂扑惴顟B(tài)機(jī)圖如下圖所示。上圖中只有 2種狀態(tài):停止?fàn)顟B(tài)和啟動(dòng)狀態(tài)。系統(tǒng)復(fù)位時(shí)進(jìn)入停止?fàn)顟B(tài)s_stop,

8、當(dāng)start_stop按鍵按下時(shí),則狀態(tài)轉(zhuǎn)移至啟動(dòng)狀態(tài)s_start,并送出啟動(dòng)控制信號(hào) start (start=1)。再按一下start_stop鍵,狀態(tài)又能回停止?fàn)顟B(tài),start控制信號(hào)置0”,暫停洗滌工作。再按一次start_stop按鍵,系統(tǒng)又回到啟動(dòng)狀態(tài)。這樣,根據(jù)需要可人為地暫?;騿?dòng)洗衣機(jī)工 作。2 洗滌定時(shí)器算法狀態(tài)機(jī)圖描述洗滌定時(shí)器算法狀態(tài)機(jī)圖如圖10-21所示。洗滌定時(shí) 器有 3種狀態(tài):停止 狀態(tài)(IDLE)、計(jì)時(shí)狀態(tài)(INCCOUNT)和暫 停狀態(tài) (TMP_STOP)。系統(tǒng)復(fù)位后就進(jìn)入停止?fàn)顟B(tài) (IDLE)。在停止?fàn)顟B(tài)下不斷判別啟動(dòng)信號(hào) start是否為“1” 如果為

9、“ 1,表明啟動(dòng)鍵已按下,定時(shí)器開始工作,timer_on標(biāo)志置“ 1;轉(zhuǎn)移的下一個(gè)狀態(tài)為計(jì)數(shù)狀態(tài);否則仍留在停止?fàn)顟B(tài)。在計(jì)時(shí)狀態(tài)下(INCCOUNT),先要判別啟動(dòng)信號(hào)是否仍為“1。前面已經(jīng)提到,啟/停按鍵是一個(gè)乒乓按鍵,按一次啟/停按鍵使start輸出狀態(tài)轉(zhuǎn)換一次。如果復(fù)位后按一下啟/停按鍵,使start= “1”則定時(shí)器開始進(jìn)行定時(shí)計(jì)數(shù)。如果再按一次啟/停按鍵就會(huì)使start= “0”定時(shí)器就處于暫時(shí)停止?fàn)顟B(tài),定時(shí)計(jì)數(shù)值將被保留。如再按一次啟/停鍵,洗滌定時(shí)器繼續(xù)啟動(dòng),在原有計(jì)時(shí)值上進(jìn)行計(jì)時(shí)。如果在計(jì)時(shí)狀態(tài)下發(fā)現(xiàn) start= “0”定時(shí)器就進(jìn)入暫停狀態(tài) (temp_stop),同時(shí)ti

10、mer_on置“ 0,定時(shí)器停止計(jì)數(shù)。在暫停狀態(tài)下,繼續(xù)判別start信號(hào)。如果start= “0,則仍留在暫停狀態(tài);如果 start=“ 1 ”表明定時(shí)器再啟動(dòng),timer_on= “ 1,狀態(tài)將轉(zhuǎn)移至計(jì)時(shí)狀態(tài)。在計(jì)時(shí)狀態(tài)下,如果start= “1”接著就判別分時(shí)鐘上升沿是否到來 s1min。如果未到來, 則仍停留在計(jì)時(shí)狀態(tài);若分時(shí)鐘的上升沿到來了, 分計(jì)數(shù)器就進(jìn)行加1操作。接著判斷是否 到了指定的定時(shí)計(jì)時(shí)值(定時(shí)計(jì)數(shù)值只有 3種:5分鐘、10分鐘和15分鐘)。如果未到計(jì)時(shí)Timer_on= “ 0, timer_down= “ 1”值,仍停留在計(jì)時(shí)狀態(tài);如果到了計(jì)時(shí)值,則停止計(jì)時(shí), cou

11、nt= “ OOO0”tart=; 0”態(tài)轉(zhuǎn)移至停止?fàn)顟B(tài)。3 水流控制器算法狀態(tài)機(jī)圖描述OFF timer廠 on_count J0 off_co unt J0v set on jfon _timer廣 off_down jf!set_off J0 set_on _off_count廣 on_down jf 飛set_off jf set_on j0 on count該狀態(tài)機(jī)圖有 3種狀態(tài):停止?fàn)顟B(tài)(STOP)、電機(jī)接通定時(shí)計(jì)數(shù)狀態(tài) (ON_TIME)和電機(jī) 斷開定時(shí)計(jì)數(shù)狀態(tài)(OFF_TIME)。系統(tǒng)復(fù)位后進(jìn)入停止?fàn)顟B(tài),接著判斷洗滌定時(shí)器是否啟動(dòng)(timer_on=1)。如果未啟動(dòng),則仍停留在

12、停止?fàn)顟B(tài);如果已啟動(dòng),則判別當(dāng)前是處在電機(jī)接通定時(shí)計(jì)數(shù)狀態(tài),還是電機(jī)處在斷開定時(shí)計(jì)數(shù)狀態(tài)。根據(jù)設(shè)置不同,轉(zhuǎn)入相應(yīng)的狀態(tài):ON_TIME或OFF_TIME。在ON_TIME狀態(tài)下,判別timer_on是否繼續(xù)為“ 1”因?yàn)橄礈爝^程有可能暫停 )。如果為 “ 1,再判別0.1秒時(shí)鐘clk_01的上升沿是否到來。如果未到來,則停留在on_timer狀態(tài);如果已到來,則電機(jī)接通定時(shí)計(jì)數(shù)器加1(count_on=count_on+1)。下面要判別定時(shí)計(jì)數(shù)值是否到規(guī)定時(shí)間值:強(qiáng) 洗 counton_u = 5 秒標(biāo)準(zhǔn)洗 counton_u = 3.5 秒輕柔洗 counton_u = 2.5 秒 在未到規(guī)

13、定計(jì)數(shù)值時(shí), 返回 on_time 狀態(tài)繼續(xù)進(jìn)行定時(shí)計(jì)數(shù); 當(dāng)計(jì)數(shù)到規(guī)定的定時(shí)值時(shí), 就使 cnton_clk 、 clron 、 cntoff_inc 、 setoff 置“ 1”,接著狀態(tài)轉(zhuǎn)移至電機(jī)斷開定時(shí)計(jì)數(shù)狀 態(tài) off_timer 。在 on_time 狀態(tài)下,如果發(fā)現(xiàn) timer_on 為 “ 0”,表明洗滌定時(shí)過程結(jié)束,對(duì)水流控制器 進(jìn)行初始化,然后進(jìn)入停止?fàn)顟B(tài)。電機(jī)斷開的定時(shí)計(jì)數(shù)狀態(tài)的工作過程與電機(jī)接通定時(shí)計(jì)數(shù)工作過程類同, 請(qǐng)讀者自行閱 讀。下面對(duì)標(biāo)志量的含義作一說明 :set on=1tclro n=1tsetoff=1tcnton_inc=1tcntoff_inc=1t四

14、、洗衣機(jī)洗滌控制電路的on_out=1; on_out=0; off_out=1 ; count_on+1 ; count_off+1 ; VHDL 語言描述1主分頻器 timectr_clkdiv 模塊主分頻器的功能是將 76 800 Hz 的主頻分頻為 10 Hz 的時(shí)鐘。該模塊由 3個(gè)進(jìn)程組成, 其 VHDL 語言描述的程序清單如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY timectr_clkdiv ISPORT( sysclk:IN STD_LOGIC; clk_0

15、1:OUT STD_LOGIC);END timectr_clkdiv;ARCHITECTURE rtl OF timectr_clkdiv ISSIGNAL div1:STD_LOGIC_VECTOR(3 DOWNTO 0):=0000; - divide by 256 counterSIGNAL div2:STD_LOGIC_VECTOR(7 DOWNTO 0):=00000000; - divide by 10 counterSIGNAL div3:STD_LOGIC_VECTOR(1 DOWNTO 0):=00;- divide by 3 counterSIGNAL clk1 , cl

16、k2:STD_LOGIC;BEGIN div_10:PROCESS(clk1)BEGINIF(clk1EVENT AND clk1=1) THENIF(div1=1001) THEN div1=0000; ELSE div1=div1+1;END IF;END IF;END PROCESS;clk2=div1(3);div_256:PROCESS(sysclk)BEGINIF(sysclkEVENT AND sysclk=1) THEN div2=div2+1;END IF;END PROCESS;clk1=div2(7); -select baud rate div_3:PROCESS(cl

17、k2)BEGINIF(clk2EVENT AND clk2=1) THENIF(div3=10) THEN div3=00;ELSE div3=div3+1;END IF;END IF;END PROCESS; clk_01=div3(1); END rtl;Div_10進(jìn)程為10分頻進(jìn)程,div_256進(jìn)程為256分頻進(jìn)程,div_3是3分頻進(jìn)程。76 800 Hz 主頻經(jīng)該 3 個(gè)進(jìn)程 串行分頻就得到 10 Hz 的時(shí)鐘 clk_01 。2定時(shí)器控制 timer_ctr 模塊如前所述,定時(shí)器控制timer_ctr模塊的功能是根據(jù)啟/停按鍵(start_stop)、模式選擇按鍵 (mode_

18、sel)和定時(shí)選擇按鍵(time_sel)的不同輸入狀態(tài),產(chǎn)生對(duì)應(yīng)的控制信號(hào)輸出,其VHDL語言描述的程序清單如下。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY timer_ctr ISPORT(reset, sysclk, start_stop, mode_sel, time_sel, timer_down:IN STD_LOGIC; s5min_out, s10min_out, s15min_out, start_out:OUT STD_LOGIC;b_out, j_out, z_o

19、ut:OUT STD_LOGIC);END timer_ctr;ARCHITECTURE rtl OF timer_ctr ISTYPE state1TYPE IS (s_b , s_z, s_j);TYPE state2TYPE IS (s_15min , s_10min, s_5min);TYPE state3TYPE IS (s_start , s_stop);SIGNAL state1 , nextstate1:state1TYPE;SIGNAL state2 , nextstate2:state2TYPE;SIGNAL state3 , nextstate3:state3TYPE;S

20、IGNAL start_stop_rising , start_stop_dlayed, setstart, clrstart:STD_LOGIC;SIGNAL mode_sel_dlayed , modesel_rising , time_sel_dlayed , timesel_rising ,timer_down_rising:STD_LOGIC;SIGNAL set_5min , set_10min, set_15min, start, set_b, set_j, set_z,timer_down_dlayed:STD_LOGIC;BEGINmodesel_rising=mode_se

21、l AND (NOT mode_sel_dlayed); timesel_rising=time_sel AND (NOT time_sel_dlayed); start_stop_rising=start_stop AND (NOT start_stop_dlayed); mode_ctr:PROCESS(modesel_rising , state1, timer_down) BEGINset_b=0;set_j=0;set_z set_b=1;IF(timer_down=1) THEN set_b=0;nextstate1=s_b; ELSIF(modesel_rising=0) THE

22、N nextstate1=s_b;ELSEset_b=0;nextstate1 set_z=1;IF(timer_down=1) THEN set_z=0;nextstate1=s_b; ELSIF(modesel_rising=0) THEN nextstate1=s_z;ELSEset_z=0;nextstate1 set_j=1;IF(timer_down=1) THEN set_j=0;nextstate1=s_b;ELSIF(modesel_rising=0) THEN nextstate1=s_j;ELSEset_j=0;nextstate1=s_b;END IF;END CASE

23、;END PROCESS;time_ctr:PROCESS(timesel_rising , state2, timer_down)BEGINset_15min=0; set_10min=0;set_5min set_15min=1;IF(timer_down=1) THEN set_15min=0;nextstate2=s_15min; ELSIF(timesel_rising=0) THEN nextstate2=s_15min;ELSE nextstate2 set_10min=1;IF(timer_down=1) THEN set_10min=0;nextstate2=s_15min;

24、 ELSIF(timesel_rising=0) THEN nextstate2=s_10min;ELSE nextstate2 set_5min=1;IF(timer_down=1) THEN set_5min=0;nextstate2=s_15min;ELSIF(timesel_rising=0) THEN nextstate2=s_5min; ELSEnextstate2=s_15min;END IF;END CASE;END PROCESS; timer_down_rising=timer_down AND (NOT timer_down_dlayed);start_ctr:PROCE

25、SS(start_stop_rising , state3, timer_down)BEGIN setstart=0;clrstartIF(start_stop_rising=1) THEN nextstate3=s_start;setstart=1; ELSEnextstate3=s_stop;clrstartIF(timer_down_rising=1) THEN clrstart=1;nextstate3=s_stop; ELSIF(start_stop_rising=1) THEN nextstate3=s_stop;clrstart=1;ELSE nextstate3=s_start

26、;END IF;END CASE;END PROCESS; time_ctr_update:PROCESS(reset,sysclk ,timer_down_rising)BEGINIF(reset=0) THEN state1=s_b; state2=s_15min; state3=s_stop;start_stop_dlayed=0;ELSIF(sysclkEVENT AND sysclk=1) THEN state1=nextstate1;state2=nextstate2;state3=nextstate3;IF(set_b=1) THEN b_out=1;ELSE b_out=0;E

27、ND IF;IF(set_z=1) THEN z_out=1;ELSE z_out=0;END IF;IF(set_j=1) THEN j_out=1;ELSE j_out=0;END IF;IF(set_15min=1) THEN s15min_out=1;ELSE s15min_out=0;END IF;IF(set_10min=1) THEN s10min_out=1;ELSE s10min_out=0;END IF;IF(set_5min=1) THEN s5min_out=1;ELSE s5min_out=0;END IF; IF(timer_down_rising=1) THEN

28、start_out=0;ELSIF(clrstart=1) THEN start_out=0;ELSIF(setstart=1) THEN start_out=1;END IF; mode_sel_dlayed=mode_sel; time_sel_dlayed=time_sel; start_stop_dlayed=start_stop; timer_down_dlayed=timer_down;END IF;END PROCESS;END rtl;該模塊由 4 個(gè)進(jìn)程組成。 mode_ctr 進(jìn)程是模式選擇控制進(jìn)程,對(duì)應(yīng)圖 10-19(a) 的模式選 擇控制狀態(tài)機(jī)圖; timer_cnt

29、進(jìn)程是定時(shí)選擇控制進(jìn)程, 對(duì)應(yīng)圖 10-19(b) 的定時(shí)選擇控制狀態(tài) 機(jī)圖;start_ctr進(jìn)程是啟/??刂七M(jìn)程,對(duì)應(yīng)圖10-20的啟/??刂扑惴顟B(tài)機(jī)圖;最后一個(gè)進(jìn) 程是 time_ctr_update 進(jìn)程, 它的功能是根據(jù)上述 3 個(gè)進(jìn)程中不同的控制標(biāo)志輸出, 在該進(jìn)程 中對(duì)輸出控制信號(hào)進(jìn)行刷新, 其刷新頻率為系統(tǒng)主時(shí)鐘頻率 (76 800 Hz) ,這樣就可確??刂?的精度。3定時(shí)器 timer_count 模塊定時(shí)器 timer_count 模塊的功能是根據(jù)定時(shí)控制輸出,對(duì)洗衣機(jī)的洗滌時(shí)間進(jìn)行定時(shí)控 制。它由 3 個(gè)進(jìn)程構(gòu)成,其 VHDL 語言描述的程序清單如下:LIBRARY

30、IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY timer_count ISPORT(reset, sysclk , clk_01 , time_sel:IN STD_LOGIC; s5min_in , s10min_in ,s15min_in , start_in:IN STD_LOGIC; timer_down_out , timer_on_out:OUT STD_LOGIC);END timer_count;ARCHITECTURE rtl OF timer_count ISCOMPONENT

31、 cnt10a1PORT(reset,clk:IN STD_LOGIC; carry:OUT STD_LOGIC);END COMPONENT;COMPONENT cnt60aPORT(reset,clk:IN STD_LOGIC;ca60:OUT STD_LOGIC);END COMPONENT;TYPE stateTYPE IS (IDLE ,INCOUNT , TMP_STOP);SIGNAL state , nextstate:stateTYPE;SIGNAL set_timer_on , set_timer_down , ca10, s1min , s1min_dlayed , s1

32、min_rising , count_inc , count_clr:STD_LOGIC;SIGNAL time_sel_dlayed ,time_sel_rising , setdown , clrdown , seton, clron , timer_on , timer_down , timer_down_dlayed ,timer_down_rising ,start1,reset1,clk_01_s:STD_LOGIC;SIGNAL count ,count_u:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN s1min_rising=s1min AND (NO

33、T s1min_dlayed); time_sel_rising=time_sel AND (NOT time_sel_dlayed); timer_down_rising=timer_down AND (NOT timer_down_dlayed); count_ctr:PROCESS(s1min_rising , state, start_in , count)BEGIN setdown=0;clrdown=0;seton=0;clron=0;count_inc=0;count_clrclrdown=1;IF(start_in=1 AND timer_down=0) THEN seton=

34、1;nextstate=INCOUNT;ELSE clron=1;nextstateIF(start_in=0) THEN clron=1;nextstate=TMP_STOP;ELSEIF(s1min_rising=1) THENIF(count/=count_u) THEN count_inc=1;nextstate=INCOUNT;ELSE clron=1; setdown=1; count_clr=1; nextstateIF(start_in=1) THEN nextstate=INCOUNT;seton=1;ELSE nextstate=TMP_STOP;END IF;END CA

35、SE;END PROCESS;update:PROCESS(reset, sysclk)BEGINIF(reset=0 AND (NOT timer_down)=0) THEN state=IDLE;s1min_dlayed=0;time_sel_dlayed=0; count=0000;ELSIF(sysclkEVENT AND sysclk=1) THEN state=nextstate;IF(seton=1) THEN timer_on=1;ELSIF(clron=1) THEN timer_on=0;END IF; IF(clrdown=1) THEN timer_down=0;ELS

36、IF (setdown=1) THEN timer_down=1;END IF;IF(count_inc=1) THEN count=count+1;ELSIF(count_clr=1) THEN count=0000;END IF; s1min_dlayed=s1min;time_sel_dlayed=time_sel; timer_down_dlayed=timer_down;END IF; timer_down_out=timer_down ;timer_on_out=timer_on; END PROCESS;INIT:PROCESS(reset , time_sel_rising ,

37、 timer_down_rising)BEGINIF(reset=0 or timer_down_rising=1) THEN count_u=1110;ELSIF(time_sel_risingEVENT AND time_sel_rising=1) THEN IF(s15min_in=1) THEN count_u=1001;ELSIF(s10min_in=1) THEN count_u=0100; ELSIF(s5min_in=1) THEN count_u=1110; END IF;END IF;END PROCESS;clk_01_s=clk_01 AND start_in; res

38、et1=reset AND (NOT timer_down);u0:cnt10a1 PORT MAP(reset1 , clk_01_s , ca10);u1:cnt60a PORT MAP(reset1 , ca10, s1min);END rtl;count_cnt 進(jìn)程是定時(shí)計(jì)時(shí)進(jìn)程,根據(jù)定時(shí)選擇所確定的定時(shí)時(shí)間進(jìn)行計(jì)時(shí)控制,它對(duì)應(yīng)于圖10-21的洗滌定時(shí)算法狀態(tài)機(jī)圖。update進(jìn)程是一個(gè)刷新進(jìn)程,它根據(jù)count_ctr進(jìn)程的輸出控制標(biāo)志,對(duì)輸出控制信號(hào)進(jìn)行刷新。 INIT 進(jìn)程是對(duì)本次定時(shí)器賦初值的進(jìn)程。定 時(shí)器根據(jù)所賦初值的時(shí)間,實(shí)現(xiàn)洗滌時(shí)間的控制。在 timer_count 清

39、單中還含有 10 分頻器和 60 分頻器元件,這主要是為在本模塊中得到 分時(shí)鐘 s1min。4水流周期控制 timeronoff_ctr 模塊 水流周期控制 timeronoff_ctr 模塊的功能是控制洗滌電機(jī)的通斷時(shí)間,不同的洗滌模式 有不同的通斷時(shí)間要求。 Timeronoff_ctr 模塊由 3 個(gè)進(jìn)程組成,其 VHDL 語言描述的程序清 單如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY timeronoff_ctr ISPORT(reset, sysclk , clk

40、_01 , j_in, b_in, z_in, timer_on , timer_down:IN STD_LOGIC; off_out , on_out:OUT STD_LOGIC);END timeronoff_ctr;ARCHITECTURE rtl OF timeronoff_ctr ISCOMPONENT cnt5aPORT(reset, clk:IN STD_LOGIC; carry:OUT STD_LOGIC);END COMPONENT;TYPE stateTYPE IS (on_time , off_time , STOP);SIGNAL state , nextstate:s

41、tateTYPE;SIGNAL seton , clron , setoff , clroff ,s05, s05_dlayed, s05_rising , reset1,cnton_inc , cnton_clr , cntoff_inc , cntoff_clr:STD_LOGIC;SIGNAL count_on ,count_off ,counton_u ,countoff_u:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINs05_rising=s05 AND (NOT s05_dlayed); onoffcnt_ctr:PROCESS(s05_rising , s

42、tate, timer_on , count_on, count_off)BEGINseton=0;clron=0;setoff=0;clroff=0; cnton_inc=0;cnton_clr=0;cntoff_inc=0;cntoff_clrIF(timer_on=1) THENIF(cntoff_inc=1) THEN nextstate=off_time;setoff=1;ELSE nextstate=on_time;seton=1;END IF;ELSEnextstateIF(timer_on=0) THEN cnton_clr=1;nextstate=STOP;ELSEIF(s0

43、5_rising=1) THENIF(count_on/=counton_u) THEN nextstate=on_time;cnton_inc=1;ELSEcnton_clr=1;clron=1;cntoff_inc=1;setoff=1;nextstate=off_time;END IF;ELSEnextstateIF(timer_on=0) THEN nextstate=stop;clron=1;clroff=1;ELSEIF(s05_rising=1) THENIF(count_off/=countoff_u) THEN nextstate=off_time;cntoff_inc=1;

44、ELSEcntoff_clr=1;clroff=1;seton=1;cnton_inc=1;nextstate=on_time;END IF;ELSE nextstate=off_time;END IF;END IF;END CASE;END PROCESS;INIT:PROCESS(j_in , b_in,z_in)BEGINIF(j_in=1) THEN counton_u=1010; countoff_u=0100;ELSIF(b_in=1) THEN counton_u=0111;countoff_u=0011;ELSIF(z_in=1) THEN counton_u=0101;cou

45、ntoff_u=0100;END IF;END PROCESS;update:PROCESS(reset1, sysclk)BEGINIF(reset1=0) THEN state=stop;s05_dlayed=0;count_on=0000;count_off=0000;ELSIF(sysclkEVENT AND sysclk=1) THENstate=nextstate;IF(seton=1) THEN on_out=1;ELSIF(clron=1) THEN on_out=0;END IF;IF(setoff=1) THEN off_out=1;ELSIF (clroff=1) THE

46、N off_out=0;END IF;IF(cnton_inc=1) THENcount_on=count_on+1;ELSIF(cnton_clr=1) THEN count_on=0000;END IF;IF(cntoff_inc=1) THENcount_off=count_off+1;ELSIF(cntoff_clr=1) THEN count_off=0000;END IF;s05_dlayed=s05;END IF;END PROCESS;reset1=reset AND (NOT timer_down);u0:cnt5a PORT MAP(reset1 , clk_01 , s0

47、5);END rtl;Onoffcnt_ctr 進(jìn)程根據(jù)洗滌模式要求,對(duì)輸出通斷進(jìn)行定時(shí)控制,其對(duì)應(yīng)的狀態(tài)機(jī)圖如 圖 10-22 所示。 INIT 進(jìn)程根據(jù)不同洗滌模式對(duì)通斷進(jìn)行初始化,以實(shí)現(xiàn)通斷的定時(shí)控制。 初始化的定時(shí)值以 0.5秒為1個(gè)單位進(jìn)行設(shè)置。最后一個(gè)進(jìn)程為刷新進(jìn)程update,它根據(jù)onoff_ctr 進(jìn)程控制標(biāo)志的輸出,對(duì)控制輸出信號(hào)進(jìn)行刷新操作。在該模塊中還有一個(gè) 5 分頻元件,它對(duì) 0.1 秒時(shí)鐘 clk_01 進(jìn)行分頻,得到 0.5 秒的時(shí)鐘S05,作為通斷定時(shí)器的計(jì)時(shí)定時(shí)脈沖。5洗滌定時(shí)控制電路 timer_sum 模塊洗滌定時(shí)控制電路 timer_Sum 模塊是將上述 4 個(gè)模塊按結(jié)構(gòu)化形式連接起來的 整體系統(tǒng)模塊,它實(shí)現(xiàn)了 10.2.1 節(jié)所提出的洗滌控制電路的功能,其 VHDL 語言描述的程 序清單如下: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY timer_Sum ISPORT(reSet, clk, Start_Stop, mode_Sel, time_Sel:IN STD_LOGIC;p_out, m_out, on_out , off_out , Start_out , timer_down_out ,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論