九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

數(shù)字電路課程設(shè)計:基于FPGA和VHDL語言的洗衣機(jī)控制系統(tǒng)設(shè)計

  • 資源ID:116503434       資源大小:369.50KB        全文頁數(shù):16頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

數(shù)字電路課程設(shè)計:基于FPGA和VHDL語言的洗衣機(jī)控制系統(tǒng)設(shè)計

08電氣8班 吳俊 學(xué)號:20080711121數(shù)字電路課程設(shè)計題目:基于FPGA和VHDL語言的洗衣機(jī)控制系統(tǒng)設(shè)計 報告員:吳俊 20080711121 組員:彭亮,劉靖,鄭淑芳 日期:2010年12月 20日課題:洗衣機(jī)定時系統(tǒng)功能:1按內(nèi)定標(biāo)準(zhǔn)洗滌時間洗滌,脫水時間脫水; 2有預(yù)約洗衣功能,如:你預(yù)約1小時,則系統(tǒng)會在1小時后自動進(jìn)入洗滌狀態(tài); 3顯示屏上能實時顯示該機(jī)正處于何種狀態(tài)和該狀態(tài)下的時間; 4為該機(jī)設(shè)置了報警提示,及報警鈴聲控制時間; 5可以自己設(shè)定洗滌及脫水的時間; 6可以用于直接脫水; 7報警顯示;模塊分析:根據(jù)系統(tǒng)的設(shè)計要求,整個系統(tǒng)可分為鍵盤轉(zhuǎn)按鍵,洗衣機(jī)主控制器,LCD三個模塊。各個模塊的作用如下: 1鍵盤轉(zhuǎn)按鍵:將板上鍵盤變?yōu)?6個按鍵,從左上到右下,按鍵按下時,對應(yīng)輸出為1,松開為0 ,它用于洗衣機(jī)外端口的輸入; 2洗衣機(jī)主控制器:它是整個系統(tǒng)正常有序工作的核心,按設(shè)計要求產(chǎn)生相應(yīng)的控制邏輯,以控制其他各部分的協(xié)調(diào)工作; 3LCD:在LCD上按格式顯示4組兩位數(shù)碼 D0D3 從左至右,它用于顯示功能中要顯示的信息;設(shè)計要求1.分析設(shè)計任務(wù),擬定多種設(shè)計方案,根據(jù)當(dāng)時的制作條件,選定適合的方案繪制框圖和設(shè)計流程。2.設(shè)計各部分單元電路或編寫VHDL描述程序。3.對制作的電路進(jìn)行功能測試,分析各項技術(shù)指標(biāo);或?qū)υO(shè)計的電路進(jìn)行功能仿真,分析仿真波形。4.總結(jié)設(shè)計資料,但因包括原理電路、VHDL描述、仿真波形的設(shè)計報告,校驗并演示電路裝置。設(shè)計過程: 根據(jù)上述功能及要顯示的信息,我們分析得出10個狀態(tài),分別為s0(復(fù)位即等待命令,輸入),s1(輸入命令),s2(注水),s3(洗滌),s4(排水),s5(漂洗),s6(脫水),s7(報警響鈴計時),s8(預(yù)約計時),s9(結(jié)束,播放提示音計時)。相關(guān)模塊的程序:1主控系統(tǒng):LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity xiyiji is port (CPIN,R : IN STD_LOGIC; bgxh:IN STD_LOGIC; X_add_time: IN STD_LOGIC; X_minus_time:IN STD_LOGIC; start_1 : IN STD_LOGIC; start_2 : IN STD_LOGIC; T_MINUS_TIME: IN STD_LOGIC; T_ADD_TIME : IN STD_LOGIC; yuy_z_TIME : IN STD_LOGIC; xl_out: OUT STD_LOGIC; cp1_out: OUT STD_LOGIC; light: OUT STD_LOGIC; xi_yi_out: OUT STD_LOGIC_VECTOR(7 DOWNTO 0 ); liucsj_out: OUT STD_LOGIC_VECTOR(7 DOWNTO 0 ); zt_2_out: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); zt_1_out: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);end entity ;architecture JGT of xiyiji is TYPE STATES IS (S0,S1,S2,S3,S4,s5,s6,s7,s8,s9); SIGNAL s: STATES; SIGNAL xidi: STD_LOGIC_VECTOR(7 DOWNTO 0) ; SIGNAL TUOSHUI: STD_LOGIC_VECTOR(7 DOWNTO 0) ; SIGNAL PIAOXI: STD_LOGIC_VECTOR(7 DOWNTO 0) ; SIGNAL zhushui: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL PAISHUI:STD_LOGIC_VECTOR(7 DOWNTO 0); signal yuyue:std_logic_vector(7 downto 0); SIGNAL xlsj:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL xiyi:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL bgsj:STD_LOGIC_VECTOR(7 DOWNTO 0); signal zt1: std_logic_vector(7 downto 0); signal zt2: std_logic_vector(7 downto 0); signal liucsj: std_logic_vector(7 downto 0); SIGNAL xl: STD_LOGIC; SIGNAL cishu:integer range 0 to 5; signal cp:std_logic;beginPROCESS(CPIN,R)BEGINIF R=1 THEN S=S0; xidi=00000100;tuoshui=00000011;piaoxi=00000100;zhushui=00000011; PAISHUI=00000011;bgsj=00000010;xlsj=00000010; xl=0;cishu=2; yuyue=00000000; light=1; zt1=00010011; -輸入-s zt2=00010010; -rELSIF CPIN=1 AND CPINEVENT THEN if s=s0 or s=s1 then xiyi=00000000; else xiyiS if bgxh=1 then zt1=00000010; -報警-b zt2=00001010; -j s= s7; elsif x_add_time=1then zt1=00011000; -洗滌加時-x zt2=00011010; -z xidi=xidi+1; if xidi=00011110 then xidi=00011110; end if; elsif x_minus_time=1then zt1=00011000; -洗滌減 -x zt2=00001010; -j xidi=xidi-1; if xidi=00000000 then xidi=00000000; end if; elsif T_add_time=1then zt1=00010100; -脫水加 -t zt2=00011010; tuoshui=tuoshui+1; if tuoshui=00011001 then tuoshui=00011001; end if; elsif T_minus_time=1then zt1=00010100; -脫水減 zt2=00001010; tuoshui=tuoshui-1; if tuoshui=00000000 then tuoshui=00000000; end if; elsif yuy_z_time=1then zt1=00011001; -預(yù)約加 zt2=00011010; yuyue=yuyue+1; if yuyue=00011001 then yuyue=00011001; end if; elsif start_1=1then if yuyue=00000000 then zt1=00011010;-注水 zt2=00010011; s=s2; Else zt1=00000100; -倒計時 zt2=00001010; s=s8; end if; elsif start_2=1then zt1=00010100; -脫水 zt2=00010011; s=s6;xidi=00000000;piaoxi=00000000;zhushui=00000000; PAISHUI if bgxh=1 then zt1=00000010; -報警-b zt2=00001010; s=s7; else IF zhushui=00000001 THEN zt1=00011000;-洗滌 zt2=00000100; S=S3; zhushui=00000000; else zhushui if bgxh=1 then zt1=00000010; -報警-b zt2=00001010; s=s7; else IF xidi=00000001 THEN zt1=00010000;-排水 zt2=00010011; s=s4; xidi=00000000; else xidiif bgxh=1 then zt1=00000010; -報警-b zt2=00001010; s=s7; else IF paishui=00000001 THEN zt1=00010000;-漂洗 zt2=00011000; s=s5; paishui=00000000; else paishui if bgxh=1 then zt1=00000010; -報警-b zt2=00001010; s=s7; elsIF piaoxi=00000001 THEN zt1=00010100; -脫水 zt2=00010011; s=s6; piaoxi=00000000; else piaoxi if bgxh=1 then zt1=00000010; -報警-b zt2=00001010; s=s7; elsIF tuoshui=00000001 THEN zt1=00001010; -洗完 zt2=00010011; S=s9; tuoshui=00000000; else tuoshui if bgsj=00000000 then xl=0;s=s0; else bgsj=bgsj-1; xl if bgxh=1 then zt1=00000010; -報警-b zt2=00001010; s=s7; elsIF yuyue=00000001 then zt1=00011010;-注水 zt2=00010011; yuyue=00000000; s=s2; else yuyue=yuyue-1; zt1=00000100; -倒計時 zt2 if cishu=0 then zt1=00010011; -輸入-s zt2=00010010; -r s=s1; elsif xlsj=00000000 then xlsj=00000001; xl=0;cishu=cishu-1; else xlsj=xlsj-1; xl s=s1; end case;end if;end process; process (xiyi,tuoshui,xl,zhushui,zt1,zt2,yuyue,xidi,piaoxi,paishui,liucsj,CPIN) begin if x_add_time=1or x_minus_time=1then liucsj=xidi; elsif T_add_time=1 or T_minus_time=1then liucsj=tuoshui; elsif yuy_z_time=1then liucsj00000000then liucsj00000000 then liucsj00000000then liucsj00000000 then liucsj00000000then liucsj00000000 then liucsj= tuoshui; elsif zhushui=00000000 and yuyue=00000000and xidi=00000000and paishui=00000000 and piaoxi=00000000 and tuoshui=00000000 then liucsj=00000000; end if; if xiyi 10 then xi_yi_out= xiyi; elsif xiyi20 then xi_yi_out=xiyi+6; elsif xiyi30 then xi_yi_out= xiyi+12; elsif xiyi40 then xi_yi_out=xiyi+18; elsif xiyi50 then xi_yi_out=xiyi+24; elsif xiyi60 then xi_yi_out=xiyi+30; elsif xiyi70 then xi_yi_out=xiyi+36; end if; if liucsj 10 then liucsj_out= liucsj; elsif liucsj20then liucsj_out =liucsj+6; elsif liucsj30 then liucsj_out =liucsj+12; elsif liucsj40 then liucsj_out = liucsj+18; elsif liucsj50 then liucsj_out = liucsj+24; elsif liucsj60 then liucsj_out = liucsj+30; elsif liucsj70 then liucsj_out = liucsj+36; end if; if xl=1 then xl_out=xl;cp1_out=CPIN; else xl_out=0;cp1_out=0; end if; zt_1_out=zt1; zt_2_out=zt2;end process ;end architecture jgt;-主控程序2鍵盤轉(zhuǎn)按鍵程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity PADTOKEY is port (CPIN,R :IN STD_LOGIC; Y: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); ICOL : IN STD_LOGIC_VECTOR(3 DOWNTO 0); OROW : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END ENTITY;architecture JGT of PADTOKEY is TYPE STATES IS (S0,S1,S2,S3,S4); SIGNAL S: STATES; SIGNAL SROW : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL CPCT : INTEGER RANGE 0 TO 255; SIGNAL CTDELAY: INTEGER RANGE 0 TO 511; SIGNAL CP:STD_LOGIC; BEGIN PROCESS(CPIN) BEGIN IF CPIN=1 AND CPIN EVENT THEN IF CPCT=255 THEN CPCT=0;CP= NOT CP; ELSE CPCT=CPCT+1; END IF; END IF; END PROCESS; PROCESS(CP,R) VARIABLE N:INTEGER RANGE 0 TO 12; BEGIN IF R=1 THEN S=S0;Y=0000000000000000;SROWSOROW=SROW;SSY(3 DOWNTO 0)Y(7 DOWNTO 4)Y(11 DOWNTO 8)Y(15 DOWNTO 12)NULL; END CASE; WHEN S3=IF N=12 THEN N:=0;S=S4;CTDELAY=0;SROW=1110; ELSE N:=N+4;S=S1;SROWIF CTDELAY=511 THEN S=S1;CTDELAY=0; ELSE CTDELAY=CTDELAY+1; END IF; END CASE;END IF;END PROCESS;END JGT;3LCD模塊程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity GENLCD8 is port (CPIN,R,BUSY :IN STD_LOGIC; xlxh :IN STD_LOGIC; xy_sj,lc_sj,zhuangt_1,zhuangt_2 :IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK,RST,STROBE,OUTLINE : OUT STD_LOGIC; DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ADDR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end entity ;architecture JGT of GENLCD8 is TYPE STATES IS (S0,S1,S2,S3,S4); SIGNAL S: STATES; SIGNAL LCDPT : INTEGER RANGE 0 TO 20; SIGNAL CPCT: INTEGER RANGE 0 TO 65535; SIGNAL CP: STD_LOGIC; SIGNAL D3: STD_LOGIC_VECTOR(7 DOWNTO 0);beginPROCESS(CPIN,R)BEGINCLK=CPIN;IF R=1 THEN CPCT=65535;ELSIF CPIN=1 AND CPIN EVENT THEN IF CPCT=0 THEN CPCT=65535;CP=NOT CP;-分頻為500US周期 ELSE CPCT=CPCT-1; END IF;END IF;END PROCESS;PROCESS(CP,R)-主進(jìn)程:擬采用500us時鐘,即在500us后完成狀態(tài)轉(zhuǎn)換,修改LCDPT指針BEGINIF R=1 THEN -S0:初始狀態(tài),在R=1時,處于S0狀態(tài),LCDPT=0 S=S0;LCDPT=0;RST S=S1;LCDPT=0;RST RST=0;STROBE=0;-輸出RST=0; IF BUSY=0 THEN-判斷BUSY=0? LCDPT=LCDPT+1;-:Y: LCDPT+1 IF LCDPT=7 THEN-LCDPT到固定最后? S=S3;-:Y: 轉(zhuǎn)S3 ELSe S S=S1;STROBE STROBE=0; IF BUSY=0 THEN-BUSY=0? IF LCDPT=14 THEN LCDPT=7; ELSe LCDPT=LCDPT+1; END IF; S STROBE=1;S NULL;- END CASE;END IF; END PROCESS;PROCESS(LCDPT,xlxh)-選擇輸出進(jìn)程(LCDPT)BEGINif xlxh=1 then D3=00010001; else D3 NULL;WHEN 1=DATA=00011000;ADDR=0010;OUTLINEDATA=00011001;ADDR=0001;OUTLINEDATA=00001100;ADDR=0110;OUTLINEDATA=00000011;ADDR=0101;OUTLINEDATA=00011010;ADDR=1010;OUTLINEDATA=00010100;ADDR=1001;OUTLINEDATA=0011&xy_sj(7 DOWNTO 4);ADDR=0011;OUTLINEDATA=0011&xy_sj(3 DOWNTO 0);ADDR=0010;OUTLINEDATA=0011&lc_sj(7 DOWNTO 4);ADDR=0110;OUTLINEDATA=0011&lc_sj(3 DOWNTO 0);ADDR=0101;OUTLINEDATA=zhuangt_1;ADDR=1010;OUTLINEDATA=zhuangt_2;ADDR=1001;OUTLINEDATA=0000&D3(7 DOWNTO 4);ADDR=1110;OUTLINEDATA=0000&D3(3 DOWNTO 0);ADDR=1101;OUTLINE NULL;END CASE;END PROCESS;ENDJGT;下板后具體模擬演示過程:-接通電源,按下復(fù)位鍵1,LCD上顯示如下: 報警狀態(tài)流程洗衣00ZTLCXY00SR0000-再按下5號鍵(x_add_time 代表洗衣時間在標(biāo)準(zhǔn)定值基礎(chǔ)上加一個單位時間,為實驗以觀察一個單位時間在這兒都是取值1個脈沖),則LC兩格下依次顯示05(表示洗衣時間在標(biāo)準(zhǔn)的基礎(chǔ)上加了一個單位時間);-再按下7號鍵(T_minus_time代表脫水時間在標(biāo)準(zhǔn)基礎(chǔ)上減一個單位時間),則LC兩格下依次03;-再按下6號鍵(yuy_z_time表示預(yù)約時間為一個單位時間),LC兩格下依次顯示01;-再按下3號鍵(start_1表示開始進(jìn)入洗衣狀態(tài));LC顯示預(yù)約時間倒計時01;ZT顯示DJ(倒計時);XY顯示18(整個洗衣過程的用時); 接著LCD上顯示的就是狀態(tài)之間的變化等.如下:ZTLCXY00ZSO31700XD051400PS030900PX030600TS030300JS020000RS0000當(dāng)ZT顯示JS時表示洗衣結(jié)束,LC顯示的是結(jié)束提示音的時間,洗衣時間XY顯示為00;當(dāng)提示音為00時狀態(tài)又轉(zhuǎn)到復(fù)位狀態(tài)即輸入(等待命令);與此操作類似的仿真圖如下:原理圖如下心得體會 在為期兩周的數(shù)字課程設(shè)計的時間里,我初步掌握了altium designer在硬件開發(fā)方面的應(yīng)用,并且學(xué)會了用VHDL語言進(jìn)行簡單的硬件程序描述,不僅開拓了自己的視野而且讓自己的邏輯思維更加敏捷與嚴(yán)謹(jǐn)。大家都清楚這個課程設(shè)計中老師管得較為寬松,而且老師讓我們自己設(shè)計的主要就是主控程序這一塊,所以一開始我們小組都不待見它,感覺應(yīng)該蠻容易就能完成了。基于這一點(diǎn)我們小組的課題拖了很久才定下來。雖然當(dāng)我來寫主控程序時感覺和C語言的有很多類似的地方,所以給我的錯覺是不是很難,可是當(dāng)我去機(jī)房仿真時發(fā)現(xiàn)了一些邏輯上的問題,這時我發(fā)現(xiàn)它與C語言還是有區(qū)別的。還有就是LCD,它是很實際性的器件,我自己仿真成功了,可就是下板子老是出來了信息。后來才知道對于LCD只有單獨(dú)下板子成功了才能表示LCD程序無誤,看其仿真波形無法判斷的。當(dāng)自己的作品順利顯示在FPGA開發(fā)板上的時候,才明白我們平時缺乏的是實踐能力,以至于在邏輯上還停留在理論上,唯有多加實踐,才能讓我們更加穩(wěn)固的掌握一門學(xué)科和技術(shù)。 16

注意事項

本文(數(shù)字電路課程設(shè)計:基于FPGA和VHDL語言的洗衣機(jī)控制系統(tǒng)設(shè)計)為本站會員(good****022)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!