基于可編程邏輯器件CPLD的交通控制系統(tǒng)_第1頁
基于可編程邏輯器件CPLD的交通控制系統(tǒng)_第2頁
基于可編程邏輯器件CPLD的交通控制系統(tǒng)_第3頁
基于可編程邏輯器件CPLD的交通控制系統(tǒng)_第4頁
基于可編程邏輯器件CPLD的交通控制系統(tǒng)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、北京師范大學本科生畢業(yè)論文北京師范大學成人高等教育2013屆本科生畢業(yè)論文(設計)論文題目基于可編程邏輯器件CPLD的交通控制系統(tǒng) 學生姓名: 專業(yè)名稱: 電子信息科學與技術學 號: 201113210005指導教師: 完成時間: 2013-07-27摘 要本設計是采用可編程邏輯器件CPLD為核心,結合VHDL語言和Altera公司開發(fā)的MAX+PLUS軟件實現(xiàn)交通信號燈的控制。本系統(tǒng)除了交通燈的基本功能外,還具有時間顯示倒計時和緊急情況處理功能。在程序的設計中,分析控制交通的多種原理,用傳統(tǒng)的方法去實現(xiàn)難度較大,因此,采用可編程邏輯器件為核心器件,用硬件語言編程對交通信號燈功能進行描述??删?/p>

2、程邏輯器件CPLD往往作為一個核心器件,是一種用戶根據(jù)各自需要而自行構造邏輯功能的數(shù)字集成電路。本系統(tǒng)的控制功能由4個模塊組成,分別對各模塊進行功能描述分析和仿真,在仿真結果正確后,生成綜合文件,對綜合文件仿真、分析,最終實現(xiàn)交通信號燈的控制。此系統(tǒng)是采用層次化設計,利用層次化設計方法實現(xiàn)自頂向下的設計,先組建底層文件,然后進行頂層設計,思路明確,過程簡單明了。關鍵詞:EDA,CPLD,VHDL語言25目 錄前 言 . 1第1章 交通燈控制器的設計方案 . 2 1.1設計要求 . 2 1.2設計過程 . 3第2章 可編程邏輯器件CPLD的簡介及EDA概述 . 4 2.1 CPLD器件特點及結構

3、. 4 2.2 EDA技術 . 4第3章 VHDL語言及交通燈控制器的源程序 . 5 3.1 VHDL硬件語言的基本結構 . 5 3.2交通燈控制器的源程序 . 5 3.2.1設計說明 . 5 3.2.2各模塊的源程序 . 6第4章 MAX+PLUS系統(tǒng)下交通燈的功能實現(xiàn) . 7 4.1 MAX+PLUS的設計過程 . 7 4.2交通燈控制器的功能實現(xiàn) . 8 4.2.1控制模塊的功能實現(xiàn) . 8 4.2.2分頻、提取顯示值、顯示器譯碼模塊的功能實現(xiàn) . 13 4.2.3層次化設計 . 15第5章 結 論 . 18參考文獻 . 19 附 錄 A . 20前 言 1858年,在英國倫敦主要街頭安

4、裝了以燃煤氣為光源的紅、藍兩色的機械扳手式信號燈,用以指揮馬車通行。這是世界上最早的交通信號燈。1914年,電氣啟動的紅綠燈出現(xiàn)在美國。這種紅綠燈由紅綠黃三色圓形的投光器組成,安裝在紐約市5號大街的一座高塔上。紅燈亮表示“停止”,綠燈亮表示“通行”。1968年,聯(lián)合國道路交通和道路標志信號協(xié)定對各種信號燈的含義作了規(guī)定。綠燈是通行信號,紅燈是禁行信號,黃燈是警告信號。刪除空行如今十字路口車輛穿梭,車輛與行人各行其道,有條不紊,秩序井然,靠的正是交通信號燈的自動指揮系統(tǒng)。它的出現(xiàn)使交通得以有效管制,對于疏導交通流量、提高道路通行能力、減少交通事故都有明顯效果。隨著經(jīng)濟的發(fā)展,交通運輸中出現(xiàn)了一些

5、傳統(tǒng)方法難以解決的問題。道路擁擠現(xiàn)象日趨嚴重?,F(xiàn)在交通系統(tǒng)已不能滿足經(jīng)濟發(fā)展的需求。由于生活水平的提高,人們對交通運輸?shù)陌踩约胺账教岢隽烁叩囊?。在交通管理中引入可編程邏輯芯片控制電路,替代了交管人員在交叉路口服務,有助于提高交通運輸?shù)陌踩?、提高交通管理的服務質量。并在一定程度上盡可能的降低由道路擁擠造成的經(jīng)濟損失,同時也減小了工作人員的勞動強度。 中國車輛數(shù)量不斷增加,交通控制在未來的交通管理中起著越來越重要的作用。智能交通燈的管理比重修一條馬路無論在經(jīng)濟、交通運行速率上都有很好的效益、更加節(jié)約資源。使交管人員有更多的精力投入到管理整個城市的交通控制,帶來更大的經(jīng)濟和社會效益,為創(chuàng)

6、造美好的城市交通形象發(fā)揮更多的作用。 第1章 交通燈控制器的設計方案本項設計是圍繞電子設計自動化(EDA)為核心展開的數(shù)字系統(tǒng)設計。實施的方案是基于可編程邏輯器件CPLD的交通控制系統(tǒng),采用硬件語言VHDL進行編程,選用Altera公司開發(fā)的MAX+PLUS軟件對硬件語言編譯、綜合、仿真,最終實現(xiàn)對交通信號燈的控制。1.1 設計要求顯示十字路口東西、南北2個方向的紅、黃、綠燈的指示狀態(tài)。交通燈示意圖如圖1-1所示標點符號圖1-1 交通燈現(xiàn)場示意圖 實現(xiàn)正常的倒計時功能。用兩組數(shù)碼管作為東西和南北方向的倒計時顯示,顯示時間為紅燈25s、綠燈20s、黃燈5s。交通燈狀態(tài)變化如表1-1所示。表1-1

7、交通燈的狀態(tài)變化計數(shù)狀態(tài)東西A路口顯示燈狀態(tài)南北B路口顯示燈狀態(tài)1-20s綠燈亮紅燈亮21-25s黃燈亮紅燈亮26-45s紅燈亮綠燈亮46-50s紅燈亮黃燈亮交通燈控制時序圖。根據(jù)交通燈狀態(tài)變化可畫出如圖1-2所示的時序圖。圖1-2 時序圖1.2 設計過程根據(jù)設計任務系統(tǒng)共分為四個模塊:分頻模塊、控制模塊、提取顯視值模塊、顯視器譯碼模塊。其中分頻模塊對20M晶振輸出的脈沖進行分頻得到10Hz和1Hz的脈沖;控制模塊是整個設計的核心,實現(xiàn)邏輯和時序控制對輸入的脈沖進行,當交通燈的四個狀態(tài)循環(huán)一次后為一個計數(shù)周期50S,每個計數(shù)周期完成后進行清零,當遇到緊急情況時,應對系統(tǒng)進行特殊控制,輸入一個控

8、制信號,計數(shù)狀態(tài)保持,四個路口均顯示紅燈,控制信號取消后,系統(tǒng)進入正常狀態(tài),計數(shù)器繼續(xù)計數(shù);提取顯示值模塊對控制模塊的計數(shù)值輸出進行分析提取兩種信號,一種信號供給譯碼器顯示十位數(shù),另一種信號供給譯碼器顯示個位數(shù);顯示模塊將提取顯示值模塊輸出的信號進行譯碼,在顯示器上顯示計數(shù)值。交通信號燈的設計流程如圖1-3所示:該為句號分頻模塊硬件語言描述編譯、仿真對仿真圖分析控制模塊硬件語言描述提取顯視值模塊硬件語言描述顯示器譯碼模塊硬件語言描述編譯、仿真編譯、仿真編譯、仿真生成頂層文件 圖形輸入編譯、仿真對仿真圖分析得出結論圖1-3 交通信號燈的設計流程圖第2章 可編程邏輯器件CPLD的簡介及EDA概述改

9、為“CPLD簡潔以及EDA概述”CPLD(用中文標點符號Complex Programmable Logic Device)用中文標點符號復雜可編程邏輯器件,是從PAL和GAL器件發(fā)展出來的器件,相對而言規(guī)模大結構復雜,屬于大規(guī)模集成電路范圍。是一種用戶根據(jù)各自需要而自行構造邏輯功能的數(shù)字集成電路。其基本設計方法是借助集成開發(fā)軟件平臺,用原理圖、硬件描述語言等方法,生成相應的目標文件,通過下載電纜將代碼傳送到目標芯片中,實現(xiàn)設計的數(shù)字系統(tǒng)。2.1 CPLD器件特點及結構CPLD具有編程靈活、集成度高、設計開發(fā)周期短、適用范圍寬、開發(fā)工具先進、設計制造成本低、對設計者的硬件經(jīng)驗要求低、標準產(chǎn)品無

10、需測試、保密性強、價格大眾化等特點,可實現(xiàn)較大規(guī)模的電路設計,因此被廣泛應用于產(chǎn)品的原型設計和產(chǎn)品生產(chǎn)(一般在10,000件以下)之中。幾乎所有應用中小規(guī)模通用數(shù)字集成電路的場合均可應用CPLD器件,CPLD器件已成為電子產(chǎn)品不可缺少的組成部分。CPLD是結構比較復雜的可編程邏輯器件,邏輯宏單元內部主要包括與或陣列、可編程觸發(fā)器和多路選擇器等電路,能獨立地配置為時序或組合邏輯工作方式。CPLD器件的宏單元在內部,稱為內部邏輯宏單元。CPLD除了密度高之外,許多優(yōu)點都反映在邏輯單元上。2.2 EDA技術進入20世紀90年代后,電子系統(tǒng)已經(jīng)從電路板級系統(tǒng)集成發(fā)展成為包括ASIC、FPGA和嵌入系統(tǒng)

11、的多種模式,EDA產(chǎn)業(yè)已經(jīng)成為電子信息類產(chǎn)品的支柱產(chǎn)業(yè)。EDA的蓬勃發(fā)展離不開設計方法學的進步,是以計算機硬件和軟件為基本工作平臺,集數(shù)據(jù)庫、圖形學、圖論與拓撲邏輯、計算數(shù)學、優(yōu)化理論等多學科最新成果研制的計算機輔助設計通用軟件工具,過去幾十年內IC設計方法主要包括以下幾個階段。(1)手工設計(Hand Design):手工設計的上標主要是進行組合邏輯的優(yōu)化和簡化。(2)電路仿真(Circuit Simulation):這里的電路指IC中的晶體管電路。在20世紀70年代早期,像Calma這樣的公司就把數(shù)學化系統(tǒng)推向了市場,并采用Spice來進行電路仿真。(3)原理圖輸入和邏輯仿真(Schema

12、tic Capture and Logic Simulation):工作站技術與圖形用戶界面的結合讓電路設計師能夠直接用原理圖輸入工具來描述他們的設計。(4)布局和布線(PlacementRouting):從20世紀80年代開始,功能強大的IC布局工具開始出現(xiàn),包括自動布局布線、設計規(guī)則檢查、布局與原理圖一致性檢查等。同時,VerilogHDL和VHDL等硬件描述語言的誕生促進了邏輯和寄存器傳輸級仿真器的發(fā)展。(5)綜合(Synthesis):在1987年發(fā)布了商用的邏輯綜合工具,這款工具幫助設計師自動將網(wǎng)表映射到各個不同單元庫上。第3章 VHDL語言及交通燈控制器的源程序3.1 VHDL硬件

13、語言的基本結構一般來講一個完整的VHDL語言程序通常包括實體聲明(Entity Declaration)、結構體 (Architecture Body)、配置(Configuration)、程序包(Package)和庫(Library)五個組成部分。在VHDL語言程序上述五部分中,實體和結構體是VHDL語言程序的基本結構。本章將對VHDL語言程序的基本結構實體說明和結構體進行詳細介紹,關于庫、程序包和配置的知識也進行了簡單介紹。VHDL語言程序是對一個設計單元的基本描述,通常把這個設計單元稱為設計實體。VHDL語言把這個設計單元作為一個設計實體來處理,一個設計實體只能唯一地對應一個設計單元。一

14、個基本設計單元或者說是設計實體,可以是一個復雜的數(shù)字電子系統(tǒng),也可以是一個數(shù)字單元或芯片,甚至還可以是一個簡單的基本門電路。但是,不管是復雜的數(shù)字電子系統(tǒng)還是簡單的門電路,它體現(xiàn)的基本構成都是一樣的。它們都是由實體說明和結構體兩部分組成的。雖然說一個實體說明可以對應多個結構體,但是通常要求一個獨立的VHDL語言程序文件只能由一個實體和一個結構體組成,成為實體­­結構體對,設計時必須完全適應VHDL綜合器的要求,使VHDL程序牢固根植于可行的硬件實現(xiàn)中。3.2交通燈控制器的源程序本設計共包含了四個模塊:控制模塊(controller)、分頻模塊(frenquency10hz和

15、frenquency)、提取顯示值模塊(fenwei)和顯示器譯碼模塊(display)。其中controller是整個設計的核心,實現(xiàn)邏輯和時序控制;時鐘控制模塊對系統(tǒng)進行分頻,得到10hz和1hz的時鐘;提取顯示值模塊對控制模塊輸出的計數(shù)值進行分解,得到兩個路口倒計時時間顯示的十位和個位的信號;顯示模塊對輸入進行譯碼得到七段顯示器的驅動信號。各個子模塊用獨立的實體構成,獨自完成各自功能,下面給出各個模塊的VHDL源程序。3.2.1設計說明本設計采用從上而下的層次化設計風格。下面是端口說明:CLK20M:輸入,系統(tǒng)輸入時鐘,來自于石英晶體振蕩器;Hold:輸入,功能鍵,保持;Reset:輸入

16、,功能鍵,復位;Flash:輸出,轉換期間的閃爍信號;RedA:輸出,A路口顯示紅燈信號,高電平有效;GreenA:輸出,A路口顯示綠燈信號,高電平有效;YellowA:輸出,A路口顯示黃燈信號,高電平有效;RedB:輸出,B路口顯示紅燈信號,高電平有效;GreenB:輸出,B路口顯示綠燈信號,高電平有效;YellowB:輸出,B路口顯示黃燈信號,高電平有效;DisplayA:A路口倒數(shù)時間顯示十位數(shù);DisplayB:A路口倒數(shù)時間顯示個位數(shù);DisplayC:B路口倒數(shù)時間顯示個位數(shù);DisplayD:B路口倒數(shù)時間顯示個位數(shù);3.2.2各模塊的源程序程序添加程序功能描述文字以及程序功能框

17、圖見附錄A第4章 MAX+PLUS系統(tǒng)刪除“系統(tǒng)”下交通燈的功能改為“功能的”實現(xiàn)4.1 MAX+PLUS的設計過程MAX+PLUS的設計可用圖4-1表示,其中各方框圖標明了所完成的功能。設計輸入項目編譯功能/時序仿真項目校驗編程/配置項目編程圖4-1 MAX+PLUS的設計流程1. 設計輸入有段文字描述輸入什么2. 項目編譯為完成對設計的處理,MAX+PLUS提供了一個完全集成的編譯器(Compiler),它可以直接完成從網(wǎng)表提取到最后編程文件的生成。在編譯過程中其生成一系列可進行時序模擬、適配的標準文件。若在編譯的某個環(huán)節(jié)出錯,編譯器會停止編譯,并告知錯誤的原因及位置。圖4-2即為MAX+

18、PLUS編譯器編譯的過程。圖4-2 MAX+PLUS編譯器編譯過程3項目校驗對設計項目功能、時序進行仿真和時序分析,判斷輸入輸出間的延遲。4項目編程將你的設計下載/配置到你所選的器件中去。4.2交通燈控制器的功能實現(xiàn)本項設計共包含了四個模塊,上一章已對各個模塊的功能用硬件語言進行了描述,下面就對各模塊進行編譯、仿真等過程來實現(xiàn)其功能。底層文件采用文本輸入方式,頂層文件采用波形圖輸入方式。由于MAX+PLUS軟件的局限性,在仿真過程中輸入脈沖信號的頻率與實際的頻率不符,在仿真時的脈沖信號只起參考作用,以其為基準,而得出相應的結論。4.2.1控制模塊的功能實現(xiàn)1項目建立與文本輸入(1)項目建立啟動

19、MAX+PLUS軟件選擇File|Project|Name命令, 在directories選項區(qū)選中剛才為項目所建的目錄;在Project Name文本框中鍵入項目名,此處為controller。單擊OK按鈕,確定。(2)文本輸入建立文本輸入文件:選擇File|New命令。單擊Text Editor file單選按鈕后,單擊OK按鈕,即可開始建立文本輸入文件。(3)保存文件選擇File|Save命令,在File Name后填寫文件名controller,擴展名為“.vhd”,單擊OK按鈕。 文件保存后,執(zhí)行File|Create Default Symbol命令,可生成符號controller

20、,即將已設計的控制模塊編譯成庫中的一個元件。2項目編譯完成設計文件輸入后,可開始對其進行編譯。選擇MAX+PLUS|Compiler命令,即可打開編譯器。單擊Star按鈕,就可開始編譯。編譯成功后可生成時序模擬文件及器件編程文件。若有錯誤,編譯器將停止編譯,并在下面的信息框中給出錯誤信息,雙擊錯誤信 息條,一般可給出錯誤之處。3項目校驗編譯器通過Timing SNF Extractor后就可進行時序模擬了,其步驟如下:(1)建立波形輸入文件(也稱模擬器通道文件SCF)。選擇File|New命令,打開新建文件類型對話框,選擇Waveform Editor File(.scf)選項后單擊OK按鈕。

21、在波形編輯器窗口的Name下空白處單擊鼠標右鍵,出現(xiàn)浮動菜單。選擇Enter Nodes from SNF選項,可打開Enter Nodes from SNF(從SNF文件輸入觀測節(jié)點)對話框。在Type選項區(qū)域選擇Inputs和Outputs復選框,默認情況下已選中。單擊List按鈕,可在Available Nodes Groups列表框中看到在我們設計中的輸入、輸出信號,這些信號為藍色高亮,表示被選中。單擊 可將 這些信號選擇到Selected Nodes Groups列表框中,表示可對這些信號進行觀測。圖4-1 列出輸入/輸出信號單擊OK按鈕,關閉圖4-1的對話框。窗口變?yōu)槿鐖D4-2。圖

22、4-2 波形文件中的輸入/輸出信號選擇File|Save選項,將此波形文件保存為默認名controller.scf,擴展名“.scf”表示模擬通道文件。(2)編輯輸入節(jié)點波形,即為輸入信號建立輸入波形。在波形文件中添加好輸入/輸出信號后,就可開始為輸入信號建立輸入波形。在建立輸入波形之前,先瀏覽一下與此操作相關的菜單選項及工具條。如圖4-3和圖4-4所示。 圖4-3 繪圖網(wǎng)格設置菜單條 圖4-4 網(wǎng)格大小設置對話框此外,在默認情況下,模擬時間為1s??蛇x擇File|End Time選項來設置模擬時間的長短。為信號reset和hold信號賦值。選中reset信號從500ns到700ns賦值1,h

23、old信號從150ns到300ns賦值1,即用鼠標左鍵單擊 即可圖跑了;其余時間段軟件將默認為低電平,賦值0。為時鐘信號clk賦周期為50ns的時鐘信號。選中信號clk,設置信號周期。用鼠標左鍵單擊工具條中 按鈕,可打開如圖4-5所示的對話框;單擊OK按鈕,關閉此對話框即可生成所需時鐘。圖4-5 時鐘周期設置對話框選擇File|Save命令,存盤。到此完成波形輸入,得到如圖4-6所示圖形。圖4-6 建好的輸入波形圖(3)運行模擬器,進行時序模擬。選擇MAX+PLUS|Simulator命令,即可打開模擬器,如圖4-7所示。單擊Start按鈕,即可開始模擬。模擬完畢后,單擊Open Scf按鈕,

24、可找開剛才編輯的波形文件,就可開始對模擬結果進行檢查。圖4-7 模擬器仿真完成后波形模擬文件如圖4-8所示。圖4-8 控制模塊仿真模擬結果(4)為觀測方便,可將計數(shù)輸出numa4、3、2、1、0作為一個組來觀測,步驟如下:將鼠標移到Name選項區(qū)的numa4上,按下鼠標左鍵并往下拖動鼠標至numa0處。松開鼠標左鍵,可選中信號numa4、3、2、1、0;在選中區(qū)(黑色)上單擊鼠標右鍵,打開一個浮動菜單,選擇Enter Group選項,出現(xiàn)圖4-9所示的對話框;圖4-9 設置組的對話框單擊OK按鈕,關閉此對話框,可得到如圖4-10所示的波形圖文件?,F(xiàn)在觀測就容易了。 圖4-10 控制模塊仿真結果

25、(以組的方式顯示)圖4-10所示的波形圖即為控制模塊仿真通過后的結果,通過上圖體現(xiàn)了控制模塊的功能。numa和numb分別為A、B路口的計數(shù)值,redb與 greena對應,reda 與greenb對應。從仿真圖中可以看到:當reset,hold信號為低電平時,且第一個脈沖的上升沿到來時,計數(shù)器countnum開始計數(shù),A路口綠燈亮,開始20s的倒計時,B路口紅燈亮,開始25s的倒計時,numa,numb分別為A路口綠燈和B路口紅燈燃亮時間計時。當reset信號為高電平時,計數(shù)器清零,A、B路口回到初始狀態(tài);當hold信號輸入為高電平時,A、B路口的紅燈顯示,并且閃爍,計數(shù)器停止計數(shù),保留原狀

26、態(tài),hold信號取消后,繼續(xù)前一狀態(tài)工作。4.2.2分頻、提取顯示值、顯示器譯碼模塊的功能實現(xiàn)1分頻模塊frequency分頻模塊的模擬過程與控制模塊的模擬過程一樣,仿真完成后,得到圖4-11所示波形圖。圖4-11 分頻模塊仿真結果圖4-21所示的波形圖即為分頻模塊仿真通過后的結果,起到了分頻的作用,得到1hz的時鐘信號。從仿真圖中可以看到輸入脈沖的頻率為10hz,當上升沿到來之后開始計數(shù),第十個脈沖到來時,輸出翻轉一次,輸出脈沖的頻率為1hz。仿真出的結果符合設計要求。2提取顯示值模塊fenwei提取顯示值模塊仿真后得到圖4-12所示波形圖:圖4-12 提取顯示值模塊仿真結果仿真后得到時間顯

27、示的十位數(shù)和個位數(shù),numin為計數(shù)值,numa為譯碼器的十位顯示,numb為譯碼器的個位顯示。當脈沖上升沿到來時,numa(十位數(shù))、numb(個位數(shù))開始分新numin的計數(shù)值,當計數(shù)值大于20時,十位數(shù)為2,個位數(shù)為:計數(shù)值減20;當計數(shù)值大于10時,十位數(shù)為1,個位數(shù)為:計數(shù)值減20;當計數(shù)值小于10時,十位數(shù)為0,個位數(shù)為:計數(shù)值。從仿真圖中可以看到分位后的數(shù)值如表4-1所示。表4-1 分位后的顯示數(shù)值numin計數(shù)值numa十位數(shù)numb個位數(shù)H142 0H13H0A190H09H05095通過表4-1的數(shù)值分析,仿真結果符合設計要求。3顯示器譯碼模塊display顯示器譯碼模塊仿

28、真后得到圖4-13所示波形圖:圖4-13 顯示器譯碼模塊仿真結果 (1)在時鐘信號上升沿到來時,譯碼器開始對顯示器譯碼模塊輸出的分位信號進行譯碼。七段譯碼器結構如圖4-14所示。當abcdefg為高電平時數(shù)碼管發(fā)光。圖4-14 七段譯碼器結構圖(2)七段譯碼器的真值表H0H9的二進制輸入經(jīng)譯碼后得出的輸出值如表4-2所示。表4-2 七段譯碼器的真值表輸 入輸 出 輸 出四位二進制碼abcdef用十六進制表示00001111110H7E00010110000H3000101101101H6D00111111001H7901000110011H3301011011011H5B01100011111

29、H1F01111110000H7010001111111H7F10011110011H73從仿真圖中可以看到:A. flash信號為高電平有效,當輸入為高電平時,等第十個脈沖到來后顯示器閃爍一次。B. H0H9經(jīng)譯碼后分別為7E,30,6D,79,33,5B,1F,70,7F,73與設計要求符合。4.2.3層次化設計數(shù)字系統(tǒng)設計的一般方法是采用自頂向下的層次化設計。在MAX+PLUS軟件中,可利用層次化設計方法來實現(xiàn)自頂向下的設計。一般在電路的具體實現(xiàn)時先組建底層設計,然后進行頂層設計。1層次設計過程以圖形輸入為例,看一下層次設計的過程。前面已經(jīng)完成了底層設計,對交通燈的各個模塊進行了編譯、仿

30、真的模擬過程,下面來完成頂層設計。(1)建立一個新的圖形文件,保存為light.gdf。(2)選擇File|Project/Set project to Current File選項,將其指定為項目文件。(3)打開Enter symbol對話框,調入controller、 frequency、frequency10hz各一次,fenwei兩次,display四次,經(jīng)適當連接構成頂層設計文件,如圖4-25所示,在圖中,雙擊各個元件,可打開各元件的底層文件。(4)對頂層文件light.gdf構成的項目light進行編譯,仿真,最后配置完成此設計。圖4-15 light.gdf文件(5)頂層文件li

31、ght.gdf仿真后的波形分析仿真波形如圖4-16所示。圖4-16 頂層文件的仿真波形從仿真圖上可以看到:(1)當hold信號為高電平時,A、B路口的紅燈為高電平,并且閃爍,黃燈、綠燈無效,時間顯示無效。(2)當hold信號取消后,即為低電平時,系統(tǒng)進入正常狀態(tài)開始計數(shù),第一個脈沖上升沿到來時,A路口綠燈為高電平,B路口紅燈為高電平,此時顯示器開始時間倒計時。(3)display a display b 分別為A路口的十位和個位顯示, display c display d 分別為B路口的十位和個位顯示。(4)A路口綠燈亮從20開始倒計時,綠燈亮的時間為20s, B路口紅燈亮從25開始倒計時,

32、紅燈亮的時間為25s。通過上述仿真,結果表明了,本設計達到了預期的目的,實現(xiàn)了交通信號燈基本功能?,F(xiàn)在完成了整個設計,此時可單擊工具條中 按鈕或選擇MAX+PLUS|Hierarchy display 選項,打開一個窗口,如圖4-17所示。在其中可看到最頂層light.gdf調用了一個controller、 frequency和frequency10hz,兩個fenwei,四個display。雙擊任何一個小圖標,可打開相應文件。 圖4-17 項目light的層次結構2. 層次化設計的指導思想(1)同一設計項目中,頂層設計文件名及各底層符號所對應的設計文件名必須是唯一的,不允許有重名的文件。(2

33、)計時自動地將當前設計項目文件定為頂層設計文件。(3)頂層設計文件可通過的符號所代表的文件為底層設計文件。(4)頂層設計文件可通過創(chuàng)建默認符號(打包)的方法降為底層設計文件,供其他頂層文件調用。(5)在同一設計項目中,不允許出現(xiàn)頂層文件或符號文件自身遞歸調用,允許頂層及頂層文件單向調用底層設計符號,不允許出現(xiàn)頂層文件與符號文件之間及符號文件之間的直接相互調用或間接相互調用。(6)硬件描述語言的設計文件可通過調用包含文件的方法實現(xiàn)層次設計輸入。此時,應通過建立默認符號的方法形成底層設計文件。第5章 結 論本項設計是基于可編程邏輯器件CPLD的交通控制系統(tǒng),充分體現(xiàn)了CPLD編程靈活、集成度高、對

34、設計者的硬件經(jīng)驗要求低、開發(fā)工具先進等特點,利用了硬件語言VHDL進行編程,選用Altera公司開發(fā)的MAX+PLUS軟件對硬件語言編譯、綜合、仿真來實現(xiàn)交通燈控制器,實現(xiàn)了設置紅、綠燈燃亮時間的功能;紅綠燈循環(huán)點亮,紅綠燈時間可通過雙位數(shù)碼管顯示。系統(tǒng)不足之處在于不能控制車的左轉、右轉、以及自動根據(jù)車流改變紅綠燈時間等。如果有需要可以設計擴充原系統(tǒng)來實現(xiàn)。參考文獻1劉婷婷 李軍電子設計自動化(EDA)北京師范大學出版社20072李國洪 沈明山可編程器件EDA技術與實踐機械工業(yè)出版社20043閻石數(shù)字電子技術基礎高等教育出版社19974劉明生信息技術基礎河北大學出版社20025任曉東 文博CP

35、LD/FPGA高級應用開發(fā)指南北京:電子工業(yè)出版社20036甘歷VHDL應用與開發(fā)實踐北京:科學出版社20037侯伯亭 顧新VHDL硬件描述語言與數(shù)字邏輯電路設計西安:西安電子科技大學19978宋俊德 辛德祿可編程邏輯器件CPLD原理及應用北京:電子工業(yè)出版社20029齊清喜 陸穎VHDL電路設計實用教程北京:清華大學出版社200410曾繁泰 陳美金VHDL程序設計北京:清華大學出版社200011林明權等VHDL數(shù)字控制系統(tǒng)設計范例北京:電子工業(yè)出版社2003附 錄 A各模塊的源程序1. 控制模塊(controller)library ieee;use ieee.std_logic_1164.

36、all;use ieee.std_logic_unsigned.all;entity controller isport(clock:in std_logic; reset:in std_logic; hold:in std_logic; flash:out std_logic; numa,numb:out integer range 0 to 25; -注釋的符號不對,是/ 整數(shù)范圍0到25 reda,greena,yellowa:out std_logic; redb,greenb,yellowb:out std_logic);end;architecture control of con

37、troller issignal countnum:integer range 0 to 50;begin process(clock)begin if reset='1' then -復位信號,將計數(shù)器清零所有注釋對齊 countnum<=0; elsif rising_edge(clock) then -上升沿有效 if hold='1' then flash<='1' else flash<='0' if countnum=49 then -計數(shù)到50時計數(shù)器清零 countnum<=0; else

38、countnum<=countnum+1; -正常計數(shù),計脈沖上升沿 end if; end if; end if;end process;process(clock)begin if rising_edge(clock) then if hold='1' then -hold信號有效期間,兩組路燈都為紅燈 reda<='1' redb<='1' greena<='0' greenb<='0' yellowa<='0' yellowb<='0'

39、; else -hold無效期間,系統(tǒng)行為:按照一個計數(shù)周期50s描述路燈的動作 if countnum<=19 then -前20s,a燈為綠 numa<=20-countnum; reda<='0' greena<='1' yellowa<='0' elsif (countnum<=24) then -21到25s,a燈為黃 numa<=25-countnum; reda<='0' greena<='0' yellowa<='1' el

40、se numa<=50-countnum; -26到50s,a燈為紅 reda<='1' greena<='0' yellowa<='0' end if; if countnum<=24 then -0到25s(a燈為綠、黃期間),b燈為紅 numb<=25-countnum; redb<='1' greenb<='0' yellowb<='0' elsif countnum<=44 then -26到45s,b燈為綠 numb<=4

41、5-countnum; redb<='0' greenb<='1' yellowb<='0' else numb<=50-countnum; -46到50s期間,b燈為黃 redb<='0' greenb<='0' yellowb<='1' end if; end if; end if; end process;end;程序說明:控制模塊描述了功能鍵hold和reset的功能;同時對1hz的時鐘進行計數(shù),通過計數(shù)值,對各個時間段內交通信號燈進行描述;給出了下

42、一步用于倒計時的信號numa和numb。2分頻模塊 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity frequency10hz isport (clk20m:in std_logic; clk10hz:out std_logic );end;architecture count of frequency10hz issignal tout:integer range 0 to 999999;signal clk:std_logic;begin process(clk20m) begi

43、n if rising_edge(clk20m) then if tout=999999 then -計數(shù)1000000次,輸出翻轉一次 tout<=0; clk<=not clk; else tout<=tout+1; end if; end if; end process; clk10hz<=clk; end;程序說明:通過一級分頻得到10hz的時鐘。library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity frequency is port (clk10hz

44、:in std_logic; clk1hz:out std_logic ); end; architecture count of frequency is signal tout:integer range 0 to 4; signal clk:std_logic; begin process(clk10hz) begin if rising_edge(clk10hz) then if tout=4 then -計數(shù)5次,輸出翻轉一次,對應10分頻 tout<=0; clk<=not clk; else tout<=tout+1; end if; end if; end p

45、rocess; clk1hz<=clk;end;程序說明:對10hz的時鐘再次分頻得到1hz的時鐘。3.提取顯示值模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenwei isport(clock:in std_logic; numin:in integer range 0 to 25; numa,numb:out integer range 0 to 8);end;architecture fen of fenwei isbegin process(clock) begin if rising_edge(clock) then if numin>=20 then num

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論