![XilinxFPGA設計與實踐教程第1章_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/19/222a4730-973d-45f4-8656-e735463a75b6/222a4730-973d-45f4-8656-e735463a75b61.gif)
![XilinxFPGA設計與實踐教程第1章_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/19/222a4730-973d-45f4-8656-e735463a75b6/222a4730-973d-45f4-8656-e735463a75b62.gif)
![XilinxFPGA設計與實踐教程第1章_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/19/222a4730-973d-45f4-8656-e735463a75b6/222a4730-973d-45f4-8656-e735463a75b63.gif)
![XilinxFPGA設計與實踐教程第1章_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/19/222a4730-973d-45f4-8656-e735463a75b6/222a4730-973d-45f4-8656-e735463a75b64.gif)
![XilinxFPGA設計與實踐教程第1章_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/19/222a4730-973d-45f4-8656-e735463a75b6/222a4730-973d-45f4-8656-e735463a75b65.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第一章 FPGA設計基礎(chǔ)第一章 FPGA設計基礎(chǔ)1.1 FPGA的基本概念的基本概念 1.2 可編程邏輯技術(shù)發(fā)展簡介可編程邏輯技術(shù)發(fā)展簡介 1.3 FPGA器件編程技術(shù)器件編程技術(shù) 1.4 通用通用FPGA的構(gòu)成結(jié)構(gòu)的構(gòu)成結(jié)構(gòu) 1.5 Xilinx FPGA的開發(fā)流程的開發(fā)流程 1.6 FPGA技術(shù)的未來發(fā)展技術(shù)的未來發(fā)展本章小結(jié)本章小結(jié)第一章 FPGA設計基礎(chǔ)1.1 FPGA的基本概念的基本概念顧名思義,現(xiàn)場可編程邏輯門陣列(FPGA)是由可編程配置的邏輯塊組成的數(shù)字集成電路,這些邏輯塊之間有著豐富的可配置的互連資源,設計者可以通過對這些資源進行不同的配置和編程來達到自己所要實現(xiàn)的目標。我們
2、要從如下幾個方面來理解FPGA的特性。 第一章 FPGA設計基礎(chǔ)首先,F(xiàn)PGA名稱中的“現(xiàn)場可編程”是指編程“在現(xiàn)場”進行(與那些內(nèi)部功能已被制造商固化的器件正相反)。這意味著FPGA的編程具有更強的靈活性和創(chuàng)新性,我們可以在實驗室進行配置,或者可以對已經(jīng)應用于實際的電子系統(tǒng)中的某些功能進行改進,或者可以根據(jù)用戶需求,實現(xiàn)新的協(xié)議或者標準來對當前應用作進一步的完善和改進??偠灾現(xiàn)PGA的現(xiàn)場可編程特性滿足了用戶實現(xiàn)任意數(shù)字邏輯的愿望,成為用戶靈活“武裝”自己產(chǎn)品的最有效的武器。 第一章 FPGA設計基礎(chǔ)其次,F(xiàn)PGA名稱中的“邏輯門陣列”不僅僅指的是傳統(tǒng)意義上的邏輯門陣列。FPGA是可編程
3、邏輯器件(PLD)和專用集成電路(ASIC)技術(shù)發(fā)展到一定程度的產(chǎn)物。PLD能夠?qū)崿F(xiàn)靈活的邏輯可編程功能,但是其可編程規(guī)模小,無法實現(xiàn)復雜的邏輯功能,而ASIC雖然能夠?qū)崿F(xiàn)復雜的邏輯功能,但是昂貴的工藝過程和巨額的流片費用,在很多時候令大家望而卻步。FPGA的誕生恰好彌合了PLD和ASIC之間的這道鴻溝,其邏輯規(guī)??梢赃_到ASIC的級別,而且不必承擔如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ù)字信號處
4、理模塊、微處理器等。 第一章 FPGA設計基礎(chǔ)1.2 可編程邏輯技術(shù)發(fā)展簡介可編程邏輯技術(shù)發(fā)展簡介 1.2.1 可編程技術(shù)發(fā)展演變過程可編程技術(shù)發(fā)展演變過程世界上第一款可編程邏輯器件是1970年以PROM的形式進入人們視野的,但當時還非常簡單,僅僅到20世紀70年代末,復雜實用的PLD器件便應用在工程當中了。為了在復雜程度上進行區(qū)分,后來出現(xiàn)了新的名詞即簡單可編程邏輯器件(SPLD)和復雜可編程邏輯器件(CPLD)。SPLD至今依然有人沿用,而CPLD成為當今PLD器件的代名詞。PLD器件經(jīng)歷了在結(jié)構(gòu)上的不斷改進,從一開始的PROM器件,到PLA、PAL,再到后來的GAL,逐漸演變到今天通用的
5、CPLD結(jié)構(gòu)。 第一章 FPGA設計基礎(chǔ)1PROM器件器件PROM(Programmable Read-Only Memory,可編程只讀存儲器)基本結(jié)構(gòu)其實就是由與(AND)陣列函數(shù)驅(qū)動可編程的或(OR)陣列函數(shù)。一個3輸入3輸出的基于PROM結(jié)構(gòu)的可編程邏輯器件結(jié)構(gòu)如圖1-1所示。圖中,“&”代表邏輯“與”;“!”代表邏輯“非”。 第一章 FPGA設計基礎(chǔ)在OR門陣列中的可編程連線可以用熔絲、EPROM晶體管或者E2PROM器件中的E2PROM晶體管等來實現(xiàn)。PROM器件可以用來實現(xiàn)任何組合邏輯塊,但是它無法實現(xiàn)太多的輸入和輸出。PROM器件最初主要作為存儲器來存放計算機程序和常數(shù)
6、值,工程師也發(fā)現(xiàn)它可以用來實現(xiàn)簡單的邏輯功能,比如狀態(tài)機查找表等。隨著PROM的大量應用,其他在其基礎(chǔ)上改進的可編程器件也紛紛面世。 第一章 FPGA設計基礎(chǔ)圖1-1 3輸入3輸出的基于PROM結(jié)構(gòu)的可編程邏輯器件結(jié)構(gòu)圖 第一章 FPGA設計基礎(chǔ)2PLA器件器件由于PROM器件對地址有限制,可編程器件的下一步演化就是PLA(Programmable Logic Array,可編程邏輯陣列)器件。PLA器件是可編程邏輯器件中用戶可配置性最好的,因為它的AND和OR陣列都是可配置的。正是由于AND陣列也可編程,因而AND陣列中的AND函數(shù)的數(shù)目便可以與器件的輸入數(shù)目獨立,只要引入更多的行,便可在陣
7、列中形成額外的AND函數(shù)。類似地,OR陣列也是與AND陣列獨立的,引入更多的列就可以形成更多的列函數(shù)。如果我們要用PLA器件完成下面三個公式,則可以按圖1-2所示的連線方式進行編程: 第一章 FPGA設計基礎(chǔ)w(a &c)|(!b&!c) (1-1) x(!a &!b&!c)|(!b&!c) (1-2) y!a &!b&!c (1-3) PLA的優(yōu)點是它對于大型設計非常有用,因為它可以實現(xiàn)大量公共乘積項,可用于多個輸出。而PLA的缺點是信號通過可編程連線所花費的時間相對更長,所以整個器件的速度受到很大的影響。 第一章 FPGA設計基礎(chǔ)圖1
8、-2 PLA編程示意圖 第一章 FPGA設計基礎(chǔ)3PAL器件器件PAL(Programmable Array Logic,可編程陣列邏輯)器件便是為了解決PLA的速度問題而產(chǎn)生的,其結(jié)構(gòu)示意圖如圖1-3所示。 圖1-3 PAL結(jié)構(gòu)示意圖 第一章 FPGA設計基礎(chǔ)從圖1-3中可以看到,PAL的結(jié)構(gòu)與PROM的正好相反,體現(xiàn)在PAL是由一個可編程AND陣列和一個預定義的OR陣列組成的,相對于PLA器件速度要快得多,但是它只允許有限數(shù)量的乘積項相或,對器件的應用靈活性又一次進行制約。要解決這些問題,需要跳出PROM器件的陰影,不再針對PROM器件做結(jié)構(gòu)上簡單的改進,而是采用新的方法,也就是下面我們討
9、論的GAL器件。 第一章 FPGA設計基礎(chǔ)4GAL以及以及CPLD器件器件GAL(Generic Array Logic,通用邏輯陣列)器件是Lattice公司于1985年推出的新型的可編程邏輯器件,GAL器件的輸出端不再是簡單采用或陣列實現(xiàn),而是采用了邏輯宏單元(OLMC),通過編程可以將OLMC設置成不同的輸出方式。這樣,采用同一型號的GAL器件就可以實現(xiàn)PAL器件所有的輸出電路工作模式,使GAL器件成為通用可編程邏輯器件。 第一章 FPGA設計基礎(chǔ)GAL系列器件誕生之后很長時間受到工程師的青睞,其在數(shù)字系統(tǒng)中的粘合邏輯功能方面,對原來傳統(tǒng)意義上的74系列器件提出了挑戰(zhàn)。GAL器件不僅在性
10、能上有很大的提高,而且還附加了很多獨有的功能。比如,電子標簽,方便了用戶的文檔管理;加密單元,防止他人抄襲電路;采用高性能的E2COMS工藝,保證了GAL器件的高速度和低功耗等。但是GAL器件依然屬于低密度器件,其規(guī)模還是比較小,僅相當于幾十個門電路。 第一章 FPGA設計基礎(chǔ)真正的可編程時代的到來應該是伴隨著CPLD(Complex Programmable Logic Device,復雜可編程邏輯器件)的誕生。在20世紀90年代前后,目前世界著名的可編程邏輯器件公司如Xilinx、Altera、Lattice等都爭相研究新型的復雜可編程邏輯器件。CPLD一般都是基于乘積項結(jié)構(gòu)的,如Xili
11、nx公司的XC9500、CoolRunner系列器件,Altera的MAX7000、MAX3000以及MAX-系列器件,Lattice的ispMACH4000、ispMACH5000系列器件等,都是基于乘積項的CPLD。CPLD采用的理念是一個普通的器件中包括一定數(shù)量的基本邏輯塊,分享一個公共的可編程互連矩陣??傮w來說,CPLD的結(jié)構(gòu)由四個部分組成:可編程I/O單元、可編程基本邏輯單元(CLB)、可編程布線資源(布線池、布線矩陣)和其他輔助模塊(時鐘資源),如圖1-4所示。 第一章 FPGA設計基礎(chǔ)圖1-4 CPLD的結(jié)構(gòu)示意圖 第一章 FPGA設計基礎(chǔ)1.2.2 FPGA技術(shù)技術(shù)約在20世紀
12、80年代早期,ASIC(Application Specific Integrated Circuit,專用集成電路)技術(shù)已經(jīng)在飛速發(fā)展。但是在很多應用場合,昂貴的ASIC費用不是廣大客戶所想要的,而且ASIC流片的風險太大,周期太長,在不確定芯片需求量很大的情況下,人們是非常謹慎的。而CPLD技術(shù)雖然有飛躍,但是依然不能實現(xiàn)復雜的功能,尤其是無法實現(xiàn)復雜邏輯運算的功能。ASIC與CPLD之間的鴻溝越來越明顯。幸運的是,1984年世界上首款FPGA在Xilinx誕生。首款FPGA基于CMOS工藝,并且采用SRAM單元,最小單元由一個3輸入查找表(LUT)與寄存器組成。首款FPGA的誕生,已經(jīng)給
13、人們發(fā)出了一個信息,除了ASIC和CPLD之外,另外一種新型結(jié)構(gòu)的可編程邏輯器件會給邏輯設計帶來新的活力。第一章 FPGA設計基礎(chǔ)FPGA剛開始大部分用來作粘合邏輯、中等復雜程度的狀態(tài)機和相對有限的數(shù)據(jù)處理任務。在20世紀90年代,F(xiàn)PGA的規(guī)模和復雜度開始增加,市場擴展到通訊和網(wǎng)絡領(lǐng)域,而且都涉及到大量數(shù)據(jù)的處理。21世紀初,F(xiàn)PGA在消費類產(chǎn)品,如汽車和工業(yè)領(lǐng)域的應用也經(jīng)歷了爆炸式的增長,發(fā)展到現(xiàn)在,F(xiàn)PGA的黃金時代已經(jīng)到來。ASIC驗證、微處理器核的嵌入、系統(tǒng)級的解決方案,這些FPGA不斷創(chuàng)新的理念逐漸適應了目前市場的需求。 第一章 FPGA設計基礎(chǔ)對于ASIC公司來說,F(xiàn)PGA經(jīng)常用
14、于提供一個硬件驗證平臺來驗證新算法新協(xié)議的物理層實現(xiàn)。比如,許多行業(yè)的開創(chuàng)性公司使用FPGA制定新的協(xié)議標準,并進行產(chǎn)品化,迎來市場的新增值點。同時,F(xiàn)PGA為許多小型公司帶來機遇。這些公司利用FPGA開發(fā)低成本高智力投入的產(chǎn)品并快速推向市場,迎來新的發(fā)展機遇。FPGA技術(shù)的發(fā)展將創(chuàng)造性的邏輯設計任務從昂貴的ASIC公司搬到了普通的工作室。 第一章 FPGA設計基礎(chǔ)市場給了FPGA極大的機會,也給FPGA自身的發(fā)展帶來了挑戰(zhàn)。數(shù)千萬門的FPGA器件中集成了內(nèi)嵌微處理器核、數(shù)字信號處理器(DSP)、高速的輸入/輸出(I/O)接口等。FPGA正在蠶食著4個主要的市場:ASIC和可定制硅、DSP、嵌
15、入式微處理器以及物理層通信芯片。另外,F(xiàn)PGA還在創(chuàng)建自己的獨立市場,如可重配置計算技術(shù)(RC)。RC技術(shù)即由FPGA提供的固有的并行性和可重配置性來實現(xiàn)軟件算法的“硬件加速”,許多公司在建立以FPGA為基礎(chǔ)的可重配置計算引擎,來完成從硬件仿真到密碼分析等任務。 第一章 FPGA設計基礎(chǔ)從另外一個角度來說,F(xiàn)PGA技術(shù)的不斷推進,對于電子系統(tǒng)來說,產(chǎn)生了新的設計思想,即“軟”設計。這里的“軟”可以理解為“嵌入式軟件設計和可編程邏輯設計”,我們使用可編程邏輯器件用軟件的方法搭建硬件平臺,然后配合嵌入式軟件進行系統(tǒng)功能的設計,F(xiàn)PGA成功成為這種新型設計方法的不可替代的載體。這種新型的設計方法具有
16、非常多的優(yōu)勢,比如更容易保護知識產(chǎn)權(quán)不被復制,因為我們知道在這個世界上有另外一類的工程師是在做反向工程的,在知識產(chǎn)權(quán)的保護上原創(chuàng)者往往都要花費很大的精力在這方面,而軟件的東西看不到摸不著,相對來說破解的概率要小的多;另外,增強了產(chǎn)品的智能化,基于純“軟”設計方法設計的產(chǎn)品,在硬件不變的情況下,更容易對產(chǎn)品進行改進和升級,并為客戶新產(chǎn)品贏取及早面市的時間。 第一章 FPGA設計基礎(chǔ)1.3 FPGA器件編程技術(shù)器件編程技術(shù) 1.3.1 熔絲互連編程技術(shù)熔絲互連編程技術(shù)在FPGA的可編程技術(shù)中,最容易理解的可編程技術(shù)就是熔絲互連技術(shù),下面我們舉例說明熔絲互連技術(shù)的原理。第一章 FPGA設計基礎(chǔ)圖1-
17、5 未編程的熔絲連接圖 第一章 FPGA設計基礎(chǔ)提起“熔絲”,我們不由地想起家里面的經(jīng)常可以看到的保險絲之類的東西,比如電視機,在出現(xiàn)某些危險時(比如電視功率突然變大),保險絲就會熔斷,結(jié)果使得電路開路,避免剩下的電路被繼續(xù)燒壞;在集成電路里面,道理其實是一樣的,只不過沒有那么直觀,熔絲的尺度小到顯微鏡下才可以看到,其熔斷的方式也不是用大功率電壓來實現(xiàn)的,而是靠一定的工藝來確定的。 第一章 FPGA設計基礎(chǔ)雖然熔絲連接技術(shù)在當今FPGA中已棄用,但是對理解新型FPGA可編程技術(shù)還是非常有用的,在這里我們僅做簡單的介紹。當拿到一個基于熔絲互連技術(shù)的可編程器件時,所有的熔絲都是完好的,保持著連接的
18、狀態(tài),參見圖1-5。此時,與門的輸出一直保持為0,其原理非常的簡單:當a為0時,與門輸入端為0,輸出必然為0;當a為1時,a的非門輸出為0,與門輸入端仍為0,輸出必然還是0。同樣的情況對于b來說也是一樣的。那么我們可以通過在輸入端加上相當大的電流和電壓脈沖,熔斷不需要的熔絲,與門的輸出邏輯值才可以變化,比如我們?nèi)蹟郌af和Fbt,如圖1-6所示。 第一章 FPGA設計基礎(chǔ)圖1-6 編程之后的熔絲連接圖 第一章 FPGA設計基礎(chǔ)這樣,輸入a的非門輸出和輸入b的原值都和與門輸入端斷開,那么對應的這兩個信號相連的負載就起了作用,將與門的輸入值拉高而變成邏輯1,器件表現(xiàn)為新的功能,即 y=a&
19、(!b) 以上過程詳細描述了熔絲連接實現(xiàn)可編程邏輯器件的原理。需要注意的是,這種通過熔斷熔絲的方法實現(xiàn)器件編程,是不能再恢復原狀的,所以這種器件為一次性可編程器件,即OTP(One Time Programmable,一次性可編程)器件。熔絲互連技術(shù)已經(jīng)不被當前任何器件作為一種可編程器件技術(shù)而使用?,F(xiàn)代FPGA編程器件一般基于以下三種技術(shù):反熔絲、SRAM和FLASH或EPROM。 第一章 FPGA設計基礎(chǔ)1.3.2 基于反熔絲的編程技術(shù)基于反熔絲的編程技術(shù)與熔絲連接技術(shù)相反,反熔絲技術(shù)是在每個可配置的輸入端上都有反熔絲的連接;當處于未編程狀態(tài)時,反熔絲的電阻非常高,可以認為是開路,如圖1-7
20、所示,即反熔絲器件未編程之前的狀態(tài)。 第一章 FPGA設計基礎(chǔ)圖1-7 未編程的反熔絲連接原理圖 第一章 FPGA設計基礎(chǔ)我們可以通過對器件編程,而使輸入端反熔絲“變長”,例如,可以加在輸入a的非門和輸入b的原值所對應的反熔絲上讓其“變長”,器件將實現(xiàn)函數(shù)y=(!a)&b的功能。編程后的反熔絲結(jié)構(gòu)如圖1-8所示。 第一章 FPGA設計基礎(chǔ)圖1-8 編程之后的反熔絲連接圖 第一章 FPGA設計基礎(chǔ)反熔絲開始時是連接兩個金屬連線的微型非晶硅,在處于未編程狀態(tài)時,非晶硅表現(xiàn)為電阻超過109 的絕緣體。在發(fā)生編程行為之后,絕緣體的非晶硅轉(zhuǎn)化成導電的多晶硅而實現(xiàn)了電流的導通,如圖1-9所示。第一
21、章 FPGA設計基礎(chǔ)圖1-9 反熔絲的編程過程 第一章 FPGA設計基礎(chǔ)具有反熔絲結(jié)構(gòu)的器件的特點是速度極快,功耗極低?;诜慈劢z的FPGA器件使用專門的器件編程器來進行編程,目前來說,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í)行代碼速度快,幾乎沒有延時,而且省去外圍的配置存儲器,電路設計也相對簡單了。 第一章 FPGA設計基礎(chǔ)(2)
22、反熔絲結(jié)構(gòu)器件更為卓越的優(yōu)勢在于其內(nèi)部互連結(jié)構(gòu)是天生“防輻射”的,它相對來說不受電磁輻射的影響,這對軍事和宇航應用具有特別的吸引力。因為在外界環(huán)境比較惡劣的情況下,基于SRAM元件的配置單元被射線擊中時可能會發(fā)生翻轉(zhuǎn),因為在地球外層中有大量的射線,相比之下,反熔絲結(jié)構(gòu)的FPGA是不會受這個條件影響的。 第一章 FPGA設計基礎(chǔ)(3) 基于反熔絲結(jié)構(gòu)的器件配置數(shù)據(jù)與器件是融合在一起的。我們了解一下反熔絲器件的編程過程:在默認情況下編程器編程時,首先測試反熔絲是否被編程,然后持續(xù)進行驗證,并把其狀態(tài)與配置文件中定義的狀態(tài)進行對比。所以編程器是可以讀取器件的每個單元狀態(tài)的,但是一旦編程之后,就會設置
23、一個專門的反熔絲,來防止隨后從器件中讀取任何配置數(shù)據(jù)。因此,即使器件被破壞,編程和未編程的器件的反熔絲顯示也完全一樣,實際上所有的反熔絲都嵌入內(nèi)部的金屬層,讓“逆向工程”根本不可能實現(xiàn)。 第一章 FPGA設計基礎(chǔ)(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器
24、件來說,制造工藝復雜的多,由于這個原因,反熔絲器件總是落后于基于SRAM工藝器件至少一代。另外,反熔絲工藝還有一個不足之處在于它是OTP器件,一旦編程完畢,其功能就固定了,不能再進行改變,這將導致在開發(fā)初期的難度非常高。 第一章 FPGA設計基礎(chǔ)1.3.3 基于基于SRAM的可編程技術(shù)的可編程技術(shù)半導體RAM有兩種類型,一種為動態(tài)RAM (DRAM),另外一種為靜態(tài)RAM(SRAM)。對于動態(tài)RAM,每個單元是由一個“晶體管電容”組構(gòu)成的,這也是其稱為動態(tài)的原因:需要不斷給電容充電,才能保持數(shù)據(jù)。每個單元必須周期性地補充電荷,這種操作習慣上稱為“刷新”。DRAM雖然需要復雜的刷新電路才能工作,
25、但是其優(yōu)點在于可以將存儲容量做得非常大。然而,對于我們所討論的可編程邏輯器件來說,DRAM沒有任何吸引力,而SRAM反而成為可編程技術(shù)的重要實現(xiàn)方式,也是目前主流FPGA所采用的技術(shù)。第一章 FPGA設計基礎(chǔ)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
26、和Altera公司所有的FPGA都基于SRAM結(jié)構(gòu)。 第一章 FPGA設計基礎(chǔ)圖1-10 SRAM基本可編程單元 第一章 FPGA設計基礎(chǔ)基于SRAM結(jié)構(gòu)的FPGA的最大優(yōu)勢在于可以非??焖俚乩每删幊碳夹g(shù)實施和驗證新的想法。更有創(chuàng)意的是,系統(tǒng)首次加電時,F(xiàn)PGA可以被編程進行初始化系統(tǒng),比如進行自測或者板級測試,然后重新編程實現(xiàn)新的任務。基于SRAM結(jié)構(gòu)的FPGA的另外一個優(yōu)勢在于這些器件能夠站在技術(shù)的最前沿。FPGA生產(chǎn)廠家可以利用許多其他的致力于存儲設備公司在工藝領(lǐng)域投入的巨大研發(fā)資源,擴大FPGA的規(guī)模和提高FPGA的工藝水平,比如目前Xilinx公司最先進的FPGA工藝在40 nm,
27、而Altera公司的FPGA最先進的工藝水平在45 nm。這一點我們?nèi)菀桌斫?,因為基于SRAM結(jié)構(gòu)的FPGA可以與其他存儲器件共享相同的工藝技術(shù)。 第一章 FPGA設計基礎(chǔ)然而,令我們遺憾的是,基于SRAM結(jié)構(gòu)的FPGA其不足之處也是比較多的:(1) 每個存儲單元消耗大量的硅片面積,因為這些單元是由4個或6個晶體管配置成一個鎖存器而形成的。(2) 當系統(tǒng)掉電之后,所有配置的數(shù)據(jù)都會丟失,所以在系統(tǒng)重新上電之后需要重新進行配置。 第一章 FPGA設計基礎(chǔ)(3) 基于SRAM的FPGA很難保護知識產(chǎn)權(quán),因為配置文件一般都存儲在外部存儲器當中,所以很難保證別人不會讀出存儲器當中的數(shù)據(jù)。雖然目前沒有商
28、業(yè)工具能夠讀取配置文件的內(nèi)容并產(chǎn)生原理圖和網(wǎng)表文件,但是直接從存儲器當中拷貝出數(shù)據(jù)然后再復原你的產(chǎn)品卻還不是超出這些“逆向工程師”的能力范圍的,只是看是不是值得花費時間和精力。 第一章 FPGA設計基礎(chǔ)幸好目前基于SRAM的FPGA支持比特流加密,這種情況下,最終配置的數(shù)據(jù)經(jīng)過加密之后存入外部存儲器件。密鑰本身經(jīng)過FPGA的JTAG端口載入一個FPGA內(nèi)部專用基于SRAM的寄存器,與一些相關(guān)邏輯配合,密鑰在加密配置比特流載入器件時對比特流解密運算。但是這也造成了一定的不便,我們要保持這個存儲密鑰的寄存器有效,需要在電路板上面有一組備用電池,而且這個電池模塊需要長期有效(比如10年),這樣也增加
29、了電路板的面積。 第一章 FPGA設計基礎(chǔ)1.3.4 基于基于FLASH或或E2PROM的可編程技術(shù)的可編程技術(shù)基于FLASH或E2PROM的FPGA器件與基于SRAM的器件一樣,所有的配置單元都連接在一條長的寄存器鏈上,這些器件可以離線用編程器進行編程,有些版本也可以使用在系統(tǒng)編程(ISP),但是其編程時間是基于SRAM工藝的3倍左右。盡管如此,它也有自己的優(yōu)勢:(1) 編程之后數(shù)據(jù)是非易失性的,所以意味著器件上電之后可以立即執(zhí)行,沒有延時。這個特性有助于系統(tǒng)組件的初始化、處理器喚醒緊急任務的執(zhí)行,這也是基于FLASH的FPGA器件被廣泛應用于航天和軍事領(lǐng)域的原因。 第一章 FPGA設計基礎(chǔ)
30、(2) 為了保護配置數(shù)據(jù),這些器件中使用了多位的密鑰,范圍可以從50位到幾百位。當你對器件編程后,可以載入你的用戶定義密鑰來確保配置數(shù)據(jù)的安全。載入密鑰之后,從器件中讀出數(shù)據(jù)或?qū)懭胄聰?shù)據(jù)的唯一途徑是通過JTAG端口載入你的密鑰的副本,那么是不是還有破解的可能呢?目前JTAG的速度大約是幾十兆赫,這樣就意味著將所有的可能的值窮舉一遍來破解密鑰需要10億年。(3) 雙晶體管E2PROM和FLASH單元的尺寸大約是單晶體管的2.5倍,但是它仍然比SRAM的個頭要小,所以基于FLASH的器件的內(nèi)部邏輯更加緊密,而且會減少互連延遲。 第一章 FPGA設計基礎(chǔ)(4) 基于FLASH的FPGA器件可以實現(xiàn)真
31、正的單芯片解決方案,因為它無需額外的配置芯片,所以可以在很多場合替代CPLD?;贔LASH器件的缺點是其制作工藝除了標準的CMOS工藝之外,還需要大約5個額外的處理步驟,這樣,將落后于基于SRAM工藝的器件至少一代;同時靜態(tài)功耗也很大,因為它需要維持大量的內(nèi)部負載電阻。 第一章 FPGA設計基礎(chǔ)所以,可以這樣總結(jié)FPGA的各種結(jié)構(gòu)的特點:(1) 基于FLASH結(jié)構(gòu)的FPGA與反熔絲結(jié)構(gòu)的FPGA不同,但是與基于SRAM結(jié)構(gòu)的FPGA一樣具有可重復編程性;(2) 基于FLASH結(jié)構(gòu)的FPGA擁有和基于SRAM結(jié)構(gòu)的FPGA同樣的制造過程,同時擁有基于反熔絲技術(shù)FPGA的同樣低的功耗;(3) 基
32、于FLASH結(jié)構(gòu)的FPGA相對來說速度更快。 第一章 FPGA設計基礎(chǔ)1.4 通用通用FPGA的構(gòu)成結(jié)構(gòu)的構(gòu)成結(jié)構(gòu)談起FPGA的結(jié)構(gòu),通常人們是這樣認為的:FPGA的基本結(jié)構(gòu)是由大量的相對較小的可編程邏輯塊“島”嵌入在可編程互連的“?!崩锩鏄?gòu)成的。那么還有人會和ASIC 器件進行對比,提起FPGA都說是一種中度顆粒的器件或者說是粗顆粒器件。其實,F(xiàn)PGA是在ASIC的基礎(chǔ)上發(fā)展起來的,一開始,F(xiàn)PGA的發(fā)明者還是按照ASIC的思維模式來設計新型的可編程邏輯器件的。從人們對FPGA顆粒的研究就可以了解FPGA新型結(jié)構(gòu)演變的過程。 第一章 FPGA設計基礎(chǔ)1.4.1 現(xiàn)代現(xiàn)代FPGA的基本邏輯單元
33、的基本邏輯單元Xilinx公司的FPGA的基本邏輯單元稱為Slice(切片),而Altera公司的FPGA的基本邏輯單元稱為LE(Logic Element)。一個Slice包含兩個核心邏輯單元LC(Logic Cell)。Slice的結(jié)構(gòu)圖如圖1-11所示。第一章 FPGA設計基礎(chǔ)圖1-11 Slice的基本結(jié)構(gòu)圖 第一章 FPGA設計基礎(chǔ)圖1-12 LC的結(jié)構(gòu)圖 第一章 FPGA設計基礎(chǔ)一個LC是由一個4輸入的查找表(LUT)、一個多路復用器和一個寄存器組成的。其結(jié)構(gòu)如圖1-12所示。對于MUX和D觸發(fā)器的作用,大家都很熟悉,唯一陌生的就是查找表的原理。下面介紹查找表的原理。 查找表(Lo
34、ok-Up-Table)簡稱LUT,其本質(zhì)上為RAM,如4輸入LUT,即包括有4位地址線的161的RAM在數(shù)字電路中,n輸入的邏輯運算最多只能輸出2n個結(jié)果,同樣的道理,4輸入LUT共有16種輸出結(jié)果。若將這16種結(jié)果全部存儲下來,就可以根據(jù)不同的地址輸入“查找”出相應輸出結(jié)果。LUT實現(xiàn)4輸入與門的示例如表1-1所示。 第一章 FPGA設計基礎(chǔ)第一章 FPGA設計基礎(chǔ)下面我們舉例來理解查找表的概念。如圖1-13所示,a、b、c、d由FPGA芯片的管腳輸入后進入可編程連線,然后作為地址線連到LUT,LUT中已經(jīng)事先寫入了所有可能的邏輯結(jié)果,通過地址查找到相應的數(shù)據(jù)然后輸出,這樣組合邏輯就實現(xiàn)了
35、。該電路中D觸發(fā)器是直接利用LUT后面的D觸發(fā)器來實現(xiàn)的。時鐘信號CLK由I/O腳輸入后進入芯片內(nèi)部的時鐘專用通道,直接連接到觸發(fā)器的時鐘端。觸發(fā)器的輸出與I/O腳相連,把結(jié)果輸出到芯片管腳。這樣PLD就完成了圖1-13所示電路的功能。(以上這些步驟都是由軟件自動完成的,不需要人為干預。) 第一章 FPGA設計基礎(chǔ)圖1-13 查找表示例 第一章 FPGA設計基礎(chǔ)這個電路是一個很簡單的例子,只需要一個LUT加上一個觸發(fā)器就可以完成。對于一個LUT無法完成的電路,就需要通過進位邏輯將多個單元相連,這樣FPGA就可以實現(xiàn)復雜的邏輯運算。LUT僅僅是FPGA最基本的組成。目前來說,F(xiàn)PGA的復雜程度遠
36、遠不能用LUT來描述。在Xilinx FPGA中,LUT組成LC,進一步形成Slice(切片),Slice才是Xilinx FPGA的最基本組成。而Slice上一級是CLB(可配置邏輯塊)。CLB的實際數(shù)量會根據(jù)器件的不同而不同,CLB之間的可編程互連是通過可配置的開關(guān)矩陣組成的,這樣每個CLB模塊不僅可以用于實現(xiàn)組合邏輯和時序邏輯,還可以配置為分布式RAM和分布式ROM。 第一章 FPGA設計基礎(chǔ)Xilinx FPGA中邏輯塊等級關(guān)系為LC-Slice-CLB,這樣在同一Slice的LC之間有快速互連。在同一CLB中的Slice之間稍慢些。接下來是CLB之間的互連,這樣可以比較容易地把它們彼
37、此連在一起,同時也不會增加太多的互連延遲,從而達到優(yōu)化平衡。 第一章 FPGA設計基礎(chǔ)1.4.2 Xilinx Spartan-3 FPGA的基本結(jié)構(gòu)的基本結(jié)構(gòu)查找表和多路復用器是FPGA的最基本的結(jié)構(gòu)。但是FPGA的結(jié)構(gòu)不是僅僅這么簡單的,由于應用的不同,每款FPGA的內(nèi)部結(jié)構(gòu)都有所不同??傮w來說,現(xiàn)代FPGA由如下7個部分組成:可編程輸入/輸出單元、可配置邏輯塊(Configurable Logic Blocks,CLB)、可編程內(nèi)部連接、嵌入式RAM塊、數(shù)字時鐘管理單元、底層嵌入式功能單元、內(nèi)嵌專用硬核,如圖1-14所示。下面我們以Spartan-3系列FPGA為例介紹主流基于中度顆粒F
38、PGA的基本結(jié)構(gòu)。第一章 FPGA設計基礎(chǔ)圖1-14 FPGA結(jié)構(gòu)圖 第一章 FPGA設計基礎(chǔ)1可編程輸入可編程輸入/輸出單元輸出單元可編程輸入/輸出單元(I/O單元,IOB)是FPGA與外界電路的接口,用于完成不同的電器特性下對輸入/輸出信號的驅(qū)動以及匹配的要求。如今FPGA的通用管腳數(shù)目達上千個,為了FPGA在電子設備中有更多的兼容性,可編程輸入/輸出單元還設計了許多巧妙且非常實用的功能: 第一章 FPGA設計基礎(chǔ)(1) 通過軟件的編程,可以適配不同的電器標準以及物理特性。不同器件廠商的不同系列FPGA所支持的I/O標準有所不同,常用的I/O標準大部分器件都支持單端I/O標準LVCMOS、
39、LVTTL、HSTL、SSTL、GTL、PCI等,差分I/O標準有:LVDS、HT、LVPECL、BLVDS、差分HSTL、SSTL等。另外,通過軟件編程可以配置FPGA每個接口塊的不同電壓標準,可支持1.8 V、2.5 V、3.3 V等。 第一章 FPGA設計基礎(chǔ)(2) FPGA的I/O口單元支持一些特殊的功能,包括可編程配置I/O口的驅(qū)動能力和上下拉電阻等。在差分信號傳輸中,為了使得輸入或輸出端能夠?qū)⒔邮掌骰蛘唑?qū)動器的阻抗匹配,在I/O口單元增加了數(shù)控阻抗(DCI)技術(shù),DCI還具備補償溫度變化和供電電壓波動的功能。高性能的FPGA支持高級Select/IO資源,接收器的最高頻率可達到11
40、.2 Gb/s。I/O口的新的功能給FPGA的應用增添了很多亮點,使得FPGA在與ASIC的對抗中顯得更為靈活多變。第一章 FPGA設計基礎(chǔ)(3) Spartan-3系列FPGA的I/O口管腳都有可編程控制的上下拉電阻,可以在ISE實現(xiàn)過程中,通過約束管腳使其有效。另外,還可以約束管腳的驅(qū)動電流大小,根據(jù)電平標準不同,可以支持的驅(qū)動電流值有所不同,為了數(shù)據(jù)的穩(wěn)定,還可以編程控制管腳的回轉(zhuǎn)快慢,每個I/O管腳都有保持電路,在所有驅(qū)動都撤銷時,管腳還會保持原來的值。I/O管腳支持DCI,有效地降低了信號的反射,提高了信號的質(zhì)量。 第一章 FPGA設計基礎(chǔ)2可配置邏輯塊可配置邏輯塊(CLB)可配置邏
41、輯塊是Xlinx FPGA內(nèi)部的基本邏輯單元,也是實現(xiàn)時序電路和組合邏輯的主要資源。在Altera器件中,用邏輯陣列塊(LAB)代替CLB,實際上兩者之間沒有什么區(qū)別。CLB的實際數(shù)量和特性會根據(jù)器件的不同而不同,我們也可以理解CLB是反映FPGA規(guī)模和能力的一個重要標志。CLB以陣列形式排列在FPGA中,如圖1-15所示。 第一章 FPGA設計基礎(chǔ)圖1-15 FPGA CLB 結(jié)構(gòu)圖 第一章 FPGA設計基礎(chǔ)在Spartan-3E中,每個CLB包括4個Slice,同時包含一個可配置開關(guān)矩陣和一些其他資源,包括多路復用器、觸發(fā)器等。其中,開關(guān)矩陣不僅可以非常靈活地對其進行配置,而且提供了本CL
42、B和別的CLB之間的靈活互連。多路復用器和觸發(fā)器協(xié)助本CLB模塊實現(xiàn)內(nèi)部大量的邏輯互連。4個Slice分成兩組,每組Slice按列排布,如圖1-16所示,并且?guī)в歇毩⒌倪M位鏈。左邊的一組Slice主要完成邏輯和存儲功能,稱為SLICEM;右邊的一組Slice主要完成邏輯功能,稱為SLICEL。這樣一來,SLICEL降低了CLB的功耗和減少了CLB的空間,同時更有利于SLICEM更好地發(fā)揮。所以每個CLB模塊不僅可以用于實現(xiàn)組合邏輯、時序邏輯,還可以配置為分布式RAM和分布式ROM,如圖1-16所示。第一章 FPGA設計基礎(chǔ)圖1-16 Spartan-3E CLB結(jié)構(gòu)圖 第一章 FPGA設計基礎(chǔ)
43、Slice是Xilinx公司定義的基本邏輯單位。一個Slice由兩個4輸入或者6輸入查找表函數(shù)、進位邏輯和存儲單元組成。不管是SLICEM還是SLICEL,都包括如下幾個部分:兩個4輸入函數(shù)發(fā)生器(查找表函數(shù))、兩個存儲單元、兩個多功能選擇器以及進位邏輯單元和算術(shù)邏輯單元。SLICEM還包括兩個161的分布式RAM塊(RAM16)和兩個16位的移位寄存器SRL16。 第一章 FPGA設計基礎(chǔ)算術(shù)邏輯單元包括一個異或門和一個專用與門。一個異或門可以是一個Slice,實現(xiàn)2位全加操作;專用與門可以用于提高乘法器的效率。進位邏輯單元由專用進位信號和函數(shù)復用器組成,用于實現(xiàn)快速算術(shù)加減法操作和提高CL
44、B的處理速度。4輸入函數(shù)發(fā)生器用于實現(xiàn)4輸入LUT、分布式RAM和16位移位寄存器。 第一章 FPGA設計基礎(chǔ)3數(shù)字時鐘管理單元數(shù)字時鐘管理單元(DCM)FPGA內(nèi)部所有的同步數(shù)字邏輯都需要由時鐘信號來驅(qū)動。時鐘源需要從外部引入,通過專用的FPGA時鐘輸入管腳進入FPGA,接著傳送到整個器件并連接到適當?shù)募拇嫫鳟斨小I(yè)界知名的FPGA都提供數(shù)字時鐘管理模塊。第一章 FPGA設計基礎(chǔ)隨著FPGA能夠處理的數(shù)字系統(tǒng)的能力越來越強,所需要的時鐘也越來越復雜,于是就有了時鐘樹的概念。時鐘樹就是在FPGA中有主時鐘,同時存在由主時鐘產(chǎn)生的子時鐘,這樣就形成一種“樹”一樣的結(jié)構(gòu),時鐘樹結(jié)構(gòu)能保證所有觸發(fā)器
45、接收到的信號盡可能地一致。不過我們可以想象,一條長長的時鐘線驅(qū)動著一連串的觸發(fā)器,那么最接近時鐘管腳的觸發(fā)器接收的信號一定會比位于鏈條末尾的觸發(fā)器接收到的快得多,這樣就會引起時鐘的不同步,也就是通常說的“抖動”。為了解決這個問題,時鐘樹都采用專門的走線,與通用的可編程模塊分離,以避免抖動的產(chǎn)生。這也是在FPGA設計原則中強調(diào)的原則之一,時鐘一定要走全局管腳。 第一章 FPGA設計基礎(chǔ)關(guān)于時鐘還有一個重要的概念就是時鐘管理器。在通常情況下,都是將外部時鐘接到時鐘專用管腳,然后通過專用管腳連接的時鐘管理器模塊產(chǎn)生一定數(shù)量的子時鐘。這些子時鐘可以用來驅(qū)動內(nèi)部時鐘樹,或者可以輸出作為系統(tǒng)別的器件的時鐘
46、。不同系列的FPGA的時鐘管理器的能力有所不同,但是都有下面共有的特性: 第一章 FPGA設計基礎(chǔ)1) 消除抖動來自外部世界的理想時鐘信號在通過系統(tǒng)通道時,時鐘沿將會有大小不一的抖動(即來的早一些或晚些),這樣在某一個時鐘點上將是多個時鐘沿的重疊而產(chǎn)生一個“模糊”時鐘,如圖1-17所示。FPGA的時鐘管理器可以檢測并糾正抖動,提供一個“干凈”的子時鐘信號。所以在設計FPGA系統(tǒng)時,CLK要從專用時鐘管腳引入。如果要產(chǎn)生子時鐘,則最好采用DCM來產(chǎn)生。例如有一個100 MHz的時鐘,在FPGA器件內(nèi)部傳輸時是有延時的,雖然說電信號傳輸?shù)乃俾屎芨?,但是此延時在數(shù)字系統(tǒng)中是萬萬不可忽略的。例如,10
47、0 MHz信號的周期是10 ns,所以只要延時幾個納秒,信號就會嚴重失真,而經(jīng)過DCM之后就可以避免這種抖動的產(chǎn)生。第一章 FPGA設計基礎(chǔ)圖1-17 抖動示意圖 第一章 FPGA設計基礎(chǔ)2) 頻率綜合在許多情況下,外部時鐘往往在頻率上滿足不了系統(tǒng)要求。這表現(xiàn)在兩個方面,一方面是時鐘的數(shù)量,比如系統(tǒng)需要若干個不同頻率的時鐘,如果都從外部管腳引入,則增加了很多成本;另一方面是時鐘頻率,如高頻率的時鐘信號,在PCB板上傳輸極易受外界環(huán)境的影響,所以電路板上的時鐘頻率盡量低一些,才能保障系統(tǒng)穩(wěn)定工作。我們通過DCM就可以解決這兩個問題,F(xiàn)PGA管腳輸入的低頻率的時鐘信號可以通過DCM轉(zhuǎn)化成高頻率時鐘
48、信號,比如說系統(tǒng)輸入時鐘為50 MHz,需要產(chǎn)生三個輸出時鐘:40 MHz、25 MHz、200 MHz。那么用DCM對輸入時鐘進行五分之四分頻、兩分頻、四倍頻之后,可分別產(chǎn)生所需時鐘,非常方便。 第一章 FPGA設計基礎(chǔ)3) 相位調(diào)整相位調(diào)整在數(shù)字系統(tǒng)中應用得也很多,比如PCIE或者DDR控制器接口都需要內(nèi)部時鐘與外部時鐘之間有相位偏移。時鐘管理器允許在某些固定的相位進行調(diào)整,比如120或者240等,在時鐘樹中也允許對每個子時鐘進行相位調(diào)整,如圖1-18所示。 第一章 FPGA設計基礎(chǔ)圖1-18 相位調(diào)整示意圖 第一章 FPGA設計基礎(chǔ)4) 自動偏移校正設想在時鐘樹的子時鐘,經(jīng)過DCM之后其
49、相位和頻率都與輸入時鐘有關(guān)系,但是,經(jīng)過時鐘管理器之后的時鐘一定有延時,這時如果DCM沒有對此延時進行處理,子時鐘輸出稍晚于輸入時鐘,就會帶來很多問題,也就是“偏移”。因而時鐘管理器就將子時鐘同時作為輸入,來比較兩個信號,并給子時鐘一個專門的延遲,使得子時鐘和主時鐘重新對齊,如圖1-19所示。 第一章 FPGA設計基礎(chǔ)圖1-19 時鐘自動校正示意圖 第一章 FPGA設計基礎(chǔ)Spartan-3采用DCM為數(shù)字設計提供了靈活、全面的時鐘資源,除了XC3S50僅有兩個DCM之外,其他Spartan-3系列FPGA都有四個DCM,每個DCM資源如圖1-20所示。 第一章 FPGA設計基礎(chǔ)圖1-20 S
50、partan-3 DCM資源結(jié)構(gòu)圖 第一章 FPGA設計基礎(chǔ)4嵌入式嵌入式RAM塊塊FPGA一般內(nèi)部有RAM資源,目的是為了拓展FPGA的應用范圍。在FPGA中的RAM資源,相比RAM器件來說,使用非常的方便和靈活,它可以被配置為ROM、單端口RAM、雙端口RAM、內(nèi)容地址存儲器(CAM)以及FIFO等常用的存儲器結(jié)構(gòu),同時不管使用哪種結(jié)構(gòu),都可以靈活地配置存儲器的位寬、深度。比如說,如果存儲器的位寬為1,這時候就相當于我們使用FPGA內(nèi)部的存儲器資源構(gòu)造了一個長度一定的移位寄存器。Spartan-3系列FPGA都支持BlockRAM資源,可以被配置為18 Kbit雙端口存儲器,并且支持四種數(shù)
51、據(jù)讀寫操作,如圖1-21所示。 第一章 FPGA設計基礎(chǔ)圖1-21 BlockRAM 數(shù)據(jù)傳輸 第一章 FPGA設計基礎(chǔ)5可編程內(nèi)部連接可編程內(nèi)部連接FPGA中除了CLB之外,大部分就是互連資源,這樣對FPGA數(shù)字邏輯的配置才能起作用。由于其作用不一樣,可編程內(nèi)部連接布線的長度、寬度和分布也都不相同。第一類是全局布線資源,用于芯片內(nèi)部全局時鐘和全局復位/置位的布線;第二類是長線資源,用于完成芯片Bank之間的高速信號和第二全局時鐘信號的實現(xiàn);第三類是短線資源,用于完成基本邏輯單元之間的邏輯互連和布線;第四類是分布式布線資源,用于專有時鐘、復位等控制信號線。 第一章 FPGA設計基礎(chǔ)6內(nèi)嵌專用硬
52、核內(nèi)嵌專用硬核內(nèi)嵌專用硬核指的是FPGA當中嵌入的等效于ASIC的硬核電路。FPGA廠家為了提高FPGA的處理能力,目前集成了許多專用硬核在里面。比如:為了提供FPGA在數(shù)字信號處理方面的能力,主流的FPGA都集成了專用的乘法器;為了適應高速的通信信號的傳輸,很多高端的FPGA集成了串并收發(fā)器(SERDES),可以達到數(shù)十吉比特的傳輸速率。Xilinx公司高端產(chǎn)品集成了PowerPC系列CPU,還內(nèi)嵌了DSP 核模塊,為實現(xiàn)SOC解決方案提供了良好的硬件平臺。第一章 FPGA設計基礎(chǔ)1.5 Xilinx FPGA的開發(fā)流程的開發(fā)流程一般的FPGA系統(tǒng)設計流程包括如下幾個部分:需求分析、器件選型
53、、設計輸入、功能仿真、綜合優(yōu)化、后仿真、布局布線、板級驗證和調(diào)試等,如圖1-22所示。 第一章 FPGA設計基礎(chǔ)圖1-22 FPGA 設計流程圖 第一章 FPGA設計基礎(chǔ)1需求分析需求分析電子產(chǎn)品的開發(fā)都是從系統(tǒng)入手的。首先根據(jù)客戶的需求,進行系統(tǒng)方案的論證和分析,包括根據(jù)客戶的需求,考慮系統(tǒng)的性能、工作頻率、成本等;然后在這些確定之后,將模塊進行劃分,確定模塊之間的端口定義以及信號傳輸在各個模塊之間的傳輸流程。劃分模塊非常關(guān)鍵,往往是決定電路能夠?qū)崿F(xiàn)與否的前提。好的電路都是設計出來的。這里的“設計”,是從架構(gòu)開始的,架構(gòu)確定好之后,將各個小模塊進一步細分,充分考慮設計的合理性,直到能夠直接用
54、EDA元件庫實現(xiàn)為止;否則,重新進行架構(gòu)的設計。 第一章 FPGA設計基礎(chǔ)2器件選型器件選型FPGA設計不僅僅是代碼以及代碼架構(gòu)的設計,F(xiàn)PGA廠家根據(jù)用戶不同的需求,設計了非常豐富的FPGA型號。良好的選型能夠節(jié)約成本,更貼切地滿足用戶的需求。一般來說,選擇器件應從如下幾個方面來考慮:1) 根據(jù)時鐘選擇前面時鐘樹部分,我們介紹過FPGA具有豐富的時鐘資源。可是每個型號的FPGA是不一樣的。比如,同樣是Spartan-3 系列產(chǎn)品,XC3S50有2個DCM資源,而其他的XC3S200等都是4個DCM,如果在設計過程中,從邏輯資源角度考慮,則XC3S50已經(jīng)足夠了,可是如果時鐘需要3個DCM才能
55、完成時,就要考慮選用XC3S200了。 第一章 FPGA設計基礎(chǔ)2) 根據(jù)速度選擇不管哪個廠家的FPGA,都有各個速度等級的產(chǎn)品。速度等級越高的產(chǎn)品,系統(tǒng)所能執(zhí)行的速率越高。比如,我們使用FPGA來做IC驗證,盡量使用速度等級高的產(chǎn)品,避免由于速度的原因,無法完成驗證任務。3) 根據(jù)功耗選擇FPGA相對于ASIC芯片來說,功耗高很多。雖然現(xiàn)在FPGA的工藝水平在不斷提高,功耗也在不斷降低,但是在很多情況下,完成同樣的功能新推出來的芯片功耗都要低的多。比如,Xilinx新推出來的Spartan-6系列芯片,功耗就非常的低,如果系統(tǒng)對功耗有要求,就可以在同等情況下選擇新出系列的芯片。第一章 FPG
56、A設計基礎(chǔ)4) 根據(jù)封裝選擇FPGA廠家在封裝芯片時,采用不同的封裝形式,就是為了滿足廣大用戶的需求。因此,在產(chǎn)品對面積要求很高的情況下,完全可以選擇BGA封裝的芯片完成設計。5) 根據(jù)特殊需要選擇這里所指的特殊需要包括如下幾個方面:RAM資源、現(xiàn)有IP的利用、DSP的利用、內(nèi)嵌處理器的利用等。比如我們需要開發(fā)一款音頻處理設備,上面需要做一些算法,比如濾波器之類的算法,需要乘法器資源,那么選擇FPGA時,在考慮了別的條件滿足的同時,還需要優(yōu)先考慮硬件乘法器資源豐富的FPGA。另外,數(shù)字信號處理需求很大,我們就需要選擇支持內(nèi)嵌DSP的FPGA。如果系統(tǒng)是“FPGA+CPU”的架構(gòu),則要考慮是選用
57、內(nèi)嵌CPU,還是外部掛CPU;如果內(nèi)嵌CPU能夠完成,則可以節(jié)省成本,同時又節(jié)省了板子的面積,一舉兩得。 第一章 FPGA設計基礎(chǔ)3設計輸入設計輸入設計輸入是將所設計的電路按照開發(fā)軟件的需求以某一種方式表達出來,并輸入到EDA工具的過程。在FPGA設計初期,所用的輸入方式是原理圖輸入方式,一方面是延續(xù)了當時情況下ASIC的設計方式,使得工程師能夠很快適應FPGA的設計方式,另外,F(xiàn)PGA廠家提供大量的數(shù)字邏輯庫,也是為了方便用戶能夠直觀自然地使用自己的工具。目前而言,很多工程師還是習慣用原理圖輸入方式。原理圖輸入方式雖然直觀,但是當項目比較大時,比如設計5000萬門的電路時,效率就非常低,而且
58、移植性較差,當設計進行升級之后,往往要改動大量的原理圖,非常容易出錯。因此到20世紀80年代,逐漸流行的輸入方式是HDL輸入法。 第一章 FPGA設計基礎(chǔ)基于HDL語言的輸入,為硬件設計提出了新的概念,即用代碼的方式設計“硬件”?!坝布辈粌H僅可以用集成電路和PCB板的實際結(jié)構(gòu)連接表示,也可以用HDL語言描述的方式描述?;贖DL語言描述的主流語言是VerilogHDL和VHDL,這兩種語言都是美國電器與電子協(xié)會(IEEE)的標準,其共同的特點是:語言描述與芯片無關(guān),都支持完整的各個層次的描述,可移植性好,具有很強的邏輯描述功能。可是,隨著FPGA技術(shù)的不斷更新,F(xiàn)PGA的應用規(guī)模的不斷拓展,
59、再加上最近新型技術(shù)的推出,以上兩種語言在很多方面逐漸不能滿足人們的需要,暴露出如下諸多的弱點: 第一章 FPGA設計基礎(chǔ)(1) RTL代碼在FPGA設計和ASIC設計之間的通用性差。用FPGA設計的RTL編碼不能夠直接轉(zhuǎn)移到ASIC設計中,也就是說ASIC的原型驗證在FPGA上實現(xiàn)還不是無縫的。(2) RTL代碼用于軟硬件協(xié)同設計還不夠理想。SOC系統(tǒng)一般含有微處理器內(nèi)核在FPGA當中,SOC設計方式逐漸成熟,軟件成分越來越多,目前很多情況下,SOC的驗證都是基于軟件方式驗證的,那么目前唯一的辦法就是VerilogHDL和VHDL描述語言與C/C+或者匯編語言一起聯(lián)合驗證,非常的不方便。所以就
60、出現(xiàn)了可以彌補以上缺陷的SystermC語言。Systerm C 2.0版本是2002年發(fā)布的,SystermC覆蓋了傳統(tǒng)HDL所能描述的所有抽象級層次,在仿真方面遠遠快于傳統(tǒng)的HDL描述方式,而且在系統(tǒng)級和仿真描述方面更加方便。由于篇幅的原因,這里不做詳細介紹。第一章 FPGA設計基礎(chǔ)4功能仿真功能仿真功能仿真也稱為前仿真,指的是在編譯之前對用戶所設計的電路進行邏輯功能驗證;此時的驗證僅僅對功能進行檢測,不含任何時序信息。仿真前,要先利用波形編輯器或者HDL建立波形文件或測試平臺(TestBench),仿真結(jié)果將按照測試平臺所加的激勵產(chǎn)生報告文件和輸出波形,方便觀察各個信號節(jié)點的變化,如果發(fā)現(xiàn)了錯誤,將返回修改邏輯設計。常用的仿真工具有Model Tech公司的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國汽車電瓶糟蓋行業(yè)深度研究分析報告
- 2025年度土地儲備中心國有土地房屋出售合同(2024版升級)
- 市中心小區(qū)私人房屋轉(zhuǎn)租合同
- 產(chǎn)品部件加工合同范例
- 農(nóng)機用工勞動合同范例
- 修冷鏈凍庫合同范本
- 個人洗衣設備轉(zhuǎn)讓合同范本
- 2025年度家具設計版權(quán)采購合作協(xié)議
- 2025年度教師繼續(xù)教育與職業(yè)發(fā)展聘用合同范本
- 2025年度環(huán)保監(jiān)測與治理服務合同續(xù)簽申請書
- 藏族唐卡藝術(shù)特色分析
- 操作系統(tǒng)課程設計報告
- 《學校體育科研方法》課件
- 護士團隊的協(xié)作和領(lǐng)導力培養(yǎng)培訓課件
- QFD模板含計算公式計分標準說明模板
- 慢阻肺試題練習
- 人工智能在生物醫(yī)學倫理與法律中的基因編輯與生命倫理問題研究
- 國有資產(chǎn)管理辦法-國有資產(chǎn)管理辦法條例
- 公務車輛定點維修車輛保養(yǎng)(附彩圖) 投標方案
- 00015-英語二自學教程-unit3
- 第二章共混改性基本原理
評論
0/150
提交評論