版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要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è)模塊的VHDL程序,并且利用QuartusⅡ?qū)?yīng)用程序進(jìn)行了仿真,并給出了相應(yīng)的仿真結(jié)果。通過(guò)電路優(yōu)化設(shè)計(jì),可以使用規(guī)模更小的可編程邏輯芯片,從而降低系統(tǒng)本錢。關(guān)鍵詞:交通信號(hào)燈;VHDL;仿真ABSTRACTOneimportantcharacteristicoftheEDAisthatthedesigndocumentsshouldbecompletedbytheHDL,thedigitalcircuitexperimentutilizedvery-high-speedintegratedcircuithardwaredescriptionlanguage(VHDL)mayreducethedifficultiesofdigitalsystemdesigning,anditiswidelyusedbyelectronicdesignernow.Aimingatthedesignproblemoftrafficlightcontroller,thispaperputsforwardahardwarerealizationmethodoftrafficlightsystemwithVHDL.Byanalyzingthearchitectureofsystem,itgivestheprogramofeachmodulewithVHDLusinghierarchicaldesignmeans.ItalsogivesthesimulationresultsbyQuartusⅡ.Optimizesthedesignthroughtheelectriccircuit,mayusethescalesmallerprogrammablelogicchip,thusreducesthesystemcost.Keyword:Street-trafficcontrollights;VHDL;Simulation目錄第1章引言1第2章EDA技術(shù)概述22.1EDA技術(shù)及其開展22.2EDA與傳統(tǒng)電子設(shè)計(jì)方法的比擬22.3EDA的工程設(shè)計(jì)流程2第3章可編程技術(shù)簡(jiǎn)介43.1可編程邏輯器件概述43.2FPGA/CPLD概述43.3硬件描述語(yǔ)言介紹53.4選擇VHDL硬件描述語(yǔ)言設(shè)計(jì)的優(yōu)勢(shì)63.5軟件開發(fā)工具QuartusII簡(jiǎn)介6第4章交通燈控制系統(tǒng)的設(shè)計(jì)84.1系統(tǒng)功能分析84.2系統(tǒng)結(jié)構(gòu)設(shè)計(jì)94.3系統(tǒng)程序?qū)崿F(xiàn)與仿真分析10時(shí)鐘脈沖發(fā)生電路10計(jì)數(shù)秒數(shù)選擇電路12倒計(jì)時(shí)控制電路15紅綠燈信號(hào)控制電路19建立程序包22連接各個(gè)模塊23狀態(tài)機(jī)的優(yōu)勢(shì)24結(jié)束語(yǔ)26參考文獻(xiàn)27致謝28附錄291.時(shí)鐘發(fā)生電路程序代碼292.計(jì)數(shù)秒數(shù)選擇電路程序代碼313.倒計(jì)時(shí)控制電路程序代碼324.紅綠燈信號(hào)控制電路程序代碼345.連接各個(gè)模塊的程序代碼38外文資料原文41翻譯文稿55引言不同的城市存在著不同的城市問(wèn)題,但其中有一個(gè)共同的問(wèn)題就是城市交通。在交叉路口如何解決混合交通流中的相互影響,就是解決問(wèn)題的關(guān)鍵所在!隨著我國(guó)經(jīng)濟(jì)的穩(wěn)步開展,人民生活水平的日漸提高,越來(lái)越多的汽車進(jìn)入尋常百姓的家庭,再加上政府大力地開展公交、出租車行業(yè),道路上的車輛越來(lái)越多,使得城市的交通成為了一個(gè)主要的問(wèn)題。嚴(yán)重的擁堵現(xiàn)象,逐漸惡化的城市環(huán)境,都給廣闊市民帶來(lái)了許多困擾。要解決這些問(wèn)題不僅要求道路越來(lái)越寬闊,而且更需要有新的交通管理模式出臺(tái)。實(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)的開展趨勢(shì)就是要提高通行能力,加強(qiáng)環(huán)境保護(hù),開展智能化運(yùn)輸和環(huán)保專項(xiàng)技術(shù)的研究,并且要做到以人為本,重點(diǎn)開展交通平安技術(shù)的研究,在這個(gè)過(guò)程中要確定經(jīng)濟(jì)合理的目標(biāo),促進(jìn)新材料的廣泛應(yīng)用和開發(fā)。EDA技術(shù)是用于電子產(chǎn)品設(shè)計(jì)中比擬先進(jìn)的技術(shù),可以代替設(shè)計(jì)者完成電子系統(tǒng)設(shè)計(jì)中的大局部工作,而且可以直接從程序中修改錯(cuò)誤及系統(tǒng)功能而不需要硬件電路的支持,既縮短了研發(fā)周期,又大大節(jié)約了本錢,受到了電子工程師的青睞。因此,本設(shè)計(jì)中采用EDA技術(shù),應(yīng)用目前廣泛應(yīng)用的VHDL硬件電路描述語(yǔ)言,實(shí)現(xiàn)交通燈系統(tǒng)控制器的設(shè)計(jì),利用QuartusⅡ集成開發(fā)環(huán)境進(jìn)行綜合、仿真,完成系統(tǒng)的控制作用。EDA技術(shù)概述EDA技術(shù)及其開展現(xiàn)代電子設(shè)計(jì)技術(shù)的核心是EDA〔ElectronicDesignAutomation〕技術(shù)。EDA技術(shù)就是依賴功能強(qiáng)大的計(jì)算機(jī),在EDA工具軟件平臺(tái)上,對(duì)以硬件描述語(yǔ)言HDL〔HardwareDescriptionLanguage〕為系統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件,它能自動(dòng)地完成邏輯編譯、邏輯化簡(jiǎn)、邏輯分割、邏輯綜合、結(jié)構(gòu)綜合〔布局布線〕,以及邏輯優(yōu)化和仿真測(cè)試,直至實(shí)現(xiàn)既定的電子線路系統(tǒng)功能。EDA技術(shù)使得設(shè)計(jì)者的工作僅限于利用軟件的方式,即利用硬件描述語(yǔ)言和EDA軟件來(lái)完成對(duì)系統(tǒng)硬件功能的實(shí)現(xiàn)。利用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)的開發(fā)軟件自動(dòng)完成的;③設(shè)計(jì)過(guò)程中可用有關(guān)軟件進(jìn)行各種仿真;④系統(tǒng)可現(xiàn)場(chǎng)編程,在線升級(jí);⑤整個(gè)系統(tǒng)可集成在一個(gè)芯片上,體積小、功耗低、可靠性高。因此,EDA技術(shù)是現(xiàn)代電子設(shè)計(jì)的開展趨勢(shì)。EDA技術(shù)在進(jìn)入21世紀(jì)后,得到了更大的開展。在仿真和設(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)單化。EDA與傳統(tǒng)電子設(shè)計(jì)方法的比擬與傳統(tǒng)的電子設(shè)計(jì)方法相比,EDA技術(shù)對(duì)于復(fù)雜電路的設(shè)計(jì)和調(diào)試都比擬簡(jiǎn)單,如果某一過(guò)程存在錯(cuò)誤,查找和修改起來(lái)比擬方便,而且EDA技術(shù)的可移植性很強(qiáng)。EDA的工程設(shè)計(jì)流程假設(shè)我們需要建造一棟樓房,第一,我們需要進(jìn)行“建筑設(shè)計(jì)〞——用各種設(shè)計(jì)圖紙把我們的建筑設(shè)想表示出來(lái);第二,我們要進(jìn)行“建筑預(yù)算〞——根據(jù)投資規(guī)模、擬建樓房的結(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ò)程中,我們可能需要做出某些“建筑模型〞或進(jìn)行某些“建筑實(shí)驗(yàn)〞。那么,對(duì)于目標(biāo)器件為FPGA和CPLD的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)器件的布線/適配〞——在選定的目標(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ì)設(shè)想是否相符。綜上所述,EDA的工程設(shè)計(jì)的根本流程如圖2.1所示EDA工程設(shè)計(jì)可編程技術(shù)簡(jiǎn)介可編程邏輯器件概述可編程邏輯器件(簡(jiǎn)稱PLD)是允許用戶編程〔配置〕實(shí)現(xiàn)所需邏輯功能的電路,一般可利用計(jì)算機(jī)輔助設(shè)計(jì),即用原理圖、狀態(tài)機(jī)、硬件描述語(yǔ)言〔VHDL〕等方法來(lái)表示設(shè)計(jì)思想,經(jīng)過(guò)一系列編譯或裝換程序,生成相應(yīng)的目標(biāo)文件,再由編程器或下載電纜將設(shè)計(jì)文件配置到目標(biāo)器件中,這時(shí)的可編程邏輯器件就可作為滿足用戶需求的專用集成電路使用了??删幊踢壿嬈骷?,不僅速度快、集成度高,并且能隨心所欲地完成用戶定義的邏輯功能,還可以加密和重新編程,其編程次數(shù)最大可達(dá)1萬(wàn)次以上。使用可編程邏輯器件可以大大簡(jiǎn)化硬件系統(tǒng)、降低本錢、提高系統(tǒng)的可靠性、靈活性和保密性。PLD的出現(xiàn),打破了由中小規(guī)模通用型集成電路和大規(guī)模專用集成電路壟斷的局面,在通信、數(shù)據(jù)處理、網(wǎng)絡(luò)、儀器、工業(yè)控制、軍事和航空航天等眾多領(lǐng)域得到廣泛應(yīng)用,可以預(yù)見,不久的將來(lái),PLD將在集成電路市場(chǎng)占統(tǒng)治地位。FPGA/CPLD概述FPGA〔現(xiàn)場(chǎng)可編程門陣列〕和CPLD〔復(fù)雜可編程邏輯器件〕都是可編程邏輯器件,他們是在PAL,GAL等邏輯器件的根底上開展起來(lái)的。同以往的PAL,GAL相比擬,F(xiàn)PGA/CPLD的規(guī)模比擬大,它可以替代幾十甚至幾千塊通用IC芯片。這樣的FPGA/CPLD實(shí)際上就是一個(gè)子系統(tǒng)部件。這種芯片受到世界范圍內(nèi)電子工程設(shè)計(jì)人員的廣泛關(guān)注和普遍歡送。比擬典型的就是Altera公司和Xilinx公司的CPLD器件系列和FPGA器件系列,他們開發(fā)較早,占用了較大的PLD市場(chǎng)。對(duì)用戶而言,雖然FPGA/CPLD的內(nèi)部結(jié)構(gòu)稍有不同,但其用法都一樣,所以大多數(shù)情況下,不加以區(qū)分。FPGA/CPLD芯片都是特殊的ASIC芯片,除了具有ASIC的特點(diǎn)外,還具有以下幾個(gè)優(yōu)點(diǎn):(1)隨著VLSI〔VeryLargeScaleIC,超大集成電路〕工藝的不斷提高單一芯片內(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.(2)FPGA/CPLD芯片在出廠之前都做過(guò)百分之百的測(cè)試,不需要設(shè)計(jì)人員承當(dāng)芯片風(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)。(3)用戶可以反復(fù)地編程、擦除、使用或者在外圍電路不動(dòng)的情況下用不同軟件就可實(shí)現(xiàn)不同的功能。FPGA/CPLD軟件包中有各種輸入工具和仿真工具,及幅員設(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)。(4)在線可編程技術(shù)〔ISP〕使得使用FPGA/CPLD的產(chǎn)品可以做到遠(yuǎn)程升級(jí)。硬件描述語(yǔ)言介紹常用的硬件描述語(yǔ)言有VHDL、Verilog、ABEL。VHDL:作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語(yǔ)言。Verilog:支持的EDA工具較多,適用于RTL級(jí)和門電路級(jí)的描述,其綜合過(guò)程較VHDL稍簡(jiǎn)單,但其在高級(jí)描述方面不如VHDL。ABEL:一種支持各種不同輸入方式的HDL,被廣泛用于各種可編程邏輯器件的邏輯功能設(shè)計(jì),由于其語(yǔ)言描述的獨(dú)立性,因而適用于各種不同規(guī)模的可編程器件的設(shè)計(jì)。有專家認(rèn)為,在新世紀(jì)中,VHDL與Verilog語(yǔ)言將承當(dāng)幾乎全部的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)。選擇VHDL硬件描述語(yǔ)言設(shè)計(jì)的優(yōu)勢(shì)首先,簡(jiǎn)單地介紹一下什么是VHDL硬件描述語(yǔ)言。VHDL的英文全稱是VHSIC〔VeryHighSpeedIntegratedCircuit〕HardwareDescriptionLanguage。是EDA設(shè)計(jì)中使用最多的語(yǔ)言之一,它具有很強(qiáng)的電路描述和建模能力,能從多個(gè)層次對(duì)數(shù)字系統(tǒng)進(jìn)行建模和描述,從而大大地簡(jiǎn)化了硬件設(shè)計(jì)任務(wù),提高了設(shè)計(jì)效率和可靠性。其次,這次設(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ì)方式。利用硬件描述語(yǔ)言來(lái)設(shè)計(jì)電路,使探測(cè)各種設(shè)計(jì)方案變成一件很容易的事,因?yàn)橹恍枰獙?duì)描述語(yǔ)言進(jìn)行修改,這比更改電路原理圖要容易實(shí)現(xiàn)得多。軟件開發(fā)工具QuartusII簡(jiǎn)介Altera的QuartusII設(shè)計(jì)軟件提供了完整的多平臺(tái)設(shè)計(jì)環(huán)境,它可以輕易滿足各種特定設(shè)計(jì)的需要,也是單芯片可編程系統(tǒng)(SOPC)設(shè)計(jì)的綜合性環(huán)境和SOPC開發(fā)的根本設(shè)計(jì)工具,并為AlteraDSP開發(fā)包進(jìn)行系統(tǒng)模型設(shè)計(jì)提供了集成綜合環(huán)境。QuartusII設(shè)計(jì)工具完全支持VHDL、Verilog的設(shè)計(jì)流程,其內(nèi)部嵌有VHDL、Verilog邏輯綜合器。QuartusII包括模塊化的編譯器。編譯器包括的功能模塊有分析/綜合器〔Analysis&Synthesis〕、適配器〔Fitter〕、裝配器(Assembler)、時(shí)序分析器(TimingAnalyzer)、設(shè)計(jì)輔助模塊(DesignAssistant)等??梢酝ㄟ^(guò)選擇StartCompilation〔Processing菜單〕來(lái)運(yùn)行所有的編譯器模塊。假設(shè)要單獨(dú)運(yùn)行各個(gè)模塊,可以通過(guò)選擇Start〔Processing菜單〕,然后從Start子菜單中為模塊選擇相應(yīng)的指令。此外,還可以通過(guò)選擇CompilerTool〔Tools菜單〕并在CompilerTool窗口中運(yùn)行該模塊來(lái)啟動(dòng)編譯器模塊。在CompilerTool窗口中,可以翻開該模塊的設(shè)置文件或報(bào)告文件,還可以翻開其它相關(guān)窗口。QuartusII支持層次化的設(shè)計(jì),可以在一個(gè)新的編輯輸入環(huán)境中對(duì)使用不同輸入設(shè)計(jì)方式完成的模塊進(jìn)行調(diào)試,從而解決原理圖與HDL混合輸入設(shè)計(jì)的問(wèn)題。在設(shè)計(jì)輸入之后,QuartusII的編譯器將給出設(shè)計(jì)輸入的錯(cuò)誤報(bào)告??梢允褂肣uartusII帶有的RTLViewer觀察綜合后的RTL圖。設(shè)計(jì)輸入設(shè)計(jì)輸入綜合或編譯適配器件下載圖形或HDL編譯Analysis&Synthesis〔分析與綜合〕Fitter〔適配器〕Assembler〔編程文件匯編〕編程器TimingAnalyzer〔時(shí)序分析器〕仿真QuartusII設(shè)計(jì)流程上圖顯示的是QuartusII編譯設(shè)計(jì)主控界面,顯示了QuartusII自動(dòng)設(shè)計(jì)的各主要處理環(huán)節(jié)和設(shè)計(jì)流程,包括設(shè)計(jì)輸入編輯、設(shè)計(jì)分析與綜合、適配、編譯文件匯編〔裝配〕、時(shí)序參數(shù)提取以及編程下載幾個(gè)步驟。交通燈控制系統(tǒng)的設(shè)計(jì)系統(tǒng)功能分析在交通信號(hào)燈的設(shè)計(jì)中,外部硬件電路方面主要包括:兩組紅綠燈、兩組LED顯示器〔見圖1,說(shuō)明:圖1中只畫出了東西、南北方向的紅綠燈及南北方向的LED顯示器,東西方向的LED顯示器與南北方向的相同〕。軟件方面包括:〔1〕電路合成模塊的概念:將交通燈信號(hào)系統(tǒng)劃分成假設(shè)干個(gè)小電路,編寫每一個(gè)模塊的VHDL程序代碼,并將各個(gè)小電路相連接。這樣可以增加程序的調(diào)試速度,同時(shí)也能夠?qū)⒐ぷ骷?xì)分,以提高編程速度〔見圖2〕?!?〕參數(shù)化的概念:針對(duì)不同時(shí)段的交通流量,可以調(diào)整紅綠燈電路〔增加或者減少電路的計(jì)數(shù)時(shí)間〕,以增加程序的靈活性。北北西東西東南南LED顯示器LED顯示器紅黃綠信號(hào)燈…紅黃綠信號(hào)燈十字路口示意圖時(shí)鐘時(shí)鐘發(fā)生電路計(jì)數(shù)秒數(shù)選擇電路紅綠燈信號(hào)控制電路倒計(jì)時(shí)控制電路時(shí)鐘輸入時(shí)鐘輸入端東西及南北方向信號(hào)燈東西及南北方向信號(hào)燈系統(tǒng)復(fù)位系統(tǒng)復(fù)位端東西及南北方向倒計(jì)時(shí)東西及南北方向倒計(jì)時(shí)交通信號(hào)燈系統(tǒng)結(jié)構(gòu)圖系統(tǒng)結(jié)構(gòu)設(shè)計(jì)由交通信號(hào)燈控制系統(tǒng)的功能可知,該系統(tǒng)由4個(gè)子電路組成,如圖2所示,其中包括:時(shí)鐘發(fā)生電路;計(jì)數(shù)秒數(shù)選擇電路;倒計(jì)時(shí)控制電路;紅綠燈信號(hào)控制電路。由圖2可以看出系統(tǒng)大體的工作程序是:首先由時(shí)鐘發(fā)生電路產(chǎn)生穩(wěn)定的時(shí)鐘信號(hào),為下面三個(gè)子電路提供同步工作信號(hào)。接收到時(shí)鐘信號(hào)的紅綠燈信號(hào)控制電路開始工作,并將產(chǎn)生的重新計(jì)數(shù)的輸出使能控制信號(hào)發(fā)送給計(jì)數(shù)秒數(shù)選擇電路和倒計(jì)時(shí)控制電路,同時(shí)還會(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ò)程。系統(tǒng)程序?qū)崿F(xiàn)與仿真分析時(shí)鐘脈沖發(fā)生電路在紅綠燈交通信號(hào)系統(tǒng)中,大多數(shù)的情況是通過(guò)自動(dòng)控制的方式指揮交通的。因此,為了防止意外事件的發(fā)生,電路必須給出一個(gè)穩(wěn)定的時(shí)鐘〔clock〕才能讓系統(tǒng)正常的工作。因此,hld1時(shí)鐘發(fā)生電路〔見圖3〕最主要的功能就是產(chǎn)生一些穩(wěn)定的輸出信號(hào),并將其用做后面幾個(gè)電路的使能控制與同步信號(hào)。時(shí)鐘發(fā)生電路模塊圖系統(tǒng)輸入信號(hào):clk:由外部信號(hào)發(fā)生器提供1kHZ的時(shí)鐘信號(hào);reset:系統(tǒng)內(nèi)部自復(fù)位信號(hào)。系統(tǒng)輸出信號(hào):ena_scan:將外部的時(shí)鐘信號(hào)進(jìn)行分頻處理;ena_1hz:產(chǎn)生每秒一個(gè)的脈沖信號(hào);flash_1hz:產(chǎn)生每秒一個(gè)脈沖的時(shí)鐘信號(hào)。經(jīng)仿真后得到的時(shí)序圖(見圖4、圖5)論文資料集中營(yíng)論文資料集中營(yíng)將clk經(jīng)分頻處理后得到的ena_scan信號(hào)論文資料集中營(yíng)論文資料集中營(yíng)時(shí)鐘發(fā)生電路時(shí)序圖從圖4中可以看出,當(dāng)外部信號(hào)發(fā)生器提供了1kHZ的時(shí)鐘信號(hào)后,系統(tǒng)輸出信號(hào)ena_scan就將時(shí)鐘信號(hào)進(jìn)行了4分頻。從圖5又可以看出,當(dāng)參加1kHZ的時(shí)鐘信號(hào)后,ena_1hz產(chǎn)生了周期為一秒的脈沖信號(hào),flash_1hz產(chǎn)生了周期為一秒的脈沖時(shí)鐘信號(hào)。在這段程序的設(shè)計(jì)過(guò)程中最大的特點(diǎn)就是引用了參數(shù)化的概念,即使用了常數(shù)(constant)。常數(shù)的定義和設(shè)置主要是為了使程序更容易閱讀和修改,只要改變了常量的數(shù)值,使用到該常數(shù)的地方都會(huì)隨著更新而使用新的常數(shù)值。這就使設(shè)計(jì)的靈活性增強(qiáng)了。例如程序中用到的:constantscan_bit:positive:=2;signalclk_scan_ff:std_logic_vector(scan_bit-1downto0);第一句就是將scan_bit設(shè)為常數(shù)‘2’計(jì)數(shù)秒數(shù)選擇電路當(dāng)通過(guò)交通路口時(shí),如果能在一個(gè)方向增添一個(gè)倒計(jì)時(shí)顯示器對(duì)車輛、行人加以提示,可能會(huì)有更好的效果。因此,hld2計(jì)數(shù)秒數(shù)選擇電路(見圖6)最主要的功能就是負(fù)責(zé)輸出顯示器需要的數(shù)值〔即倒數(shù)的秒數(shù)值〕,作為倒計(jì)時(shí)顯示器電路的計(jì)數(shù)秒數(shù)。計(jì)數(shù)秒數(shù)選擇電路模塊圖系統(tǒng)輸入信號(hào):clk:由外部信號(hào)發(fā)生器提供1kHZ的時(shí)鐘信號(hào);reset:系統(tǒng)內(nèi)部自復(fù)位信號(hào);ena_scan:接收由時(shí)鐘發(fā)生電路提供的250Hz的時(shí)鐘脈沖信號(hào);recount:接收由交通燈信號(hào)控制電路產(chǎn)生的重新計(jì)數(shù)的使能控制信號(hào);sign_state:接收由交通燈信號(hào)控制電路產(chǎn)生的狀態(tài)信號(hào)。系統(tǒng)輸出信號(hào):load:負(fù)責(zé)產(chǎn)生計(jì)數(shù)器所需要的計(jì)數(shù)數(shù)值。經(jīng)仿真后得到的時(shí)序圖(見圖7):論文資料集中營(yíng)論文資料集中營(yíng)計(jì)數(shù)秒數(shù)選擇電路時(shí)序圖由計(jì)數(shù)描述選擇電路的時(shí)序圖(見圖7)可以看出這段程序中定義了在正常車流量情況下,東西及南北方向紅燈、黃燈和綠燈需要維持的秒數(shù)分別是15s、5s和25s。architecturebhvofhld2isconstantredew_time:integer:=15;東西方向紅燈設(shè)定為15s。constantyellowew_time:integer:=5;--東西方向黃燈設(shè)定為5s。constantgreenew_time:integer:=25;--東西方向綠燈設(shè)定為25s。constantredsn_time:integer:=15;--南北方向紅燈設(shè)定為15s。constantyellowsn_time:integer:=5;--南北方向黃燈設(shè)定為5s。constantgreensn_time:integer:=25;--南北方向綠燈設(shè)定為25s。beginprocess(reset,clk)beginifreset='1'thenload<="00000000";elsif(clk'eventandclk='1')thenif(ena_scan='1'andrecount='1')thencasesign_stateiswhen"000"=>load<=conv_std_logic_vector(greensn_time,8);--sign_state=“000”when"001"=>load<=conv_std_logic_vector(yellowsn_time,8);--sign_state=“001”when"010"=>load<=conv_std_logic_vector(redsn_time,8);--sign_state=“010”when"011"=>load<=conv_std_logic_vector(redew_time,8);--sign_state=“011”when"100"=>load<=conv_std_logic_vector(yellowew_time,8);--sign_state=“100”when"101"=>load<=conv_std_logic_vector(greenew_time,8);--sign_state=“101”whenothers=>load<=conv_std_logic_vector(yellowsn_time,8);endcase;當(dāng)外部信號(hào)發(fā)生器提供了1kHZ的時(shí)鐘信號(hào),并且重新計(jì)數(shù)信號(hào)(recount)為“1〞時(shí),load信號(hào)就會(huì)按照預(yù)先設(shè)置的數(shù)值逐1遞減,直至減到零為止,當(dāng)下一個(gè)重新計(jì)數(shù)信號(hào)(recount)再次為“1〞時(shí),會(huì)重復(fù)此過(guò)程。在這段程序的設(shè)計(jì)中用到了conv_std_logic_vector(value,n)語(yǔ)句,它的用法就是將已經(jīng)定義的數(shù)值(value)轉(zhuǎn)換成n位(bit)的表示方法。例如程序中:when"000"=>load<=conv_std_logic_vector(greenew_time,8);就是將十進(jìn)制的25轉(zhuǎn)換成十六進(jìn)制的19,這就使設(shè)計(jì)減少了很多不必要的麻煩。程序代碼見附錄2.計(jì)數(shù)秒數(shù)選擇電路程序代碼倒計(jì)時(shí)控制電路通過(guò)日常生活中的觀察,我發(fā)現(xiàn)在一些交通路口已經(jīng)開始使用倒計(jì)時(shí)顯示器,它們的作用就是用來(lái)提示車輛行人目前還有多長(zhǎng)時(shí)間信號(hào)燈會(huì)發(fā)生變化,這樣車輛行人就可以提前判斷是否有足夠的時(shí)間通過(guò)路口,進(jìn)而就可以防止很多意外事故的發(fā)生。例如:南北方向綠燈,車輛處于正常行駛中,東西方向紅燈,車輛處于等待中,假設(shè)南北方向行駛的車輛看到倒計(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í)的顯示裝置就會(huì)使司機(jī)和行人一目了然,同樣也能夠起到很好的提示作用。所以,hld3倒計(jì)時(shí)控制電路(見圖8)最主要的功能就是負(fù)責(zé)接收hld2電路輸出的值,然后將其轉(zhuǎn)換成BCD碼,并利用發(fā)光二極管顯示出來(lái),讓車輛行人能夠清楚地知道再過(guò)多久信號(hào)燈就會(huì)發(fā)生變化。倒計(jì)時(shí)控制電路系統(tǒng)輸入信號(hào):clk:由外部信號(hào)發(fā)生器提供1kHz的時(shí)鐘信號(hào);reset:系統(tǒng)內(nèi)部自復(fù)位信號(hào);ena_1hz:接收由時(shí)鐘發(fā)生電路提供的1Hz的脈沖信號(hào);recount:重新計(jì)數(shù)的使能控制信號(hào);load:負(fù)責(zé)接收計(jì)數(shù)器所需要的計(jì)數(shù)數(shù)值。系統(tǒng)輸出信號(hào):led:負(fù)責(zé)將計(jì)數(shù)數(shù)值轉(zhuǎn)換成BCD碼,并利用發(fā)光二極管顯示倒計(jì)時(shí)狀態(tài);next_state:當(dāng)計(jì)數(shù)器計(jì)時(shí)完畢后,負(fù)責(zé)產(chǎn)生一個(gè)脈沖信號(hào),作為下一個(gè)狀態(tài)的觸發(fā)信號(hào)。經(jīng)仿真后得到的時(shí)序圖(見圖9):論文資料集中營(yíng)論文資料集中營(yíng)倒計(jì)時(shí)控制電路時(shí)序圖由倒計(jì)時(shí)控制電路的時(shí)序圖(見圖9)可以看出,當(dāng)clk時(shí)鐘信號(hào)來(lái)臨后,在ena_1hz脈沖信號(hào)的同時(shí)鼓勵(lì)下,led會(huì)按照預(yù)先設(shè)置好的時(shí)間開始逐1遞減,進(jìn)行倒計(jì)時(shí)顯示。process(clk,reset)beginif(reset='1')thencnt_ff<="00000000";led<="0000000000000000000000000";--當(dāng)reset=1,那么將cnt_ff與led清零。elsif(clk'eventandclk='1')thenifena_1hz='1'thenif(recount='1')thencnt_ff<=load-1;--當(dāng)reset=0,clk為上升沿觸發(fā),且ena_1hz與recount為1時(shí),load將減1的數(shù)值賦給cnt_ff。elsecnt_ff<=cnt_ff-1;--當(dāng)reset=0,clk為上升沿觸發(fā),且ena_1hz為1時(shí),recount為0時(shí),cnt_ff減1。endif;endif;caseconv_integer(cnt_ff)is……when23=>led(24downto0)<=0";whenothers=>led(24downto0)<="0000000000000000000000000";endcase;這段程序是采用的就是查表的方法并且利用發(fā)光二極管進(jìn)行倒計(jì)時(shí)顯示,如圖9所示:當(dāng)綠燈點(diǎn)亮開始計(jì)數(shù)后,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〞為熄滅。程序代碼見附錄紅綠燈信號(hào)控制電路在紅綠燈交通信號(hào)系統(tǒng)中,大多數(shù)的情況是通過(guò)自動(dòng)控制的方式指揮交通。但為了配合頂峰時(shí)段,防止交通擁擠,有時(shí)還必須使用手動(dòng)控制,即讓交通警察自行指揮交通。因此,hld4紅綠燈信號(hào)控制電路(見圖10)除了負(fù)責(zé)監(jiān)控路口紅綠燈之外,最主要的功能就是能夠利用開關(guān)來(lái)切換手動(dòng)與自動(dòng)的模式,讓交通警察能夠通過(guò)外部輸入的方式來(lái)控制紅綠燈交通信號(hào)系統(tǒng)的運(yùn)做。紅綠燈信號(hào)控制電路系統(tǒng)輸入信號(hào):clk:由外部信號(hào)發(fā)生器提供1kHZ的時(shí)鐘信號(hào);reset:系統(tǒng)內(nèi)部自復(fù)位信號(hào);ena_scan:接收由時(shí)鐘發(fā)生電路提供的250Hz的時(shí)鐘脈沖信號(hào);ena_1hz:接收由時(shí)鐘發(fā)生電路提供的1Hz的脈沖信號(hào);flash_1hz:接收由時(shí)鐘發(fā)生電路提供的1Hz的脈沖時(shí)鐘信號(hào);a_m:手動(dòng)、自動(dòng)切換按鈕〔1:自動(dòng)、0:手動(dòng)〕;st_butt:紅綠燈狀態(tài)切換按鈕〔在手動(dòng)操作下,每按一次按鈕就變換一個(gè)狀態(tài)〕;next_state:接收由倒計(jì)時(shí)控制電路提供的下一個(gè)狀態(tài)的觸發(fā)信號(hào)。系統(tǒng)輸出信號(hào):recount:產(chǎn)生重新計(jì)數(shù)的輸出使能控制信號(hào);sign_state:產(chǎn)生輸出狀態(tài)信號(hào);red:負(fù)責(zé)紅色信號(hào)燈的顯示;green:負(fù)責(zé)綠色信號(hào)燈的顯示;yellow:負(fù)責(zé)黃色信號(hào)燈的顯示。經(jīng)仿真后得到的時(shí)序圖(見圖11):論文資料集中營(yíng)論文資料集中營(yíng)紅綠燈信號(hào)控制電路時(shí)序圖從圖上可以看到:當(dāng)a_m=1,處于自動(dòng)狀態(tài)時(shí),在next_state的觸發(fā)下,Red,Green,Yellow為01,10,00時(shí),對(duì)應(yīng)state.rewgsn=1,說(shuō)明東西方向紅燈亮〔red=01〕,南北方向綠燈亮〔green=10〕Red,Green,Yellow為01,00,10時(shí),對(duì)應(yīng)state.rewysn=1,說(shuō)明東西方向紅燈亮〔red=01〕,南北方向黃燈亮〔yellow=10〕Red,Green,Yellow為10,01,00時(shí),對(duì)應(yīng)state.gewrsn=1,說(shuō)明東西方向綠燈亮〔Green=01〕,南北方向紅燈亮〔red=10〕當(dāng)st_butt=1時(shí),由自動(dòng)狀態(tài)切換到手動(dòng)狀態(tài)〔a_m=0〕,因?yàn)閞eset=1,Red,Green,Yellow由10,01,00變?yōu)?1,10,00〔即東西方向紅燈亮,南北方向綠燈亮,初始狀態(tài)〕對(duì)hld4局部放大進(jìn)論文資料集中營(yíng)論文資料集中營(yíng)變量rebn_ff由111111遞減到等于2時(shí)st_transfer=1,狀態(tài)發(fā)生轉(zhuǎn)換〔由01,10,00轉(zhuǎn)換成01,00,10〕論文資料集中營(yíng)論文資料集中營(yíng)建立程序包在程序設(shè)計(jì)語(yǔ)言中,程序的開始總會(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ì)的需求。上述問(wèn)題在硬件描述語(yǔ)言的設(shè)計(jì)中也存在,在VHDL程序中的第一行(libraryieee;)就是要使用IEEE設(shè)計(jì)好的庫(kù)文件,但如果需要使用的元器件并不在庫(kù)中時(shí),就只能自己定義了。一個(gè)程序包中至少應(yīng)該包含以下結(jié)構(gòu)中的一種:常數(shù)說(shuō)明:如定義系統(tǒng)數(shù)據(jù)總線通道的寬度。VHDL數(shù)據(jù)類型說(shuō)明:主要用于在整個(gè)設(shè)計(jì)中通用的數(shù)據(jù)類型。元件定義:元件定義主要規(guī)定在VHDL設(shè)計(jì)中參與文件例化的文件接口界面。子程序:并入程序包的子程序有利于在設(shè)計(jì)中任一處進(jìn)行方便地調(diào)用。例如,時(shí)鐘發(fā)生電路的組件代碼為:componenthld1port(reset:instd_logic;clk:instd_logic;ena_scan:outstd_logic;ena_1hz:outstd_logic;flash_1hz:outstd_logic);endcomponent;連接各個(gè)模塊light電路的工作就是將所有的子電路全部連接起來(lái),進(jìn)行時(shí)序分析,當(dāng)程序完成后,再下載到FPGA,以便硬件電路的驗(yàn)證工作。經(jīng)仿真后得到的時(shí)序圖(見圖12):論文資料集中營(yíng)論文資料集中營(yíng)連接各個(gè)模塊后的時(shí)序圖從上圖可以看出南北方向:綠燈25s――>黃燈5s東西方向:綠燈25s――>黃燈5s論文資料集中營(yíng)狀態(tài)轉(zhuǎn)換圖如下:論文資料集中營(yíng)有效狀態(tài)轉(zhuǎn)換如下:論文資料集中營(yíng)論文資料集中營(yíng)東西方向:紅燈――綠燈――黃燈南北方向:綠燈――黃燈――紅燈狀態(tài)機(jī)的優(yōu)勢(shì)通過(guò)上面圖形的展示,狀態(tài)機(jī)有著難以超越的優(yōu)越性,主要表現(xiàn)在一下幾方面:狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式控制不靈活的缺點(diǎn)。由于狀態(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ī)的功能。狀態(tài)機(jī)容易構(gòu)成性能良好的同步時(shí)序邏輯模塊,這對(duì)于大規(guī)模邏輯電路設(shè)計(jì)中令人深感棘手的競(jìng)爭(zhēng)冒險(xiǎn)現(xiàn)象無(wú)疑是一個(gè)上佳的選擇。與VHDL的其他描述方式相比,狀態(tài)機(jī)的VHDL描述豐富多樣、程序?qū)哟吻宄Y(jié)構(gòu)清晰,易讀易懂;在排錯(cuò)、修改和模塊移植方面也有獨(dú)到的好處。在高速運(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的功能類似。高可靠性。結(jié)束語(yǔ)本設(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í)際情況進(jìn)行設(shè)置,修改靈活方便。通過(guò)此次設(shè)計(jì),我對(duì)于VHDL硬件描述語(yǔ)言有了更深入地了解,也在原來(lái)所學(xué)的理論根底上得到了進(jìn)一步地應(yīng)用。但由于經(jīng)驗(yàn)上的缺乏,有些地方還需要做進(jìn)一步地改善,如可通過(guò)FPGA/CPLD開發(fā)套件驗(yàn)證。數(shù)字化時(shí)代的到來(lái)給人們的生活水平帶來(lái)了極大的改變,我們有理由相信,隨著數(shù)字化的深入,交通燈控制器的功能將日趨完善。而且,VHDL語(yǔ)言對(duì)EDA技術(shù)產(chǎn)生的影響也是深遠(yuǎn)的,它縮短了電子產(chǎn)品的設(shè)計(jì)周期,為設(shè)計(jì)者提供了方便。在今后的電子產(chǎn)品研究開發(fā)過(guò)程中,EDA技術(shù)將會(huì)具有更好的開發(fā)手段和更高的性價(jià)比,并且將擁有更為廣闊的市場(chǎng)應(yīng)用前景。參考文獻(xiàn)[1]元紅妍、張?chǎng)沃骶帲骸峨娮泳C合設(shè)計(jì)實(shí)驗(yàn)教程》,第一版,山東:山東大學(xué)出版社,2005年,第111-113頁(yè)。[2]楊曉慧、許紅梅、楊會(huì)玲編著:《電子技術(shù)EDA實(shí)踐教程》,第一版,北京:國(guó)防工業(yè)出版社,2005年,第235-240頁(yè)。[3]楊恒、李愛國(guó)、王輝、王新安編著:《FPGA/CPLD最新實(shí)用技術(shù)指南》,第一版,北京:清華大學(xué)出版社,2005年,第242-244頁(yè)。[4]孫芹芝、張瑾、蘇曉鷺:《基于EDA的交通燈控制系統(tǒng)》,《應(yīng)用天地》,2005年第五期,第66-68頁(yè)。[5]林明權(quán)等編著:《VHDL數(shù)字控制系統(tǒng)設(shè)計(jì)范例》,第一版,北京:電子工業(yè)出版社,2003年,第115-126頁(yè)。[6]潘松、黃繼業(yè)編著:《EDA技術(shù)實(shí)用教程》,第二版,北京:科學(xué)出版社,2005年,第1-3頁(yè)。[7]楊恒新:《自頂向下法設(shè)計(jì)交通燈控制系統(tǒng)》,《電氣電子教學(xué)學(xué)報(bào)》,2006年第四期,第40-41頁(yè)。[8]曾素瓊:《EDA技術(shù)在數(shù)字電路中的探討》,《實(shí)驗(yàn)科學(xué)與技術(shù)》,2005年第一期,第22-25頁(yè)。[9]徐志軍、徐光芒編著:《CPLD/FPGA的開發(fā)與應(yīng)用》,第一版,北京:電子工業(yè)出版社,2002年,第176-185頁(yè)。致謝附錄紅綠燈交通信號(hào)系統(tǒng)的VHDL程序代碼:1.時(shí)鐘發(fā)生電路程序代碼libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityhld1isport(reset:instd_logic;clk:instd_logic;ena_scan:outstd_logic;ena_1hz:outstd_logic;flash_1hz:outstd_logic);end;architecturebhvofhld1isconstantscan_bit:positive:=2;constantscan_val:positive:=4;constanttwo_hz_bit:positive:=7;constanttwo_hz_val:positive:=125;signalclk_scan_ff:std_logic_vector(scan_bit-1downto0);signalclk_2hz_ff:std_logic_vector(two_hz_bit-1downto0);signalena_s:std_logic;signalena_one:std_logic;signalena_two:std_logic;beginprocess(reset,clk)beginifreset='1'thenclk_scan_ff<="00";ena_s<='0';elsif(clk'eventandclk='1')thenifclk_scan_ff>=scan_val-1thenclk_scan_ff<="00";ena_s<='1';elseclk_scan_ff<=clk_scan_ff+1;ena_s<='0';endif;endif;endprocess;ena_scan<=ena_s;process(reset,clk,ena_s)beginifreset='1'thenena_one<='0';ena_two<='0';clk_2hz_ff<="0000000";elsif(clk'eventandclk='1')thenifena_s='1'thenifclk_2hz_ff>=two_hz_val-1thenclk_2hz_ff<="0000000";ena_two<='1';ena_one<=notena_one;elseclk_2hz_ff<=clk_2hz_ff+1;ena_two<='0';ena_one<=ena_one;endif;endif;endif;endprocess;ena_1hz<=ena_oneandena_twoandena_s;flash_1hz<=ena_one;end;2.計(jì)數(shù)秒數(shù)選擇電路程序代碼libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityhld2isport(reset:instd_logic;clk:instd_logic;ena_scan:instd_logic;recount:instd_logic;sign_state:instd_logic_vector(2downto0);load:outstd_logic_vector(7downto0));end;architecturebhvofhld2isconstantredew_time:integer:=15;constantyellowew_time:integer:=5;constantgreenew_time:integer:=25;constantredsn_time:integer:=15;constantyellowsn_time:integer:=5;constantgreensn_time:integer:=25;beginprocess(reset,clk)beginifreset='1'thenload<="00000000";elsif(clk'eventandclk='1')thenif(ena_scan='1'andrecount='1')thencasesign_stateiswhen"000"=>load<=conv_std_logic_vector(greensn_time,8);when"001"=>load<=conv_std_logic_vector(yellowsn_time,8);when"010"=>load<=conv_std_logic_vector(redsn_time,8);when"011"=>load<=conv_std_logic_vector(redew_time,8);when"100"=>load<=conv_std_logic_vector(yellowew_time,8);when"101"=>load<=conv_std_logic_vector(greenew_time,8);whenothers=>load<=conv_std_logic_vector(yellowsn_time,8);endcase;endif;endif;endprocess;end;3.倒計(jì)時(shí)控制電路程序代碼libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityhld3isport(reset:instd_logic;clk:instd_logic;ena_1hz:instd_logic;recount:instd_logic;load:instd_logic_vector(7downto0);led:outstd_logic_vector(24downto0);next_state:outstd_logic);end;architecturebhvofhld3issignalcnt_ff:std_logic_vector(7downto0);beginprocess(clk,reset)beginif(reset='1')thencnt_ff<="00000000";led<="0000000000000000000000000";elsif(clk'eventandclk='1')thenifena_1hz='1'thenif(recount='1')thencnt_ff<=load-1;elsecnt_ff<=cnt_ff-1;endif;endif;caseconv_integer(cnt_ff)iswhenothers=>led(24downto0)<="0000000000000000000000000";endcase;endif;endprocess;next_state<='1'whencnt_ff=1else'0';end;4.紅綠燈信號(hào)控制電路程序代碼libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityhld4isport(reset:instd_logic;clk:instd_logic;ena_scan:instd_logic;ena_1hz:instd_logic;flash_1hz:instd_logic;a_m:instd_logic;st_butt:instd_logic;next_state:instd_logic;recount:outstd_logic;sign_state:outstd_logic_vector(2downto0);red:outstd_logic_vector(1downto0);green:outstd_logic_vector(1downto0);yellow:outstd_logic_vector(1downto0));end;architecturebhvofhld4istypesreg0_typeis(rewgsn,rewysn,gewrsn,yewrsn,yewysn,yewgsn,gewysn,rewrsn);signalstate:sreg0_type;signalst_transfer:std_logic;signallight:std_logic_vector(5downto0);beginprocess(reset,clk,ena_scan,st_butt)variablerebn_ff:std_logic_vector(5downto0);beginif(st_butt='1'orreset='1')thenrebn_ff:="111111";st_transfer<='0';elsif(clk'eventandclk='1')thenif(ena_scan='1')thenif(rebn_ff>=3)thenrebn_ff:=rebn_ff-1;st_transfer<='0';elsif(rebn_ff=2)thenrebn_ff:=rebn_ff-1;st_transfer<='1';elserebn_ff:=rebn_ff;st_transfer<='0';endif;endif;endif;endprocess;process(clk,ena_1hz,reset)beginif(reset='1')thenstate<=rewgsn;sign_state<="000";recount<='1';elseif(clk'eventandclk='1')thencasestateiswhenrewgsn=>if(a_m='1'andena_1hz='1')thenif(next_state='1')thenrecount<='1';state<=rewysn;sign_state<="001";elserecount<='0';state<=rewgsn;endif;elsif(a_m='0'andena_scan='1')thenif(st_transfer='0')thenrecount<='1';state<=rewgsn;elserecount<='1';state<=rewysn;sign_state<="001";endif;endif;whenrewysn=>if(a_m='1'andena_1hz='1')thenif(next_state='1')thenrecount<='1';state<=gewrsn;sign_state<="101";elserecount<='0';state<=rewysn;endif;elsif(a_m='0'andena_scan='1')thenif(st_transfer='0')thenrecount<='1';state<=rewysn;elserecount<='1';state<=gewrsn;sign_state<="101";endif;endif;whengewrsn=>if(a_m='1'andena_1hz='1')thenif(next_state='1')thenrecount<='1';state<=yewrsn;sign_state<="100";elserecount<='0';state<=gewrsn;endif;elsif(a_m='0'andena_scan='1')thenif(st_transfer='0')thenrecount<='1';state<=gewrsn;elserecount<='1';state<=yewrsn;sign_state<="100";endif;endif;whenyewrsn=>if(a_m='1'andena_1hz='1')thenif(next_state='1')thenrecount<='1';state<=rewgsn;sign_state<="000";elserecount<='0';state<=yewrsn;endif;elsif(a_m='0'andena_scan='1')thenif(st_transfer='0')thenrecount<='1';state<=yewrsn;elserecount<='1';state<=rewgsn;sign_state<="000";endif;endif;whenothers=>state<=rewgsn;recount<='0';sign_state<="000";endcase;endif;endif;endprocess;light<="010010"when(state=rewgsn)else"011000"when(state=rewysn)el
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年枸杞采摘采摘技術(shù)與設(shè)備租賃合同3篇
- 二零二五年度網(wǎng)絡(luò)安全人才培養(yǎng)與輸送合同2篇
- 二零二五版果園果樹種植與農(nóng)業(yè)技術(shù)培訓(xùn)服務(wù)合同樣本3篇
- 二零二五年度采砂廠承包綜合效益評(píng)估合同范本3篇
- 二零二五版智能化住宅項(xiàng)目施工及造價(jià)管理合同3篇
- 二零二五年度環(huán)保污水處理設(shè)備采購(gòu)補(bǔ)充合同范本2篇
- 2025年新型城鎮(zhèn)化項(xiàng)目場(chǎng)地租賃與開發(fā)建設(shè)合同范本2篇
- 二零二五版環(huán)保設(shè)施投資合作合同3篇
- 二零二五版交通事故車輛損失賠償合同3篇
- 二零二五版特種車輛租賃及操作培訓(xùn)合同3篇
- 寒潮雨雪應(yīng)急預(yù)案范文(2篇)
- DB33T 2570-2023 營(yíng)商環(huán)境無(wú)感監(jiān)測(cè)規(guī)范 指標(biāo)體系
- 上海市2024年中考英語(yǔ)試題及答案
- 房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)(2024版)宣傳海報(bào)
- 垃圾車駕駛員聘用合同
- 2025年道路運(yùn)輸企業(yè)客運(yùn)駕駛員安全教育培訓(xùn)計(jì)劃
- 南京工業(yè)大學(xué)浦江學(xué)院《線性代數(shù)(理工)》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024版機(jī)床維護(hù)保養(yǎng)服務(wù)合同3篇
- 《論拒不執(zhí)行判決、裁定罪“執(zhí)行能力”之認(rèn)定》
- 工程融資分紅合同范例
- 2024國(guó)家安全員資格考試題庫(kù)加解析答案
評(píng)論
0/150
提交評(píng)論