當(dāng)前位置:首頁 > 百科知識 > 電子工程 > 正文

FPGA

FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。

FPGA簡介

背景

目前以硬件描述語言(Verilog 或 VHDL)所完成的電路設(shè)計,可以經(jīng)過簡單的綜合與布局,快速的燒錄至 FPGA 上進行測試,是現(xiàn)代 IC 設(shè)計驗證的技術(shù)主流。這些可編輯元件可以被用來實現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flip-flop)或者其他更加完整的記憶塊。系統(tǒng)設(shè)計師可以根據(jù)需要通過可編輯的連接把FPGA內(nèi)部的邏輯塊連接起來,就好像一個電路試驗板被放在了一個芯片里。一個出廠后的成品FPGA的邏輯塊和連接可以按照設(shè)計者而改變,所以FPGA可以完成所需要的邏輯功能。FPGA一般來說比ASIC(專用集成芯片)的速度要慢,無法完成復(fù)雜的設(shè)計,而且消耗更多的電能。但是他們也有很多的優(yōu)點比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的FPGA。因為這些芯片有比較差的可編輯能力,所以這些設(shè)計的開發(fā)是在普通的FPGA上完成的,然后將設(shè)計轉(zhuǎn)移到一個類似于ASIC的芯片上。另外一種方法是用CPLD(復(fù)雜可編程邏輯器件備)。
CPLD與FPGA的關(guān)系

早在1980年代中期,F(xiàn)PGA已經(jīng)在PLD設(shè)備中扎根。CPLD和FPGA包括了一些相對大數(shù)量的可以編輯邏輯單元。CPLD邏輯門的密度在幾千到幾萬個邏輯單元之間,而FPGA通常是在幾萬到幾百萬。   CPLD和FPGA的主要區(qū)別是他們的系統(tǒng)結(jié)構(gòu)。CPLD是一個有點限制性的結(jié)構(gòu)。這個結(jié)構(gòu)由一個或者多個可編輯的結(jié)果之和的邏輯組列和一些相對少量的鎖定的寄存器。這樣的結(jié)果是缺乏編輯靈活性,但是卻有可以預(yù)計的延遲時間和邏輯單元對連接單元高比率的優(yōu)點。而FPGA卻是有很多的連接單元,這樣雖然讓它可以更加靈活的編輯,但是結(jié)構(gòu)卻復(fù)雜的多。CPLD和FPGA另外一個區(qū)別是大多數(shù)的FPGA含有高層次的內(nèi)置模塊(比如加法器和乘法器)和內(nèi)置的記憶體。一個因此有關(guān)的重要區(qū)別是很多新的FPGA支持完全的或者部分的系統(tǒng)內(nèi)重新配置。允許他們的設(shè)計隨著系統(tǒng)升級或者動態(tài)重新配置而改變。一些FPGA可以讓設(shè)備的一部分重新編輯而其他部分繼續(xù)正常運行。

FPGA工作原理

FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個部分。

FPGA的基本特點

1)采用FPGA設(shè)計ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。4)FPGA是ASIC電路中設(shè)計周期最短、開發(fā)費用最低、風(fēng)險最小的器件之一。5) FPGA采用高速CHMOS工藝,功耗低,可以與CMOSTTL電平兼容??梢哉f,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。FPGA是由存放在片內(nèi)RAM中的程序來設(shè)置其工作狀態(tài)的,因此,工作時需要對片內(nèi)的RAM進行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時,F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。

FPGA配置模式

FPGA有多種配置模式:并行主模式為一片F(xiàn)PGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片F(xiàn)PGA;串行模式可以采用串行PROM編程FPGA;外設(shè)模式可以將FPGA作為微處理器的外設(shè),由微處理器對其編程。如何實現(xiàn)快速的時序收斂、降低功耗和成本、優(yōu)化時鐘管理并降低FPGA與PCB并行設(shè)計的復(fù)雜性等問題,一直是采用FPGA的系統(tǒng)設(shè)計工程師需要考慮的關(guān)鍵問題。如今,隨著FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向發(fā)展,系統(tǒng)設(shè)計工程師在從這些優(yōu)異性能獲益的同時,不得不面對由于FPGA前所未有的性能和能力水平而帶來的新的設(shè)計挑戰(zhàn)。例如,領(lǐng)先FPGA廠商Xilinx最近推出的Virtex-5系列采用65nm工藝,可提供高達33萬個邏輯單元、1,200個I/O和大量硬IP塊。超大容量和密度使復(fù)雜的布線變得更加不可預(yù)測,由此帶來更嚴(yán)重的時序收斂問題。此外,針對不同應(yīng)用而集成的更多數(shù)量的邏輯功能、DSP、嵌入式處理和接口模塊,也讓時鐘管理和電壓分配問題變得更加困難。幸運地是,F(xiàn)PGA廠商、EDA工具供應(yīng)商正在通力合作解決65nm FPGA獨特的設(shè)計挑戰(zhàn)。不久以前,Synplicity與Xilinx宣布成立超大容量時序收斂聯(lián)合工作小組,旨在最大程度幫助地系統(tǒng)設(shè)計工程師以更快、更高效的方式應(yīng)用65nm FPGA器件。設(shè)計軟件供應(yīng)商Magma推出的綜合工具Blast FPGA能幫助建立優(yōu)化的布局,加快時序的收斂。 最近FPGA的配置方式已經(jīng)多元化!

FPGA主要生產(chǎn)廠商

1、Altera   2、Xilinx   3、Actel   4、Lattice   其中Altera和Xilinx主要生產(chǎn)一般用途FPGA,其主要產(chǎn)品采用RAM工藝。Actel主要提供非易失性FPGA,產(chǎn)品主要基于反熔絲工藝和FLASH工藝。

FPGA設(shè)計的注意事項

不管你是一名邏輯設(shè)計師、硬件工程師或系統(tǒng)工程師,甚或擁有所有這些頭銜,只要你在任何一種高速和多協(xié)議的復(fù)雜系統(tǒng)中使用了FPGA,你就很可能需要努力解決好器件配置、電源管理、IP集成、信號完整性和其他的一些關(guān)鍵設(shè)計問題。不過,你不必獨自面對這些挑戰(zhàn),因為在當(dāng)前業(yè)內(nèi)領(lǐng)先的FPGA公司里工作的應(yīng)用工程師每天都會面對這些問題,而且他們已經(jīng)提出了一些將令你的設(shè)計工作變得更輕松的設(shè)計指導(dǎo)原則和解決方案。

I/O信號分配

可提供最多的多功能引腳、I/O標(biāo)準(zhǔn)、端接方案和差分對的FPGA在信號分配方面也具有最復(fù)雜的設(shè)計指導(dǎo)原則。盡管Altera的FPGA器件沒有設(shè)計指導(dǎo)原則(因為它實現(xiàn)起來比較容易),但賽靈思的FPGA設(shè)計指導(dǎo)原則卻很復(fù)雜。但不管是哪一種情況,在為I/O引腳分配信號時,都有一些需要牢記的共同步驟:1. 使用一個電子數(shù)據(jù)表列出所有計劃的信號分配,以及它們的重要屬性,例如I/O標(biāo)準(zhǔn)、電壓、需要的端接方法和相關(guān)的時鐘。2. 檢查制造商的塊/區(qū)域兼容性準(zhǔn)則。3. 考慮使用第二個電子數(shù)據(jù)表制訂FPGA的布局,以確定哪些管腳是通用的、哪些是專用的、哪些支持差分信號對和全局及局部時鐘、哪些需要參考電壓。4. 利用以上兩個電子數(shù)據(jù)表的信息和區(qū)域兼容性準(zhǔn)則,先分配受限制程度最大的信號到引腳上,最后分配受限制最小的。例如,你可能需要先分配串行總線和時鐘信號,因為它們通常只分配到一些特定引腳。5. 按照受限制程度重新分配信號總線。在這個階段,可能需要仔細(xì)權(quán)衡同時開關(guān)輸出(SSO)和不兼容I/O標(biāo)準(zhǔn)等設(shè)計問題,尤其是當(dāng)你具有很多個高速輸出或使用了好幾個不同的I/O標(biāo)準(zhǔn)時。如果你的設(shè)計需要局部/區(qū)域時鐘,你將可能需要使用高速總線附近的管腳,最好提前記住這個要求,以免最后無法為其安排最合適的引腳。如果某個特定塊所選擇的I/O標(biāo)準(zhǔn)需要參考電壓信號,記住先不要分配這些引腳。差分信號的分配始終要先于單端信號。如果某個FPGA提供了片內(nèi)端接,那么它也可能適用于其他兼容性規(guī)則。6. 在合適的地方分配剩余的信號。在這個階段,考慮寫一個只包含端口分配的HDL文件。然后通過使用供應(yīng)商提供的工具或使用一個文本編輯器手動創(chuàng)建一個限制文件,為I/O標(biāo)準(zhǔn)和SSO等增加必要的支持信息。準(zhǔn)備好這些基本文件后,你可以運行布局布線工具來確認(rèn)是否忽視了一些準(zhǔn)則或者做了一個錯誤的分配。這將使你在設(shè)計的初始階段就和布局工程師一起工作,共同規(guī)劃PCB的走線、冗余規(guī)劃、散熱問題和信號完整性。FPGA工具可能可以在這些方面提供幫助,并協(xié)助你解決這些問題,因此你必須確保了解你的工具包的功能。你咨詢一位布局專家的時間越晚,你就越有可能需要去處理一些復(fù)雜的問題和設(shè)計反復(fù),而這些可能可以通過一些前期分析加以避免。一旦你實現(xiàn)了滿意的信號分配,你就要用限制文件鎖定它們。基于CMOS的設(shè)計主要消耗三類切率:內(nèi)部的(短路)、漏電的(靜態(tài)的)以及開關(guān)的(電容)。當(dāng)門電路瞬變時,VDD與地之間短路連接消耗內(nèi)部功率。漏電功耗是CMOS工藝普遍存在的寄生效應(yīng)引起的。而開關(guān)功耗則是自負(fù)載電容,放電造成的。開關(guān)功耗與短路功耗合在一起稱為動態(tài)功耗。下面介紹降低靜態(tài)功耗和動態(tài)功耗的設(shè)計技巧。

降低靜態(tài)功耗

簡介

雖然靜態(tài)電流與動態(tài)電流相比可以忽略不計,然而對電池供電的手持設(shè)備就顯得十分重要,在設(shè)備通電而不工作時更是如此。靜態(tài)電流的因素眾多,包括處于沒有完全關(guān)斷或接通的狀態(tài)下的I/O以及內(nèi)部晶體管的工作電流、內(nèi)部連線的電阻、輸入與三態(tài)電驅(qū)動器上的拉或下拉電阻。在易失性技術(shù)中,保持編程信息也需一定的靜態(tài)功率??谷蹟嗍且环N非易失性技術(shù),因此信息存儲不消耗靜態(tài)電流。

幾種降低靜態(tài)功耗的設(shè)計方法

驅(qū)動輸入應(yīng)有充分的電壓電平,因而所有晶體管都是完全通導(dǎo)或關(guān)閉的。由于I/O線上的上拉或下拉電阻要消耗一定的電流,因此盡量避免使用這些電阻。少用驅(qū)動電阻或雙極晶體管,這些器件需維持一個恒定電流,從而增加了靜態(tài)電流。將時鐘引腳按參數(shù)表推薦條件連接至低電平。懸空的時鐘輸入會大大增加靜態(tài)電流。在將設(shè)計劃分為多個器件時,減少器件間I/O的使用。eX器件LP方式引腳的使用Actel eX系列設(shè)計了特殊的低功率“休眠”模式。在該引腳驅(qū)動至高電平800ns后,器件進入極低功率待機模式,待機電流小于100μA。在低功率模式下,所有I/O(除時鐘輸入外)都處于三態(tài),而內(nèi)核全部斷電。由于內(nèi)核被斷電,觸發(fā)器中存儲的信息會丟失,在進入工作模式(在引腳驅(qū)動至低平200ms后)時,用戶需再次對器件初始化。同樣,用戶也應(yīng)關(guān)閉所有通過CLKA、CLKB以及HCLK輸入的時鐘。然而這些時鐘并不處于三態(tài),時鐘就可進入器件,從而增加功耗,因此在低功率模式下,時鐘輸入必須處于邏輯0或邏輯1。有時用戶很難阻止時鐘進入器件。在此場合,用戶可使用與CLKA或CLKA相鄰的正常輸入引腳并在設(shè)計中加進CLKINT。這樣,時鐘將通過靠近時鐘引腳的正常輸入進入器件,再通過CLKINT向器件提供時鐘資源。

采用這種輸入電路后,由于常規(guī)I/O是三態(tài)的,因此用戶不必?fù)?dān)心時鐘進入器件。當(dāng)然,增加一級門電路會產(chǎn)生0.6ns的較大時鐘延時,幸好這在多數(shù)低功率設(shè)計中是可以接受的。注意應(yīng)將與CLKINT緩沖器相關(guān)的CLKA或CLKB引腳接地。此外還要注意,CLKINT只可用作連線時鐘,HCLK并不具備將內(nèi)部走線網(wǎng)連接到HCLK的能力,因而HCLK資源不能被常規(guī)輸入驅(qū)動。換句話說,如果使用LP引腳就不能使用HCLK;使用HCLK時就應(yīng)在外部截斷時鐘信號。

降低動態(tài)功耗

動態(tài)功耗是在時鐘工作且輸入正在開關(guān)時的功耗。對CMOS電路,動態(tài)功耗基本上確定了總功耗。動態(tài)功耗包括幾個成分,主要是電容負(fù)載充電與放電(內(nèi)部與I/O)以及短路電流。多數(shù)動態(tài)功率是內(nèi)部或外部電容向器件充、放電消耗的。如果器件驅(qū)動多個I/O負(fù)載,大量的動態(tài)電流構(gòu)成總功耗的主要部分。對設(shè)計中給定的驅(qū)動器,動態(tài)功耗由下式計算p=CL×V 2 DD×f式中,CL是電容負(fù)載,VDD是電源電壓,f則是開關(guān)頻率??偣氖敲總€驅(qū)動器功耗之總和。由于VDD是固定的,降低內(nèi)部功耗就要降低平均邏輯開關(guān)頻率,減少每個時鐘沿處的邏輯開關(guān)總數(shù)、減少連線網(wǎng)絡(luò),特別是高頻信號連線網(wǎng)絡(luò)中的電容值。對低功率設(shè)計,需要從系統(tǒng)至工藝的每個設(shè)計級別中采取相應(yīng)預(yù)防措施,級別越高,效果越好。

FPGA與CPLD的辨別和分類

FPGA與CPLD的辨別和分類主要是根據(jù)其結(jié)構(gòu)特點和工作原理。通常的分類方法是:將以乘積項結(jié)構(gòu)方式構(gòu)成邏輯行為的器件稱為CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice(原Vantis)的Mach系列等。將以查表法結(jié)構(gòu)方式構(gòu)成邏輯行為的器件稱為FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K或ACEX1K系列等。盡管FPGA和CPLD都是可編程ASIC器件,有很多共同特點,但由于CPLD和FPGA結(jié)構(gòu)上的差異,具有各自的特點:①CPLD更適合完成各種算法和組合邏輯,FP GA更適合于完成時序邏輯。換句話說,FPGA更適合于觸發(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)連電路的邏輯功能來編程,FPGA主要通過改變內(nèi)部連線的布線來編程;FP GA可在邏輯門下編程,而CPLD是在邏輯塊下編程。④FPGA的集成度比CPLD高,具有更復(fù)雜的布線結(jié)構(gòu)和邏輯實現(xiàn)。⑤CPLD比FPGA使用起來更方便。CPLD的編程采用E2PROM或FASTFLASH技術(shù),無需外部存儲器芯片,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法復(fù)雜。⑥CPLD的速度比FPGA快,并且具有較大的時間可預(yù)測性。這是由于FPGA是門級編程,并且CLB之間采用分布式互聯(lián),而CPLD是邏輯塊級編程,并且其邏輯塊之間的互聯(lián)是集總式的。⑦在編程方式上,CPLD主要是基于E2PROM或FLASH存儲器編程,編程次數(shù)可達1萬次,優(yōu)點是系統(tǒng)斷電時編程信息也不丟失。CPLD又可分為在編程器上編程和在系統(tǒng)編程兩類。FPGA大部分是基于SRAM編程,編程信息在系統(tǒng)斷電時丟失,每次上電時,需從器件外部將編程數(shù)據(jù)重新寫入SRAM中。其優(yōu)點是可以編程任意次,可在工作中快速編程,從而實現(xiàn)板級和系統(tǒng)級的動態(tài)配置。⑧CPLD保密性好,FPGA保密性差。⑨一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。

FPGA的應(yīng)用

1.電路設(shè)計中FPGA的應(yīng)用

連接邏輯,控制邏輯是FPGA早期發(fā)揮作用比較大的領(lǐng)域也是FPGA應(yīng)用的基石.事實上在電路設(shè)計中應(yīng)用FPGA的難度還是比較大的這要求開發(fā)者要具備相應(yīng)的硬件知識(電路知識)和軟件應(yīng)用能力(開發(fā)工具)這方面的人才總是緊缺的,往往都從事新技術(shù),新產(chǎn)品的開發(fā)成功的產(chǎn)品將變成市場主流基礎(chǔ)產(chǎn)品供產(chǎn)品設(shè)計者應(yīng)用在不遠(yuǎn)的將來,通用和專用IP的設(shè)計將成為一個熱門行業(yè)!搞電路設(shè)計的前提是必須要具備一定的硬件知識.在這個層面,干重于學(xué),當(dāng)然,快速入門是很重要的,越好的位子越不等人電路開發(fā)是黃金飯碗.

2.產(chǎn)品設(shè)計

把相對成熟的技術(shù)應(yīng)用到某些特定領(lǐng)域如通訊,視頻,信息處理等等開發(fā)出滿足行業(yè)需要并能被行業(yè)客戶接受的產(chǎn)品這方面主要是FPGA技術(shù)和專業(yè)技術(shù)的結(jié)合問題,另外還有就是與專業(yè)客戶的界面問題產(chǎn)品設(shè)計還包括專業(yè)工具類產(chǎn)品及民用產(chǎn)品,前者重點在性能,后者對價格敏感產(chǎn)品設(shè)計以實現(xiàn)產(chǎn)品功能為主要目的,F(xiàn)PGA技術(shù)是一個實現(xiàn)手段在這個領(lǐng)域,F(xiàn)PGA因為具備接口,控制,功能IP,內(nèi)嵌CPU等特點有條件實現(xiàn)一個構(gòu)造簡單,固化程度高,功能全面的系統(tǒng)產(chǎn)品設(shè)計將是FPGA技術(shù)應(yīng)用最廣大的市場,具有極大的爆發(fā)性的需求空間產(chǎn)品設(shè)計對技術(shù)人員的要求比較高,路途也比較漫長不過現(xiàn)在整個行業(yè)正處在組建"首發(fā)團隊"的狀態(tài),只要加入,前途光明產(chǎn)品設(shè)計是一種職業(yè)發(fā)展方向定位,不是簡單的愛好就能做到的!產(chǎn)品設(shè)計領(lǐng)域會造就大量的企業(yè)和企業(yè)家,是一個近期的發(fā)展熱點和機遇

3.系統(tǒng)級應(yīng)用

系統(tǒng)級的應(yīng)用是FPGA與傳統(tǒng)的計算機技術(shù)結(jié)合,實現(xiàn)一種FPGA版的計算機系統(tǒng)如用Xilinx V-4, V-5系列的FPGA,實現(xiàn)內(nèi)嵌POWER PC CPU, 然后再配合各種外圍功能,實現(xiàn)一個基本環(huán)境,在這個平臺上跑LINIX等系統(tǒng)這個系統(tǒng)也就支持各種標(biāo)準(zhǔn)外設(shè)和功能接口(如圖象接口)了這對于快速構(gòu)成FPGA大型系統(tǒng)來講是很有幫助的。這種"山寨"味很濃的系統(tǒng)早期優(yōu)勢不一定很明顯,類似ARM系統(tǒng)的境況但若能慢慢發(fā)揮出FPGA的優(yōu)勢,逐漸實現(xiàn)一些特色系統(tǒng)也是一種發(fā)展方向。若在系統(tǒng)級應(yīng)用中,開發(fā)人員不具備系統(tǒng)的擴充開發(fā)能力,只是搞搞編程是沒什么意義的,當(dāng)然設(shè)備驅(qū)動程序的開發(fā)是另一種情況,搞系統(tǒng)級應(yīng)用看似起點高,但不具備深層開發(fā)能力,很可能會變成愛好者,就如很多人會做網(wǎng)頁但不能稱做會編程類似以上是幾點個人開發(fā),希望能幫助想學(xué)FPGA但很茫然無措的人理一理思路。這是一個不錯的行業(yè),有很好的個人成功機會。但也肯定是一個競爭很激烈的行業(yè),關(guān)鍵看的就是速度和深度當(dāng)然還有市場適應(yīng)能力。


內(nèi)容來自百科網(wǎng)