版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘要</b></p><p> EDA技術的一個重要特征就是使用硬件描述語言(HDL)來完成系統(tǒng)的設計文件,應用VHDL的數(shù)字電路實驗降低了數(shù)字系統(tǒng)的設計難度,這在電子設計領域已得到設計者的廣泛采用。本設計就是針對交通信號燈控制器的設計問題,提出了基于VHDL語言的交通信號燈系統(tǒng)的硬件實現(xiàn)方法。通過對系統(tǒng)進行結構分析,采用了層次化的設計方法,給出了各個模塊的V
2、HDL程序,并且利用Quartus Ⅱ?qū)贸绦蜻M行了仿真,并給出了相應的仿真結果。通過電路優(yōu)化設計,可以使用規(guī)模更小的可編程邏輯芯片,從而降低系統(tǒng)成本。</p><p> 關鍵詞:交通信號燈;VHDL;仿真</p><p><b> ABSTRACT</b></p><p> One important characteristic o
3、f the EDA is that the design documents should be completed by the HDL, the digital circuit experiment utilized very-high-speed integrated circuit hardware description language(VHDL) may reduce the difficulties of digital
4、 system designing, and it is widely used by electronic designer now. Aiming at the design problem of traffic light controller, this paper puts forward a hardware realization method of traffic light system with VHDL. By a
5、nalyzing the architecture of s</p><p> Key word: Street-traffic control lights; VHDL; Simulation</p><p><b> 目錄</b></p><p><b> 第1章引言1</b></p><
6、p> 第2章EDA技術概述2</p><p> 2.1 EDA技術及其發(fā)展2</p><p> 2.2 EDA與傳統(tǒng)電子設計方法的比較2</p><p> 2.3 EDA的工程設計流程2</p><p> 第3章可編程技術簡介4</p><p> 3.1 可編程邏輯器件概述4</
7、p><p> 3.2 FPGA/CPLD概述4</p><p> 3.3 硬件描述語言介紹5</p><p> 3.4 選擇VHDL硬件描述語言設計的優(yōu)勢6</p><p> 3.5 軟件開發(fā)工具Quartus II 簡介6</p><p> 第4章智能交通控制系統(tǒng)的設計8</p>&l
8、t;p> 4.1 系統(tǒng)功能分析8</p><p> 4.2 系統(tǒng)結構設計9</p><p> 4.3 系統(tǒng)程序?qū)崿F(xiàn)10</p><p> 4.3.1 分頻計數(shù)電路10</p><p> 4.3.2 交通信號控制器電路12</p><p> 4.3.3 動態(tài)數(shù)碼管掃描電路15</p&g
9、t;<p><b> 4.3.4 19</b></p><p> 4.3.5 建立程序包22</p><p> 4.3.6 連接各個模塊23</p><p> 4.3.7 狀態(tài)機的優(yōu)勢24</p><p> 4.4仿真及仿真結果分析</p><p><b>
10、; 結束語26</b></p><p><b> 參考文獻27</b></p><p><b> 致謝28</b></p><p><b> 附錄29</b></p><p> 1.時鐘發(fā)生電路程序代碼29</p><p>
11、; 2.計數(shù)秒數(shù)選擇電路程序代碼31</p><p> 3.倒計時控制電路程序代碼32</p><p> 4.紅綠燈信號控制電路程序代碼34</p><p> 5.連接各個模塊的程序代碼38</p><p><b> 外文資料原文41</b></p><p><b>
12、 翻譯文稿55</b></p><p><b> 引言</b></p><p> 不同的城市存在著不同的城市問題,但其中有一個共同的問題就是城市交通。在交叉路口如何解決混合交通流中的相互影響,就是解決問題的關鍵所在!隨著我國經(jīng)濟的穩(wěn)步發(fā)展,人民生活水平的日漸提高,越來越多的汽車進入尋常百姓的家庭,再加上政府大力地發(fā)展公交、出租車行業(yè),道路上的車輛越
13、來越多,使得城市的交通成為了一個主要的問題。嚴重的擁堵現(xiàn)象,逐漸惡化的城市環(huán)境,都給廣大市民帶來了許多困擾。要解決這些問題不僅要求道路越來越寬闊,而且更需要有新的交通管理模式出臺。</p><p> 實現(xiàn)路口交通燈系統(tǒng)的控制方法很多,可以用標準邏輯器件、可編程序控制器PLC、單片機等方案來實現(xiàn)。但是這些控制方法的功能修改及調(diào)試都需要硬件電路的支持,在一定程度上增加了功能修改及系統(tǒng)調(diào)試的困難。交通系統(tǒng)未來的發(fā)展趨
14、勢就是要提高通行能力,加強環(huán)境保護,開展智能化運輸和環(huán)保專項技術的研究,并且要做到以人為本,重點開展交通安全技術的研究,在這個過程中要確定經(jīng)濟合理的目標,促進新材料的廣泛應用和開發(fā)。</p><p> EDA 技術是用于電子產(chǎn)品設計中比較先進的技術,可以代替設計者完成電子系統(tǒng)設計中的大部分工作,而且可以直接從程序中修改錯誤及系統(tǒng)功能而不需要硬件電路的支持,既縮短了研發(fā)周期,又大大節(jié)約了成本,受到了電子工程師的青
15、睞。</p><p> 因此,本設計中采用EDA 技術,應用目前廣泛應用的VHDL 硬件電路描述語言,實現(xiàn)交通燈系統(tǒng)控制器的設計, 利用Quartus Ⅱ集成開發(fā)環(huán)境進行綜合、仿真,完成系統(tǒng)的控制作用。</p><p><b> EDA技術概述</b></p><p><b> EDA技術及其發(fā)展</b></p
16、><p> 現(xiàn)代電子設計技術的核心是EDA(Electronic Design Automation)技術。EDA技術就是依賴功能強大的計算機,在EDA工具軟件平臺上,對以硬件描述語言HDL(Hardware Description Language)為系統(tǒng)邏輯描述手段完成的設計文件,它能自動地完成邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合、結構綜合(布局 布線),以及邏輯優(yōu)化和仿真測試,直至實現(xiàn)既定的電子線路系統(tǒng)功能
17、。EDA技術使得設計者的工作僅限于利用軟件的方式,即利用硬件描述語言和EDA軟件來完成對系統(tǒng)硬件功能的實現(xiàn)。</p><p> 利用EDA技術(特指IES/ASIC自動設計技術)進行電子系統(tǒng)的設計,具有以下幾個特點:① 用軟件的方式設計硬件;② 用軟件方式設計的系統(tǒng)到硬件系統(tǒng)的轉(zhuǎn)換是由有關的開發(fā)軟件自動完成的;③ 設計過程中可用有關軟件進行各種仿真;④ 系統(tǒng)可現(xiàn)場編程,在線升級;⑤ 整個系統(tǒng)可集成在一個芯片上,
18、體積小、功耗低、可靠性高。因此,EDA技術是現(xiàn)代電子設計的發(fā)展趨勢。</p><p> EDA技術在進入21世紀后,得到了更大的發(fā)展。在仿真和設計兩方面支持標準硬件描述語言的功能越來越強大,軟硬件技術也進一步得到了融合,在電子行業(yè)的產(chǎn)業(yè)領域、技術領域和設計應用領域得到了進一步的肯定,使得復雜電子系統(tǒng)的設計和驗證趨于簡單化。</p><p> EDA與傳統(tǒng)電子設計方法的比較</p&
19、gt;<p> 與傳統(tǒng)的電子設計方法相比,EDA技術對于復雜電路的設計和調(diào)試都比較簡單,如果某一過程存在錯誤,查找和修改起來比較方便,而且EDA技術的可移植性很強。</p><p> EDA的工程設計流程</p><p> 假設我們需要建造一棟樓房,第一,我們需要進行“建筑設計”——用各種設計圖紙把我們的建筑設想表示出來;第二,我們要進行“建筑預算”——根據(jù)投資規(guī)模、擬
20、建樓房的結構及有關建房的經(jīng)驗數(shù)據(jù)等計算需要多少基本的建筑材料(如磚、水泥、預制塊、門、窗戶等); 第三,根據(jù)建筑設計和建筑預算進行“施工設計”——這些磚、水泥、預制塊、門、窗戶等具體砌在房子的什么部位,相互之間怎樣連接;第四,根據(jù)施工圖進行“建筑施工”——將這些磚、水泥、預制塊、門、窗戶等按照規(guī)定施工建成一棟樓房;最后,施工完畢后,還要進行“建筑驗收”——檢驗所建樓房是否符合設計要求。同時,在整個建設過程中,我們可能需要做出某些“建筑模
21、型”或進行某些“建筑實驗”。</p><p> 那么,對于目標器件為FPGA和CPL D的VHD 設計,其工程設計步驟如何呢?EDA的工程設計流程與上面所描述的基建流程類似:第一需要進行“源程序的編輯和編譯”——用一定的邏輯表達手段將設計表達出來;第二要進行“邏輯綜合”——將用一定的邏輯表達手段表達出來的設計,經(jīng)過一系列的操作,分解成一系列的基本邏輯電路及對應關系(電路分解);第三要進行“目標器件的布線/適配”
22、——在選定的目標器件中建立這些基本邏輯電路及對應關系(邏輯實現(xiàn));第四,目標器件的編程/下載——將前面的軟件設計經(jīng)過編程變成具體的設計系統(tǒng)(物理實現(xiàn));最后,要進行硬件仿真/硬件測試——驗證所設計的系統(tǒng)是否符合設計要求。同時,在設計過程中要進行有關“仿真”——模擬有關設計結果與設計構想是否相符。綜上所述,EDA的工程設計的基本流程如圖2.1所示 </p><p><b> EDA工程設計</b&
23、gt;</p><p><b> 可編程技術簡介</b></p><p><b> 可編程邏輯器件概述</b></p><p> 可編程邏輯器件(簡稱PLD)是允許用戶編程(配置)實現(xiàn)所需邏輯功能的電路,一般可利用計算機輔助設計,即用原理圖、狀態(tài)機、硬件描述語言(VHDL)等方法來表示設計思想,經(jīng)過一系列編譯或裝換程
24、序,生成相應的目標文件,再由編程器或下載電纜將設計文件配置到目標器件中,這時的可編程邏輯器件就可作為滿足用戶需求的專用集成電路使用了。</p><p> 可編程邏輯器件,不僅速度快、集成度高,并且能隨心所欲地完成用戶定義的邏輯功能,還可以加密和重新編程,其編程次數(shù)最大可達1萬次以上。使用可編程邏輯器件可以大大簡化硬件系統(tǒng)、降低成本、提高系統(tǒng)的可靠性、靈活性和保密性。PLD的出現(xiàn),打破了由中小規(guī)模通用型集成電路和
25、大規(guī)模專用集成電路壟斷的局面,在通信、數(shù)據(jù)處理、網(wǎng)絡、儀器、工業(yè)控制、軍事和航空航天等眾多領域得到廣泛應用,可以預見,不久的將來,PLD將在集成電路市場占統(tǒng)治地位。</p><p> FPGA/CPLD概述</p><p> FPGA(現(xiàn)場可編程門陣列)和CPLD(復雜可編程邏輯器件)都是可編程邏輯器件,他們是在PAL,GAL等邏輯器件的基礎上發(fā)展起來的。同以往的PAL,GAL相比較,
26、FPGA/CPLD的規(guī)模比較大,它可以替代幾十甚至幾千塊通用IC芯片。這樣的FPGA/CPLD實際上就是一個子系統(tǒng)部件。這種芯片受到世界范圍內(nèi)電子工程設計人員的廣泛關注和普遍歡迎。比較典型的就是Altera公司和Xilinx公司的CPLD器件系列和FPGA器件系列,他們開發(fā)較早,占用了較大的PLD市場。</p><p> 對用戶而言,雖然FPGA/CPLD的內(nèi)部結構稍有不同,但其用法都一樣,所以大多數(shù)情況下,不
27、加以區(qū)分。FPGA/CPLD芯片都是特殊的ASIC芯片,除了具有ASIC的特點外,還具有以下幾個優(yōu)點:</p><p> (1) 隨著VLSI(Very Large Scale IC,超大集成電路)工藝的不斷提高單一芯片內(nèi)部可以容納上百萬個晶體管,F(xiàn)PGA/CPLD芯片的規(guī)模也越來越大,其單片邏輯門數(shù)已達到上百萬門,它所實現(xiàn)的功能也越來越強,同時也可以實現(xiàn)系統(tǒng)集成,即片上系統(tǒng)SOC.</p>&l
28、t;p> (2) FPGA/CPLD芯片在出廠之前都做過百分之百的測試,不需要設計人員承擔芯片風險和費用,設計人員只需在自己的實驗室就可以通過相關的軟硬件環(huán)境來完成芯片的最終功能設計。所以,F(xiàn)PGA/CPLD的資金投入就小,減少了潛在的花費。</p><p> (3) 用戶可以反復地編程、擦除、使用或者在外圍電路不動的情況下用不同軟件就可實現(xiàn)不同的功能。FPGA/CPLD軟件包中有各種輸入工具和仿真工具
29、,及版圖設計工具和編程器等全線產(chǎn)品,電路設計人員在很短的時間內(nèi)就可完成電路的輸入、編譯、優(yōu)化。仿真,直至最后芯片的制作。當電路有少量的改動,更能顯示FPGA/CPLD的優(yōu)勢。電路設計人員在使用FPGA/CPLD進行電路設計時,不需要具有專門的IC(集成電路)深層次的知識,F(xiàn)PGA/CPLD軟件易學易用,能使設計人員更能集中精力進行電路設計,快速將產(chǎn)品推向市場。</p><p> (4) 在線可編程技術(ISP)
30、使得使用FPGA/CPLD的產(chǎn)品可以做到遠程升級。</p><p><b> 硬件描述語言介紹</b></p><p> 常用的硬件描述語言有VHDL、Verilog、ABEL。</p><p> VHDL:作為IEEE的工業(yè)標準硬件描述語言,在電子工程領域,已成為事實上的通用硬件描述語言。</p><p> V
31、erilog:支持的EDA工具較多,適用于RTL級和門電路級的描述,其綜合過程較VHDL稍簡單,但其在高級描述方面不如VHDL。</p><p> ABEL:一種支持各種不同輸入方式的HDL,被廣泛用于各種可編程邏輯器件的邏輯功能設計,由于其語言描述的獨立性,因而適用于各種不同規(guī)模的可編程器件的設計。</p><p> 有專家認為,在新世紀中,VHDL與Verilog語言將承擔幾乎全部
32、的數(shù)字系統(tǒng)設計任務。</p><p> 選擇VHDL硬件描述語言設計的優(yōu)勢</p><p> 首先,簡單地介紹一下什么是VHDL硬件描述語言。VHDL的英文全稱是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language。是EDA設計中使用最多的語言之一,它具有很強的電路描述和建模能力,能從多個層次對數(shù)字
33、系統(tǒng)進行建模和描述,從而大大地簡化了硬件設計任務,提高了設計效率和可靠性。</p><p> 其次,這次設計選用VHDL硬件描述語言的優(yōu)勢就在于傳統(tǒng)的用原理圖設計電路的方法具有直觀形象的優(yōu)點,但如果所設計系統(tǒng)的規(guī)模比較大,或者設計軟件不能提供設計者所需的庫單元時,這種方法就顯得很受限制了。而且用原理圖表示的設計,通用性、可移植性也比較弱,所以在現(xiàn)代的設計中,越來越多地采用了基于硬件描述語言的設計方式。利用硬件描
34、述語言來設計電路,使探測各種設計方案變成一件很容易的事,因為只需要對描述語言進行修改,這比更改電路原理圖要容易實現(xiàn)得多。</p><p> 軟件開發(fā)工具Quartus II 簡介</p><p> Altera的Quartus II 設計軟件提供了完整的多平臺設計環(huán)境,它可以輕易滿足各種特定設計的需要,也是單芯片可編程系統(tǒng) (SOPC) 設計的綜合性環(huán)境和SOPC開發(fā)的基本設計工具,并
35、為Altera DSP開發(fā)包進行系統(tǒng)模型設計提供了集成綜合環(huán)境。Quartus II設計工具完全支持VHDL、Verilog的設計流程,其內(nèi)部嵌有VHDL、Verilog邏輯綜合器。</p><p> Quartus II 包括模塊化的編譯器。編譯器包括的功能模塊有分析/綜合器(Analysis&Synthesis)、適配器(Fitter)、裝配器(Assembler)、時序分析器(Timing Analyze
36、r)、設計輔助模塊(Design Assistant)等。可以通過選擇 Start Compilation (Processing 菜單)來運行所有的編譯器模塊。 若要單獨運行各個模塊,可以通過選擇 Start(Processing 菜單),然后從 Start 子菜單中為模塊選擇相應的指令。此外,還可以通過選擇 Compiler Tool (Tools 菜單)并在 Compiler Tool窗口中運行該模塊來啟動編譯器模塊。 在 Com
37、piler Tool 窗口中,可以打開該模塊的設置文件或報告文件,還可以打開其它相關窗口。</p><p> Quartus II支持層次化的設計,可以在一個新的編輯輸入環(huán)境中對使用不同輸入設計方式完成的模塊進行調(diào)試,從而解決原理圖與HDL混合輸入設計的問題。在設計輸入之后,Quartus II的編譯器將給出設計輸入的錯誤報告。可以使用Quartus II帶有的RTL Viewer觀察綜合后的RTL圖。<
38、/p><p> Quartus II設計流程</p><p> 上圖顯示的是Quartus II編譯設計主控界面,顯示了Quartus II自動設計的各主要處理環(huán)節(jié)和設計流程,包括設計輸入編輯、設計分析與綜合、適配、編譯文件匯編(裝配)、時序參數(shù)提取以及編程下載幾個步驟。</p><p> 智能交通控制系統(tǒng)的設計</p><p><b
39、> 系統(tǒng)功能分析</b></p><p> 在交通信號燈的設計中,外部硬件電路方面主要包括:兩組紅綠燈、兩組LED顯示器(見圖1,說明:圖1中只畫出了東西、南北方向的紅綠燈及南北方向的LED顯示器,東西方向的LED顯示器與南北方向的相同)。軟件方面包括:(1)電路合成模塊的概念:將交通燈信號系統(tǒng)劃分成若干個小電路,編寫每一個模塊的VHDL程序代碼,并將各個小電路相連接。這樣可以增加程序的調(diào)試
40、速度,同時也能夠?qū)⒐ぷ骷毞?,以提高編程速度(見圖2)</p><p><b> 十字路口示意圖</b></p><p><b> 1kHZ</b></p><p><b> 1HZ</b></p><p><b> 支干道車輛檢測</b></
41、p><p><b> 1kHZ</b></p><p> 交通信號燈系統(tǒng)結構圖</p><p><b> 系統(tǒng)結構設計</b></p><p> 由交通信號燈控制系統(tǒng)的功能可知,該系統(tǒng)由3個子電路組成,如圖2所示,其中包括:</p><p><b> 分頻計數(shù)
42、器電路;</b></p><p> 交通信號控制器電路;</p><p> 動態(tài)數(shù)碼管掃描電路。</p><p> 由圖2可以看出系統(tǒng)大體的工作程序是:首先由時鐘發(fā)生電路產(chǎn)生穩(wěn)定的時鐘信號,為下面三個子電路提供同步工作信號。接收到時鐘信號的紅綠燈信號控制電路開始工作,并將產(chǎn)生的重新計數(shù)的輸出使能控制信號發(fā)送給計數(shù)秒數(shù)選擇電路和倒計時控制電路,同時還
43、會將目前電路產(chǎn)生的狀態(tài)信號發(fā)送給前者。接收到重新計數(shù)的信號后計數(shù)秒數(shù)選擇電路就會負責產(chǎn)生計數(shù)器所需要的計數(shù)值,并將這一數(shù)值發(fā)送給倒計時控制電路,由它利用發(fā)光二極管顯示倒計時的狀態(tài)。當計數(shù)器計時完畢,倒計時控制器就會負責產(chǎn)生一個脈沖信號發(fā)送給紅綠燈信號控制電路進入下一個狀態(tài),之后循環(huán)這一過程。</p><p><b> 系統(tǒng)程序?qū)崿F(xiàn)</b></p><p><b
44、> 分頻計數(shù)電路</b></p><p> 在紅綠燈交通信號系統(tǒng)中,大多數(shù)的情況是通過自動控制的方式指揮交通的。因此,為了避免意外事件的發(fā)生,電路必須給出一個穩(wěn)定的時鐘(clock)才能讓系統(tǒng)正常的工作。分頻器實現(xiàn)的是將高頻時鐘信號轉(zhuǎn)換成底頻的時鐘信號,用于觸發(fā)控制器、計數(shù)器和掃描顯示電路。該分頻器實現(xiàn)的是一千分頻,將一千赫茲的時鐘信號分頻成一赫茲的時鐘信號。因此,clkgen分頻電路(見圖
45、3)最主要的功能就是產(chǎn)生穩(wěn)定的1赫茲輸出信號,用做下一級電路的同步信號。</p><p><b> 時鐘發(fā)生電路模塊圖</b></p><p><b> 系統(tǒng)輸入信號:</b></p><p> clk:由外部信號發(fā)生器提供1kHZ的時鐘信號;</p><p><b> 系統(tǒng)輸出信
46、號:</b></p><p> newclk1:產(chǎn)生每秒一個脈沖的時鐘信號。</p><p> 經(jīng)仿真后得到的時序圖(見圖4、圖5)</p><p> 將clk經(jīng)分頻處理后得到的ena_scan信號</p><p><b> 時鐘發(fā)生電路時序圖</b></p><p><
47、b> 交通信號控制器</b></p><p> 交通控制器的狀態(tài)轉(zhuǎn)換圖</p><p> 上圖為交通控制器的狀態(tài)轉(zhuǎn)換圖,平時系統(tǒng)停留在MGCR(主干道通行)狀態(tài),一旦S信號有效,經(jīng)MYCR(黃燈狀態(tài))轉(zhuǎn)入MRCG(鄉(xiāng)間公路通行)狀態(tài)??刂破鞯淖饔檬歉鶕?jù)計數(shù)器的計數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計時數(shù)值給動態(tài)數(shù)碼管電路。</p><p>
48、 圖4-7 交通信號控制器模塊圖</p><p><b> 系統(tǒng)輸入信號:</b></p><p> clk:由外部信號發(fā)生器提供1HZ的時鐘信號;</p><p><b> ena:使能信號;</b></p><p> s: 支路請求信號;</p><p>&l
49、t;b> 系統(tǒng)輸出信號:</b></p><p> mql、mqh、cql、cqh:計數(shù)顯示信號;</p><p> mr:主干道紅燈輸出信號;</p><p> my:主干道黃燈輸出信號;</p><p> mg:主干道綠燈輸出信號;</p><p> cr:支路紅燈輸出信號;</
50、p><p> cy:支路黃燈輸出信號;</p><p> cg:支路綠燈輸出信號。</p><p> 經(jīng)仿真后得到的時序圖(見圖7):</p><p> 計數(shù)秒數(shù)選擇電路時序圖</p><p> 由計數(shù)描述選擇電路的時序圖(見圖7)可以看出這段程序中定義了在正常車流量情況下,東西及南北方向紅燈、黃燈和綠燈需要維持
51、的秒數(shù)分別是15s、5s和25s</p><p><b> 動態(tài)數(shù)碼管掃描電路</b></p><p> 通過日常生活中的觀察,我發(fā)現(xiàn)在一些交通路口已經(jīng)開始使用倒計時顯示器,它們的作用就是用來提示車輛行人目前還有多長時間信號燈會發(fā)生變化,這樣車輛行人就可以提前判斷是否有足夠的時間通過路口,進而就可以避免很多意外事故的發(fā)生。例如:南北方向綠燈,車輛處于正常行駛中,東
52、西方向紅燈,車輛處于等待中,若南北方向行駛的車輛看到倒計時顯示器上可以通行的時間很短,可能就會放慢速度等待下一次通行,這樣在東西方向綠燈時,車輛就能夠正常行駛,不會為等待南北方向強行的車輛而耽誤更多的時間。如此循環(huán)下去,道路就會暢通無阻了??紤]到有些路口的交通擁堵現(xiàn)象較為嚴重,車輛會在道路上排成很長的一隊,這樣排在較遠距離的司機就很難看清楚倒計時顯示器上變化的數(shù)字,有可能會影響到車輛之間的正常行駛。因此,如果采用發(fā)光二極管作為倒計時的顯
53、示裝置就會使司機和行人一目了然,同樣也能夠起到很好的提示作用。動態(tài)數(shù)碼管掃描電路是為了讓數(shù)碼管顯示倒數(shù)計時計數(shù),所以,scan動態(tài)數(shù)碼管掃描電路(見圖8)最主要的功能就是負責接收hld2電路輸出的值,然后將其轉(zhuǎn)換成BCD碼,并利用發(fā)光二極管顯示出來,讓車輛行人能夠清楚地知道再過多久信號燈就會發(fā)生變化</p><p><b> 倒計時控制電路</b></p><p>
54、<b> 系統(tǒng)輸入信號:</b></p><p> clk:由外部信號發(fā)生器提供1kHz的時鐘信號;</p><p> num1:接收系統(tǒng)主干道低電平信號;</p><p> num2:接收系統(tǒng)主干道高電平信號;</p><p> num7:接收系統(tǒng)支路低電平信號;</p><p>
55、num8:接收系統(tǒng)支路高電平信號。</p><p><b> 系統(tǒng)輸出信號:</b></p><p> sel:負責將計數(shù)數(shù)值轉(zhuǎn)換成BCD碼,并利用發(fā)光二極管顯示倒計時狀態(tài);</p><p> next_state:當計數(shù)器計時完畢后,負責產(chǎn)生一個脈沖信號,作為下一個狀態(tài)的觸發(fā)信號。</p><p> 經(jīng)仿真后得
56、到的時序圖(見圖9):</p><p> 倒計時控制電路時序圖</p><p> 由倒計時控制電路的時序圖(見圖9)可以看出,當clk時鐘信號來臨后,在ena_1hz脈沖信號的同時激勵下,led會按照預先設置好的時間開始逐1遞減,進行倒計時顯示。</p><p> 這段程序是采用的就是查表的方法并且利用發(fā)光二極管進行倒計時顯示,如圖9所示:當綠燈點亮開始計數(shù)后
57、,load就會將減1后的值賦給cnt_ff,之后cnt_ff又會從case語句中查找到相對應的值再賦給led顯示所剩余的時間。在程序編寫過程中運用到了conv_integer()語句,它可以將cnt_ff所賦的值轉(zhuǎn)換成整數(shù)。由圖可知led是25位的系統(tǒng)輸出信號,負責控制發(fā)光二極管的輸出,所以25位的輸出信號可以分成七組控制發(fā)光二極管的顯示,其中“1”為點亮,“0”為熄滅。程序代碼見附錄3倒計時控制電路。</p><p
58、><b> 建立程序包</b></p><p> 在程序設計語言中,程序的開始總會調(diào)用庫(library)來提供設計程序時所需要的基本命令。但是,如果要進一步設計較為復雜的程序時,庫中的命令可能就無法支持了。因此,可以設計一個子程序來滿足程序設計的需求。</p><p> 上述問題在硬件描述語言的設計中也存在,在VHDL程序中的第一行(library ie
59、ee;)就是要使用IEEE設計好的庫文件,但如果需要使用的元器件并不在庫中時,就只能自己定義了。</p><p> 一個程序包中至少應該包含以下結構中的一種:</p><p> 常數(shù)說明:如定義系統(tǒng)數(shù)據(jù)總線通道的寬度。</p><p> VHDL數(shù)據(jù)類型說明:主要用于在整個設計中通用的數(shù)據(jù)類型。</p><p> 元件定義:元件定義主
60、要規(guī)定在VHDL設計中參與文件例化的文件接 口界面。</p><p> 子程序:并入程序包的子程序有利于在設計中任一處進行方便地調(diào) 用。</p><p> 例如,時鐘發(fā)生電路的組件代碼為:</p><p> component hld1</p><p> port(reset:in st
61、d_logic;</p><p> clk:in std_logic;</p><p> ena_scan:out std_logic;</p><p> ena_1hz:out std_logic;</p><p> flash_1hz:out std_logic);</p><p> end compon
62、ent;</p><p><b> 連接各個模塊</b></p><p> light電路的工作就是將所有的子電路全部連接起來,進行時序分析,當程序完成后,再下載到FPGA,以便硬件電路的驗證工作。</p><p> 經(jīng)仿真后得到的時序圖(見圖12):</p><p> 連接各個模塊后的時序圖</p>
63、<p><b> 從上圖可以看出</b></p><p> 南北方向:綠燈25s――>黃燈5s</p><p> 東西方向:綠燈25s――>黃燈5s</p><p><b> 狀態(tài)轉(zhuǎn)換圖如下:</b></p><p><b> 有效狀態(tài)轉(zhuǎn)換如下:<
64、/b></p><p> 東西方向:紅燈――綠燈――黃燈</p><p> 南北方向:綠燈――黃燈――紅燈</p><p><b> 狀態(tài)機的優(yōu)勢</b></p><p> 通過上面圖形的展示,狀態(tài)機有著難以超越的優(yōu)越性,主要表現(xiàn)在一下幾方面:</p><p> 狀態(tài)機克服了純硬件
65、數(shù)字系統(tǒng)順序方式控制不靈活的缺點。</p><p> 由于狀態(tài)機的結構相對簡單,設計方案相對固定,特別是可以定義符號化枚舉類型的狀態(tài),這一切都為VHDL綜合器盡可能發(fā)揮其騏達的優(yōu)化功能提供了有利條件。而且,性能良好的綜合器都具有許多可控或自動的優(yōu)化狀態(tài)機的功能。</p><p> 狀態(tài)機容易構成性能良好的同步時序邏輯模塊,這對于大規(guī)模邏輯電路設計中令人深感棘手的競爭冒險現(xiàn)象無疑是一個上
66、佳的選擇。</p><p> 與VHDL的其他描述方式相比,狀態(tài)機的VHDL描述豐富多樣、程序?qū)哟畏置?,結構清晰,易讀易懂;在排錯、修改和模塊移植方面也有獨到的好處。</p><p> 在高速運算和控制方面,狀態(tài)機更有其巨大的優(yōu)勢。在VHDL中,一個狀態(tài)機可以由多個進程構成,一個結構體中可以包含多個狀態(tài)機,而一個單獨的狀態(tài)機以順序方式所能完成的運算和控制方面的工作與一個CPU的功能類似
67、。</p><p><b> 高可靠性。</b></p><p><b> 結束語</b></p><p> 本設計采用了VHDL硬件描述語言文本輸入方式,在確立總體預期實現(xiàn)功能的前提下,分層次進行設計。實現(xiàn)了三種顏色交通信號燈的交替點亮,以及時間的倒計時顯示,指揮行人和車輛安全通行。程序中所用到的數(shù)據(jù)均可以根據(jù)實際
68、情況進行設置,修改靈活方便。通過此次設計,我對于VHDL硬件描述語言有了更深入地了解,也在原來所學的理論基礎上得到了進一步地應用。但由于經(jīng)驗上的不足,有些地方還需要做進一步地改善,如可通過FPGA/CPLD開發(fā)套件驗證。</p><p> 數(shù)字化時代的到來給人們的生活水平帶來了極大的改變,我們有理由相信,隨著數(shù)字化的深入,交通燈控制器的功能將日趨完善。而且,VHDL語言對EDA技術產(chǎn)生的影響也是深遠的,它縮短了
69、電子產(chǎn)品的設計周期,為設計者提供了方便。在今后的電子產(chǎn)品研究開發(fā)過程中,EDA技術將會具有更好的開發(fā)手段和更高的性價比,并且將擁有更為廣闊的市場應用前景。</p><p><b> 參考文獻</b></p><p> [1] 元紅妍、張鑫主編:《電子綜合設計實驗教程》,第一版,山東:山東大學出版社,2005年,第111-113頁。</p><
70、p> [2] 楊曉慧、許紅梅、楊會玲編著:《電子技術EDA實踐教程》,第一版,北京:國防工業(yè)出版社,2005年,第235-240頁。</p><p> [3] 楊恒、李愛國、王輝、王新安編著:《FPGA/CPLD最新實用技術指南》,第一版,北京:清華大學出版社,2005年,第242-244頁。</p><p> [4] 孫芹芝、張瑾、蘇曉鷺:《基于EDA的交通燈控制系統(tǒng)》,
71、《應用天地》,2005年第五期,第66-68頁。</p><p> [5] 林明權等編著:《VHDL數(shù)字控制系統(tǒng)設計范例》,第一版,北京:電子工業(yè)出版社,2003年,第115-126頁。</p><p> [6] 潘松、黃繼業(yè)編著:《EDA技術實用教程》,第二版,北京:科學出版社,2005年,第1-3頁。</p><p> [7] 楊恒新:《自頂向下法設
72、計交通燈控制系統(tǒng)》,《電氣電子教學學報》,2006年第四期,第40-41頁。</p><p> [8] 曾素瓊:《EDA技術在數(shù)字電路中的探討》,《實驗科學與技術》,2005年第一期,第22-25頁。</p><p> [9] 徐志軍、徐光輝編著:《CPLD/FPGA的開發(fā)與應用》,第一版,北京:電子工業(yè)出版社,2002年,第176-185頁。</p><p>
73、;<b> 致謝</b></p><p><b> 附錄</b></p><p> 紅綠燈交通信號系統(tǒng)的VHDL程序代碼:</p><p> 1.時鐘發(fā)生電路程序代碼</p><p> library ieee;</p><p> use ieee.std_log
74、ic_1164.all;</p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity hld1 is</p><p> port(reset:in std_logic;</p><p
75、> clk:in std_logic;</p><p> ena_scan:out std_logic;</p><p> ena_1hz:out std_logic;</p><p> flash_1hz:out std_logic);</p><p><b> end;</b></p>
76、<p> architecture bhv of hld1 is</p><p> constant scan_bit:positive:=2;</p><p> constant scan_val:positive:=4;</p><p> constant two_hz_bit:positive:=7;</p><p>
77、 constant two_hz_val:positive:=125;</p><p> signal clk_scan_ff:std_logic_vector(scan_bit-1 downto 0);</p><p> signal clk_2hz_ff:std_logic_vector(two_hz_bit-1 downto 0);</p><p>
78、signal ena_s:std_logic;</p><p> signal ena_one:std_logic;</p><p> signal ena_two:std_logic;</p><p><b> begin</b></p><p> process(reset,clk)</p>&
79、lt;p><b> begin</b></p><p> if reset='1' then</p><p> clk_scan_ff<="00";</p><p> ena_s<='0';</p><p> elsif (clk'e
80、vent and clk='1') then</p><p> if clk_scan_ff>=scan_val-1 then</p><p> clk_scan_ff<="00";</p><p> ena_s<='1';</p><p><b> el
81、se</b></p><p> clk_scan_ff<=clk_scan_ff+1;</p><p> ena_s<='0';</p><p><b> end if;</b></p><p><b> end if;</b></p>
82、<p> end process;</p><p> ena_scan<=ena_s;</p><p> process(reset,clk,ena_s)</p><p><b> begin</b></p><p> if reset='1' then</p>&
83、lt;p> ena_one<='0';</p><p> ena_two<='0';</p><p> clk_2hz_ff<="0000000";</p><p> elsif (clk'event and clk='1') then</p>
84、<p> if ena_s='1' then</p><p> if clk_2hz_ff>=two_hz_val-1 then</p><p> clk_2hz_ff<="0000000";</p><p> ena_two<='1';</p><p>
85、 ena_one<=not ena_one;</p><p><b> else</b></p><p> clk_2hz_ff<=clk_2hz_ff+1;</p><p> ena_two<='0';</p><p> ena_one<=ena_one;</p&
86、gt;<p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p> ena_1hz<=ena_one an
87、d ena_two and ena_s;</p><p> flash_1hz<=ena_one;</p><p><b> end;</b></p><p> 2.計數(shù)秒數(shù)選擇電路程序代碼</p><p> library ieee;</p><p> use ieee.std_
88、logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> use ieee.std_logic_arith.all;</p><p> entity hld2 is</p><p> port(reset:in std_logic;</p>&l
89、t;p> clk:in std_logic;</p><p> ena_scan:in std_logic;</p><p> recount:in std_logic;</p><p> sign_state:in std_logic_vector(2 downto 0);</p><p> load:out std_log
90、ic_vector(7 downto 0));</p><p><b> end;</b></p><p> architecture bhv of hld2 is</p><p> constant redew_time:integer:=15;</p><p> constant yellowew_time:
91、integer:=5;</p><p> constant greenew_time:integer:=25;</p><p> constant redsn_time:integer:=15;</p><p> constant yellowsn_time:integer:=5;</p><p> constant greensn_
92、time:integer:=25;</p><p><b> begin</b></p><p> process(reset,clk)</p><p><b> begin</b></p><p> if reset='1' then</p><p>
93、; load<="00000000";</p><p> elsif (clk'event and clk='1') then</p><p> if (ena_scan='1' and recount='1') then</p><p> case sign_state is
94、</p><p> when "000"=>load<=conv_std_logic_vector(greensn_time,8);</p><p> when "001"=>load<=conv_std_logic_vector(yellowsn_time,8);</p><p> when &
95、quot;010"=>load<=conv_std_logic_vector(redsn_time,8);</p><p> when "011"=>load<=conv_std_logic_vector(redew_time,8);</p><p> when "100"=>load<=conv_s
96、td_logic_vector(yellowew_time,8);</p><p> when "101"=>load<=conv_std_logic_vector(greenew_time,8);</p><p> when others=>load<=conv_std_logic_vector(yellowsn_time,8);</
97、p><p><b> end case;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p><b> end;</
98、b></p><p> 3.倒計時控制電路程序代碼</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logi
99、c_unsigned.all;</p><p> entity hld3 is</p><p> port(reset:in std_logic;</p><p> clk:in std_logic;</p><p> ena_1hz:in std_logic;</p><p> recount:in std
100、_logic;</p><p> load:in std_logic_vector(7 downto 0);</p><p> led:out std_logic_vector(24 downto 0);</p><p> next_state:out std_logic);</p><p><b> end;</b&
101、gt;</p><p> architecture bhv of hld3 is</p><p> signal cnt_ff:std_logic_vector(7 downto 0);</p><p><b> begin</b></p><p> process(clk,reset)</p>&
102、lt;p><b> begin</b></p><p> if (reset='1') then </p><p> cnt_ff<="00000000";</p><p> led<="0000000000000000000000000";</p>
103、<p> elsif (clk'event and clk='1') then</p><p> if ena_1hz='1' then </p><p> if (recount='1') then</p><p> cnt_ff<=load-1;</p>&
104、lt;p> else cnt_ff<=cnt_ff-1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> case conv_integer(cnt_ff) is</p><p> when 0=>le
105、d(24 downto 0)<="1000000000000000000000000";</p><p> when 1=>led(24 downto 0)<="1100000000000000000000000";</p><p> when 2=>led(24 downto 0)<="111000000
106、0000000000000000";</p><p> when 3=>led(24 downto 0)<="1111000000000000000000000";</p><p> when 4=>led(24 downto 0)<="1111100000000000000000000";</p>
107、<p> when 5=>led(24 downto 0)<="1111110000000000000000000";</p><p> when 6=>led(24 downto 0)<="1111111000000000000000000";</p><p> when 7=>led(24 down
108、to 0)<="1111111100000000000000000";</p><p> when 8=>led(24 downto 0)<="1111111110000000000000000";</p><p> when 9=>led(24 downto 0)<="111111111100000000
109、0000000";</p><p> when 10=>led(24 downto 0)<="1111111111100000000000000";</p><p> when 11=>led(24 downto 0)<="1111111111110000000000000";</p><p&
110、gt; when 12=>led(24 downto 0)<="1111111111111000000000000";</p><p> when 13=>led(24 downto 0)<="1111111111111100000000000";</p><p> when 14=>led(24 downto 0
111、)<="1111111111111110000000000";</p><p> when 15=>led(24 downto 0)<="1111111111111111000000000";</p><p> when 16=>led(24 downto 0)<="11111111111111111000
112、00000";</p><p> when 17=>led(24 downto 0)<="1111111111111111110000000";</p><p> when 18=>led(24 downto 0)<="1111111111111111111000000";</p><p>
113、; when 19=>led(24 downto 0)<="1111111111111111111100000";</p><p> when 20=>led(24 downto 0)<="1111111111111111111110000";</p><p> when 21=>led(24 downto 0)&
114、lt;="1111111111111111111111000";</p><p> when 22=>led(24 downto 0)<="1111111111111111111111100";</p><p> when 23=>led(24 downto 0)<="1111111111111111111111
115、110";</p><p> when 24=>led(24 downto 0)<="1111111111111111111111111";</p><p> when others=>led(24 downto 0)<="0000000000000000000000000";</p><p&
116、gt;<b> end case;</b></p><p><b> end if;</b></p><p> end process;</p><p> next_state<='1' when cnt_ff=1 else '0';</p><p>&
117、lt;b> end;</b></p><p> 4.紅綠燈信號控制電路程序代碼</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><
118、p> entity hld4 is</p><p> port(reset:in std_logic;</p><p> clk:in std_logic;</p><p> ena_scan:in std_logic;</p><p> ena_1hz:in std_logic;</p><p>
119、flash_1hz:in std_logic;</p><p> a_m:in std_logic;</p><p> st_butt:in std_logic;</p><p> next_state:in std_logic;</p><p> recount:out std_logic;</p><p>
120、 sign_state:out std_logic_vector(2 downto 0);</p><p> red:out std_logic_vector(1 downto 0);</p><p> green:out std_logic_vector(1 downto 0);</p><p> yellow:out std_logic_vector(1
121、 downto 0));</p><p><b> end;</b></p><p> architecture bhv of hld4 is</p><p> type sreg0_type is (rewgsn, rewysn, gewrsn, yewrsn, yewysn, yewgsn, gewysn, rewrsn);</
122、p><p> signal state:sreg0_type;</p><p> signal st_transfer:std_logic;</p><p> signal light:std_logic_vector(5 downto 0);</p><p><b> begin</b></p>&l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能交通燈控制系統(tǒng)設計
- 智能交通燈控制系統(tǒng)設計
- 基于plc的智能交通燈控制系統(tǒng)設計
- 智能交通燈控制系統(tǒng)
- 基于plc的智能交通燈控制系統(tǒng)設計
- 智能交通燈控制系統(tǒng)的設計.pdf
- 智能交通燈plc控制系統(tǒng)設計【任務書】
- 智能交通燈控制系統(tǒng)設計-開題報告
- 交通燈課程設計--交通燈控制系統(tǒng)設計
- 智能交通燈控制系統(tǒng)設計課程設計
- 基于單片機交通燈智能控制系統(tǒng)設計
- 交通燈控制系統(tǒng)設計
- 畢業(yè)設計--基于plc的智能交通燈控制系統(tǒng)設計
- 智能交通燈控制系統(tǒng)定稿.doc
- 基于plc的智能交通燈控制系統(tǒng)設計畢業(yè)設計
- 基于vhdl語言的交通燈控制器設計
- 交通燈控制系統(tǒng)的設計
- 基于plc交通燈控制系統(tǒng)的設計
- 基于ethernetip交通燈控制系統(tǒng)設計
- 基于plc交通燈控制系統(tǒng)設計
評論
0/150
提交評論