版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于的交通燈設(shè)計(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)
基于的交通燈設(shè)計(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)《微型計算機(jī)原理與應(yīng)用》課程設(shè)計報告班級學(xué)生姓名聯(lián)系電話學(xué)號完成日期2013。12.30指導(dǎo)老師目錄一、概述1。題目2.需求分析3.設(shè)計要求二、設(shè)計過程1。設(shè)計過程簡單分析2.硬件原理3.8255芯片資料三、程序設(shè)計1.流程圖2.程序代碼四、總結(jié)附錄概述1、題目:基于8086的交通燈設(shè)計2、需求分析:隨著電子技術(shù)的發(fā)展,計算機(jī)在現(xiàn)代科學(xué)技術(shù)的發(fā)展中起著越來越重要的作用.多媒體技術(shù)、網(wǎng)絡(luò)技術(shù)、智能信息處理技術(shù)、自適用控制技術(shù)、數(shù)據(jù)挖掘與處理技術(shù)等都離不開計算機(jī).本課程設(shè)計是基于微機(jī)原理與接口技術(shù)的簡單應(yīng)用。運(yùn)用所學(xué)的微機(jī)原理和接口技術(shù)知識完成交通燈系統(tǒng).通過硬件與軟件的結(jié)合,用我們剛剛學(xué)過的匯編語言編寫程序模擬分析了現(xiàn)代城市交通控制與管理問題的現(xiàn)狀,結(jié)合交通的實際情況闡述了交通燈控制系統(tǒng)的工作原理,給出了一種簡單實用的交通燈控制系統(tǒng)的硬件、軟件電路設(shè)計方案。該系統(tǒng)適用于單主干道的十字路口?,F(xiàn)假定其主干道為東西方向,次干道為南北方向。3、設(shè)計要求這次課程設(shè)計的題目是交通燈控制器的設(shè)計與實現(xiàn),主要是模擬十字路口的紅綠燈,如圖1-1所示。交通燈控制器的設(shè)計與實現(xiàn)主要是通過編寫匯編語言程序利用8255A的A口燈的亮與滅進(jìn)行控制。首先,要了解的是8255A是如何工作的,包括它的A口、B口、C口和控制端口是如何寫數(shù)據(jù)的,還包括芯片的初始化等。由于只有16個發(fā)光二極管,所以還得弄清楚是每個發(fā)光二極管所代表的燈的顏色及方向.最后要在實驗室通過一個軟件進(jìn)行調(diào)試,調(diào)試通過后即可看到設(shè)計的結(jié)果。要求:圖1-1十字路口交通燈設(shè)計過程1、設(shè)計過程簡單分析紅,黃,綠燈可分別接在8255的A口上,燈的亮滅可直接由8255輸出0,1控制。延時及閃爍由軟件編程實現(xiàn)。2、硬件原理設(shè)計電路如下:由上述電路容易知道紅,黃,綠燈分別接在8255的A口上,端口A地址為8000H,可以通過控制8255端口A輸出的高低電平來控制燈的亮滅,燈的閃爍和延時可直接通過軟件的延時程序解決,這樣可以大大簡化電路的設(shè)計.3、主要芯片資料8255介紹8255的內(nèi)部結(jié)構(gòu)8255A是一個40引腳的雙列直插式集成電路芯片按功能可把8255A(chǔ)分為三個邏輯電路部分,即:口電路、總線接口電路和控制邏輯電路.(1)口電路8255A(chǔ)共有三個8位口,其中A口和B口是單純的數(shù)據(jù)口,供數(shù)據(jù)I/O使用。而C口則既可以作數(shù)據(jù)口,又可以作控制口使用,用于實現(xiàn)A口和B口的控制功能。數(shù)據(jù)傳送中A口所需的控制信號由C口高位部分(PC7~PC4)提供,因此把A口和C口高位部分合在一起稱之為A組;同樣理由把B口和C口低位部分(PC3~PC0)合在一起稱之為B組.(2)總線接口電路總線接口電路用于實現(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共有四個可尋址的端口(即A口、B口、C口和控制寄存器),用二位地址編碼即可實現(xiàn)選擇。參見下表。RESET-復(fù)位信號(高電平有效).復(fù)位之后,控制寄存器清除,各端口被置為輸入方式。讀寫控制邏輯用于實現(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下,可供使用的是兩個8位口(A口和B口)及兩個4位口(C口高4位部分和低4位部分)。四個口可以是輸入和輸出的任何組合。方式0適用于無條件數(shù)據(jù)傳送,也可以把C口的某一位作為狀態(tài)位,實現(xiàn)查詢方式的數(shù)據(jù)傳送.(b)方式1選通輸入/輸出方式A口和B口分別用于數(shù)據(jù)的輸入/輸出.而C口則作為數(shù)據(jù)傳送的聯(lián)絡(luò)信號。具體定義見表7–2.可見A口和B口的聯(lián)絡(luò)信號都是三個,如果A或B只有一個口按方式1使用,則剩下的另外13位口線仍然可按方式0使用。如果兩個口都按方式1使用,則還剩下2位口線,這兩位口線仍然可以進(jìn)行位狀態(tài)的輸入輸出。方式1適用于查詢或中斷方式的數(shù)據(jù)輸入/輸出.(c)方式2雙向數(shù)據(jù)傳送方式只有A口才能選擇這種工作方式,這時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ù)據(jù)裝入8255A的鎖存器。IBF(InputBufferFull)—輸入緩沖器滿信號,輸出,高電平有效。IBF信號有效,表明數(shù)據(jù)已裝入鎖存器,因此它是一個狀態(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)信號由低變高時,產(chǎn)生INTR信號,向單片微機(jī)發(fā)出中斷。單片微機(jī)在響應(yīng)中斷后執(zhí)行中斷服務(wù)程序時讀入數(shù)據(jù),并使INTR信號變低,同時也使IBF信號同時變低。以通知外設(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)信號為高,信號由低變高(后沿)時,中斷請求信號有效。向單片微機(jī)發(fā)出中斷請求。OBF(OutputBufferFull)——輸出緩沖器滿信號,輸出,低電平有效。當(dāng)單片微機(jī)把輸出數(shù)據(jù)寫入8255A鎖存器后,該信號有效,并送去啟動外設(shè)以接收數(shù)據(jù).INTR—中斷請求信號,輸出,高電平有效。數(shù)據(jù)輸出過程:外設(shè)接收并處理完一組數(shù)據(jù)后,發(fā)回ACK信號.該信號使OBF變高,表明輸出緩沖器已空.如使用查詢方式,則OBF可作為狀態(tài)信號供查詢使用;如使用中斷方式,則當(dāng)ACK信號結(jié)束時,INTR有效,向單片微機(jī)發(fā)出中斷請求。在中斷服務(wù)過程中,把下一個輸出數(shù)據(jù)寫入8255A的輸出緩沖器。寫入后OBF有效,表明輸出數(shù)據(jù)已到,并以此信號啟動外設(shè)工作,取走并處理8255A中的輸出數(shù)據(jù)。表7–28255AC口聯(lián)絡(luò)信號定義程序設(shè)計1、流程圖循環(huán)用延時程序延時用延時程序延時延時東西紅燈亮,南北黃燈亮,其他燈滅東西紅燈亮,南北綠燈閃爍,其他燈滅東西紅燈亮,南北綠燈亮,其他循環(huán)用延時程序延時用延時程序延時延時東西紅燈亮,南北黃燈亮,其他燈滅東西紅燈亮,南北綠燈閃爍,其他燈滅東西紅燈亮,南北綠燈亮,其他燈滅延時東西黃燈亮,南北紅燈亮,其他滅東西綠燈閃爍,南北紅燈亮,其他滅東西綠燈亮,南北紅燈亮,其他滅初始化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è)計是要設(shè)計一個交通燈系統(tǒng),主要功能如上已有細(xì)述。在本次對交通燈的設(shè)計過程中以此來加深對微機(jī)接口技術(shù)的理解,提高了自己的動手能力。首先著手對硬件電路的設(shè)計,本次課程設(shè)計主要采用了8255A(chǔ)接口電路。由于對各個芯片不熟悉,通過課本了解到了它們的引腳及功能、工作方式、內(nèi)部結(jié)構(gòu)和控制字。然后就是對程序的設(shè)計,想要設(shè)計出一個實用的控制系統(tǒng)需要了解程序流程,先畫出了流程圖,然后對代碼進(jìn)行編寫,在編寫過程中遇到了很多問題。對芯片的不了解也導(dǎo)致編程的很多的問題,要么燈都不顯示,要么燈顯示不全,再要么紅燈綠燈時間分配不合理。最后經(jīng)過一段時間的研究,查閱了很多資料并和同學(xué)討論后終于一一解決.最后,再說兩句,由于自己太晚才開始做這個課程設(shè)計,導(dǎo)致很多功能沒有實現(xiàn)好,例如想通過8253來對交通燈進(jìn)行定時計數(shù),用七段顯示數(shù)碼管顯示倒計時,但是最后都由于時間緊而選擇軟件實現(xiàn)延時閃爍。不管怎樣,經(jīng)過這次課程設(shè)計,我獲益頗多。將微機(jī)原理這門課程中的理論與實踐相結(jié)合起來,對芯片的功能也有了進(jìn)一步認(rèn)識理解.附錄電路原理圖:元件清單:8086芯片1個8255芯片1個74ls373鎖存器2個74ls138譯碼器1個Led燈12個參考文獻(xiàn):《8086實驗指導(dǎo)書》王榮輝,張曉華編著《微型計算機(jī)原理及應(yīng)用》鄭學(xué)堅,朱定華編著數(shù)字系統(tǒng)課程設(shè)計基于FPGA的交通控制燈設(shè)計姓名:學(xué)號:班級:摘要隨著社會的發(fā)展,城市規(guī)模的不斷擴(kuò)大,城市交通成為制約城市發(fā)展的一大因素。人口和汽車日益增長,市區(qū)交通也日益擁擠,人們的安全問題當(dāng)然也日益重要。因此,紅綠交通信號燈成為交管部門管理交通的重要工具之一。有了交通燈,人們的安全出行也有了很大的保障。自從交通燈誕生以來,其內(nèi)部的電路控制系統(tǒng)就不斷的被改進(jìn),設(shè)計方法也開始多種多樣,從而使交通燈顯得更加智能化.尤其是近幾年來,隨著電子與計算機(jī)技術(shù)的飛速發(fā)展,電子電路分析和設(shè)計方法有了很大的改進(jìn),電子設(shè)計自動化也已經(jīng)成為現(xiàn)代電子系統(tǒng)中不可或缺的工具和手段,這些都為交通燈控制系統(tǒng)的設(shè)計提供了一定的技術(shù)基礎(chǔ)。本課程設(shè)計運(yùn)用erilogHDL語言描述交通控制器,通過狀態(tài)機(jī)計數(shù)法,實現(xiàn)設(shè)計所要求的交通燈控制及時間顯示,并最后進(jìn)行了軟件實現(xiàn),達(dá)到了系統(tǒng)要求的功能。設(shè)計原理1.1設(shè)計要求設(shè)計一個交通控制器,用LED顯示燈表示交通狀態(tài),并以7段數(shù)碼顯示器顯示當(dāng)前狀態(tài)剩余秒數(shù)主干道綠燈亮?xí)r,支干道紅燈亮;反之亦然,二者交替允許通行,主干道每次放行35s,支干道每次放行25s.每次由綠燈變?yōu)榧t燈的過程中,亮光的黃燈作為過渡,黃燈的時間為5s.能進(jìn)行特殊狀態(tài)顯示,特殊狀態(tài)時東西、南北路口均顯示紅燈狀態(tài)。用LED燈顯示倒計時,并且能實現(xiàn)總體清零功能,計數(shù)器由初始狀態(tài)開始計數(shù),對應(yīng)狀態(tài)的顯示燈亮。能實現(xiàn)特殊狀態(tài)的功能顯示,1.2設(shè)計思路和原理本次設(shè)計是針對十字路口,進(jìn)行南北和東西直行情況下交通燈控制。設(shè)定東西方向為主干道方向,根據(jù)交通燈的亮的規(guī)則,在初始狀態(tài)下四個方向的都為紅燈亮啟,進(jìn)入正常工作狀態(tài)后,當(dāng)主干道上綠燈亮?xí)r,支干道上紅燈亮,持續(xù)35S后,主干道和支干道上的黃燈都亮啟,持續(xù)5S后,主干道上紅燈亮啟,支干道上綠燈亮啟持續(xù)25S,之后主干道和支干道上的黃燈都亮啟5s,一個循環(huán)完成.循環(huán)往復(fù)的直行這個過程.其過程如下圖所示:圖1。交通燈點亮?xí)r間控制說明1.3實現(xiàn)方法本次采用文本編輯法,即利用VerilogHDL語言描述交通控制器,通過狀態(tài)機(jī)計數(shù)法,實現(xiàn)設(shè)計所要求的交通燈控制及時間顯示。設(shè)計中用兩組紅黃綠LED模擬兩個方向上的交通燈,用4個7段數(shù)碼管分別顯示兩個方向上的交通燈剩余時間,控制時鐘由試驗箱上頻率信號提供。VerilogHDL程序設(shè)計2.1整體設(shè)計根據(jù)上章設(shè)計原理,交通燈控制的關(guān)鍵是各個狀態(tài)之間的轉(zhuǎn)換和進(jìn)行適當(dāng)?shù)臅r間延時,根據(jù)狀態(tài)機(jī)的設(shè)計規(guī)范,本次設(shè)計了三個狀態(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時主干道綠燈及支干道紅燈亮起,進(jìn)入狀態(tài)01后兩路黃燈亮起,狀態(tài)11時主干道紅燈及支干道綠燈亮起。進(jìn)入10狀態(tài)兩路黃燈亮起.結(jié)束一個循環(huán),從00狀態(tài)重新開始循環(huán).為實現(xiàn)控制與顯示的功能,需要設(shè)計交通燈點亮順序控制程序,倒數(shù)計時程序,七段數(shù)碼管顯示程序,數(shù)碼管顯示掃描程序,其系統(tǒng)結(jié)構(gòu)圖如下所示:圖3.交通燈控制系統(tǒng)結(jié)構(gòu)圖其中rst為復(fù)位信號,clk為時鐘信號,hold為特殊情況控制信號,輸入hold時兩個方向紅燈無條件亮起.2.2具體設(shè)計根據(jù)整體設(shè)計要求,編寫各個功能部分VerilogHDL程序,設(shè)置各輸入輸出變量說明如下clk:為計數(shù)時鐘;qclk:為掃描顯示時鐘;en:使能信號,為1的話,則控制器開始工作;rst:復(fù)位信號,為1的話,控制及技術(shù)回到初始狀態(tài);hoid:特殊情況控制信號,為1的話,則兩個方向無條件顯示為紅燈;light1:控制主干道方向四盞燈的亮滅;其中,light1[0]~light[2],分別控制主干道方向的綠燈、黃燈和紅燈;light2:控制支干道方向四盞燈的亮滅;其中,light2[0]~light2[2],分別控制支干道方向的綠燈、黃燈和紅燈;num1:用于主干道方向燈的時間顯示,8位,可驅(qū)動兩個數(shù)碼管;num2:用于支干道方向燈的時間顯示,8位,可驅(qū)動兩個數(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,green1,green2,yellow1,yellow2;二極管點亮控制該部分程序的作用是根據(jù)計數(shù)器的計數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計時數(shù)值給七段數(shù)碼管的譯碼電路。此外,當(dāng)檢測到特殊情況(hold=‘1’)發(fā)生時,無條件點亮紅燈的二極管,當(dāng)檢測到復(fù)位信號,兩個方向計數(shù)與控制回復(fù)到00狀態(tài)。因為主、支干道兩個方向二極管點亮的順序與延遲時間不同,顧編寫兩個獨立的部分來控制,具體程序如下:1)主干道方向always@(posedgeclk)beginif(rst)//復(fù)位與特殊情況控制beginlight1<=3'b001;num1<=green1;endelseif(hold)beginlight1〈=3'b100;num1<=green1;endelseif(en)begin//使能有效開始控制計數(shù)if(!tim1)//begin//主干道交通燈點亮控制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ù)計時該部分程序完成二極管發(fā)光時延的計數(shù),并將計數(shù)結(jié)果送到數(shù)碼管顯示電路,每切換到一個狀態(tài),計數(shù)器的初值都被重置,以實現(xiàn)不同顏色二極管不同的時延要求。本次設(shè)計直接用邏輯運(yùn)算完成2位十進(jìn)制數(shù)的計數(shù),未采用分位器的設(shè)計。因為主、支干道上計數(shù)器的結(jié)構(gòu)完全相同,顧只列出一路的程序,其具體程序如下所示:always@(posedgeclk)beginelsebegin//倒數(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個7段數(shù)碼管的譯碼顯示及掃描,使系統(tǒng)能正常顯示主、支干道兩個方向上的剩余時間。譯碼的時鐘頻率要低,為Hz級。掃描的時鐘頻率要高,最低不得小于人眼分辨頻率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è)計文件,將程序輸入,整體編譯后,新建波形仿真文件。設(shè)置仿真時間,時鐘周期,輸入輸出端口,進(jìn)行波形仿真.具體仿真波形圖及說明如下所示:仿真截止時間:100us;時鐘:clk1us,qclk0.1us1.正常工作時波形仿真圖圖4.正常工作時波形仿真圖圖形說明波形仿真主要完成了控制與計數(shù)以及數(shù)碼管顯示的波形圖.en為低電品時,計數(shù)器置初值,高電平時開始正常控制與計數(shù)??刂瓢l(fā)光二極管首次輸出為“l(fā)ight1=001,light2=100”,表示主干道路綠燈亮,支桿道路紅燈亮,計數(shù)器num1和num2從“00110101”開始遞減計數(shù),計數(shù)至“00000000”時,進(jìn)入下一個狀態(tài),控制輸出量為light=010,light2=010,表示主、支干道黃燈均亮起,計數(shù)器num1和num2從“00000101”開始計數(shù)遞減,計數(shù)至"00000000”時進(jìn)入下一個狀態(tài),light=100,light2=001,表示主干道路紅燈亮,支桿道路綠燈亮。Counter根據(jù)num1,num2變化隨時鐘上升沿輸出譯碼后的數(shù)據(jù)。由于屏幕顯示大小有限,未仿真出一個完整周期。2.特殊情況仿真波形圖5.特殊情況仿真波形圖形說明當(dāng)hold輸入高電平時,在時鐘上升沿的控制下,light1與light2被強(qiáng)制置位為"100”,表示兩路紅燈均亮起3.復(fù)位情況仿真波形圖6.復(fù)位情況仿真波形圖形說明當(dāng)rst輸入高電平時,在時鐘上升沿控制下,計數(shù)與控制都回到00狀態(tài),即light1=001,light2=100,計數(shù)器num1和num2從“00110101”開始遞減計數(shù)。3.2硬件調(diào)試完成時序仿真確認(rèn)無誤后,進(jìn)行實驗箱管腳設(shè)置,注意設(shè)置完成后一定要再進(jìn)行一次全局仿真,使程序真正對應(yīng)于硬件輸出輸出。具體連接說明如下所示輸入變量:rst、clk、qclk、hold、en其中en,hold,rst接”0-1”撥碼開關(guān),以穩(wěn)定的輸出可變化的電平。計數(shù)時鐘clk接實驗箱上1Hz時鐘,掃描顯示時鐘qclk接125Khz時鐘。輸出變量: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分別接試驗箱上”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,green1,green2,yellow1,yellow2;always@(en)if(!en)begin//設(shè)置計數(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//使能有效開始控制計數(shù)if(!tim1)//開始控制begin//主干道交通燈點亮控制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ù)計時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〈=green2;light2<=3'b001;state2〈=2'b10;end2'b10:beginnum2<=yellow2;light2〈=3’b010;state2<=2’b00;enddefault:light2<=3'b100;endcaseendelsebegin//倒數(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è)計中采用VerilogHDL語言設(shè)計交通燈控制系統(tǒng),借助其功能強(qiáng)大的語言結(jié)構(gòu),簡明的代碼描述復(fù)雜控制邏輯設(shè)計,與工藝無關(guān)特性,在提高工作效率的同時達(dá)到求解目的,并可以通過VerilogHDL語言的綜合工具進(jìn)行相應(yīng)硬件電路生成,具有傳統(tǒng)邏輯設(shè)計方法所無法比擬的優(yōu)越性。在設(shè)計過程中,覺得最難的部分是波形仿真部分,雖然程序編譯通過但仿真出不了正確的波形,不是計數(shù)器無法正常計數(shù),就是控制輸出無法進(jìn)入到下一個狀態(tài),每次出現(xiàn)問題就必須返回重新修改程序.實踐證明,在編寫一個較復(fù)雜的程序時,一開始一定要畫流程圖,弄清楚各個功能及實現(xiàn)它們的邏輯算法,做到心中有數(shù)后在開始下筆寫編寫程序。在編寫的時候要尤其要注意語言的規(guī)范,如本次設(shè)計中編寫的Verilog在Quartus8。1中可以正常生成時序圖,而在低版本的軟件中卻無法生成,原因就是語言使用不規(guī)范,在解決這個問題時我總結(jié)了一些經(jīng)驗,首先程序要邏輯清晰,簡潔明了,避免不必要的嵌套與條用,其次要適當(dāng)?shù)亟o程序加上注解文字,提高可讀性,以方便之后的程序出錯時進(jìn)行查找,最后充分利用仿真軟件提供的各項編譯工具與報錯消息,按圖索驥,有方向的完成程序調(diào)試。完成仿真后進(jìn)行,進(jìn)行試驗箱上的硬件調(diào)試,該步驟主要是要求細(xì)心,按照引腳清單,逐一完成連線,本次設(shè)計用到兩個時鐘輸入,注意一定要選擇合適頻率的時鐘,以便達(dá)到期望的效果。注意觀察實物的現(xiàn)象,看是否滿足設(shè)計要求,不滿足時檢查是硬件問題還是程序問題,如果是程序問題,在修改完之后必須要重新編譯,重新燒入.不斷排查錯誤,直至達(dá)到滿意的效果。通過這次課程設(shè)計,熟悉了簡單EDA設(shè)計的整個流程,加深了對VerilogHDL硬件描述語言的理解,提高了動手能力,并且鍛煉了自己的耐心,收獲頗豐,我會把在本次課程設(shè)計中學(xué)到的東西應(yīng)用到今后的工作學(xué)習(xí)中。參考資料[1]夏宇聞.復(fù)雜數(shù)字電路與系統(tǒng)的VerilogHDL設(shè)計技術(shù)[M]。北京:北京航空航天大學(xué)出版社,1998[2]郭梯云.移動通信[M].西安:西安電子科技大學(xué)出版社,1995[3][法]MichelMouly,MarieBernadettePautet1GSM數(shù)字移動通信系統(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ù)字蜂窩移動交換系統(tǒng)測試[J]。電信科學(xué),2000[7]張明。VerilogHDL實用教程[M].成都:電子科技大學(xué)出版社,1999[8]HydeDC.BucknellHandbookonVerilogHDL1ComputerScienceDepartment,BucknellUniversityLewisburg,1995[9]康華光.電子技術(shù)基礎(chǔ)(數(shù)字部分)[M].北京:高等教育出版社,1988虛擬儀器課程設(shè)計——基于LabVIEW的交通燈設(shè)計專業(yè):姓名:學(xué)號:一、課題研究背景和意義近年來,在快速城市化進(jìn)程和經(jīng)濟(jì)發(fā)展的影響下,機(jī)動車輛已成為普遍的代步工具,交通負(fù)荷越來越重,交通問題成為困擾許多大城市發(fā)展的通病,已成為日趨嚴(yán)峻的國際性問題.其中,十字路口則是造成交通堵塞的主要"瓶頸”.交通信號燈成為了維護(hù)交通秩序的必備工具。交通信號燈的使用有效減小了交通擁堵維護(hù)交通順暢.
此次課設(shè)的題目的是設(shè)計交通信號燈。在設(shè)計的過程中了解了交通燈的顯示規(guī)則,增強(qiáng)了加強(qiáng)交通安全的意識,其次運(yùn)用已學(xué)知識設(shè)計信號燈便于更好的掌握labview軟件的使用,培養(yǎng)綜合應(yīng)用所學(xué)知識來指導(dǎo)實踐的能力。二、程序設(shè)計思路通過采用基于虛擬儀器的交通燈系統(tǒng)設(shè)計,自動控制十字路口四組紅、黃、綠交通燈和四組人行道暗、綠狀態(tài)的轉(zhuǎn)變,指揮著行人和車輛的安全運(yùn)行,實現(xiàn)十字路口的自動指揮和改善交通管理.綠燈亮?xí)r,允許車輛和行人通行。紅燈亮?xí)r,禁止車輛和行人通行,為交通安全提供保障。同時會有時間的顯示。程序采用條件結(jié)構(gòu),做五個分支,分別對應(yīng)五種運(yùn)行模式:正常運(yùn)行:在正常運(yùn)行模式中,再用時鐘信號做選擇條件做四個分支,實現(xiàn)交通信號的循環(huán)變換,控制邏輯順序如下:(1)南北紅和東西綠(30秒);(2)南北紅和東西黃(05秒);(3)南北綠和東西紅(30秒);(4)南北綠和東西黃(05秒);東西禁行:東西方向亮紅燈禁止通行,南北方向亮綠燈允許通行.南北禁行:東西方向亮綠燈允許通行,南北方向亮紅燈禁止通行。兩向禁行:東西南北方向全亮紅燈禁止通行。檢修:把信號燈全部熄滅.在各運(yùn)行模式中,每個條件結(jié)構(gòu)里的程序基本相同:用需要點亮的燈與布爾真常量連接,不需要點亮的與布爾假常量連接,而兩方向燈的時間顯示器則用一定的值減去輸入的時間量,以實現(xiàn)倒計時的功能。2.1前面板的設(shè)計本設(shè)計中前面板需要用20盞燈、4個時間顯示器、1個菜單下拉列表、1個停止按鍵即可。其中十字路口的12盞燈,紅、黃、各4盞,綠燈12盞,在控件選板中選擇指示燈,將它放在前面板合適的位置,單擊鼠標(biāo)右鍵,更改指示燈的屬性,改變指示燈的大小和顏色,做出一個合適的指示燈.道理指示燈三個分為一組,每組都包含紅黃綠三種顏色的燈,再用框?qū)⒚拷M燈框起來,做成一個交通燈。在每組交通燈合適的位置放置一個數(shù)值顯示控件作為交通燈的計時器,同樣的方法另做人行道的8盞綠燈燈.并在前面板合適的位置放置一個控制窗口,用于選擇交通燈的運(yùn)行模式及控制其開始與停止,然后設(shè)置窗口大小。這樣交通燈系統(tǒng)的前面板就做好了.交通燈前面板設(shè)計如下面圖1所示。圖1交通燈前面板示意圖圖1交通燈前面板示意圖2.2單位時間信號的產(chǎn)生時鐘信號用毫秒計時器產(chǎn)生。毫秒計時器計時十毫秒,10毫秒記反饋節(jié)點加一,要產(chǎn)生一個一秒為單位的時間信號,所以還得用計數(shù)值除以100,取商得到以秒為單位的時間信號。圖2單位時間信號2.3時間信號的分段將所得的時間信號除以每個循環(huán)所用的時間70s,取其余數(shù),得到的余數(shù)x的范圍為0〈=x<70。當(dāng)運(yùn)行模式選擇為正常運(yùn)行時,執(zhí)行條件結(jié)構(gòu)里為序號0的程序。當(dāng)0<=x<30時,條件成立,執(zhí)行程序框圖中第一個條件結(jié)構(gòu)里面的程序,東西通行。當(dāng)30〈=x〈35時,條件成立,執(zhí)行框圖中第二個條件結(jié)構(gòu)里的程序,東西亮黃燈.當(dāng)35〈=x<65時,條件成立執(zhí)行框圖中第三個條件結(jié)構(gòu)里的程序,南北通行。當(dāng)65<=x<70時,條件滿足,執(zhí)行框圖中第四個條件結(jié)構(gòu)里的程序,南北亮黃燈.時間分段的程序框圖如下圖所示.圖3條件為真的各時間分段程序這里用到了判定范圍并強(qiáng)制轉(zhuǎn)換控件,應(yīng)用這個控件可以判定輸入的數(shù)是否在上限和下限之間.它的圖標(biāo)和作用如下圖4所示。如果輸出信號在范圍之內(nèi),“?"接口會有一個信號,該信號恰可以輸入到條件結(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)實現(xiàn).這兩種循環(huán)結(jié)構(gòu)、語句、功能基本相同,但使用上會有些不同。for循環(huán)須先進(jìn)行循環(huán)次數(shù)的確定,循環(huán)一定次數(shù)后自動不進(jìn)行循環(huán);而while循環(huán)則不用確定循環(huán)次數(shù),只需要確定退出循環(huán)的條件.本次課程設(shè)計中不能預(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)包括兩個端口:1、條件端口2、重復(fù)端口,如下圖5所示。本次課程設(shè)計中用停止按鈕連接條件端口,當(dāng)按下按鈕時循環(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é)束時,便會檢測輸入端接收到的布爾值并判斷是否繼續(xù)執(zhí)行循環(huán)。右擊端口,選擇【真(T)時停止】或【真(T)時繼續(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)行的時候其端口會判斷送來的控制條件,指引選擇結(jié)構(gòu)去執(zhí)行相應(yīng)框架里的內(nèi)容。在本程序中的控制條件為運(yùn)行模式序號及從規(guī)定范圍并強(qiáng)制轉(zhuǎn)換的“范圍內(nèi)?”端口輸出的判斷值。選擇端口的外部控制條件的數(shù)據(jù)有整型、字符串型、布爾型和枚舉型。其接線可任意放在框圖左邊的某一位置。如果其數(shù)據(jù)為布爾型,那么這個結(jié)構(gòu)包含真和假兩個分支,這是該軟件所默認(rèn)的選擇框架類型。若為其它類型則可以隨意使用分支的個數(shù)。要注意的是,在使用條件結(jié)構(gòu)的時候,控制條件的數(shù)據(jù)類型要和選擇標(biāo)簽中的類型一樣,如果不一致的話,LabVIEW顯示出現(xiàn)錯誤,與此同時選擇器中的字體的顏色也會變?yōu)榧t色.本次課程設(shè)計中,當(dāng)各組條件為真時,將執(zhí)行其框圖的程序。每個條件結(jié)構(gòu)里的程序基本相同。用需要點亮的燈與布爾真常量連接,不需要點亮的與布爾假常量連接,而兩方向燈的時間顯示器則用一定的值減去輸入的時間量,以實現(xiàn)倒計時的功能,各結(jié)構(gòu)里的程序略有不同。三、各種運(yùn)行模式的程序正常運(yùn)行模式的程序程序用時鐘信號做選擇條件做四個分支,從左到右依次執(zhí)行四個條件結(jié)構(gòu),實現(xiàn)交通信號的循環(huán)變換,正常運(yùn)行模式的程序如下:各段時間信號程序:第一階段:余數(shù)在0~30s之間,條件結(jié)構(gòu)1條件滿足,十字路口南北紅燈和東西綠燈點亮,人行道南北方方綠燈亮.東西燈時間顯示為離綠燈熄滅的時間(從30s到1s),北燈時間顯示為離紅燈熄滅的時間(從35s到6s)。程序框圖如圖所示第二階段:余數(shù)在30~35間,條件結(jié)構(gòu)2件滿足,十字路口南北紅燈和東西黃燈點亮,人行道南北方綠燈亮。東燈時間顯示為離黃燈熄滅的時間(從5s到1s),北燈時間繼續(xù)顯示為離紅燈熄滅的時間(從5s到1s)。程序框圖如右所示第三階段:余數(shù)在35~65s時,條件結(jié)構(gòu)4的條件滿足,十字路口南北綠燈和東西紅燈點亮,人行道東西方綠燈亮。東西燈時間顯示為離紅燈熄滅的時間(從35s到6s),南北燈時間顯示為離綠燈熄滅的時間(從30s到1s)。程序框圖如右所示第四階段:余數(shù)在65~70s之間,條件結(jié)構(gòu)4條件滿足,十字路口南北黃燈和東西紅燈點亮,人行道東西方綠燈亮.東燈時間顯示為離紅燈熄滅的時間(從5s到1s),北燈時間顯示為離黃燈熄滅的時間(從5s到1s)。程序框圖如右所示東西禁行模式的程序用東西紅燈及南北綠燈與布爾真常量連接,人行道南北方向綠燈與布爾真常量連接,其余燈的與布爾假常量連接,而兩方向燈的時間顯示器則輸入零值。東西禁行模式的程序:南北禁行模式的程序用東西綠燈及南北紅燈與布爾真常量連接,人行道東西方向綠燈與布爾真常量連接,其余燈的與布爾假常量連接,而兩方向燈的時間顯示器則輸入零值南北禁行模式的程序:兩向禁行模式的程序用東西南北的紅燈與布爾真常量連接,人行道東西南北方向綠燈與布爾真常量連接,其余燈的與布爾假常量連接,而兩方向燈的時間顯示器則輸入零值。兩向禁行模式的程序:檢修模式的程序全部的燈與布爾假常量連接,而兩方向燈的時間顯示器則輸入零值。檢修模式的程序:四、交通燈設(shè)計調(diào)試結(jié)果本次所設(shè)計的交通燈有五種運(yùn)行模式:正常運(yùn)行、東西禁行、南北禁行、兩向禁行、檢修。調(diào)試結(jié)果如下所示:正常運(yùn)行:東西禁行:南北禁行:兩向禁行:檢修:數(shù)字系統(tǒng)課程設(shè)計基于FPGA的交通控制燈設(shè)計姓名:學(xué)號:班級:摘要隨著社會的發(fā)展,城市規(guī)模的不斷擴(kuò)大,城市交通成為制約城市發(fā)展的一大因素.人口和汽車日益增長,市區(qū)交通也日益擁擠,人們的安全問題當(dāng)然也日益重要。因此,紅綠交通信號燈成為交管部門管理交通的重要工具之一。有了交通燈,人們的安全出行也有了很大的保障.自從交通燈誕生以來,其內(nèi)部的電路控制系統(tǒng)就不斷的被改進(jìn),設(shè)計方法也開始多種多樣,從而使交通燈顯得更加智能化。尤其是近幾年來,隨著電子與計算機(jī)技術(shù)的飛速發(fā)展,電子電路分析和設(shè)計方法有了很大的改進(jìn),電子設(shè)計自動化也已經(jīng)成為現(xiàn)代電子系統(tǒng)中不可或缺的工具和手段,這些都為交通燈控制系統(tǒng)的設(shè)計提供了一定的技術(shù)基礎(chǔ)。本課程設(shè)計運(yùn)用erilogHDL語言描述交通控制器,通過狀態(tài)機(jī)計數(shù)法,實現(xiàn)設(shè)計所要求的交通燈控制及時間顯示,并最后進(jìn)行了軟件實現(xiàn),達(dá)到了系統(tǒng)要求的功能。設(shè)計原理1。1設(shè)計要求設(shè)計一個交通控制器,用LED顯示燈表示交通狀態(tài),并以7段數(shù)碼顯示器顯示當(dāng)前狀態(tài)剩余秒數(shù)主干道綠燈亮?xí)r,支干道紅燈亮;反之亦然,二者交替允許通行,主干道每次放行35s,支干道每次放行25s。每次由綠燈變?yōu)榧t燈的過程中,亮光的黃燈作為過渡,黃燈的時間為5s.能進(jìn)行特殊狀態(tài)顯示,特殊狀態(tài)時東西、南北路口均顯示紅燈狀態(tài)。用LED燈顯示倒計時,并且能實現(xiàn)總體清零功能,計數(shù)器由初始狀態(tài)開始計數(shù),對應(yīng)狀態(tài)的顯示燈亮.能實現(xiàn)特殊狀態(tài)的功能顯示,1.2設(shè)計思路和原理本次設(shè)計是針對十字路口,進(jìn)行南北和東西直行情況下交通燈控制。設(shè)定東西方向為主干道方向,根據(jù)交通燈的亮的規(guī)則,在初始狀態(tài)下四個方向的都為紅燈亮啟,進(jìn)入正常工作狀態(tài)后,當(dāng)主干道上綠燈亮?xí)r,支干道上紅燈亮,持續(xù)35S后,主干道和支干道上的黃燈都亮啟,持續(xù)5S后,主干道上紅燈亮啟,支干道上綠燈亮啟持續(xù)25S,之后主干道和支干道上的黃燈都亮啟5s,一個循環(huán)完成。循環(huán)往復(fù)的直行這個過程.其過程如下圖所示:圖1.交通燈點亮?xí)r間控制說明1。3實現(xiàn)方法本次采用文本編輯法,即利用VerilogHDL語言描述交通控制器,通過狀態(tài)機(jī)計數(shù)法,實現(xiàn)設(shè)計所要求的交通燈控制及時間顯示。設(shè)計中用兩組紅黃綠LED模擬兩個方向上的交通燈,用4個7段數(shù)碼管分別顯示兩個方向上的交通燈剩余時間,控制時鐘由試驗箱上頻率信號提供。VerilogHDL程序設(shè)計2。1整體設(shè)計根據(jù)上章設(shè)計原理,交通燈控制的關(guān)鍵是各個狀態(tài)之間的轉(zhuǎn)換和進(jìn)行適當(dāng)?shù)臅r間延時,根據(jù)狀態(tài)機(jī)的設(shè)計規(guī)范,本次設(shè)計了三個狀態(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時主干道綠燈及支干道紅燈亮起,進(jìn)入狀態(tài)01后兩路黃燈亮起,狀態(tài)11時主干道紅燈及支干道綠燈亮起。進(jìn)入10狀態(tài)兩路黃燈亮起。結(jié)束一個循環(huán),從00狀態(tài)重新開始循環(huán).為實現(xiàn)控制與顯示的功能,需要設(shè)計交通燈點亮順序控制程序,倒數(shù)計時程序,七段數(shù)碼管顯示程序,數(shù)碼管顯示掃描程序,其系統(tǒng)結(jié)構(gòu)圖如下所示:圖3.交通燈控制系統(tǒng)結(jié)構(gòu)圖其中rst為復(fù)位信號,clk為時鐘信號,hold為特殊情況控制信號,輸入hold時兩個方向紅燈無條件亮起。2.2具體設(shè)計根據(jù)整體設(shè)計要求,編寫各個功能部分VerilogHDL程序,設(shè)置各輸入輸出變量說明如下clk:為計數(shù)時鐘;qclk:為掃描顯示時鐘;en:使能信號,為1的話,則控制器開始工作;rst:復(fù)位信號,為1的話,控制及技術(shù)回到初始狀態(tài);hoid:特殊情況控制信號,為1的話,則兩個方向無條件顯示為紅燈;light1:控制主干道方向四盞燈的亮滅;其中,light1[0]~light[2],分別控制主干道方向的綠燈、黃燈和紅燈;light2:控制支干道方向四盞燈的亮滅;其中,light2[0]~light2[2],分別控制支干道方向的綠燈、黃燈和紅燈;num1:用于主干道方向燈的時間顯示,8位,可驅(qū)動兩個數(shù)碼管;num2:用于支干道方向燈的時間顯示,8位,可驅(qū)動兩個數(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,green2,yellow1,yellow2;二極管點亮控制該部分程序的作用是根據(jù)計數(shù)器的計數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計時數(shù)值給七段數(shù)碼管的譯碼電路。此外,當(dāng)檢測到特殊情況(hold=‘1’)發(fā)生時,無條件點亮紅燈的二極管,當(dāng)檢測到復(fù)位信號,兩個方向計數(shù)與控制回復(fù)到00狀態(tài)。因為主、支干道兩個方向二極管點亮的順序與延遲時間不同,顧編寫兩個獨立的部分來控制,具體程序如下:1)主干道方向always@(posedgeclk)beginif(rst)//復(fù)位與特殊情況控制beginlight1〈=3’b001;num1〈=green1;endelseif(hold)beginlight1<=3'b100;num1<=green1;endelseif(en)begin//使能有效開始控制計數(shù)if(!tim1)//begin//主干道交通燈點亮控制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(!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ù)計時該部分程序完成二極管發(fā)光時延的計數(shù),并將計數(shù)結(jié)果送到數(shù)碼管顯示電路,每切換到一個狀態(tài),計數(shù)器的初值都被重置,以實現(xiàn)不同顏色二極管不同的時延要求。本次設(shè)計直接用邏輯運(yùn)算完成2位十進(jìn)制數(shù)的計數(shù),未采用分位器的設(shè)計。因為主、支干道上計數(shù)器的結(jié)構(gòu)完全相同,顧只列出一路的程序,其具體程序如下所示:always@(posedgeclk)beginelsebegin//倒數(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個7段數(shù)碼管的譯碼顯示及掃描,使系統(tǒng)能正常顯示主、支干道兩個方向上的剩余時間。譯碼的時鐘頻率要低,為Hz級。掃描的時鐘頻率要高,最低不得小于人眼分辨頻率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è)計文件,將程序輸入,整體編譯后,新建波形仿真文件。設(shè)置仿真時間,時鐘周期,輸入輸出端口,進(jìn)行波形仿真。具體仿真波形圖及說明如下所示:仿真截止時間:100us;時鐘:clk1us,qclk0.1us1.正常工作時波形仿真圖圖4.正常工作時波形仿真圖圖形說明波形仿真主要完成了控制與計數(shù)以及數(shù)碼管顯示的波形圖.en為低電品時,計數(shù)器置初值,高電平時開始正??刂婆c計數(shù)??刂瓢l(fā)光二極管首次輸出為“l(fā)ight1=001,light2=100",表示主干道路綠燈亮,支桿道路紅燈亮,計數(shù)器num1和num2從“00110101"開始遞減計數(shù),計數(shù)至“00000000"時,進(jìn)入下一個狀態(tài),控制輸出量為light=010,light2=010,表示主、支干道黃燈均亮起,計數(shù)器num1和num2從“00000101"開始計數(shù)遞減,計數(shù)至”00000000"時進(jìn)入下一個狀態(tài),light=100,light2=001,表示主干道路紅燈亮,支桿道路綠燈亮.Counter根據(jù)num1,num2變化隨時鐘上升沿輸出譯碼后的數(shù)據(jù).由于屏幕顯示大小有限,未仿真出一個完整周期.2.特殊情況仿真波形圖5.特殊情況仿真波形圖形說明當(dāng)hold輸入高電平時,在時鐘上升沿的控制下,light1與light2被強(qiáng)制置位為”100”,表示兩路紅燈均亮起3.復(fù)位情況仿真波形圖6.復(fù)位情況仿真波形圖形說明當(dāng)rst輸入高電平時,在時鐘上升沿控制下,計數(shù)與控制都回到00狀態(tài),即light1=001,light2=100,計數(shù)器num1和num2從“00110101”開始遞減計數(shù)。3。2硬件調(diào)試完成時序仿真確認(rèn)無誤后,進(jìn)行實驗箱管腳設(shè)置,注意設(shè)置完成后一定要再進(jìn)行一次全局仿真,使程序真正對應(yīng)于硬件輸出輸出。具體連接說明如下所示輸入變量:rst、clk、qclk、hold、en其中en,hold,rst接”0-1”撥碼開關(guān),以穩(wěn)定的輸出可變化的電平。計數(shù)時鐘clk接實驗箱上1Hz時鐘,掃描顯示時鐘qclk接125Khz時鐘。輸出變量: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分別接試驗箱上”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,green1,green2,yellow1,yellow2;always@(en)if(!en)begin//設(shè)置計數(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//使能有效開始控制計數(shù)if(?。簦閙1)//開始控制begin//主干道交通燈點亮控制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ù)計時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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)五年級《分?jǐn)?shù)加減混合運(yùn)算》教學(xué)設(shè)計
- 小學(xué)數(shù)學(xué)一年級上冊:10以內(nèi)口算過關(guān)練習(xí)題
- 《瞳孔大小的臨床見》課件
- 湖南省株洲市2025屆高三上學(xué)期教學(xué)質(zhì)量統(tǒng)一檢測物理答案
- 高考新課標(biāo)語文模擬試卷系列之66
- 《病房監(jiān)護(hù)系統(tǒng)》課件
- 《研究性學(xué)習(xí)的評價》課件
- 《汽車行業(yè)發(fā)展》課件
- 營養(yǎng)科護(hù)士年終總結(jié)
- 建材行業(yè)人事工作總結(jié)
- 江蘇省鹽城市、南京市2024-2025學(xué)年度第一學(xué)期期末調(diào)研測試高三政治試題(含答案)
- 駕校教練安全培訓(xùn)課件
- 中央2024年住房和城鄉(xiāng)建設(shè)部信息中心招聘3人筆試歷年典型考點(頻考版試卷)附帶答案詳解
- 2024-2025學(xué)年二年級數(shù)學(xué)上冊期末樂考非紙筆測試題(二 )(蘇教版)
- 光伏項目施工總進(jìn)度計劃表(含三級)
- 溝通的藝術(shù)智慧樹知到期末考試答案章節(jié)答案2024年湖南師范大學(xué)
- 2024高考復(fù)習(xí)必背英語詞匯3500單詞
- 中國核電標(biāo)準(zhǔn)化組織方式及工作方案
- 淺談循環(huán)流化床鍋爐與煤粉爐比較探究
- 墜床跌倒處理流程圖
- 斷路器試驗介紹
評論
0/150
提交評論