第四章EDA技術(shù)與可編程ASIC的設(shè)計(jì)實(shí)現(xiàn)_第1頁(yè)
第四章EDA技術(shù)與可編程ASIC的設(shè)計(jì)實(shí)現(xiàn)_第2頁(yè)
第四章EDA技術(shù)與可編程ASIC的設(shè)計(jì)實(shí)現(xiàn)_第3頁(yè)
第四章EDA技術(shù)與可編程ASIC的設(shè)計(jì)實(shí)現(xiàn)_第4頁(yè)
第四章EDA技術(shù)與可編程ASIC的設(shè)計(jì)實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩268頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第四章EDA技術(shù)與可編程ASIC的設(shè)計(jì)實(shí)現(xiàn)

4.1集成電路與ASIC

4.2可編程ASIC及其發(fā)展4.3MAX+PLUSII及其應(yīng)用4.4Xilinx公司器件與Foundation應(yīng)用4.5XilinxXC95系列在電壓信號(hào)測(cè)量A/D中的應(yīng)用

4.6CPLD/FPGA在數(shù)字系統(tǒng)設(shè)計(jì)中的應(yīng)用復(fù)習(xí)思考題4.1集成電路與ASIC4.1.1集成電路及其分類集成電路按集成度可分為小規(guī)模、中規(guī)模、大規(guī)模、超大規(guī)模(軍用的稱超高速)、極大規(guī)模和巨大規(guī)模集成電路。集成度是標(biāo)志集成電路的一個(gè)重要指標(biāo),一般是指在一定尺寸的芯片上能做出多少個(gè)晶體管。通常將集成度少于100個(gè)元件的集成塊稱為小規(guī)模集成電路(簡(jiǎn)稱SSI);把集成度在100~1000個(gè)元件的稱為中規(guī)模集成電路(簡(jiǎn)稱MSI);以此類推。集成電路按制作工藝可分為膜集成電路、半導(dǎo)體集成電路和混合型集成電路。其中,膜集成電路又分為薄膜集成電路和厚膜集成電路兩類,薄膜集成電路制作方法主要采用淀積方法,如真空蒸發(fā)、濺射、電解氧化等方法,把需要的各種材料覆蓋在陶瓷或玻璃片上,然后用光刻的方法獲得電路;厚膜集成電路主要采用絲網(wǎng)漏印的方法,像印刷畫(huà)報(bào)那樣把電路印制在陶瓷上。半導(dǎo)體集成電路是在半導(dǎo)體材料的晶圓片上制作出電路?;旌闲图呻娐肥遣捎帽∧ぜ呻娐泛桶雽?dǎo)體集成電路制作工藝聯(lián)合制作出電路。集成電路按功能可分為數(shù)字集成電路、模擬集成電路(線性集成電路和非線性集成電路)、微波集成電路和專用集成電路(ASIC)。所謂的數(shù)字集成電路就是傳遞、加工、處理數(shù)字信號(hào)的集成電路。數(shù)字集成電路可分為通用數(shù)字集成電路和專用集成電路。通用數(shù)字集成電路是指那些用戶眾多、使用領(lǐng)域廣泛、標(biāo)準(zhǔn)型的電路。專用集成電路是指為特定的用戶、某種專門(mén)或特別的用途而設(shè)計(jì)的電路。具體分類如下:其中,通用數(shù)字集成電路由于采用的晶體管不同,可分為雙極型集成電路和場(chǎng)效應(yīng)集成電路兩種。這兩大系列中主要由TTL和CMOS為代表。高閾值晶體管邏輯電路(HIL)、發(fā)射極耦合邏輯電路(ECL)、集成注入邏輯電路(IIL)、N溝道場(chǎng)效應(yīng)管邏輯電路(NMOS)和P溝道場(chǎng)效應(yīng)管邏輯電路(PMOS)等系列,使用較少。反映數(shù)字集成電路的現(xiàn)狀和應(yīng)用水平的是存儲(chǔ)器、微處理器及微控制器和專用集成電路。存儲(chǔ)器是典型的數(shù)字集成電路,也一直是集成電路的主要產(chǎn)品,其技術(shù)發(fā)展代表著集成電路發(fā)展水平。另外,數(shù)字集成電路的發(fā)展歷程是和計(jì)算機(jī)的命運(yùn)緊緊連在一起的,它應(yīng)計(jì)算機(jī)的需要而誕生,并隨電子技術(shù)的不斷進(jìn)展而發(fā)展。計(jì)算機(jī)的核心是微處理器和微控制器。數(shù)字集成電路發(fā)展到數(shù)字系統(tǒng)也與其和計(jì)算機(jī)、通信、網(wǎng)絡(luò)等逐漸融合,密不可分。模擬集成電路是指能對(duì)電壓、電流等模擬量進(jìn)行放大與轉(zhuǎn)換的集成電路。輸入信號(hào)與輸出信號(hào)呈線性關(guān)系的電路稱為線性集成電路;輸入信號(hào)與輸出信號(hào)不成線性關(guān)系的電路稱為非線性集成電路;微波集成電路是近些年迅速發(fā)展的高頻集成電路,由于工作頻率高(大于300MHz),導(dǎo)致其電路結(jié)構(gòu)、元件類型、材料、工藝途徑以及應(yīng)用范圍都大不相同,形成了單獨(dú)的一大類型集成電路。4.1.2ASIC及其分類ASIC(ApplicationSpecificIntegratedCircuits,專用集成電路)是相對(duì)于標(biāo)準(zhǔn)邏輯、通用存儲(chǔ)器、通用微處理器等電路而言的。它是面向?qū)iT(mén)用途,根據(jù)某一用戶的特定要求,以低研制成本、短周期交貨的全定制或半定制集成電路。ASIC從20世紀(jì)60年代提出概念,到20世紀(jì)80年代后期隨著半導(dǎo)體集成電路工藝技術(shù)、支持技術(shù)、設(shè)計(jì)技術(shù)和測(cè)試評(píng)價(jià)技術(shù)的發(fā)展而得到充分發(fā)展。尤以設(shè)計(jì)專用性、成本低、開(kāi)發(fā)周期短、工具先進(jìn)、可靠性好、保密性好、工作速度高、功耗低、芯片體積小和重量輕等各方面的優(yōu)勢(shì),很快發(fā)展起來(lái)。用ASIC取代中小規(guī)模集成電路來(lái)組成電子系統(tǒng)或整機(jī)已成為熱潮,目前在集成電路市場(chǎng)中的ASIC占有率已達(dá)1/3。按照設(shè)計(jì)方法不同,ASIC分為全定制和半定制。全定制是基于晶體管的設(shè)計(jì)方法,針對(duì)最高速、最低功耗和最省面積的芯片,它必須從晶體管的版圖尺寸位置及連線開(kāi)始設(shè)計(jì)。通常設(shè)計(jì)成本高,周期長(zhǎng),只適用于性能要求很高或批量很大的芯片。半定制則是一種約束性設(shè)計(jì)方法,約束的主要目的是簡(jiǎn)化設(shè)計(jì),縮短設(shè)計(jì)周期以及提高芯片成品率,并盡可能采用已有的規(guī)則結(jié)構(gòu)的版圖,犧牲芯片的面積和性能方面的要求,用最短的時(shí)間設(shè)計(jì)出芯片,產(chǎn)品占領(lǐng)市場(chǎng)后再予以改進(jìn)。半定制方法分為門(mén)陣列法、標(biāo)準(zhǔn)單元法和可編程ASIC。門(mén)陣列法又稱母片法,是在半成品母片上將已有的規(guī)則單元相互連接實(shí)現(xiàn)電路要求,并有較高自動(dòng)化的設(shè)計(jì)軟件。門(mén)陣列法成本低、周期短,但門(mén)的利用率低,芯片性能不高。標(biāo)準(zhǔn)單元法是以精心設(shè)計(jì)的標(biāo)準(zhǔn)單元庫(kù)為基礎(chǔ),調(diào)用庫(kù)單元版圖,利用自動(dòng)布局布線完成電路到版圖一一對(duì)應(yīng)的設(shè)計(jì),它的成本周期、性能指標(biāo)都較高。前幾種ASIC方法都必須到集成電路廠家去加工流片才能完成,設(shè)計(jì)制造周期較長(zhǎng),而且一旦出錯(cuò),需要重新修改設(shè)計(jì)和流片,周期成本必然大大增加??删幊踢壿嬈骷且环N已完成全部工藝制造,可直接從市場(chǎng)購(gòu)得的產(chǎn)品,用戶只需對(duì)它編程就能實(shí)現(xiàn)電路功能,設(shè)計(jì)人員在實(shí)驗(yàn)室即可設(shè)計(jì)和制造出芯片,而且可以反復(fù)編程,使硬件的功能像軟件的功能一樣通過(guò)編程來(lái)修改??删幊藺SIC發(fā)展到現(xiàn)在,芯片上包含的資源越來(lái)越豐富,可實(shí)現(xiàn)的功能越來(lái)越強(qiáng),已成為當(dāng)今電子系統(tǒng)設(shè)計(jì)的重要手段。目前,在電子系統(tǒng)開(kāi)發(fā)階段的硬件驗(yàn)證過(guò)程中,一般都采用可編程ASIC,以期盡快開(kāi)發(fā)產(chǎn)品,迅速占領(lǐng)市場(chǎng)??删幊藺SIC尤其適合實(shí)驗(yàn)室中的科研和教學(xué),不僅投入低,開(kāi)發(fā)時(shí)間短,而且靈活性大,能夠有效提高學(xué)生的設(shè)計(jì)能力??删幊踢壿嬈骷姆诸惾鐖D4-1所示。圖4-1可編程邏輯器件分類示意圖可編程ASIC按復(fù)雜程度大致分為可編程邏輯器件(PLD,ProgrammableLogicDevice),復(fù)雜可編程邏輯器件(CPLD,ComplexProgrammableLogicDevice),現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA,F(xiàn)ieldProgrammableGateArray)。PLD由“與陣列”和“或陣列”組成,可用來(lái)實(shí)現(xiàn)任何“以積之和”形式表示的各種布爾邏輯函數(shù);CPLD在PLD的基礎(chǔ)上增加密度,擴(kuò)充功能,以實(shí)現(xiàn)復(fù)雜邏輯;FPGA則具有類似于半定制門(mén)陣列的通用結(jié)構(gòu),即由邏輯功能塊排列成陣列組成,并由可編程的互連資源連接這些邏輯功能塊來(lái)實(shí)現(xiàn)所需的設(shè)計(jì)。進(jìn)入20世紀(jì)90年代后,復(fù)雜可編程邏輯器件CPLD已經(jīng)成為可編程ASIC的主流產(chǎn)品,在ASIC市場(chǎng)占有了較大的份額,它一般具有可重編程特性,實(shí)現(xiàn)的工藝有EPROM、FlashEPROM和E2PROM。CPLD采用連續(xù)互連方式,能夠方便地預(yù)測(cè)設(shè)計(jì)時(shí)序,同時(shí)保證高速性能。全定制電路芯片完全由設(shè)計(jì)者自己開(kāi)發(fā)設(shè)計(jì),集成度高,可以針對(duì)所設(shè)計(jì)的電子系統(tǒng)進(jìn)行優(yōu)化,使性能達(dá)到最優(yōu),但是其芯片設(shè)計(jì)、制作的成本都比較高,并且設(shè)計(jì)開(kāi)發(fā)的周期較長(zhǎng),所以全定制電路芯片一般只用于大規(guī)模生產(chǎn),在電子系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)過(guò)程中不使用全定制電路芯片。對(duì)于半定制電路芯片,設(shè)計(jì)者不需從頭設(shè)計(jì),只需將所需功能用開(kāi)發(fā)系統(tǒng)“寫(xiě)”入半定制電路芯片,如EPLD、CPLD、FPGA等,因而在性能上雖然不能達(dá)到最優(yōu),但是設(shè)計(jì)制作的成本較低,開(kāi)發(fā)周期短,比較適合于在電子系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)中使用。一般在進(jìn)行復(fù)雜數(shù)字系統(tǒng)全定制設(shè)計(jì)時(shí),完成全定制電路芯片設(shè)計(jì)后,還是要進(jìn)行FPGA的仿真測(cè)試,以最大程度地保證電路的可靠性。因?yàn)殡娐吩O(shè)計(jì)完成后,仿真結(jié)果通過(guò),并不等于版圖就一定能夠通過(guò)(即和電路仿真結(jié)果一致),所以須用FPGA驗(yàn)證流片。4.2可編程ASIC及其發(fā)展4.2.1可編程邏輯器件的發(fā)展歷程隨著微電子技術(shù)的發(fā)展,設(shè)計(jì)與制造集成電路的任務(wù)已不完全由半導(dǎo)體廠承擔(dān),系統(tǒng)設(shè)計(jì)師們更愿意通過(guò)Fabless模式來(lái)自行設(shè)計(jì)ASIC芯片,而且希望ASIC的設(shè)計(jì)周期盡可能短,最好在實(shí)驗(yàn)室就能設(shè)計(jì)出合格的ASIC芯片并立即投入使用,因而出現(xiàn)了現(xiàn)場(chǎng)可編程邏輯器件(FPLD),其中應(yīng)用最廣泛的當(dāng)屬現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)和復(fù)雜可編程邏輯器件(CPLD)。早期的可編程邏輯器件只有可編程只讀存儲(chǔ)器(PROM)、紫外線可擦除只讀存儲(chǔ)器(EPROM)和電可擦除只讀存儲(chǔ)器(E2PROM)三種,由于結(jié)構(gòu)限制,只能完成簡(jiǎn)單的數(shù)字邏輯。其后,出現(xiàn)了一類結(jié)構(gòu)上較復(fù)雜的可編程芯片,即可編程邏輯器件(PLD),它能夠完成各種數(shù)字邏輯功能。主要產(chǎn)品有可編程邏輯陣列(PLA)和通用邏輯陣列(GAL)。PLA器件既有現(xiàn)場(chǎng)可編程的,也有掩模可編程的。在PLA基礎(chǔ)上,又發(fā)展了GAL,它采用E2PROM工藝,實(shí)現(xiàn)了電可擦寫(xiě),其輸出結(jié)構(gòu)是可編程的邏輯宏單元,因而在當(dāng)時(shí)用它進(jìn)行電路設(shè)計(jì)具有很強(qiáng)的靈活性。4.2.2FPGA和CPLD的比較FPGA和CPLD是半定制芯片的杰出代表。它們兼容了PLD和通用門(mén)陣列的優(yōu)點(diǎn),可實(shí)現(xiàn)較大規(guī)模的電路,編程也很靈活。與門(mén)陣列等其它ASIC相比,它們的規(guī)模隨著集成電路的發(fā)展越來(lái)越大,并且可反復(fù)擦寫(xiě),適合正向設(shè)計(jì),對(duì)知識(shí)產(chǎn)權(quán)的保護(hù)也很有利。設(shè)計(jì)人員用它們進(jìn)行電路設(shè)計(jì)開(kāi)發(fā)周期更短,研發(fā)費(fèi)用低,并且不需要具備專門(mén)的集成電路深層次的知識(shí)。

1.FPGA的優(yōu)勢(shì)可編程邏輯器件替代專用集成電路和專用標(biāo)準(zhǔn)電路(ASSP,ApplicationSpecificStandardProducts)的趨勢(shì)主要是因?yàn)镕PGA有許多明顯的優(yōu)點(diǎn),這些器件在邏輯密度、性能和特性上有驚人的增長(zhǎng),而且成本又低。目前,高容量的FPGA可以達(dá)到每提供10萬(wàn)門(mén)且運(yùn)行頻率在100MHz以上,而費(fèi)用不到10美元。2.CPLD的優(yōu)勢(shì)(1)布線能力。AlteraCPLD獨(dú)特的內(nèi)連線結(jié)構(gòu)使其內(nèi)連率很高,不需要人工布局布線來(lái)優(yōu)化速度和面積。這與XilinxFPGA有限的布線線段相比,更適合于電子系統(tǒng)設(shè)計(jì)自動(dòng)化中芯片設(shè)計(jì)的可編程器件驗(yàn)證。(2)延遲可預(yù)測(cè)能力。AlteraCPLD的連續(xù)式布線結(jié)構(gòu)決定了它的時(shí)序延遲是均勻的和可預(yù)測(cè)的,這更方便學(xué)生做設(shè)計(jì)。(3)適用場(chǎng)合。雖然CPLD和FPGA均可集成千門(mén)以上的數(shù)字邏輯電路,但相比較而言,CPLD更適合于完成各類算法和組合邏輯及小規(guī)模的時(shí)序邏輯。FPGA則更適合于時(shí)序較多的時(shí)序邏輯電路設(shè)計(jì)。4.2.3PLD/FPGA入門(mén)CPLD、FPGA兩者的功能基本相同,只是實(shí)現(xiàn)原理有所不同,有時(shí)我們可以忽略這兩者之間的區(qū)別,統(tǒng)稱為PLD或CPLD/FPGA,下面我們以PLD來(lái)統(tǒng)稱它們。PLD能做什么呢?它們能完成幾乎所有數(shù)字器件的功能,上至高性能CPU,下至簡(jiǎn)單的74系列電路。用戶可以通過(guò)傳統(tǒng)的原理圖輸入法,或是硬件描述語(yǔ)言自由地設(shè)計(jì)一個(gè)數(shù)字系統(tǒng)。通過(guò)軟件仿真,可以事先驗(yàn)證設(shè)計(jì)的正確性。在PCB完成以后,還可以利用PLD的在線調(diào)試能力,隨時(shí)修改設(shè)計(jì)而不必改動(dòng)硬件電路。如何使用PLD呢?使用PLD比學(xué)習(xí)單片機(jī)要簡(jiǎn)單得多,有一定數(shù)字電路基礎(chǔ),會(huì)使用計(jì)算機(jī),就可以進(jìn)行相應(yīng)的開(kāi)發(fā)。開(kāi)發(fā)PLD需要了解PLD器件和相應(yīng)的開(kāi)發(fā)軟件。由于PLD軟件已發(fā)展得相當(dāng)完善,用戶甚至可以不用詳細(xì)了解PLD的內(nèi)部結(jié)構(gòu),而用自己熟悉的方法(如原理圖輸入或VHDL語(yǔ)言)即可完成相當(dāng)優(yōu)秀的PLD設(shè)計(jì)。所以對(duì)初學(xué)者,首先應(yīng)了解PLD開(kāi)發(fā)軟件和開(kāi)發(fā)流程。而進(jìn)一步了解PLD的內(nèi)部結(jié)構(gòu),將有助于提高我們?cè)O(shè)計(jì)的效率和可靠性。PLD產(chǎn)品一般分為:基于乘積項(xiàng)(Product-Term)技術(shù)的E2PROM(或Flash)工藝的中小規(guī)模PLD;基于查找表(Look-UpTable)技術(shù)的SRAM工藝的大規(guī)模PLD/FPGA。E2PROM工藝的PLD密度小,多用于5000門(mén)以下的小規(guī)模設(shè)計(jì),適合做復(fù)雜的組合邏輯,如譯碼。SRAM工藝的FPGA密度高,觸發(fā)器多,多用于10000門(mén)以上的大規(guī)模設(shè)計(jì),適合做復(fù)雜的時(shí)序邏輯,如數(shù)字信號(hào)處理和各種算法。目前有多家公司生產(chǎn)CPLD/FPGA,最大的幾家是Altera、Xilinx、Lattice和Actel。在PLD/FPGA開(kāi)發(fā)軟件中完成設(shè)計(jì)以后,軟件會(huì)產(chǎn)生一個(gè)最終的編程文件(如.pof)。下面介紹將編程文件燒到PLD芯片中去的方法。(1)對(duì)于基于乘積項(xiàng)(Product-Term)技術(shù)的E2PROM(或Flash)工藝的PLD(如Altera的MAX系列、Lattice的大部分產(chǎn)品、Xilinx的XC9500系列),廠家提供編程電纜,如Altera叫Byteblaster,電纜一端裝在計(jì)算機(jī)的并行打印口上,另一端接在PCB板上的一個(gè)十芯插頭。PLD芯片有四個(gè)管腳(編程腳)與插頭相連,它向系統(tǒng)板上的器件提供配置或編程數(shù)據(jù),這就是所謂的在線可編程(ISP)。Byteblaster使用戶能夠獨(dú)立地配置PLD器件,而不需要編程器或任何其它編程硬件。編程電纜可以向代理商購(gòu)買,也可以根據(jù)廠家提供的編程電纜的原理圖自己制作,成本僅需一二十元。目前的PLD都可以用ISP在線編程,也可用編程器編程。(2)對(duì)于基于查找表(Look-UpTable)技術(shù)的SRAM工藝的FPGA(如Altera的所有FLEX、ACEX、APEX系列,Xilinx的Spartan、Virtex),由于SRAM工藝的特點(diǎn),掉電后數(shù)據(jù)會(huì)消失,因此調(diào)試期間可以用下載電纜配置PLD器件,調(diào)試完成后,需要將數(shù)據(jù)固化在一個(gè)專用的E2PROM中(用通用編程器燒寫(xiě)),由這片E2PROM先對(duì)PLD加載數(shù)據(jù),十幾毫秒后,PLD即可正常工作。(3)反熔絲(Anti-fuse)技術(shù)的FPGA,如Actel、Quicklogic及Lucent的部分產(chǎn)品就采用這種工藝。用法與E2PROM的PLD一樣,但這種的PLD是不能重復(fù)擦寫(xiě)的,所以初期開(kāi)發(fā)過(guò)程比較麻煩,費(fèi)用也比較高。但反熔絲技術(shù)也有許多優(yōu)點(diǎn):布線能力更強(qiáng),系統(tǒng)速度更快,功耗更低,同時(shí)抗輻射能力強(qiáng),耐高低溫,可以加密,所以在一些有特殊要求的領(lǐng)域中運(yùn)用較多,如軍事及航空航天領(lǐng)域。4.2.4可編程ASIC的發(fā)展趨勢(shì)1.CPLD和FPGA的發(fā)展方向CPLD和FPGA未來(lái)的發(fā)展呈現(xiàn)出以下幾方面趨勢(shì):(1)向高密度、超大規(guī)模的方向發(fā)展。目前高密度可編程ASIC已具備了片上系統(tǒng)SoC的集成能力,產(chǎn)品性能發(fā)生了巨大飛躍。(2)向系統(tǒng)內(nèi)可重構(gòu)方向發(fā)展。系統(tǒng)內(nèi)可重構(gòu)是指可編程ASIC在置入用戶系統(tǒng)后仍具有改變其內(nèi)部功能的能力,從而在電子系統(tǒng)中引入“軟硬件”的全新概念,極大地提高了電子系統(tǒng)的靈活性和適應(yīng)性。(3)向低電壓、低功耗的方向發(fā)展。可編程ASIC作為電子系統(tǒng)的重要組成部分,不可避免地向3.3/2.5/1.8V的標(biāo)準(zhǔn)靠攏,擴(kuò)大應(yīng)用范圍,滿足節(jié)能要求。(4)向高速可預(yù)測(cè)延時(shí)器件的方向發(fā)展??删幊藺SIC產(chǎn)品如果要在高速系統(tǒng)中占有一席之地,必然要求器件向這方面發(fā)展。(5)向混合可編程的技術(shù)方向發(fā)展。迄今為止,有關(guān)可編程ASIC的研究和開(kāi)發(fā)的大部分工作基本上都集中在數(shù)字邏輯電路上,未來(lái)的局面將會(huì)有所改變,模擬電路和混合電路的可編程技術(shù)將得到發(fā)展??删幊棠MASIC作為今后模擬電子電路設(shè)計(jì)的一個(gè)發(fā)展方向,必將翻開(kāi)模擬電路設(shè)計(jì)的新篇章,使得模擬電子系統(tǒng)的設(shè)計(jì)也和數(shù)字系統(tǒng)設(shè)計(jì)一樣簡(jiǎn)單易行??删幊藺SIC是一門(mén)正在發(fā)展的技術(shù),未來(lái)發(fā)展的動(dòng)力仍來(lái)自于實(shí)際應(yīng)用的要求和制造商之間的競(jìng)爭(zhēng)。可編程ASIC在結(jié)構(gòu)、密度、功能、速度和靈活性方面將得到進(jìn)一步發(fā)展,在現(xiàn)代電子系統(tǒng)設(shè)計(jì)中將起到越來(lái)越重要的作用。2.可編程SoC近年來(lái),PLD一直呈現(xiàn)出很好的發(fā)展態(tài)勢(shì)。PLD靈活方便,不僅性能、速度、連接具有優(yōu)勢(shì),而且可以縮短上市時(shí)間,因此,應(yīng)用領(lǐng)域在不斷拓展。隨著通信設(shè)備、數(shù)據(jù)傳輸,以及計(jì)算技術(shù)的高速化和復(fù)雜化,對(duì)PLD的集成度和性能也提出了越來(lái)越高的要求,因此可編程片上系統(tǒng)或平臺(tái),即可編程SoC就應(yīng)運(yùn)而生。為了在潛力巨大的通信市場(chǎng)占有更大的份額,業(yè)界重要的可編程邏輯器件制造商都先后推出了自己的系統(tǒng)級(jí)產(chǎn)品。概括起來(lái)大致是采用兩種方法來(lái)實(shí)現(xiàn)可編程SoC:一種是在可編程器件FPGA中嵌入CPU內(nèi)核,獲得可編程系統(tǒng)平臺(tái);另一種是將可編程模塊置入ASIC之中,得到具有可配置功能的ASIC。下面分別介紹各公司的SoC典型產(chǎn)品。(1)Actel公司的VariCore內(nèi)核和ProASICPlusFPGA。Actel公司是反熔絲(一次性燒寫(xiě))PLD的領(lǐng)導(dǎo)者,由于反熔絲PLD抗輻射,耐高低溫,功耗低,速度快,所以在軍品和宇航級(jí)上有較大優(yōu)勢(shì)。(2)Altera公司的Excalibur嵌入處理器方案和Stratix器件。Altera的StratixTM器件是構(gòu)建在新的MultiTrackTM布線結(jié)構(gòu)之上的,是一種基于模塊的設(shè)計(jì),使用戶能夠方便地以一些小功能模塊構(gòu)建復(fù)雜的設(shè)計(jì)。其性能比Altera的APEXTMII器件提升了40%,內(nèi)核尺寸比以前的體系小35%,提供多達(dá)10MB的RAM和114140個(gè)邏輯單元,是相近產(chǎn)品存儲(chǔ)容量的3倍,邏輯單元多出21000個(gè)。另外,Stratix器件包括了專用DSP功能,能夠?qū)崿F(xiàn)比一般PLD快兩倍的DSP和復(fù)雜計(jì)算應(yīng)用,是容量大且速度快的可編程邏輯器件。(3)Atmel公司的Fpslic系列產(chǎn)品。Atmel公司推出的AT94K和AT94S系列現(xiàn)場(chǎng)可編程系統(tǒng)級(jí)芯片(Fpslic),將組成基本系統(tǒng)所需的邏輯、外設(shè)、存儲(chǔ)器和微控制器等嵌入式系統(tǒng)模塊集成在一片基于SRAM的現(xiàn)場(chǎng)可編輯器件上,實(shí)現(xiàn)單芯片可編程SoC。Fpslic把AT40KFPGA和一個(gè)高性能AVR8位RISCMCU結(jié)合在一起,在一個(gè)芯片上集成有兩個(gè)UART、一個(gè)時(shí)鐘計(jì)數(shù)器、可編程I/O、36KSRAM,能節(jié)約70%的芯片面積,50%的功耗,同時(shí)性能也提高了50%。Fpslic可在FPGA內(nèi)對(duì)附加的外圍設(shè)備和定制邏輯電路進(jìn)行編程,與使用分立元件的和其它類型方案相比,可以加快產(chǎn)品面市時(shí)間。AVR微控制器和FPGA邏輯電路的微碼可以無(wú)數(shù)次地重新配置,從而使Fpslic器件成為開(kāi)發(fā)基于單集成電路的多端產(chǎn)品的理想平臺(tái)。(4)Lattice公司的FPSC和ORCAFPGA。萊迪思半導(dǎo)體(LatticeSemiconductor)公司在集成ASIC宏單元和FPGA門(mén)于同一個(gè)硅片的方法方面處于領(lǐng)先位置。它們將該技術(shù)稱之為單片現(xiàn)場(chǎng)可編程系統(tǒng)(FPSC)。與帶有嵌入式FPGA門(mén)的ASIC相比,F(xiàn)PSC器件是提供系統(tǒng)解決方案的器件。FPSC器件將ORCASeries4型FPGA可編程邏輯結(jié)構(gòu)與總線接口、高速線路接口及高速收發(fā)器等內(nèi)嵌的IP核組合起來(lái),形成優(yōu)化的ASIC門(mén)。這意味著FPSC器件不僅是單芯片系統(tǒng),而且還是集使用靈活性和高性能于一身的針對(duì)復(fù)雜功能的強(qiáng)大的IP載體。嵌入式宏單元擁有工業(yè)標(biāo)準(zhǔn)IP核,諸如PCI、高速線接口和高速收發(fā)器。當(dāng)這些宏單元與成千上萬(wàn)的可編程門(mén)結(jié)合起來(lái)時(shí),它們可應(yīng)用在各種不同的高級(jí)系統(tǒng)設(shè)計(jì)中。Lattice公司的ORCA現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)是構(gòu)建在所熟悉的優(yōu)化重組單元陣列(FPGA)結(jié)構(gòu)上的、新的現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)系列。這種FPGA器件系列提供了許多新的特征和架構(gòu)增強(qiáng)特性,而早期的FPGA不具備這些特點(diǎn)。結(jié)合靈活的基于SRAM的可編程邏輯強(qiáng)有力的系統(tǒng)特征,豐富的布線層次和互連資源,以及融合多接口標(biāo)準(zhǔn),F(xiàn)PGA的ORCAFPGA系列可以適用于大多數(shù)復(fù)雜、高性能的設(shè)計(jì)。關(guān)于FPSC和ORCAFPGA的更多信息,請(qǐng)瀏覽公司網(wǎng)站:,和。(5)QuickLogic公司的QuickMIPS。QuickLogic的優(yōu)勢(shì)是連接邏輯門(mén)的方法,該公司使用一種稱作ViaLink的無(wú)晶體管連接方法,可以放入更多的信號(hào)繞線開(kāi)關(guān)。該公司早在1999年就推出了在FPGA中集成了類似微處理器和高速串行接口功能的嵌入式標(biāo)準(zhǔn)產(chǎn)品(ESP)。QuickLogic公司新推的QuickMIPS產(chǎn)品系列采用了嵌入式MIPS處理器以及其它專用內(nèi)核。(6)賽靈思(Xilinx)公司的VirtexIIProFPGA。賽靈思(Xilinx)公司是FPGA的發(fā)明者,他們推出的Virtex-IIProTMFPGA系列產(chǎn)品,采用0.13μm工藝,9層金屬結(jié)構(gòu),BGA封裝,是基于Virtex-II系列基礎(chǔ)的高端FPGA。其主要特點(diǎn)是在VirtexII上增加了高速I/O接口能力和嵌入了IBM公司的PowerPC處理器,以解決高性能系統(tǒng)結(jié)構(gòu)所面臨的挑戰(zhàn)。IBM和Xilinx合作,利用IP植入(IPImmersion)技術(shù),在Virtex-II結(jié)構(gòu)中植入領(lǐng)先的嵌入式處理器結(jié)構(gòu)IBMPowerPC。Virtex-IIPro系列支持最多達(dá)4個(gè)運(yùn)行頻率高達(dá)300MHz的PowerPC405處理器。這種植入方法允許硬IP核心分布在Virtex結(jié)構(gòu)中的任何位置,同時(shí)可保持與周圍邏輯陣列的平滑集成。IP植入技術(shù)將核心中的所有高速總線與可編程結(jié)構(gòu)直接密切耦合,從而獲得了比同樣的分立處理器高得多的系統(tǒng)級(jí)性能。Virtex-IIProFPGA還集成了RocketIOTM技術(shù),這是支持多端口的3.125Gb/s串行接口的可編程解決方案。這一集成為高性能接口標(biāo)準(zhǔn),如千兆位以太網(wǎng)、10G以太網(wǎng)、3GIO、SerialATA、Infiniband和FibreChannel提供了一個(gè)完全的解決方案。Virtex-II結(jié)構(gòu)還包括了先進(jìn)的主動(dòng)互連(ActiveInterconnect)、塊RAM(BlockRAM)和時(shí)鐘管理功能。關(guān)于Virtex-IIProFPGA的更多信息,請(qǐng)瀏覽http://www.X。綜上所述,可編程SoC已經(jīng)逐漸成可編程器件的發(fā)展趨勢(shì)。ASIC與FPGA融合的概念得到越來(lái)越多的可編程器件廠商的認(rèn)同,盡管FPGA和ASIC各具特點(diǎn),但這些融合產(chǎn)品逐漸模糊了兩者之間的界限。目前,雖然有許多這種融合的高性能ASIC替代產(chǎn)品進(jìn)入市場(chǎng),而且今后的發(fā)展方向也可能是兩者進(jìn)一步融合,但是,據(jù)預(yù)測(cè),在今后一段時(shí)間內(nèi)ASIC仍然會(huì)占據(jù)高端芯片市場(chǎng)。4.3MAX+PLUSII及其應(yīng)用4.3.1MAX+PLUSII軟/硬件環(huán)境1.MAX+PLUSII簡(jiǎn)介Altera公司的MAX+PLUSII開(kāi)發(fā)軟件系統(tǒng)是一個(gè)完全集成化、易學(xué)易用的可編程邏輯設(shè)計(jì)環(huán)境,它可以從網(wǎng)上自由下載,并可去Altera公司申請(qǐng)非商用的版權(quán)許可證文件(license.dat),基本滿足萬(wàn)門(mén)級(jí)設(shè)計(jì)需求。該軟件具有以下優(yōu)點(diǎn):(1)開(kāi)放的界面。(2)與結(jié)構(gòu)無(wú)關(guān)。(3)多平臺(tái)。(4)完全集成化。(5)豐富的設(shè)計(jì)庫(kù)。(6)開(kāi)放核(OpenCore)特性。2.如何選擇合適的芯片(1)一般情況下,盡可能選用速度等級(jí)最低的芯片,盡可能選用電壓比較低的芯片(性價(jià)比較好),盡可能選用貼片封裝的芯片。(2)如果設(shè)計(jì)中不需要使用容量較大的內(nèi)嵌式存儲(chǔ)器,或超過(guò)256個(gè)宏單元的設(shè)計(jì)盡量選用FLEX6000系列的芯片,否則要用FLEX10K或1K。(3)如果設(shè)計(jì)中需要較大的存儲(chǔ)器和比較簡(jiǎn)單的外圍邏輯電路,而且對(duì)速度、總線寬度和PCB板面積無(wú)特殊要求的情況下,盡量選用一片MAX7000或3000系列的芯片和外接存儲(chǔ)器。(4)在速度較高的雙向總線上盡量采用MAX7000或3000系列的芯片。(5)如設(shè)計(jì)規(guī)模需要超過(guò)10萬(wàn)門(mén)或需要PLL、LVDS、CAM等新技術(shù),則可以選擇APEX20KE。為保證及時(shí)供貨和性價(jià)比,新設(shè)計(jì)應(yīng)優(yōu)先選擇以下型號(hào):MAX7032SLC44-10、7064SLC44-10、7128SLC84-15、7128STC100-15、7128AETC100-10、7128AETC144-10、FLEX6016AQC208-3、6016ATC144-3、10K20TC144-4、10K30EQC208-3、10K50EQC240-3以及剛剛推出的MAX3032ALC44-10、3064STC100-10、APEX20KE、ACEX1K等。最好先和代理商溝通,再確認(rèn)所需型號(hào)。

3.交通燈芯片選擇實(shí)例(1)綜合考慮上面的這些因素,以及開(kāi)設(shè)其它EDA實(shí)驗(yàn)的需要,我們所要設(shè)計(jì)交通燈控制器實(shí)驗(yàn)所用的芯片選用Altera公司的MAX7000S系列中的EPM7128SLC8415。(2)MAX7000系列是工業(yè)界中速度較快的高集成度可編程邏輯器件系列。它是在Altera公司的第二代MAX結(jié)構(gòu)基礎(chǔ)上,采用先進(jìn)的CMOSE2PROM技術(shù)制造的,可百分之百模仿TTL。MAX7000系列(包括MAX7000E、MAX7000S和MAX7000A器件)的集成度為600~5000可用門(mén),使用5V或3.3V電源,有32~256個(gè)宏單元和36~155個(gè)用戶I/O引腳。能夠提供組合傳輸延遲快至5.0ns,16位計(jì)數(shù)器的頻率為178MHz,遵守PCI規(guī)定,可編程宏單元觸發(fā)器具有專用清除、置位、時(shí)鐘和時(shí)鐘使能控制。此外,它們輸入寄存器的建立時(shí)間非常短,能提供多個(gè)系統(tǒng)時(shí)鐘且有可編程的速度/功率控制。另外還有編程保密位,全面保護(hù)專利設(shè)計(jì)。(3)MAX7000S是MAX7000的增強(qiáng)型,具有高集成度,還有6個(gè)由引腳或邏輯驅(qū)動(dòng)的輸出使能,2個(gè)可選為反向工作的全局時(shí)鐘信號(hào);并且改善了布局布線,增加了連線資源,加快了從I/O引腳到宏單元寄存器的專用路徑的建立時(shí)間。EPM7128SLC8415有2500個(gè)可用門(mén)、84個(gè)引腳

,其中輸入輸出的引腳為68個(gè)。MAX7000S包括邏輯陣列塊(LAB)、宏單元(MacroCells)、擴(kuò)展乘積項(xiàng)(共享和并聯(lián))、可編程連線陣列(PIA)和I/O控制塊五部分。另外,MAX7000結(jié)構(gòu)中還包括4個(gè)專用輸入,它能用作通用輸入或作為每個(gè)宏單元和I/O引腳的高速的、全局的控制信號(hào),即時(shí)鐘(Clock),清除(Clear)和輸出使能(OutputEnable)。器件方框圖如圖4-2所示。圖4-2MAX7000S的結(jié)構(gòu)方框圖4.3.2MAX+PLUSII的設(shè)計(jì)過(guò)程MAX+PLUSII10.1是由設(shè)計(jì)輸入、設(shè)計(jì)處理、設(shè)計(jì)校驗(yàn)和器件編程四部分組成,如圖4-3所示。圖4-3MAX+PLUSII的設(shè)計(jì)流程

1.設(shè)計(jì)輸入MAX+PLUSII設(shè)計(jì)輸入的方法有多種,包括原理圖輸入方式、文本設(shè)計(jì)輸入方式、高級(jí)設(shè)計(jì)輸入方式、波形設(shè)計(jì)輸入方式、層次設(shè)計(jì)輸入方式和底層設(shè)計(jì)輸入方式。最常用的是原理圖輸入和文本輸入兩種方式。(1)原理圖輸入是指用MAX+PLUSII提供的各種原理圖庫(kù)進(jìn)行設(shè)計(jì)輸入,是一種最直觀的輸入方式,但是輸入效率低。(2)文本設(shè)計(jì)輸入是指設(shè)計(jì)者用VHDL、VerilogHDL或AHDL(ALTERA自己開(kāi)發(fā)的硬件描述語(yǔ)言)編寫(xiě)HDL源程序進(jìn)行輸入。采用這種方法描述的優(yōu)點(diǎn)是效率高,結(jié)果也較容易仿真,在不同設(shè)計(jì)庫(kù)之間的轉(zhuǎn)換非常方便。

2.項(xiàng)目編譯MAX+PLUSII處理一個(gè)設(shè)計(jì)時(shí),Compiler在設(shè)計(jì)文件中讀取信息并產(chǎn)生編譯文件和仿真文件,TimingAnalyzer可分析設(shè)計(jì)定時(shí),MessageProcessor可自動(dòng)定位錯(cuò)誤。(1)自動(dòng)錯(cuò)誤定位。MessageProcessor與MAX+PLUSII的所有應(yīng)用程序通信,可以給出信息(錯(cuò)誤、警告等)。設(shè)計(jì)者可以利用它打開(kāi)有錯(cuò)誤源的文件,并以高亮顯示。(2)邏輯綜合與試配。MAX+PLUSIICompiler的LogicSynthesize(邏輯綜合)模塊對(duì)設(shè)計(jì)方案進(jìn)行邏輯綜合并能看到真正的結(jié)果。Fitter(試配)模塊應(yīng)用試探法可把經(jīng)過(guò)綜合的設(shè)計(jì)最恰當(dāng)?shù)赜靡粋€(gè)或多個(gè)器件實(shí)現(xiàn),使設(shè)計(jì)者得以從冗長(zhǎng)的布局布線工作中解脫出來(lái),生成報(bào)告文件(.rpf),該文件顯示設(shè)計(jì)的具體實(shí)現(xiàn)以及器件中未使用的資源,并說(shuō)明用戶的定時(shí)要求是如何具體實(shí)現(xiàn)的。(3)設(shè)計(jì)規(guī)則檢查。Compiler中的DesignDoctor程序能檢查每一個(gè)設(shè)計(jì)文件。用戶可以選擇預(yù)先定義好的三組檢查規(guī)則中的一種,也可以建立自己的規(guī)則。(4)編譯文件的產(chǎn)生。Assemble(裝配程序)模塊為已編譯的設(shè)計(jì)創(chuàng)建燒寫(xiě)文件(.pof)。

3.設(shè)計(jì)校驗(yàn)(1)仿真。電路設(shè)計(jì)輸入完之后,首先須檢驗(yàn)輸入是否正確,這是一項(xiàng)簡(jiǎn)單的邏輯檢查。MAX+PLUSII提供了功能編譯選項(xiàng),此時(shí),只運(yùn)行仿真網(wǎng)表的提取,而不做布局布線。所有延時(shí)為零延時(shí),在仿真時(shí)需加入激勵(lì)信號(hào),激勵(lì)信號(hào)可以用波形編譯器直接編譯成波形文件,也可以先用文本編輯器按軟件給定的語(yǔ)法規(guī)則編輯成文本再轉(zhuǎn)換成波形文件,如檢查到錯(cuò)誤則需修改原設(shè)計(jì)方案。功能仿真無(wú)誤后,需要進(jìn)行后仿真。首先進(jìn)行完全編譯,每個(gè)設(shè)計(jì)項(xiàng)目都有一個(gè)配置文件(.acf),所有配置參數(shù)都存放在這里。如果需要修改配置,既可在菜單上修改,也可以直接修改此文件。對(duì)于相對(duì)簡(jiǎn)單的設(shè)計(jì),也可以只做一步仿真,即后仿真。(2)定時(shí)分析。TimingAnalyzer可以計(jì)算點(diǎn)到點(diǎn)的器件延時(shí)矩陣,確定器件引腳上的建立時(shí)間與保持時(shí)間,還可以計(jì)算最高時(shí)鐘頻率。MessageProcessor可以找出TimingAnalyzer在設(shè)計(jì)文件中已證實(shí)的關(guān)鍵路徑,并在適當(dāng)?shù)脑O(shè)計(jì)編輯器中加以實(shí)現(xiàn)。

4.器件編程MAX+PLUSIIProgrammer是使用Compiler生成的燒寫(xiě)文件(.pof)對(duì)Altera器件進(jìn)行編程的。它可以用來(lái)對(duì)器件編程、校驗(yàn)、檢查是否空白以及進(jìn)行功能測(cè)試。4.3.3用MAX+PLUSII設(shè)計(jì)交通燈控制器

1.系統(tǒng)功能要求分析和設(shè)計(jì)方案論證按照Top-Down設(shè)計(jì)流程,首先要進(jìn)行系統(tǒng)的功能要求分析。我們假設(shè)為某鄉(xiāng)村公路(以下簡(jiǎn)稱為F)和高速公路(以下簡(jiǎn)稱為H)十字路口設(shè)置交通燈。要求兩公路均有紅黃綠三色燈。保證H絕對(duì)優(yōu)先,初始狀態(tài)H綠燈,F(xiàn)紅燈。正常狀態(tài)下,當(dāng)監(jiān)測(cè)F有車時(shí),整個(gè)系統(tǒng)啟動(dòng),經(jīng)過(guò)t1時(shí)間以后,H轉(zhuǎn)為黃燈,再經(jīng)過(guò)t2時(shí)間以后,H轉(zhuǎn)為紅燈,F(xiàn)轉(zhuǎn)為綠燈。如在以上時(shí)間段內(nèi),F(xiàn)上的車?yán)@道行駛,則直接跳變回初狀態(tài)。在H紅燈、F綠燈狀態(tài)下,如果監(jiān)測(cè)到F上沒(méi)車,或者已達(dá)到最長(zhǎng)通行時(shí)間t3,則F轉(zhuǎn)為黃燈,再經(jīng)過(guò)t2時(shí)間以后,H轉(zhuǎn)為綠燈、F轉(zhuǎn)為紅燈;緊急狀態(tài)下緊急狀態(tài)顯示燈開(kāi)啟,只允許H通車。根據(jù)系統(tǒng)功能要求,確定系統(tǒng)的輸入信號(hào)和輸出信號(hào)。輸入信號(hào)有:系統(tǒng)時(shí)鐘信號(hào)clk,系統(tǒng)復(fù)位信號(hào)reset,緊急狀態(tài)信號(hào)sp,鄉(xiāng)村公路有車信號(hào)car_on_farm。輸出信號(hào)有:鄉(xiāng)村公路狀態(tài)信號(hào)farmroad_light[1..0],高速公路狀態(tài)信號(hào)highway_light[1..0]以及緊急狀態(tài)顯示信號(hào)special_light。根據(jù)以上設(shè)定的輸入輸出信號(hào)關(guān)系和對(duì)系統(tǒng)功能要求的分析,可建立如圖4-4所示的系統(tǒng)的狀態(tài)轉(zhuǎn)換圖(ASM)。圖4-4交通燈系統(tǒng)狀態(tài)圖

2.系統(tǒng)頂層的VHDL描述和仿真狀態(tài)圖分析完畢以后,可以根據(jù)它編寫(xiě)頂層的VHDL源程序,并進(jìn)行編譯仿真。具體過(guò)程如下:(1)啟動(dòng)MAX+PLUSII,建立新文件,進(jìn)入文字編譯。(2)保存文件:保存為traffic_con.vhd。(3)選定項(xiàng)目名與文件名相同(SetProjectToCurrentFile)。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitytraffic_conisport(car_on_farm:inboolean;clk,reset,sp:instdlogic;highway_light:outstd_logic_vector(1downto0);farmroad_light:outstd_logic_vector(1downto0);special_light:outstd_logic);endtraffic_con;architectureaoftraffic_conissignalhigh_state:std_logic_vector(1downto0);signalfarm_state:std_logic_vector(1downto0);signalpresent_state:std_logic_vector(1downto0);beginprocess(clk)variablem,g:integerrange0to30∶=30;variablen:integerrange0to10∶=10;beginifreset=′1′thenpresent_state<=″00″;high_state<=″00″;farm_state<=″10″;m∶=30;n∶=10;elsifclk′eventandclk=′1′thencasepresent_stateis when″00″=>ifsp=′1′thenspecial_light<=′1′;elsespecial_light<=′0′;ifcar_on_farmthenm∶=m-1;endif;ifm=0thenpresent_state<=″01″;high_state<=″01″;m∶=30;endif;endif;when″01″=>ifnotcar_on_farmthenpresent_state<=″00″;high_state<=″00″;n∶[KG_*3]=10;elsen∶=n-1;endif;ifn=0thenpresent_state<=″10″;high_state<=″10″;farm_state<=″00″;n∶=10;endif;when″10″=>m∶=m-1;ifnotcar_on_farmorm=0thenpresent_state<=″11″;farm_state<=″01″;m∶=30;endif;whenothers=>n∶=n-1;ifn=0thenpresent_state<=″00″;high_state<=″00″;farm_state<=″10″;n∶=10;endif;endcase;endif;endprocess;highway_light<=high_state;farmroad_light<=farm_state;enda;圖4-5MAX+PLUSII編譯圖示(5)指定設(shè)計(jì)器件:選取窗口菜單Assign→Device,出現(xiàn)對(duì)話框,選擇MAX7000S系列EPM7128SLC847。(6)保存并檢查:選取窗口菜單File→Project→Save&Check,即可對(duì)電路設(shè)計(jì)文件進(jìn)行檢查。如有錯(cuò)誤,會(huì)自動(dòng)指示錯(cuò)誤位置,以便修改。(7)保存并編譯:選取File→Project→Save&Compile,即可進(jìn)行編譯。圖4-5中有“Compile”對(duì)話框即為編譯框。(8)編譯通過(guò)后,就可進(jìn)行仿真了。從Top-Down設(shè)計(jì)方法來(lái)看,各個(gè)層次上的仿真波形分析必須保持一致。

3.8MHz分頻程序由于本次試驗(yàn)板上提供的時(shí)鐘是16MHz的,所以我們還需要一個(gè)8MHz分頻。其VHDL源程序(div8M_v.VHD)如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydiv8M_visport(clki:instd_logic;clko:outstd_logic);enddiv8M_v;architectureaofdiv8M_vissignalcou:std_ligic_vector(22downto0);beginprocessbeginwaituntilclki=′1′;cou<=cou+1;endprocess;clko<=cou(22);enda;

4.交通燈控制器的頂層模塊在主程序中調(diào)用div8m_v和traffic_con兩個(gè)模塊,就構(gòu)成了交通燈控制器的頂層模塊。主程序VHDL描述如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitytrafficisport(car_on_farm :in boolean;clk,reset,sp :instd_logic;highway_light :outstd_logic_vector(1downto0);farmroad_light :outstd_logic_vector(1downto0); special_light:outstd_logic);endtraffic;architectureaoftrafficissignalclka:std_logic;componentdiv8m_vport(clki:instd_logic;clko:outstd_logic);endcomponent;componenttraffic_conport(car_on_farm:inboolean;clk,reset,sp:instd_logic;highway_light:outstd_logic_vector(1downto0);farmroad_light:outstd_logic_vector(1downto0);special_light:outstd_logic);endcomponent;beginn1:div8m_vportmap(clki=>clk,clko=>clka);n2:traffic_conportmap(car_on_farm=>car_on_farm,clk=>clka,reset=>reset,sp=>sp,special_light=>special_light,highway_light=>highway_light,farmroad_light=>farmroad_light);enda;圖4-6交通燈系統(tǒng)頂層模塊示意圖

5.系統(tǒng)的模塊劃分及實(shí)現(xiàn)按照Top-Down層次化設(shè)計(jì)要求,我們需要對(duì)頂層系統(tǒng)進(jìn)行模塊劃分,詳見(jiàn)圖4-7。從圖4_7可見(jiàn),交通燈系統(tǒng)具體分為以下幾個(gè)部分:交通燈控制部分——traffic_con2,一個(gè)8MHz分頻器——div8M_v,兩個(gè)減法計(jì)數(shù)器(十、三十進(jìn)制)count10_v,count30_v。劃分好模塊以后,我們就可以將各個(gè)具體模塊分別的編譯仿真,具體過(guò)程和上邊頂層模塊大同小異,在此不再贅述。圖4-7交通燈系統(tǒng)的模塊劃分6.主要部分的VHDL源程序(1)十進(jìn)制減法計(jì)數(shù)器(count10_v.vhd):libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycout10_visport(clrn,clk:instd_logic;qa:outstd_logic_vector(3downto0);rco:outstd_logic);endcout10_v;architectureaofcout10_visbeginprocess(clk)variabletmpa,tmpb:std_logic_vector(3downto0);begintmpb∶=nottmpa;ifclrn=′0′thentmpa∶=″1010″;elsif(clk′eventandclk=′1′)theniftmpa=″0000″thentmpa∶=″1001″;elsetmpa∶=tmpa_1;endif;endif;qa<=tmpa;rco<=tmpb(0)andtmpb(1)andtmpb(2)andtmpb(3);endprocess;enda;(2)三十進(jìn)制減法計(jì)數(shù)器(count30_v.vhd):libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycout30_vISprot(clrn,clk:instd_logic;qa:outstd_logic_vector(3downto0);qb:outstd_logic_vector(1downto0);rco:outstd_logic);endcout30_v;architectureaofcout30_visbeginprocess(clk)variabletmpa,tmpc:std_logic_vector(3downto0);variabletmpb,tmpd:std_logic_vector(1downto0);begintmpc∶=nottmpa;tmpd∶=nottmpb;ifclrn=′0′thentmpb∶=″11″;tmpa∶=″1010″;elsif(Clk′eventandclk=′1′)theniftmpa=″0000″thentmpa∶=″1001″;iftmpb=″00″thentmpb∶=″10″;elsetmpb∶=tmpb_1;endif;elsetmpa∶=tmpa_1;endif;endif;qa<=tmpa;qb<=tmpb;rco<=tmpd(1)andtmpd(0)andtmpc(0)andtmpc(3)andtmpc(1)andtmpc(2);endprocess;enda;(3)交通燈控制模塊程序:useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitytraffic_con2isport(car_on_farm:inboolean;clk,reset,sp,long_time_out,short_time_out:instd_logic;highway_light:outstd_logic_vector(1downto0);farmroad_light:outstd_logic_vector(1downto0);special_light,long_begin,short_begin:outstd_logic);endtraffic_con2;architectureaoftraffic_con2issignalhigh_state,farm_state:std_logic_vector(1downto0);signalpresent_state:std_logic_vector(1downto0);beginprocess(clk)beginifreset=′1′thenpresent_state<=″00″;high_state<=″00″;farm_state<=″10″;elsifclk′eventandclk=′1′thencasepresent_stateiswhen″00″=>ifsp=′1′thenspecial_light<=′1′;elsespecial_light<=′0′;ifcar_on_farmthenlong_begin<=′1′;elselong_begin<=′0′;endif; iflong_time_out=′1′thenpresent_state<=″01″;high_state<=″01″;long_begin<=′0′;endif;endif;when″01″=>ifnotcar_on_farmthenpresent_state<=″00″;high_state<=″00″;elseshort_begin<=′1′;endif;ifshort_time_out=′1′thenpresent_state<=″10″;high_state<=″10″;farm_state<=″00″;short_begin<=′0′; endif;when″10″=>long_begin<=′1′;ifnotcar_on_farmorlong_time_out=′1′thenpresent_state<=″11″;farm_state<=″01″;long_begin<=′0′;endif;whenothers=>short_begin<=′1′;ifshort_time_out=′1′thenpresent_state<=″00″;high_state<=″00″;farm_state<=″10″; short_begin<=′0′; endif;endcase;endif;endprocess;highway_light<=high_state;farmroad_light<=farm_state;enda;(4)包文件源程序。各模塊編譯完成之后,就需要在交通燈系統(tǒng)主程序中調(diào)用,所以需要?jiǎng)?chuàng)建一個(gè)包文件。源程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;packagetraffic_package1IScomponentcout30_vport(clrn,clk:instd_logic;rco:outstd_liguc);endcomponent;componentcout10_vport(clrn,clk:instd_logic;rco:outstd_logic);endcomponent;componentdiv8m_vport(clki:instd_logic;clko:outstd_logic);endcomponent;componenttraffic_con2port(car_on_farm:inboolean;clk,reset,sp,long_time_out,short_time_out:instd_logic;highway_light,farmroad_light:outstd_logic_vector(1downto0);special_light,long_begin,short_begin:outstd_logic);endcomponent;endtraffic_package1;(5)主程序。主程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;usework.traffic_package1.all;entitytraffic2isport(car_on_farm:inboolean;clka,reset,sp:instd_logic;highway_light,farmroad_light:outstd_logic_vector(1downto0);special_light:outstd_logic);endtraffic2;architecturecontainoftraffic2issignallb,sb,lto,sto,clk:std_logic;begindiv8m:div8m_vportmap(clki=>clka,clko=>clk);contral1:traffic_con2portmap(car_on_farm=>car_on_farm,clk=>clk,sp=>sp,reset=>reset,long_time_out=>lto,short_time_out=>stohighway_light=>highway_light,farmroad_light=>farmroad_light,long_begin=>lb,special_light=>special_light,short_begin=>sb);count30:cout30_vportmap(clrn=>lb,clk=>clk,rco=>lto);count10:cout10_vportmap(clrn=>sb,clk=>clk,rco=>sto);,endcontain;

7.燒寫(xiě)文件將以上文件再次進(jìn)行完全編譯。產(chǎn)生燒寫(xiě)文件(.pof)、電路包含文件(.inc)等。選擇MAXPLUSII中的HierarchyDisplay項(xiàng),我們可以以層次樹(shù)的方式顯示整個(gè)項(xiàng)目和電路的設(shè)計(jì)文件。交通燈控制器的層次樹(shù)如圖4-8所示。圖4-8交通燈系統(tǒng)的層次顯示

8.系統(tǒng)的時(shí)間分析和仿真編譯無(wú)誤之后就可進(jìn)行系統(tǒng)的時(shí)間分析和仿真。(1)電路的時(shí)間分析。選取窗口菜單Utilities→AnalyzeTiming,即可看到如圖4-9所示的延時(shí)矩陣。從延時(shí)矩陣上看,延時(shí)10.1ns,時(shí)間較長(zhǎng),這是由于時(shí)鐘先通過(guò)8MHz的分頻器,將會(huì)產(chǎn)生4ns的延時(shí),再通過(guò)后續(xù)模塊,又延時(shí)4ns,模塊組合傳輸線路延時(shí)2ns左右,相加為10ns。圖4-9交通燈時(shí)間分析延時(shí)矩陣如圖4-10所示,在Analysis菜單中選擇RegisterPerformance項(xiàng),點(diǎn)擊Start即可進(jìn)行時(shí)序邏輯電路性能分析。在圖4-10中,Source顯示被分析的時(shí)鐘信號(hào)的名稱;Destination顯示制約性能的目標(biāo)節(jié)點(diǎn)的名稱;Clockperiod顯示給定時(shí)鐘下時(shí)序邏輯電路要求的最小時(shí)鐘信號(hào),交通燈系統(tǒng)的最小周期是12.4ns;Frequency顯示給定的時(shí)鐘信號(hào)的最高頻率,交通燈系統(tǒng)的最高頻率是80.64MHz。ListPaths可打開(kāi)信息處理窗口并顯示延遲路徑。圖4-10模塊化后的交通燈系統(tǒng)性能分析圖4-11自動(dòng)生成的交通燈系統(tǒng)性能分析實(shí)際上,我們?cè)俅斡^察圖4_5可以發(fā)現(xiàn),在頂層模塊進(jìn)行編譯的過(guò)程中,已經(jīng)有適配過(guò)程Fitter,并產(chǎn)生了報(bào)告文件(.rpt)和燒寫(xiě)文件(.pof)。說(shuō)明在頂層編譯時(shí)已經(jīng)由MAX+PLUSII自動(dòng)配置出一個(gè)系統(tǒng)。但是用時(shí)間分析器可以看出性能上的差別。圖4-11為頂層模塊的系統(tǒng)性能分析??梢院芮宄乜吹?,經(jīng)過(guò)模塊化設(shè)計(jì)后的交通燈系統(tǒng),在性能上有很大提升。(2)仿真過(guò)程。我們可以用VHDL編寫(xiě)仿真激勵(lì)文件,也可使用波形編輯器。后者更直觀一些,下面加以重點(diǎn)介紹。①首先進(jìn)入波形編輯窗口:選取窗口菜單MAX+PLUSII→WaveformEditor。②引入輸入輸出腳:選取Node→EnterNodesFromSNF,出現(xiàn)對(duì)話框,選List按鈕,將需要觀察的信號(hào)拖入右邊,并單擊OK按鈕就可以了,如圖4-12所示。圖4-12仿真管腳選擇③管腳選定后就可仿真。我們可以在波形編輯器中設(shè)定輸入的變化情況,設(shè)定好以后保存文件,選取MAX+PLUSII→Simulator,出現(xiàn)TimeSimulation對(duì)話框,單擊Start,出現(xiàn)Simulator框,單擊“確定”按鈕,即可完成仿真,仿真結(jié)果如圖4-13所示。圖4-13仿真結(jié)果示意圖在圖4-13中,highway_light和farmroad_light行上的數(shù)字0代表綠燈,1代表黃燈,2代表紅燈??梢钥吹?,當(dāng)sp有效時(shí)(‘1’電平),不論小道上有沒(méi)有車,兩路上的燈都不變。當(dāng)sp‘0’電平時(shí),special-light變?yōu)椤?’,m開(kāi)始計(jì)時(shí),過(guò)一段時(shí)間后燈會(huì)有變化。從圖4-13中還可以看到,farmroad_light的第二個(gè)‘0’值時(shí)間明顯比第一個(gè)短,這是因?yàn)榈谝粋€(gè)‘0’值,即第一個(gè)farmroad的綠燈期結(jié)束是因?yàn)槌^(guò)一定時(shí)間,而第二個(gè)綠燈期結(jié)束是因?yàn)閏ar_on_farm變?yōu)椤?’電平了。從上邊分析可以看到,系統(tǒng)的仿真是完全正確的。仿真正確以后,就可以進(jìn)行下一步的工作——系統(tǒng)燒寫(xiě)。9.系統(tǒng)燒寫(xiě)和演示驗(yàn)證(1)首先打開(kāi)MAX+PLUSII菜單中的FloorplanEditor,選擇Layout菜單中的DeviceView,我們可以看到和實(shí)物器件相對(duì)應(yīng)的管腳分配,選擇CurrentAssignmentsFloorplan可以自定義管腳位置。將屏幕右上角UnassignedNodes框里的管腳拉到器件上再編譯一次就可以了,如圖4-14所示。如在Layout中選擇LabView格式,我們還可以看到器件被利用的情況。圖4-14器件管腳配置示意圖(2)器件管腳分配好并編譯以后,就可以進(jìn)行燒寫(xiě)了。首先,連接好并行電纜,給實(shí)驗(yàn)板接上5V電壓,選擇MAX+PLUSII菜單中的Programmer選項(xiàng),出現(xiàn)HardwareSetup框和Programmer框,分別如圖4_15、4_16所示。在HardwareType中選擇ByteBlaster[mv]即可。選好以后,在Programmer對(duì)話框中,點(diǎn)擊Program按鈕進(jìn)行燒寫(xiě)。燒寫(xiě)成功后,即可施加外部信號(hào),進(jìn)行演示驗(yàn)證了。去掉電纜,保留電源,可以看到隨著外部條件的變化,交通燈系統(tǒng)的輸出信號(hào)也在進(jìn)行相應(yīng)變化,至此整個(gè)設(shè)計(jì)結(jié)束。圖4-15HardwareSetup對(duì)話框圖4-16Programmer對(duì)話框4.3.4基于MAX+PLUSII綜合的實(shí)驗(yàn)

1.實(shí)驗(yàn)?zāi)康?1)學(xué)習(xí)使用EDA集成設(shè)計(jì)軟件MAX+PLUSII,了解電路描述、綜合、模擬過(guò)程。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論