EDA課程設(shè)計(jì)交通燈_第1頁(yè)
EDA課程設(shè)計(jì)交通燈_第2頁(yè)
EDA課程設(shè)計(jì)交通燈_第3頁(yè)
EDA課程設(shè)計(jì)交通燈_第4頁(yè)
EDA課程設(shè)計(jì)交通燈_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

年4月19日EDA課程設(shè)計(jì)交通燈文檔僅供參考可編程邏輯器件與VHDL課程設(shè)計(jì)基于VHDL的交通燈設(shè)計(jì)班級(jí):08級(jí)通信(1)班姓名:學(xué)號(hào):指導(dǎo)教師姓名:楊澤霖

摘要:伴隨著社會(huì)的發(fā)展以及人類生活水平的提高,汽車的數(shù)量在不斷增加,交通事業(yè)得以蓬勃發(fā)展,而隨之引起的安全問(wèn)題已經(jīng)不容忽視。EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域也在不斷的擴(kuò)大與深入,機(jī)械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學(xué)、軍事等各個(gè)領(lǐng)域的重要性日益突出。為了確保十字路口的行人和車輛順利,暢通的經(jīng)過(guò),往往采用電子控制的交通信號(hào)來(lái)進(jìn)行指揮。利用EDA技術(shù)設(shè)計(jì)交通燈來(lái)完成這個(gè)需求就顯的更加迫切,同樣也是非常的實(shí)用和合理。關(guān)鍵字:VHDL語(yǔ)言、交通燈、QuartusⅡ軟件、正文:一、系統(tǒng)分析與總體方案1系統(tǒng)分析經(jīng)過(guò)分析能夠知道,所要設(shè)計(jì)的十字路口交通燈控制電路要能夠使南北方向有左轉(zhuǎn)、直行各三個(gè)燈(紅、黃、綠),東西方向有左轉(zhuǎn)、直行各三個(gè)燈(紅、黃、綠),三個(gè)燈能夠按順序依次亮滅。而且要求綠燈亮轉(zhuǎn)黃燈亮然后其它時(shí)間為紅燈,紅燈亮能夠直接轉(zhuǎn)綠燈(三種燈的循環(huán)順序如圖2.1所示)。還要求三種燈的點(diǎn)亮?xí)r間能夠以倒計(jì)時(shí)的形式顯示出來(lái)。能夠用VHDL語(yǔ)言合理設(shè)計(jì)系統(tǒng)功能,使紅黃綠燈的轉(zhuǎn)換有一個(gè)準(zhǔn)確的時(shí)間間隔和轉(zhuǎn)換順序。綠燈綠燈黃燈紅燈黃燈紅燈圖2.1三種燈的循環(huán)順序2設(shè)計(jì)思路1時(shí)間脈沖能夠直接賦予得到。210s、5s、40s、30s定時(shí)信號(hào)用倒計(jì)時(shí),計(jì)時(shí)起始信號(hào)由控制流程電路給出,每當(dāng)計(jì)滿所需時(shí)間,即向控制電路輸出“時(shí)間到”的信號(hào),并使計(jì)數(shù)器清零,由控制電路啟、閉三色信號(hào)燈。3主控電路是核心,這是一個(gè)時(shí)序電路,其輸入信號(hào)為東西、南北方向:10s、5s、40s、30s定時(shí)信號(hào),其輸出狀態(tài)控制相應(yīng)的三色燈。4三種燈轉(zhuǎn)換狀態(tài)表:時(shí)間|S105405105305東西左轉(zhuǎn)綠黃紅紅紅紅紅紅東西直行紅紅綠黃紅紅紅紅南北左轉(zhuǎn)紅紅紅紅綠黃紅紅南北直行紅紅紅紅紅紅綠黃3設(shè)計(jì)方案根據(jù)設(shè)計(jì)要求和系統(tǒng)所具有功能,并參考相關(guān)的文獻(xiàn)資料經(jīng)行方案設(shè)計(jì)畫(huà)出如下所示的十字路口交通燈控制器系統(tǒng)框圖,及為設(shè)計(jì)的總體方案,框圖如下圖2.2所示:CLKCLK交通燈控制及計(jì)時(shí)模塊掃描顯示模塊LED顯示圖2.2系統(tǒng)的框圖電路設(shè)計(jì)1控制器電路設(shè)計(jì)流程控制器的作用是根據(jù)計(jì)數(shù)器的計(jì)數(shù)值控制各方向上發(fā)光二極管的亮、滅,當(dāng)計(jì)時(shí)時(shí)間到達(dá),狀態(tài)控制器就響應(yīng),自動(dòng)跳轉(zhuǎn)到下一個(gè)狀態(tài)。另外,當(dāng)檢測(cè)到特殊情況(urgen=‘1’)發(fā)生時(shí),無(wú)條件點(diǎn)亮紅燈的二極管(急救燈按下urgen='1',則東西南北都亮紅燈,在這種狀態(tài)下原來(lái)的狀態(tài)必須保持,即東西南北方向定時(shí)時(shí)間保持不變。急救燈未按下或者按下后恢復(fù),則繼續(xù)計(jì)時(shí)(計(jì)時(shí)經(jīng)過(guò)計(jì)數(shù)器count),同時(shí)恢復(fù)東西南北原來(lái)燈的狀態(tài))。具體實(shí)物模塊如圖3.1所示:圖3.1控制器模塊程序?qū)崿F(xiàn)如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYledcontrolIS PORT( reset,clk,urgen :IN STD_LOGIC; state :OUT STD_LOGIC_VECTOR(2DOWNTO0); sub,set1,set2,set3,set4 :OUT STD_LOGIC);ENDledcontrol;ARCHITECTUREaOFledcontrolIS SIGNALcount:STD_LOGIC_VECTOR(6DOWNTO0); SIGNALsubtemp:STD_LOGIC;BEGINsub<=subtempAND(NOTclk); --將電平型信號(hào)變?yōu)槊}沖型,即高電平時(shí)輸出一個(gè)脈沖statelabel: PROCESS(reset,clk)BEGINIFreset='1'THEN --――系統(tǒng)復(fù)位count<="0000000"; state<="000"; set2<='1';set4<='1';ELSIFclk'eventANDclk='1'THENIFurgen='0'THENcount<=count+1;subtemp<='1';ELSEsubtemp<='0';ENDIF;--――經(jīng)過(guò)脈沖電平變換后,使得正常狀態(tài)時(shí),正常減計(jì)數(shù),緊急狀態(tài)下停止計(jì)數(shù) IFcount=0thenstate<="000";set1<='1';set2<='1';set3<='1';set4<='1'; ELSIFcount=10thenstate<="001";set1<='1'; ELSIFcount=15THENstate<="010";set1<='1';set2<='1'; ELSIFcount=55THENstate<="011";set2<='1'; ELSIFcount=60THENstate<="100";set2<='1';set3<='1'; elsifcount=70THENstate<="101";set3<='1'; elsifcount=75THENstate<="110";set3<='1';set4<='1'; elsifcount=105THENstate<="111";set4<='1'; ELSIFcount=110THENcount<="0000000";ELSEset1<='0';set2<='0';set3<='0';set4<='0';ENDIF; ENDIF;--――控制流程ENDPROCESSstatelabel;ENDa;2輸出顯示電路設(shè)計(jì)根據(jù)狀態(tài)控制器所控制的狀態(tài)和計(jì)數(shù)器的計(jì)時(shí)時(shí)間,選擇當(dāng)前狀態(tài)下的顯示器,使顯示器輸出當(dāng)前狀態(tài)下的數(shù)碼管亮、滅指令,其中數(shù)碼管的顯示采用動(dòng)態(tài)掃描顯示。具體實(shí)物模塊如圖:圖3.2譯碼顯示電路模塊程序?qū)崿F(xiàn)如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYledshowIS PORT(clk,urgen :IN STD_LOGIC; state :IN STD_LOGIC_VECTOR(2DOWNTO0); sub,set1,set2,set3,set4 :IN STD_LOGIC; eg1,ey1,er1,edg2,edy2,edr2,ng1,ny1,nr1,ndg2,ndy2,ndr2 :OUT STD_LOGIC; led1,led2 :OUT STD_LOGIC_VECTOR(7DOWNTO0));ENDledshow;ARCHITECTUREaOFledshowIS SIGNALcount1,count2,count3,count4:STD_LOGIC_VECTOR(7DOWNTO0); SIGNALsetstate1,setstate2,setstate3,setstate4:STD_LOGIC_VECTOR(7DOWNTO0); SIGNALetg1,ety1,etr1,edirr1,edirg1,ediry1,norg2,nory2,norr2,nordirg2,nordiry2,nordirr2:STD_LOGIC;BEGINled1<="00000000"WHENurgen='1'ANDclk='0'ELSE--顯示東西向行和停 count1WHENstate="000"ELSE count1WHENstate="001"ELSE count2WHENstate="010"ELSE count2WHENstate="011"ELSE count2;led2<="00000000"WHENurgen='1'ANDclk='0'ELSE count3WHENstate="000"ELSE count3WHENstate="001"ELSE count3WHENstate="010"ELSE count3WHENstate="011"ELSE count3WHENstate="100"ELSE count3WHENstate="101"ELSE count4WHENstate="110"ELSE count4;etg1<='1'WHENstate="000"ANDurgen='0'ELSE'0'; ety1<='1'WHENstate="001"ANDurgen='0'ELSE'0';etr1<='1'WHENstate="010"orurgen='1'ORstate="011"ORstate="100"ORstate="101"ORstate="110"ORstate="111"ELSE'0';edirg1<='1'WHENstate="010"andurgen='0'ELSE'0';ediry1<='1'WHENstate="011"andurgen='0'ELSE'0';edirr1<='1'WHENstate="000"ORurgen='1'ORstate="001"ORstate="100"ORstate="101"ORstate="110"ORstate="111"ELSE'0'; norg2<='1'WHENstate="100"ANDurgen='0'ELSE'0';nory2<='1'WHENstate="101"andurgen='0'ELSE'0';norr2<='1'WHENstate="000"ORstate="001"ORstate="010"ORstate="011"ORstate="110"ORstate="111"ORurgen='1'ELSE'0';nordirg2<='1'WHENstate="110"ANDurgen='0'ELSE'0';nordiry2<='1'WHENstate="111"andurgen='0'ELSE'0';nordirr2<='1'WHENstate="000"ORstate="001"ORstate="010"ORstate="011"ORstate="100"ORurgen='1'ORstate="101"ELSE'0';setstate1<="00010000"WHENstate="000"ELSE "00000101"WHENstate="001"ELSE "10010101";setstate2<="00010101"WHENstate="000"ELSE --"00000101"WHENstate="001"ELSE "01000000"WHENstate="010"ELSE "00000101"WHENstate="011"ELSE "01010000";setstate3<="01100000"WHENstate="000"ELSE "00010000"WHENstate="100"ELSE "00000101"WHENstate="101"ELSE "00110101";setstate4<="01110101"WHENstate="000"ELSE "00110000"WHENstate="110"ELSE "00000101";label4:南北直行PROCESS(sub)BEGINIFsub'eventANDsub='1'THENIFset4='1'THENcount4<=setstate4;elsifcount4(3downto0)="0000"thencount4<=count4-7;ELSEcount4<=count4-1;ENDIF; ndy2<=nordiry2; ndg2<=nordirg2; ndr2<=nordirr2;ENDIF;ENDPROCESSlabel4;label3:南北左行PROCESS(sub)BEGINIFsub'eventANDsub='1'THENIFset3='1'THENcount3<=setstate3;elsifcount3(3downto0)="0000"thencount3<=count3-7;ELSEcount3<=count3-1;ENDIF; ng1<=norg2; ny1<=nory2; nr1<=norr2;ENDIF;ENDPROCESSlabel3;label2:東西直行PROCESS(sub)BEGINIFsub'eventANDsub='1'THENIFset2='1'THENcount2<=setstate2;elsifcount2(3downto0)="0000"thencount2<=count2-7;ELSEcount2<=count2-1;ENDIF; edg2<=edirg1; edy2<=ediry1; edr2<=edirr1;ENDIF;ENDPROCESSlabel2;label1:--東西左行PROCESS(sub)BEGINIFsub'eventANDsub='1'THENIFset1='1'THENcount1<=setstate1;elsifcount1(3downto0)="0000"thencount1<=count1-7;ELSEcount1<=count1-1;ENDIF; eg1<=etg1; er1<=etr1; ey1<=ety1;ENDIF;ENDPROCESSlabel1;ENDa;程序仿真與分析1仿真結(jié)果利用QuartusII軟件對(duì)本程序進(jìn)行編譯,生成了能夠進(jìn)行仿真定時(shí)分析以及下載到可編程器件的相關(guān)文件。仿真結(jié)果如圖5.1所示:圖5.1仿真結(jié)果2仿真結(jié)果分析經(jīng)過(guò)設(shè)定clk值以及reset和urgen的初值,就能夠得到如上所示的仿真波形圖。由仿真波形圖能夠看出波形是由reset初值信號(hào)觸發(fā)而顯示出各個(gè)狀態(tài)的。Urgen高電平信號(hào)輸入時(shí),所有交通燈都變?yōu)榧t燈狀態(tài)。由仿真波形圖還能夠清楚的看出各時(shí)間段每個(gè)交通燈的狀態(tài)。要得到正確的仿真波形圖就不許設(shè)定合適的時(shí)間信號(hào)clk值。如果clk值設(shè)置的太小則交通燈狀態(tài)變化得太快無(wú)法分辨,如果clk值設(shè)置得太大則交通燈狀態(tài)轉(zhuǎn)換緩慢,效果不明顯。其次,要設(shè)定reset初值,如果沒(méi)有設(shè)定reset初值就不可能觸發(fā)而得到仿真圖。最后,就是要設(shè)置一Urgen高電平信號(hào)來(lái)檢測(cè)緊急情況下的交通燈的狀態(tài)。心得體會(huì)經(jīng)過(guò)此次課程設(shè)計(jì),使我對(duì)EDA程序設(shè)計(jì)有了進(jìn)一步的學(xué)習(xí),進(jìn)一步的認(rèn)識(shí);在程序的設(shè)計(jì),程序的調(diào)試方面都學(xué)到了很多東西,這是第一次編寫(xiě)EDA的大程序,很有成就感。在這幾天課設(shè)的時(shí)間里,實(shí)驗(yàn)室的氛圍對(duì)我們的影響很大,大家一起努力,這也是我們能完成課設(shè)的動(dòng)力。在編程中出現(xiàn)問(wèn)題時(shí),一定要戒驕戒躁,腳踏實(shí)地,認(rèn)真看書(shū),仔細(xì)分析,仔細(xì)調(diào)試,就一定會(huì)發(fā)現(xiàn)錯(cuò)誤,克服困難,我們也是這么做的,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論