版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目錄目錄 引言引言 第一章第一章 緒論緒論 .1 1.1 交通燈現(xiàn)狀與發(fā)展.1 1.2 fpga/cpld 技術(shù)介紹.1 1.3 交通燈的簡介 .3 1.4 本文的研究出發(fā)點和基本內(nèi)容 .3 1.5 本章小結(jié) .4 第二章第二章 總體方案設(shè)計總體方案設(shè)計 .5 2.1 設(shè)計任務(wù)與要求 .5 2.2 交通燈的組成方框圖 .5 2.3 基本工作原理.5 2.4 本章小結(jié).5 第三章第三章 單元電路設(shè)計方法單元電路設(shè)計方法 .7 3.1 時鐘脈沖發(fā)生電路(即分頻電路) .7 3.2 計數(shù)秒數(shù)電路 .7 3.3 倒計時顯示電路 .7 3.4 紅綠燈信號控制電路 .8 3.5 紅綠交通燈控制器頂層電路設(shè)
2、計 .8 3.6 本章小結(jié).9 第四章 基于 fpga/cpld 的十字路口交通燈的設(shè)計 .10 4.1 vhdl 程序設(shè)計 .10 4.1.1 clk_gen 時鐘發(fā)生電路(即分頻電路) .10 4.1.2 traffic_mux 計數(shù)秒數(shù)選擇電路 .12 4.1.3 count_down 倒計時控制電路 .14 4.1.4 traffic_fsm 紅綠燈信號電路 .17 4.2 芯片設(shè)置、編譯、管腳設(shè)置 .22 4.3 仿真 .25 4.3 下載實驗 .29 4.4 本章小結(jié).30 第五章 系統(tǒng)測試 .31 5.1 硬件測試 .31 5.2 軟件測試 .31 5.3 本章小結(jié).32 第六章
3、 結(jié)論與展望 .33 參考文獻(xiàn) .34 致謝 .35 引言引言 隨著社會經(jīng)濟(jì)的發(fā)展,城市交通問題越來越引起人們的關(guān)注。人、車、路三者關(guān) 系的協(xié)調(diào),已成為交通管理部門需要解決的重要問題之一。城市交通控制系統(tǒng)是用于 城市交通數(shù)據(jù)檢測、交通信號燈控制與交通疏導(dǎo)的計算機綜合管理系統(tǒng),它是現(xiàn)代城 市交通監(jiān)控指揮系統(tǒng)中最重要的組成部分。 隨著城市機動車量的不斷增加,許多大城市出現(xiàn)了交通超負(fù)荷運行的情況,因此, 自 80 年代后期,這些城市紛紛修建城市高速道路,在高速道路建設(shè)完成的初期,它們 也曾有效地改善了交通狀況。然而,隨著交通量的快速增長和缺乏對高速道路的系統(tǒng) 研究和控制,高速道路沒有充分發(fā)揮出預(yù)期的
4、作用。而城市高速道路在構(gòu)造上的特點, 也決定了城市高速道路的交通狀況必然受高速道路與普通道路耦合處交通狀況的制約。 所以,如何采用合適的控制方法,最大限制利用好耗費巨資修建的城市高速道路,緩 解主干道與匝道、城區(qū)同周邊地區(qū)的交通擁堵狀況,越來越成為交通運輸管理和城市 規(guī)劃部門亟待解決的主要問題。為此,設(shè)計了交通燈控制系統(tǒng)13。 社會不斷進(jìn)步,技術(shù)也在不斷的發(fā)展。在當(dāng)今的信息技術(shù)時代,交通燈控制系統(tǒng) 的實現(xiàn)可以有多種途徑,可以用標(biāo)準(zhǔn)邏輯器件、可編程程序控制器 plc。單片機等方案 來實現(xiàn)。但是這些控制方法的功能修改及調(diào)試都需要硬件電路的支持,在一定程度上 增加了功能修改及系統(tǒng)調(diào)試的困難14。因此
5、,在設(shè)計中應(yīng)用 eda 技術(shù),應(yīng)用目前廣泛 應(yīng)用的 vhdl 硬件電路描述語言,實現(xiàn)交通燈系統(tǒng)控制器的設(shè)計,利用 maxplus集成 開發(fā)環(huán)境進(jìn)行綜合、仿真,并下載到 cpld 可編程邏輯器件中,完成系統(tǒng)的控制作用。 第一章第一章 緒論緒論 1.1 交通燈現(xiàn)狀與發(fā)展 近年來,隨著我國經(jīng)濟(jì)的發(fā)展,城市的交通擁擠問題日趨嚴(yán)重,因此提高城市路網(wǎng)的 通行能力、實現(xiàn)道路交通的科學(xué)化管理迫在眉睫。傳統(tǒng)的十字路口交通控制燈,通常的 做法是:事先經(jīng)過車輛流量的調(diào)查,運用統(tǒng)計的方法將兩個方向紅綠燈的延時預(yù)先設(shè)置 好。然而,實際上車輛流量的變化往往是不確定的,有的路口在不同的時段甚至可能產(chǎn) 生很大的差異。即使是經(jīng)
6、過長期運行、較適用的方案,仍然會發(fā)生這樣的現(xiàn)象:綠燈方 向幾乎沒有什么車輛,而紅燈方向卻排著長隊等候通過。這種流量變化的偶然性是無法 建立準(zhǔn)確模型的,統(tǒng)計的方法已不能適應(yīng)迅猛發(fā)展的交通現(xiàn)狀,更為現(xiàn)實的需要是能有 一種能夠根據(jù)流量變化情況自適應(yīng)控制的交通燈12。目前,有多種對十字路口交通燈 的改良設(shè)計,有一種用 plc 對道路十字路口交通燈作自適應(yīng)模糊控制的方法,較好地解 決了車輛流量不均衡、不穩(wěn)定的問題。因此,十字路口交通燈控制的設(shè)計還存在非常廣 闊的前景。 目前設(shè)計交通燈的方案有很多,有應(yīng)用 cpld 設(shè)計實現(xiàn)交通信號燈控制器方法;有 應(yīng)用 plc 實現(xiàn)對交通燈控制系統(tǒng)的設(shè)計;有應(yīng)用單片機實
7、現(xiàn)對交通信號燈設(shè)計的方法。 目前,國內(nèi)的交通燈一般設(shè)在十字路門,在醒目位置用紅、綠、黃三種顏色的指示燈。 加上一個倒計時的顯示計時器來控制行車。對于一般情況下的安全行車,車輛分流尚 能發(fā)揮作用,但根據(jù)實際行車過程中出現(xiàn)的情況,還存在以下缺點:1.只能夠進(jìn)行自 動控制,無法根據(jù)實際情況進(jìn)行比較人性化的操作。2兩車道的車輛輪流放行時間相 同,在十字路口,經(jīng)常一個車道為主干道,車輛較多,放行時間應(yīng)該長些;另一車道 為副干道,車輛較少,放行時間應(yīng)該短些。3兩條干道的紅綠時間不能隨時間的改變 而修改。 1.2 fpga/cpld 技術(shù)介紹技術(shù)介紹 當(dāng)今社會是數(shù)字化社會,是數(shù)字集成電路廣泛應(yīng)用的社會。數(shù)字
8、集成電路本身在 不斷地進(jìn)行更新?lián)Q代,它由早期的電子管、晶體管、小中規(guī)模集成電路發(fā)展到超大規(guī) 模集成電路以及許多具有特定功能的專用集成電路4。但是,隨著微電子技術(shù)的發(fā)展, 設(shè)計與制造集成電路的任務(wù)已不完全由半導(dǎo)體廠商來獨立承擔(dān),系統(tǒng)設(shè)計最好是在實 驗室里就能設(shè)計出合適的 asic 芯片,并且立即投入實際應(yīng)用之中,因而出現(xiàn)了現(xiàn)場可 編程邏輯器件(fpga) 。 fpga(現(xiàn)場可編程門陣列)與 cpld(復(fù)雜可編程邏輯器件)都是可編程邏輯器件, 它們是在 pal、gal 等邏輯器件的基礎(chǔ)之上發(fā)展起來的。同以往的 pal、gal 等相比較, fpga/cpld 的規(guī)模比較大,它可以替代幾十甚至幾千塊通
9、用 ic 芯片。這樣的 fpga/cpld 實際上就是一個子系統(tǒng)部件。這種芯片受到世界范圍內(nèi)電子工程設(shè)計人員的 廣泛關(guān)注和普遍歡迎。經(jīng)過了幾十年的發(fā)展,許多公司都開發(fā)出了多種可編程邏輯器 件。比較典型的就是 xilinx 公司的 fpga 器件系列和 alteral 公司的 cpld 器件系列, 它們開發(fā)較早,占有較大的 pld 市場4。 盡管 fpga、cpld 和其他類型 pld 的結(jié)構(gòu)各有其特點和長處,但概括起來,它們是 由三大部分組成的:一個二維的邏輯塊陣列,構(gòu)成了 pld 器件的邏輯組成核心;輸 入/輸出塊;連接邏輯塊的互連資源,連線資源由各種長度的連線線段組成,其中也 有一些可編程
10、的連接開關(guān),它們用于邏輯塊之間、邏輯塊與輸入/輸出塊之間的連接。 對用戶而言,cpld 與 fpga 的內(nèi)部結(jié)構(gòu)稍有不用,但用法一樣,所以多數(shù)情況下不 加以區(qū)分。fpga/cpld 芯片都是特殊的 asic 芯片,它們除了具有 asic 的特點之外還具 有以下幾個優(yōu)點: 1、隨著 vlsi(very large scale ic,超大規(guī)模集成電路)工藝的不斷提高,單一 芯片內(nèi)部可以容納上百萬個晶體管,fpga/cpld 芯片的規(guī)模也越來越大,其單憑邏輯門 數(shù)已達(dá)到上百萬門,它所能實現(xiàn)的功能也越來越強,同時也可以實現(xiàn)系統(tǒng)集成。 2、fpga/cpld 芯片在出場之前都做過百分百的測試,不需要設(shè)計
11、人員承擔(dān)頭片風(fēng) 險和費用,設(shè)計人員只需在自己的實驗室里就可以通過相關(guān)的軟硬件環(huán)境來完成芯片 的最終功能設(shè)計。所以,fpga/cpld 的資金投入小,節(jié)省了許多潛在的花費。 3、用戶可以反復(fù)地編程、擦除、使用或者在外圍電路不懂的情況下用不同軟件就 可實現(xiàn)不同的功能。所以,用 fpga/cpld 試制作樣片能以最快的速度占領(lǐng)市場。 fpga/cpld 軟件包中有各種輸入工具和仿真工具,及版圖設(shè)計工具和編程器等全線產(chǎn)品, 電路設(shè)計人員在很短的時間內(nèi)就可完成電路的輸入、編譯、優(yōu)化、仿真,直至最后芯 片的制作。當(dāng)電路有少量改動時更能現(xiàn)實出 fpga/cpld 的優(yōu)勢。電路設(shè)計人員使用 fpga/cpld
12、 進(jìn)行電路設(shè)計時不需要具備專門的 ic(集成電路)深層次的知識, fpga/cpld 軟件易學(xué)易用,可以使設(shè)計人員更能集中精力進(jìn)行電路設(shè)計,快速將產(chǎn)品推 向市場。 在電子設(shè)計技術(shù)領(lǐng)域,可編程邏輯器件的廣泛應(yīng)用為數(shù)字系統(tǒng)的設(shè)計帶來極大的 靈活性。高集成度、高速和高可靠性是 fpga/cpld 明顯的特點。由于 fpga/cpld 的集 成規(guī)模非常大,可利用先進(jìn)的 eda 工具進(jìn)行電子系統(tǒng)設(shè)計和產(chǎn)品開發(fā),在超高速應(yīng)用 領(lǐng)域和實時測控方面有非常廣闊的應(yīng)用前景??删幊踢壿嬈骷╬ld,programmable logic device)是 20 世紀(jì) 70 年代發(fā)展起來的一種新型器件,他的應(yīng)用和發(fā)展不
13、僅簡 化了電路設(shè)計、降低了成本、提高了系統(tǒng)的可靠性,而且給數(shù)字系統(tǒng)的設(shè)計方式帶來 的了革命性的變化。pld 雛形是 20 世紀(jì) 70 年代中期出現(xiàn)的可編程邏輯陣列 (pla,programmable logic array) ,后來出現(xiàn)了可編程陣列邏輯 pal,它由可編程的 與陣列組成,設(shè)計比較靈活,器件速度快,因而稱為第一個得到普遍應(yīng)用的 pld 器件4。 1.3 交通燈的簡介交通燈的簡介 城市道路交叉口是城市道路網(wǎng)絡(luò)的基本焦點,也是網(wǎng)絡(luò)交通流的瓶頸。目前,大 部分無控制交叉口都存在高峰小時車流混亂、車速緩慢、延誤情況嚴(yán)重、事故多發(fā)、 通行能力和服務(wù)水平低下等問題。特別是隨著城市車流量的快速
14、增長,稱呼四無控制 道路交叉口的交通能力越來越大。因此,做好基于 eda 技術(shù)平臺的交叉口信號控制涉 及是緩解交通阻塞、提高城市道路交叉口車輛通行效率的有效方法。交通信號控制的 目的是為城市道路交叉口(或交通網(wǎng)絡(luò))提供安全可靠和有效的交通流,通常最為單 唱的原則是車輛在交叉口的通過量最大或乘涼在交叉口的延誤最小。 在十字路口,每條道路各有一組紅、黃、綠燈和倒計時顯示器,用以指揮車輛和行 人有序地通行。其中,紅燈(r)亮,表示該道路禁止通行;黃燈(y)亮,表示停車; 綠燈(g)亮,表示可以通行。倒計時顯示器是用來顯示允許通行或禁止通行的時間。 交通燈控制器就是用來自動控制十字路口的交通燈和計時器
15、,指揮車輛和行人安全通 行。這是在正常情況下交通燈所具備的功能,但在我們的日常生活中,交通等還必須 更加人性化,也就是在特殊情況下還能夠根據(jù)實際情況進(jìn)行調(diào)整,或者是轉(zhuǎn)換成人工 指揮。 1.4 本文的研究出發(fā)點和基本內(nèi)容本文的研究出發(fā)點和基本內(nèi)容 交通燈是保障城市交通有序、安全、快速運行的一種有效解決方案,能夠根據(jù)現(xiàn) 代城市的特點設(shè)計適合的交通燈能夠在很大程度上舒緩城市交通的壓力,更好地促進(jìn) 城市經(jīng)濟(jì)的發(fā)展。另一方面,數(shù)字集成電路的飛速發(fā)展以及在機械制造、冶金、化工、 能源等各種行業(yè)運用也使我們看到了集成電路帶來的便利。本文正是將兩者結(jié)合起來 進(jìn)行學(xué)習(xí),通過對交通燈的應(yīng)用更好地學(xué)習(xí)數(shù)字集成電路的
16、相關(guān)知識。 傳統(tǒng)數(shù)字電子技術(shù)的設(shè)計問題, 一般是用若干計數(shù)器、邏輯門、觸發(fā)器等構(gòu)成電 路,元器件眾多,結(jié)果使電路中的接線多、故障率增加、可靠性降低。正是由于傳統(tǒng) 的數(shù)字電路包含了這些缺陷,我們在不斷的進(jìn)行探索,開發(fā)新的技術(shù)。 eda (elect rical design a u tom at ion) 技術(shù)的發(fā)展, 在線可編程邏輯器件( in system p rogram - p rogramm ab le logic device 簡稱isp- pld )的出現(xiàn), 使 實驗室中制作專用集成電路成為可能。fpga/cpld芯片的種類很多,內(nèi)部結(jié)構(gòu)也不同, 但共同的特點是集成度高、使用方便。
17、用專用軟件對芯片“下載”所形成的電路,就是 一片專用集成電路,由于不存在人工接線的問題,所以故障率低、可靠性好。 通過本課程的研究,我們將更好地了解到各大城市當(dāng)今時代在交通燈方面的基本 設(shè)計方向以及存在的不足之處,同時,也讓我們看到了數(shù)字集成電路在當(dāng)今社會的一 個發(fā)展和了解到fpga/cpld芯片基本的應(yīng)用方法以及需要掌握的知識,為以后的運 用打下堅實的基礎(chǔ)。 1.5 本章小結(jié)本章小結(jié) 在本章中,通過對交通燈的現(xiàn)狀與發(fā)展的了解,可以看到現(xiàn)有交通燈的功能、所 涉及到的一些技術(shù)以及存在的一些不足、交通燈的簡介以及 fpga/cpld 技術(shù)的介紹等 內(nèi)容,我們可以對本課題確定好設(shè)計方向以及所使用到的
18、技術(shù)工具。 第二章第二章 總體方案設(shè)計總體方案設(shè)計 2.1 設(shè)計任務(wù)與要求設(shè)計任務(wù)與要求 1、在十字路口的兩個方向上各設(shè)一組紅、黃、綠燈,顯示順序為其中一方向(東西方 向)是綠燈、黃燈、紅燈;另一方向是紅燈、綠燈、黃燈14。 2、設(shè)置一組數(shù)碼管,以倒計時的方式顯示允許通行或禁止通行的時間,其中綠燈、黃 燈、紅燈的持續(xù)時間分別是 20s、5s、25s14。 3、當(dāng)各條路上任意一條出現(xiàn)特殊情況時,如當(dāng)消防車、救護(hù)車或其他需要優(yōu)先放行的 車輛通過時,可以按下 a_m 按鈕進(jìn)去人工指揮狀態(tài),倒計時停止。當(dāng)特殊運行狀態(tài)結(jié) 束時后,控制器恢復(fù)原來狀態(tài),繼續(xù)正常運行14。 2.2 交通燈的組成方框圖交通燈的
19、組成方框圖 按照自頂向下的層次化設(shè)計方法,整個系統(tǒng)可分為 4 個模塊,分頻電路、計數(shù)秒 數(shù)電路、倒計時控制電路、信號控制電路,其系統(tǒng)組成方框圖如圖 2-1 所示。 2.3基本工作原理基本工作原理 根據(jù)要求可以畫出交通燈規(guī)律的狀態(tài)轉(zhuǎn)換表,見表 2-2.由表可知,共有 4 個狀態(tài), 可以利用狀態(tài)機來實現(xiàn)各種狀態(tài)之間的轉(zhuǎn)換。 表表 2-2 交通燈控制器的狀態(tài)轉(zhuǎn)換表交通燈控制器的狀態(tài)轉(zhuǎn)換表 狀態(tài)主干道支干道時間 st1綠燈亮紅燈亮20s st2黃燈亮紅燈亮5s st3紅燈亮綠燈亮20s st4紅燈亮黃燈亮5s 2.4 本章小結(jié)本章小結(jié) eda 技術(shù)的基本設(shè)計方法有電路級設(shè)計方法和系統(tǒng)級設(shè)計方法。電路級
20、設(shè)計方法 已經(jīng)不能適應(yīng)新的形勢,本系統(tǒng)采用的是系統(tǒng)級層次設(shè)計方法,對整個系統(tǒng)進(jìn)行方案 設(shè)計和功能劃分,系統(tǒng)的關(guān)鍵電路用一片 fpga 芯片實現(xiàn),首先用 vhdl 語言編寫各 個功能模塊程序,最后通過綜合器和適配器生成最終的目標(biāo)器件,然后用頂層原理圖 將各功能模塊連接起來。 計數(shù)秒數(shù)電路 traffic_mux 1khz 倒計時控制電路 count_down 計 數(shù) 值 紅、黃、綠發(fā) 光二極管 分頻電路 clk_gen 信號控制電路 traffic_fsm 250hz 狀態(tài)信 號、控 制信號 1hz 轉(zhuǎn) 態(tài) 觸 發(fā) 信 號 手 動 切 換 按 鈕 1hz 七段數(shù)碼管 圖 2-1 系統(tǒng)組成方框圖
21、第三章第三章 單元電路設(shè)計方法單元電路設(shè)計方法 3.1 時鐘脈沖發(fā)生電路(即分頻電路)時鐘脈沖發(fā)生電路(即分頻電路) 在紅綠燈交通信號系統(tǒng)中,大多數(shù)的情況是通過自動控制的方式指揮交通的.因此,為 了避免意外事件的發(fā)生,電路必須給一個穩(wěn)定的時鐘(clock)才能讓系統(tǒng)正常運作.但為了 配合高峰時段,防止交通擁擠,有時也必須使用手動控制,即讓交警能夠順利地指揮交通。 clk_gen 電路最主要的功能是產(chǎn)生一些額外的輸出信號,并將其使用做后續(xù)幾個電路的使 能(enable)控制與同步信號處理1。模塊如圖 3-1 所示: 圖 3-1 時鐘脈沖發(fā)生電路模塊圖 3.2 計數(shù)秒數(shù)電路計數(shù)秒數(shù)電路 當(dāng)過馬路的
22、時候,綠燈的一方有時會附加一個顯示器告訴行人,目前還剩下幾秒信號 燈就變成紅燈.因此,traffic_mux 電路最主要的功能就是負(fù)責(zé)輸出顯示器需要的值(即倒 數(shù)的秒數(shù)值),作為倒數(shù)顯示器電路(count_down circuit)的計數(shù)秒數(shù)1。模塊如圖 3-2 所 示: 圖 3-2 計數(shù)秒數(shù)電路模塊圖 3.3 倒計時顯示電路倒計時顯示電路 當(dāng)過馬路的時候,綠燈的一方有時會附加一個顯示器告訴行人,目前還剩下幾秒信號 燈就變成紅燈.因此, count_down 電路最主要的功能是負(fù)責(zé)接收 traffic_mux 電路輸出的 值(即倒數(shù)的秒值),然后將其轉(zhuǎn)換成 bcd 碼,利用七段顯示器顯示出來,
23、讓行人能清楚地 知道再過多久就會變成紅燈1。模塊如圖 3-3 所示 圖 3-3 倒計時顯示電路模塊圖 3.4 紅綠燈信號控制電路紅綠燈信號控制電路 在紅綠燈交通信號系統(tǒng)中,大多數(shù)的情況是通過自動控制的方式指揮交通的.但為了 配合高峰時段,防止交通擁擠,有時還必須使用手動控制,即讓交警自行指揮交通.因此, traffic_fsm 電路除了負(fù)責(zé)監(jiān)控路口紅綠燈之外,最主要的功能就是能夠利用開關(guān)來切換 手動與自動的模式,讓交警能夠通過外部輸入的方式來控制紅綠燈交通信號系統(tǒng)的運作 1。模塊如圖 3-4 所示: 圖 3-4 紅綠燈信號控制電路模塊圖 3.5 紅綠交通燈控制器頂層電路設(shè)計紅綠交通燈控制器頂層
24、電路設(shè)計 將紅綠燈交通信號系統(tǒng)中的 4 個子電路(clk_gen 時鐘發(fā)生電路(即分頻電路)、 traffic_mux 計數(shù)秒數(shù)選擇電路、count_down 倒計時控制電路、traffic_fsm 紅綠燈信號 電路)放進(jìn)自己定義的程序包(package)中。將所有的子電路全部連接起來,進(jìn)行時序分 析1。頂層電路原理圖如圖 3-5 所示: 圖 3-5 紅綠交通燈控制器電路原理圖 3.6 本章小結(jié)本章小結(jié) 本課題設(shè)計的紅路燈交通信號系統(tǒng)為模擬實際的十字路口交通信號燈。引進(jìn)電路 模塊合成的概念:將紅綠燈交通信號系統(tǒng)劃分成若干個小電路里,然后將各個模塊電 路在頂層模塊相連接。好處是可以增加程序的調(diào)試
25、速度,同時也能夠?qū)⒐ぷ骷?xì)分(這 種概念在以后編寫較大型的 fpga 電路設(shè)計程序時,是非常重要且有用的) ,以提高編 程速度1。 第四章第四章 基于基于 fpga/cpld 的十字路口交通燈的設(shè)計的十字路口交通燈的設(shè)計 4.1 vhdl 程序設(shè)計程序設(shè)計 4.1.1 clk_genclk_gen 時鐘發(fā)生電路時鐘發(fā)生電路( (即分頻電路即分頻電路) ) 1、系統(tǒng)輸入信號: clk:由外接信號發(fā)生路提供 1khz 的時鐘信號; reset:系統(tǒng)內(nèi)部自復(fù)位信號1; 2、系統(tǒng)輸出信號: ena_scan:將外部的 clk 信號進(jìn)行分頻(此電路設(shè)計除 4)處理; ena_1hz: 產(chǎn)生每秒 一個脈沖(
26、pslse)的信號; flash_1hz;產(chǎn)生每秒一個脈沖的時鐘信號,cpld 設(shè)計環(huán)境中,對所有 vhdl 程序 都加入下列幾行有關(guān)庫和程庫包的調(diào)用1。 3、電路程序代碼如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; -input and output pins declaraction a-library declaration library ieee; use ieee.std_logic_1164.all; use
27、 ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; -input and output pins declaraction entity clk_gen is port(reset: in std_logic; clk:in std_logic; ena_scan:out std_logic; ena_1hz:out std_logic; flash_1hz: out std_logic); end; architecture behavior of clk_gen is constant scan_bit: positive
28、 := 2; constant scan_val: positive := 4; constant two_hz_bit: positive := 7; constant two_hz_val: positive := 125; signal clk_scan_ff:std_logic_vector(scan_bit-1 downto 0); signal clk_2hz_ff:std_logic_vector(two_hz_bit-1 downto 0); signal ena_s,ena_one,ena_two:std_logic; begin -to generate 250hz ena
29、_s via dividing 1khz clock by 4 scan:process(reset,clk) begin if reset=1 then clk_scan_ff=00; ena_s=scan_val-1 then clk_scan_ff=00; ena_s = 1; else clk_scan_ff=clk_scan_ff+1; ena_s = 0; end if; end if; end process; ena_scan = ena_s; -to generate 1hz ena_1hz and flash_1hz via dividing 1khz clock by t
30、wo_hz:process(reset,clk,ena_s) begin if reset=1 then ena_one=0; ena_two=0; clk_2hz_ff=two_hz_val-1 then clk_2hz_ff=0000000; ena_two = 1; ena_one = not ena_one; else clk_2hz_ff=clk_2hz_ff+1; ena_two = 0; ena_one = ena_one; end if; end if; end if; end process; ena_1hz = ena_one and ena_two and ena_s;
31、flash_1hz = ena_one; end behavior; 4.1.2 traffic_muxtraffic_mux 計數(shù)秒數(shù)選擇電路計數(shù)秒數(shù)選擇電路 1、系統(tǒng)輸入信號: clk:由外接信號發(fā)生路提供 1khz 的時鐘信號; reset:系統(tǒng)內(nèi)部自復(fù)位信號; ena_scan:接收由外部的 clk 信號進(jìn)行分頻提供的 250hz 的時鐘脈沖信號; recount:接收由 traffi_fsm 電路產(chǎn)生的重新計數(shù)的使能控制信號; sign_state:接收由 traffic_fsm 電路產(chǎn)生的狀態(tài)信號(共 2b,4 中狀態(tài)) 2、系統(tǒng)輸出信號: load:負(fù)責(zé)產(chǎn)生計數(shù)器所需的計數(shù)數(shù)值(
32、共 8b,可輸入數(shù)值范圍 0255) 3、電路程序代碼如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity traffic_mux is port(reset: in std_logic; clk:in std_logic; ena_scan:in std_logic; recount:in std_logic; sign_state: in std_logic_vector(1 downto 0); load: o
33、ut std_logic_vector(7 downto 0); end; -define the signal_structure and flow of the device architecture behavior of traffic_mux is constant yellow0_time: integer := 5; constant green0_time: integer := 20; constant yellow1_time: integer := 5; constant green1_time : integer := 20; begin load_time:proce
34、ss(reset,clk) begin if reset=1 then load load load load load = conv_std_logic_vector(yellow1_time,8); end case; end if; end if; end process; end behavior; 4.1.3 count_downcount_down 倒計時控制電路倒計時控制電路 1、系統(tǒng)輸入信號:、系統(tǒng)輸入信號: clk:由外接信號發(fā)生路提供 1khz 的時鐘信號; reset:系統(tǒng)內(nèi)部自復(fù)位信號; ena_1hz:接收由 clk_gen 電路所提供的 1hz 的時鐘脈沖信號; r
35、ecount:重新計數(shù)的使能控制信號; load:負(fù)責(zé)產(chǎn)生計數(shù)器所需的計數(shù)數(shù)值(共 8b,可輸入數(shù)值范圍 0255) 2、系統(tǒng)輸出信號:、系統(tǒng)輸出信號: seg7:負(fù)責(zé)將計數(shù)數(shù)值轉(zhuǎn)換成 bcd 碼,并利用七段顯示器顯示 next_state:當(dāng)計數(shù)器計時完畢時,負(fù)責(zé)產(chǎn)生一個脈沖信號,作為轉(zhuǎn)態(tài)觸發(fā)信號。 3、電路程序代碼如下:、電路程序代碼如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity count_down is
36、 port(reset: in std_logic; clk:in std_logic; ena_1hz:in std_logic; recount:in std_logic; load: in std_logic_vector(7 downto 0); seg7:out std_logic_vector(15 downto 0); next_state: out std_logic); end; architecture behavior of count_down is signal cnt_ff:std_logic_vector(7 downto 0); begin count:proc
37、ess(clk,reset) begin if (reset=1) then cnt_ff=00000000; seg7=0000000000000000; elsif (clkevent and clk=1) then if ena_1hz=1 then if (recount=1) then cnt_ff=load-1; else cnt_ffseg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(1
38、5 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)
39、seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)seg7(15 downto 0)=0011111100111111; end case; end if; end process; next_state = 1 when cnt_ff=1 else 0; end behavior; 4.1.4 traffic_fsmtraffic_fsm 紅綠燈信號電路紅綠燈信號電路 1、系統(tǒng)輸入信號:、系統(tǒng)輸入信號: clk:由外接信號發(fā)生路提供 1khz 的時鐘信號; reset:系統(tǒng)
40、內(nèi)部自復(fù)位信號; ena_scan:接收由外部的 clk 信號進(jìn)行分頻提供的 250hz 的時鐘脈沖信號; ena_1hz:接收由 clk_gen 電路所提供的 1hz 的時鐘脈沖信號; flash_1hz:接收由外部的 clk 信號進(jìn)行分頻提供的 250hz 的時鐘脈沖信號; a_m:手動、自動切換按鈕(1:自動,0:手動) ; st_butt:紅綠等狀態(tài)切換鍵(按一次就切換一個狀態(tài)) (使用在手動模式下) ; 2、系統(tǒng)輸出信號:、系統(tǒng)輸出信號: recount:產(chǎn)生重新計數(shù)的輸出使能控制信號; sign_state:產(chǎn)生的輸出狀態(tài)信號(共 2b,4 中狀態(tài)) ; red:負(fù)責(zé)紅燈的顯示(共
41、 2b,4 中狀態(tài)) ; green:負(fù)責(zé)綠燈的顯示(共 2b,4 中狀態(tài)) ; yellow:負(fù)責(zé)黃燈的顯示(共 2b,4 中狀態(tài)) ; 3、電路程序代碼如下:、電路程序代碼如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity traffic_fsm is port(reset:in std_logic; clk:in std_logic; ena_scan:in std_logic; ena_1hz:in std
42、_logic; flash_1hz:in std_logic; a_m:in std_logic; st_butt:in std_logic; next_state: in std_logic; recount: out std_logic; sign_state: out std_logic_vector(1 downto 0); red: out std_logic_vector(1 downto 0); green: out std_logic_vector(1 downto 0); yellow: out std_logic_vector(1 downto 0); end; archi
43、tecture behavior of traffic_fsm is type sreg0_type is (r0g1, r0y1, g0r1, y0r1, y0y1, y0g1, g0y1, r0r1); signal state: sreg0_type; signal st_transfer: std_logic; signal light: std_logic_vector(5 downto 0); - r(10)y(10)g(10) begin rebounce:process (reset,clk,ena_scan,st_butt) variable rebn_ff: std_log
44、ic_vector(5 downto 0); begin if (st_butt=1 or reset=1) then rebn_ff := 111111; st_transfer = 3) then rebn_ff := rebn_ff-1; st_transfer=0; elsif (rebn_ff=2) then rebn_ff := rebn_ff-1; st_transfer =1; else rebn_ff := rebn_ff; st_transfer =0; end if; end if; end if; end process; fsm: process (clk,ena_1
45、hz,reset) begin if (reset=1) then state=r0g1; - red=2b01; green=2b10; yellow=2b00; sign_state=01; recount - now state: red0 on green1 on if (a_m=1 and ena_1hz=1) then if (next_state = 1) then recount=1; state=r0y1; sign_state = 01; else recount=0; state=r0g1; -red=2b01; green=2b10; yellow=2b00; end
46、if; elsif (a_m=0 and ena_scan=1) then if (st_transfer=0) then - 0: unchange 1:transfer light state recount=1; state=r0g1; else recount=1; state=r0y1; sign_state - now state: red0 on yellow1 flash if (a_m=1 and ena_1hz=1) then if (next_state = 1) then recount=1; state=g0r1; sign_state = 10; else reco
47、unt=0; state=r0y1; - red=2b01; green=2b00; yellow=2b10; end if; elsif (a_m=0 and ena_scan=1) then if (st_transfer=0) then - 0: unchange 1:transfer light state recount=1; state=r0y1; else recount=1; state=g0r1; sign_state - now state: green0 on red1 on if (a_m=1 and ena_1hz=1) then if (next_state = 1
48、) then recount=1; state=y0r1; sign_state = 11; else recount=0; state=g0r1; - red=2b10; green=2b01; yellow=2b00; end if; elsif (a_m=0 and ena_scan=1) then if (st_transfer=0) then - 0: unchange 1:transfer light state recount=1; state=g0r1; else recount=1; state=y0r1; sign_state - now state: green0 on
49、red1 on if (a_m=1 and ena_1hz=1) then if (next_state = 1) then recount=1; state=r0g1; sign_state = 00; else recount=0; state=y0r1; - red=2b10; green=2b00; yellow=2b01; end if; elsif (a_m=0 and ena_scan=1) then if (st_transfer=0) then - 0: unchange 1:transfer light state recount=1; state=y0r1; else r
50、ecount=1; state=r0g1; sign_state state=r0g1; recount=0; sign_state = 00; end case; end if; end if; end process; - light: r(10)y(10)g(10) light = 010010 when (state=r0g1) else 011000 when (state=r0y1) else 100001 when (state=g0r1) else 100100 when (state=y0r1) else 110000; red = light(5 downto 4); ye
51、llow = light(3 downto 2) and (flash_1hz green = light(1 downto 0); end behavior; 4.2 芯片設(shè)置、編譯、管腳設(shè)置芯片設(shè)置、編譯、管腳設(shè)置 目前世界上有幾十家生產(chǎn) cpld/fpga 的公司,最大的三家是 altera、xilinx 和 lattice-vantis。這次我們的設(shè)計采用的是 altera 公司的產(chǎn)品(max7000s 系列的 epm7128slc84-15)以及他們的配套 eda 軟件 max+plus。 1、指定設(shè)計的器件:、指定設(shè)計的器件: 在主菜單 assign 子菜單中選擇 device,出
52、現(xiàn)如圖 4-1 所示的對話框。首先選擇 device family,然后再確定我們的目標(biāo)器件,在出現(xiàn)的對話框中選擇 max7000s 系列 的 epm7128slc84-15 作為目標(biāo)器件。 圖 4-1 指定目標(biāo)器件 2、編譯:、編譯: 在主菜單的 max+plus中選擇 complier,出現(xiàn)編譯器窗口。此時可以在菜單 processing 中選擇 function snf extractor 或 time snf extractor,前者用于功能仿真, 后者用于時序仿真,因此出現(xiàn)選擇 function snf extractor,如圖 4-2 所示。 圖 4-2 編譯 單擊 start 按
53、鈕開始編譯,如果出錯會有錯誤提示;否則會有信息窗口提示編譯成功, 如圖 4-3 所示。 圖 4-3 編譯信息提示 3、管腳設(shè)置:、管腳設(shè)置: 在主菜單 assign 子菜單中選擇 pin/location/chip,在出現(xiàn)的如圖 4-4 對話框中的 node name 欄中用鍵盤輸入端口名,如 reset、seg70 等,如果輸入的端口名正確,在右 側(cè)的 pin type 欄將顯示該信號的屬性;在左側(cè)的 pin 欄中,用鍵盤輸入該信號對應(yīng)的 引腳編號,如 17、30 等,然后按下面的 add 按鈕,用同樣的方法將其他引腳也鎖定到 對應(yīng)的引腳上,最后按下 ok 按鈕即可完成在彈出的對話框中對所有
54、引腳的設(shè)置。 圖 4-4 引腳鎖定 分配完引腳后,必須再次編譯。這次的編譯必須是用于時序仿真的 time snf extractor,而不能是用于功能仿真的 function snf extractor。編譯時的窗口如圖 4-5 所 示: 圖 4-5 重新編譯 此時的編譯窗口比之前多了以下幾項:logic synthesizer(邏輯綜合器) ; partitioner(分割器) ;fitter(適配器) ;assembler(裝配器) 。另外仿真器網(wǎng)表 文件生成器也由之前的 function snf extractor 變成 time snf extractor。 綜合器對 vhdl 代碼進(jìn)
55、行綜合優(yōu)化處理,生成門級描述的網(wǎng)表文件,這是將 vhdl 語言描述轉(zhuǎn)化為硬件電路的關(guān)鍵步驟。 分割器的作用是:如果器件在編譯時尚未選擇目標(biāo)器件,那么分割器會自動選擇 合適的器件;如果項目對硬件資源要求過多而使目標(biāo)器件不滿足要求,那么分割器將 會把邏輯綜合的結(jié)果分成幾部分,便于用戶采取芯片級聯(lián)的方法實現(xiàn)設(shè)計。 適配器將綜合后的網(wǎng)表文件針對某一具體的目標(biāo)器件進(jìn)行路基映射操作,包括底 層器件配置、邏輯分割、邏輯優(yōu)化、布局布線等。 裝配器功能塊的作用是將適配器輸出的文件,根據(jù)不同的目標(biāo)器件、不同的配置 rom 產(chǎn)生多種格式的編程/配置文件,用于 pld 器件或 rom 用的是后綴為 pof 的編 程文
56、件(編程目標(biāo)文件) 。 4.3 仿真仿真 1、打開波形編輯器中的、打開波形編輯器中的“輸入節(jié)點輸入節(jié)點”對話框?qū)υ捒?在主菜單中的 max+plus子菜單中選擇 waveform editor ,打開波形編輯器。然后在 node 菜單中選擇 enter nodes from snf,如圖 4-6 所示。 圖 4-6 輸入節(jié)點 2、選擇要觀察的節(jié)點、選擇要觀察的節(jié)點 圖 4-7 選擇觀察節(jié)點 在如圖 4-7 所示的對話框中,單擊右上角的 list 按鈕,在左邊的 available node &groups 中就會出現(xiàn)與左下角的 type 對應(yīng)的節(jié)點。選擇所需觀測的節(jié)點,然后單節(jié) “=”,這些節(jié)
57、點就會出現(xiàn)在右邊的的 selected nodes &groups 中,單擊 ok,選擇 的節(jié)點波形就會出現(xiàn)在波形編輯器中,如圖 4-8 所示: 圖:4-8 波形編輯 3、對、對 clockclock 進(jìn)行賦值進(jìn)行賦值 單擊節(jié)點后,整個節(jié)點信號會反白顯示;再單擊左邊的工具欄中的 clock 賦值工具, 修改時鐘初始值和實際時鐘周期倍數(shù)等值。這里將時鐘設(shè)為 160ns 的周期性信號。 4、進(jìn)行仿真、進(jìn)行仿真 先將波形存盤,然后調(diào)用 max+plus菜單下的 simulator,單擊 start 開始仿真, 下面分別給出四個子電路的仿真電路圖。 時鐘發(fā)生電路時鐘發(fā)生電路 圖 4-9 圖 4-9 是
58、時鐘發(fā)生電路的仿真圖:假如 reset=0 且 clk 為上升沿觸發(fā)時,當(dāng) clk_scan_ff 的值大于等于 3,則令 ena_s=1, clk_scan_ff=0;假如 reset=0 且 clk 為 上升沿觸發(fā)時,當(dāng) clk_scan_ff 的值小于 3 則令 ena_s=0,clk_scan_ff= clk_scan_ff+1,也就是實現(xiàn)了時鐘的 4 分頻1。 計數(shù)秒數(shù)選擇電路計數(shù)秒數(shù)選擇電路 圖 4-10 是計數(shù)電路的仿真圖,從圖中我們可以看到:假如 reset=0,clk 為上升 沿觸發(fā),且 ena_s 與 recount 為 1 時,當(dāng) sign_state=00,則將 gre
59、en0_time 的數(shù)值賦 給 load,此時 load=(20)10;假如 reset=0,clk 為上升沿觸發(fā),且 ena_s 與 recount 為 1 時,當(dāng) sign_state=01,則將 yellow0_time 的數(shù)值賦給 load,此時 load=(5)10;假如 reset=0,clk 為上升沿觸發(fā),且 ena_s 與 recount 為 1 時,當(dāng) sign_state=10,則將 yellow0_time 的數(shù)值賦給 load,此時 load=(20)10;假如 reset=0,clk 為上升沿觸發(fā),且 ena_s 與 recount 為 1 時,當(dāng) sign_stat
60、e=11,則將 yellow0_time 的數(shù)值賦給 load,此時 load=(5)10; 圖 4-10 倒計時控制電路倒計時控制電路 如圖 4-11 所示,假如 reset=0,clk 為上升沿觸發(fā),cnt_scan 為 1,recount 為 0 時,cnt_ff 減 1;假如 reset=0,clk 為上升沿觸發(fā) cnt_ff 會被轉(zhuǎn)換成整數(shù)型。例如: cnt_ff=(0d)16,轉(zhuǎn)換成整數(shù)之后 cnt_ff=(13)10,此時 case 對應(yīng)狀態(tài) 13,而 seg7(15down0)被設(shè)置為“0000011001001111” 1。 圖 4-11 4.3 下載實驗下載實驗 cpld
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)學(xué)教育的道德價值與社會責(zé)任
- 二零二五年度新能源船舶動力系統(tǒng)研發(fā)與股權(quán)置換協(xié)議3篇
- 個人贖樓融資擔(dān)保合同(2024年修訂)3篇
- 創(chuàng)新思維的推廣與普及在科技發(fā)展中的作用
- 2025版學(xué)校醫(yī)務(wù)室緊急救援預(yù)案與協(xié)同合作合同
- 二零二五年度高科技企業(yè)孵化器場地出租協(xié)議示范文本2篇
- 融合媒體的商業(yè)模式變革與創(chuàng)新思維
- 2025版智慧消防及通風(fēng)系統(tǒng)施工與運營合同3篇
- 二零二五年度特色餐飲品牌特許經(jīng)營合作協(xié)議2篇
- 二零二五年度海外農(nóng)產(chǎn)品銷售代理及供應(yīng)鏈管理合同2篇
- 2024版《建設(shè)工程開工、停工、復(fù)工安全管理臺賬表格(流程圖、申請表、報審表、考核表、通知單等)》模版
- 2024年廣州市高三一模普通高中畢業(yè)班高三綜合測試一 物理試卷(含答案)
- 部編版《道德與法治》六年級下冊教材分析萬永霞
- 粘液腺肺癌病理報告
- 酒店人防管理制度
- 油田酸化工藝技術(shù)
- 上海高考英語詞匯手冊列表
- 移動商務(wù)內(nèi)容運營(吳洪貴)任務(wù)五 其他內(nèi)容類型的生產(chǎn)
- 上海石油化工股份有限公司6181乙二醇裝置爆炸事故調(diào)查報告
- 例說相機誘導(dǎo)在語文教學(xué)中的運用 相機誘導(dǎo)
- 浙江省紹興市2023年中考科學(xué)試題(word版-含答案)
評論
0/150
提交評論