一文帶你了解從FPGA入門到高手的絕大部分知識,推薦收藏哦~
FPGA簡介
FPGA是英文Field-Programmable Gate Array的縮寫,即現(xiàn)場可編程門陣列,它是在可編程陣列邏輯PAL(Programmable Array Logic)、門陣列邏輯GAL(Gate Array Logic)、可編程邏輯器件PLD(Programmable Logic Device)等可編程器件的基礎(chǔ)什么是FPGA上進(jìn)一步發(fā)展的產(chǎn)物。
它是作為專用集成電路ASIC(Applica TIon Specific Integrated Circuit)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。FPGA能完成任何數(shù)字器件的功能,上至高性能CPU,下至簡單的74系列電路,都可以用FPGA來實(shí)現(xiàn)。FPGA如同一張白紙或是一堆積木,工程師可以通過傳統(tǒng)的原理圖什么是輸入法,或是硬件描述語言自由設(shè)計一個數(shù)字系統(tǒng)。
通過軟件仿真,我們可以事先驗證設(shè)計的正確性。在PCB完成以后,還可以利用FPGA的在線修改能力,隨時修改設(shè)計而不必改動硬件電路。使用FPGA來開發(fā)數(shù)字電路,可以大大縮短設(shè)計時間,減少PCB面積,提高系統(tǒng)的可靠性。PLD的這些優(yōu)點(diǎn)使得PLD技術(shù)在90年代以后得到飛速的發(fā)展,同時也大大推動了電子設(shè)計自動化EDA(Electronic Design Automa TIc)軟件和硬件描述語言VHDL(Very-High-Speed Integrated Circuit Hardware Descrip TIon)的進(jìn)步。
FPGA的特點(diǎn)
FPGA具有體系結(jié)構(gòu)和邏輯單元靈活、集成度高以及適用范圍寬FPGA等特點(diǎn)。兼容了PLD和通用門陣列的優(yōu)點(diǎn),可實(shí)現(xiàn)較大規(guī)模的電路,編程也很靈活。與門陣列等其它ASIC相比,它又具有設(shè)計開發(fā)什么是周期短、設(shè)計制造成本低、開發(fā)工具先進(jìn)、標(biāo)準(zhǔn)產(chǎn)品無需測試、質(zhì)量穩(wěn)定以及可實(shí)時在線檢驗等優(yōu)點(diǎn),因此被廣泛應(yīng)用于產(chǎn)品的原型設(shè)計和產(chǎn)品生產(chǎn)(一般在10,000件以下)之中。幾乎所有應(yīng)用門陣列、PLD和中小規(guī)模通用數(shù)字集成電路的場合均可應(yīng)用FPGA。
FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個新概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個部分。
FPGA的主要基本特點(diǎn)
一是采用FPGA設(shè)計ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。
二是FPGA可做其它全定制或半定制ASIC電路的中試樣片。
三是FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。
四是FPGA是ASIC電路中設(shè)計周期最短、開發(fā)費(fèi)用最低、風(fēng)險最小的器件之一。
五是FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。
FPGA芯片結(jié)構(gòu)
目前主流的FPGA仍是基于查找表技術(shù)的,已經(jīng)遠(yuǎn)遠(yuǎn)超出了先前版本的基本性能,并且整合了常用功能(如RAM、時鐘管理和DSP)的硬核(ASIC型)模塊。FPGA芯片主要由6部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時鐘管理、嵌入塊式RAM、豐富的布線資源、內(nèi)嵌的底層功能單元和內(nèi)嵌專用硬件模塊。
1.可編程輸入輸出單元(IOB)
可編程輸入/輸出單元簡稱I/O單元,是芯片與外界電路的接口部分,完成不同電氣特性下對輸入/輸出信號的驅(qū)動與匹配要求。為了便于管理和適應(yīng)多種電器標(biāo)準(zhǔn),F(xiàn)PGA的IOB被劃分為若干個組(bank),每個bank的接口標(biāo)準(zhǔn)由其接口電壓VCCO決定,一個bank只能有一種VCCO,但不同bank的VCCO可以不同。只有相同電氣標(biāo)準(zhǔn)的端口才能連接在一起,VCCO電壓相同是接口標(biāo)準(zhǔn)的基本條件。
2.可配置邏輯塊(CLB)
CLB是FPGA內(nèi)的基本邏輯單元。CLB的實(shí)際數(shù)量和特性會依器件的不同而不同,但是每個CLB都包含一個可配置開關(guān)矩陣,此矩陣由4或6個輸入、一些選型電路(多路復(fù)用器等)和觸發(fā)器組成。開關(guān)矩陣是高度靈活的,可以對其進(jìn)行配置以便處理組合邏輯、移位寄存器或RAM。
3.嵌入式塊RAM(BRAM)
大多數(shù)FPGA都具有內(nèi)嵌的塊RAM,這大大拓展了FPGA的應(yīng)用范圍和靈活性。塊RAM可被配置為單端口RAM、雙端口RAM、內(nèi)容地址存儲器(CAM)以及FIFO等常用存儲結(jié)構(gòu)。CAM存儲器在其內(nèi)部的每個存儲單元中都有一個比較邏輯,寫入CAM中的數(shù)據(jù)會和內(nèi)部的每一個數(shù)據(jù)進(jìn)行比較,并返回與端口數(shù)據(jù)相同的所有數(shù)據(jù)的地址,因而在路由的地址交換器中有廣泛的應(yīng)用。除了塊RAM,還可以將FPGA中的LUT靈活地配置成RAM、ROM和FIFO等結(jié)構(gòu)。在實(shí)際應(yīng)用中,芯片內(nèi)部塊RAM的數(shù)量也是選擇芯片的一個重要因素。
4.豐富的布線資源
布線資源連通FPGA內(nèi)部的所有單元,而連線的長度和工藝決定著信號在連線上的驅(qū)動能力和傳輸速度。FPGA芯片內(nèi)部有著豐富的布線資源,根據(jù)工藝、長度、寬度和分布位置的不同而劃分為4類不同的類別。第一類是全局布線資源,用于芯片內(nèi)部全局時鐘和全局復(fù)位/置位的布線;第二類是長線資源,用以完成芯片Bank間的高速信號和第二全局時鐘信號的布線;第三類是短線資源,用于完成基本邏輯單元之間的邏輯互連和布線;第四類是分布式的布線資源,用于專有時鐘、復(fù)位等控制信號線。
在實(shí)際中設(shè)計者不需要直接選擇布線資源,布局布線器可自動地根據(jù)輸入邏輯網(wǎng)表的拓?fù)浣Y(jié)構(gòu)和約束條件選擇布線資源來連通各個模塊單元。從本質(zhì)上講,布線資源的使用方法和設(shè)計的結(jié)果有密切、直接的關(guān)系。
5.底層內(nèi)嵌功能單元
內(nèi)嵌功能模塊主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等軟處理核。現(xiàn)在越來越豐富的內(nèi)嵌功能單元,使得單片F(xiàn)PGA成為了系統(tǒng)級的設(shè)計工具,使其具備了軟硬件聯(lián)合設(shè)計的能力,逐步向SOC平臺過渡。
DLL和PLL具有類似的功能,可以完成時鐘高精度、低抖動的倍頻和分頻,以及占空比調(diào)整和移相等功能。
6.內(nèi)嵌專用硬核
內(nèi)嵌專用硬核是相對底層嵌入的軟核而言的,指FPGA處理能力強(qiáng)大的硬核(Hard Core),等效于ASIC電路。為了提高FPGA性能,芯片生產(chǎn)商在芯片內(nèi)部集成了一些專用的硬核。例如:為了提高FPGA的乘法速度,主流的FPGA中都集成了專用乘法器;為了適用通信總線與接口標(biāo)準(zhǔn),很多高端的FPGA內(nèi)部都集成了串并收發(fā)器(SERDES),可以達(dá)到數(shù)十Gbps的收發(fā)速度。
FPGA與ASIC及CPLD對比
1、FPGA和ASIC的比較
ASIC是英文的Applica TIon Specific Integrated Circuits縮寫,即專用集成電路,是指應(yīng)特定用戶要求和特定電子系統(tǒng)的需要而設(shè)計、制造的集成電路。目前用CPLD(復(fù)雜可編程邏輯器件)和FPGA(現(xiàn)場可編程邏輯陣列)來進(jìn)行ASIC設(shè)計是最為流行的方式之一,它們的共性是都具有用戶現(xiàn)場可編程特性,都支持邊界掃描技術(shù),但兩者在集成度、速度以及編程方式上具有各自的特點(diǎn)。
ASIC的特點(diǎn)是面向特定用戶的需求,品種多、批量少,要求設(shè)計和生產(chǎn)周期短,它作為集成電路技術(shù)與特定用戶的整機(jī)或系統(tǒng)技術(shù)緊密結(jié)合的產(chǎn)物,與通用集成電路相比具有體積更小、重量更輕、功耗更低、可靠性提高、性能提高、保密性增強(qiáng)、成本降低等優(yōu)點(diǎn)。
FPGA特別適合于樣品研制或小批量產(chǎn)品開發(fā),使產(chǎn)品能以最快的速度上市,而當(dāng)市場擴(kuò)大時,它可以很容易的由ASIC實(shí)現(xiàn),因此開發(fā)風(fēng)險也大為降低。但ASIC也有它固有的優(yōu)勢,芯片可以獲得最優(yōu)的性能,即面積利用率高、速度快、功耗低,批量成本低,所以在今后一段時間內(nèi)ASIC仍然會占據(jù)高端芯片市場和大批量應(yīng)用的成熟中低端市場。
2、FPGA與CPLD的比較
盡管FPGA和CPLD都是可編程ASIC器件,有很多共同特點(diǎn),但由于CPLD和FPGA結(jié)構(gòu)上的差異,具有各自的特點(diǎn):
一是CPLD更適合完成各種算法和組合邏輯,F(xiàn)PGA更適合于完成時序FPGA邏輯。換句話說,F(xiàn)PGA更適合于觸發(fā)器豐富的結(jié)構(gòu),而CPLD更適合于觸發(fā)器有限而乘積項豐富的結(jié)構(gòu)。
二是CPLD的連續(xù)式布線結(jié)構(gòu)決定了它的時序延遲是均勻的和可預(yù)測的,而FPGA的分段式布線結(jié)構(gòu)決定了其延遲的不可預(yù)測性。
三是在編程上FPGA比CPLD具有更大的靈活性。CPLD通過修改具有固定內(nèi)連電路的邏輯功能來編程,F(xiàn)PGA主要通過改變內(nèi)部連線的布線來編程;FPGA可在邏輯門下編程,而CPLD是在邏輯塊下編程。
四是FPGA的集成度比CPLD高,具有更復(fù)雜的布線結(jié)構(gòu)和邏輯實(shí)現(xiàn)。
五是CPLD比FPGA使用起來更方便。CPLD的編程采用E2PROM或FASTFLASH技術(shù),無需外部存儲器芯片,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法復(fù)雜。
六是PLD的速度比FPGA快,并且具有較大的時間可預(yù)測性。這是由于FPGA是門級編程,并且CLB之間采用分布式互聯(lián),而CPLD是邏輯塊級編程,并且其邏輯塊之間的互聯(lián)是集總式的。
七是在編程方式上,CPLD主要是基于E2PROM或FLASH存儲器編程,編程次數(shù)可達(dá)1萬次,優(yōu)點(diǎn)是系統(tǒng)斷電時編程信息也不丟失。CPLD又可分為在編程器上編程和在系統(tǒng)編程兩類。FPGA大部分是基于SRAM編程,編程信息在系統(tǒng)斷電時丟失,每次上電時,需從器件外部將編程數(shù)據(jù)重新寫入SRAM中。其優(yōu)點(diǎn)是可以編程任意次,可在工作中快速編程,從而實(shí)現(xiàn)板級和系統(tǒng)級的動態(tài)配置。
八是CPLD保密性好,F(xiàn)PGA保密性差。
九是一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。
FPGA基礎(chǔ)入門到高手相關(guān)知識
1、FPGA器件有三類配置下載方式:主動配置方式(AS)和被動配置方式(PS)和最常用 的(JTAG)配置方式。
AS由FPGA器件引導(dǎo)配置操作過程,它控制著外部存儲器和初始化過程,EPCS系列。如EPC S1,EPCS4配置器件專供AS模式,目前只支持 Cyclone系列。使用Altera串行配置器件來完成。Cyclone期間處于主動地位,配置期間處于從屬地位。配置數(shù)據(jù)通過DATA0引腳送入 FPGA。配置數(shù)據(jù)被同步在DCLK輸入上,1個時鐘周期傳送1位數(shù)據(jù)。
PS則由外部計算機(jī)或控制器控制配置過程。通過加強(qiáng)型配置器件(EPC16,EPC8,EPC4)等配置器件來完成,在PS配置期間,配置數(shù)據(jù)從外部儲存部件,通過DATA0引腳送入FPGA。配置數(shù)據(jù)在DCLK上升沿鎖存,1個時鐘周期傳送1位數(shù)據(jù)。
JTAG接口是一個業(yè)界標(biāo)準(zhǔn),主要用于芯片測試等功能,使用IEEE Std 1149.1聯(lián)合邊界掃描接口引腳,支持JAM STAPL標(biāo)準(zhǔn),可以使用Altera下載電纜或主控器來完成。 FPGA在正常工作時,它的配置數(shù)據(jù)存儲在SRAM中,加電時須重新下載。在實(shí)驗系統(tǒng)中,通常用計算機(jī)或控制器進(jìn)行調(diào)試,因此可以使用PS。在實(shí)用系統(tǒng)中,多數(shù)情況下必須由FPGA主動引導(dǎo)配置操作過程,這時FPGA將主動從外圍專用存儲芯片中獲得配置數(shù)據(jù),而此芯片中fpga配置信息是用普通編程器將設(shè)計所得的pof格式的文件燒錄進(jìn)去。
專用配置器件:epc型號的存儲器
常用配置器件:epc2,epc1,epc4,epc8,epc1441(現(xiàn)在好象已經(jīng)被逐步淘汰了)等
對于cyclone cycloneII系列器件,ALTERA還提供了針對AS方式的配置器件,EPCS系列。如EPCS1,EPCS4配置器件也是串行配置的。注意,他們只適用于cyclone系列。 除了AS和PS等單BIT配置外,現(xiàn)在的一些器件已經(jīng)支持PPS,F(xiàn)PS等一些并行配置方式,提升配置了配置速度。當(dāng)然所外掛的電路也和PS有一些區(qū)別。還有處理器配置比如JRUNNER 等等,如果需要再baidu吧,至少不下十種。
比如Altera公司的配置方式主要有Passive Serial(PS),Active Serial(AS),F(xiàn)ast Passive Parallel(FPP),Passive Parallel Synchronous(PPS),Passive Parallel Asynchronous(PPA),Passive Serial Asynchronous(PSA),JTAG等七種配置方式,其中Cyclone支持的配置方式有PS,AS,JTAG三種。
2、對FPGA芯片的配置中,可以采用AS模式的方法,如果采用EPCS的芯片,通過一條下載線進(jìn)行燒寫的話,那么開始的‘nCONFIG,nSTATUS’應(yīng)該上拉,要是考慮多種配置模式,可以采用跳線設(shè)計。讓配置方式在跳線中切換,上拉電阻的阻值可以采用10K。
3、在PS模式下tip:如果你用電纜線配置板上的FPGA芯片,而這個FPGA芯片已經(jīng)有配置芯片在板上,那你就必須隔離纜線與配置芯片的信號。(祥見下圖)。一般平時調(diào)試時不會把配置芯片焊上的,這時候用纜線下載程序。只有在調(diào)試完成以后,才把程序燒在配置芯片中, 然后將芯片焊上。或者配置芯片就是可以方便取下焊上的那種。這樣出了問題還可以方便地調(diào)試。
在AS模式下tip: 用過一塊板子用的AS下載,配置芯片一直是焊在板子上的,原來AS方式在用線纜對配置芯片進(jìn)行下載的時候,會自動禁止對FPGA的配置,而PS方式需要電路上隔離。
4、一般是用jtag配置epc2和flex10k,然后 epc2用ps方式配置flex10k.這樣用比較好。(這是我在網(wǎng)上看到的,可以這樣用嗎?懷疑中)望達(dá)人告知。
5、下載電纜,Altera下的下載電纜分為byteblaster和byteblasterMV,以及ByteBlaster II,現(xiàn)在還推出了基于USB-blaster.由于BB基本已經(jīng)很少有人使用,而USB-Blaster現(xiàn)在又過于昂貴,這里就說一下BBII和 BBMV的區(qū)別。
BBII支持多電壓供電5.5v,3.3v,2.5v,1.8v;BBII支持三種下載模式:AS,可對Altera的As串行配置芯片(EPCS系列)進(jìn)行編程 PS,可對FPGA進(jìn)行配置 JTAG,可對FPGA,CPLD,即Altera配置芯片(EPC系列)編程 而BBMV只支持PS和JTAG
6、一般在做FPGA實(shí)驗板,(如cyclone系列)的時候,用AS+JTAG方式,這樣可以用JTAG方式調(diào)試,而最后程序已經(jīng)調(diào)試無誤了后,再用 AS模式把程序燒到配置芯片里去,而且這樣有一個明顯的優(yōu)點(diǎn),就是在AS模式不能下載的時候,可以利用Quartus自帶的工具生成JTAG模式下可以利用的jic文件來驗證配置芯片是否已經(jīng)損壞。
7、Altera的FPGA可以通過單片機(jī),CPLD等加以配置,主要原理是滿足datasheet中的時序即可,這里我就不多說了,有興趣的朋友可以看看下面幾篇文章,應(yīng)該就能夠明白是怎么回事了。
8、配置時,quartus軟件操作部分:
(1)assignment--》device--》device&pin options--》選擇configuration scheme,configuaration mode,configuration device,注意在不支持遠(yuǎn)程和本地更新的機(jī)器中configuration mode不可選擇,而configuration device中會根據(jù)不同的配置芯片產(chǎn)生pof文件, 如果選擇自動,會選擇最小密度的器件和適合設(shè)計。
(2)可以定義雙口引腳在配置完畢后的作用,在剛才的device&pin option--》dual-purpose pins--》,可以在配置完畢后繼續(xù)當(dāng)I/O口使用
(3)在general菜單下也有很多可鉤選項,默認(rèn)情況下一般不做改動,具體用法參見alter a configuration handbook,volume2,sectionII.
(4)關(guān)于不同后綴名的文件的適用范圍: sof(SRAM Object File)當(dāng)直接用PS模式下將配置數(shù)據(jù)下到FPGA里用到,USB BLASTER,MASTERBLASER,BBII,BBMV適用,quartusII會自動生成,所有其他的配置文件都是由sof生成的。 pof(Programmer Object File)也是由quartusII自動生成的,BBII適用,AS模式下將配置數(shù)據(jù)下到配置芯片中rbf(Raw Binary File)用于微處理器的二進(jìn)制文件。在PS,F(xiàn)PP,PPS,PPA配置下有用處rpd(Raw Programing Data File)包含bitstream的二進(jìn)制文件,可用AS模式配置,只能由pof文件生成hex(hexadecimal file)這個就不多說了,單片機(jī)里很多ttf(Tabular Text File)適用于FPP,PPS,PPA,和bit-wide PS配置方式sbf(Serial Bitstream File)用PS模式配置Flex 10k和Flex6000的jam(Jam File)專門用于program,verigy,blank-check。
FPGA下載配置學(xué)習(xí)心得
1、根據(jù)FPGA在配置電路中的角色,配置數(shù)據(jù)可以使用3種方式載入到目標(biāo)器件中:
(1) FPGA主動方式:由FPGA來主動輸出控制和同步信號給FPGA的串行配置芯片(EPCS系列),配置芯片收到命令后,把配置數(shù)據(jù)發(fā)給FPGA,完成配置過程;在AS模式下,F(xiàn)PGA必須與AS串行配置芯片配合使用,它與FPGA的接口為四跟信號線,分別為:串行時鐘輸入(DCLK),AS控制信號輸入 (ASDI),片選信號(nCS),串行數(shù)據(jù)輸出(DATA)。
(2) FPGA被動方式:被動模式下,由系統(tǒng)的其他設(shè)備發(fā)起并控制配置過程,這些設(shè)備可以是配置芯片(EPC系列),或者單板的微處理器、CPLD等。 FPGA在配置過程中完全處于被動地位,只是輸出一些狀態(tài)信號來配合配置過程;在PS模式下,需要配置時鐘(DCLK),配置數(shù)據(jù)(DATA0),配置命令(nCONFIG),狀態(tài)信號(nSTATUS),配置完成指示(CONF_DONE)這四個信號來完成配置過程。
(3) JTAG模式:使用JTAG進(jìn)行配置可以使用Altera的下載電纜,或者通過智能主機(jī)模擬JTAG的時序來進(jìn)行配置;JTAG接口由四個必須的信號TDI、TDO、TMS和TCK,以及一個可選的TRST構(gòu)成。
2、若使用ByteBlasterII下載電纜,支持的配置方式有以下3種:
AS方式:對AS配置芯片(ECPS系列)進(jìn)行編程;
PS方式:可以對FPGA進(jìn)行配置;
JTAG方式:可以對FPGA、CPLD以及Altera配置芯片(EPC系列)編程。
3、AS及PS模式下的注意事項
PS 模式:如果你用電纜線配置板上的FPGA芯片,而這個FPGA芯片已經(jīng)有配置芯片在板上,那你就必須隔離纜線與配置芯片的信號一般平時調(diào)試時不會把配置芯片焊上的,這時候用纜線下載程序。只有在調(diào)試完成以后,才把程序燒在配置芯片中,然后將芯片焊上。或者配置芯片就是可以方便取下焊上的那種。這樣出了問題還可以方便地調(diào)試。
AS模式下: 用過一塊板子用的AS下載,配置芯片一直是焊在板子上的,原來AS方式在用線纜對配置芯片進(jìn)行下載的時候,會自動禁止對FPGA的配置,而PS方式需要電路上隔離。
4、一般在做FPGA實(shí)驗板,(如cyclone系列)的時候,用AS+JTAG方式,這樣可以用JTAG方式調(diào)試,而最后程序已經(jīng)調(diào)試無誤了后,再用AS模式把程序燒到配置芯片里去,而且這樣有一個明顯的優(yōu)點(diǎn),就是在AS模式不能下載的時候,可以利用Quartus自帶的工具生成JTAG模式下可以利用的jic文件來驗證配置芯片是否已經(jīng)損壞。
評論
查看更多