Xilinx FPGA設(shè)計與實踐教程第1章_第1頁
Xilinx FPGA設(shè)計與實踐教程第1章_第2頁
Xilinx FPGA設(shè)計與實踐教程第1章_第3頁
Xilinx FPGA設(shè)計與實踐教程第1章_第4頁
Xilinx FPGA設(shè)計與實踐教程第1章_第5頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章FPGA設(shè)計基礎(chǔ)1.1FPGA的基本概念1.2可編程邏輯技術(shù)發(fā)展簡介1.3FPGA器件編程技術(shù)1.4通用FPGA的構(gòu)成結(jié)構(gòu)1.5XilinxFPGA的開發(fā)流程1.6FPGA技術(shù)的未來發(fā)展本章小結(jié) 1.1FPGA的基本概念

顧名思義,現(xiàn)場可編程邏輯門陣列(FPGA)是由可編程配置的邏輯塊組成的數(shù)字集成電路,這些邏輯塊之間有著豐富的可配置的互連資源,設(shè)計者可以通過對這些資源進(jìn)行

不同的配置和編程來達(dá)到自己所要實現(xiàn)的目標(biāo)。我們要從如下幾個方面來理解FPGA的特性。首先,F(xiàn)PGA名稱中的“現(xiàn)場可編程”是指編程“在現(xiàn)場”進(jìn)行(與那些內(nèi)部功能已被制造商固化的器件正相反)。這意味著FPGA的編程具有更強(qiáng)的靈活性和創(chuàng)新性,我們可以在實驗室進(jìn)行配置,或者可以對已經(jīng)應(yīng)用于實際的電子系統(tǒng)中的某些功能進(jìn)行改進(jìn),或者可以根據(jù)用戶需求,實現(xiàn)新的協(xié)議或者標(biāo)準(zhǔn)來對當(dāng)前應(yīng)用作進(jìn)一步的完善和改進(jìn)??偠灾?,F(xiàn)PGA的現(xiàn)場可編程特性滿足了用戶實現(xiàn)任意數(shù)字邏輯的愿望,成為用戶靈活“武裝”自己產(chǎn)品的最有效的武器。其次,F(xiàn)PGA名稱中的“邏輯門陣列”不僅僅指的是傳統(tǒng)意義上的邏輯門陣列。FPGA是可編程邏輯器件(PLD)和專用集成電路(ASIC)技術(shù)發(fā)展到一定程度的產(chǎn)物。PLD能夠?qū)崿F(xiàn)靈活的邏輯可編程功能,但是其可編程規(guī)模小,無法實現(xiàn)復(fù)雜的邏輯功能,而ASIC雖然能夠?qū)崿F(xiàn)復(fù)雜的邏輯功能,但是昂貴的工藝過程和巨額的流片費用,在很多時候令大家望而卻步。FPGA的誕生恰好彌合了PLD和ASIC之間的這道鴻溝,其邏輯規(guī)模可以達(dá)到ASIC的級別,而且不必承擔(dān)如ASIC開發(fā)帶來的數(shù)額巨大的不可重現(xiàn)工程(NRE)成本。隨著FPGA技術(shù)的不斷發(fā)展,F(xiàn)PGA器件逐漸變成一種數(shù)字化平臺系統(tǒng),其“邏輯門”已經(jīng)不再和PLD或者ASIC一樣,而是包含了現(xiàn)代FPGA中的各種資源,如可編程邏輯塊、RAM資源、數(shù)字信號處理模塊、微處理器等。 1.2可編程邏輯技術(shù)發(fā)展簡介

1.2.1可編程技術(shù)發(fā)展演變過程

世界上第一款可編程邏輯器件是1970年以PROM的形式進(jìn)入人們視野的,但當(dāng)時還非常簡單,僅僅到20世紀(jì)70年代末,復(fù)雜實用的PLD器件便應(yīng)用在工程當(dāng)中了。為了在復(fù)雜程度上進(jìn)行區(qū)分,后來出現(xiàn)了新的名詞即簡單可編程邏輯器件(SPLD)和復(fù)雜可編程邏輯器件(CPLD)。SPLD至今依然有人沿用,而CPLD成為當(dāng)今PLD器件的代名詞。PLD器件經(jīng)歷了在結(jié)構(gòu)上的不斷改進(jìn),從一開始的PROM器件,到PLA、PAL,再到后來的GAL,逐漸演變到今天通用的CPLD結(jié)構(gòu)。1.PROM器件

PROM(ProgrammableRead-OnlyMemory,可編程只讀存儲器)基本結(jié)構(gòu)其實就是由與(AND)陣列函數(shù)驅(qū)動可編程的或(OR)陣列函數(shù)。一個3輸入3輸出的基于PROM結(jié)構(gòu)的可編程邏輯器件結(jié)構(gòu)如圖1-1所示。圖中,“&”代表邏輯“與”;“!”代表邏輯“非”。在OR門陣列中的可編程連線可以用熔絲、EPROM晶體管或者E2PROM器件中的E2PROM晶體管等來實現(xiàn)。PROM器件可以用來實現(xiàn)任何組合邏輯塊,但是它無法實現(xiàn)太多的輸入和輸出。PROM器件最初主要作為存儲器來存放計算機(jī)程序和常數(shù)值,工程師也發(fā)現(xiàn)它可以用來實現(xiàn)簡單的邏輯功能,比如狀態(tài)機(jī)查找表等。隨著PROM的大量應(yīng)用,其他在其基礎(chǔ)上改進(jìn)的可編程器件也紛紛面世。圖1-13輸入3輸出的基于PROM結(jié)構(gòu)的可編程邏輯器件結(jié)構(gòu)圖2.PLA器件

由于PROM器件對地址有限制,可編程器件的下一步演化就是PLA(ProgrammableLogicArray,可編程邏輯陣列)器件。PLA器件是可編程邏輯器件中用戶可配置性最好的,因為它的AND和OR陣列都是可配置的。正是由于AND陣列也可編程,因而AND陣列中的AND函數(shù)的數(shù)目便可以與器件的輸入數(shù)目獨立,只要引入更多的行,便可在陣列中形成額外的AND函數(shù)。類似地,OR陣列也是與AND陣列獨立的,引入更多的列就可以形成更多的列函數(shù)。如果我們要用PLA器件完成下面三個公式,則可以按圖1-2所示的連線方式進(jìn)行編程:(1-1)(1-2)(1-3)PLA的優(yōu)點是它對于大型設(shè)計非常有用,因為它可以實現(xiàn)大量公共乘積項,可用于多個輸出。而PLA的缺點是信號通過可編程連線所花費的時間相對更長,所以整個器件的速度受到很大的影響。圖1-2PLA編程示意圖3.PAL器件

PAL(ProgrammableArrayLogic,可編程陣列邏輯)器件便是為了解決PLA的速度問題而產(chǎn)生的,其結(jié)構(gòu)示意圖如圖1-3所示。圖1-3PAL結(jié)構(gòu)示意圖從圖1-3中可以看到,PAL的結(jié)構(gòu)與PROM的正好相反,體現(xiàn)在PAL是由一個可編程AND陣列和一個預(yù)定義的OR陣列組成的,相對于PLA器件速度要快得多,但是它只允許有限數(shù)量的乘積項相或,對器件的應(yīng)用靈活性又一次進(jìn)行制約。要解決這些問題,需要跳出PROM器件的陰影,不再針對PROM器件做結(jié)構(gòu)上簡單的改進(jìn),而是采用新的方法,也就是下面我們討論的GAL器件。4.GAL以及CPLD器件

GAL(GenericArrayLogic,通用邏輯陣列)器件是Lattice公司于1985年推出的新型的可編程邏輯器件,GAL器件的輸出端不再是簡單采用或陣列實現(xiàn),而是采用了邏輯宏單元(OLMC),通過編程可以將OLMC設(shè)置成不同的輸出方式。這樣,采用同一型號的GAL器件就可以實現(xiàn)PAL器件所有的輸出電路工作模式,使GAL器件成為通用可編程邏輯器件。GAL系列器件誕生之后很長時間受到工程師的青睞,其在數(shù)字系統(tǒng)中的粘合邏輯功能方面,對原來傳統(tǒng)意義上的74系列器件提出了挑戰(zhàn)。GAL器件不僅在性能上有很大的提高,而且還附加了很多獨有的功能。比如,電子標(biāo)簽,方便了用戶的文檔管理;加密單元,防止他人抄襲電路;采用高性能的E2COMS工藝,保證了GAL器件的高速度和低功耗等。但是GAL器件依然屬于低密度器件,其規(guī)模還是比較小,僅相當(dāng)于幾十個門電路。真正的可編程時代的到來應(yīng)該是伴隨著CPLD(ComplexProgrammableLogicDevice,復(fù)雜可編程邏輯器件)的誕生。在20世紀(jì)90年代前后,目前世界著名的可編程邏輯器件公司如Xilinx、Altera、Lattice等都爭相研究新型的復(fù)雜可編程邏輯器件。CPLD一般都是基于乘積項結(jié)構(gòu)的,如Xilinx公司的XC9500、CoolRunnerⅡ系列器件,Altera的MAX7000、MAX3000以及MAX-Ⅱ系列器件,Lattice的ispMACH4000、ispMACH5000系列器件等,都是基于乘積項的CPLD。CPLD采用的理念是一個普通的器件中包括一定數(shù)量的基本邏輯塊,分享一個公共的可編程互連矩陣。

總體來說,CPLD的結(jié)構(gòu)由四個部分組成:可編程I/O單元、可編程基本邏輯單元(CLB)、可編程布線資源(布線池、布線矩陣)和其他輔助模塊(時鐘資源),如圖1-4所示。圖1-4CPLD的結(jié)構(gòu)示意圖1.2.2FPGA技術(shù)

約在20世紀(jì)80年代早期,ASIC(ApplicationSpecificIntegratedCircuit,專用集成電路)技術(shù)已經(jīng)在飛速發(fā)展。但是在很多應(yīng)用場合,昂貴的ASIC費用不是廣大客戶所想要的,而且ASIC流片的風(fēng)險太大,周期太長,在不確定芯片需求量很大的情況下,人們是非常謹(jǐn)慎的。而CPLD技術(shù)雖然有飛躍,但是依然不能實現(xiàn)復(fù)雜的功能,尤其是無法實現(xiàn)復(fù)雜邏輯運算的功能。ASIC與CPLD之間的鴻溝越來越明顯。幸運的是,1984年世界上首款FPGA在Xilinx誕生。首款FPGA基于CMOS工藝,并且采用SRAM單元,最小單元由一個3輸入查找表(LUT)與寄存器組成。首款FPGA的誕生,已經(jīng)給人們發(fā)出了一個信息,除了ASIC和CPLD之外,另外一種新型結(jié)構(gòu)的可編程邏輯器件會給邏輯設(shè)計帶來新的活力。FPGA剛開始大部分用來作粘合邏輯、中等復(fù)雜程度的狀態(tài)機(jī)和相對有限的數(shù)據(jù)處理任務(wù)。在20世紀(jì)90年代,F(xiàn)PGA的規(guī)模和復(fù)雜度開始增加,市場擴(kuò)展到通訊和網(wǎng)絡(luò)領(lǐng)域,而且都涉及到大量數(shù)據(jù)的處理。21世紀(jì)初,F(xiàn)PGA在消費類產(chǎn)品,如汽車和工業(yè)領(lǐng)域的應(yīng)用也經(jīng)歷了爆炸式的增長,發(fā)展到現(xiàn)在,F(xiàn)PGA的黃金時代已經(jīng)到來。ASIC驗證、微處理器核的嵌入、系統(tǒng)級的解決方案,這些FPGA不斷創(chuàng)新的理念逐漸適應(yīng)了目前市場的需求。對于ASIC公司來說,F(xiàn)PGA經(jīng)常用于提供一個硬件驗證平臺來驗證新算法新協(xié)議的物理層實現(xiàn)。比如,許多行業(yè)的開創(chuàng)性公司使用FPGA制定新的協(xié)議標(biāo)準(zhǔn),并進(jìn)行產(chǎn)品化,迎來市場的新增值點。同時,F(xiàn)PGA為許多小型公司帶來機(jī)遇。這些公司利用FPGA開發(fā)低成本高智力投入的產(chǎn)品并快速推向市場,迎來新的發(fā)展機(jī)遇。FPGA技術(shù)的發(fā)展將創(chuàng)造性的邏輯設(shè)計任務(wù)從昂貴的ASIC公司搬到了普通的工作室。市場給了FPGA極大的機(jī)會,也給FPGA自身的發(fā)展帶來了挑戰(zhàn)。數(shù)千萬門的FPGA器件中集成了內(nèi)嵌微處理器核、數(shù)字信號處理器(DSP)、高速的輸入/輸出(I/O)接口等。FPGA正在蠶食著4個主要的市場:ASIC和可定制硅、DSP、嵌入式微處理器以及物理層通信芯片。另外,F(xiàn)PGA還在創(chuàng)建自己的獨立市場,如可重配置計算技術(shù)(RC)。RC技術(shù)即由FPGA提供的固有的并行性和可重配置性來實現(xiàn)軟件算法的“硬件加速”,許多公司在建立以FPGA為基礎(chǔ)的可重配置計算引擎,來完成從硬件仿真到密碼分析等任務(wù)。從另外一個角度來說,F(xiàn)PGA技術(shù)的不斷推進(jìn),對于電子系統(tǒng)來說,產(chǎn)生了新的設(shè)計思想,即“軟”設(shè)計。這里的“軟”可以理解為“嵌入式軟件設(shè)計和可編程邏輯設(shè)計”,我們使用可編程邏輯器件用軟件的方法搭建硬件平臺,然后配合嵌入式軟件進(jìn)行系統(tǒng)功能的設(shè)計,F(xiàn)PGA成功成為這種新型設(shè)計方法的不可替代的載體。這種新型的設(shè)計方法具有非常多的優(yōu)勢,比如更容易保護(hù)知識產(chǎn)權(quán)不被復(fù)制,因為我們知道在這個世界上有另外一類的工程師是在做反向工程的,在知識產(chǎn)權(quán)的保護(hù)上原創(chuàng)者往往都要花費很大的精力在這方面,而軟件的東西看不到摸不著,相對來說破解的概率要小的多;另外,增強(qiáng)了產(chǎn)品的智能化,基于純“軟”設(shè)計方法設(shè)計的產(chǎn)品,在硬件不變的情況下,更容易對產(chǎn)品進(jìn)行改進(jìn)和升級,并為客戶新產(chǎn)品贏取及早面市的時間。1.3FPGA器件編程技術(shù)

1.3.1熔絲互連編程技術(shù)在FPGA的可編程技術(shù)中,最容易理解的可編程技術(shù)就是熔絲互連技術(shù),下面我們舉例說明熔絲互連技術(shù)的原理。圖1-5未編程的熔絲連接圖提起“熔絲”,我們不由地想起家里面的經(jīng)??梢钥吹降谋kU絲之類的東西,比如電視機(jī),在出現(xiàn)某些危險時(比如電視功率突然變大),保險絲就會熔斷,結(jié)果使得電路開路,避免剩下的電路被繼續(xù)燒壞;在集成電路里面,道理其實是一樣的,只不過沒有那么直觀,熔絲的尺度小到顯微鏡下才可以看到,其熔斷的方式也不是用大功率電壓來實現(xiàn)的,而是靠一定的工藝來確定的。雖然熔絲連接技術(shù)在當(dāng)今FPGA中已棄用,但是對理解新型FPGA可編程技術(shù)還是非常有用的,在這里我們僅做簡單的介紹。當(dāng)拿到一個基于熔絲互連技術(shù)的可編程器件時,所有的熔絲都是完好的,保持著連接的狀態(tài),參見圖1-5。

此時,與門的輸出一直保持為0,其原理非常的簡單:當(dāng)a為0時,與門輸入端為0,輸出必然為0;當(dāng)a為1時,a的非門輸出為0,與門輸入端仍為0,輸出必然還是0。同樣的情況對于b來說也是一樣的。那么我們可以通過在輸入端加上相當(dāng)大的電流和電壓脈沖,熔斷不需要的熔絲,與門的輸出邏輯值才可以變化,比如我們?nèi)蹟郌af和Fbt,如圖1-6所示。圖1-6編程之后的熔絲連接圖這樣,輸入a的非門輸出和輸入b的原值都和與門輸入端斷開,那么對應(yīng)的這兩個信號相連的負(fù)載就起了作用,將與門的輸入值拉高而變成邏輯1,器件表現(xiàn)為新的功能,即y=a&(!b)以上過程詳細(xì)描述了熔絲連接實現(xiàn)可編程邏輯器件的原理。需要注意的是,這種通過熔斷熔絲的方法實現(xiàn)器件編程,是不能再恢復(fù)原狀的,所以這種器件為一次性可編程器件,即OTP(OneTimeProgrammable,一次性可編程)器件。熔絲互連技術(shù)已經(jīng)不被當(dāng)前任何器件作為一種可編程器件技術(shù)而使用?,F(xiàn)代FPGA編程器件一般基于以下三種技術(shù):反熔絲、SRAM和FLASH或EPROM。1.3.2基于反熔絲的編程技術(shù)

與熔絲連接技術(shù)相反,反熔絲技術(shù)是在每個可配置的輸入端上都有反熔絲的連接;當(dāng)處于未編程狀態(tài)時,反熔絲的電阻非常高,可以認(rèn)為是開路,如圖1-7所示,即反熔絲器件未編程之前的狀態(tài)。圖1-7未編程的反熔絲連接原理圖我們可以通過對器件編程,而使輸入端反熔絲“變長”,例如,可以加在輸入a的非門和輸入b的原值所對應(yīng)的反熔絲上讓其“變長”,器件將實現(xiàn)函數(shù)y?=?(!a)&b的功能。編程后的反熔絲結(jié)構(gòu)如圖1-8所示。圖1-8編程之后的反熔絲連接圖反熔絲開始時是連接兩個金屬連線的微型非晶硅,在處于未編程狀態(tài)時,非晶硅表現(xiàn)為電阻超過109Ω的絕緣體。在發(fā)生編程行為之后,絕緣體的非晶硅轉(zhuǎn)化成導(dǎo)電的多晶硅而實現(xiàn)了電流的導(dǎo)通,如圖1-9所示。圖1-9反熔絲的編程過程具有反熔絲結(jié)構(gòu)的器件的特點是速度極快,功耗極低?;诜慈劢z的FPGA器件使用專門的器件編程器來進(jìn)行編程,目前來說,Actel公司的主要FPGA產(chǎn)品都是基于反熔絲結(jié)構(gòu)的,因為這種器件有許多優(yōu)勢:

(1)基于反熔絲結(jié)構(gòu)的FPGA器件是非易失性的,因為其配置的數(shù)據(jù)在系統(tǒng)斷電之后仍能保持,如果數(shù)據(jù)已經(jīng)配置過,那么在系統(tǒng)上電之后立刻就能執(zhí)行代碼,所以相對我們后面要介紹的SRAM結(jié)構(gòu)器件來說(每次上電都需要配置數(shù)據(jù)),上電后執(zhí)行代碼速度快,幾乎沒有延時,而且省去外圍的配置存儲器,電路設(shè)計也相對簡單了。(2)反熔絲結(jié)構(gòu)器件更為卓越的優(yōu)勢在于其內(nèi)部互連結(jié)構(gòu)是天生“防輻射”的,它相對來說不受電磁輻射的影響,這對軍事和宇航應(yīng)用具有特別的吸引力。因為在外界環(huán)境比較惡劣的情況下,基于SRAM元件的配置單元被射線擊中時可能會發(fā)生翻轉(zhuǎn),因為在地球外層中有大量的射線,相比之下,反熔絲結(jié)構(gòu)的FPGA是不會受這個條件影響的。(3)基于反熔絲結(jié)構(gòu)的器件配置數(shù)據(jù)與器件是融合在一起的。我們了解一下反熔絲器件的編程過程:在默認(rèn)情況下編程器編程時,首先測試反熔絲是否被編程,然后持續(xù)進(jìn)行驗證,并把其狀態(tài)與配置文件中定義的狀態(tài)進(jìn)行對比。所以編程器是可以讀取器件的每個單元狀態(tài)的,但是一旦編程之后,就會設(shè)置一個專門的反熔絲,來防止隨后從器件中讀取任何配置數(shù)據(jù)。因此,即使器件被破壞,編程和未編程的器件的反熔絲顯示也完全一樣,實際上所有的反熔絲都嵌入內(nèi)部的金屬層,讓“逆向工程”根本不可能實現(xiàn)。(4)反熔絲結(jié)構(gòu)的器件還有其他的優(yōu)勢,比如在功耗上。實際上基于反熔絲結(jié)構(gòu)的器件只消耗等價的基于SRAM結(jié)構(gòu)器件功耗的20%,這樣的數(shù)字確實非常讓人興奮。同時,反熔絲器件的面積也是非常的小,它的內(nèi)部互連延遲非常的小,比同等的SRAM單元節(jié)省了大量的面積。

反熔絲結(jié)構(gòu)的器件也不是近乎完美的。其優(yōu)勢總會給自己帶來麻煩,就像能量守恒定律一樣,也許自然界的規(guī)律都是這樣的。反熔絲器件相對SRAM器件來說,制造工藝復(fù)雜的多,由于這個原因,反熔絲器件總是落后于基于SRAM工藝器件至少一代。另外,反熔絲工藝還有一個不足之處在于它是OTP器件,一旦編程完畢,其功能就固定了,不能再進(jìn)行改變,這將導(dǎo)致在開發(fā)初期的難度非常高。1.3.3基于SRAM的可編程技術(shù)

半導(dǎo)體RAM有兩種類型,一種為動態(tài)RAM(DRAM),另外一種為靜態(tài)RAM(SRAM)。對于動態(tài)RAM,每個單元是由一個“晶體管—電容”組構(gòu)成的,這也是其稱為動態(tài)的原因:需要不斷給電容充電,才能保持?jǐn)?shù)據(jù)。每個單元必須周期性地補(bǔ)充電荷,這種操作習(xí)慣上稱為“刷新”。DRAM雖然需要復(fù)雜的刷新電路才能工作,但是其優(yōu)點在于可以將存儲容量做得非常大。

然而,對于我們所討論的可編程邏輯器件來說,DRAM沒有任何吸引力,而SRAM反而成為可編程技術(shù)的重要實現(xiàn)方式,也是目前主流FPGA所采用的技術(shù)。SRAM即靜態(tài)RAM,一旦將值寫入SRAM單元,只要不放電,除非被刻意修改,其值是不會改變的。

我們以單個基于SRAM技術(shù)的可編程單元來舉例,如圖1-10所示。

整個單元包括一個多晶體管SRAM存儲元件,此元件的輸出驅(qū)動著一個額外的控制晶體管,根據(jù)存儲的內(nèi)容為邏輯0或者1,晶體管將被置為關(guān)(OFF)或者開(ON)狀態(tài)。

大部分的FPGA都采用SRAM結(jié)構(gòu)。我們熟知的兩家FPGA公司Xilinx和Altera公司所有的FPGA都基于SRAM結(jié)構(gòu)。圖1-10SRAM基本可編程單元基于SRAM結(jié)構(gòu)的FPGA的最大優(yōu)勢在于可以非??焖俚乩每删幊碳夹g(shù)實施和驗證新的想法。更有創(chuàng)意的是,系統(tǒng)首次加電時,F(xiàn)PGA可以被編程進(jìn)行初始化系統(tǒng),比如進(jìn)行自測或者板級測試,然后重新編程實現(xiàn)新的任務(wù)。

基于SRAM結(jié)構(gòu)的FPGA的另外一個優(yōu)勢在于這些器件能夠站在技術(shù)的最前沿。FPGA生產(chǎn)廠家可以利用許多其他的致力于存儲設(shè)備公司在工藝領(lǐng)域投入的巨大研發(fā)資源,擴(kuò)大FPGA的規(guī)模和提高FPGA的工藝水平,比如目前Xilinx公司最先進(jìn)的FPGA工藝在40nm,而Altera公司的FPGA最先進(jìn)的工藝水平在45nm。這一點我們?nèi)菀桌斫?,因為基于SRAM結(jié)構(gòu)的FPGA可以與其他存儲器件共享相同的工藝技術(shù)。然而,令我們遺憾的是,基于SRAM結(jié)構(gòu)的FPGA其不足之處也是比較多的:

(1)每個存儲單元消耗大量的硅片面積,因為這些單元是由4個或6個晶體管配置成一個鎖存器而形成的。

(2)當(dāng)系統(tǒng)掉電之后,所有配置的數(shù)據(jù)都會丟失,所以在系統(tǒng)重新上電之后需要重新進(jìn)行配置。(3)基于SRAM的FPGA很難保護(hù)知識產(chǎn)權(quán),因為配置文件一般都存儲在外部存儲器當(dāng)中,所以很難保證別人不會讀出存儲器當(dāng)中的數(shù)據(jù)。雖然目前沒有商業(yè)工具能夠讀取配置文件的內(nèi)容并產(chǎn)生原理圖和網(wǎng)表文件,但是直接從存儲器當(dāng)中拷貝出數(shù)據(jù)然后再復(fù)原你的產(chǎn)品卻還不是超出這些“逆向工程師”的能力范圍的,只是看是不是值得花費時間和精力。幸好目前基于SRAM的FPGA支持比特流加密,這種情況下,最終配置的數(shù)據(jù)經(jīng)過加密之后存入外部存儲器件。密鑰本身經(jīng)過FPGA的JTAG端口載入一個FPGA內(nèi)部專用基于SRAM的寄存器,與一些相關(guān)邏輯配合,密鑰在加密配置比特流載入器件時對比特流解密運算。但是這也造成了一定的不便,我們要保持這個存儲密鑰的寄存器有效,需要在電路板上面有一組備用電池,而且這個電池模塊需要長期有效(比如10年),這樣也增加了電路板的面積。1.3.4基于FLASH或E2PROM的可編程技術(shù)

基于FLASH或E2PROM的FPGA器件與基于SRAM的器件一樣,所有的配置單元都連接在一條長的寄存器鏈上,這些器件可以離線用編程器進(jìn)行編程,有些版本也可以使用在系統(tǒng)編程(ISP),但是其編程時間是基于SRAM工藝的3倍左右。盡管如此,它也有自己的優(yōu)勢:

(1)編程之后數(shù)據(jù)是非易失性的,所以意味著器件上電之后可以立即執(zhí)行,沒有延時。這個特性有助于系統(tǒng)組件的初始化、處理器喚醒緊急任務(wù)的執(zhí)行,這也是基于FLASH的FPGA器件被廣泛應(yīng)用于航天和軍事領(lǐng)域的原因。(2)為了保護(hù)配置數(shù)據(jù),這些器件中使用了多位的密鑰,范圍可以從50位到幾百位。當(dāng)你對器件編程后,可以載入你的用戶定義密鑰來確保配置數(shù)據(jù)的安全。載入密鑰之后,從器件中讀出數(shù)據(jù)或?qū)懭胄聰?shù)據(jù)的唯一途徑是通過JTAG端口載入你的密鑰的副本,那么是不是還有破解的可能呢?目前JTAG的速度大約是幾十兆赫,這樣就意味著將所有的可能的值窮舉一遍來破解密鑰需要10億年。

(3)雙晶體管E2PROM和FLASH單元的尺寸大約是單晶體管的2.5倍,但是它仍然比SRAM的個頭要小,所以基于FLASH的器件的內(nèi)部邏輯更加緊密,而且會減少互連延遲。(4)基于FLASH的FPGA器件可以實現(xiàn)真正的單芯片解決方案,因為它無需額外的配置芯片,所以可以在很多場合替代CPLD。

基于FLASH器件的缺點是其制作工藝除了標(biāo)準(zhǔn)的CMOS工藝之外,還需要大約5個額外的處理步驟,這樣,將落后于基于SRAM工藝的器件至少一代;同時靜態(tài)功耗也很大,因為它需要維持大量的內(nèi)部負(fù)載電阻。所以,可以這樣總結(jié)FPGA的各種結(jié)構(gòu)的特點:

(1)基于FLASH結(jié)構(gòu)的FPGA與反熔絲結(jié)構(gòu)的FPGA不同,但是與基于SRAM結(jié)構(gòu)的FPGA一樣具有可重復(fù)編程性;

(2)基于FLASH結(jié)構(gòu)的FPGA擁有和基于SRAM結(jié)構(gòu)的FPGA同樣的制造過程,同時擁有基于反熔絲技術(shù)FPGA的同樣低的功耗;

(3)基于FLASH結(jié)構(gòu)的FPGA相對來說速度更快。 1.4通用FPGA的構(gòu)成結(jié)構(gòu)

談起FPGA的結(jié)構(gòu),通常人們是這樣認(rèn)為的:FPGA的基本結(jié)構(gòu)是由大量的相對較小的可編程邏輯塊“島”嵌入在可編程互連的“?!崩锩鏄?gòu)成的。那么還有人會和ASIC器件進(jìn)行對比,提起FPGA都說是一種中度顆粒的器件或者說是粗顆粒器件。其實,F(xiàn)PGA是在ASIC的基礎(chǔ)上發(fā)展起來的,一開始,F(xiàn)PGA的發(fā)明者還是按照ASIC的思維模式來設(shè)計新型的可編程邏輯器件的。從人們對FPGA顆粒的研究就可以了解FPGA新型結(jié)構(gòu)演變的過程。1.4.1現(xiàn)代FPGA的基本邏輯單元

Xilinx公司的FPGA的基本邏輯單元稱為Slice(切片),而Altera公司的FPGA的基本邏輯單元稱為LE(LogicElement)。一個Slice包含兩個核心邏輯單元LC(LogicCell)。Slice的結(jié)構(gòu)圖如圖1-11所示。圖1-11Slice的基本結(jié)構(gòu)圖圖1-12LC的結(jié)構(gòu)圖一個LC是由一個4輸入的查找表(LUT)、一個多路復(fù)用器和一個寄存器組成的。其結(jié)構(gòu)如圖1-12所示。

對于MUX和D觸發(fā)器的作用,大家都很熟悉,唯一陌生的就是查找表的原理。下面介紹查找表的原理。

查找表(Look-Up-Table)簡稱LUT,其本質(zhì)上為RAM,如4輸入LUT,即包括有4位地址線的16?×?1的RAM在數(shù)字電路中,n輸入的邏輯運算最多只能輸出2n個結(jié)果,同樣的道理,4輸入LUT共有16種輸出結(jié)果。若將這16種結(jié)果全部存儲下來,就可以根據(jù)不同的地址輸入“查找”出相應(yīng)輸出結(jié)果。LUT實現(xiàn)4輸入與門的示例如表1-1所示。下面我們舉例來理解查找表的概念。如圖1-13所示,a、b、c、d由FPGA芯片的管腳輸入后進(jìn)入可編程連線,然后作為地址線連到LUT,LUT中已經(jīng)事先寫入了所有可能的邏輯結(jié)果,通過地址查找到相應(yīng)的數(shù)據(jù)然后輸出,這樣組合邏輯就實現(xiàn)了。該電路中D觸發(fā)器是直接利用LUT后面的D觸發(fā)器來實現(xiàn)的。時鐘信號CLK由I/O腳輸入后進(jìn)入芯片內(nèi)部的時鐘專用通道,直接連接到觸發(fā)器的時鐘端。觸發(fā)器的輸出與I/O腳相連,把結(jié)果輸出到芯片管腳。這樣PLD就完成了圖1-13所示電路的功能。(以上這些步驟都是由軟件自動完成的,不需要人為干預(yù)。)圖1-13查找表示例這個電路是一個很簡單的例子,只需要一個LUT加上一個觸發(fā)器就可以完成。對于一個LUT無法完成的電路,就需要通過進(jìn)位邏輯將多個單元相連,這樣FPGA就可以實現(xiàn)復(fù)雜的邏輯運算。

LUT僅僅是FPGA最基本的組成。目前來說,F(xiàn)PGA的復(fù)雜程度遠(yuǎn)遠(yuǎn)不能用LUT來描述。在XilinxFPGA中,LUT組成LC,進(jìn)一步形成Slice(切片),Slice才是XilinxFPGA的最基本組成。而Slice上一級是CLB(可配置邏輯塊)。CLB的實際數(shù)量會根據(jù)器件的不同而不同,CLB之間的可編程互連是通過可配置的開關(guān)矩陣組成的,這樣每個CLB模塊不僅可以用于實現(xiàn)組合邏輯和時序邏輯,還可以配置為分布式RAM和分布式ROM。XilinxFPGA中邏輯塊等級關(guān)系為LC-Slice-CLB,這樣在同一Slice的LC之間有快速互連。在同一CLB中的Slice之間稍慢些。接下來是CLB之間的互連,這樣可以比較容易地把它們彼此連在一起,同時也不會增加太多的互連延遲,從而達(dá)到優(yōu)化平衡。1.4.2XilinxSpartan-3FPGA的基本結(jié)構(gòu)

查找表和多路復(fù)用器是FPGA的最基本的結(jié)構(gòu)。但是FPGA的結(jié)構(gòu)不是僅僅這么簡單的,由于應(yīng)用的不同,每款FPGA的內(nèi)部結(jié)構(gòu)都有所不同??傮w來說,現(xiàn)代FPGA由如下7個部分組成:可編程輸入/輸出單元、可配置邏輯塊(ConfigurableLogicBlocks,CLB)、可編程內(nèi)部連接、嵌入式RAM塊、數(shù)字時鐘管理單元、底層嵌入式功能單元、內(nèi)嵌專用硬核,如圖1-14所示。下面我們以Spartan-3系列FPGA為例介紹主流基于中度顆粒FPGA的基本結(jié)構(gòu)。圖1-14FPGA結(jié)構(gòu)圖1.可編程輸入/輸出單元

可編程輸入/輸出單元(I/O單元,IOB)是FPGA與外界電路的接口,用于完成不同的電器特性下對輸入/輸出信號的驅(qū)動以及匹配的要求。如今FPGA的通用管腳數(shù)目達(dá)上千個,為了FPGA在電子設(shè)備中有更多的兼容性,可編程輸入/輸出單元還設(shè)計了許多巧妙且非常實用的功能:(1)通過軟件的編程,可以適配不同的電器標(biāo)準(zhǔn)以及物理特性。不同器件廠商的不同系列FPGA所支持的I/O標(biāo)準(zhǔn)有所不同,常用的I/O標(biāo)準(zhǔn)大部分器件都支持單端I/O標(biāo)準(zhǔn)LVCMOS、LVTTL、HSTL、SSTL、GTL、PCI等,差分I/O標(biāo)準(zhǔn)有:LVDS、HT、LVPECL、BLVDS、差分HSTL、SSTL等。另外,通過軟件編程可以配置FPGA每個接口塊的不同電壓標(biāo)準(zhǔn),可支持1.8V、2.5V、3.3V等。(2)?FPGA的I/O口單元支持一些特殊的功能,包括可編程配置I/O口的驅(qū)動能力和上下拉電阻等。在差分信號傳輸中,為了使得輸入或輸出端能夠?qū)⒔邮掌骰蛘唑?qū)動器的阻抗匹配,在I/O口單元增加了數(shù)控阻抗(DCI)技術(shù),DCI還具備補(bǔ)償溫度變化和供電電壓波動的功能。高性能的FPGA支持高級Select/IO資源,接收器的最高頻率可達(dá)到11.2Gb/s。I/O口的新的功能給FPGA的應(yīng)用增添了很多亮點,使得FPGA在與ASIC的對抗中顯得更為靈活多變。(3)?Spartan-3系列FPGA的I/O口管腳都有可編程控制的上下拉電阻,可以在ISE實現(xiàn)過程中,通過約束管腳使其有效。另外,還可以約束管腳的驅(qū)動電流大小,根據(jù)電平標(biāo)準(zhǔn)不同,可以支持的驅(qū)動電流值有所不同,為了數(shù)據(jù)的穩(wěn)定,還可以編程控制管腳的回轉(zhuǎn)快慢,每個I/O管腳都有保持電路,在所有驅(qū)動都撤銷時,管腳還會保持原來的值。I/O管腳支持DCI,有效地降低了信號的反射,提高了信號的質(zhì)量。2.可配置邏輯塊(CLB)

可配置邏輯塊是XlinxFPGA內(nèi)部的基本邏輯單元,也是實現(xiàn)時序電路和組合邏輯的主要資源。在Altera器件中,用邏輯陣列塊(LAB)代替CLB,實際上兩者之間沒有什么區(qū)別。CLB的實際數(shù)量和特性會根據(jù)器件的不同而不同,我們也可以理解CLB是反映FPGA規(guī)模和能力的一個重要標(biāo)志。CLB以陣列形式排列在FPGA中,如圖1-15所示。圖1-15FPGACLB結(jié)構(gòu)圖在Spartan-3E中,每個CLB包括4個Slice,同時包含一個可配置開關(guān)矩陣和一些其他資源,包括多路復(fù)用器、觸發(fā)器等。其中,開關(guān)矩陣不僅可以非常靈活地對其進(jìn)行配置,而且提供了本CLB和別的CLB之間的靈活互連。多路復(fù)用器和觸發(fā)器協(xié)助本CLB模塊實現(xiàn)內(nèi)部大量的邏輯互連。4個Slice分成兩組,每組Slice按列排布,如圖1-16所示,并且?guī)в歇毩⒌倪M(jìn)位鏈。左邊的一組Slice主要完成邏輯和存儲功能,稱為SLICEM;右邊的一組Slice主要完成邏輯功能,稱為SLICEL。這樣一來,SLICEL降低了CLB的功耗和減少了CLB的空間,同時更有利于SLICEM更好地發(fā)揮。所以每個CLB模塊不僅可以用于實現(xiàn)組合邏輯、時序邏輯,還可以配置為分布式RAM和分布式ROM,如圖1-16所示。圖1-16Spartan-3ECLB結(jié)構(gòu)圖Slice是Xilinx公司定義的基本邏輯單位。一個Slice由兩個4輸入或者6輸入查找表函數(shù)、進(jìn)位邏輯和存儲單元組成。不管是SLICEM還是SLICEL,都包括如下幾個部分:兩個4輸入函數(shù)發(fā)生器(查找表函數(shù))、兩個存儲單元、兩個多功能選擇器以及進(jìn)位邏輯單元和算術(shù)邏輯單元。SLICEM還包括兩個16?×?1的分布式RAM塊(RAM16)和兩個16位的移位寄存器SRL16。算術(shù)邏輯單元包括一個異或門和一個專用與門。一個異或門可以是一個Slice,實現(xiàn)2位全加操作;專用與門可以用于提高乘法器的效率。進(jìn)位邏輯單元由專用進(jìn)位信號和函數(shù)復(fù)用器組成,用于實現(xiàn)快速算術(shù)加減法操作和提高CLB的處理速度。4輸入函數(shù)發(fā)生器用于實現(xiàn)4輸入LUT、分布式RAM和16位移位寄存器。3.?dāng)?shù)字時鐘管理單元(DCM)

FPGA內(nèi)部所有的同步數(shù)字邏輯都需要由時鐘信號來驅(qū)動。時鐘源需要從外部引入,通過專用的FPGA時鐘輸入管腳進(jìn)入FPGA,接著傳送到整個器件并連接到適當(dāng)?shù)募拇嫫鳟?dāng)中。業(yè)界知名的FPGA都提供數(shù)字時鐘管理模塊。隨著FPGA能夠處理的數(shù)字系統(tǒng)的能力越來越強(qiáng),所需要的時鐘也越來越復(fù)雜,于是就有了時鐘樹的概念。時鐘樹就是在FPGA中有主時鐘,同時存在由主時鐘產(chǎn)生的子時鐘,這樣就形成一種“樹”一樣的結(jié)構(gòu),時鐘樹結(jié)構(gòu)能保證所有觸發(fā)器接收到的信號盡可能地一致。不過我們可以想象,一條長長的時鐘線驅(qū)動著一連串的觸發(fā)器,那么最接近時鐘管腳的觸發(fā)器接收的信號一定會比位于鏈條末尾的觸發(fā)器接收到的快得多,這樣就會引起時鐘的不同步,也就是通常說的“抖動”。為了解決這個問題,時鐘樹都采用專門的走線,與通用的可編程模塊分離,以避免抖動的產(chǎn)生。這也是在FPGA設(shè)計原則中強(qiáng)調(diào)的原則之一,時鐘一定要走全局管腳。關(guān)于時鐘還有一個重要的概念就是時鐘管理器。在通常情況下,都是將外部時鐘接到時鐘專用管腳,然后通過專用管腳連接的時鐘管理器模塊產(chǎn)生一定數(shù)量的子時鐘。這些子時鐘可以用來驅(qū)動內(nèi)部時鐘樹,或者可以輸出作為系統(tǒng)別的器件的時鐘。不同系列的FPGA的時鐘管理器的能力有所不同,但是都有下面共有的特性:1)消除抖動

來自外部世界的理想時鐘信號在通過系統(tǒng)通道時,時鐘沿將會有大小不一的抖動(即來的早一些或晚些),這樣在某一個時鐘點上將是多個時鐘沿的重疊而產(chǎn)生一個“模糊”時鐘,如圖1-17所示。FPGA的時鐘管理器可以檢測并糾正抖動,提供一個“干凈”的子時鐘信號。所以在設(shè)計FPGA系統(tǒng)時,CLK要從專用時鐘管腳引入。如果要產(chǎn)生子時鐘,則最好采用DCM來產(chǎn)生。例如有一個100MHz的時鐘,在FPGA器件內(nèi)部傳輸時是有延時的,雖然說電信號傳輸?shù)乃俾屎芨撸谴搜訒r在數(shù)字系統(tǒng)中是萬萬不可忽略的。例如,100MHz信號的周期是10ns,所以只要延時幾個納秒,信號就會嚴(yán)重失真,而經(jīng)過DCM之后就可以避免這種抖動的產(chǎn)生。圖1-17抖動示意圖2)頻率綜合

在許多情況下,外部時鐘往往在頻率上滿足不了系統(tǒng)要求。這表現(xiàn)在兩個方面,一方面是時鐘的數(shù)量,比如系統(tǒng)需要若干個不同頻率的時鐘,如果都從外部管腳引入,則增加了很多成本;另一方面是時鐘頻率,如高頻率的時鐘信號,在PCB板上傳輸極易受外界環(huán)境的影響,所以電路板上的時鐘頻率盡量低一些,才能保障系統(tǒng)穩(wěn)定工作。我們通過DCM就可以解決這兩個問題,F(xiàn)PGA管腳輸入的低頻率的時鐘信號可以通過DCM轉(zhuǎn)化成高頻率時鐘信號,比如說系統(tǒng)輸入時鐘為50MHz,需要產(chǎn)生三個輸出時鐘:40MHz、25MHz、200MHz。那么用DCM對輸入時鐘進(jìn)行五分之四分頻、兩分頻、四倍頻之后,可分別產(chǎn)生所需時鐘,非常方便。3)相位調(diào)整

相位調(diào)整在數(shù)字系統(tǒng)中應(yīng)用得也很多,比如PCIE或者DDR控制器接口都需要內(nèi)部時鐘與外部時鐘之間有相位偏移。時鐘管理器允許在某些固定的相位進(jìn)行調(diào)整,比如120°或者240°等,在時鐘樹中也允許對每個子時鐘進(jìn)行相位調(diào)整,如圖1-18所示。圖1-18相位調(diào)整示意圖4)自動偏移校正

設(shè)想在時鐘樹的子時鐘,經(jīng)過DCM之后其相位和頻率都與輸入時鐘有關(guān)系,但是,經(jīng)過時鐘管理器之后的時鐘一定有延時,這時如果DCM沒有對此延時進(jìn)行處理,子時鐘輸出稍晚于輸入時鐘,就會帶來很多問題,也就是“偏移”。因而時鐘管理器就將子時鐘同時作為輸入,來比較兩個信號,并給子時鐘一個專門的延遲,使得子時鐘和主時鐘重新對齊,如圖1-19所示。圖1-19時鐘自動校正示意圖Spartan-3采用DCM為數(shù)字設(shè)計提供了靈活、全面的時鐘資源,除了XC3S50僅有兩個DCM之外,其他Spartan-3系列FPGA都有四個DCM,每個DCM資源如圖1-20所示。圖1-20Spartan-3DCM資源結(jié)構(gòu)圖4.嵌入式RAM塊

FPGA一般內(nèi)部有RAM資源,目的是為了拓展FPGA的應(yīng)用范圍。在FPGA中的RAM資源,相比RAM器件來說,使用非常的方便和靈活,它可以被配置為ROM、單端口RAM、雙端口RAM、內(nèi)容地址存儲器(CAM)以及FIFO等常用的存儲器結(jié)構(gòu),同時不管使用哪種結(jié)構(gòu),都可以靈活地配置存儲器的位寬、深度。比如說,如果存儲器的位寬為1,這時候就相當(dāng)于我們使用FPGA內(nèi)部的存儲器資源構(gòu)造了一個長度一定的移位寄存器。

Spartan-3系列FPGA都支持BlockRAM資源,可以被配置為18Kbit雙端口存儲器,并且支持四種數(shù)據(jù)讀寫操作,如圖1-21所示。圖1-21BlockRAM數(shù)據(jù)傳輸5.可編程內(nèi)部連接

FPGA中除了CLB之外,大部分就是互連資源,這樣對FPGA數(shù)字邏輯的配置才能起作用。由于其作用不一樣,可編程內(nèi)部連接布線的長度、寬度和分布也都不相同。

第一類是全局布線資源,用于芯片內(nèi)部全局時鐘和全局復(fù)位/置位的布線;

第二類是長線資源,用于完成芯片Bank之間的高速信號和第二全局時鐘信號的實現(xiàn);

第三類

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論