




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于的交通燈設(shè)計(jì)(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)
基于的交通燈設(shè)計(jì)(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)《微型計(jì)算機(jī)原理與應(yīng)用》課程設(shè)計(jì)報(bào)告班級學(xué)生姓名聯(lián)系電話學(xué)號完成日期2013。12.30指導(dǎo)老師目錄一、概述1。題目2.需求分析3.設(shè)計(jì)要求二、設(shè)計(jì)過程1。設(shè)計(jì)過程簡單分析2.硬件原理3.8255芯片資料三、程序設(shè)計(jì)1.流程圖2.程序代碼四、總結(jié)附錄概述1、題目:基于8086的交通燈設(shè)計(jì)2、需求分析:隨著電子技術(shù)的發(fā)展,計(jì)算機(jī)在現(xiàn)代科學(xué)技術(shù)的發(fā)展中起著越來越重要的作用.多媒體技術(shù)、網(wǎng)絡(luò)技術(shù)、智能信息處理技術(shù)、自適用控制技術(shù)、數(shù)據(jù)挖掘與處理技術(shù)等都離不開計(jì)算機(jī).本課程設(shè)計(jì)是基于微機(jī)原理與接口技術(shù)的簡單應(yīng)用。運(yùn)用所學(xué)的微機(jī)原理和接口技術(shù)知識完成交通燈系統(tǒng).通過硬件與軟件的結(jié)合,用我們剛剛學(xué)過的匯編語言編寫程序模擬分析了現(xiàn)代城市交通控制與管理問題的現(xiàn)狀,結(jié)合交通的實(shí)際情況闡述了交通燈控制系統(tǒng)的工作原理,給出了一種簡單實(shí)用的交通燈控制系統(tǒng)的硬件、軟件電路設(shè)計(jì)方案。該系統(tǒng)適用于單主干道的十字路口?,F(xiàn)假定其主干道為東西方向,次干道為南北方向。3、設(shè)計(jì)要求這次課程設(shè)計(jì)的題目是交通燈控制器的設(shè)計(jì)與實(shí)現(xiàn),主要是模擬十字路口的紅綠燈,如圖1-1所示。交通燈控制器的設(shè)計(jì)與實(shí)現(xiàn)主要是通過編寫匯編語言程序利用8255A的A口燈的亮與滅進(jìn)行控制。首先,要了解的是8255A是如何工作的,包括它的A口、B口、C口和控制端口是如何寫數(shù)據(jù)的,還包括芯片的初始化等。由于只有16個(gè)發(fā)光二極管,所以還得弄清楚是每個(gè)發(fā)光二極管所代表的燈的顏色及方向.最后要在實(shí)驗(yàn)室通過一個(gè)軟件進(jìn)行調(diào)試,調(diào)試通過后即可看到設(shè)計(jì)的結(jié)果。要求:圖1-1十字路口交通燈設(shè)計(jì)過程1、設(shè)計(jì)過程簡單分析紅,黃,綠燈可分別接在8255的A口上,燈的亮滅可直接由8255輸出0,1控制。延時(shí)及閃爍由軟件編程實(shí)現(xiàn)。2、硬件原理設(shè)計(jì)電路如下:由上述電路容易知道紅,黃,綠燈分別接在8255的A口上,端口A地址為8000H,可以通過控制8255端口A輸出的高低電平來控制燈的亮滅,燈的閃爍和延時(shí)可直接通過軟件的延時(shí)程序解決,這樣可以大大簡化電路的設(shè)計(jì).3、主要芯片資料8255介紹8255的內(nèi)部結(jié)構(gòu)8255A是一個(gè)40引腳的雙列直插式集成電路芯片按功能可把8255A(chǔ)分為三個(gè)邏輯電路部分,即:口電路、總線接口電路和控制邏輯電路.(1)口電路8255A(chǔ)共有三個(gè)8位口,其中A口和B口是單純的數(shù)據(jù)口,供數(shù)據(jù)I/O使用。而C口則既可以作數(shù)據(jù)口,又可以作控制口使用,用于實(shí)現(xiàn)A口和B口的控制功能。數(shù)據(jù)傳送中A口所需的控制信號由C口高位部分(PC7~PC4)提供,因此把A口和C口高位部分合在一起稱之為A組;同樣理由把B口和C口低位部分(PC3~PC0)合在一起稱之為B組.(2)總線接口電路總線接口電路用于實(shí)現(xiàn)8255A(chǔ)和單片微機(jī)的信號連接.其中包括:(a)數(shù)據(jù)總線緩沖器數(shù)據(jù)總線緩沖器為8位雙向三態(tài)緩沖器,可直接和80C51的數(shù)據(jù)線相連,與I/O操作有關(guān)的數(shù)據(jù)、控制字和狀態(tài)信息都是通過該緩沖器進(jìn)行傳送.(b)讀/寫控制邏輯與讀寫有關(guān)的控制信號有CS—片選信號(低電平有效)RD—讀信號(低電平有效)WR—寫信號(低電平有效)A0、A1—端口選擇信號.8255A共有四個(gè)可尋址的端口(即A口、B口、C口和控制寄存器),用二位地址編碼即可實(shí)現(xiàn)選擇。參見下表。RESET-復(fù)位信號(高電平有效).復(fù)位之后,控制寄存器清除,各端口被置為輸入方式。讀寫控制邏輯用于實(shí)現(xiàn)8255A的硬件管理:芯片的選擇,口的尋址以及規(guī)定各端口和單片微機(jī)之間的數(shù)據(jù)傳送方向。(c)控制邏輯電路控制邏輯電路包括A組控制和B組控制,合在一起構(gòu)成8位控制寄存器。用于存放各口的工作方式控制字8255A工作方式及數(shù)據(jù)I/O操作(1)8255A(chǔ)的工作方式8255A共有三種工作方式,即方式0、方式1、方式2.(a)方式0基本輸入/輸出方式方式0下,可供使用的是兩個(gè)8位口(A口和B口)及兩個(gè)4位口(C口高4位部分和低4位部分)。四個(gè)口可以是輸入和輸出的任何組合。方式0適用于無條件數(shù)據(jù)傳送,也可以把C口的某一位作為狀態(tài)位,實(shí)現(xiàn)查詢方式的數(shù)據(jù)傳送.(b)方式1選通輸入/輸出方式A口和B口分別用于數(shù)據(jù)的輸入/輸出.而C口則作為數(shù)據(jù)傳送的聯(lián)絡(luò)信號。具體定義見表7–2.可見A口和B口的聯(lián)絡(luò)信號都是三個(gè),如果A或B只有一個(gè)口按方式1使用,則剩下的另外13位口線仍然可按方式0使用。如果兩個(gè)口都按方式1使用,則還剩下2位口線,這兩位口線仍然可以進(jìn)行位狀態(tài)的輸入輸出。方式1適用于查詢或中斷方式的數(shù)據(jù)輸入/輸出.(c)方式2雙向數(shù)據(jù)傳送方式只有A口才能選擇這種工作方式,這時(shí)A口既能輸入數(shù)據(jù)又能輸出數(shù)據(jù)。在這種方式下需使用C口的五位線作控制線,信號定義如表7–2所示.方式2適用于查詢或中斷方式的雙向數(shù)據(jù)傳送。如果把A口置于方式2下,則B口只能工作于方式0.(2)數(shù)據(jù)輸入操作用于輸入操作的聯(lián)絡(luò)信號有:STB(StroBe)-選通脈沖,輸入,低電平有效.當(dāng)外設(shè)送來STB信號時(shí),輸入數(shù)據(jù)裝入8255A的鎖存器。IBF(InputBufferFull)—輸入緩沖器滿信號,輸出,高電平有效。IBF信號有效,表明數(shù)據(jù)已裝入鎖存器,因此它是一個(gè)狀態(tài)信號.INTR(INTerruptRequest)—中斷請求信號,高電平有效,當(dāng)IBF數(shù)據(jù)輸入過程:當(dāng)外設(shè)準(zhǔn)備好數(shù)據(jù)輸入后,發(fā)出信號,輸入的數(shù)據(jù)送入緩沖器。然后IBF信號有效.如使用查詢方式,則IBF即作為狀態(tài)信號供查詢使用;如使用中斷方式,當(dāng)信號由低變高時(shí),產(chǎn)生INTR信號,向單片微機(jī)發(fā)出中斷。單片微機(jī)在響應(yīng)中斷后執(zhí)行中斷服務(wù)程序時(shí)讀入數(shù)據(jù),并使INTR信號變低,同時(shí)也使IBF信號同時(shí)變低。以通知外設(shè)準(zhǔn)備下一次數(shù)據(jù)輸入。(3)數(shù)據(jù)輸出操作用于數(shù)據(jù)輸出操作的聯(lián)絡(luò)信號有:ACK(ACKnowledge)-外設(shè)響應(yīng)信號輸入,低電平有效。當(dāng)外設(shè)取走輸出數(shù)據(jù),并處理完畢后向單片微機(jī)發(fā)回的響應(yīng)信號為高,信號由低變高(后沿)時(shí),中斷請求信號有效。向單片微機(jī)發(fā)出中斷請求。OBF(OutputBufferFull)——輸出緩沖器滿信號,輸出,低電平有效。當(dāng)單片微機(jī)把輸出數(shù)據(jù)寫入8255A鎖存器后,該信號有效,并送去啟動(dòng)外設(shè)以接收數(shù)據(jù).INTR—中斷請求信號,輸出,高電平有效。數(shù)據(jù)輸出過程:外設(shè)接收并處理完一組數(shù)據(jù)后,發(fā)回ACK信號.該信號使OBF變高,表明輸出緩沖器已空.如使用查詢方式,則OBF可作為狀態(tài)信號供查詢使用;如使用中斷方式,則當(dāng)ACK信號結(jié)束時(shí),INTR有效,向單片微機(jī)發(fā)出中斷請求。在中斷服務(wù)過程中,把下一個(gè)輸出數(shù)據(jù)寫入8255A的輸出緩沖器。寫入后OBF有效,表明輸出數(shù)據(jù)已到,并以此信號啟動(dòng)外設(shè)工作,取走并處理8255A中的輸出數(shù)據(jù)。表7–28255AC口聯(lián)絡(luò)信號定義程序設(shè)計(jì)1、流程圖循環(huán)用延時(shí)程序延時(shí)用延時(shí)程序延時(shí)延時(shí)東西紅燈亮,南北黃燈亮,其他燈滅東西紅燈亮,南北綠燈閃爍,其他燈滅東西紅燈亮,南北綠燈亮,其他循環(huán)用延時(shí)程序延時(shí)用延時(shí)程序延時(shí)延時(shí)東西紅燈亮,南北黃燈亮,其他燈滅東西紅燈亮,南北綠燈閃爍,其他燈滅東西紅燈亮,南北綠燈亮,其他燈滅延時(shí)東西黃燈亮,南北紅燈亮,其他滅東西綠燈閃爍,南北紅燈亮,其他滅東西綠燈亮,南北紅燈亮,其他滅初始化82552、程序代碼。MODELSMALL.8086.stack。code.startupmovdx,8006hmovax,80houtdx,axmovdx,8000hmovax,0ffhoutdx,ax;8255初始化s1:movax,0behoutdx,axcalldelay5movcx,6lp:movax,0bfhoutdx,axcalldelay05movax,0behoutdx,axcalldelay05looplpmovax,0bdhoutdx,axcalldelay3movax,0ebhoutdx,axcalldelay5movcx,6lp1:movax,0fbhoutdx,axcalldelay05movax,0ebhoutdx,axcalldelay05looplp1movax,0dbhoutdx,axcalldelay3jmps1delay5procnearpushcxmovbx,250dy1:movcx,5882dy2:loopdy2decbxjnzdy1popcxretdelay5endpdelay05procnearpushcxmovbx,25dy3:movcx,5882dy4:loopdy4decbxjnzdy3popcxretdelay05endpdelay3procnearpushcxmovbx,150dy5:movcx,5882dy6:loopdy6decbxjnzdy5popcxretdelay3endp.dataEND總結(jié)本次課程設(shè)計(jì)是要設(shè)計(jì)一個(gè)交通燈系統(tǒng),主要功能如上已有細(xì)述。在本次對交通燈的設(shè)計(jì)過程中以此來加深對微機(jī)接口技術(shù)的理解,提高了自己的動(dòng)手能力。首先著手對硬件電路的設(shè)計(jì),本次課程設(shè)計(jì)主要采用了8255A(chǔ)接口電路。由于對各個(gè)芯片不熟悉,通過課本了解到了它們的引腳及功能、工作方式、內(nèi)部結(jié)構(gòu)和控制字。然后就是對程序的設(shè)計(jì),想要設(shè)計(jì)出一個(gè)實(shí)用的控制系統(tǒng)需要了解程序流程,先畫出了流程圖,然后對代碼進(jìn)行編寫,在編寫過程中遇到了很多問題。對芯片的不了解也導(dǎo)致編程的很多的問題,要么燈都不顯示,要么燈顯示不全,再要么紅燈綠燈時(shí)間分配不合理。最后經(jīng)過一段時(shí)間的研究,查閱了很多資料并和同學(xué)討論后終于一一解決.最后,再說兩句,由于自己太晚才開始做這個(gè)課程設(shè)計(jì),導(dǎo)致很多功能沒有實(shí)現(xiàn)好,例如想通過8253來對交通燈進(jìn)行定時(shí)計(jì)數(shù),用七段顯示數(shù)碼管顯示倒計(jì)時(shí),但是最后都由于時(shí)間緊而選擇軟件實(shí)現(xiàn)延時(shí)閃爍。不管怎樣,經(jīng)過這次課程設(shè)計(jì),我獲益頗多。將微機(jī)原理這門課程中的理論與實(shí)踐相結(jié)合起來,對芯片的功能也有了進(jìn)一步認(rèn)識理解.附錄電路原理圖:元件清單:8086芯片1個(gè)8255芯片1個(gè)74ls373鎖存器2個(gè)74ls138譯碼器1個(gè)Led燈12個(gè)參考文獻(xiàn):《8086實(shí)驗(yàn)指導(dǎo)書》王榮輝,張曉華編著《微型計(jì)算機(jī)原理及應(yīng)用》鄭學(xué)堅(jiān),朱定華編著數(shù)字系統(tǒng)課程設(shè)計(jì)基于FPGA的交通控制燈設(shè)計(jì)姓名:學(xué)號:班級:摘要隨著社會的發(fā)展,城市規(guī)模的不斷擴(kuò)大,城市交通成為制約城市發(fā)展的一大因素。人口和汽車日益增長,市區(qū)交通也日益擁擠,人們的安全問題當(dāng)然也日益重要。因此,紅綠交通信號燈成為交管部門管理交通的重要工具之一。有了交通燈,人們的安全出行也有了很大的保障。自從交通燈誕生以來,其內(nèi)部的電路控制系統(tǒng)就不斷的被改進(jìn),設(shè)計(jì)方法也開始多種多樣,從而使交通燈顯得更加智能化.尤其是近幾年來,隨著電子與計(jì)算機(jī)技術(shù)的飛速發(fā)展,電子電路分析和設(shè)計(jì)方法有了很大的改進(jìn),電子設(shè)計(jì)自動(dòng)化也已經(jīng)成為現(xiàn)代電子系統(tǒng)中不可或缺的工具和手段,這些都為交通燈控制系統(tǒng)的設(shè)計(jì)提供了一定的技術(shù)基礎(chǔ)。本課程設(shè)計(jì)運(yùn)用erilogHDL語言描述交通控制器,通過狀態(tài)機(jī)計(jì)數(shù)法,實(shí)現(xiàn)設(shè)計(jì)所要求的交通燈控制及時(shí)間顯示,并最后進(jìn)行了軟件實(shí)現(xiàn),達(dá)到了系統(tǒng)要求的功能。設(shè)計(jì)原理1.1設(shè)計(jì)要求設(shè)計(jì)一個(gè)交通控制器,用LED顯示燈表示交通狀態(tài),并以7段數(shù)碼顯示器顯示當(dāng)前狀態(tài)剩余秒數(shù)主干道綠燈亮?xí)r,支干道紅燈亮;反之亦然,二者交替允許通行,主干道每次放行35s,支干道每次放行25s.每次由綠燈變?yōu)榧t燈的過程中,亮光的黃燈作為過渡,黃燈的時(shí)間為5s.能進(jìn)行特殊狀態(tài)顯示,特殊狀態(tài)時(shí)東西、南北路口均顯示紅燈狀態(tài)。用LED燈顯示倒計(jì)時(shí),并且能實(shí)現(xiàn)總體清零功能,計(jì)數(shù)器由初始狀態(tài)開始計(jì)數(shù),對應(yīng)狀態(tài)的顯示燈亮。能實(shí)現(xiàn)特殊狀態(tài)的功能顯示,1.2設(shè)計(jì)思路和原理本次設(shè)計(jì)是針對十字路口,進(jìn)行南北和東西直行情況下交通燈控制。設(shè)定東西方向?yàn)橹鞲傻婪较?根據(jù)交通燈的亮的規(guī)則,在初始狀態(tài)下四個(gè)方向的都為紅燈亮啟,進(jìn)入正常工作狀態(tài)后,當(dāng)主干道上綠燈亮?xí)r,支干道上紅燈亮,持續(xù)35S后,主干道和支干道上的黃燈都亮啟,持續(xù)5S后,主干道上紅燈亮啟,支干道上綠燈亮啟持續(xù)25S,之后主干道和支干道上的黃燈都亮啟5s,一個(gè)循環(huán)完成.循環(huán)往復(fù)的直行這個(gè)過程.其過程如下圖所示:圖1。交通燈點(diǎn)亮?xí)r間控制說明1.3實(shí)現(xiàn)方法本次采用文本編輯法,即利用VerilogHDL語言描述交通控制器,通過狀態(tài)機(jī)計(jì)數(shù)法,實(shí)現(xiàn)設(shè)計(jì)所要求的交通燈控制及時(shí)間顯示。設(shè)計(jì)中用兩組紅黃綠LED模擬兩個(gè)方向上的交通燈,用4個(gè)7段數(shù)碼管分別顯示兩個(gè)方向上的交通燈剩余時(shí)間,控制時(shí)鐘由試驗(yàn)箱上頻率信號提供。VerilogHDL程序設(shè)計(jì)2.1整體設(shè)計(jì)根據(jù)上章設(shè)計(jì)原理,交通燈控制的關(guān)鍵是各個(gè)狀態(tài)之間的轉(zhuǎn)換和進(jìn)行適當(dāng)?shù)臅r(shí)間延時(shí),根據(jù)狀態(tài)機(jī)的設(shè)計(jì)規(guī)范,本次設(shè)計(jì)了三個(gè)狀態(tài)之間的循環(huán)轉(zhuǎn)化,其真值表及狀態(tài)轉(zhuǎn)化圖如下所示:圖2.交通燈控制狀態(tài)轉(zhuǎn)化說明:該狀態(tài)圖為交通燈在正常情況下的狀態(tài)轉(zhuǎn)化圖,進(jìn)入控制后,狀態(tài)00時(shí)主干道綠燈及支干道紅燈亮起,進(jìn)入狀態(tài)01后兩路黃燈亮起,狀態(tài)11時(shí)主干道紅燈及支干道綠燈亮起。進(jìn)入10狀態(tài)兩路黃燈亮起.結(jié)束一個(gè)循環(huán),從00狀態(tài)重新開始循環(huán).為實(shí)現(xiàn)控制與顯示的功能,需要設(shè)計(jì)交通燈點(diǎn)亮順序控制程序,倒數(shù)計(jì)時(shí)程序,七段數(shù)碼管顯示程序,數(shù)碼管顯示掃描程序,其系統(tǒng)結(jié)構(gòu)圖如下所示:圖3.交通燈控制系統(tǒng)結(jié)構(gòu)圖其中rst為復(fù)位信號,clk為時(shí)鐘信號,hold為特殊情況控制信號,輸入hold時(shí)兩個(gè)方向紅燈無條件亮起.2.2具體設(shè)計(jì)根據(jù)整體設(shè)計(jì)要求,編寫各個(gè)功能部分VerilogHDL程序,設(shè)置各輸入輸出變量說明如下clk:為計(jì)數(shù)時(shí)鐘;qclk:為掃描顯示時(shí)鐘;en:使能信號,為1的話,則控制器開始工作;rst:復(fù)位信號,為1的話,控制及技術(shù)回到初始狀態(tài);hoid:特殊情況控制信號,為1的話,則兩個(gè)方向無條件顯示為紅燈;light1:控制主干道方向四盞燈的亮滅;其中,light1[0]~light[2],分別控制主干道方向的綠燈、黃燈和紅燈;light2:控制支干道方向四盞燈的亮滅;其中,light2[0]~light2[2],分別控制支干道方向的綠燈、黃燈和紅燈;num1:用于主干道方向燈的時(shí)間顯示,8位,可驅(qū)動(dòng)兩個(gè)數(shù)碼管;num2:用于支干道方向燈的時(shí)間顯示,8位,可驅(qū)動(dòng)兩個(gè)數(shù)碼管;counter:用于數(shù)碼管的譯碼輸出;st1,st2:數(shù)碼管掃描信號.輸入輸出及中間變量設(shè)置如下:moduletraffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);inputen,clk,qclk,rst,hold,rst1;outputst1,st2;output[7:0]num1,num2;output[6:0]counter;output[2:0]light1,light2;regtim1,tim2,st1,st2;reg[1:0]stat(yī)e1,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0]num1,num2;reg[7:0]red1,red2,gree(cuò)n1,green2,yellow1,yellow2;二極管點(diǎn)亮控制該部分程序的作用是根據(jù)計(jì)數(shù)器的計(jì)數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計(jì)時(shí)數(shù)值給七段數(shù)碼管的譯碼電路。此外,當(dāng)檢測到特殊情況(hold=‘1’)發(fā)生時(shí),無條件點(diǎn)亮紅燈的二極管,當(dāng)檢測到復(fù)位信號,兩個(gè)方向計(jì)數(shù)與控制回復(fù)到00狀態(tài)。因?yàn)橹鳌⒅Ц傻纼蓚€(gè)方向二極管點(diǎn)亮的順序與延遲時(shí)間不同,顧編寫兩個(gè)獨(dú)立的部分來控制,具體程序如下:1)主干道方向always@(posedgeclk)beginif(rst)//復(fù)位與特殊情況控制beginlight1<=3'b001;num1<=green1;endelseif(hold)beginlight1〈=3'b100;num1<=gree(cuò)n1;endelseif(en)begin//使能有效開始控制計(jì)數(shù)if(!tim1)//begin//主干道交通燈點(diǎn)亮控制tim1〈=1;case(state1)2'b00:beginnum1<=green1;light1〈=3'b001;state1<=2’b01;end2’b01:beginnum1<=yellow1;light1<=3'b010;state1<=2’b11;end2'b11:beginnum1〈=red1;light1〈=3'b100;state1〈=2'b10;end2'b10:beginnum1<=yellow1;light1<=3'b010;state1<=2'b00;enddefault:light1〈=3'b100;endcaseend2)支干道方向always@(posedgeclk)beginif(rst)//復(fù)位與特殊情況控制beginlight2<=3'b100;num2<=red2;endelseif(hold)beginlight2〈=3'b100;num2<=red2;endelseif(en)beginif(?。鬷m2)begintim2〈=1;case(stat(yī)e1)2'b00:beginnum2<=red2;light2<=3’b100;state2〈=2’b01;end2'b01:beginnum2〈=yellow1;light2〈=3’b010;state2<=2'b11;end2’b11:beginnum2〈=green2;light2〈=3'b001;state2<=2'b10;end2'b10:beginnum2<=yellow2;light2<=3'b010;stat(yī)e2〈=2'b00;enddefault:light2<=3'b100;endcaseend倒數(shù)計(jì)時(shí)該部分程序完成二極管發(fā)光時(shí)延的計(jì)數(shù),并將計(jì)數(shù)結(jié)果送到數(shù)碼管顯示電路,每切換到一個(gè)狀態(tài),計(jì)數(shù)器的初值都被重置,以實(shí)現(xiàn)不同顏色二極管不同的時(shí)延要求。本次設(shè)計(jì)直接用邏輯運(yùn)算完成2位十進(jìn)制數(shù)的計(jì)數(shù),未采用分位器的設(shè)計(jì)。因?yàn)橹?、支干道上?jì)數(shù)器的結(jié)構(gòu)完全相同,顧只列出一路的程序,其具體程序如下所示:always@(posedgeclk)beginelsebegin//倒數(shù)計(jì)時(shí)if(num1>0)if(num1[3:0]==0)beginnum1[3:0]<=4’b1001;num1[7:4]<=num1[7:4]-1;endelsenum1[3:0]<=num1[3:0]—1;if(num1==1)tim1〈=0;endendelsebeginlight1〈=3'b010;num1=2'b00;tim1〈=0;endend數(shù)碼管的譯碼及掃描顯示該段程序主要完成4個(gè)7段數(shù)碼管的譯碼顯示及掃描,使系統(tǒng)能正常顯示主、支干道兩個(gè)方向上的剩余時(shí)間。譯碼的時(shí)鐘頻率要低,為Hz級。掃描的時(shí)鐘頻率要高,最低不得小于人眼分辨頻率50Hz,具體程序如下所示:always@(posedgeqclk)begin//數(shù)碼管掃描if(rst1)beginst1=0;st2=0;endelsebegincase({st2,st1})2'b00:beginnum<=num1[3:0];{st2,st1}<=2'b01;end2'b01:beginnum<=num1[7:4];{st2,st1}〈=2'b10;end2'b10:beginnum<=num2[3:0];{st2,st1}〈=2'b11;end2'b11:beginnum<=num2[7:4];{st2,st1}<=2'b00;endendcaseendendalways@(posedgeqclk)begin//數(shù)碼管譯碼顯示case(num)4'b0000:counter<=7'b0111111;//04'b0001:counter<=7'b0000110;//14’b0010:counter〈=7’b1011011;//24'b0011:counter〈=7'b1001111;//34'b0100:counter〈=7’b1100110;//44’b0101:counter<=7'b1101101;//54'b0110:counter〈=7'b1111101;//64'b0111:counter〈=7'b0000111;//74’b1000:counter〈=7’b1111111;//84'b1001:counter<=7'b1101111;//9default:counter<=7'b0111111;//0endcaseendendmodule總體程序見程序清單所示仿真與硬件調(diào)試3.1波形仿真在QuartursⅡ軟件下創(chuàng)建工程,新建編輯設(shè)計(jì)文件,將程序輸入,整體編譯后,新建波形仿真文件。設(shè)置仿真時(shí)間,時(shí)鐘周期,輸入輸出端口,進(jìn)行波形仿真.具體仿真波形圖及說明如下所示:仿真截止時(shí)間:100us;時(shí)鐘:clk1us,qclk0.1us1.正常工作時(shí)波形仿真圖圖4.正常工作時(shí)波形仿真圖圖形說明波形仿真主要完成了控制與計(jì)數(shù)以及數(shù)碼管顯示的波形圖.en為低電品時(shí),計(jì)數(shù)器置初值,高電平時(shí)開始正??刂婆c計(jì)數(shù)??刂瓢l(fā)光二極管首次輸出為“l(fā)ight1=001,light2=100”,表示主干道路綠燈亮,支桿道路紅燈亮,計(jì)數(shù)器num1和num2從“00110101”開始遞減計(jì)數(shù),計(jì)數(shù)至“00000000”時(shí),進(jìn)入下一個(gè)狀態(tài),控制輸出量為light=010,light2=010,表示主、支干道黃燈均亮起,計(jì)數(shù)器num1和num2從“00000101”開始計(jì)數(shù)遞減,計(jì)數(shù)至"00000000”時(shí)進(jìn)入下一個(gè)狀態(tài),light=100,light2=001,表示主干道路紅燈亮,支桿道路綠燈亮。Counter根據(jù)num1,num2變化隨時(shí)鐘上升沿輸出譯碼后的數(shù)據(jù)。由于屏幕顯示大小有限,未仿真出一個(gè)完整周期。2.特殊情況仿真波形圖5.特殊情況仿真波形圖形說明當(dāng)hold輸入高電平時(shí),在時(shí)鐘上升沿的控制下,light1與light2被強(qiáng)制置位為"100”,表示兩路紅燈均亮起3.復(fù)位情況仿真波形圖6.復(fù)位情況仿真波形圖形說明當(dāng)rst輸入高電平時(shí),在時(shí)鐘上升沿控制下,計(jì)數(shù)與控制都回到00狀態(tài),即light1=001,light2=100,計(jì)數(shù)器num1和num2從“00110101”開始遞減計(jì)數(shù)。3.2硬件調(diào)試完成時(shí)序仿真確認(rèn)無誤后,進(jìn)行實(shí)驗(yàn)箱管腳設(shè)置,注意設(shè)置完成后一定要再進(jìn)行一次全局仿真,使程序真正對應(yīng)于硬件輸出輸出。具體連接說明如下所示輸入變量:rst、clk、qclk、hold、en其中en,hold,rst接”0-1”撥碼開關(guān),以穩(wěn)定的輸出可變化的電平。計(jì)數(shù)時(shí)鐘clk接實(shí)驗(yàn)箱上1Hz時(shí)鐘,掃描顯示時(shí)鐘qclk接125Khz時(shí)鐘。輸出變量:light1[2:0]、light2[2:0]、counter[6:0]、st1、st2其中light1[0]、light2[0]分別接綠色的發(fā)光二極管;light1[1]、light2[1]分別接黃色的發(fā)光二極管;light1[2]、light2[2]分別接紅色的發(fā)光二極管.counter[0]~counter[6],分別接七段數(shù)碼管的a~f,st1、st2分別接試驗(yàn)箱上”4-16”譯碼器的低兩位。完成接線后將程序燒寫到芯片上,開始功能調(diào)試。分辨改變使能信號,復(fù)位信號以及特殊情況信號,觀察數(shù)碼管以及發(fā)光二級管情況。程序清單moduletraffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);inputen,clk,qclk,rst,hold,rst1;outputst1,st2;output[7:0]num1,num2;output[6:0]counter;output[2:0]light1,light2;regtim1,tim2,st1,st2;reg[1:0]state1,stat(yī)e2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0]num1,num2;reg[7:0]red1,red2,gree(cuò)n1,green2,yellow1,yellow2;always@(en)if(!en)begin//設(shè)置計(jì)數(shù)初值green1〈=8’b00110101;red1<=8'b00100101;yellow1<=8'b00000101;green2<=8'b00100101;red2<=8'b00110101;yellow2〈=8'b00000101;endalways@(posedgeclk)beginif(rst)//復(fù)位與特殊情況控制beginlight1<=3'b001;num1〈=green1;endelseif(hold)beginlight1<=3'b100;num1〈=green1;endelseif(en)begin//使能有效開始控制計(jì)數(shù)if(!tim1)//開始控制begin//主干道交通燈點(diǎn)亮控制tim1<=1;case(state1)2’b00:beginnum1<=green1;light1<=3'b001;state1<=2'b01;end2’b01:beginnum1<=yellow1;light1<=3'b010;stat(yī)e1〈=2'b11;end2'b11:beginnum1<=red1;light1<=3'b100;state1〈=2'b10;end2'b10:beginnum1〈=y(tǒng)ellow1;light1<=3'b010;state1〈=2'b00;enddefault:light1<=3’b100;endcaseendelsebegin//倒數(shù)計(jì)時(shí)if(num1〉0)if(num1[3:0]==0)beginnum1[3:0]<=4'b1001;num1[7:4]<=num1[7:4]-1;endelsenum1[3:0]〈=num1[3:0]-1;if(num1==1)tim1<=0;endendelsebeginlight1<=3'b010;num1=2'b00;tim1<=0;endendalways@(posedgeclk)beginif(rst)//復(fù)位與特殊情況控制beginlight2<=3’b100;num2<=red2;endelseif(hold)beginlight2〈=3’b100;num2<=red2;endelseif(en)beginif(!tim2)begintim2<=1;case(state1)2'b00:beginnum2<=red2;light2<=3'b100;state2<=2’b01;end2'b01:beginnum2<=yellow1;light2〈=3'b010;state2<=2'b11;end2'b11:beginnum2〈=gree(cuò)n2;light2<=3'b001;state2〈=2'b10;end2'b10:beginnum2<=yellow2;light2〈=3’b010;state2<=2’b00;enddefault:light2<=3'b100;endcaseendelsebegin//倒數(shù)計(jì)時(shí)if(num2>0)if(num2[3:0]==0)beginnum2[3:0]<=4'b1001;num2[7:4]<=num2[7:4]-1;endelsenum2[3:0]<=num2[3:0]—1;if(num2==1)tim2〈=0;endendelsebegintim2〈=0;state2<=2’b00;light2<=3’b010;endendalways@(posedgeqclk)begin//數(shù)碼管掃描if(rst1)beginst1=0;st2=0;endelsebegincase({st2,st1})2’b00:beginnum<=num1[3:0];{st2,st1}<=2'b01;end2’b01:beginnum<=num1[7:4];{st2,st1}<=2'b10;end2'b10:beginnum〈=num2[3:0];{st2,st1}〈=2'b11;end2'b11:beginnum〈=num2[7:4];{st2,st1}〈=2’b00;endendcaseendendalways@(posedgeqclk)begin//數(shù)碼管譯碼顯示case(num)4’b0000:counter<=7'b0111111;//04'b0001:counter〈=7'b0000110;//14'b0010:counter〈=7'b1011011;//24’b0011:counter<=7’b1001111;//34'b0100:counter<=7’b1100110;//44’b0101:counter〈=7'b1101101;//54’b0110:counter〈=7'b1111101;//64’b0111:counter<=7’b0000111;//74'b1000:counter〈=7'b1111111;//84’b1001:counter〈=7’b1101111;//9default:counter〈=7’b0111111;//0endcaseendendmodule總結(jié)在設(shè)計(jì)中采用VerilogHDL語言設(shè)計(jì)交通燈控制系統(tǒng),借助其功能強(qiáng)大的語言結(jié)構(gòu),簡明的代碼描述復(fù)雜控制邏輯設(shè)計(jì),與工藝無關(guān)特性,在提高工作效率的同時(shí)達(dá)到求解目的,并可以通過VerilogHDL語言的綜合工具進(jìn)行相應(yīng)硬件電路生成,具有傳統(tǒng)邏輯設(shè)計(jì)方法所無法比擬的優(yōu)越性。在設(shè)計(jì)過程中,覺得最難的部分是波形仿真部分,雖然程序編譯通過但仿真出不了正確的波形,不是計(jì)數(shù)器無法正常計(jì)數(shù),就是控制輸出無法進(jìn)入到下一個(gè)狀態(tài),每次出現(xiàn)問題就必須返回重新修改程序.實(shí)踐證明,在編寫一個(gè)較復(fù)雜的程序時(shí),一開始一定要畫流程圖,弄清楚各個(gè)功能及實(shí)現(xiàn)它們的邏輯算法,做到心中有數(shù)后在開始下筆寫編寫程序。在編寫的時(shí)候要尤其要注意語言的規(guī)范,如本次設(shè)計(jì)中編寫的Verilog在Quartus8。1中可以正常生成時(shí)序圖,而在低版本的軟件中卻無法生成,原因就是語言使用不規(guī)范,在解決這個(gè)問題時(shí)我總結(jié)了一些經(jīng)驗(yàn),首先程序要邏輯清晰,簡潔明了,避免不必要的嵌套與條用,其次要適當(dāng)?shù)亟o程序加上注解文字,提高可讀性,以方便之后的程序出錯(cuò)時(shí)進(jìn)行查找,最后充分利用仿真軟件提供的各項(xiàng)編譯工具與報(bào)錯(cuò)消息,按圖索驥,有方向的完成程序調(diào)試。完成仿真后進(jìn)行,進(jìn)行試驗(yàn)箱上的硬件調(diào)試,該步驟主要是要求細(xì)心,按照引腳清單,逐一完成連線,本次設(shè)計(jì)用到兩個(gè)時(shí)鐘輸入,注意一定要選擇合適頻率的時(shí)鐘,以便達(dá)到期望的效果。注意觀察實(shí)物的現(xiàn)象,看是否滿足設(shè)計(jì)要求,不滿足時(shí)檢查是硬件問題還是程序問題,如果是程序問題,在修改完之后必須要重新編譯,重新燒入.不斷排查錯(cuò)誤,直至達(dá)到滿意的效果。通過這次課程設(shè)計(jì),熟悉了簡單EDA設(shè)計(jì)的整個(gè)流程,加深了對VerilogHDL硬件描述語言的理解,提高了動(dòng)手能力,并且鍛煉了自己的耐心,收獲頗豐,我會把在本次課程設(shè)計(jì)中學(xué)到的東西應(yīng)用到今后的工作學(xué)習(xí)中。參考資料[1]夏宇聞.復(fù)雜數(shù)字電路與系統(tǒng)的VerilogHDL設(shè)計(jì)技術(shù)[M]。北京:北京航空航天大學(xué)出版社,1998[2]郭梯云.移動(dòng)通信[M].西安:西安電子科技大學(xué)出版社,1995[3][法]MichelMouly,MarieBernadettePautet1GSM數(shù)字移動(dòng)通信系統(tǒng)[M].駱健霞,顧龍信,徐云霄譯。北京:電子工業(yè)出版社,1996[4]張毅剛,喬立巖.虛擬儀器軟件開發(fā)環(huán)境LabWindows?CVI610編程指南[M]。北京:機(jī)械工業(yè)出版社,2002[5]劉國權(quán).GSM手機(jī)的測試[J]。中國無線電管理,2003[6]俞定玖,劉湘慧。GSM數(shù)字蜂窩移動(dòng)交換系統(tǒng)測試[J]。電信科學(xué),2000[7]張明。VerilogHDL實(shí)用教程[M].成都:電子科技大學(xué)出版社,1999[8]HydeDC.BucknellHandbookonVerilogHDL1ComputerScienceDepartment,BucknellUniversityLewisburg,1995[9]康華光.電子技術(shù)基礎(chǔ)(數(shù)字部分)[M].北京:高等教育出版社,1988虛擬儀器課程設(shè)計(jì)——基于LabVIEW的交通燈設(shè)計(jì)專業(yè):姓名:學(xué)號:一、課題研究背景和意義近年來,在快速城市化進(jìn)程和經(jīng)濟(jì)發(fā)展的影響下,機(jī)動(dòng)車輛已成為普遍的代步工具,交通負(fù)荷越來越重,交通問題成為困擾許多大城市發(fā)展的通病,已成為日趨嚴(yán)峻的國際性問題.其中,十字路口則是造成交通堵塞的主要"瓶頸”.交通信號燈成為了維護(hù)交通秩序的必備工具。交通信號燈的使用有效減小了交通擁堵維護(hù)交通順暢.
此次課設(shè)的題目的是設(shè)計(jì)交通信號燈。在設(shè)計(jì)的過程中了解了交通燈的顯示規(guī)則,增強(qiáng)了加強(qiáng)交通安全的意識,其次運(yùn)用已學(xué)知識設(shè)計(jì)信號燈便于更好的掌握labview軟件的使用,培養(yǎng)綜合應(yīng)用所學(xué)知識來指導(dǎo)實(shí)踐的能力。二、程序設(shè)計(jì)思路通過采用基于虛擬儀器的交通燈系統(tǒng)設(shè)計(jì),自動(dòng)控制十字路口四組紅、黃、綠交通燈和四組人行道暗、綠狀態(tài)的轉(zhuǎn)變,指揮著行人和車輛的安全運(yùn)行,實(shí)現(xiàn)十字路口的自動(dòng)指揮和改善交通管理.綠燈亮?xí)r,允許車輛和行人通行。紅燈亮?xí)r,禁止車輛和行人通行,為交通安全提供保障。同時(shí)會有時(shí)間的顯示。程序采用條件結(jié)構(gòu),做五個(gè)分支,分別對應(yīng)五種運(yùn)行模式:正常運(yùn)行:在正常運(yùn)行模式中,再用時(shí)鐘信號做選擇條件做四個(gè)分支,實(shí)現(xiàn)交通信號的循環(huán)變換,控制邏輯順序如下:(1)南北紅和東西綠(30秒);(2)南北紅和東西黃(05秒);(3)南北綠和東西紅(30秒);(4)南北綠和東西黃(05秒);東西禁行:東西方向亮紅燈禁止通行,南北方向亮綠燈允許通行.南北禁行:東西方向亮綠燈允許通行,南北方向亮紅燈禁止通行。兩向禁行:東西南北方向全亮紅燈禁止通行。檢修:把信號燈全部熄滅.在各運(yùn)行模式中,每個(gè)條件結(jié)構(gòu)里的程序基本相同:用需要點(diǎn)亮的燈與布爾真常量連接,不需要點(diǎn)亮的與布爾假常量連接,而兩方向燈的時(shí)間顯示器則用一定的值減去輸入的時(shí)間量,以實(shí)現(xiàn)倒計(jì)時(shí)的功能。2.1前面板的設(shè)計(jì)本設(shè)計(jì)中前面板需要用20盞燈、4個(gè)時(shí)間顯示器、1個(gè)菜單下拉列表、1個(gè)停止按鍵即可。其中十字路口的12盞燈,紅、黃、各4盞,綠燈12盞,在控件選板中選擇指示燈,將它放在前面板合適的位置,單擊鼠標(biāo)右鍵,更改指示燈的屬性,改變指示燈的大小和顏色,做出一個(gè)合適的指示燈.道理指示燈三個(gè)分為一組,每組都包含紅黃綠三種顏色的燈,再用框?qū)⒚拷M燈框起來,做成一個(gè)交通燈。在每組交通燈合適的位置放置一個(gè)數(shù)值顯示控件作為交通燈的計(jì)時(shí)器,同樣的方法另做人行道的8盞綠燈燈.并在前面板合適的位置放置一個(gè)控制窗口,用于選擇交通燈的運(yùn)行模式及控制其開始與停止,然后設(shè)置窗口大小。這樣交通燈系統(tǒng)的前面板就做好了.交通燈前面板設(shè)計(jì)如下面圖1所示。圖1交通燈前面板示意圖圖1交通燈前面板示意圖2.2單位時(shí)間信號的產(chǎn)生時(shí)鐘信號用毫秒計(jì)時(shí)器產(chǎn)生。毫秒計(jì)時(shí)器計(jì)時(shí)十毫秒,10毫秒記反饋節(jié)點(diǎn)加一,要產(chǎn)生一個(gè)一秒為單位的時(shí)間信號,所以還得用計(jì)數(shù)值除以100,取商得到以秒為單位的時(shí)間信號。圖2單位時(shí)間信號2.3時(shí)間信號的分段將所得的時(shí)間信號除以每個(gè)循環(huán)所用的時(shí)間70s,取其余數(shù),得到的余數(shù)x的范圍為0〈=x<70。當(dāng)運(yùn)行模式選擇為正常運(yùn)行時(shí),執(zhí)行條件結(jié)構(gòu)里為序號0的程序。當(dāng)0<=x<30時(shí),條件成立,執(zhí)行程序框圖中第一個(gè)條件結(jié)構(gòu)里面的程序,東西通行。當(dāng)30〈=x〈35時(shí),條件成立,執(zhí)行框圖中第二個(gè)條件結(jié)構(gòu)里的程序,東西亮黃燈.當(dāng)35〈=x<65時(shí),條件成立執(zhí)行框圖中第三個(gè)條件結(jié)構(gòu)里的程序,南北通行。當(dāng)65<=x<70時(shí),條件滿足,執(zhí)行框圖中第四個(gè)條件結(jié)構(gòu)里的程序,南北亮黃燈.時(shí)間分段的程序框圖如下圖所示.圖3條件為真的各時(shí)間分段程序這里用到了判定范圍并強(qiáng)制轉(zhuǎn)換控件,應(yīng)用這個(gè)控件可以判定輸入的數(shù)是否在上限和下限之間.它的圖標(biāo)和作用如下圖4所示。如果輸出信號在范圍之內(nèi),“?"接口會有一個(gè)信號,該信號恰可以輸入到條件結(jié)構(gòu)中作為該分支選擇器信號.圖4圖4規(guī)定范圍并強(qiáng)制轉(zhuǎn)換控件2。4程序中所用的結(jié)構(gòu)2.4.1循環(huán)結(jié)構(gòu)LabVIEW中的循環(huán)結(jié)構(gòu)主要通過while和for循環(huán)實(shí)現(xiàn).這兩種循環(huán)結(jié)構(gòu)、語句、功能基本相同,但使用上會有些不同。for循環(huán)須先進(jìn)行循環(huán)次數(shù)的確定,循環(huán)一定次數(shù)后自動(dòng)不進(jìn)行循環(huán);而while循環(huán)則不用確定循環(huán)次數(shù),只需要確定退出循環(huán)的條件.本次課程設(shè)計(jì)中不能預(yù)先確定循環(huán)的次數(shù),所以就用到了while循環(huán)。while循環(huán)是LabVIEW最基本的結(jié)構(gòu)之一,和C語言中的while循環(huán)和do…while循環(huán)相類似。While循環(huán)可以從程序框圖中的【結(jié)構(gòu)】子選板中創(chuàng)建,while循環(huán)包括兩個(gè)端口:1、條件端口2、重復(fù)端口,如下圖5所示。本次課程設(shè)計(jì)中用停止按鈕連接條件端口,當(dāng)按下按鈕時(shí)循環(huán)停止。重復(fù)端口i為當(dāng)前循環(huán)的次數(shù)重復(fù)端口i為當(dāng)前循環(huán)的次數(shù)重復(fù)端口圖5whlie循環(huán)結(jié)構(gòu)條件端口條件端口輸入的是布爾變量,它用于判斷循環(huán)在什么條件下停止執(zhí)行。當(dāng)每次循環(huán)結(jié)束時(shí),便會檢測輸入端接收到的布爾值并判斷是否繼續(xù)執(zhí)行循環(huán)。右擊端口,選擇【真(T)時(shí)停止】或【真(T)時(shí)繼續(xù)】,可以切換其使用狀態(tài)。2.4.2條件結(jié)構(gòu)條件結(jié)構(gòu)也是LabVIEW最基本的結(jié)構(gòu)之一,類似于基于文本編程語言的switch語句或者if…then…else語句。條件結(jié)構(gòu)可以從【結(jié)構(gòu)】子選板中創(chuàng)建,條件結(jié)構(gòu)包含選擇端口和選擇標(biāo)簽控制端口,如下圖6所示.圖6條件結(jié)構(gòu)在條件結(jié)構(gòu)中,選擇端口相當(dāng)于switch語句中的“表達(dá)式”,框圖表示符相當(dāng)于“表達(dá)式n"。編程過程中,將外部控制條件連接到選擇端口上,程序運(yùn)行的時(shí)候其端口會判斷送來的控制條件,指引選擇結(jié)構(gòu)去執(zhí)行相應(yīng)框架里的內(nèi)容。在本程序中的控制條件為運(yùn)行模式序號及從規(guī)定范圍并強(qiáng)制轉(zhuǎn)換的“范圍內(nèi)?”端口輸出的判斷值。選擇端口的外部控制條件的數(shù)據(jù)有整型、字符串型、布爾型和枚舉型。其接線可任意放在框圖左邊的某一位置。如果其數(shù)據(jù)為布爾型,那么這個(gè)結(jié)構(gòu)包含真和假兩個(gè)分支,這是該軟件所默認(rèn)的選擇框架類型。若為其它類型則可以隨意使用分支的個(gè)數(shù)。要注意的是,在使用條件結(jié)構(gòu)的時(shí)候,控制條件的數(shù)據(jù)類型要和選擇標(biāo)簽中的類型一樣,如果不一致的話,LabVIEW顯示出現(xiàn)錯(cuò)誤,與此同時(shí)選擇器中的字體的顏色也會變?yōu)榧t色.本次課程設(shè)計(jì)中,當(dāng)各組條件為真時(shí),將執(zhí)行其框圖的程序。每個(gè)條件結(jié)構(gòu)里的程序基本相同。用需要點(diǎn)亮的燈與布爾真常量連接,不需要點(diǎn)亮的與布爾假常量連接,而兩方向燈的時(shí)間顯示器則用一定的值減去輸入的時(shí)間量,以實(shí)現(xiàn)倒計(jì)時(shí)的功能,各結(jié)構(gòu)里的程序略有不同。三、各種運(yùn)行模式的程序正常運(yùn)行模式的程序程序用時(shí)鐘信號做選擇條件做四個(gè)分支,從左到右依次執(zhí)行四個(gè)條件結(jié)構(gòu),實(shí)現(xiàn)交通信號的循環(huán)變換,正常運(yùn)行模式的程序如下:各段時(shí)間信號程序:第一階段:余數(shù)在0~30s之間,條件結(jié)構(gòu)1條件滿足,十字路口南北紅燈和東西綠燈點(diǎn)亮,人行道南北方方綠燈亮.東西燈時(shí)間顯示為離綠燈熄滅的時(shí)間(從30s到1s),北燈時(shí)間顯示為離紅燈熄滅的時(shí)間(從35s到6s)。程序框圖如圖所示第二階段:余數(shù)在30~35間,條件結(jié)構(gòu)2件滿足,十字路口南北紅燈和東西黃燈點(diǎn)亮,人行道南北方綠燈亮。東燈時(shí)間顯示為離黃燈熄滅的時(shí)間(從5s到1s),北燈時(shí)間繼續(xù)顯示為離紅燈熄滅的時(shí)間(從5s到1s)。程序框圖如右所示第三階段:余數(shù)在35~65s時(shí),條件結(jié)構(gòu)4的條件滿足,十字路口南北綠燈和東西紅燈點(diǎn)亮,人行道東西方綠燈亮。東西燈時(shí)間顯示為離紅燈熄滅的時(shí)間(從35s到6s),南北燈時(shí)間顯示為離綠燈熄滅的時(shí)間(從30s到1s)。程序框圖如右所示第四階段:余數(shù)在65~70s之間,條件結(jié)構(gòu)4條件滿足,十字路口南北黃燈和東西紅燈點(diǎn)亮,人行道東西方綠燈亮.東燈時(shí)間顯示為離紅燈熄滅的時(shí)間(從5s到1s),北燈時(shí)間顯示為離黃燈熄滅的時(shí)間(從5s到1s)。程序框圖如右所示東西禁行模式的程序用東西紅燈及南北綠燈與布爾真常量連接,人行道南北方向綠燈與布爾真常量連接,其余燈的與布爾假常量連接,而兩方向燈的時(shí)間顯示器則輸入零值。東西禁行模式的程序:南北禁行模式的程序用東西綠燈及南北紅燈與布爾真常量連接,人行道東西方向綠燈與布爾真常量連接,其余燈的與布爾假常量連接,而兩方向燈的時(shí)間顯示器則輸入零值南北禁行模式的程序:兩向禁行模式的程序用東西南北的紅燈與布爾真常量連接,人行道東西南北方向綠燈與布爾真常量連接,其余燈的與布爾假常量連接,而兩方向燈的時(shí)間顯示器則輸入零值。兩向禁行模式的程序:檢修模式的程序全部的燈與布爾假常量連接,而兩方向燈的時(shí)間顯示器則輸入零值。檢修模式的程序:四、交通燈設(shè)計(jì)調(diào)試結(jié)果本次所設(shè)計(jì)的交通燈有五種運(yùn)行模式:正常運(yùn)行、東西禁行、南北禁行、兩向禁行、檢修。調(diào)試結(jié)果如下所示:正常運(yùn)行:東西禁行:南北禁行:兩向禁行:檢修:數(shù)字系統(tǒng)課程設(shè)計(jì)基于FPGA的交通控制燈設(shè)計(jì)姓名:學(xué)號:班級:摘要隨著社會的發(fā)展,城市規(guī)模的不斷擴(kuò)大,城市交通成為制約城市發(fā)展的一大因素.人口和汽車日益增長,市區(qū)交通也日益擁擠,人們的安全問題當(dāng)然也日益重要。因此,紅綠交通信號燈成為交管部門管理交通的重要工具之一。有了交通燈,人們的安全出行也有了很大的保障.自從交通燈誕生以來,其內(nèi)部的電路控制系統(tǒng)就不斷的被改進(jìn),設(shè)計(jì)方法也開始多種多樣,從而使交通燈顯得更加智能化。尤其是近幾年來,隨著電子與計(jì)算機(jī)技術(shù)的飛速發(fā)展,電子電路分析和設(shè)計(jì)方法有了很大的改進(jìn),電子設(shè)計(jì)自動(dòng)化也已經(jīng)成為現(xiàn)代電子系統(tǒng)中不可或缺的工具和手段,這些都為交通燈控制系統(tǒng)的設(shè)計(jì)提供了一定的技術(shù)基礎(chǔ)。本課程設(shè)計(jì)運(yùn)用erilogHDL語言描述交通控制器,通過狀態(tài)機(jī)計(jì)數(shù)法,實(shí)現(xiàn)設(shè)計(jì)所要求的交通燈控制及時(shí)間顯示,并最后進(jìn)行了軟件實(shí)現(xiàn),達(dá)到了系統(tǒng)要求的功能。設(shè)計(jì)原理1。1設(shè)計(jì)要求設(shè)計(jì)一個(gè)交通控制器,用LED顯示燈表示交通狀態(tài),并以7段數(shù)碼顯示器顯示當(dāng)前狀態(tài)剩余秒數(shù)主干道綠燈亮?xí)r,支干道紅燈亮;反之亦然,二者交替允許通行,主干道每次放行35s,支干道每次放行25s。每次由綠燈變?yōu)榧t燈的過程中,亮光的黃燈作為過渡,黃燈的時(shí)間為5s.能進(jìn)行特殊狀態(tài)顯示,特殊狀態(tài)時(shí)東西、南北路口均顯示紅燈狀態(tài)。用LED燈顯示倒計(jì)時(shí),并且能實(shí)現(xiàn)總體清零功能,計(jì)數(shù)器由初始狀態(tài)開始計(jì)數(shù),對應(yīng)狀態(tài)的顯示燈亮.能實(shí)現(xiàn)特殊狀態(tài)的功能顯示,1.2設(shè)計(jì)思路和原理本次設(shè)計(jì)是針對十字路口,進(jìn)行南北和東西直行情況下交通燈控制。設(shè)定東西方向?yàn)橹鞲傻婪较?根據(jù)交通燈的亮的規(guī)則,在初始狀態(tài)下四個(gè)方向的都為紅燈亮啟,進(jìn)入正常工作狀態(tài)后,當(dāng)主干道上綠燈亮?xí)r,支干道上紅燈亮,持續(xù)35S后,主干道和支干道上的黃燈都亮啟,持續(xù)5S后,主干道上紅燈亮啟,支干道上綠燈亮啟持續(xù)25S,之后主干道和支干道上的黃燈都亮啟5s,一個(gè)循環(huán)完成。循環(huán)往復(fù)的直行這個(gè)過程.其過程如下圖所示:圖1.交通燈點(diǎn)亮?xí)r間控制說明1。3實(shí)現(xiàn)方法本次采用文本編輯法,即利用VerilogHDL語言描述交通控制器,通過狀態(tài)機(jī)計(jì)數(shù)法,實(shí)現(xiàn)設(shè)計(jì)所要求的交通燈控制及時(shí)間顯示。設(shè)計(jì)中用兩組紅黃綠LED模擬兩個(gè)方向上的交通燈,用4個(gè)7段數(shù)碼管分別顯示兩個(gè)方向上的交通燈剩余時(shí)間,控制時(shí)鐘由試驗(yàn)箱上頻率信號提供。VerilogHDL程序設(shè)計(jì)2。1整體設(shè)計(jì)根據(jù)上章設(shè)計(jì)原理,交通燈控制的關(guān)鍵是各個(gè)狀態(tài)之間的轉(zhuǎn)換和進(jìn)行適當(dāng)?shù)臅r(shí)間延時(shí),根據(jù)狀態(tài)機(jī)的設(shè)計(jì)規(guī)范,本次設(shè)計(jì)了三個(gè)狀態(tài)之間的循環(huán)轉(zhuǎn)化,其真值表及狀態(tài)轉(zhuǎn)化圖如下所示:圖2.交通燈控制狀態(tài)轉(zhuǎn)化說明:該狀態(tài)圖為交通燈在正常情況下的狀態(tài)轉(zhuǎn)化圖,進(jìn)入控制后,狀態(tài)00時(shí)主干道綠燈及支干道紅燈亮起,進(jìn)入狀態(tài)01后兩路黃燈亮起,狀態(tài)11時(shí)主干道紅燈及支干道綠燈亮起。進(jìn)入10狀態(tài)兩路黃燈亮起。結(jié)束一個(gè)循環(huán),從00狀態(tài)重新開始循環(huán).為實(shí)現(xiàn)控制與顯示的功能,需要設(shè)計(jì)交通燈點(diǎn)亮順序控制程序,倒數(shù)計(jì)時(shí)程序,七段數(shù)碼管顯示程序,數(shù)碼管顯示掃描程序,其系統(tǒng)結(jié)構(gòu)圖如下所示:圖3.交通燈控制系統(tǒng)結(jié)構(gòu)圖其中rst為復(fù)位信號,clk為時(shí)鐘信號,hold為特殊情況控制信號,輸入hold時(shí)兩個(gè)方向紅燈無條件亮起。2.2具體設(shè)計(jì)根據(jù)整體設(shè)計(jì)要求,編寫各個(gè)功能部分VerilogHDL程序,設(shè)置各輸入輸出變量說明如下clk:為計(jì)數(shù)時(shí)鐘;qclk:為掃描顯示時(shí)鐘;en:使能信號,為1的話,則控制器開始工作;rst:復(fù)位信號,為1的話,控制及技術(shù)回到初始狀態(tài);hoid:特殊情況控制信號,為1的話,則兩個(gè)方向無條件顯示為紅燈;light1:控制主干道方向四盞燈的亮滅;其中,light1[0]~light[2],分別控制主干道方向的綠燈、黃燈和紅燈;light2:控制支干道方向四盞燈的亮滅;其中,light2[0]~light2[2],分別控制支干道方向的綠燈、黃燈和紅燈;num1:用于主干道方向燈的時(shí)間顯示,8位,可驅(qū)動(dòng)兩個(gè)數(shù)碼管;num2:用于支干道方向燈的時(shí)間顯示,8位,可驅(qū)動(dòng)兩個(gè)數(shù)碼管;counter:用于數(shù)碼管的譯碼輸出;st1,st2:數(shù)碼管掃描信號。輸入輸出及中間變量設(shè)置如下:moduletraffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);inputen,clk,qclk,rst,hold,rst1;outputst1,st2;output[7:0]num1,num2;output[6:0]counter;output[2:0]light1,light2;regtim1,tim2,st1,st2;reg[1:0]state1,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0]num1,num2;reg[7:0]red1,red2,green1,gree(cuò)n2,yellow1,yellow2;二極管點(diǎn)亮控制該部分程序的作用是根據(jù)計(jì)數(shù)器的計(jì)數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計(jì)時(shí)數(shù)值給七段數(shù)碼管的譯碼電路。此外,當(dāng)檢測到特殊情況(hold=‘1’)發(fā)生時(shí),無條件點(diǎn)亮紅燈的二極管,當(dāng)檢測到復(fù)位信號,兩個(gè)方向計(jì)數(shù)與控制回復(fù)到00狀態(tài)。因?yàn)橹?、支干道兩個(gè)方向二極管點(diǎn)亮的順序與延遲時(shí)間不同,顧編寫兩個(gè)獨(dú)立的部分來控制,具體程序如下:1)主干道方向always@(posedgeclk)beginif(rst)//復(fù)位與特殊情況控制beginlight1〈=3’b001;num1〈=green1;endelseif(hold)beginlight1<=3'b100;num1<=green1;endelseif(en)begin//使能有效開始控制計(jì)數(shù)if(?。簦閙1)//begin//主干道交通燈點(diǎn)亮控制tim1〈=1;case(state1)2'b00:beginnum1<=green1;light1〈=3’b001;state1<=2’b01;end2'b01:beginnum1〈=yellow1;light1<=3'b010;state1〈=2’b11;end2'b11:beginnum1〈=red1;light1〈=3'b100;state1<=2'b10;end2’b10:beginnum1<=yellow1;light1〈=3'b010;state1〈=2'b00;enddefault:light1<=3’b100;endcasee(cuò)nd2)支干道方向always@(posedgeclk)beginif(rst)//復(fù)位與特殊情況控制beginlight2〈=3'b100;num2<=red2;endelseif(hold)beginlight2<=3'b100;num2<=red2;endelseif(en)beginif(!tim2)begintim2〈=1;case(state1)2'b00:beginnum2〈=red2;light2〈=3’b100;state2〈=2'b01;end2’b01:beginnum2<=yellow1;light2〈=3'b010;state2〈=2’b11;end2'b11:beginnum2〈=green2;light2<=3'b001;state2〈=2'b10;end2'b10:beginnum2<=yellow2;light2〈=3'b010;state2〈=2’b00;enddefault:light2<=3'b100;endcaseend倒數(shù)計(jì)時(shí)該部分程序完成二極管發(fā)光時(shí)延的計(jì)數(shù),并將計(jì)數(shù)結(jié)果送到數(shù)碼管顯示電路,每切換到一個(gè)狀態(tài),計(jì)數(shù)器的初值都被重置,以實(shí)現(xiàn)不同顏色二極管不同的時(shí)延要求。本次設(shè)計(jì)直接用邏輯運(yùn)算完成2位十進(jìn)制數(shù)的計(jì)數(shù),未采用分位器的設(shè)計(jì)。因?yàn)橹?、支干道上?jì)數(shù)器的結(jié)構(gòu)完全相同,顧只列出一路的程序,其具體程序如下所示:always@(posedgeclk)beginelsebegin//倒數(shù)計(jì)時(shí)if(num1>0)if(num1[3:0]==0)beginnum1[3:0]<=4'b1001;num1[7:4]<=num1[7:4]-1;endelsenum1[3:0]<=num1[3:0]-1;if(num1==1)tim1<=0;endendelsebeginlight1<=3’b010;num1=2'b00;tim1〈=0;endend數(shù)碼管的譯碼及掃描顯示該段程序主要完成4個(gè)7段數(shù)碼管的譯碼顯示及掃描,使系統(tǒng)能正常顯示主、支干道兩個(gè)方向上的剩余時(shí)間。譯碼的時(shí)鐘頻率要低,為Hz級。掃描的時(shí)鐘頻率要高,最低不得小于人眼分辨頻率50Hz,具體程序如下所示:always@(posedgeqclk)begin//數(shù)碼管掃描if(rst1)beginst1=0;st2=0;endelsebegincase({st2,st1})2'b00:beginnum<=num1[3:0];{st2,st1}〈=2'b01;end2'b01:beginnum<=num1[7:4];{st2,st1}<=2'b10;end2’b10:beginnum<=num2[3:0];{st2,st1}〈=2’b11;end2'b11:beginnum<=num2[7:4];{st2,st1}〈=2'b00;endendcaseendendalways@(posedgeqclk)begin//數(shù)碼管譯碼顯示case(num)4'b0000:counter〈=7’b0111111;//04'b0001:counter〈=7'b0000110;//14'b0010:counter<=7’b1011011;//24’b0011:counter<=7'b1001111;//34'b0100:counter〈=7’b1100110;//44'b0101:counter〈=7'b1101101;//54’b0110:counter<=7'b1111101;//64’b0111:counter<=7'b0000111;//74'b1000:counter<=7'b1111111;//84'b1001:counter<=7’b1101111;//9default:counter〈=7'b0111111;//0endcaseendendmodule總體程序見程序清單所示仿真與硬件調(diào)試3.1波形仿真在QuartursⅡ軟件下創(chuàng)建工程,新建編輯設(shè)計(jì)文件,將程序輸入,整體編譯后,新建波形仿真文件。設(shè)置仿真時(shí)間,時(shí)鐘周期,輸入輸出端口,進(jìn)行波形仿真。具體仿真波形圖及說明如下所示:仿真截止時(shí)間:100us;時(shí)鐘:clk1us,qclk0.1us1.正常工作時(shí)波形仿真圖圖4.正常工作時(shí)波形仿真圖圖形說明波形仿真主要完成了控制與計(jì)數(shù)以及數(shù)碼管顯示的波形圖.en為低電品時(shí),計(jì)數(shù)器置初值,高電平時(shí)開始正??刂婆c計(jì)數(shù)??刂瓢l(fā)光二極管首次輸出為“l(fā)ight1=001,light2=100",表示主干道路綠燈亮,支桿道路紅燈亮,計(jì)數(shù)器num1和num2從“00110101"開始遞減計(jì)數(shù),計(jì)數(shù)至“00000000"時(shí),進(jìn)入下一個(gè)狀態(tài),控制輸出量為light=010,light2=010,表示主、支干道黃燈均亮起,計(jì)數(shù)器num1和num2從“00000101"開始計(jì)數(shù)遞減,計(jì)數(shù)至”00000000"時(shí)進(jìn)入下一個(gè)狀態(tài),light=100,light2=001,表示主干道路紅燈亮,支桿道路綠燈亮.Counter根據(jù)num1,num2變化隨時(shí)鐘上升沿輸出譯碼后的數(shù)據(jù).由于屏幕顯示大小有限,未仿真出一個(gè)完整周期.2.特殊情況仿真波形圖5.特殊情況仿真波形圖形說明當(dāng)hold輸入高電平時(shí),在時(shí)鐘上升沿的控制下,light1與light2被強(qiáng)制置位為”100”,表示兩路紅燈均亮起3.復(fù)位情況仿真波形圖6.復(fù)位情況仿真波形圖形說明當(dāng)rst輸入高電平時(shí),在時(shí)鐘上升沿控制下,計(jì)數(shù)與控制都回到00狀態(tài),即light1=001,light2=100,計(jì)數(shù)器num1和num2從“00110101”開始遞減計(jì)數(shù)。3。2硬件調(diào)試完成時(shí)序仿真確認(rèn)無誤后,進(jìn)行實(shí)驗(yàn)箱管腳設(shè)置,注意設(shè)置完成后一定要再進(jìn)行一次全局仿真,使程序真正對應(yīng)于硬件輸出輸出。具體連接說明如下所示輸入變量:rst、clk、qclk、hold、en其中en,hold,rst接”0-1”撥碼開關(guān),以穩(wěn)定的輸出可變化的電平。計(jì)數(shù)時(shí)鐘clk接實(shí)驗(yàn)箱上1Hz時(shí)鐘,掃描顯示時(shí)鐘qclk接125Khz時(shí)鐘。輸出變量:light1[2:0]、light2[2:0]、counter[6:0]、st1、st2其中l(wèi)ight1[0]、light2[0]分別接綠色的發(fā)光二極管;light1[1]、light2[1]分別接黃色的發(fā)光二極管;light1[2]、light2[2]分別接紅色的發(fā)光二極管.counter[0]~counter[6],分別接七段數(shù)碼管的a~f,st1、st2分別接試驗(yàn)箱上”4-16”譯碼器的低兩位。完成接線后將程序燒寫到芯片上,開始功能調(diào)試.分辨改變使能信號,復(fù)位信號以及特殊情況信號,觀察數(shù)碼管以及發(fā)光二級管情況。程序清單moduletraffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2);inputen,clk,qclk,rst,hold,rst1;outputst1,st2;output[7:0]num1,num2;output[6:0]counter;output[2:0]light1,light2;regtim1,tim2,st1,st2;reg[1:0]state1,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0]num1,num2;reg[7:0]red1,red2,gree(cuò)n1,green2,yellow1,yellow2;always@(en)if(!en)begin//設(shè)置計(jì)數(shù)初值green1〈=8'b00110101;red1<=8’b00100101;yellow1〈=8’b00000101;green2〈=8’b00100101;red2〈=8'b00110101;yellow2<=8'b00000101;endalways@(posedgeclk)beginif(rst)//復(fù)位與特殊情況控制beginlight1〈=3’b001;num1<=green1;endelseif(hold)beginlight1<=3'b100;num1〈=green1;endelseif(en)begin//使能有效開始控制計(jì)數(shù)if(?。簦閙1)//開始控制begin//主干道交通燈點(diǎn)亮控制tim1<=1;case(state1)2'b00:beginnum1〈=green1;light1<=3’b001;state1〈=2'b01;end2'b01:beginnum1〈=yellow1;light1〈=3’b010;state1〈=2'b11;end2'b11:beginnum1<=red1;light1<=3’b100;state1〈=2’b10;end2'b10:beginnum1<=yellow1;light1〈=3’b010;state1<=2'b00;enddefault:light1〈=3’b100;endcaseendelsebegin//倒數(shù)計(jì)時(shí)if(num1>0)if(num1[3:0]==0)beginnum1[3:0]<=4'b1001;num1[7:4]<=num1[7:4]—1;endelsenum1[3:0]〈=num1[3:0]-1;if(num1==1)tim1<=0;endendelsebeginlight1〈=3'b010;num1=2'b00;tim1<=0;endendalways@(posedgeclk)beginif(rst)//復(fù)位與特殊情況控制beginlight2〈
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 營養(yǎng)師考試必會考點(diǎn)試題及答案
- 營養(yǎng)師職業(yè)發(fā)展的規(guī)劃與實(shí)施試題及答案
- 導(dǎo)游證資格考試常見誤區(qū)解析試題及答案
- 思維導(dǎo)圖營養(yǎng)師資格證試題及答案2024
- 營養(yǎng)師資格考試的評分標(biāo)準(zhǔn)試題及答案
- 2024營養(yǎng)師資格證考試新變化試題及答案
- 考前必知的演出經(jīng)紀(jì)人試題及答案
- 演出經(jīng)紀(jì)人資格證考試時(shí)間安排與試題及答案
- 2024年演出經(jīng)紀(jì)人資格證考題分析及試題及答案
- 演出項(xiàng)目的法律合規(guī)性試題及答案
- 2025年勞動(dòng)實(shí)踐課面試題及答案
- 2025年鐵塔考試題庫及答案
- 康養(yǎng) 項(xiàng)目可行性研究報(bào)告
- 注射相關(guān)感染預(yù)防與控制(全文)
- 部編版四年級下冊必讀《十萬個(gè)為什么》閱讀測試題(分章節(jié))
- 雪佛蘭創(chuàng)酷說明書
- 部編(統(tǒng)編)版 一年級下冊語文 教材解讀分析與教學(xué)建議 講座課件(62頁精品PPT)
- 安全責(zé)任承諾書范本
- 校本研修規(guī)章制度
- 二語習(xí)得個(gè)體差異的國外研究現(xiàn)狀
- 初中趣味數(shù)學(xué)PPT課件
評論
0/150
提交評論