版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 1 EDA技術(shù)及VHDL語言介紹</p><p><b> 1.1 概述</b></p><p> EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)縮寫,是90年代初從CAD(計(jì)算機(jī)輔助設(shè)計(jì))、CAM(計(jì)算機(jī)輔助制造)、CAT(計(jì)算機(jī)輔助測(cè)試)和CAE(計(jì)算機(jī)輔助工程)的概念發(fā)展而來的。EDA技術(shù)是以計(jì)算機(jī)為
2、工具,根據(jù)硬件描述語言HDL( Hardware Description language)完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合及優(yōu)化、布局布線、仿真以及對(duì)于特定目標(biāo)芯片的適配編譯和編程下載等工作。典型的EDA工具中必須包含兩個(gè)特殊的軟件包,即綜合器和適配器。綜合器的功能就是將設(shè)計(jì)者在EDA平臺(tái)上完成的針對(duì)某個(gè)系統(tǒng)項(xiàng)目的HDL、原理圖或狀態(tài)圖形描述,針對(duì)給定的硬件系統(tǒng)組件,進(jìn)行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得我們欲實(shí)現(xiàn)功
3、能的描述文件。綜合器在工作前,必須給定所要實(shí)現(xiàn)的硬件結(jié)構(gòu)參數(shù),它的功能就是將軟件描述與給定的硬件結(jié)構(gòu)用一定的方式聯(lián)系起來。也就是說,綜合器是軟件描述與硬件實(shí)現(xiàn)的一座橋梁。綜合過程就是將電路的高級(jí)語言描述轉(zhuǎn)換低級(jí)的、可與目標(biāo)器件FPGA/CPLD相映射的網(wǎng)表文件。 適配器的功能是將由綜合器產(chǎn)生的王表文件配置與</p><p><b> 1.2 EDA技術(shù)</b></p>
4、<p> 1.2.1 EDA技術(shù)的發(fā)展與應(yīng)用</p><p> 電子設(shè)計(jì)技術(shù)的核心就是EDA技術(shù),EDA是指以計(jì)算機(jī)為工作平臺(tái),融合應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化技術(shù)最新成果而研制成的電子CAD通用軟件包,主要能輔助進(jìn)行三方面的設(shè)計(jì)工作,即IC設(shè)計(jì)、電子電路設(shè)計(jì)和PCB設(shè)計(jì)。EDA技術(shù)已有30年的發(fā)展歷程,大致可分為三個(gè)階段。70年代為計(jì)算機(jī)輔助設(shè)計(jì)(CAD)階段,人們開始用計(jì)算機(jī)輔助進(jìn)行IC版
5、圖編輯、PCB布局布線,取代了手工操作。80年代為計(jì)算機(jī)輔助工程(CAE)階段。與CAD相比,CAE除了有純粹的圖形繪制功能外,又增加了電路功能設(shè)計(jì)和結(jié)構(gòu)設(shè)計(jì),并且通過電氣連接網(wǎng)絡(luò)表將兩者結(jié)合在一起,實(shí)現(xiàn)了工程設(shè)計(jì)。CAE的主要功能是:原理圖輸入,邏輯仿真,電路分析,自動(dòng)布局布線,PCB后分析。90年代為電子系統(tǒng)設(shè)計(jì)自動(dòng)化(EDA)階段。</p><p> 1.2.2 EDA技術(shù)的基本特征</p>
6、<p> EDA代表了當(dāng)今電子設(shè)計(jì)技術(shù)的最新發(fā)展方向,它的基本特征是:設(shè)計(jì)人員按照“自頂向下”的設(shè)計(jì)方法,對(duì)整個(gè)系統(tǒng)進(jìn)行方案設(shè)計(jì)和功能劃分,系統(tǒng)的關(guān)鍵電路用一片或幾片專用集成電路(ASIC)實(shí)現(xiàn),然后采用硬件描述語言(HDL)完成系統(tǒng)行為級(jí)設(shè)計(jì),最后通過綜合器和適配器生成最終的目標(biāo)器件,這樣的設(shè)計(jì)方法被稱為高層次的電子設(shè)計(jì)方法。下面介紹與EDA基本特征有關(guān)的幾個(gè)概念?! 〉谝?,“自頂向下”的設(shè)計(jì)方法10年前,電子設(shè)計(jì)的基
7、本思路還是選用標(biāo)準(zhǔn)集成電路“自底向上”地構(gòu)造出一個(gè)新的系統(tǒng),這樣的設(shè)計(jì)方法就如同一磚一瓦建造金字塔,不僅效率低、成本高而且容易出錯(cuò)?! 「邔哟卧O(shè)計(jì)是一種“自頂向下”的全新設(shè)計(jì)方法,這種設(shè)計(jì)方法首先從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能方框圖的劃分和結(jié)構(gòu)設(shè)計(jì)。在方框圖一級(jí)進(jìn)行仿真、糾錯(cuò),并用硬件描述語言對(duì)高層次的系統(tǒng)行為進(jìn)行描述,在系統(tǒng)一級(jí)進(jìn)行驗(yàn)證。然后,用綜合優(yōu)化工具生成具體門電路的網(wǎng)絡(luò)表,其對(duì)應(yīng)的物理實(shí)現(xiàn)級(jí)可以是印刷電路板或?qū)S眉呻娐?。?/p>
8、于設(shè)計(jì)的主要仿真和調(diào)試過程是在高層次上完成的,這既有利于早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)上的錯(cuò)誤,避免設(shè)計(jì)工作的浪費(fèi),又減少了邏輯功能仿真的工作量,提高了設(shè)計(jì)的</p><p> 1.2.3 EDA技術(shù)的基本設(shè)計(jì)方法</p><p> EDA技術(shù)的每一次進(jìn)步,都引起了設(shè)計(jì)層次上的一次飛躍,物理級(jí)設(shè)計(jì)主要指IC版圖設(shè)計(jì),一般由半導(dǎo)體廠家完成,對(duì)電子工程師沒有太大的意義,因此本文重點(diǎn)介紹電路級(jí)設(shè)計(jì)和系統(tǒng)級(jí)
9、設(shè)計(jì)。</p><p> 第一,電路級(jí)設(shè)計(jì)電路級(jí)設(shè)計(jì)工作流程:電子工程師接受系統(tǒng)設(shè)計(jì)任務(wù),首先確定設(shè)計(jì)方案,并選擇能實(shí)現(xiàn)該方案的合適元器件,然后根據(jù)具體的元器件設(shè)計(jì)電路原理圖。接著進(jìn)行第一次仿真,其中包括數(shù)字電路的邏輯模擬、故障分析,模擬電路的交直流分析、瞬態(tài)分析。在進(jìn)行系統(tǒng)仿真時(shí),必須要有元件模型庫(kù)的支持,計(jì)算機(jī)上模擬的輸入輸出波形代替了實(shí)際電路調(diào)試中的信號(hào)源和示波器。這一次仿真主要是檢驗(yàn)設(shè)計(jì)方案在功能方面的
10、正確性。仿真通過后,根據(jù)原理圖產(chǎn)生的電氣連接網(wǎng)絡(luò)表進(jìn)行PCB板的自動(dòng)布局布線。在制作PCB板之前還可以進(jìn)行PCB后分析,其中包括熱分析、噪聲及竄擾分析、電磁兼容分析、可靠性分析等,并可將分析后的結(jié)果參數(shù)反標(biāo)回電路圖,進(jìn)行第二次仿真,也稱為后仿真。后仿真主要是檢驗(yàn)PCB板在實(shí)際工作環(huán)境中的可行性。 由此可見,電路級(jí)的EDA技術(shù)使電子工程師在實(shí)際的電子系統(tǒng)產(chǎn)生前,就可以全面地了解系統(tǒng)的功能特性和物理特性,從而將開發(fā)風(fēng)險(xiǎn)消滅在設(shè)計(jì)階段,縮
11、短了開發(fā)時(shí)間,降低了開發(fā)成本?! 〉诙到y(tǒng)級(jí)設(shè)計(jì)進(jìn)入90年代以來,電子信息類產(chǎn)品的開發(fā)明顯呈現(xiàn)兩個(gè)特點(diǎn):一是產(chǎn)品復(fù)雜程度提高;二是產(chǎn)品上市時(shí)限緊迫。然而,電路級(jí)設(shè)計(jì)本質(zhì)</p><p> 首先,工程師按照“自頂向下”的設(shè)計(jì)方法進(jìn)行系統(tǒng)劃分。</p><p> 其次,輸入VHDL代碼,這是高層次設(shè)計(jì)中最為普遍的輸入方式。此外,還可以采用圖形輸入方式(框圖,狀態(tài)圖等),這種輸入方式具有
12、直觀、容易理解的優(yōu)點(diǎn)。</p><p> 第三步是,將以上的設(shè)計(jì)輸入編譯成標(biāo)準(zhǔn)的VHDL文件。</p><p> 第四步是進(jìn)行代碼級(jí)的功能仿真,主要是檢驗(yàn)系統(tǒng)功能設(shè)計(jì)的正確性。這一步驟適用大型設(shè)計(jì),因?yàn)閷?duì)于大型設(shè)計(jì)來說,在綜合前對(duì)源代碼仿真,就可以大大減少設(shè)計(jì)重復(fù)的次數(shù)和時(shí)間。一般情況下,這一仿真步驟可略去。</p><p> 第五步是,利用綜合器對(duì)VHDL源
13、代碼進(jìn)行綜合優(yōu)化處理,生成門級(jí)描述的網(wǎng)絡(luò)表文件,這是將高層次描述轉(zhuǎn)化為硬件電路的關(guān)鍵步驟。綜合優(yōu)化是針對(duì)ASIC芯片供應(yīng)商的某一產(chǎn)品系列進(jìn)行的,所以綜合的過程要在相應(yīng)的廠家綜合庫(kù)支持下才能完成。</p><p> 第六步是,利用產(chǎn)生的網(wǎng)絡(luò)表文件進(jìn)行適配前的時(shí)序仿真,仿真過程不涉及具體器件的硬件特性,是較為粗略的。一般的設(shè)計(jì),也可略去這一仿真步驟。</p><p> 第七步是利用適配器將
14、綜合后的網(wǎng)絡(luò)表文件針對(duì)某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,包括底層器件配置、邏輯分割、邏輯優(yōu)化、布局布線。</p><p> 第八步是在適配完成后,產(chǎn)生多項(xiàng)設(shè)計(jì)結(jié)果:(1)適配報(bào)告,包括芯片內(nèi)部資源利用情況,設(shè)計(jì)的布爾方程描述情況等;(2)適配后的仿真模型;(3)器件編程文件。根據(jù)適配后的仿真模型,可以進(jìn)行適配后的時(shí)序仿真,因?yàn)橐呀?jīng)得到器件的實(shí)際硬件特性(如時(shí)延特性),所以仿真結(jié)果能比較精確地預(yù)期未來芯片的實(shí)際
15、性能。如果仿真結(jié)果達(dá)不到設(shè)計(jì)要求,就需要修改VHDL源代碼或選擇不同速度和品質(zhì)的器件,直至滿足設(shè)計(jì)要求;最后一步是將適配器產(chǎn)生的器件編程文件通過編程器或下載電纜載入到目標(biāo)芯片F(xiàn)PGA或CPLD中。如果是大批量產(chǎn)品開發(fā),則通過更換相應(yīng)的廠家綜合庫(kù),輕易地轉(zhuǎn)由ASIC形式實(shí)現(xiàn)。</p><p> 綜上所述,EDA技術(shù)是電子設(shè)計(jì)領(lǐng)域的一場(chǎng)革命,目前正處于高速發(fā)展階段,每年都有新的EDA工具問世。廣大電子工程人員掌握這
16、一先進(jìn)技術(shù),這不僅是提高設(shè)計(jì)效率的需要,更是我國(guó)電子工業(yè)在世界市場(chǎng)上生存、競(jìng)爭(zhēng)與否的關(guān)鍵。[2]</p><p> 1.2.4 EDA的發(fā)展趨勢(shì)</p><p> 第一,.從目前的EDA技術(shù)來看,其發(fā)展趨勢(shì)是政府重視、使用普及、應(yīng)用廣泛、工具多樣、軟件功能強(qiáng)大。</p><p> 中國(guó)EDA市場(chǎng)已漸趨成熟,不過大部分設(shè)計(jì)工程師面向的是PCB制板和小型ASIC領(lǐng)
17、域,僅有小部分(約11%)的設(shè)計(jì)人員開發(fā)復(fù)雜的片上系統(tǒng)器件。為了與臺(tái)灣和美國(guó)的設(shè)計(jì)工程師形成更有力的競(jìng)爭(zhēng),中國(guó)的設(shè)計(jì)隊(duì)伍有必要引進(jìn)和學(xué)習(xí)一些最新的EDA技術(shù)。 在信息通信領(lǐng)域,要優(yōu)先發(fā)展高速寬帶信息網(wǎng)、深亞微米集成電路、新型元器件、計(jì)算機(jī)及軟件技術(shù)、第三代移動(dòng)通信技術(shù)、信息管理、信息安全技術(shù),積極開拓以數(shù)字技術(shù)、網(wǎng)絡(luò)技術(shù)為基礎(chǔ)的新一代信息產(chǎn)品,發(fā)展新興產(chǎn)業(yè),培育新的經(jīng)濟(jì)增長(zhǎng)點(diǎn)。要大力推進(jìn)制造業(yè)信息化,積極開展計(jì)算機(jī)輔助設(shè)計(jì)(C
18、AD)、計(jì)算機(jī)輔助工程(CAE)、計(jì)算機(jī)輔助工藝(CAPP)、計(jì)算機(jī)機(jī)輔助制造(CAM)、產(chǎn)品數(shù)據(jù)管理(PDM)、制造資源計(jì)劃(MRPII)及企業(yè)資源管理(ERP)等。有條件的企業(yè)可開展“網(wǎng)絡(luò)制造”,便于合作設(shè)計(jì)、合作制造,參與國(guó)內(nèi)和國(guó)際競(jìng)爭(zhēng)。開展“數(shù)控化”工程和“數(shù)字化”工程。自動(dòng)化儀表的技術(shù)發(fā)展趨勢(shì)的測(cè)試技術(shù)、控制技術(shù)與計(jì)算機(jī)技術(shù)、通信技術(shù)進(jìn)一步融合,形成測(cè)量、控制、通信與計(jì)算機(jī)(M3C)結(jié)構(gòu)。在ASIC和PLD設(shè)計(jì)方面,向超高速、
19、高密度、低功耗、低電壓方面發(fā)展。 </p><p> 第二,外設(shè)技術(shù)與EDA工程相結(jié)合的市場(chǎng)前景看好,如組合超大屏幕的相關(guān)連接,多屏幕技術(shù)也有所發(fā)展。</p><p> 中國(guó)自1995年以來加速開發(fā)半導(dǎo)體產(chǎn)業(yè),先后建立了幾所設(shè)計(jì)中心,推動(dòng)系列設(shè)計(jì)活動(dòng)以應(yīng)對(duì)亞太地區(qū)其它EDA市場(chǎng)的競(jìng)爭(zhēng)。在EDA軟件開發(fā)方面,目前主要集中在美國(guó)。但各國(guó)也正在努力開發(fā)相應(yīng)的工具。日本、韓國(guó)都有ASIC設(shè)計(jì)工
20、具,但不對(duì)外開放。中國(guó)華大集成電路設(shè)計(jì)中心,也提供IC設(shè)計(jì)軟件,但性能不是很強(qiáng)。相信在不久的將來會(huì)有更多更好的設(shè)計(jì)工具在各地開花并結(jié)果。據(jù)最新統(tǒng)計(jì)顯示,中國(guó)和印度正在成為電子設(shè)計(jì)自動(dòng)化領(lǐng)域發(fā)展最快的兩個(gè)市場(chǎng),年夏合增長(zhǎng)率分別達(dá)到了50%和30%。[3] EDA技術(shù)發(fā)展迅猛,完全可以用日新月異來描述。EDA技術(shù)的應(yīng)用廣泛,現(xiàn)在已涉及到各行各業(yè)。EDA水平不斷提高,設(shè)計(jì)工具趨于完美的地步。EDA市場(chǎng)日趨成熟,但我國(guó)的研發(fā)水平仍很有
21、限,尚需迎頭趕上。</p><p> 1.3 硬件描述語言 VHDL</p><p> 1.3.1 VHDL的簡(jiǎn)介</p><p> 硬件描述語言(HDL)是一種用于設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言,它用軟件編程的方式來描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接形式,與傳統(tǒng)的門級(jí)描述方式相比,它更適合大規(guī)模系統(tǒng)的設(shè)計(jì)。例如一個(gè)32位的加法器,利用圖形輸入軟件需要輸人5
22、00至1000個(gè)門,而利用VHDL語言只需要書寫一行“A=B+C”即可。而且 VHDL語言可讀性強(qiáng),易于修改和發(fā)現(xiàn)錯(cuò)誤。早期的硬件描述語言,如ABEL、HDL、AHDL,由不同的EDA廠商開發(fā),互不兼容,而且不支持多層次設(shè)計(jì),層次間翻譯工作要由人工完成。為了克服以上不足,1985年美國(guó)國(guó)防部正式推出了高速集成電路硬件描述語言VHDL,1987年IEEE采納VHDL為硬件描述語言標(biāo)準(zhǔn)(IEEE STD-1076)。 VHDL是一
23、種全方位的硬件描述語言,包括系統(tǒng)行為級(jí)。寄存器傳輸級(jí)和邏輯門級(jí)多個(gè)設(shè)計(jì)層次,支持結(jié)構(gòu)、數(shù)據(jù)流和行為三種描述形式的混合描述,因此VHDL幾乎覆蓋了以往各種硬件俄語言的功能,整個(gè)自頂向下或由底向上的電路設(shè)計(jì)過程都可以用VHDL來完成。VHDL還具有以下優(yōu)點(diǎn):</p><p> ?。?)VHDL的寬范圍描述能力使它成為高層進(jìn)設(shè)計(jì)的核心,將設(shè)計(jì)人員的工作重心提高到了系統(tǒng)功能的實(shí)現(xiàn)與調(diào)試,而花較少的精力于物理實(shí)現(xiàn)。<
24、/p><p> ?。?)VHDL可以用簡(jiǎn)潔明確的代碼描述來進(jìn)行復(fù)雜控制邏輯艄設(shè)計(jì),靈活且方便,而且也便于設(shè)計(jì)結(jié)果的交流、保存和重用。</p><p> ?。?)VHDL的設(shè)計(jì)不依賴于特定的器件,方便了工藝的轉(zhuǎn)換。</p><p> (4)VHDL是一個(gè)標(biāo)準(zhǔn)語言,為眾多的EDA廠商支持,因此移植性好。</p><p> 用VHDL語言編程實(shí)現(xiàn)數(shù)
25、字電子系統(tǒng)硬件設(shè)計(jì)容易做到技術(shù)共享。他人用VHDL語言實(shí)現(xiàn)了IP模塊和軟核(soft core),程序包(package)和設(shè)計(jì)庫(kù)(library)很容易移植到自己的系統(tǒng)設(shè)計(jì)中。許多設(shè)計(jì)不用從頭開始,少花錢辦快事,縮短產(chǎn)品設(shè)計(jì)周期,加速產(chǎn)品更新,提高設(shè)計(jì)效益,這也是VHDL語言得到廣泛應(yīng)用的重要原因。</p><p> 值得指出的是:Verilog-HDL等硬件描述語言獲得較為廣泛的應(yīng)用。但最適合于用CPLD&
26、VHDL等器件實(shí)現(xiàn)數(shù)字電子系統(tǒng)設(shè)計(jì)的硬件描述語言當(dāng)屬于VHDL。</p><p> 1.3.2 VHDL的設(shè)計(jì)方法</p><p> 傳統(tǒng)的硬件電路設(shè)計(jì)方法是采用自下而上的設(shè)計(jì)方法,即根據(jù)系統(tǒng)對(duì)硬件的要求,詳細(xì)編制技術(shù)規(guī)格書,并畫出系統(tǒng)控制流圖;然后根據(jù)技術(shù)規(guī)格書和系統(tǒng)控制流圖,對(duì)系統(tǒng)的功能進(jìn)行細(xì)化,合理地劃分功能模塊,并畫出系統(tǒng)的功能框圖;接著就進(jìn)行各功能模塊的細(xì)化和電路設(shè)計(jì);各功能
27、模塊電路設(shè)計(jì)、調(diào)試完成后,將各功能模塊的硬件電路連接起來再進(jìn)行系統(tǒng)的調(diào)試,最后完成整個(gè)系統(tǒng)的硬件設(shè)計(jì)。采用傳統(tǒng)方法設(shè)計(jì)數(shù)字系統(tǒng),特別是當(dāng)電路系統(tǒng)非常龐大時(shí),設(shè)計(jì)者必須具備較好的設(shè)計(jì)經(jīng)驗(yàn),而且繁雜多樣的原理圖的閱讀和修改也給設(shè)計(jì)者帶來諸多的不便。</p><p> 當(dāng)電路系統(tǒng)采用VHDL語言設(shè)計(jì)其硬件時(shí),與傳統(tǒng)的電路設(shè)計(jì)方法相比較,具有如下的特點(diǎn):</p><p> 第一,采用自上而下的
28、設(shè)計(jì)方法。</p><p> 即從系統(tǒng)總體要求出發(fā),自上而下地逐步將設(shè)計(jì)的內(nèi)容細(xì)化,最后完成系統(tǒng)硬件的整體設(shè)計(jì)。在設(shè)計(jì)的過程中,對(duì)系統(tǒng)自上而下分成三個(gè)層次進(jìn)行設(shè)計(jì):</p><p> 第一層次是行為描述。所謂行為描述,實(shí)質(zhì)上就是對(duì)整個(gè)系統(tǒng)的數(shù)學(xué)模型的描述。一般來說,對(duì)系統(tǒng)進(jìn)行行為描述的目的是試圖在系統(tǒng)設(shè)計(jì)的初始階段,通過對(duì)系統(tǒng)行為描述的仿真來發(fā)現(xiàn)設(shè)計(jì)中存在的問題。在行為描述階段,并不真
29、正考慮其實(shí)際的操作和算法用何種方法來實(shí)現(xiàn),而是考慮系統(tǒng)的結(jié)構(gòu)及其工作的過程是否能到達(dá)系統(tǒng)設(shè)計(jì)的要求。</p><p> 第二層次是RTL方式描述。這一層次稱為寄存器傳輸描述(又稱數(shù)據(jù)流描述)。如前所述,用行為方式描述的系統(tǒng)結(jié)構(gòu)的程序,其抽象程度高,是很難直接映射到具體邏輯元件結(jié)構(gòu)的。要想得到硬件的具體實(shí)現(xiàn),必須將行為方式描述的VHDL語言程序改寫為RTL方式描述的VHDL語言程序。也就是說,系統(tǒng)采用RTL方式描
30、述,才能導(dǎo)出系統(tǒng)的邏輯表達(dá)式,才能進(jìn)行邏輯綜合。</p><p> 第三層次是邏輯綜合。即利用邏輯綜合工具,將RTL方式描述的程序轉(zhuǎn)換成用基本邏輯元件表示的文件(門級(jí)網(wǎng)絡(luò)表)。此時(shí),如果需要,可將邏輯綜合的結(jié)果以邏輯原理圖的方式輸出。此后可對(duì)綜合的結(jié)果在門電路級(jí)上進(jìn)行仿真,并檢查其時(shí)序關(guān)系。</p><p> 第二,應(yīng)用邏輯綜合工具產(chǎn)生的門級(jí)網(wǎng)絡(luò)表,將其轉(zhuǎn)換成PLD的編程碼點(diǎn),即可利用
31、PLD實(shí)現(xiàn)硬件電路的設(shè)計(jì)。</p><p> 由自上而下的設(shè)計(jì)過程可知,從總體行為設(shè)計(jì)開始到最終的邏輯綜合,每一步都要進(jìn)行仿真檢查,這樣有利于盡早發(fā)現(xiàn)設(shè)計(jì)中存在的問題,從而可以大大縮短系統(tǒng)的設(shè)計(jì)周期。</p><p> 第三,系統(tǒng)可大量采用PLD芯片。</p><p> 由于目前眾多制造PLD芯片的廠家,其工具軟件均支持VHDL語言的編程。所以利用VHDL語言
32、設(shè)計(jì)數(shù)字系統(tǒng)時(shí),可以根據(jù)硬件電路的設(shè)計(jì)需要,自行利用PLD設(shè)計(jì)自用的ASIC芯片,而無須受通用元器件的限制。</p><p> 第四,采用系統(tǒng)早期仿真。</p><p> 從自上而下的設(shè)計(jì)過程中可以看到,在系統(tǒng)設(shè)計(jì)過程中要進(jìn)行三級(jí)仿真,即行為層次仿真、RTL層次仿真和門級(jí)層次仿真。這三級(jí)仿真貫穿系統(tǒng)設(shè)計(jì)的全過程,從而可以在系統(tǒng)設(shè)計(jì)的早期發(fā)現(xiàn)設(shè)計(jì)中存在的問題,大大縮短系統(tǒng)設(shè)計(jì)的周期,節(jié)約
33、大量的人力和物力。自頂而下的設(shè)計(jì)方法使系統(tǒng)被分解為各個(gè)模塊的集合之后,可以對(duì)設(shè)計(jì)的每個(gè)獨(dú)立模塊指派不同的工作小組,這些工作小組可以工作在不同地點(diǎn),甚至可以分屬于不同的單位,最后將不同的模塊集成為最終的系統(tǒng)模型,并對(duì)其進(jìn)行綜合測(cè)試和評(píng)價(jià)。[4]其自頂而下的設(shè)計(jì)流程如圖1-1所示:</p><p> 圖1-1 自頂而下的設(shè)計(jì)流程</p><p> 1.4 Max+Pull II開發(fā)平臺(tái)系統(tǒng)
34、</p><p> 1.4.1 MaxPull II簡(jiǎn)介</p><p> MaxPull II的全稱是Multiple Array and Programmable Logic Use System2(多陣列矩陣及可編程邏輯用戶系統(tǒng)2),是Altera公司的全集成化可編程邏輯設(shè)計(jì)環(huán)境。從最初的第一代A+PLUS,第二代MAX+PLUS,發(fā)展到第三代MAX+PLUS II,Altera
35、公司的開發(fā)工具軟件在發(fā)展中不斷完善。MAX+PLUS II的版本不升級(jí),功能也越來越強(qiáng)大,目前發(fā)行的MAX+PLUS II已經(jīng)到了10。1版。</p><p> MaxPull II的界面友好,在線幫助完備,初學(xué)者也可以很快學(xué)習(xí)掌握。完成高性能的設(shè)計(jì)。其次,在進(jìn)行原理圖輸入時(shí),可以直接放置74系列邏輯芯片,所以對(duì)于普通愛好者來說,即使不使用Altera的可編程器件,也可以把MAX+PLUS II作為邏輯仿真工具
36、,另外,不用搭建硬件電路,即可對(duì)自己的設(shè)計(jì)進(jìn)行調(diào)試,支持Altera公司不同結(jié)構(gòu)的可編程邏輯器件,能滿足用戶各種各樣的設(shè)計(jì)需要。MAX+plus II具有突出的靈活性與高效性,為設(shè)計(jì)者提供了多種可自由選擇的設(shè)計(jì)方法和工具。</p><p> 1.4.2 MaxPull II的特點(diǎn)</p><p> 1.MAX+PLUS II的編譯核心支持Altera的FLEX 10K、FLEX 8K、
37、MAX9000、MAX7000、FLASHlogic、MAX5000、Classic系列可編程邏輯器件; </p><p> 2.MAX+PLUS II的設(shè)計(jì)輸入、處理與校驗(yàn)功能一起提供了全集成化的一套可編程邏輯開發(fā)工具,可加快動(dòng)態(tài)調(diào)試,縮短開發(fā)周期; </p><p> 3.MAX+PLUS II支持各種HDL設(shè)計(jì)輸入,包括VHDL、Verilog和Altera的AHDL; <
38、/p><p> 4.MAX+PLUS II可與其他工業(yè)標(biāo)準(zhǔn)設(shè)計(jì)輸入、綜合與校驗(yàn)工具鏈接。與CAE工具的接口符合EDIF200和209、參數(shù)化模塊庫(kù)(LPM)、Verilog、VHDL及其它標(biāo)準(zhǔn)。設(shè)計(jì)者可使用Altera或標(biāo)準(zhǔn)CAE設(shè)計(jì)輸入工具去建立邏輯設(shè)計(jì),使用MAX+PLUS II編譯器對(duì)Altera器件設(shè)計(jì)進(jìn)行編譯,并使用Altera或其它CAE校驗(yàn)工具進(jìn)行器件或板級(jí)仿真。MAX+PLUS II支持與Synop
39、sys、Viewlogic、Mentor Graphics、Cadence、Exemplar、Data I/O、Intergraph、Minc、OrCAD等公司提供的工具接口。 利用MAX+PLUSII軟件平臺(tái)進(jìn)行設(shè)統(tǒng)設(shè)計(jì)。[5]具體的設(shè)計(jì)流程圖如圖1-2所示:</p><p> 圖1-2 MAX+PLUSII軟件的設(shè)計(jì)流程圖</p><p><b> 2 交通燈系統(tǒng)設(shè)計(jì)&l
40、t;/b></p><p> 2.1 交通燈設(shè)計(jì)背景及方案</p><p> 隨著城市汽車保有量的越來越多,城市的交通擁擠問題正逐漸引起人們的注意。交通燈是交管部門管理城市交通的重要工具。提高十字路口的通行效率,對(duì)緩解交通阻塞具有十分重要的現(xiàn)實(shí)意義。實(shí)現(xiàn)路口交通燈系統(tǒng)控制的方法很多,可以用標(biāo)準(zhǔn)邏輯器件、可編程序控制器PLC、單片機(jī)等方案來實(shí)現(xiàn)。但是這些控制方法的功能修改及調(diào)試都需
41、要硬件電路的支持,在一定程度上增加了設(shè)計(jì)難度。采用EDA技術(shù)。應(yīng)用VHDL硬件電路描述語言實(shí)現(xiàn)變通燈系統(tǒng)控制器的設(shè)計(jì),利用MAX+PLUSⅡ集成開發(fā)環(huán)境進(jìn)行綜合、仿真,并下載到CPLD可編程邏輯器件中,完成系統(tǒng)的控制作用。該燈控制邏輯可實(shí)現(xiàn)3種顏色燈的交替點(diǎn)亮、時(shí)間的倒計(jì)時(shí)、轉(zhuǎn)向問題,指揮車輛和行人安全通行。</p><p> 2.2 交通燈設(shè)計(jì)要求</p><p> 按照路口交通運(yùn)行
42、的實(shí)際情況,在本系統(tǒng)中,設(shè)定系統(tǒng)的工作情況如下: A 方向和B 方向各設(shè)紅(R) 、黃( Y) 、綠( G) 和左拐(L) 四盞燈按合理的順序亮滅,并能將燈亮的時(shí)間以倒計(jì)時(shí)的形式顯示出來。兩個(gè)方向各種燈亮的時(shí)間應(yīng)該能夠非常方便地進(jìn)行設(shè)計(jì)和修改,此外假設(shè)A 方向是主干道,車流量大,因此A方向通行的時(shí)間應(yīng)比B 方向長(zhǎng)一些。其示意圖如圖2-1所示。 </p><p> 圖2-1 交通路口指示燈示意圖</p>
43、;<p> 交通燈控制器的狀態(tài)轉(zhuǎn)換如表1 所示。表中1 表示燈亮,0 表示燈滅。A 方向和B 方向的紅、黃、綠和左拐燈分別用R1 、Y1、G1 、L1 和R2 、Y2 、G2 、L2 來表示。</p><p> 從狀態(tài)轉(zhuǎn)換表中可以看出,每個(gè)方向四種燈依次按如下綠燈→黃燈→左拐燈→黃燈→紅燈。并且每個(gè)方向紅燈亮的時(shí)間應(yīng)該與另一方向綠、拐、黃燈亮的時(shí)間相等。黃燈所起的作用是用來在綠燈和左拐燈后進(jìn)行緩
44、沖,以提醒行人該方向馬上要禁行了。例如A 方向的控制程序描述如表2-1所示:</p><p> 表2-1 交通燈控制器狀態(tài)轉(zhuǎn)換</p><p> 2.3 交通燈控制器的VHDL設(shè)計(jì)</p><p> 使用MAX+PLUS II進(jìn)行設(shè)計(jì)包括四個(gè)階段:設(shè)計(jì)輸入、設(shè)計(jì)處理、設(shè)計(jì)驗(yàn)證和器件編程。根據(jù)程序要求完成VHDL語言設(shè)計(jì)后,可形成頂層文件。在MAX+PLUSⅡ環(huán)
45、境下進(jìn)行編譯與仿真,直至各個(gè)模塊全部完成仿真,實(shí)現(xiàn)各自的功能。在本設(shè)計(jì)中交通燈控制器由七個(gè)模塊構(gòu)成:消振模塊,分頻器模塊、交通燈控制器模塊、計(jì)數(shù)器塊、計(jì)數(shù)器控制模塊、閃爍模塊、譯碼器模塊。 </p><p> 用VHDL語言對(duì)各個(gè)模塊進(jìn)行編程,最后形成頂層文件,在MAX+PLUSⅡ環(huán)境下進(jìn)行編譯與仿真,檢查所編程序是否運(yùn)行正確。如果出現(xiàn)錯(cuò)誤,需要進(jìn)行修改,直到完全通過為止。需要說明的是,在進(jìn)行程序編譯時(shí),要先從
46、底層程序開始,所有底層程序都正確后,才能開始頂層程序的編譯。這是因?yàn)轫攲映绦蚴菍?duì)底層程序的概括,它是把底層程序各個(gè)模塊連接起來,相當(dāng)于把每個(gè)模塊的功能匯聚到一起,實(shí)現(xiàn)整個(gè)系統(tǒng)的控制功能,所以底層程序的正確與否關(guān)系到頂層程序的運(yùn)行。[6]</p><p> 2.3.1 分頻器模塊</p><p> 2.3.1.1 原理及功能</p><p> 分頻器通常用來對(duì)某
47、個(gè)給定的頻率進(jìn)行分頻,以得到需要的頻率。整數(shù)分頻器非常簡(jiǎn)單,可采用標(biāo)準(zhǔn)的計(jì)數(shù)器,也可采用可編程邏輯器件設(shè)計(jì)實(shí)現(xiàn)。分頻器可為后續(xù)模塊提供低頻的時(shí)鐘信號(hào),分頻器采用上升沿計(jì)數(shù)來實(shí)現(xiàn)分頻。當(dāng)輸入端采集到了高頻的時(shí)鐘信號(hào)的上升沿時(shí),計(jì)數(shù)加一,當(dāng)?shù)竭_(dá)設(shè)定值時(shí),分頻器輸出一個(gè)脈沖。</p><p> 本設(shè)計(jì)中用到的就是簡(jiǎn)單的分頻器,即計(jì)數(shù)器,計(jì)算器控制器,交通燈控制器提供時(shí)鐘信號(hào),并且為閃爍模塊提供閃爍時(shí)鐘信號(hào)。該功能模塊
48、有兩個(gè)輸入,兩個(gè)輸出:reset是內(nèi)部初始化信號(hào)輸入端,clk1k是高頻的時(shí)鐘信號(hào),clk是整個(gè)系統(tǒng)的時(shí)鐘信號(hào),clk_flash是閃爍模塊閃爍時(shí)鐘信號(hào)。</p><p> 2.3.1.2 時(shí)序仿真</p><p> 圖2-2 分頻器模塊的時(shí)序仿真波形</p><p><b> 時(shí)序仿真說明:</b></p><p&g
49、t; (1).reset=1,則clk_cnt1、clk_cnt2、clk_s1、clk_s2、clk_f清零。</p><p> 2. reset=0,clk_1k為上升沿觸發(fā)時(shí),如果clk_cnt1大于或等于5時(shí),清零clk_cnt1,并且clk_s1輸出1。否則clk_cnt1加一,clk_s1等于0。</p><p> 3.reset=0,clk_1k為上升沿觸發(fā)并且clk
50、_s1=1時(shí),如果clk_cnt2大于或等于200時(shí),clk_cnt2清零,輸出clk_s2=1,取反clk_f。否則clk_cnt2加一,clk_s2,clk_f保持不變。</p><p> 其中clk-flash是clk頻率的1/2倍,它是通過內(nèi)部信號(hào)與運(yùn)算的得來,即</p><p> clk_flash<=clk_s1 and clk_s2 and clk_f;</p
51、><p> 2.3.2 計(jì)數(shù)器模塊 </p><p> 2.3.2.1 原理及功能</p><p> 計(jì)數(shù)器是對(duì)一個(gè)輸入脈沖進(jìn)行計(jì)數(shù),如果輸入脈沖的頻率一定,則記錄一定個(gè)數(shù)的脈沖,其所需的時(shí)間是一定的。計(jì)數(shù)器可分為加法和減法計(jì)數(shù)器兩種,所以計(jì)數(shù)器可實(shí)現(xiàn)倒記時(shí),因此可用在交通燈時(shí)間的控制。正常情況時(shí),計(jì)數(shù)器采集到交通燈控制器的信號(hào)recount,輸出倒計(jì)時(shí)間;緊急情
52、況時(shí),計(jì)數(shù)器采集到禁止信號(hào),時(shí)鐘停止計(jì)數(shù),時(shí)間不再倒記時(shí),只有采集到計(jì)數(shù)器控制器的下一個(gè)狀態(tài)的計(jì)數(shù)值,計(jì)數(shù)器才會(huì)進(jìn)行正常的減計(jì)數(shù),并輸出給譯碼器,顯示在顯示屏上。當(dāng)計(jì)數(shù)器計(jì)數(shù)到3時(shí),還要產(chǎn)生一個(gè)閃爍信號(hào)給閃爍模塊,控制其交通指示燈閃爍,告訴給行人時(shí)間到了需要減速停止。當(dāng)計(jì)數(shù)器計(jì)數(shù)到零時(shí),會(huì)反饋給交通燈控制器一個(gè)計(jì)數(shù)到零的信號(hào)next_state,告訴交通燈控制器需要進(jìn)入下一個(gè)狀態(tài)。</p><p><b&g
53、t; 本設(shè)計(jì)中主要程序段</b></p><p> elsif clk'event and clk='1' then ――時(shí)鐘信號(hào)</p><p> if hold='1' then --禁止信號(hào)</p><p> cnt1<=cnt1;&l
54、t;/p><p> cnt2<=cnt2;</p><p> elsif recount='1' then ――采集到的交通燈控制信號(hào),采集下</p><p> cnt1<=din1; 一個(gè)計(jì)數(shù)值。</p><
55、p> cnt2<=din2;</p><p><b> else </b></p><p> cnt1<=cnt1-1; ――減計(jì)數(shù)</p><p> cnt2<=cnt2-1;</p><p><b> end if;</b&g
56、t;</p><p> 2.3.2.2 時(shí)序仿真</p><p> 圖2-3 計(jì)數(shù)器模塊的時(shí)序仿真波形</p><p><b> 時(shí)序仿真說明:</b></p><p> 1.reset=1,清零cnt1、 cnt2、next_s、last_f。</p><p> 2.reset=0,
57、clk為上升沿觸發(fā)時(shí),如果hold=1時(shí),計(jì)數(shù)器處于禁止?fàn)顟B(tài),cnt1,cnt2保持不變,輸出不變。</p><p> 3.reset=0, clk為上升沿觸發(fā)時(shí),且hold=0,那么如果recount=1時(shí),則采集下一個(gè)計(jì)數(shù)數(shù)值。</p><p> 4.reset=0, clk為上升沿觸發(fā)時(shí),且hold=0,recount=0時(shí),cnt1,cnt2進(jìn)行減一運(yùn)算,并dout=cnt輸出
58、。</p><p> 5.當(dāng)cnt1=0或cnt2=0時(shí),則next_sa<='1'。否則next_sa<='0。</p><p> 6.當(dāng)cnt1=3或cnt2=3時(shí),則last_f<='1'。否則last_f<='0'。</p><p> 2.3.3 計(jì)數(shù)器控制器模塊</
59、p><p> 2.3.3.1 原理及功能</p><p> 計(jì)數(shù)器控制器通過給計(jì)數(shù)器賦值,控制計(jì)數(shù)器實(shí)現(xiàn)減計(jì)數(shù),從而達(dá)到倒記時(shí)的目的,同時(shí)和計(jì)數(shù)器配合控制閃爍模塊。計(jì)數(shù)器控制器是通過硬件描述語言case語句來實(shí)現(xiàn)不同狀態(tài)的選擇控制。</p><p> 計(jì)數(shù)器控制器模塊有三個(gè)輸入,端子recount是交通燈控制器控制計(jì)數(shù)器控制器是否進(jìn)行計(jì)數(shù)狀態(tài)轉(zhuǎn)換的信號(hào),reset
60、是內(nèi)部復(fù)位信號(hào),用來復(fù)位內(nèi)部信號(hào)。sign_s是狀態(tài)選擇控制端。輸出端Load賦值給計(jì)數(shù)器計(jì)數(shù)值。flash_addr和計(jì)數(shù)器的flash共同作用控制閃爍模塊的閃爍功能。[7]</p><p> 2.3.3.2 時(shí)序仿真</p><p> 圖2-4 計(jì)數(shù)器控制器模塊時(shí)序仿真波形</p><p><b> 時(shí)序仿真說明:</b></p
61、><p> 1.reset=1,則load1、load2清零。</p><p> 2.reset=0, clk為上升沿觸發(fā),且 recount=1時(shí):</p><p> ?。?) 若sign_s=110000001001,則load1<=conv_std_logic_vector(27,8);</p><p> load2<=c
62、onv_std_logic_vector(27,8);flash_addr<="00";</p><p> ?。?) 若sign_s=001110000001,則load1<=conv_std_logic_vector(23,8)</p><p> load2<=conv_std_logic_vector(23,8);flash_addr<=&
63、quot;00";</p><p> ?。?) 若sign_s=001001110000 ,則load1<=conv_std_logic_vector(18,8);</p><p> load2<=conv_std_logic_vector(18,8);flash_addr<="00";</p><p> ?。?)
64、若sign_s=000001001110,則load1<=conv_std_logic_vector(35,8);</p><p> load2<=conv_std_logic_vector(35,8)flash_addr<="00";</p><p> 2.3.4 交通燈控制器的設(shè)計(jì)</p><p> 2.3.4.1 原
65、理及功能</p><p> 交通燈控制器控制過程分為八個(gè)階段,對(duì)應(yīng)的有四個(gè)狀態(tài),分別用a、b、c、d表示。</p><p> a狀態(tài):A方向的綠燈亮,左轉(zhuǎn)燈,紅燈,黃燈都滅,B方向的紅燈亮,綠</p><p> 燈,黃燈,左轉(zhuǎn)燈都滅。此時(shí),A方向上的車輛可直行或者各自右轉(zhuǎn),行人可以橫穿B路口,B方向上車和行人禁止通行。直到計(jì)數(shù)器計(jì)數(shù)時(shí)間到,由a狀態(tài)轉(zhuǎn)到b狀態(tài)。
66、</p><p> b狀態(tài):A方向的黃燈亮,綠燈,左轉(zhuǎn)燈,紅燈滅,B方向的交通燈保持原狀態(tài)。此時(shí),A方向上的車輛要開始停止通行,行人可繼續(xù)穿行,B方向的車輛行人保持原狀態(tài)。直到計(jì)數(shù)器計(jì)時(shí)時(shí)間到,由b狀態(tài)轉(zhuǎn)到c狀態(tài)。</p><p> c態(tài):A方向的左轉(zhuǎn)燈亮,綠燈,黃燈,紅燈滅,B方向的交通燈保持原狀態(tài)。此時(shí),A方向上的車輛各自左轉(zhuǎn),直行和右轉(zhuǎn)車輛禁止通行,行人可繼續(xù)穿行,B方向的車輛和
67、行人保持原狀態(tài)。直到計(jì)數(shù)器計(jì)時(shí)時(shí)間到,由c狀態(tài)轉(zhuǎn)到d狀態(tài)。</p><p> d狀態(tài):A方向上的黃燈亮,綠燈,左轉(zhuǎn)燈,紅燈滅,B方向的交通燈保持</p><p> 原狀態(tài)。此時(shí),A方向上的車輛和行人要開始停止通行,B方向的車輛行人保持原狀態(tài)。直到計(jì)數(shù)器計(jì)時(shí)時(shí)間到,由d態(tài)轉(zhuǎn)到下個(gè)狀態(tài)。到此,B方向上的交通燈開始變化,依次重復(fù)A方向上a、b、c、d四個(gè)狀態(tài)的轉(zhuǎn)換。當(dāng)B方向上的四個(gè)狀態(tài)循環(huán)完
68、成后,A方向再次重復(fù)A方向上a、b、c、d四個(gè)狀態(tài)的轉(zhuǎn)換。</p><p> 交通燈主要控制程序?yàn)椋?lt;/p><p> when a=> if a_m='1' then ――交通燈處于自動(dòng)狀態(tài)時(shí)</p><p> if next_state='1' then ――采集到計(jì)
69、數(shù)器計(jì)數(shù)到零時(shí)反饋信號(hào)</p><p> recount<='1';</p><p><b> state<=b;</b></p><p> sign_state<="100101101101";</p><p> else recount<='
70、0';</p><p><b> state<=a;</b></p><p><b> end if;</b></p><p> elsif a_m='0' then ――交通燈處于手動(dòng)狀態(tài)時(shí)</p><p> if h_bu
71、tt='1' then ――手動(dòng)狀態(tài)轉(zhuǎn)換控制信號(hào)</p><p> recount<='1';</p><p><b> state<=b;</b></p><p> sign_state<="100101101101";</p&g
72、t;<p> else recount<='0';</p><p><b> state<=a;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> 2
73、.3.4.2 時(shí)序仿真</p><p> 圖2-5 交通燈控制器模塊時(shí)序仿真波形</p><p><b> 時(shí)序仿真說明</b></p><p> 1.Reset=1,則state<=a;sign_state<="010101010101";recount<='1';</p>
74、;<p> 2.Reset=0,clk為上升沿觸發(fā),如果hold=1,則交通燈控制器出與禁止?fàn)顟B(tài),此時(shí)所有路口的紅綠燈都為紅燈。否則,交通燈處于正常的顯示狀態(tài)。</p><p> 3.Reset=0,clk為上升沿觸發(fā),且hold=0,如果state為a狀態(tài)時(shí),如果a_m=1且next_state='1'則recount=1,state<=b;sign_state<=
75、"100101101101";否則recount<='0';state<=a;如果為手動(dòng)狀態(tài)a_m=0且h_butt='1則recount<='1';state<=b; sign_state<="100101101101";否則recount<='0', state<=a;</p>&l
76、t;p> 4.Reset=0,clk為上升沿觸發(fā),且hold=0,如果state為b狀態(tài)時(shí),如果a_m=1且next_state='1'則recount=1,state<=c;sign_state<="100101100110";否則recount<='0';state<=b;如果為手動(dòng)狀態(tài)a_m=0且h_butt='1則recount<=
77、'1';state<=c; sign_state<="100101100110";否則recount<='0', state<=b</p><p> 5.Reset=0,clk為上升沿觸發(fā),且hold=0,如果state為c狀態(tài)時(shí),如果a_m=1且next_state='1'則recount=1,state<=d;
78、sign_state<="101001100101";否則recount<='0';state<=c;如果為手動(dòng)狀態(tài)a_m=0且h_butt='1則recount<='1';state<=d; sign_state<="101001100101";否則recount<='0', state<=c
79、</p><p> 6.Reset=0,clk為上升沿觸發(fā),且hold=0,如果state為d狀態(tài)時(shí),如果a_m=1且next_state='1'則recount=1,state<=e;sign_state<="101101100101";否則recount<='0';state<=d;如果為手動(dòng)狀態(tài)a_m=0且h_butt='
80、1則recount<='1';state<=d; sign_state<="101101100101";否則recount<='0', state<=d</p><p> 7.Reset=0,clk為上升沿觸發(fā),且hold=0,如果state為e狀態(tài)時(shí),如果a_m=1且next_state='1'則recount=
81、1,state<=e;sign_state<="100110100101";否則recount<='0';state<=d;如果為手動(dòng)狀態(tài)a_m=0且h_butt='1則recount<='1';state<=f sign_state<="100110100101";否則recount<='0'
82、, state<=e</p><p> 8.Reset=0,clk為上升沿觸發(fā),且hold=0,如果state為f狀態(tài)時(shí),如果a_m=1且next_state='1'則recount=1,state<=a;sign_state<="100101101001";否則recount<='0';state<=f;如果為手動(dòng)狀態(tài)a_m=0
83、且h_butt='1則recount<='1';state<=a sign_state<="100101101001";否則recount<='0', state<=f。</p><p> 2.3.5 閃爍電路模塊的設(shè)計(jì)</p><p> 2.3.5.1 原理及功能</p><
84、p> 閃爍模塊一般用來提醒或者引起致意,有時(shí)又希望能關(guān)斷某一路的顯示。本設(shè)計(jì)中采用關(guān)斷某個(gè)一個(gè)LED 的方法,利用一個(gè)低頻(2Hz左右)的時(shí)鐘與全部的輸入信號(hào)都做與運(yùn)算,然后在送到LED的輸入端口,這樣就會(huì)實(shí)現(xiàn)該低頻時(shí)鐘的頻率閃爍功能。</p><p> 閃爍模塊控制交通燈閃爍通過與運(yùn)算其實(shí)現(xiàn)功能主要程序?yàn)椋?lt;/p><p> elsif clk_flash='1
85、9; then ――閃爍模塊閃爍時(shí)鐘</p><p> if flash_addr="01"and flash='1'then ――控制交通指示燈</p><p> cnt<="011010011010"; </p><p> cnt_flash&l
86、t;=dins xor cnt; ――異或運(yùn)算</p><p> else cnt_flash<=dins;</p><p><b> end if;</b></p><p> elsif flash_addr="11" and flash ='1' then </p
87、><p> cnt<="011010100101"; </p><p> cnt_flash<=dins xor cnt;</p><p> else cnt_flash<=dins;</p><p><b> end if;</b></p><
88、;p> 其中clk_flash(2hz)是低頻閃爍信號(hào),clk是系統(tǒng)時(shí)鐘信號(hào),clk_flash是低頻閃爍時(shí)鐘信號(hào), flash, flash_addr是交通燈控制器和計(jì)數(shù)器控制器產(chǎn)生的控制信號(hào),它們共同作用判別是否關(guān)斷、關(guān)開LED交通燈。</p><p> 2.3.5.2 時(shí)序仿真</p><p> 圖2-6 閃爍電路模塊時(shí)序仿真波形</p><p>
89、<b> 時(shí)序仿真說明:</b></p><p> 1.reset=1,則cnt_flash清零。</p><p> 2.reset=0,clk為上升沿觸發(fā),如果hold=1時(shí),cnt_flash=dins,即保持不變,輸入等于輸出。</p><p> 3. reset=0,clk為上升沿觸發(fā),且hold=0,如果clk_flash=&
90、#39;1' 且flash_addr="01"and flash='1'則cnt=011010011010,cnt_flash<=dins xor cnt;。否則cnt_flash<=dins;</p><p> 4.reset=0,clk為上升沿觸發(fā),且hold=0,如果clk_flash='1且,flash_addr="11"
91、; and flash ='1'則cnt<="011010100101"; cnt_flash<=dins xor cnt。否則cnt_flash<=dins;</p><p> 2.3.6 消振模塊設(shè)計(jì)</p><p> 2.3.6.1 原理及功能</p><p> 交通燈出現(xiàn)緊急情況或需要交通人員進(jìn)行手
92、動(dòng)控制時(shí),需要手動(dòng)操作按鍵,由于按鍵被按下和按鍵彈起時(shí)都有抖動(dòng),造成控制器采集到多個(gè)信號(hào)信息,使得計(jì)數(shù)器產(chǎn)生一些誤操作,控制器誤判概率增加。</p><p> 消振功能模塊通過采用延時(shí)響應(yīng)原理來消除抖動(dòng)和誤操作,模塊利用方波上升延采集信號(hào),當(dāng)采集到信號(hào)時(shí),進(jìn)行計(jì)數(shù),計(jì)數(shù)直到設(shè)定值時(shí),系統(tǒng)才認(rèn)為此信號(hào)為有用信息,進(jìn)行響應(yīng)輸出控制信號(hào)。否則,屏蔽掉此信號(hào),不響應(yīng)執(zhí)行輸出。[8]</p><p&g
93、t; 在本模塊中有五個(gè)輸入端,resetr是內(nèi)部初始化信號(hào),當(dāng)模塊采集到初始化信號(hào)時(shí),置零內(nèi)部信號(hào),clkr是模塊時(shí)鐘信號(hào),其它三個(gè)是手動(dòng)按鍵輸入端,手動(dòng)轉(zhuǎn)化控制按鈕a_mr,手動(dòng)轉(zhuǎn)換按鈕h_buttonr,緊急情況禁止按鈕holdr。模塊采用clkr1KHZ的方波作為時(shí)鐘信號(hào),模塊每1um采集一次信息,當(dāng)采集到十個(gè)上升延時(shí)響應(yīng)操作,輸出一個(gè)1um的控制信號(hào)。</p><p><b> 主要程序如下
94、:</b></p><p> 。elsif clkr'event and clkr='1' then ――1khz的時(shí)鐘信號(hào)</p><p> if holdr='1' then --采集到手動(dòng)信息</p><p> if cnt2>="0111&qu
95、ot; then ――計(jì)數(shù)判斷</p><p> cnt2<="0000";</p><p><b> hoq<='1';</b></p><p> else cnt2<=cnt2+1; ――加計(jì)數(shù)</p>&
96、lt;p><b> hoq<='0';</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> 2.3.6.2 時(shí)序仿真</p><p> 圖2-7 消震模塊時(shí)序仿真波形
97、</p><p><b> 時(shí)序仿真說明:</b></p><p> 1.resetr=1,則 cnt1,cnt2,cnt3清零。</p><p> 2.resetr=0,clk為上升沿觸發(fā),當(dāng)holdr=1時(shí),cnt1的值大于等于10時(shí),則清零cnt1,令hoq=1,否則cnt1加一,hoq=0不變。</p><p&
98、gt; 3.resetr=0,clk為上升沿觸發(fā),當(dāng)a_mr=1時(shí),cnt2的值大于等于10時(shí),則清零cnt2,令aq=1,否則cnt2加一,aq=0不變。</p><p> 4.resetr=0,clk為上升沿觸發(fā),當(dāng)h_buttonr=1時(shí),cnt3的值大于等于10時(shí),則清零cnt3,令hq=1,否則cnt2加一,hq=0不變。</p><p> 2.3.7 譯碼器設(shè)計(jì) <
99、;/p><p> 2.2.3.7.1 原理及功能</p><p> 用來實(shí)現(xiàn)將二進(jìn)制碼或二——十進(jìn)制碼,譯成一組與輸入代碼一一對(duì)應(yīng)的高、低電平信號(hào)的電路就是譯碼器。它是一個(gè)多輸入、多輸出電路,它的輸入是二進(jìn)制代碼或二——十進(jìn)制代碼,輸出是代碼所代表的字符。本設(shè)計(jì)中采用七段顯示譯碼器來顯示交通燈上的倒記時(shí)。</p><p> 2.3.7.2 時(shí)序仿真</p&g
100、t;<p> 圖2-8 譯碼器模塊時(shí)序仿真波形</p><p> 2.3.8 總體電路設(shè)計(jì)</p><p> 電路由從總體上是由各個(gè)功能的電路模塊組成。通過元件例化語句調(diào)用低層次的當(dāng)前設(shè)計(jì)實(shí)體。(程序見附錄P9)</p><p> 圖2-9 總體電路的時(shí)序仿真波形</p><p> 2.4 實(shí)驗(yàn)平臺(tái)的引腳配置及下載測(cè)試
101、</p><p> 2.4.1 實(shí)驗(yàn)平臺(tái)介紹</p><p> 2.4.1.1 實(shí)驗(yàn)系統(tǒng)主板提供的基本功能說明:</p><p> 15個(gè)按鍵:即九個(gè)琴鍵按鍵(按住琴鍵,對(duì)應(yīng)輸出指示的紅色二極管亮,</p><p> 表示輸出高電平,松開琴鍵,對(duì)應(yīng)輸出指示的紅色二極管滅,表示輸出為低電平)。五個(gè)電平按鍵(按下鍵,對(duì)應(yīng)輸出指示的紅色二極
102、管亮,表示輸出高電平,再按下鍵,對(duì)應(yīng)輸出指示的紅色二極管滅,表示輸出為低電平)。一個(gè)脈沖模式按鍵:當(dāng)按下此按鍵,對(duì)應(yīng)輸出 20ms 的脈沖電平。各按鍵均已用軟件消抖。</p><p> 8個(gè)共陰數(shù)碼管,其中 7 個(gè)作為數(shù)碼顯示用(顯示采用掃描和自動(dòng)滅零技</p><p> 術(shù),當(dāng)輸入的四位二進(jìn)制數(shù)大于 1001 時(shí),滅燈),通過跳線選擇供 CPLD/FPGA 或單片機(jī)使用。</p
103、><p> 6個(gè)共陰數(shù)碼管,其中 6 個(gè)作為數(shù)碼顯示用(自動(dòng)滅零技術(shù),當(dāng)輸入的四</p><p> 位二進(jìn)制數(shù)大于 1001 時(shí),滅燈),直接與 CPLD/FPGA 連接。用戶直接提供 6 個(gè)數(shù)碼管的 4 位 BCD 碼輸入,共 24 位。8個(gè)發(fā)光二極管(輸入高電平時(shí),二極管發(fā)亮)。4組時(shí)鐘輸入(時(shí)鐘頻率從 50MHz 到 2Hz )即 CLK1 , CLK2 , CLK3,CLK4 。其
104、中任何一組只能用一個(gè)跳線帽接通時(shí)鐘信號(hào),結(jié)對(duì)不能在一組上插兩個(gè)或兩個(gè)以上的跳線帽接通兩個(gè)以上的時(shí)鐘。一個(gè)蜂鳴器和一個(gè)喇叭(由跳線 K1 接通);一個(gè)串行通信接口,通過跳線選擇供 CPLD/FPGA 或單片機(jī)使用。</p><p> 電源輸入電壓:交流 220V+-10V。</p><p> 電源輸出電壓:+5V(2A)和+-12V(0.5A)。+5V的地和12V地。</p>
105、<p> 2.4.1.2 跳線說明</p><p><b> Jump1:</b></p><p> ?。?,2)對(duì)XILINX的CPLD/FPGA進(jìn)行配置。 </p><p> (3,4)對(duì)LATTICE的 CPLD進(jìn)行 配置。
106、 </p><p> ?。?,6)對(duì)ALTERA的 CPLD/FPGA進(jìn)行配置。 </p><p> (7,8)對(duì)89S5X進(jìn)行配置。</p><p> 表2-2 Jump1端口配置</p><p><b> Jump2:</b>&
107、lt;/p><p> ?。?,4)(5,7)單片機(jī)串口與RS232的 端口相連。 </p><p> ?。?,3)(6,8)CPLD/FPGA串行信號(hào)與RS232端口相連。 </p><p> ?。?,2)(7,8)單片機(jī)與CPLD/FPGA的串口對(duì)連。</p&
108、gt;<p> 表2-3 Jump2端口配置</p><p><b> Jump3:</b></p><p> (1,2)提供USB外設(shè)的電源 </p><p> 表2-4 Jump3端口配置</p><p><b> Jump4:</b></p><
109、p> ?。?,2)選通AS0809 </p><p> ?。?,3)停用0809 </p><p> 表2-5 Jump4端口配置</p>&l
110、t;p><b> Jump5:</b></p><p> ?。?,2)選通AD0832 </p><p> ?。?,4)停用0832
111、 </p><p> 表2-6 Jump5端口配置</p><p><b> MCU JP1:</b></p><p> 全接左:由CPLD/FPGA控制掃描數(shù)碼管顯示</p><p> 全接右:由單片機(jī)控制掃描數(shù)碼管顯示</p><p><b> MCU JP2:&
112、lt;/b></p><p> 按下:?jiǎn)纹瑱C(jī)下載狀態(tài)</p><p> 彈上:?jiǎn)纹瑱C(jī)運(yùn)行狀態(tài)</p><p><b> MCU JP3:</b></p><p> 全接左:使用IIC端口連接</p><p> 全接右:使用掃描鍵盤</p><p><b
113、> MCU JP4:</b></p><p> 全接左:由CPLD/FPGA控制步進(jìn)電機(jī)驅(qū)動(dòng)信號(hào)</p><p> 全接右:由單片機(jī)控制步進(jìn)電機(jī)驅(qū)動(dòng)信號(hào)</p><p> ALTERA公司的 EP1K30芯片的 下載實(shí)驗(yàn)板的引腳分配</p><p> 表2-2 下載實(shí)驗(yàn)板1K30的 引腳與實(shí)驗(yàn)系統(tǒng)的連接關(guān)系[9]
114、</p><p> 2.4.2 引腳配置及下載測(cè)試</p><p> 按表2-2可對(duì)管腳重新分配和定位進(jìn)行硬件測(cè)試,為后面的器件下載和硬件實(shí)現(xiàn)提供保障。管腳配置定位如圖2-10所示:</p><p> 圖2-10 管腳的配置定位</p><p> 3 交通燈的硬件實(shí)現(xiàn)</p><p><b> 3.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda技術(shù)的交通燈畢業(yè)設(shè)計(jì)---基于eda技術(shù)的交通燈設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于eda技術(shù)的交通燈設(shè)計(jì)
- eda技術(shù)的交通燈畢業(yè)設(shè)計(jì)
- 畢業(yè)論文設(shè)計(jì)交通燈
- 畢業(yè)論文交通燈設(shè)計(jì)
- 基于pcl的交通燈設(shè)計(jì)畢業(yè)論文
- eda交通燈課程設(shè)計(jì)論文
- 畢業(yè)論文 基于plc設(shè)計(jì)的交通燈
- 交通燈設(shè)計(jì)畢業(yè)論文--單片機(jī)交通燈設(shè)計(jì)
- eda交通燈課程設(shè)計(jì)論文
- 交通燈畢業(yè)論文
- 交通燈畢業(yè)論文
- 交通燈畢業(yè)論文
- plc交通燈畢業(yè)論文--基于plc的交通燈控制系統(tǒng)設(shè)計(jì)
- plc交通燈畢業(yè)論文設(shè)計(jì)
- 控制交通燈設(shè)計(jì)畢業(yè)論文
- 基于組態(tài)軟件交通燈畢業(yè)論文
- plc交通燈畢業(yè)論文--plc交通控制燈設(shè)計(jì)
- 交通燈畢業(yè)論文 (2)
- 畢業(yè)論文(設(shè)計(jì))基于labview的交通燈系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論