




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
武漢理工大學畢業(yè)設計(論文)基于FPGA的數字交通燈控制器設計學院(系):自動化學院專業(yè)班級:電氣
1106班學生姓名:指導教師:學位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的論文是本人在導師的指導下獨立進行研究所取得的研究成果。除了文中特別加以標注引用的內容外,本論文不包括任何其他個人或集體已經發(fā)表或撰寫的成果作品。本人完全意識到本聲明的法律后果由本人承擔。作者簽名:年月日學位論文版權使用授權書本學位論文作者完全了解學校有關保障、使用學位論文的規(guī)定,同意學校保留并向有關學位論文管理部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。本人授權省級優(yōu)秀學士論文評選機構將本學位論文的全部或部分內容編入有關數據進行檢索,可以采用影印、縮印或掃描等復制手段保存和匯編本學位論文。本學位論文屬于1、保密囗,在10年解密后適用本授權書2、不保密。(請在以上相應方框內打“√”)作者簽名:年月日導師簽名:年月日第1章緒論1.1課題背景及意義在世界經濟飛速發(fā)展的今天,中國的經濟、科技、文化等各方面也在快速發(fā)展著。在過去的幾十年中,中國在經濟增長上取得了舉世矚目的成就,而伴隨著人們生活的需要和生產的發(fā)展,城市交通也開始變得重要起來。因為城市交通在很大程度上控制和制約著這個城市經濟的發(fā)展情況,若果一個城市交通情況較好,那么就能使得交通運輸更加有效率,從而促進城市經濟的發(fā)展;相反,不好的交通現狀將會嚴重制約著經濟的發(fā)展,交通狀況對于城市的發(fā)展至關重要,它能夠影響物流運輸效率,進而反映出城市的基礎設施建設情況以及運轉效率。交通狀況差的區(qū)域往往經濟水平不高,這一點從偏遠山區(qū)和城市地區(qū)的發(fā)展也能體現出來。另一方面,城市人口和車輛的增加,使得城市交通情況變得更加復雜,城市交通面臨著越來越嚴重的問題,其中比較明顯的就是交通擁堵和交通安全問題,這些問題將會威脅著人們的安全和經濟的發(fā)展不僅給人們的生活帶來不便,而且可能會導致嚴重的事故,造成人員傷亡。因此交通一方面它給人們的生活帶來了很大的便利,也促進了經濟的發(fā)展,在當今這個對速度和效率很重視的時代,交通更是有著難以替代的地位。目前在我國的城市交通系統(tǒng)中,雖然一些城市的軌道交通,特別是地鐵的建設速度比較快,但是地鐵建設投資較大,對于我國來說,只有一些省會或者發(fā)達城市有能力使用地鐵,所以地鐵建設發(fā)展緩慢,要在全國范圍內形成統(tǒng)一的軌道交通體系,還需要很漫長的時間。就我國的經濟情況和發(fā)展水平來看,主要的運輸方式還是地面公共交通。而要對地面交通情況進行實時控制,在每個主要的路口安裝紅綠燈已經是較為普遍比較早的交通管理方式之一,在我國這樣人多,、路況復雜的情況來講下,紅綠燈的調節(jié)和通過交通燈合理規(guī)劃控制車流量的作用就顯得尤為重要。與路口有交通警察指揮控制車輛通行相比,普通的交通燈系統(tǒng)雖然不能像人那樣,能夠按照路口實際的交通情況,更加合理的分配車流量,并實時地人性化地處理緊急交通事故,但是交通燈系統(tǒng),依然能夠在一般的路口完成有效控制車流量,提高道路使用率的功能。而現在,隨著科學技術的飛速發(fā)展,智能交通燈系統(tǒng)也更加容易實現。在硬件方面,可以設計出基于AT89C51單片機的交通燈控制系統(tǒng),這種控制系統(tǒng)實際控制能力較強,能較好地控制交通燈信號按指定規(guī)律變化;也可以利用可編程控制器(PLC)設計出相應功能的交通燈控制器,這種控制器在同樣能完成相同指定功能的情況下,則會使得系統(tǒng)顯得結構更加緊湊,使用方便而且具有很強的適應性。但是,前面的兩種設計方案相比于基于FPGA的控制器,設計的系統(tǒng)會使用更多的元件,使整個系統(tǒng)顯得更加復雜。1.2設計主體思路智能交通燈的設計是數字系統(tǒng)設計中一個典型的實例,目前,電子設計自動化技術(EDA技術)的發(fā)展使硬件設計和軟件設計更加易于實現。而基于大規(guī)??删幊唐骷‵PGA/CPLD)的EDA技術也趨于成熟,在數字系統(tǒng)的設計中,相比其他集成電路,應用FPGA器件會使系統(tǒng)結構簡單,集成度高,工作性能比較穩(wěn)定,所以本文采用了基于FPGA的交通燈控制器的設計。1.2.1交通燈設計目標本研究課題要求設計實現了一種根據主干道車流量情況,一個具有可在四種不同信號燈之間實現狀態(tài)轉換的交通燈控制器,設計要求是:該設計通過交通燈來控制一個十字路口由由一條主干道和一條支干道組成的十字路口,在每個入口處都要設置了一個有四盞信號燈的顯示器,分別為紅燈、綠燈、黃燈和左轉允許燈,其中路口紅燈亮表示該路口禁止通行,綠燈亮則表示允許通行,黃燈亮表示給正在行駛中的車輛有時間停止在禁行等待線外,左轉燈亮表示允許車輛向左轉彎。該設計的交通燈控制器在開始執(zhí)行后,應該能按照預定的變換規(guī)律執(zhí)行各信號燈控制時序,該信號燈控制器的其變換規(guī)律為:使主干道和支干道能夠交替允許車輛通行,具體為主干道每次放行45s,此時主干道的綠燈亮,然后亮5s黃燈,讓正在行駛的車輛能夠有時間停到禁行等待線以外,在此過程中,支干道則是紅燈亮;而支干道每次則放行25s,亮5s黃燈,在這過程中,主干道紅燈亮,禁止車輛通行……。這是交通信號燈一整個周期里應該完成的所有的狀態(tài)顯示,交通信號燈在一個周期內能夠完成所有的狀態(tài)顯示,其中每種信號燈的顯示時間采用倒數計時的方式,在信號燈開始亮到下一種信號燈亮的過程中,用數碼管將倒數的時間實時地顯示出來。各個信號燈依此循環(huán)工作,直到控制器接收到暫停信號或者其他緊急情況的發(fā)生。1.2.2交通燈控制器設計思路根據以上描述設計的交通燈控制器所要完成的功能,可以將整個控制器系統(tǒng)分為實現不同功能的系統(tǒng)模塊。首先是主控制器模塊,這個模塊是整個系統(tǒng)的核心部分,控制器模塊程序描述的是交通燈所要實現的功能,通過控制器模塊,可以根據交通規(guī)則或者實際情況,相應地改變交通燈控制器的工作狀態(tài),實現對路口車流量的控制。同時,主控制器模塊可以根據定時計數器的計數情況,對交通信號燈的亮滅和持續(xù)時間進行控制,并控制顯示器模塊將信號倒計時數值顯示在數碼管上,如果需要,還可以手動調節(jié)各信號燈的倒計時持續(xù)時間,根據實際車流量改變路口各個方向上放行和禁止通行的時間。在這個系統(tǒng)的設計過程中,因為紅綠黃燈顯示的時間將會不同,所以要進行三種時間的定時,就要將主控制器模塊輸出的信號,利用一個置數模塊對定時時間的選擇進行控制,以選擇出系統(tǒng)所需要的三種時間信號。要將各種顏色的信號燈的計時時間用倒數計時的方式,顯示在數碼管上,就要設計一個定時計數器模塊。定時計數器模塊由主控制器模塊確定計時的起始、終止和倒計時持續(xù)時間,以秒為單位倒計時,通過主控制器模塊確定交通燈的狀態(tài)轉換和持續(xù)時間,當倒計時數值減為零時,主控電路改變輸出狀態(tài),電路進入下一個狀態(tài)的倒計時。在將定時計數器模塊的倒數計時數值顯示出來的過程中,需要對其輸出的信號進行譯碼,就要設計一個譯碼模塊,輸出相應的譯碼信號,并用數碼管與譯碼模塊相連接,由數碼管顯示當前計數值。如圖1.1所示,為設計的交通燈控制器系統(tǒng)的原理框圖。將整個控制器系統(tǒng)按照實現功能的不同,分為幾個主要的功能模塊之后,可以得到設計交通燈控制器的初步構思方案。首先,對于系統(tǒng)來說,輸入信號為主干道和支干道各個時刻的通行時間和禁行時間,該輸入信號可以用一個總的輸入時鐘頻率來得到,即將一個時鐘頻率分頻,通過程序的控制,輸出不同頻率的時鐘信號,這樣就得到了不同的交通燈信號倒計時持續(xù)時間。有了不同的時鐘信號,就能利用VHDL語言編寫相應的控制程序,通過主控制器對輸入的時鐘頻率進行逐個掃描,并將掃描得到的信號送入譯碼驅動電路中,在譯碼器中進行譯碼,得到相應時鐘信號的二進制數值,并在數碼管上顯示出來。這一系列的信號轉換與信號輸出,將在Quartus軟件的開發(fā)平臺上,通過VHDL語言,將整個交通燈控制器的功能實現出來,最終呈現在各個路口的數碼管顯示器上。當控制器的程序編寫無誤,在軟件上進行仿真時,將會看到得到與設計功能相符的邏輯信號仿真結果,在硬件調試過程中,會看到各個數碼管顯示器會按照實際交通燈信號,循環(huán)顯示出各個狀態(tài)。圖1.1交通燈控制器原理框圖第2章交通燈控制器的設計2.1FPGA器件簡介FPGA是FiledProgrammableGateArray的縮寫,即現場可編程邏輯陣列。FPGA是在復雜的可編程邏輯器件的基礎上發(fā)展起來的新型高性能可編程邏輯器件,它一般采用SRAM工藝,也有一些專用的器件采用Flash工藝。FPGA的集成度很高,其器件密度從數萬系統(tǒng)門到數千系統(tǒng)門不等,可以完成及其復雜的時序與組合邏輯電路功能,適用于高速、高密度的高端數字邏輯電路設計領域。簡化的FPGA的基本由六部分組成,分別為可編程輸入輸出單元、基本可編程邏輯單元、嵌入式塊RAM、豐富的布線資源、底層嵌入功能單元和內嵌專用硬核等。FPGA器件及其開發(fā)系統(tǒng)是開發(fā)大規(guī)模數字集成電路的新技術。它利用計算機輔助設計,繪制出實現用戶邏輯的原理圖、編輯硬件描述語言等方式作為設計輸入;然后經一系列轉換程序、自動布局布線、模擬仿真的過程;最后生成FPGA器件的配置文件,用于對FPGA器件初始化。這樣就實現了滿足用戶需要的專用集成電路,真正達到了用戶自行設計、自行研制和自行生產集成電路的目的。概括地說,FPGA器件相對于其他邏輯器件,具有很多優(yōu)點:FPGA的時鐘延時僅在納秒級,結合其并行工作方式,使系統(tǒng)運行速度快,在超高速應用領域和實時測控方面將有非常廣闊的應用前景;在高可靠應用領域,FPGA器件不存在復位不可靠與程序指針跑飛的問題,其高可靠性還表現在幾乎可以將整個系統(tǒng)下載于一個芯片中,大大減小了體積和功耗,易于管理和屏蔽;除此之外,FPGA還具有標準化、多功能、低成本,設計靈活方便,可無限次反復編程,并可現場模擬調試驗證。使用FPGA器件,一般可在幾天到幾周內完成一個電子系統(tǒng)的設計和制作,大大縮短研制周期,達到快速上市和進一步降低成本的要求。2.2Quartus軟件和VHDL語言概述2.2.1Quartus軟件介紹ALTERA公司的QuartusⅡ開發(fā)軟件根據設計者的需求提供了一個完整的多平臺開發(fā)環(huán)境,它包含了整個可編程邏輯器件設計階段的所有解決方案,提供了完整的圖形用戶界面,可以完成可編程片上系統(tǒng)的整個開發(fā)流程的各個階段,包括輸入、綜合、仿真等。在QuartusⅡ中集成了多種設計輸入方式,并可使用AssignmentEditor(分配編輯器)方便地設定管腳約束和時序約束,正確地使用時序約束可以得到詳細的時序報告,便于分析設計是否滿足時序要求。同時,它可以將HDL語言、原理圖等設計輸入翻譯成由與、或、非門,RAM,觸發(fā)器等基本邏輯單元組成的邏輯連接,并根據目標及要求優(yōu)化所生成的邏輯,最后輸出edf或vqm網表文件供布局布線用,仿真是驗證當前設計是否滿足功能及時序要求。通過布局布線,將綜合生成的邏輯網表適配到具體器件中,并把工程的邏輯和時序要求與器件的可用資源相匹配,它將每個邏輯功能分配給最好的邏輯單元位置,進行布線和時序,并選擇相應的互聯(lián)路徑和管腳分配。同時通過編程與配置,將布局布線后的器件、邏輯單元和管腳分配轉換為該器件的配置文件或SRAM對象文件,寫入芯片中以便于測試。QuartusⅡ軟件也具有很多的優(yōu)點:它可以支持多時鐘定時分析、LogicLock基于塊的設計、SOPC、內嵌SignalTapⅡ邏輯分析器、功率估計器等高級工具;易于管腳分配和時序約束;擁有強大的HDL綜合能力;支持的的器件和操作系統(tǒng)的種類眾多,并且可以和第三方工具如綜合、仿真等的鏈接等等。因此,基于QuartusⅡ軟件工具,設計者可以方便地完成數字系統(tǒng)設計的全過程。2.2.2VHDL語言概述VHDL的全稱是VeryHighSpeedIntegratedCircuitHD(超高速集成電路硬件描述語言),起源于美國國防部的VHSIC,具有較高的抽象描述能力,而且系統(tǒng)硬件描述能力強,設計效率高。VHDL語言通常包含實體(Enity)、結構體(Architecture)、配置(Configuration)、包集合(Package)和庫(Library)五部分。其中實體用于描述所設計的系統(tǒng)的外部接口信號;結構體用于描述系統(tǒng)內部的結構和行為,同時,建立輸入和輸出之間的關系;配置語句安裝具體元件到實體—結構體對,可以被看做是設計的零件清單;包集合存放各個設計模塊共享的數據類型、常數和子程序等;庫是專門存放預編譯程序包的地方。VHDL主要用于描述數字系統(tǒng)的結構、行為、功能和接口。VHDL的程序結構特點是將一項工程設計,或稱設計實體,分成外部和內部,及設計實體的內部功能和算法完成部分。這種將設計實體分成內外部分的概念是VHDL系統(tǒng)設計的出發(fā)點,應用VHDL進行工程設計的優(yōu)點是多方面的,具體有:VHDL與其他硬件描述語言相比,具有更強的行為描述能力,這種強大的行為描述能力可以避開具體的器件結構,從邏輯行為上描述和設計大規(guī)模電子系統(tǒng);VHDL具有豐富的仿真語句和庫函數,使得在任何大系統(tǒng)的設計早期就能查驗設計系統(tǒng)的功能可行性,隨時可對系統(tǒng)進行仿真模擬,使設計者能對整個工程的結構和功能可行性作出判斷;VHDL語句的行為描述能力和程序結構,決定了它具有支持大規(guī)模設計的分解和對已有設計的再利用功能;用VHDL完成一個確定的設計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動把VHDL描述設計轉變成門級網表,突破了門級設計的瓶頸,極大的減少了電路設計的時間和可能發(fā)生的錯誤,降低了開發(fā)成本;VHDL對設計的描述具有相對獨立性,設計者可以不懂硬件的結構,也不必管目標器件是什么,可以進行獨立設計;由于VHDL具有類屬描述語句和子程序調用等功能,對于完成的設計,在不改變源程序的條件下,只需改變類屬參量或函數,就能輕易地改變設計的規(guī)模和結構。2.3交通燈控制器的邏輯設計根據本文前面所描述的交通燈控制器的設計要求:主干道每次放行45s,支干道每次放行25s,在每次由綠燈亮到紅燈亮的轉換過程中,要亮5s黃燈作為過渡,使行駛中的車輛有時間停止在禁行線外,根據這些信息,可以得到交通燈控制器的控制過程實際上可以分為四個狀態(tài),而且各個狀態(tài)所持續(xù)的時間不同,對應的輸出也有四種狀態(tài),可以分別用00、01、10和11來表示,在此給出交通燈控制器系統(tǒng)的工作流程圖,如圖2.1所示,從圖中也可以看出,控制器系統(tǒng)在正常工作時,包含了四種工作狀態(tài)。圖2.1控制器系統(tǒng)狀態(tài)流程圖由狀態(tài)流程圖可以得到交通燈控制器的狀態(tài)轉換表,如表2.1所示。假設主干道和支干道分別用字母A和B代替,對三個定時信號45s,25s和5s,設為C、D和E,用S、S、S、S分別來表示交通燈正常工作時的四種狀態(tài)。表2.1交通燈控制器狀態(tài)轉換表狀態(tài)主干道A支干道B時間/sS綠燈亮,允許通行紅燈亮,禁止通行45S黃燈亮,停車紅燈亮,禁止通行5S紅燈亮,禁止通行綠燈亮,允許通行25S紅燈亮,禁止通行黃燈亮,停車5為了得到賦值后的狀態(tài)表,可以先對控制器系統(tǒng)相關的邏輯變量進行邏輯賦值,當45秒定時未到時,賦值為C=0,若45秒定時到的時候賦值為C=1,同理,給25秒定時和5秒定時也用相同的方法賦值:D=0時表示25秒定時未到,D=1時表示25秒定時已到,E=0時表示5秒定時未到,E=1時表示5秒定時已到。則邏輯賦值后的狀態(tài)表如表2.2所示。設系統(tǒng)的輸出為Q、Q,將表2.2中Q和Q的“1”項按照最小項之和的形式寫出,并簡化得到最終的狀態(tài)方程為Q=QE+(Q+)Q(2-1)Q=C+Q(+)(2-2)而45秒、25秒和5秒定時器的時鐘脈沖驅動方程為:CP=+E(2-3)CP=+E(2-4)CP=(2-4)表2.2控制器系統(tǒng)的邏輯賦值狀態(tài)表CDEQQQQ說明0XX0000維持S1XX0001S變?yōu)镾XX00101維持SXX10111S變?yōu)镾X0X1111維持SX1X1110S變?yōu)镾XX01010維持SXX11000S變?yōu)镾根據控制器邏輯狀態(tài)賦值表,可以使用VHDL語言,對交通燈控制器系統(tǒng)的各個功能模塊進行程序的編寫,將狀態(tài)轉換表中的狀態(tài)順序用VHDL語言正確的表達出來。由于交通燈控制器系統(tǒng)的狀態(tài)轉換可以看作看有限做狀態(tài)機,而用VHDL設計有限狀態(tài)機,設計流程和方案固定,程序層次分明,程序結構簡單清晰,特別是可以定義符號化枚舉類型的狀態(tài),也使VHDL綜合器對狀態(tài)機具有強大的優(yōu)化功能。一般采用進程(process)描述,這里采用雙進程描述。一個是時鐘進程,控制狀態(tài)機在時鐘有效沿,根據時鐘有效沿和某些輸入信號條件得到下一狀態(tài)并進行狀態(tài)遷移;一個是組合進程,不受時鐘控制,由輸出相關的信號觸發(fā),該進程根據觸發(fā)信號決定輸出信號,通過簡便地定義狀態(tài)變量,將狀態(tài)描述成進程,每個狀態(tài)均可表達為CASE_WHEN語句結構中一條CASE語句,狀態(tài)的轉移通過IF_THEN_ELSE語句實現,輸出信號以控制其他進程,實現狀態(tài)的轉移。在理解交通燈控制器的工作原理之后,根據所收集到的資料,了解了在設計控制器系統(tǒng)的過程中所要用到的各種理論知識,就可以采用自頂而下的系統(tǒng)設計方法,在QUARTUS軟件的開發(fā)平臺上進行各個模塊的原理圖設計,并最終得到頂層的系統(tǒng)原理圖。2.4各模塊電路的設計2.4.1分頻器電路的程序設計在十字路口的交通燈控制系統(tǒng)中,一般情況下需要由信號燈自動控制交通,而為了使交通燈能夠正常工作,控制器一定要能給電路提供一個穩(wěn)定的時鐘信號,所以分頻器的主要功能就是產生穩(wěn)定可靠地輸出信號,再將該輸出信號作為其他模塊電路的控制信號和同步掃描信號。同時,由于交通燈的控制時間是以秒為單位計時的,所以要通過利用系統(tǒng)給定的時鐘作為基準頻率,輸出1Hz的倒計時計數脈沖信號,產生1s的信號計時時間,還需要輸出2Hz的黃燈閃爍信號,同時還有1kHz的數碼管掃描顯示的片選脈沖信號。分頻器是數字電路中最常用的電路之一,在FPGA的設計中也是使用效率非常高的基本設計?;贔PGA實現的分頻電路一般有兩種方法:一是使用FPGA芯片內部提供的鎖相環(huán)電路,入ALTERA提供的PLL(PhaseLockedLoop);二是使用硬件描述語言,如通過VHDL、VerilogHDL語言等來實現數字分頻。使用鎖相環(huán)電路有許多優(yōu)點,如可以實現倍頻、相位偏移、占空比可調等。但FPGA提供的鎖相環(huán)個數有限,不能滿足使用需要,因此使用硬件描述語言實現分頻電路經常使用在數字電路的設計中。如圖2.2是頻率脈沖發(fā)生器的模塊電路圖,其相應的程序見附錄A。在該時鐘模塊中,系統(tǒng)的輸入信號為50MHz的時鐘信號,即由FPGA器件本身所能提供的固定的時鐘頻率,將該時鐘頻率5000分頻之后得到1kHz的頻率信號后,將1kHz的信號再次經過分頻就能得到所需要的1Hz和2Hz的時鐘脈沖頻率信號。圖2.2頻率發(fā)生器模塊圖2.4.2控制及倒計時模塊的程序設計據前面的模塊劃分時所提到的,倒計時計數器模塊的主要功能就是,將各個顏色的信號燈的計數時間,用倒計時的方式顯示出來,以便能讓車輛和行人能看到準確的通行時間,同時能夠實現各個不同狀態(tài)的轉換。在圖2.3所示的交通燈控制及倒計時計數模塊的電路圖中,該模塊的輸入信號為由頻率發(fā)生器所得到的1Hz和2Hz的時鐘脈沖信號,控制主干道和支干道的紅、黃、綠三色燈的點亮時間,并通過編寫的程序,設計出45s、25s和5s的三種倒計時顯示時間。圖2.3倒計時控制模塊設計圖與分頻器一樣,定時計數器也是數字系統(tǒng)中使用最多的時序電路之一,不僅可以用于對時鐘脈沖的計數,還可以用于分頻。定時、產生節(jié)拍脈沖和脈沖序列以及進行數字化運算等功能。在利用VHDL硬件描述語言設計計數器時,通常有兩種方法:方案一是利用數組的形式實現計數,即在VHDL語言中,可以定義一個數組,具體位數以所需要設計的計數器計數進制而定,這種實現方法不僅能對穩(wěn)定的信號進行計數,也能對由一定波動的信號進行計數;方案二則是以整數的形式實現計數,在VHDL語言中,也可以定義一個整數變量,他代表的是計數器的初始技術指標,同時,需要定義一個常量,作為進位或清零參考量,其計數范圍便是從設定的初始值開始,到清零信號設定的數字結束。在本次交通燈控制器的定時計數器模塊的設計中,將采用上述第一種方式來設計,具體的VHDL語言程序見附錄A。2.4.3數碼管顯示驅動模塊的程序設計數碼管顯示驅動模塊的主要功能,是根據倒計時控制模塊的輸出信號和1kHz時鐘頻率作為輸入信號,將該輸入信號送到數碼管掃描驅動電路中,利用發(fā)光二極管的發(fā)光特性,將對應的輸出信號在數碼管上顯示出來。譯碼驅動模塊根據其功能,可以看作一個多路選擇器,根據輸入的使能控制信號,選擇相應的倒計時信號作為輸出信號,驅動與倒計時信號對應的二極管發(fā)光,這樣就完成了倒計時信號的顯示功能。同時,在設計數碼管顯示驅動模塊的時候,要考慮到數碼管的類型。其中七段數碼管有共陰極和共陽極兩種,在本次畢業(yè)設計中,為系統(tǒng)采用了共陽極數碼管。共陽數碼管的好處是其段碼是低電平有效,意思是要想使數碼管的哪一段點亮,則應該使對應的控制端輸出低電平即可。而共陰極則相反,是高電平有效。現在很多控制器輸出電流的能力比吸入電流的能力低,所以,當采用共陽極型數碼管后,控制器輸出低電平,即吸入電流,這樣,在同樣的條件下,共陽型數碼管將會比共陰型數碼管更加亮。數碼管掃描顯示驅動電路的主要組成電路為計數器、顯示譯碼器和動態(tài)掃描電路。在利用數碼管顯示交通燈倒計時時間時,掃描電路(即時鐘信號)根據每個時刻的計數器計數值,輸出給相應的數碼管,從而進行選擇控制。當掃描到一個數碼管時,根據此時需要輸出的數值,利用顯示譯碼器翻譯為相應的數碼管顯示編碼就可以了。在譯碼模塊中,首先向LED數碼管顯示段碼數據口發(fā)送一個8位數據,同時發(fā)送位碼數據,此時相應位碼為低電平,其他則為高電平;延時一段時間之后,發(fā)送第二個數據,此時相應位碼為低電平,其他為高電平;以此類推,對各個顯示器進行掃描,顯示器分時工作,實際上每次只有一個顯示器顯示,但是由于視覺暫留現象,感覺顯示器是同時顯示的。如圖2.4所示,為利用VHDL語言編寫的數碼管掃描驅動模塊的程序,再由程序得到的相應的模塊電路圖,相應的數碼管顯示驅動程序見附錄A。圖2.4數碼管顯示驅動模塊設計圖2.5設計總結在本章中,主要介紹了FPGA(現場可編程邏輯陣列)器件的結構特點,在實際運用中和其他可編程器件相比,在設計方面和運行功能方面都具有很大的優(yōu)勢;然后介紹了在本次交通燈設計中提供的軟件開發(fā)平臺,即QUARTUS軟件,在語言設計方面,該軟件也有很多特有的優(yōu)點。由于本次設計中,交通燈控制系統(tǒng)的各個模塊是通過VHDL硬件描述語言來編寫的,所以介紹了VHDL語言的簡便易懂,能通過簡單的編程而實現復雜的邏輯設計的功能。這些介紹對于整個論文來說都是非常重要的理論知識,只有在對這些理論知識有了初步掌握的情況下,才能開始對交通燈控制器系統(tǒng)進行設計。另一方面,要設計出交通燈控制器系統(tǒng),首先要知道該系統(tǒng)的邏輯實現方法,所以在進行軟件設計之前,在本章中先介紹如何得出控制器系統(tǒng)輸入輸出端口的邏輯關系。在知道了所有端口的邏輯關系之后,通過化簡他們的邏輯關系表達式,很容易看出這些輸入輸出信號的具體關系,并且能夠通過這些邏輯關系,利用VHDL硬件描述語言去實現這些復雜的邏輯關系。同時在設計不同的系統(tǒng)模塊的時候,要考慮到交通燈在正常工作時是幾個不同工作狀態(tài)的循環(huán)轉換,因此,可以利用有限狀態(tài)機的VHDL設計來實現控制器?;赩HDL的狀態(tài)機設計能克服純硬件數字系統(tǒng)順序方式不靈活的特點,而且結構模式相對簡單,設計方案相對固定,容易構成良好的同步時序模塊,也使得程序層次分明,結構清晰易懂。做完了這些理論方面的準備工作,本章后面則開始利用VHDL語言設計各個模塊,并在軟件開發(fā)環(huán)境中生成原理圖形式,為設計頂層原理圖作準備。第3章交通燈控制器的仿真3.1交通燈系統(tǒng)各模塊的仿真在第二章中,將分頻器模塊、倒計時控制器模塊和數碼管顯示驅動模塊,分別用VHDL語言實現后,可以在QUARTUS軟件中生成各模塊的對應原理電路器件圖,所設計的基于FPGA的交通燈控制器的原理圖就是主要由這三個模塊組成的。如附錄B原理圖中,就是利用這三個模塊,再加上輸入輸出端口,經過適當的連接導線,就可以生成交通燈控制器系統(tǒng)的頂層原理圖文件。從頂層原理圖中可以看出,設計的交通燈控制器系統(tǒng)的整體輸入信號就是FPGA器件所能為系統(tǒng)提供的50MHz的時鐘頻率。在分頻器電路模塊中,系統(tǒng)通過程序控制,將輸入的50MHz的時鐘頻率進行分頻設計,并將三種不同頻率的時鐘信號作為輸出信號,即輸出1kHz、1Hz和2Hz時鐘脈沖頻率,并作為倒計時控制模塊和數碼管顯示驅動模塊的輸入信號。對于倒計時控制器模塊,該模塊將1Hz和2Hz時鐘脈沖頻率作為輸入控制信號,在該模塊中完成交通燈紅、黃、綠三種信號燈的工作狀態(tài)的控制,并最終在該模塊的輸出端用六個輸出接口,分別用來表示主干道和支干道三種信號燈的顯示狀態(tài)。同時,倒計時控制器模塊的另外四個輸出接口,將給數碼管顯示驅動模塊提供數碼管掃描信號,并連同分頻器輸出的1kHz時鐘頻率一起作為數碼管顯示驅動模塊的輸入信號。在譯碼驅動模塊中,通過掃描信號的控制,數碼管相應段位的LED燈將會被點亮,并最終以數字的形式,在交通信號燈上顯示出各種信號燈的倒計時時間,其中黃色信號燈則是通過連續(xù)閃爍5S的形式表現出來。總的來說,所設計的交通燈控制系統(tǒng)的輸出信號主要就是主干道和支干道的紅、黃、綠燈的工作狀態(tài),數碼管的段碼和位碼輸出信號。通過這三個主要的模塊,就可以實現路口紅綠燈的正常工作,下面將在QUARTUS軟件中,對頂層原理圖中的分頻器模塊和倒計時控制器模塊進行功能驗證,查看設計的交通燈控制器功能的正確性。3.1.1分頻器模塊的QUARTUS仿真在完成各個系統(tǒng)模塊的程序設計后,雖然工程編譯通過,但是還需要對設計項目進行全面的測試,即是仿真,以確保設計的系統(tǒng)的功能和時序特性,以及最后的硬件器件的功能與預定的設計要求相符合。在進行仿真操作前必須利用Quartus波形編輯器建立一個矢量波形文件作為仿真激勵,該文件將仿真輸入矢量和仿真輸出描述成為一波形的圖形來實現仿真,但也可以將仿真激勵矢量用文本表達,即文本方式的矢量文件。在驗證分頻器模塊的功能時,在原理圖文件中添加一個input端口和三個output端口,分別作為系統(tǒng)所給的50MHz的輸入信號和1kHz、1Hz、2Hz的輸出信號,并通過導線,將輸入輸出端口連接在分頻器模塊中,這樣一個簡單的分頻器系統(tǒng)就搭建好了。在進行仿真之前,要先對該系統(tǒng)進行編譯,確認分頻器系統(tǒng)沒有問題之后,在建立的工程文件中,新建一個VectorWaveformFile,即仿真波形文件,將分頻器的輸入輸出信號管腳添加到波形文件中去。為了得到實際的效果,要將輸入信號設置為周期為20ns,占空比為50%的方波信號,即為系統(tǒng)輸入的50MHz的時鐘頻率。設置完成后,通過波形圖仿真,可以得到如附錄C所示的仿真波形圖。從仿真結果圖中可以看出,當輸入信號是50MHz的時鐘頻率時,在波形圖的時間軸上可以清楚地看到,輸出信號flag_1hz為周期是1Hz的脈沖出發(fā)信號,同時,輸出信號flag_2hz是周期為2Hz的脈沖觸發(fā)信號,并且得到的輸出脈沖信號的周期與設計要求完全一致,雖然在該仿真結果圖中,1kHz的輸出信號很難看出其正確性,但是在將波形進行放大后,會發(fā)現,flag_1khz的周期確實是與要求相同的1ms。由此仿真圖可以看出,所設計的分頻器能夠實現設計要求,能夠精確的得到控制計數器計時信號和數碼管掃描信號的時鐘頻率。3.1.2倒計時控制器模塊的QUARTUS仿真在得到1Hz和2Hz時鐘脈沖頻率之后,就能進行倒計時控制器模塊的軟件仿真。同樣地,需要給控制器模塊接入相應的輸入輸出端口,根據頂層原理圖可以看出,輸入信號為分頻器模塊輸出的1Hz和2Hz時鐘脈沖頻率,而為了得到紅綠燈狀態(tài)顯示信號,同時又能減少仿真時間,提高仿真效率,只接入六個輸出端口,即主干道和支干道的紅、黃、綠燈的狀態(tài)顯示端口,另外四個輸出接口作為數碼管顯示驅動模塊的控制信號,為了能夠減少仿真的工作量,此處并不給出仿真。同樣先給倒計時控制器模塊原理圖添加波形圖仿真文件,將有用的端口添加到波形圖中,并設置好輸入信號的參數。在這里有個問題要注意,那就是仿真結束時間的設置,因為對在交通燈控制器進行波形仿真時,要考慮到實際中交通燈在一個正常工作的周期里,運行時間應大于紅、黃、綠燈各亮一次的時間之和,即endtime應至少修改為80s,同時為了在時間軸上能比較清楚地顯示出各個燈的狀態(tài),要將gridsize改為1s。參數設置好后,進行波形仿真,將得到如附錄D所示的仿真結果圖。經過分析該仿真波形可以知道,當1Hz時鐘脈沖信號的上升沿到來時,主干道綠色信號燈(ga)由低電平變?yōu)楦唠娖?,即綠色信號燈亮,此時,主干道的紅色(ra)和黃色(ya)信號燈、支干道綠色(gb)和黃色信號燈(yb)為低電平,即為熄滅狀態(tài),,而支干道的紅色信號燈則會由低電平變?yōu)楦唠娖?,即隨著主干道的綠燈點亮,支干道的紅燈將會點亮,在實際中就是主干道允許車輛通行,但是支干道禁止車輛通行;經過45s之后,在下一個1Hz時鐘脈沖信號的上升沿到來時,主干道的綠燈由高電平變?yōu)榈碗娖剑淳G色燈將會熄滅,同時,在下個2Hz時鐘脈沖信號的上升沿到來時,主干道的黃色信號燈將由低電平變?yōu)楦唠娖剑⒃诮酉聛淼?s時間內,該黃色信號燈將隨著2Hz的時鐘脈沖信號的上升沿到來改變前一狀態(tài),在實際數碼管上表現為每秒內閃爍一次,即在黃色信號燈閃爍的過程中,提醒主干道上的車輛即將改變信號燈的狀態(tài)。5s之后,隨著1Hz時鐘脈沖信號的上升沿到來,主干道上的紅色信號燈變?yōu)楦唠娖剑Ц傻郎系募t色信號燈則變?yōu)榈碗娖?,并且綠色燈變?yōu)楦唠娖?,即主干道上禁止車輛通行,而支干道上允許車輛通行。再經過25s的時間,支干道上的綠燈變?yōu)榈碗娖剑S色信號燈則會如上面所述,在5s的時間內,以每秒一次的頻率連續(xù)閃爍5次,此時則是提醒支干道上的車輛注意通行狀態(tài)的轉變。經過5s之后,交通燈在一個周期內的狀態(tài)轉換完成,在接下來的時間中,交通燈控制器系統(tǒng)將會按照上述循環(huán)方式正常的工作。所以根據仿真波形圖的分析可以看出,所設計的控制器系統(tǒng)這與所要求實現的交通燈功能完全符合,能夠按照正常的交通燈工作方式進行狀態(tài)轉換,因此在系統(tǒng)軟件設計方面,經過驗證是可以完成設計要求。3.2結論本文實現了基于FPGA的交通燈控制器的相關功能,能夠成功地控制主干道和支干道路口的交通信號燈。在交通燈控制器的設計過程中,采用了自頂向下的EDA的設計方法,將交通燈控制系統(tǒng)的整體逐步分解為幾個不同的子系統(tǒng)和模塊,直到整個控制系統(tǒng)中各個子模塊能相互正常工作。在該論文中,主要將交通燈控制系統(tǒng)分為分頻器模塊、控制和倒計時模塊、數碼管顯示驅動模塊。信號燈的狀態(tài)顯示受到計數器信號的控制作用,其工作狀態(tài)能夠按照設計要求正常轉換,所以這種有限工作狀態(tài)轉換的控制器,可以利用有限狀態(tài)機來對各個模塊進行設計。在對各個模塊進行軟件設計時,基于QUARTUS設計平臺,利用VHDL硬件描述語言文本輸入方式,根據設計要求分層次進行程序化設計。由于該語言結構功能強大,能夠以簡明的描述出復雜的邏輯功能,所以在實現控制系統(tǒng)的正常工作的同時,提高了軟件的運行效率。借助QUARTUS軟件,還能將能夠實現仿真功能的VHDL語言程序下載到FPGA開發(fā)板中,通過硬件來更好地驗證設計的交通燈控制器的實際功能,這樣的設計具有一般的邏輯設計方法無法完成的優(yōu)越性。在本次畢業(yè)設計中,通過編寫VHDL硬件描述語言程序,最終能夠實現交通燈工作狀態(tài)的正確轉換,但是系統(tǒng)的設計在一定程度上是可以做到不斷完善的。本次所設計的交通燈控制系統(tǒng)只能完成交通燈最簡單的功能,在實際生活中所用到的交通燈,會隨著道路條件的不同添加其他更多的功能。此次所設計的交通燈只有三個燈,但是在城市路口,經常會看到帶有左轉燈、右轉燈和供行人穿馬路使用的人行道路口燈,所以在設計交通燈時,在更加考慮實際情況時,還應該添加這些信號燈。另外,在針對有色弱人群過馬路時,還可以設計帶有聲音提示的交通燈;在路口有緊急情況(救護車、執(zhí)行特殊任務的警車經過或發(fā)生交通事故)時,可以通過手動控制將交通燈狀態(tài)改為緊急模式,這些具有實際意義的功能在設計交通燈時都可以考慮進去。
參考文獻劉小艷.我國城市交通現狀及對策分析[J].價值工程,2012,25:1-2.趙憲文,王蘭蘭.交通燈控制的verilog實現[J].硅谷,2011,14:61-62.王艷玲.基于EDA技術的數字電路課程設計[J].桂林師范高等??茖W校校報,2009,23(2):177-178.SheldonWaite,ErdalOruklu.FPGA-BasedTrafficSignRecognitionforAdvancedDriverAssistanceSystems[J].ScientificResearch,2013,3:1-16.楊楊.基于VerilogHDL語言的復雜交通指標燈設計與實現[J].電腦編程技巧與維護,14:27-34.楊貴.基于FPGA的交通燈控制器實現[J].中國儀器儀表,2003,9:41-43.袁海林.基于FPGA的交通燈的設計與實現[J].電子質量,2013,3:15-19.劉建科.基于VHDL交通控制器的設計及仿真[D].青海:青海師范大學,2011.楊捷.基于VHDL語言的交通燈控制器設計[J].河南機電高等??茖W校學報,2008,16(3):102-105.黃鴻鋒.交通燈控制器的設計與實現[J].中國集成電路,2010,7:65-67.沈晟.基于FPGA的交通燈控制系統(tǒng)的設計實現[D].昆明:昆明理工大學,2010.姜庚.交通燈控制系統(tǒng)的設計原理探究[J].產業(yè)與科技論壇,2013,12(9):56-57.G.Kalogeropoulos·G.C.Sirakoulis·I.Karafyllidis.CellularautomataonFPGAforreal-timeurbantrafficsignalscontrol[J].JSupercomput,2013,65:664-681.付銘驥.基于FPGA的交通燈系統(tǒng)控制設計[J].現代電子技術,2011,34(15):167-169.LiuZhenggang.FPGA-BasedDual-ModeTrafficLightsSystemDesign[J].SchoolofInformationScienceandEngineering,2009:558-561.
致謝本次畢業(yè)設計及學位論文是在我的指導老師蔡振華老師的親切關懷和悉心指導下完成的,蔡老師嚴肅的科學態(tài)度,嚴謹的治學精神和精益求精的學習作風,在我完成畢業(yè)設計的過程中,已經在我的內心深處激勵著我。從開始論文選題到論文的最終完成,蔡老師都一直給在耐心地為我講解,指出我論文中的不足,細心地指導者我論文的完成,在此謹向蔡老師致以最崇高的敬意和衷心的感謝。同時,我還要感謝這四年來一直陪伴在我身邊,鼓勵我,支持我,幫助我的同學和老師們,謝謝你們在我大學期間,在這特別的人生中所給予我的一切;另外我要感謝我的父母,謝謝你們給了我生命,讓我能在這二十多年里,享受到人生的美好,也謝謝你們能夠在我做畢業(yè)設計的這段時間里,理解我和信任我。
附錄A控制器各模塊的VHDL語言設計1、分頻器模塊
library
ieee;
--對50MHZ信號分頻得到1khz位選信號、2hz黃燈閃爍信號和1hz計時信號
use
ieee.std_logic_1164.all;
entity
div_freq
is
port(freq_in:in
std_logic;
flag_1khz,flag_2hz,flag_1hz:
buffer
std_logic);
end
entity;
architecture
one
of
div_freq
is
signal
complete_1khz:
integer
range
0
to
50000;
signal
complete_2hz:integer
range
0
to
499;
signal
complete_1hz:
integer
range
0
to
1000;
begin
process(freq_in)
--此進程得到的是1khz的位選信號
begin
if(freq_in
'event
and
freq_in='1')
then
complete_1khz<=complete_1khz+1;
if(complete_1khz=50000)
then
complete_1khz<=0;
elsif(complete_1khz<25000)
then
flag_1khz<='0';
else
flag_1khz<='1';
end
if;
end
if;
end
process;
process(flag_1khz)
--此進程是得到2hz信號
begin
if(flag_1khz
'event
and
flag_1khz='1')
then
complete_2hz<=complete_2hz+1;
if(complete_2hz=500)then
complete_2hz<=0;
flag_2hz<='0';
else
flag_2hz<='1';
end
if;
end
if;
end
process;
process(flag_1khz)
--此進程是得到1hz信號
begin
if(flag_1khz
'event
and
flag_1khz='1')
then
complete_1hz<=complete_1hz+1;
if(complete_1hz=1000)then
complete_1hz<=0;
flag_1hz<='0';
else
flag_1hz<='1';
end
if;
end
if;
end
process;
end
architecture
one;
2、交通燈控制及倒計時模塊
library
ieee;
use
ieee.std_logic_1164.all;
use
ieee.std_logic_unsigned.all;
entity
state5
is
port(clk1hz,clk2hz:in
std_logic;--1hz倒計時時鐘信號
one1,ten1,one2,ten2:out
integer
range
0
to
10;-倒計時數
ra,ga,ya,rb,gb,yb:out
std_logic);--主支干道紅黃綠燈
end;
architecture
two
of
state5
is
type
states
is
(st0,st1,st2,st3,st4);--定義五個狀態(tài)signal
r1,g1,y1,r2,g2,y2:std_logic;
signal
a,y11,y22:std_logic;begin
process(clk1hz)5
states
variable
st:states;
variable
eoc:std_logic;--倒計時結束標志位
variable
h1,l1,h2,l2:integer
range
0
to
10;
beginif
clk1hz'event
and
clk1hz='1'
then
case
st
is
when
st0=>
st:=st1;
h1:=4;l1:=4;
h2:=4;l2:=9;
when
st1=>主干道綠燈亮45秒if
eoc='0'
then
h1:=4;l1:=4;
h2:=4;l2:=9;
eoc:='1';
g1<='1';r1<='0';y1<='0';g2<='0';r2<='1';y2<='0';
else
if
h1=0
and
l1=1
then
st:=st2;eoc:='0';h1:=0;l1:=0;h2:=0;l2:=5;
elsif
l1=0
then
l1:=9;h1:=h1-1;l2:=l2-1;
elsif
l2=0
then
l2:=9;h2:=h2-1;l1:=l1-1;
else
l1:=l1-1;l2:=l2-1;end
if;
end
if;
when
st2=>主干道黃燈亮5秒
if
eoc='0'
then
h1:=0;l1:=4;
h2:=0;l2:=4;
eoc:='1';
g1<='0';r1<='0';y1<='1';g2<='0';r2<='1';y2<='0';
else
if
l1=1
then
st:=st3;eoc:='0';h1:=0;l1:=0;h2:=0;l2:=0;
else
l1:=l1-1;l2:=l2-1;
end
if;
end
if;
when
st3=>支干道綠燈亮25秒if
eoc='0'
then
h1:=2;l1:=9;
h2:=2;l2:=4;
eoc:='1';
g1<='0';r1<='1';y1<='0';g2<='1';r2<='0';y2<='0';
else
if
h2=0
and
l2=1
then
st:=st4;eoc:='0';h2:=0;l2:=0;h1:=0;l1:=5;
elsif
l2=0
then
l2:=9;h2:=h2-1;l1:=l1-1;
elsif
l1=0
then
l1:=9;h1:=h1-1;l2:=l2-1;
else
l2:=l2-1;l1:=l1-1;
end
if;
end
if;
when
st4=>支干道黃燈亮5秒if
eoc='0'
then
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 弘揚中華美育體悟古典園林之美設計繪畫第三單元課件
- 河南八市2024年高三2月開學模擬(網絡考試)數學試題
- 建設工程管理專業(yè)教學課件
- 大連工業(yè)大學《器官-系統(tǒng)模塊四》2023-2024學年第二學期期末試卷
- 江蘇城市職業(yè)學院《英語報刊閱讀》2023-2024學年第二學期期末試卷
- 2025年長陽土家族自治縣小升初總復習數學測試卷含解析
- 湖南中醫(yī)藥高等??茖W?!端孛瑁ㄈ?023-2024學年第二學期期末試卷
- 四川省綿陽市綿陽中學英才學校2025年數學四年級第二學期期末監(jiān)測試題含解析
- 泉州輕工職業(yè)學院《素描著衣全身像》2023-2024學年第二學期期末試卷
- 新疆理工學院《給排水及環(huán)境工程概論》2023-2024學年第二學期期末試卷
- 2024年世界職業(yè)院校技能大賽“食品安全與質量檢測組”參考試題庫(含答案)
- 《真希望你也喜歡自己》房琪-讀書分享
- 危險品車輛安全運輸安全生產值班制度(3篇)
- 第21課 磁懸浮列車(說課稿)-2023-2024學年六年級科學下冊同步備課(青島版)
- 區(qū)域銷售規(guī)劃方案
- 防水項目招標文件范本示例
- 腎穿術后護理查房
- 2025年高考作文備考之二元思辨作文講解
- 語文學習任務群的解讀及設計要領
- 2024年山東省高考生物試卷真題(含答案解析)
- 光伏發(fā)電站項目安全技術交底資料
評論
0/150
提交評論