基于vhdl智能交通燈控制系統(tǒng)的設(shè)計(jì)20說(shuō)明書_第1頁(yè)
已閱讀1頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘要</b></p><p>  EDA技術(shù)的一個(gè)重要特征就是使用硬件描述語(yǔ)言(HDL)來(lái)完成系統(tǒng)的設(shè)計(jì)文件,應(yīng)用VHDL的數(shù)字電路實(shí)驗(yàn)降低了數(shù)字系統(tǒng)的設(shè)計(jì)難度,這在電子設(shè)計(jì)領(lǐng)域已得到設(shè)計(jì)者的廣泛采用。本設(shè)計(jì)就是針對(duì)交通信號(hào)燈控制器的設(shè)計(jì)問(wèn)題,提出了基于VHDL語(yǔ)言的交通信號(hào)燈系統(tǒng)的硬件實(shí)現(xiàn)方法。通過(guò)對(duì)系統(tǒng)進(jìn)行結(jié)構(gòu)分析,采用了層次化的設(shè)計(jì)方法,給出了各個(gè)模塊的V

2、HDL程序,并且利用Quartus Ⅱ?qū)?yīng)用程序進(jìn)行了仿真,并給出了相應(yīng)的仿真結(jié)果。通過(guò)電路優(yōu)化設(shè)計(jì),可以使用規(guī)模更小的可編程邏輯芯片,從而降低系統(tǒng)成本。</p><p>  關(guān)鍵詞:交通信號(hào)燈;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技術(shù)概述2</p><p>  2.1 EDA技術(shù)及其發(fā)展2</p><p>  2.2 EDA與傳統(tǒng)電子設(shè)計(jì)方法的比較2</p><p>  2.3 EDA的工程設(shè)計(jì)流程2</p><p>  第3章可編程技術(shù)簡(jiǎn)介4</p><p>  3.1 可編程邏輯器件概述4</

7、p><p>  3.2 FPGA/CPLD概述4</p><p>  3.3 硬件描述語(yǔ)言介紹5</p><p>  3.4 選擇VHDL硬件描述語(yǔ)言設(shè)計(jì)的優(yōu)勢(shì)6</p><p>  3.5 軟件開(kāi)發(fā)工具Quartus II 簡(jiǎn)介6</p><p>  第4章智能交通控制系統(tǒng)的設(shè)計(jì)8</p>&l

8、t;p>  4.1 系統(tǒng)功能分析8</p><p>  4.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)9</p><p>  4.3 系統(tǒng)程序?qū)崿F(xiàn)10</p><p>  4.3.1 分頻計(jì)數(shù)電路10</p><p>  4.3.2 交通信號(hào)控制器電路12</p><p>  4.3.3 動(dòng)態(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 連接各個(gè)模塊23</p><p>  4.3.7 狀態(tài)機(jī)的優(yōu)勢(shì)24</p><p>  4.4仿真及仿真結(jié)果分析</p><p><b>

10、;  結(jié)束語(yǔ)26</b></p><p><b>  參考文獻(xiàn)27</b></p><p><b>  致謝28</b></p><p><b>  附錄29</b></p><p>  1.時(shí)鐘發(fā)生電路程序代碼29</p><p>

11、;  2.計(jì)數(shù)秒數(shù)選擇電路程序代碼31</p><p>  3.倒計(jì)時(shí)控制電路程序代碼32</p><p>  4.紅綠燈信號(hào)控制電路程序代碼34</p><p>  5.連接各個(gè)模塊的程序代碼38</p><p><b>  外文資料原文41</b></p><p><b>

12、  翻譯文稿55</b></p><p><b>  引言</b></p><p>  不同的城市存在著不同的城市問(wèn)題,但其中有一個(gè)共同的問(wèn)題就是城市交通。在交叉路口如何解決混合交通流中的相互影響,就是解決問(wèn)題的關(guān)鍵所在!隨著我國(guó)經(jīng)濟(jì)的穩(wěn)步發(fā)展,人民生活水平的日漸提高,越來(lái)越多的汽車進(jìn)入尋常百姓的家庭,再加上政府大力地發(fā)展公交、出租車行業(yè),道路上的車輛越

13、來(lái)越多,使得城市的交通成為了一個(gè)主要的問(wèn)題。嚴(yán)重的擁堵現(xiàn)象,逐漸惡化的城市環(huán)境,都給廣大市民帶來(lái)了許多困擾。要解決這些問(wèn)題不僅要求道路越來(lái)越寬闊,而且更需要有新的交通管理模式出臺(tái)。</p><p>  實(shí)現(xiàn)路口交通燈系統(tǒng)的控制方法很多,可以用標(biāo)準(zhǔn)邏輯器件、可編程序控制器PLC、單片機(jī)等方案來(lái)實(shí)現(xiàn)。但是這些控制方法的功能修改及調(diào)試都需要硬件電路的支持,在一定程度上增加了功能修改及系統(tǒng)調(diào)試的困難。交通系統(tǒng)未來(lái)的發(fā)展趨

14、勢(shì)就是要提高通行能力,加強(qiáng)環(huán)境保護(hù),開(kāi)展智能化運(yùn)輸和環(huán)保專項(xiàng)技術(shù)的研究,并且要做到以人為本,重點(diǎn)開(kāi)展交通安全技術(shù)的研究,在這個(gè)過(guò)程中要確定經(jīng)濟(jì)合理的目標(biāo),促進(jìn)新材料的廣泛應(yīng)用和開(kāi)發(fā)。</p><p>  EDA 技術(shù)是用于電子產(chǎn)品設(shè)計(jì)中比較先進(jìn)的技術(shù),可以代替設(shè)計(jì)者完成電子系統(tǒng)設(shè)計(jì)中的大部分工作,而且可以直接從程序中修改錯(cuò)誤及系統(tǒng)功能而不需要硬件電路的支持,既縮短了研發(fā)周期,又大大節(jié)約了成本,受到了電子工程師的青

15、睞。</p><p>  因此,本設(shè)計(jì)中采用EDA 技術(shù),應(yīng)用目前廣泛應(yīng)用的VHDL 硬件電路描述語(yǔ)言,實(shí)現(xiàn)交通燈系統(tǒng)控制器的設(shè)計(jì), 利用Quartus Ⅱ集成開(kāi)發(fā)環(huán)境進(jìn)行綜合、仿真,完成系統(tǒng)的控制作用。</p><p><b>  EDA技術(shù)概述</b></p><p><b>  EDA技術(shù)及其發(fā)展</b></p

16、><p>  現(xiàn)代電子設(shè)計(jì)技術(shù)的核心是EDA(Electronic Design Automation)技術(shù)。EDA技術(shù)就是依賴功能強(qiáng)大的計(jì)算機(jī),在EDA工具軟件平臺(tái)上,對(duì)以硬件描述語(yǔ)言HDL(Hardware Description Language)為系統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件,它能自動(dòng)地完成邏輯編譯、邏輯化簡(jiǎn)、邏輯分割、邏輯綜合、結(jié)構(gòu)綜合(布局 布線),以及邏輯優(yōu)化和仿真測(cè)試,直至實(shí)現(xiàn)既定的電子線路系統(tǒng)功能

17、。EDA技術(shù)使得設(shè)計(jì)者的工作僅限于利用軟件的方式,即利用硬件描述語(yǔ)言和EDA軟件來(lái)完成對(duì)系統(tǒng)硬件功能的實(shí)現(xiàn)。</p><p>  利用EDA技術(shù)(特指IES/ASIC自動(dòng)設(shè)計(jì)技術(shù))進(jìn)行電子系統(tǒng)的設(shè)計(jì),具有以下幾個(gè)特點(diǎn):① 用軟件的方式設(shè)計(jì)硬件;② 用軟件方式設(shè)計(jì)的系統(tǒng)到硬件系統(tǒng)的轉(zhuǎn)換是由有關(guān)的開(kāi)發(fā)軟件自動(dòng)完成的;③ 設(shè)計(jì)過(guò)程中可用有關(guān)軟件進(jìn)行各種仿真;④ 系統(tǒng)可現(xiàn)場(chǎng)編程,在線升級(jí);⑤ 整個(gè)系統(tǒng)可集成在一個(gè)芯片上,

18、體積小、功耗低、可靠性高。因此,EDA技術(shù)是現(xiàn)代電子設(shè)計(jì)的發(fā)展趨勢(shì)。</p><p>  EDA技術(shù)在進(jìn)入21世紀(jì)后,得到了更大的發(fā)展。在仿真和設(shè)計(jì)兩方面支持標(biāo)準(zhǔn)硬件描述語(yǔ)言的功能越來(lái)越強(qiáng)大,軟硬件技術(shù)也進(jìn)一步得到了融合,在電子行業(yè)的產(chǎn)業(yè)領(lǐng)域、技術(shù)領(lǐng)域和設(shè)計(jì)應(yīng)用領(lǐng)域得到了進(jìn)一步的肯定,使得復(fù)雜電子系統(tǒng)的設(shè)計(jì)和驗(yàn)證趨于簡(jiǎn)單化。</p><p>  EDA與傳統(tǒng)電子設(shè)計(jì)方法的比較</p&

19、gt;<p>  與傳統(tǒng)的電子設(shè)計(jì)方法相比,EDA技術(shù)對(duì)于復(fù)雜電路的設(shè)計(jì)和調(diào)試都比較簡(jiǎn)單,如果某一過(guò)程存在錯(cuò)誤,查找和修改起來(lái)比較方便,而且EDA技術(shù)的可移植性很強(qiáng)。</p><p>  EDA的工程設(shè)計(jì)流程</p><p>  假設(shè)我們需要建造一棟樓房,第一,我們需要進(jìn)行“建筑設(shè)計(jì)”——用各種設(shè)計(jì)圖紙把我們的建筑設(shè)想表示出來(lái);第二,我們要進(jìn)行“建筑預(yù)算”——根據(jù)投資規(guī)模、擬

20、建樓房的結(jié)構(gòu)及有關(guān)建房的經(jīng)驗(yàn)數(shù)據(jù)等計(jì)算需要多少基本的建筑材料(如磚、水泥、預(yù)制塊、門、窗戶等); 第三,根據(jù)建筑設(shè)計(jì)和建筑預(yù)算進(jìn)行“施工設(shè)計(jì)”——這些磚、水泥、預(yù)制塊、門、窗戶等具體砌在房子的什么部位,相互之間怎樣連接;第四,根據(jù)施工圖進(jìn)行“建筑施工”——將這些磚、水泥、預(yù)制塊、門、窗戶等按照規(guī)定施工建成一棟樓房;最后,施工完畢后,還要進(jìn)行“建筑驗(yàn)收”——檢驗(yàn)所建樓房是否符合設(shè)計(jì)要求。同時(shí),在整個(gè)建設(shè)過(guò)程中,我們可能需要做出某些“建筑模

21、型”或進(jìn)行某些“建筑實(shí)驗(yàn)”。</p><p>  那么,對(duì)于目標(biāo)器件為FPGA和CPL D的VHD 設(shè)計(jì),其工程設(shè)計(jì)步驟如何呢?EDA的工程設(shè)計(jì)流程與上面所描述的基建流程類似:第一需要進(jìn)行“源程序的編輯和編譯”——用一定的邏輯表達(dá)手段將設(shè)計(jì)表達(dá)出來(lái);第二要進(jìn)行“邏輯綜合”——將用一定的邏輯表達(dá)手段表達(dá)出來(lái)的設(shè)計(jì),經(jīng)過(guò)一系列的操作,分解成一系列的基本邏輯電路及對(duì)應(yīng)關(guān)系(電路分解);第三要進(jìn)行“目標(biāo)器件的布線/適配”

22、——在選定的目標(biāo)器件中建立這些基本邏輯電路及對(duì)應(yīng)關(guān)系(邏輯實(shí)現(xiàn));第四,目標(biāo)器件的編程/下載——將前面的軟件設(shè)計(jì)經(jīng)過(guò)編程變成具體的設(shè)計(jì)系統(tǒng)(物理實(shí)現(xiàn));最后,要進(jìn)行硬件仿真/硬件測(cè)試——驗(yàn)證所設(shè)計(jì)的系統(tǒng)是否符合設(shè)計(jì)要求。同時(shí),在設(shè)計(jì)過(guò)程中要進(jìn)行有關(guān)“仿真”——模擬有關(guān)設(shè)計(jì)結(jié)果與設(shè)計(jì)構(gòu)想是否相符。綜上所述,EDA的工程設(shè)計(jì)的基本流程如圖2.1所示 </p><p><b>  EDA工程設(shè)計(jì)</b&

23、gt;</p><p><b>  可編程技術(shù)簡(jiǎn)介</b></p><p><b>  可編程邏輯器件概述</b></p><p>  可編程邏輯器件(簡(jiǎn)稱PLD)是允許用戶編程(配置)實(shí)現(xiàn)所需邏輯功能的電路,一般可利用計(jì)算機(jī)輔助設(shè)計(jì),即用原理圖、狀態(tài)機(jī)、硬件描述語(yǔ)言(VHDL)等方法來(lái)表示設(shè)計(jì)思想,經(jīng)過(guò)一系列編譯或裝換程

24、序,生成相應(yīng)的目標(biāo)文件,再由編程器或下載電纜將設(shè)計(jì)文件配置到目標(biāo)器件中,這時(shí)的可編程邏輯器件就可作為滿足用戶需求的專用集成電路使用了。</p><p>  可編程邏輯器件,不僅速度快、集成度高,并且能隨心所欲地完成用戶定義的邏輯功能,還可以加密和重新編程,其編程次數(shù)最大可達(dá)1萬(wàn)次以上。使用可編程邏輯器件可以大大簡(jiǎn)化硬件系統(tǒng)、降低成本、提高系統(tǒng)的可靠性、靈活性和保密性。PLD的出現(xiàn),打破了由中小規(guī)模通用型集成電路和

25、大規(guī)模專用集成電路壟斷的局面,在通信、數(shù)據(jù)處理、網(wǎng)絡(luò)、儀器、工業(yè)控制、軍事和航空航天等眾多領(lǐng)域得到廣泛應(yīng)用,可以預(yù)見(jiàn),不久的將來(lái),PLD將在集成電路市場(chǎng)占統(tǒng)治地位。</p><p>  FPGA/CPLD概述</p><p>  FPGA(現(xiàn)場(chǎng)可編程門陣列)和CPLD(復(fù)雜可編程邏輯器件)都是可編程邏輯器件,他們是在PAL,GAL等邏輯器件的基礎(chǔ)上發(fā)展起來(lái)的。同以往的PAL,GAL相比較,

26、FPGA/CPLD的規(guī)模比較大,它可以替代幾十甚至幾千塊通用IC芯片。這樣的FPGA/CPLD實(shí)際上就是一個(gè)子系統(tǒng)部件。這種芯片受到世界范圍內(nèi)電子工程設(shè)計(jì)人員的廣泛關(guān)注和普遍歡迎。比較典型的就是Altera公司和Xilinx公司的CPLD器件系列和FPGA器件系列,他們開(kāi)發(fā)較早,占用了較大的PLD市場(chǎng)。</p><p>  對(duì)用戶而言,雖然FPGA/CPLD的內(nèi)部結(jié)構(gòu)稍有不同,但其用法都一樣,所以大多數(shù)情況下,不

27、加以區(qū)分。FPGA/CPLD芯片都是特殊的ASIC芯片,除了具有ASIC的特點(diǎn)外,還具有以下幾個(gè)優(yōu)點(diǎn):</p><p>  (1) 隨著VLSI(Very Large Scale IC,超大集成電路)工藝的不斷提高單一芯片內(nèi)部可以容納上百萬(wàn)個(gè)晶體管,F(xiàn)PGA/CPLD芯片的規(guī)模也越來(lái)越大,其單片邏輯門數(shù)已達(dá)到上百萬(wàn)門,它所實(shí)現(xiàn)的功能也越來(lái)越強(qiáng),同時(shí)也可以實(shí)現(xiàn)系統(tǒng)集成,即片上系統(tǒng)SOC.</p>&l

28、t;p>  (2) FPGA/CPLD芯片在出廠之前都做過(guò)百分之百的測(cè)試,不需要設(shè)計(jì)人員承擔(dān)芯片風(fēng)險(xiǎn)和費(fèi)用,設(shè)計(jì)人員只需在自己的實(shí)驗(yàn)室就可以通過(guò)相關(guān)的軟硬件環(huán)境來(lái)完成芯片的最終功能設(shè)計(jì)。所以,F(xiàn)PGA/CPLD的資金投入就小,減少了潛在的花費(fèi)。</p><p>  (3) 用戶可以反復(fù)地編程、擦除、使用或者在外圍電路不動(dòng)的情況下用不同軟件就可實(shí)現(xiàn)不同的功能。FPGA/CPLD軟件包中有各種輸入工具和仿真工具

29、,及版圖設(shè)計(jì)工具和編程器等全線產(chǎn)品,電路設(shè)計(jì)人員在很短的時(shí)間內(nèi)就可完成電路的輸入、編譯、優(yōu)化。仿真,直至最后芯片的制作。當(dāng)電路有少量的改動(dòng),更能顯示FPGA/CPLD的優(yōu)勢(shì)。電路設(shè)計(jì)人員在使用FPGA/CPLD進(jìn)行電路設(shè)計(jì)時(shí),不需要具有專門的IC(集成電路)深層次的知識(shí),F(xiàn)PGA/CPLD軟件易學(xué)易用,能使設(shè)計(jì)人員更能集中精力進(jìn)行電路設(shè)計(jì),快速將產(chǎn)品推向市場(chǎng)。</p><p>  (4) 在線可編程技術(shù)(ISP)

30、使得使用FPGA/CPLD的產(chǎn)品可以做到遠(yuǎn)程升級(jí)。</p><p><b>  硬件描述語(yǔ)言介紹</b></p><p>  常用的硬件描述語(yǔ)言有VHDL、Verilog、ABEL。</p><p>  VHDL:作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語(yǔ)言。</p><p>  V

31、erilog:支持的EDA工具較多,適用于RTL級(jí)和門電路級(jí)的描述,其綜合過(guò)程較VHDL稍簡(jiǎn)單,但其在高級(jí)描述方面不如VHDL。</p><p>  ABEL:一種支持各種不同輸入方式的HDL,被廣泛用于各種可編程邏輯器件的邏輯功能設(shè)計(jì),由于其語(yǔ)言描述的獨(dú)立性,因而適用于各種不同規(guī)模的可編程器件的設(shè)計(jì)。</p><p>  有專家認(rèn)為,在新世紀(jì)中,VHDL與Verilog語(yǔ)言將承擔(dān)幾乎全部

32、的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。</p><p>  選擇VHDL硬件描述語(yǔ)言設(shè)計(jì)的優(yōu)勢(shì)</p><p>  首先,簡(jiǎn)單地介紹一下什么是VHDL硬件描述語(yǔ)言。VHDL的英文全稱是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language。是EDA設(shè)計(jì)中使用最多的語(yǔ)言之一,它具有很強(qiáng)的電路描述和建模能力,能從多個(gè)層次對(duì)數(shù)字

33、系統(tǒng)進(jìn)行建模和描述,從而大大地簡(jiǎn)化了硬件設(shè)計(jì)任務(wù),提高了設(shè)計(jì)效率和可靠性。</p><p>  其次,這次設(shè)計(jì)選用VHDL硬件描述語(yǔ)言的優(yōu)勢(shì)就在于傳統(tǒng)的用原理圖設(shè)計(jì)電路的方法具有直觀形象的優(yōu)點(diǎn),但如果所設(shè)計(jì)系統(tǒng)的規(guī)模比較大,或者設(shè)計(jì)軟件不能提供設(shè)計(jì)者所需的庫(kù)單元時(shí),這種方法就顯得很受限制了。而且用原理圖表示的設(shè)計(jì),通用性、可移植性也比較弱,所以在現(xiàn)代的設(shè)計(jì)中,越來(lái)越多地采用了基于硬件描述語(yǔ)言的設(shè)計(jì)方式。利用硬件描

34、述語(yǔ)言來(lái)設(shè)計(jì)電路,使探測(cè)各種設(shè)計(jì)方案變成一件很容易的事,因?yàn)橹恍枰獙?duì)描述語(yǔ)言進(jìn)行修改,這比更改電路原理圖要容易實(shí)現(xiàn)得多。</p><p>  軟件開(kāi)發(fā)工具Quartus II 簡(jiǎn)介</p><p>  Altera的Quartus II 設(shè)計(jì)軟件提供了完整的多平臺(tái)設(shè)計(jì)環(huán)境,它可以輕易滿足各種特定設(shè)計(jì)的需要,也是單芯片可編程系統(tǒng) (SOPC) 設(shè)計(jì)的綜合性環(huán)境和SOPC開(kāi)發(fā)的基本設(shè)計(jì)工具,并

35、為Altera DSP開(kāi)發(fā)包進(jìn)行系統(tǒng)模型設(shè)計(jì)提供了集成綜合環(huán)境。Quartus II設(shè)計(jì)工具完全支持VHDL、Verilog的設(shè)計(jì)流程,其內(nèi)部嵌有VHDL、Verilog邏輯綜合器。</p><p>  Quartus II 包括模塊化的編譯器。編譯器包括的功能模塊有分析/綜合器(Analysis&Synthesis)、適配器(Fitter)、裝配器(Assembler)、時(shí)序分析器(Timing Analyze

36、r)、設(shè)計(jì)輔助模塊(Design Assistant)等??梢酝ㄟ^(guò)選擇 Start Compilation (Processing 菜單)來(lái)運(yùn)行所有的編譯器模塊。 若要單獨(dú)運(yùn)行各個(gè)模塊,可以通過(guò)選擇 Start(Processing 菜單),然后從 Start 子菜單中為模塊選擇相應(yīng)的指令。此外,還可以通過(guò)選擇 Compiler Tool (Tools 菜單)并在 Compiler Tool窗口中運(yùn)行該模塊來(lái)啟動(dòng)編譯器模塊。 在 Com

37、piler Tool 窗口中,可以打開(kāi)該模塊的設(shè)置文件或報(bào)告文件,還可以打開(kāi)其它相關(guān)窗口。</p><p>  Quartus II支持層次化的設(shè)計(jì),可以在一個(gè)新的編輯輸入環(huán)境中對(duì)使用不同輸入設(shè)計(jì)方式完成的模塊進(jìn)行調(diào)試,從而解決原理圖與HDL混合輸入設(shè)計(jì)的問(wèn)題。在設(shè)計(jì)輸入之后,Quartus II的編譯器將給出設(shè)計(jì)輸入的錯(cuò)誤報(bào)告??梢允褂肣uartus II帶有的RTL Viewer觀察綜合后的RTL圖。<

38、/p><p>  Quartus II設(shè)計(jì)流程</p><p>  上圖顯示的是Quartus II編譯設(shè)計(jì)主控界面,顯示了Quartus II自動(dòng)設(shè)計(jì)的各主要處理環(huán)節(jié)和設(shè)計(jì)流程,包括設(shè)計(jì)輸入編輯、設(shè)計(jì)分析與綜合、適配、編譯文件匯編(裝配)、時(shí)序參數(shù)提取以及編程下載幾個(gè)步驟。</p><p>  智能交通控制系統(tǒng)的設(shè)計(jì)</p><p><b

39、>  系統(tǒng)功能分析</b></p><p>  在交通信號(hào)燈的設(shè)計(jì)中,外部硬件電路方面主要包括:兩組紅綠燈、兩組LED顯示器(見(jiàn)圖1,說(shuō)明:圖1中只畫出了東西、南北方向的紅綠燈及南北方向的LED顯示器,東西方向的LED顯示器與南北方向的相同)。軟件方面包括:(1)電路合成模塊的概念:將交通燈信號(hào)系統(tǒng)劃分成若干個(gè)小電路,編寫每一個(gè)模塊的VHDL程序代碼,并將各個(gè)小電路相連接。這樣可以增加程序的調(diào)試

40、速度,同時(shí)也能夠?qū)⒐ぷ骷?xì)分,以提高編程速度(見(jiàn)圖2)</p><p><b>  十字路口示意圖</b></p><p><b>  1kHZ</b></p><p><b>  1HZ</b></p><p><b>  支干道車輛檢測(cè)</b></

41、p><p><b>  1kHZ</b></p><p>  交通信號(hào)燈系統(tǒng)結(jié)構(gòu)圖</p><p><b>  系統(tǒng)結(jié)構(gòu)設(shè)計(jì)</b></p><p>  由交通信號(hào)燈控制系統(tǒng)的功能可知,該系統(tǒng)由3個(gè)子電路組成,如圖2所示,其中包括:</p><p><b>  分頻計(jì)數(shù)

42、器電路;</b></p><p>  交通信號(hào)控制器電路;</p><p>  動(dòng)態(tài)數(shù)碼管掃描電路。</p><p>  由圖2可以看出系統(tǒng)大體的工作程序是:首先由時(shí)鐘發(fā)生電路產(chǎn)生穩(wěn)定的時(shí)鐘信號(hào),為下面三個(gè)子電路提供同步工作信號(hào)。接收到時(shí)鐘信號(hào)的紅綠燈信號(hào)控制電路開(kāi)始工作,并將產(chǎn)生的重新計(jì)數(shù)的輸出使能控制信號(hào)發(fā)送給計(jì)數(shù)秒數(shù)選擇電路和倒計(jì)時(shí)控制電路,同時(shí)還

43、會(huì)將目前電路產(chǎn)生的狀態(tài)信號(hào)發(fā)送給前者。接收到重新計(jì)數(shù)的信號(hào)后計(jì)數(shù)秒數(shù)選擇電路就會(huì)負(fù)責(zé)產(chǎn)生計(jì)數(shù)器所需要的計(jì)數(shù)值,并將這一數(shù)值發(fā)送給倒計(jì)時(shí)控制電路,由它利用發(fā)光二極管顯示倒計(jì)時(shí)的狀態(tài)。當(dāng)計(jì)數(shù)器計(jì)時(shí)完畢,倒計(jì)時(shí)控制器就會(huì)負(fù)責(zé)產(chǎn)生一個(gè)脈沖信號(hào)發(fā)送給紅綠燈信號(hào)控制電路進(jìn)入下一個(gè)狀態(tài),之后循環(huán)這一過(guò)程。</p><p><b>  系統(tǒng)程序?qū)崿F(xiàn)</b></p><p><b

44、>  分頻計(jì)數(shù)電路</b></p><p>  在紅綠燈交通信號(hào)系統(tǒng)中,大多數(shù)的情況是通過(guò)自動(dòng)控制的方式指揮交通的。因此,為了避免意外事件的發(fā)生,電路必須給出一個(gè)穩(wěn)定的時(shí)鐘(clock)才能讓系統(tǒng)正常的工作。分頻器實(shí)現(xiàn)的是將高頻時(shí)鐘信號(hào)轉(zhuǎn)換成底頻的時(shí)鐘信號(hào),用于觸發(fā)控制器、計(jì)數(shù)器和掃描顯示電路。該分頻器實(shí)現(xiàn)的是一千分頻,將一千赫茲的時(shí)鐘信號(hào)分頻成一赫茲的時(shí)鐘信號(hào)。因此,clkgen分頻電路(見(jiàn)圖

45、3)最主要的功能就是產(chǎn)生穩(wěn)定的1赫茲輸出信號(hào),用做下一級(jí)電路的同步信號(hào)。</p><p><b>  時(shí)鐘發(fā)生電路模塊圖</b></p><p><b>  系統(tǒng)輸入信號(hào):</b></p><p>  clk:由外部信號(hào)發(fā)生器提供1kHZ的時(shí)鐘信號(hào);</p><p><b>  系統(tǒng)輸出信

46、號(hào):</b></p><p>  newclk1:產(chǎn)生每秒一個(gè)脈沖的時(shí)鐘信號(hào)。</p><p>  經(jīng)仿真后得到的時(shí)序圖(見(jiàn)圖4、圖5)</p><p>  將clk經(jīng)分頻處理后得到的ena_scan信號(hào)</p><p><b>  時(shí)鐘發(fā)生電路時(shí)序圖</b></p><p><

47、b>  交通信號(hào)控制器</b></p><p>  交通控制器的狀態(tài)轉(zhuǎn)換圖</p><p>  上圖為交通控制器的狀態(tài)轉(zhuǎn)換圖,平時(shí)系統(tǒng)停留在MGCR(主干道通行)狀態(tài),一旦S信號(hào)有效,經(jīng)MYCR(黃燈狀態(tài))轉(zhuǎn)入MRCG(鄉(xiāng)間公路通行)狀態(tài)??刂破鞯淖饔檬歉鶕?jù)計(jì)數(shù)器的計(jì)數(shù)值控制發(fā)光二極管的亮、滅,以及輸出倒計(jì)時(shí)數(shù)值給動(dòng)態(tài)數(shù)碼管電路。</p><p>

48、  圖4-7 交通信號(hào)控制器模塊圖</p><p><b>  系統(tǒng)輸入信號(hào):</b></p><p>  clk:由外部信號(hào)發(fā)生器提供1HZ的時(shí)鐘信號(hào);</p><p><b>  ena:使能信號(hào);</b></p><p>  s: 支路請(qǐng)求信號(hào);</p><p>&l

49、t;b>  系統(tǒng)輸出信號(hào):</b></p><p>  mql、mqh、cql、cqh:計(jì)數(shù)顯示信號(hào);</p><p>  mr:主干道紅燈輸出信號(hào);</p><p>  my:主干道黃燈輸出信號(hào);</p><p>  mg:主干道綠燈輸出信號(hào);</p><p>  cr:支路紅燈輸出信號(hào);</

50、p><p>  cy:支路黃燈輸出信號(hào);</p><p>  cg:支路綠燈輸出信號(hào)。</p><p>  經(jīng)仿真后得到的時(shí)序圖(見(jiàn)圖7):</p><p>  計(jì)數(shù)秒數(shù)選擇電路時(shí)序圖</p><p>  由計(jì)數(shù)描述選擇電路的時(shí)序圖(見(jiàn)圖7)可以看出這段程序中定義了在正常車流量情況下,東西及南北方向紅燈、黃燈和綠燈需要維持

51、的秒數(shù)分別是15s、5s和25s</p><p><b>  動(dòng)態(tài)數(shù)碼管掃描電路</b></p><p>  通過(guò)日常生活中的觀察,我發(fā)現(xiàn)在一些交通路口已經(jīng)開(kāi)始使用倒計(jì)時(shí)顯示器,它們的作用就是用來(lái)提示車輛行人目前還有多長(zhǎng)時(shí)間信號(hào)燈會(huì)發(fā)生變化,這樣車輛行人就可以提前判斷是否有足夠的時(shí)間通過(guò)路口,進(jìn)而就可以避免很多意外事故的發(fā)生。例如:南北方向綠燈,車輛處于正常行駛中,東

52、西方向紅燈,車輛處于等待中,若南北方向行駛的車輛看到倒計(jì)時(shí)顯示器上可以通行的時(shí)間很短,可能就會(huì)放慢速度等待下一次通行,這樣在東西方向綠燈時(shí),車輛就能夠正常行駛,不會(huì)為等待南北方向強(qiáng)行的車輛而耽誤更多的時(shí)間。如此循環(huán)下去,道路就會(huì)暢通無(wú)阻了??紤]到有些路口的交通擁堵現(xiàn)象較為嚴(yán)重,車輛會(huì)在道路上排成很長(zhǎng)的一隊(duì),這樣排在較遠(yuǎn)距離的司機(jī)就很難看清楚倒計(jì)時(shí)顯示器上變化的數(shù)字,有可能會(huì)影響到車輛之間的正常行駛。因此,如果采用發(fā)光二極管作為倒計(jì)時(shí)的顯

53、示裝置就會(huì)使司機(jī)和行人一目了然,同樣也能夠起到很好的提示作用。動(dòng)態(tài)數(shù)碼管掃描電路是為了讓數(shù)碼管顯示倒數(shù)計(jì)時(shí)計(jì)數(shù),所以,scan動(dòng)態(tài)數(shù)碼管掃描電路(見(jiàn)圖8)最主要的功能就是負(fù)責(zé)接收hld2電路輸出的值,然后將其轉(zhuǎn)換成BCD碼,并利用發(fā)光二極管顯示出來(lái),讓車輛行人能夠清楚地知道再過(guò)多久信號(hào)燈就會(huì)發(fā)生變化</p><p><b>  倒計(jì)時(shí)控制電路</b></p><p>

54、<b>  系統(tǒng)輸入信號(hào):</b></p><p>  clk:由外部信號(hào)發(fā)生器提供1kHz的時(shí)鐘信號(hào);</p><p>  num1:接收系統(tǒng)主干道低電平信號(hào);</p><p>  num2:接收系統(tǒng)主干道高電平信號(hào);</p><p>  num7:接收系統(tǒng)支路低電平信號(hào);</p><p>  

55、num8:接收系統(tǒng)支路高電平信號(hào)。</p><p><b>  系統(tǒng)輸出信號(hào):</b></p><p>  sel:負(fù)責(zé)將計(jì)數(shù)數(shù)值轉(zhuǎn)換成BCD碼,并利用發(fā)光二極管顯示倒計(jì)時(shí)狀態(tài);</p><p>  next_state:當(dāng)計(jì)數(shù)器計(jì)時(shí)完畢后,負(fù)責(zé)產(chǎn)生一個(gè)脈沖信號(hào),作為下一個(gè)狀態(tài)的觸發(fā)信號(hào)。</p><p>  經(jīng)仿真后得

56、到的時(shí)序圖(見(jiàn)圖9):</p><p>  倒計(jì)時(shí)控制電路時(shí)序圖</p><p>  由倒計(jì)時(shí)控制電路的時(shí)序圖(見(jiàn)圖9)可以看出,當(dāng)clk時(shí)鐘信號(hào)來(lái)臨后,在ena_1hz脈沖信號(hào)的同時(shí)激勵(lì)下,led會(huì)按照預(yù)先設(shè)置好的時(shí)間開(kāi)始逐1遞減,進(jìn)行倒計(jì)時(shí)顯示。</p><p>  這段程序是采用的就是查表的方法并且利用發(fā)光二極管進(jìn)行倒計(jì)時(shí)顯示,如圖9所示:當(dāng)綠燈點(diǎn)亮開(kāi)始計(jì)數(shù)后

57、,load就會(huì)將減1后的值賦給cnt_ff,之后cnt_ff又會(huì)從case語(yǔ)句中查找到相對(duì)應(yīng)的值再賦給led顯示所剩余的時(shí)間。在程序編寫過(guò)程中運(yùn)用到了conv_integer()語(yǔ)句,它可以將cnt_ff所賦的值轉(zhuǎn)換成整數(shù)。由圖可知led是25位的系統(tǒng)輸出信號(hào),負(fù)責(zé)控制發(fā)光二極管的輸出,所以25位的輸出信號(hào)可以分成七組控制發(fā)光二極管的顯示,其中“1”為點(diǎn)亮,“0”為熄滅。程序代碼見(jiàn)附錄3倒計(jì)時(shí)控制電路。</p><p

58、><b>  建立程序包</b></p><p>  在程序設(shè)計(jì)語(yǔ)言中,程序的開(kāi)始總會(huì)調(diào)用庫(kù)(library)來(lái)提供設(shè)計(jì)程序時(shí)所需要的基本命令。但是,如果要進(jìn)一步設(shè)計(jì)較為復(fù)雜的程序時(shí),庫(kù)中的命令可能就無(wú)法支持了。因此,可以設(shè)計(jì)一個(gè)子程序來(lái)滿足程序設(shè)計(jì)的需求。</p><p>  上述問(wèn)題在硬件描述語(yǔ)言的設(shè)計(jì)中也存在,在VHDL程序中的第一行(library ie

59、ee;)就是要使用IEEE設(shè)計(jì)好的庫(kù)文件,但如果需要使用的元器件并不在庫(kù)中時(shí),就只能自己定義了。</p><p>  一個(gè)程序包中至少應(yīng)該包含以下結(jié)構(gòu)中的一種:</p><p>  常數(shù)說(shuō)明:如定義系統(tǒng)數(shù)據(jù)總線通道的寬度。</p><p>  VHDL數(shù)據(jù)類型說(shuō)明:主要用于在整個(gè)設(shè)計(jì)中通用的數(shù)據(jù)類型。</p><p>  元件定義:元件定義主

60、要規(guī)定在VHDL設(shè)計(jì)中參與文件例化的文件接 口界面。</p><p>  子程序:并入程序包的子程序有利于在設(shè)計(jì)中任一處進(jìn)行方便地調(diào) 用。</p><p>  例如,時(shí)鐘發(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>  連接各個(gè)模塊</b></p><p>  light電路的工作就是將所有的子電路全部連接起來(lái),進(jìn)行時(shí)序分析,當(dāng)程序完成后,再下載到FPGA,以便硬件電路的驗(yàn)證工作。</p><p>  經(jīng)仿真后得到的時(shí)序圖(見(jiàn)圖12):</p><p>  連接各個(gè)模塊后的時(shí)序圖</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)機(jī)的優(yōu)勢(shì)</b></p><p>  通過(guò)上面圖形的展示,狀態(tài)機(jī)有著難以超越的優(yōu)越性,主要表現(xiàn)在一下幾方面:</p><p>  狀態(tài)機(jī)克服了純硬件

65、數(shù)字系統(tǒng)順序方式控制不靈活的缺點(diǎn)。</p><p>  由于狀態(tài)機(jī)的結(jié)構(gòu)相對(duì)簡(jiǎn)單,設(shè)計(jì)方案相對(duì)固定,特別是可以定義符號(hào)化枚舉類型的狀態(tài),這一切都為VHDL綜合器盡可能發(fā)揮其騏達(dá)的優(yōu)化功能提供了有利條件。而且,性能良好的綜合器都具有許多可控或自動(dòng)的優(yōu)化狀態(tài)機(jī)的功能。</p><p>  狀態(tài)機(jī)容易構(gòu)成性能良好的同步時(shí)序邏輯模塊,這對(duì)于大規(guī)模邏輯電路設(shè)計(jì)中令人深感棘手的競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象無(wú)疑是一個(gè)上

66、佳的選擇。</p><p>  與VHDL的其他描述方式相比,狀態(tài)機(jī)的VHDL描述豐富多樣、程序?qū)哟畏置鳎Y(jié)構(gòu)清晰,易讀易懂;在排錯(cuò)、修改和模塊移植方面也有獨(dú)到的好處。</p><p>  在高速運(yùn)算和控制方面,狀態(tài)機(jī)更有其巨大的優(yōu)勢(shì)。在VHDL中,一個(gè)狀態(tài)機(jī)可以由多個(gè)進(jìn)程構(gòu)成,一個(gè)結(jié)構(gòu)體中可以包含多個(gè)狀態(tài)機(jī),而一個(gè)單獨(dú)的狀態(tài)機(jī)以順序方式所能完成的運(yùn)算和控制方面的工作與一個(gè)CPU的功能類似

67、。</p><p><b>  高可靠性。</b></p><p><b>  結(jié)束語(yǔ)</b></p><p>  本設(shè)計(jì)采用了VHDL硬件描述語(yǔ)言文本輸入方式,在確立總體預(yù)期實(shí)現(xiàn)功能的前提下,分層次進(jìn)行設(shè)計(jì)。實(shí)現(xiàn)了三種顏色交通信號(hào)燈的交替點(diǎn)亮,以及時(shí)間的倒計(jì)時(shí)顯示,指揮行人和車輛安全通行。程序中所用到的數(shù)據(jù)均可以根據(jù)實(shí)際

68、情況進(jìn)行設(shè)置,修改靈活方便。通過(guò)此次設(shè)計(jì),我對(duì)于VHDL硬件描述語(yǔ)言有了更深入地了解,也在原來(lái)所學(xué)的理論基礎(chǔ)上得到了進(jìn)一步地應(yīng)用。但由于經(jīng)驗(yàn)上的不足,有些地方還需要做進(jìn)一步地改善,如可通過(guò)FPGA/CPLD開(kāi)發(fā)套件驗(yàn)證。</p><p>  數(shù)字化時(shí)代的到來(lái)給人們的生活水平帶來(lái)了極大的改變,我們有理由相信,隨著數(shù)字化的深入,交通燈控制器的功能將日趨完善。而且,VHDL語(yǔ)言對(duì)EDA技術(shù)產(chǎn)生的影響也是深遠(yuǎn)的,它縮短了

69、電子產(chǎn)品的設(shè)計(jì)周期,為設(shè)計(jì)者提供了方便。在今后的電子產(chǎn)品研究開(kāi)發(fā)過(guò)程中,EDA技術(shù)將會(huì)具有更好的開(kāi)發(fā)手段和更高的性價(jià)比,并且將擁有更為廣闊的市場(chǎng)應(yīng)用前景。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 元紅妍、張?chǎng)沃骶帲骸峨娮泳C合設(shè)計(jì)實(shí)驗(yàn)教程》,第一版,山東:山東大學(xué)出版社,2005年,第111-113頁(yè)。</p><

70、p>  [2] 楊曉慧、許紅梅、楊會(huì)玲編著:《電子技術(shù)EDA實(shí)踐教程》,第一版,北京:國(guó)防工業(yè)出版社,2005年,第235-240頁(yè)。</p><p>  [3] 楊恒、李愛(ài)國(guó)、王輝、王新安編著:《FPGA/CPLD最新實(shí)用技術(shù)指南》,第一版,北京:清華大學(xué)出版社,2005年,第242-244頁(yè)。</p><p>  [4] 孫芹芝、張瑾、蘇曉鷺:《基于EDA的交通燈控制系統(tǒng)》,

71、《應(yīng)用天地》,2005年第五期,第66-68頁(yè)。</p><p>  [5] 林明權(quán)等編著:《VHDL數(shù)字控制系統(tǒng)設(shè)計(jì)范例》,第一版,北京:電子工業(yè)出版社,2003年,第115-126頁(yè)。</p><p>  [6] 潘松、黃繼業(yè)編著:《EDA技術(shù)實(shí)用教程》,第二版,北京:科學(xué)出版社,2005年,第1-3頁(yè)。</p><p>  [7] 楊恒新:《自頂向下法設(shè)

72、計(jì)交通燈控制系統(tǒng)》,《電氣電子教學(xué)學(xué)報(bào)》,2006年第四期,第40-41頁(yè)。</p><p>  [8] 曾素瓊:《EDA技術(shù)在數(shù)字電路中的探討》,《實(shí)驗(yàn)科學(xué)與技術(shù)》,2005年第一期,第22-25頁(yè)。</p><p>  [9] 徐志軍、徐光輝編著:《CPLD/FPGA的開(kāi)發(fā)與應(yīng)用》,第一版,北京:電子工業(yè)出版社,2002年,第176-185頁(yè)。</p><p>

73、;<b>  致謝</b></p><p><b>  附錄</b></p><p>  紅綠燈交通信號(hào)系統(tǒng)的VHDL程序代碼:</p><p>  1.時(shí)鐘發(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.計(jì)數(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.倒計(jì)時(shí)控制電路程序代碼</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.紅綠燈信號(hào)控制電路程序代碼</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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論