基于FPGA的洗衣機(jī)控制器veriloghdl語言描述的設(shè)計(jì)與開發(fā)_第1頁
基于FPGA的洗衣機(jī)控制器veriloghdl語言描述的設(shè)計(jì)與開發(fā)_第2頁
基于FPGA的洗衣機(jī)控制器veriloghdl語言描述的設(shè)計(jì)與開發(fā)_第3頁
基于FPGA的洗衣機(jī)控制器veriloghdl語言描述的設(shè)計(jì)與開發(fā)_第4頁
基于FPGA的洗衣機(jī)控制器veriloghdl語言描述的設(shè)計(jì)與開發(fā)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、編號: 1GUILIN UNIVERSITY OF ELECTRONIC TECHNGLOtiY電機(jī)控制綜合課程設(shè)計(jì)報(bào)告書課題:基于FPGA的洗衣機(jī)控制器院(系):機(jī)電工程學(xué)院專業(yè):電氣工程及其自動化學(xué)生姓名:蔣岷君學(xué) 號: 0800120313題目類型:理論研究實(shí)驗(yàn)研究工程設(shè)計(jì)工程技術(shù)研究軟件幵發(fā)2011年7月6日、八 、亠刖言一、洗衣機(jī)控制器主要內(nèi)容1. 任務(wù)要求和內(nèi)容設(shè)計(jì)制作一個洗衣機(jī)的正反轉(zhuǎn)定時(shí)控制線路。1)控制洗衣機(jī)的電機(jī)作如下運(yùn)轉(zhuǎn)定時(shí)開始一一正轉(zhuǎn)10S暫停5S反轉(zhuǎn)10S暫停5S定時(shí)到停止f丨定時(shí)未到2)用2位七段數(shù)碼管顯示定時(shí)時(shí)間(S)。2. 洗衣機(jī)控制器的使用步驟: 電路上電后,

2、在Start撥碼開關(guān)未閉合前可以由UpKey和DownKey按鍵開關(guān) “ +” “- ”設(shè)置總的工作時(shí)間,確定洗衣機(jī)控制器工作允許時(shí)間。(2)設(shè)定好允許工作時(shí)間后,閉合Start開關(guān),洗衣機(jī)控制器開始工作。(3)可以看見指示正轉(zhuǎn)LED燈亮10s,停轉(zhuǎn)LED燈亮5S,反轉(zhuǎn)LED燈亮10s, 停轉(zhuǎn)LED亮5s,如此反復(fù)直至工作允許時(shí)間為 0,蜂鳴器發(fā)出警報(bào)。二、設(shè)計(jì)原理簡介洗衣機(jī)控制器的設(shè)計(jì)主要是時(shí)序控制和定時(shí)器的設(shè)計(jì),由一片F(xiàn)PGA和外圍電路構(gòu)成電器控制部分。FPGA接收鍵盤的控制命令,控制洗衣機(jī)的正轉(zhuǎn)、反 轉(zhuǎn)、停機(jī)和定時(shí)時(shí)間為0報(bào)警的工作狀態(tài)、控制并顯示工作狀態(tài)以及顯示定時(shí)時(shí) 間。對FPGA芯

3、片的編程采用模塊化的Verilog HDL (硬件描述語言)進(jìn)行設(shè)計(jì), 設(shè)計(jì)由分頻模塊,按鍵消抖模塊,定時(shí)時(shí)間自減模塊,時(shí)序中心控制模塊,數(shù)碼 管顯示模塊組成,頂層實(shí)現(xiàn)整個芯片的功能。頂層使用原理圖實(shí)現(xiàn),底層由Verilog HDL 語句實(shí)現(xiàn)。FPGA勺輸入時(shí)鐘為20M hz,因此使用了分頻模塊輸出1hz的方波給定時(shí)器 設(shè)定自減模塊提供每1s自減1的信號,定時(shí)器模塊輸出的自減值輸入給數(shù)碼管 顯示譯碼模塊和時(shí)序控制模塊,通過譯碼模塊定時(shí)器的值可以在數(shù)碼管上顯示, 同時(shí)定時(shí)器的值輸入到時(shí)序控制模塊由此可以控制洗衣機(jī)的正轉(zhuǎn)、反轉(zhuǎn)、停機(jī)和 報(bào)警工作方式。通過按鍵消抖模塊可以準(zhǔn)確無抖動的設(shè)定定時(shí)器的工作

4、時(shí)間目錄一、冃U言2二、目錄 3三、正文 43.1洗衣機(jī)控制器的整體框圖及原理 43.2 洗衣機(jī)控制電路單元模塊設(shè)計(jì)和仿真 5321按鍵消抖模塊的設(shè)計(jì)5322時(shí)鐘分頻模塊的設(shè)計(jì) 63.2.3定時(shí)器設(shè)定和自減模塊的設(shè)計(jì) 73.2.4時(shí)序中心控制模塊的設(shè)計(jì) 83.2.5數(shù)碼管顯示譯碼模塊的設(shè)計(jì) 9四、電路調(diào)試11五、結(jié)束語和心得體會 12六、參考文獻(xiàn)13七、附錄137.1 FPGA系統(tǒng)板部分原理圖 13157.2 FPGA 系統(tǒng)板 PCB 圖ou.Clo圖1-J I I、正文3.1洗衣機(jī)控制器的整體框圖及原理:由于輸入時(shí)鐘為20M hz,因此使用了分頻模塊輸出1hz的方波(中間上方模塊)給定時(shí)器設(shè)

5、定和自減模塊(中間下方模塊)提供每1s自減1的信號,定時(shí)器模塊輸出的自減值輸入給數(shù)碼管顯示譯碼模塊(右下方模塊)和時(shí)序控制模塊(右上模塊),通過譯碼模塊定時(shí)器的值可以在數(shù)碼管上顯示,同時(shí)定時(shí)器的值輸入到時(shí)序控制模塊由此可以控制洗衣機(jī)的正轉(zhuǎn)、反轉(zhuǎn)、停機(jī)和報(bào)警工作方式基于fpga的洗衣機(jī)控制器電路主要由五大模塊組成,分別為按鍵消抖模塊,時(shí)鐘分頻模塊,定時(shí)器設(shè)定和自減模塊,時(shí)序中心控制模塊,數(shù)碼管顯示譯碼模塊具體電路如圖1所示: / . - ! J4 w1 r ri 1_/懲榛哨抖模塊吋序中心控制模塊fttiSl"7riJSIi定吋器計(jì)定和自誠模決時(shí)鐘分頻模塊剛.亠亠.嚴(yán)裁匸數(shù)謁管曇示譯科

6、模塊IT弒ST!切科按鍵消抖模塊(左下方模塊)的作用是為了消除按鍵抖動而設(shè)立的3.2、洗衣機(jī)控制電路單元模塊設(shè)計(jì)和仿真321按鍵消抖模塊的設(shè)計(jì)在進(jìn)行獨(dú)立按鍵或者矩陣式按鍵的設(shè)計(jì)的時(shí)候,我們在按下鍵盤的時(shí)候其實(shí)并不只是按下去而是有一個抖動的過程,就連松手的過程也有抖動,然而這個抖動通常被人們所忽略,從而導(dǎo)致輸入數(shù)據(jù)的錯誤和亂碼,因此我們必須對按鍵進(jìn) 行按鍵的消抖處理。我們通常在單片機(jī)的消抖使用的是延時(shí)消抖,這種消抖也稱為軟件消抖,但是fpga的Verilog HDL語言是硬件描述語言,所以也稱作硬件 消抖,主要運(yùn)用了狀態(tài)機(jī)和延時(shí)的消抖方式。按鍵消抖模塊圖如圖2:g Key_moduleKey_i

7、n Key_outClkRst圖2 其Verilog HDL 語言描述如下: module Key_module (Key_i n,Key_out,Clk,Rst);in put Clk,Rst,Key_i n;output Key_out;reg Reset; reg H_L_f1;reg H_L_f2; reg H_L_f3;reg H_L_f4; reg 17:0 Cou nt; wire H_L_sig;parameter Delay10ms = 'd200_000;always (posedge Clk ) /異步復(fù)位同步釋放beg in Reset<=Rst; end

8、always (posedge Clk or n egedge Reset ) beginif(!Reset) begin H_L_f1<=1; H_L_f2<=1; end else begin H_L_f1<=Key_i n; H_L_f2<=H_L_f1; end endassign H_L_sig = H_L_f2 & (H_L_f1); /延時(shí)的啟動標(biāo)志位always (posedge Clk or n egedge Reset )beginif(!Reset)begi n Coun t<=0;e ndelse if(Co unt = Delay

9、10ms)begi n Coun t<=0; endelse if(H_L_sig) begi n Coun t<=0; endelse begi n Coun t<=Co un t+1; endendalways (posedge Clk or n egedge Reset)beg inif(!Reset) begin H_L_f3<=1; endelse if(Co unt = Delay10ms) beg in H_L_f3<=Key_i n; endendalways (posedge Clk or n egedge Reset )beg inif(!Re

10、set) begin H_L_f4<=1; endelse begin H_L_f4<=H_L_f3; endendassig n Key_out = H_L_f4 & (H_L_f3);en dmodule3.2.2時(shí)鐘分頻模塊的設(shè)計(jì)由于使用的FPGA的輸入時(shí)鐘是20M hz,定時(shí)模塊的自減頻率是1hz,因此需要進(jìn)行分頻得到1hz的時(shí)鐘頻率輸入給定時(shí)模塊。時(shí)鐘分頻模塊圖如圖3:時(shí)鐘分頻模塊功能仿真圖如圖4:十 F reqiue ncy D i vu d e r* EClk ClkOutRst;JF卒rj instIi卡圖3圖4其Verilog HDL 語言描述如下:mod

11、ule Freque ncyDivider(Clk,Rst,ClkOut);in put Clk,Rst; output ClkOut;reg 23:0 Count; reg OutData; reg Reset;always (posedge Clk ) /異步復(fù)位同步釋放beg in Reset<=Rst; endalways (posedge Clk or n egedge Reset)beg inif(!Reset) begin Count<=0; OutData<=0; endelse if(Cou nt=24'd10_000_000)begin Cou n

12、t<=0;OutData<=OutData; endelse beg in Coun t<=Co un t+1'd1; end endassig n ClkOut=OutData; en dmodule323定時(shí)器設(shè)定和自減模塊的設(shè)計(jì)定時(shí)器設(shè)定和自減模塊可以設(shè)定定時(shí)器的工作時(shí)間,通過輸入的1hz的信號使定時(shí)器的值每秒自減1,直至為0。其定時(shí)器的值輸出給數(shù)碼管譯碼模塊和時(shí) 序控制模塊。6:定時(shí)器設(shè)定和自減模塊圖如圖5;定時(shí)器設(shè)定和自減模塊功能仿真圖如圖豐 e YW * +壬十命=cii<RstStuartCik_ Ihz'Sstlir 0圖5其Verilo

13、g HDL 語言描述如下:module KeySet(Clk,Clk_1h z, Rst,Start,UpKey,Dow nKey,SetTimer);in put Clk,Clk_1h z,Rst,Start,UpKey,Dow nKey; output 6:0 SetTimer;reg 6:0 Timer; reg 6:0 rTimer; reg Reset;always (posedge Clk ) /異步復(fù)位同步釋放beg in Reset<=Rst; endalways (posedge Clk or n egedge Reset)beg inif(!Reset) begin

14、Timer<=7'd50;end / 定時(shí)時(shí)間賦初值else if(Start) beg in if(UpKey) beg in Timer<=Timer+1'b1; endelse if(Dow nKey) beg in Timer<=Timer-1'b1; end end/時(shí)間減 endalways (posedge Clk_1hz) /1s信號輸入beg in時(shí)間到0保持以免錯誤 每秒減一rTimer<=Timer; if(!Start) beg in if(rTimer=7'dO) begi n rTimer<=0; end

15、 / else beg in rTimer<=rTimer-1'b1; end end/ endassig n SetTimer=rTimer;en dmodule324時(shí)序中心控制模塊的設(shè)計(jì)時(shí)序控制模塊由定時(shí)器送來的值來控制洗衣機(jī)控制器的工作方式,正轉(zhuǎn)、反 轉(zhuǎn)、停轉(zhuǎn)和報(bào)警。時(shí)序中心控制模塊圖如圖7;時(shí)序中心控制模塊圖功能仿真如圖 8I L -/Ck 個 (Setlirerpoirdim19030SKIWMlWilfamram其Verilog HDL 語言描述如下:module Cen ter(Clk,Start,Rst,Forward,Back,Stop,Sou nd,SetT

16、imer);in put Clk,Start,Rst; in put 6:0SetTimer;output Back,Stop,So un d,Forward;reg rBack,rStop,rSound,rForward; reg 3:0 i; reg 1:0 j;reg 6:0 rSetTimer; reg 24:0 num; reg Reset;always (posedge Clk ) 異步復(fù)位同步釋放beg in Reset<=Rst; endalways (posedge Clk or n egedge Reset) beg inif(!Reset) begin rBack&

17、lt;=0; rStopv=0; rSou nd<=0;rForward<=0; rSetTimer<=0; i<=0; j<=0; num<=0; endelse if(!Start && SetTimer) begin /播下開始鍵并且倒計(jì)時(shí)不為 0 case(i) /01 正轉(zhuǎn) 10s4'd0: beg in rSetTimer<=SetTimer; rForward<=1'b1;rBack<=1'b0; rStop<=1'b0; rSound<=1'b0; i<

18、;=i+1'b1; end4'd1: begin if(SetTimer=rSetTimer-4'd10) begin i<=i+1'b1; end end4'd2: begin rSetTimer<=SetTimer; i<=i+1'b1;rForward<=1'b0; rBack<=1'b0; rStop<=1'b1; rSound<=1'b0; end /23 停機(jī) 5s4'd3: begin if(SetTimer=rSetTimer-3'd5) b

19、egin i<=i+1'b1; end end4'd4: beg in rSetTimer<=SetTimer; i<=i+1'b1; rForward<=1'b0; rBack<=1'b1; rStop<=1'b0; rSound<=1'b0; end /45反轉(zhuǎn) 10s4'd5: begin if(SetTimer=rSetTimer-4'd10) begin i<=i+1'b1; end end 4'd6: begin rSetTimer<=Set

20、Timer; i<=i+1'b1; rForward<=1'b0; rBack<=1'b0; rStop<=1'b1; rSound<=1'b0;end 67 停機(jī) 5s4'd7: beg in if(SetTimer=rSetTimer-3'd5) beg in i<=i+1'b1; end end 4'd8: begin i<=4'd0; end/倒計(jì)時(shí)不為 0,則循環(huán),回到 case 0 endcase endelse if(!SetTimer) begi n cas

21、e( j )2'd0: begin 倒計(jì)時(shí)為0時(shí)停機(jī)并報(bào)警1sif(n um=25'd20_000_000) begin j<=j+1'b1; endelse beg in num<=nu m+1'b1; rForward<=1'b0;rBack<=1'b0; rStop<=1'b1; rSound<=1'b1;end end2'd1: beg in rSoun d<=1'b0; end en dcase endendassign Forward=rForward; ass

22、ign Back=rBack;assign Stop=rStop; assign Sound=rSound;en dmodule325數(shù)碼管顯示譯碼模塊的設(shè)計(jì)數(shù)碼管顯示譯碼模塊主要功能是把定時(shí)器送來的值譯碼并通過數(shù)碼管顯示 出來。fpga的Verilog HDL硬件語言是并行的這有別于軟件的描述語言掃描方式 數(shù)碼管顯示譯碼模塊圖如圖9:d>.xI數(shù)碼管顯示譯碼模塊功能仿真圖如圖 10:、ClkQ L1fct Date in-1311001011001Dig outim00011010000Digjel111101r11111D1Illi110圖10其Verilog HDL 語言描述如下:

23、 module digital (Clk,Rst,Date_i n,Dig_sel,Dig_out);in put Rst,Clk; i nput 6:0 Date_i n; /MAX 99output 5:0 Dig_sel; output 7:0 Dig_out;reg 7:0 Display 0:9;/定義為 8 位,10 個地址reg 5:0 Led_sel; reg 7:0 Led_out; reg Reset;reg 20:0 Count; reg 9:0 rDate;parameter Time='d100_000;/ 并行掃描時(shí)間in itialbeg inCou nt

24、=0; rDate=0; Led_sel5:0='b111_111;Display0='b1100_0000; Display1='b1111_1001;Display2='b1010_0100; Display3='b1011_0000;Display4='b1001_1001; Display5='b1001_0010;Display6='b1000_0010; Display7='b1111_1000;Display8='b1000_0000; Display9='b1001_0000;endalwa

25、ys (posedge Clk )beg in Reset<=Rst; endalways (posedge Clk or n egedge Reset)begin if(!Reset) Cou nt<=0;else if(Co unt = Time) Coun t<=0;else Coun t<=Co un t+1; endalways ( posedge Clk or negedge Reset)/并行概念很重要begin /數(shù)碼管顯示rDate<=Date_in;/從wire上讀值過來賦給reg型變量提高數(shù)據(jù)的穩(wěn)定性 if(!Reset) beg in rD

26、ate<=0; endelse if(Cou nt>'d0 && Cou nt<='d50_000) begin Led_sel<='b111_110;Led_out<=DisplayrDate%10; end / 段選else begin Led_sel<='b111_101; Led_out<=DisplayrDate/10; endendassign Dig_sel = Led_sel;assign Dig_out = Led_out;endmodule四、電路調(diào)試1 定時(shí)器自減值與洗衣機(jī)控制器的正

27、轉(zhuǎn)、反轉(zhuǎn),停機(jī),報(bào)警在RTL仿真的時(shí)候是同步的,但是下載到硬件上運(yùn)行的時(shí)候出錯,不能同步。解決方法:反復(fù)的研究 Verilog HDL程序后發(fā)現(xiàn),開始是使用分頻器輸出的1hz的時(shí)鐘輸入給時(shí)序中心控制器模塊,而定時(shí)器模塊的時(shí)鐘是20M hz的,兩個模塊的時(shí)鐘不能同步, 因此就存在一定的延時(shí)不同步導(dǎo)致錯誤。 然后我把時(shí)序中心 控制模塊的時(shí)鐘也改為20M hz,讓兩個模塊的時(shí)鐘同步,定時(shí)器自減輸出的值 輸入到時(shí)序中心控制模塊作為時(shí)序控制的信號,問題順利解決。2程序在運(yùn)行的時(shí)有時(shí)候數(shù)碼管會顯示定時(shí)器的起始值,洗衣機(jī)控制器又重新 從頭開始運(yùn)行。解決方法: 研究硬件電路的設(shè)計(jì)發(fā)現(xiàn), 啟動工作控制開關(guān), 默

28、認(rèn)設(shè)置為了低電平 是不啟動的, 高電平啟動并保持才能使洗衣機(jī)控制器正常工作, 而在啟動后工作 中,電平出現(xiàn)不穩(wěn)的狀態(tài), 電平并不能很好的起到拉高的作用, 因此懷疑是上拉 能力不足和電源紋波的干擾, 導(dǎo)致電平的不穩(wěn)定性使洗衣機(jī)控制器有時(shí)復(fù)位。 隨 后我便在電源的輸出端并接一個 220uf 的電解電容和一個 0.1uf 的瓷片電容,再 用示波器測試發(fā)現(xiàn)紋波減少很多; 同時(shí)為了防止上拉能力不足導(dǎo)致錯誤, 我便把 啟動控制開關(guān)默認(rèn)設(shè)置為高電平, 低電平為啟動和保持。 然后再測試,問題解決。3使用按鍵修改定時(shí)器模塊的設(shè)定值時(shí),按一下按鍵,數(shù)據(jù)變化好幾次,不是 每按一次改變一個值。解決方法: 根據(jù)以往的經(jīng)驗(yàn)可以知道是因?yàn)榘存I沒有消抖所致

溫馨提示

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

評論

0/150

提交評論