版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一、設(shè)計(jì)要求 --------------------------------------------------------------------------------二、設(shè)計(jì)目的 --------------------------------------------------------------------------------三、設(shè)計(jì)方案 --------------------------------------------------------------------------------b5E2RGbCAP四、設(shè)計(jì)程序 ---------------------------------------------------------------------------------p1EanqFDPw五、管腳分配 ---------------------------------------------------------------------------------DXDiTa9E3d六、硬件下載實(shí)現(xiàn)現(xiàn)象描述 ------------------------------------------RTCrpUDGiT七、體會(huì)、對(duì)設(shè)計(jì)工作的總結(jié)與展 -------------------------------------------5PCzVD7HxA一、設(shè)計(jì)要求:① 在十字路口的兩個(gè)方向上各設(shè)一組紅、綠、黃燈,顯示順序?yàn)槠渲幸环较?<東西方向)是綠燈、黃燈、紅燈;另一方向 <南北方向)是紅燈、綠燈、黃燈。 jLBHrnAILg②設(shè)置一組數(shù)碼管,以倒計(jì)時(shí)的方式顯示允許通行或禁止通行的時(shí)間,其中綠燈、黃燈、紅燈的持續(xù)時(shí)間分別是 20s、5s和25s。xHAQX74J0X1/21③當(dāng)各條路上任意一條上出現(xiàn)特殊情況時(shí),如當(dāng)消防車、救護(hù)車或其他需要優(yōu)先放行的車輛通過(guò)時(shí),各方向上均是紅燈亮,倒計(jì)時(shí)停止,且顯示數(shù)字在閃爍。當(dāng)特殊運(yùn)行狀態(tài)結(jié)束后,控制器恢復(fù)原來(lái)狀態(tài),繼續(xù)正常運(yùn)行。 LDAYtRyKfE二、設(shè)計(jì)方案:計(jì)數(shù)器的計(jì)數(shù)值與交通燈亮滅的關(guān)系如圖 1所示。0192449綠燈亮黃燈亮紅燈亮東西方向計(jì)數(shù)值(時(shí)間)南北方向紅燈亮綠燈亮黃燈亮0244449圖1計(jì)數(shù)值與交通燈亮滅的關(guān)系顯然,本課題的核心是一個(gè)計(jì)數(shù)范圍為 0~49<共50s)的計(jì)數(shù)器和一個(gè)根據(jù)計(jì)數(shù)值做出規(guī)定反應(yīng)的控制器。另外,所用實(shí)驗(yàn)箱配備的晶振為 20MH z,因此還需要一個(gè)分頻電路。最后,要驅(qū)動(dòng)七段數(shù)碼管,顯然還需要一個(gè)譯碼電路。 Zzz6ZB2Ltk根據(jù)上面的分析,可以畫出如圖 2所示的系統(tǒng)框圖。2/21hold計(jì)數(shù)值紅、黃、綠reset計(jì)數(shù)器控制器發(fā)光二極管倒計(jì)時(shí)數(shù)字及“閃爍控制信號(hào)”Clk1Hz20MHz分頻電路CLK10Hz分位譯碼電路七段數(shù)碼管CPLD/FPGA圖2交通燈控制器系統(tǒng)框圖2、計(jì)數(shù)器的設(shè)計(jì)這里需要的計(jì)數(shù)器的計(jì)數(shù)范圍為 0~49。計(jì)到 49后,下一個(gè)時(shí)鐘沿回復(fù)到 0,開始下一輪計(jì)數(shù)。此外,當(dāng)檢測(cè)到特殊情況 <Hold=’1’)發(fā)生時(shí),計(jì)數(shù)器暫停計(jì)數(shù),而系統(tǒng)復(fù)位信號(hào)Reset則使計(jì)數(shù)器異步清 0。dvzfvkwMI13、控制器的設(shè)計(jì)控制器的作用是根據(jù)計(jì)數(shù)器的計(jì)數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計(jì)時(shí)數(shù)值給七段數(shù)譯管的分位譯碼電路。此外,當(dāng)檢測(cè)倒特殊情況 <Hold=’1’)發(fā)生時(shí),無(wú)條件點(diǎn)亮紅色的發(fā)光二級(jí)管。 rqyn14ZNXI由于控制器要對(duì)計(jì)數(shù)值進(jìn)行判斷,很容易想到用 IF語(yǔ)句來(lái)實(shí)現(xiàn)。本控制器可以有兩種設(shè)計(jì)方法,一種是利用時(shí)鐘沿的下降沿讀取前級(jí)計(jì)數(shù)器的計(jì)數(shù)值,然后做出反應(yīng);另一種則是將本模塊設(shè)計(jì)成純組合邏輯電路,不需要時(shí)鐘驅(qū)動(dòng)。這兩種方法各有所長(zhǎng),必須根據(jù)所用器件的特性進(jìn)行選擇:比如有些 FPGA有豐富的寄存器資源,而且可用于組合邏輯的資源則相對(duì)較少,那么使用第 1種方法會(huì)比較節(jié)省資源;而有些 CPLD的組合邏輯資源則相對(duì)較多,用第 2種方法可能會(huì)更好。大家可嘗試兩種方法,比較一下哪種方法所用資源較少,然后在最后的方案中采用這個(gè)方法。 EmxvxOtOco4、分位譯碼電路的設(shè)計(jì)因?yàn)榭刂破鬏敵龅牡褂?jì)時(shí)數(shù)值可能是1位或者2位十進(jìn)制數(shù),所以在七段數(shù)碼管的譯碼電路前要加上分位電路<即將其分為2個(gè)1位十進(jìn)制數(shù),如25分為2和5,7分為0和3/217)。SixE2yXPq5與控制器一樣,分位電路同樣可以由時(shí)鐘驅(qū)動(dòng),也可以設(shè)計(jì)成純組合邏輯電路??刂破髦校肓思拇嫫?。三、程序語(yǔ)言:-----------交通燈帶有點(diǎn)陣顯示 ---------------------LIBRARYIEEE 。USEIEEE.STD_LOGIC_1164.ALL 。USEIEEE.STD_LOGIC_UNSIGNED.ALL 。USEIEEE.STD_LOGIC_ARITH.ALL 。ENTITYjtdISPORT(duan:OUT STD_LOGIC_VECTOR(7 DOWNTO0>。 --數(shù)碼管顯示bcd碼from100to916ewMyirQFLhang,lie:outstd_logic_vector(7downto0>。 -點(diǎn)陣行輸出和列輸出kavU42VRUsled,light_cs : OUT STD_LOGIC_VECTOR(3DOWNTO0>。 --數(shù)碼管和燈掃描 led6521 || light66676869y6v3ALoS89led_no:OUTSTD_LOGIC_VECTOR(1DOWNTO0> 。 --43light:OUTSTD_LOGIC_VECTOR(2DOWNTO0>。--燈724/2171M2ub6vSTnPB1eep:OUTSTD_LOGIC。 --7clk,jinji:INSTD_LOGIC--頻率輸入和緊急處理端 -----0YujCfmUCw>。ENDjtd。ARCHITECTUREoneOFjtdISSIGNALclk_1k,clk_1:STD_LOGIC 。SIGNALcnt4:INTEGERRANGE0TO3 。------------用于計(jì)數(shù)--------------eUts8ZQVRdSIGNALnum,num1,num2,num3,num4:INTEGERRANGETO9。sQsAEJkW5TSIGNALL1,L2:STD_LOGIC_VECTOR(2DOWNTO0> 。---------燈顯示---------------GMsIasNXkASIGNALtime1,time2:INTEGERRANGE0TO25。--------------時(shí)間顯示--------------TIrRGchYzgsignalt:std_logic_vector(2downto0>。-----點(diǎn)陣信號(hào)傳輸signalq:std_logic_vector(1downto0>。---------點(diǎn)陣輸出顯示信號(hào)--------7EqZcWLZNXBEGINled_no<="11"。------------把數(shù)碼管第三第四位屏蔽 ------------lzq7IGf02E5/21------1KHz頻率輸出--------------------------process(clk>variablecnt1:integerrange0to250。variablecnt2:integerrange0to100。Beginifclk'eventandclk='1'thenifcnt1=250thencnt1:=0。ifcnt2=100thencnt2:=0。clk_1k<=notclk_1k。elsecnt2:=cnt2+1。endif。elsecnt1:=cnt1+1。endif。endif。endprocess。-----------------點(diǎn)陣掃描-----------process(clk_1k>variablecount:integerrange0to8。6/21beginifclk_1k'eventandclk_1k='1'thenifcount<=8then ------count數(shù)用于循環(huán)掃描行用ifcount=8thencount:=0。endif。casecountiswhen0=>hang<="00000001"。t<="000"。------掃描第一行,并把 t賦予000由于信號(hào)t的變化觸發(fā)下一個(gè)進(jìn)程zvpgeqJ1hkwhen1=>hang<="00000010"。t<="001"。------掃描第二行when2=>hang<="00000100"。t<="010"。------掃描第三行when3=>hang<="00001000"。t<="011"。when4=>hang<="00010000"。t<="100"。when5=>hang<="00100000"。t<="101"。when6=>hang<="01000000"。t<="110"。when7=>hang<="10000000"。t<="111"。when others =>hang<="00000000" 。t<="000"。endcase。7/21count:=count+1。endif。endif。endprocess。----------------------------process(t>variableshu:integerrange0to7。begincasetis-----根據(jù)t的值去查表when"000"=>shu:=0。when"001"=>shu:=1。----變量的賦值是立即發(fā)生的when"010"=>shu:=2。when"011"=>shu:=3。when"100"=>shu:=4。when"101"=>shu:=5。when"110"=>shu:=6。when"111"=>shu:=7。whenothers=>null。endcase。caseqis-----再根據(jù)相應(yīng)的值送到列上去when"01"=>caseshuis8/21when0=>lie<="11111111"。when1=>lie<="11111111"。when2=>lie<="11111111"。when3=>lie<="10111101"。when4=>lie<="00000000"。when5=>lie<="10111101"。when6=>lie<="11111111"。when7=>lie<="11111111"。whenothers=>lie<="11111111"。ENDCASE。when"10"=>caseshuiswhen0=>lie<="11101111"。when1=>lie<="11000111"。when2=>lie<="10000011"。when3=>lie<="11101111"。when4=>lie<="11101111"。when5=>lie<="10000011"。when6=>lie<="11000111"。when7=>lie<="11101111"。whenothers=>lie<="11111111"。ENDCASE。when"11"=>caseshuis9/21when0=>lie<="00111100"。when1=>lie<="00111100"。when2=>lie<="11011011"。when3=>lie<="11100111"。when4=>lie<="11100111"。when5=>lie<="11011011"。when6=>lie<="00111100"。when7=>lie<="00111100"。whenothers=>lie<="11111111"。ENDCASE。whenothers=>null。endcase。endprocess。-------------1s分頻加計(jì)數(shù)-------------------PROCESS(clk_1k>VARIABLEcount_1k:INTEGERRANGE0TO499 。BEGINIFclk_1k'EVENTANDclk_1k='1'THENIFcnt4=3THENcnt4<=0。ELSEcnt4<=cnt4+1。10/21ENDIF。IFcount_1k=499THENcount_1k:=0。clk_1<=NOTclk_1。ELSEcount_1k:=count_1k+1。ENDIF。ENDIF。ENDPROCESS。-----------------倒計(jì)時(shí)和燈顯示-----------------------PROCESS(cnt4,L1,L2,time1,time2>BEGINCASEtime1IS -------------輸出時(shí)間1------------NrpoJac3v1WHEN0TO9=>num1<=0。WHEN10TO19=>num1<=1。WHEN20TO25=>num1<=2。WHENOTHERS=>num1<=0 。ENDCASE。num2<=time1REM10。 ------------取余----1nowfTG4KICASEtime2ISWHEN0TO9=>num3<=0。11/21WHEN10TO19=>num3<=1。WHEN20TO25=>num3<=2。WHENOTHERS=>num3<=0 。ENDCASE。num4<=time2REM10。CASEcnt4ISWHEN0=>led<="1110"。 -------------動(dòng)態(tài)掃描數(shù)碼管<從右到左)--------fjnFLDa5Zonum<=num1。light_cs<="1110"。light<=L1。WHEN1=>led<="1101"。num<=num2。light_cs<="1101"。light<=L2。WHEN2=>led<="1011"。num<=num3。light_cs<="1011"。12/21light<=L1。WHEN3=>led<="0111"。num<=num4。light_cs<="0111"。light<=L2。WHENOTHERS=>led<="1111"。light_cs<="1111"。ENDCASE。ENDPROCESS。--------------------譯碼------------------------PROCESS(num>BEGINCASEnumISWHEN0=>duan<="00111111"。 ------0到9-------------tfnNhnE6e5WHEN1=>duan<="00000110"。WHEN2=>duan<="01011011"。WHEN3=>duan<="01001111"。WHEN4=>duan<="01100110"。13/21WHEN5=>duan<="01101101"。WHEN6=>duan<="01111101"。WHEN7=>duan<="00000111"。WHEN8=>duan<="01111111"。WHEN9=>duan<="01101111"。WHENOTHERS=>duan<="00000000" 。ENDCASE。ENDPROCESS。--------------------------------------PROCESS(clk_1>VARIABLEi,j:INTEGERRANGE0TO2:=0 。VARIABLEw:INTEGERRANGE0TO1:=0 。BEGINIFclk_1'EVENTANDclk_1='1'THENIFjinji='0'then---------------- 判斷是否要緊急制動(dòng) ------------HbmVN777sLIFtime1=0THENIFi=2THENi:=0。14/21ELSEi:=i+1。ENDIF。CASEiISWHEN1=>time1<=20。L1<="001"。B1eep<='0'。WHEN2=>time1<=5。L1<="010"。B1eep<='1'。WHEN0=>time1<=25。L1<="100"。B1eep<='0'。q<="01"。 --------------點(diǎn)陣顯示前進(jìn)方向-----------V7l4jRB8HsWHENOTHERS=>time1<=24。ENDCASE。ELSE15/21time1<=time1-1。ENDIF。IFtime2=0THENIFj=2THENj:=0。ELSEj:=j+1。ENDIF。CASEjISWHEN1=>time2<=25。L2<="100"。B1eep<='0'。q<="10"。 ----------點(diǎn)陣顯示前進(jìn)方向-----------83lcPA59W9WHEN2=>time2<=20。L2<="001"。B1eep<='0'。WHEN0=>t
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《室性早搏導(dǎo)管消融》課件
- 會(huì)博通10單用戶版用戶操作指引
- 《動(dòng)物防疫法》考試題庫(kù)100題(含答案)
- 蜂窩微納孔、量子單層石墨烯面料技改項(xiàng)目可行性研究報(bào)告寫作模板-申批備案
- 2025年河北女子職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 專題06 發(fā)展與合作-(解析版)
- 2025年昭通衛(wèi)生職業(yè)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 《醫(yī)療器械法規(guī)培訓(xùn)》課件
- 2025年春節(jié)消費(fèi)機(jī)遇和備貨建議報(bào)告
- 中班區(qū)域活動(dòng)計(jì)劃實(shí)施方案五篇
- 安全生產(chǎn)網(wǎng)格員培訓(xùn)
- 小學(xué)數(shù)學(xué)分?jǐn)?shù)四則混合運(yùn)算300題帶答案
- 2024年交管12123學(xué)法減分考試題庫(kù)和答案
- 臨床下肢深靜脈血栓的預(yù)防和護(hù)理新進(jìn)展
- 動(dòng)物生產(chǎn)與流通環(huán)節(jié)檢疫(動(dòng)物防疫檢疫課件)
- 2024年山東泰安市泰山財(cái)金投資集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 英語(yǔ)主語(yǔ)從句省公開課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件
- C139客戶開發(fā)管理模型
- 年度工作總結(jié)與計(jì)劃會(huì)議
- 醫(yī)保按病種分值付費(fèi)(DIP)院內(nèi)培訓(xùn)
- 近五年重慶中考物理試題及答案2023
評(píng)論
0/150
提交評(píng)論