作者:郝旭帥??校對(duì):陸輝
大俠好,歡迎來(lái)到FPGA技術(shù)江湖,江湖偌大,相見即是緣分。大俠可以關(guān)注FPGA技術(shù)江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡。
大俠好,歡迎來(lái)到FPGA技術(shù)江湖。本系列將帶來(lái)FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開始,最詳細(xì)操作步驟,最直白的言語(yǔ)描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學(xué)生、初入職場(chǎng)小白及打算進(jìn)階提升的職業(yè)開發(fā)者都可以有系統(tǒng)性學(xué)習(xí)的機(jī)會(huì)。
系統(tǒng)性的掌握技術(shù)開發(fā)以及相關(guān)要求,對(duì)個(gè)人就業(yè)以及職業(yè)發(fā)展都有著潛在的幫助,希望對(duì)大家有所幫助。后續(xù)會(huì)陸續(xù)更新 Xilinx 的 Vivado、ISE 及相關(guān)操作軟件的開發(fā)的相關(guān)內(nèi)容,學(xué)習(xí)FPGA設(shè)計(jì)方法及設(shè)計(jì)思想的同時(shí),實(shí)操結(jié)合各類操作軟件,會(huì)讓你在技術(shù)學(xué)習(xí)道路上無(wú)比的順暢,告別技術(shù)學(xué)習(xí)小BUG卡破腦殼,告別目前忽悠性的培訓(xùn)誘導(dǎo),真正的去學(xué)習(xí)去實(shí)戰(zhàn)應(yīng)用,這種快樂(lè)試試你就會(huì)懂的。話不多說(shuō),上貨。
FPGA芯片簡(jiǎn)介
在介紹FPGA芯片之前,首先介紹一下等效電路。
先解釋一下“等效”。
等效是指效用相同。通俗的解釋就是不關(guān)心過(guò)程,結(jié)果是相同的。
圖1 :行走路徑圖
舉例說(shuō)明:小明現(xiàn)在在A點(diǎn),想要到C點(diǎn)去。從圖1中我們簡(jiǎn)單分析出,可以是A點(diǎn) —> B點(diǎn) —> C點(diǎn),也可以A點(diǎn) —> D點(diǎn) —> C點(diǎn)。如果小明不嫌棄累的話,也可以A點(diǎn) —> B點(diǎn) —> A點(diǎn) —> D點(diǎn) —> C點(diǎn)。在我們不考慮不過(guò)程的情況下,只考慮最后小明的位置,那么無(wú)論哪種方案,最終的結(jié)果都是相同的。
在做電路的設(shè)計(jì)和分析的時(shí)候,我們也經(jīng)常引入等效的概念,來(lái)解決復(fù)雜的問(wèn)題。例如:諾頓定理(Nortons ?theorem)和戴維南定理(Thevenin's ?theorem)。在這里這兩個(gè)定理不做過(guò)多介紹,有興趣的讀者可以自行查詢。
黑盒測(cè)試也稱功能測(cè)試,它是通過(guò)測(cè)試來(lái)檢測(cè)每個(gè)功能是否都能正常使用。在測(cè)試中,把程序看作一個(gè)不能打開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,在程序接口進(jìn)行測(cè)試,它只檢查程序功能是否按照需求規(guī)格說(shuō)明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息。黑盒測(cè)試著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu),主要針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試。
黑盒測(cè)試是以用戶的角度,從輸入數(shù)據(jù)與輸出數(shù)據(jù)的對(duì)應(yīng)關(guān)系出發(fā)進(jìn)行測(cè)試的。很明顯,如果外部特性本身設(shè)計(jì)有問(wèn)題或規(guī)格說(shuō)明的規(guī)定有誤,用黑盒測(cè)試方法是發(fā)現(xiàn)不了的。
圖2 :某數(shù)字電路模型
已知圖2-1所示數(shù)字電路為組合邏輯,經(jīng)過(guò)測(cè)試后,得出如下功能表(真值表)。
圖3 :功能表
根據(jù)對(duì)功能表的分析,可以認(rèn)定圖2所示數(shù)字電路完成了二輸入與門的功能。那這個(gè)電路里面一定是一個(gè)二輸入與門嗎?答案是:不一定。
圖4 :利用兩個(gè)與非門構(gòu)成的與門
利用兩個(gè)與非門按照?qǐng)D2-4的方式連接,就可以構(gòu)成一個(gè)“與門”。所以我們只能說(shuō)圖2所示數(shù)字電路只是完成了二輸入與門的功能,不能說(shuō)明內(nèi)部就是一個(gè)二輸入的與門;或者說(shuō)圖2所示數(shù)字電路等效為二輸入與門。
在數(shù)字組合邏輯電路設(shè)計(jì)時(shí),給出真值表后,容易得出一個(gè)布爾表達(dá)式。布爾表達(dá)式我們可以化簡(jiǎn),化簡(jiǎn)的每個(gè)階段,我們都可以做出對(duì)應(yīng)的電路圖。那么這些電路都是等效電路,只是電路延遲可能會(huì)有細(xì)微的差距。
在學(xué)習(xí)數(shù)字電路基礎(chǔ)時(shí),布爾表達(dá)式化簡(jiǎn)完后,經(jīng)常讓我們化簡(jiǎn)為與非的形式,也就是說(shuō)最后的電路都要用與非門來(lái)實(shí)現(xiàn)?這件事情怎么證明呢?
基本邏輯的門電路有很多,例如:與門、非門、或門、與非門、異或門、或非門等等。但是最最基本的門電路只有三種:與門、非門、或門,其他的門電路或者復(fù)雜電路都可以由這三種基本電路所構(gòu)成。只要證明與非門可以實(shí)現(xiàn)這三種邏輯門的功能就可以證明與非門可以實(shí)現(xiàn)所有的電路功能。
在圖4中已經(jīng)證明與非門可以實(shí)現(xiàn)與門。下面給出與非門實(shí)現(xiàn)或門(圖5)和與非門實(shí)現(xiàn)非門(圖6)。
圖5 :利用三個(gè)與非門構(gòu)成的或門
圖6 :利用一個(gè)與非門構(gòu)成的非門
通過(guò)之前的敘述可以證明,與非門可以實(shí)現(xiàn)任何數(shù)字邏輯。
所有的數(shù)字組合邏輯的功能,都可以用一個(gè)真值表來(lái)確定,我們利用一些方法,將真值表對(duì)應(yīng)的邏輯功能,用電路的方式實(shí)現(xiàn)出來(lái),就組成了數(shù)字電路。我們回過(guò)頭來(lái),看一下真值表,我們可以把真值表看做是一個(gè)查找表,怎么查找呢?把輸入的電平值作為查表的依據(jù),然后得出對(duì)應(yīng)的結(jié)果值即可。
在做設(shè)計(jì)時(shí),經(jīng)常會(huì)需要一個(gè)多路選擇器,下面我們以二選一多路選擇器為例。
圖7 :二選一多路選擇器示意圖
當(dāng)S=0時(shí),Y=A;當(dāng)S=1時(shí),Y=B。根據(jù)已知功能,列出真值表(圖2-8)。
圖8 :二選一多路選擇器的真值表
根據(jù)數(shù)字組合邏輯電路的設(shè)計(jì)方法,首先做出布爾表達(dá)式,經(jīng)過(guò)化簡(jiǎn),得出簡(jiǎn)化后的布爾表達(dá)式,最后做出電路。
如果需要一個(gè)二選一多路選擇器的等效電路,不關(guān)心內(nèi)部是如何實(shí)現(xiàn)的。那么我們?cè)O(shè)計(jì)時(shí),只需要考慮實(shí)現(xiàn)真值表的功能即可。當(dāng)我們把真值表看做查找表時(shí),A、B、S都是輸入,任意指定一組值,都可以得出后面對(duì)應(yīng)的Y即可。
下面解釋一種器件:存儲(chǔ)器。
存儲(chǔ)器(Memory)是現(xiàn)代信息技術(shù)中用于保存信息的記憶設(shè)備。它根據(jù)控制器指定的位置存入和取出信息。
圖9 :存儲(chǔ)器模型
存儲(chǔ)器中被分為了很多“小格子”,每一個(gè)“小格子”里面都可以放下很多的二進(jìn)制數(shù)碼。每個(gè)小格子都會(huì)有自己獨(dú)特的標(biāo)識(shí),就像我們的門牌號(hào)一樣,每個(gè)屋都是不同的。邏輯功能是當(dāng)外部輸入一個(gè)“門牌號(hào)”,對(duì)應(yīng)的“小格子”里面的二進(jìn)制數(shù)碼就會(huì)輸出。
存儲(chǔ)器中的“小格子”的數(shù)量,在制造時(shí),就已經(jīng)確定?!靶「褡印钡臄?shù)量確定了,那么“門牌號(hào)”的形勢(shì)也就被確定了。例:我們有100個(gè)房間,我們只有兩個(gè)十進(jìn)制的數(shù)碼就可以表示了,00至99。在存儲(chǔ)器中,“門牌號(hào)”也只能用二進(jìn)制數(shù)來(lái)表示,例如:有4個(gè)“小格子”,那么“門牌號(hào)”就要用兩個(gè)二進(jìn)制碼來(lái)表示,00~11。每個(gè)“小格子”里面存放的二進(jìn)制數(shù)的個(gè)數(shù),在制造時(shí),也就確定好了。
通常我們把“門牌號(hào)”稱為地址,“小格子”稱為單個(gè)地址的存儲(chǔ)空間,每個(gè)“小格子”能放下的二進(jìn)制數(shù)碼的個(gè)數(shù)稱為“存儲(chǔ)器的存儲(chǔ)位寬”。
制作一個(gè)擁有8個(gè)地址,單個(gè)地址空間為1個(gè)二進(jìn)制數(shù)碼的存儲(chǔ)器。此時(shí),地址碼應(yīng)該有三位,每個(gè)地址對(duì)應(yīng)的存儲(chǔ)二進(jìn)制數(shù)碼 的個(gè)數(shù)為1個(gè)。要求:000地址中,放入0;001地址中,放入0;010地址中,放入1;011地址中,放入1;100地址中,放入0;101地址中,放入1;110地址中,放入0;111地址中,放入1;
圖10 :存儲(chǔ)器示意圖
按照我們存儲(chǔ)器的邏輯功能,給與地址,存儲(chǔ)器就會(huì)給出對(duì)應(yīng)地址中所存放的數(shù)據(jù)。那么存儲(chǔ)器的功能表如下:
圖11 :存儲(chǔ)器的功能表
將存儲(chǔ)器的功能表圖11和二選一多路選擇器的真值表圖8相對(duì)比,我們會(huì)發(fā)現(xiàn),除了自定義的信號(hào)名稱不相同外,邏輯功能是相同的。那么也就是說(shuō),在黑盒設(shè)計(jì)時(shí),我們可以將一個(gè)帶有預(yù)設(shè)值的存儲(chǔ)器放進(jìn)去,它所對(duì)外的功能,也是可以實(shí)現(xiàn)二選一多路選擇器的。此時(shí),我們可以帶有預(yù)設(shè)值的存儲(chǔ)器可以等效為二選一多路選擇器。
仔細(xì)觀察,我們發(fā)現(xiàn),任意真值表都可以用存儲(chǔ)器來(lái)等效。那也就是說(shuō),存儲(chǔ)器電路可以等效為任意組合邏輯的電路。
存儲(chǔ)器電路的優(yōu)勢(shì):不用做任何邏輯化簡(jiǎn),不受基本邏輯門電路的樣式限制,可以很快的得出最終的電路功能。如果存儲(chǔ)器可以任意修改預(yù)設(shè)值的話,那么同一個(gè)存儲(chǔ)器就可以隨著不同的預(yù)設(shè)值等效為各類的電路。如果是基本門電路構(gòu)成的話,就需要受到數(shù)量和樣式的限制。
存儲(chǔ)器電路的劣勢(shì):對(duì)于簡(jiǎn)單的門電路,用存儲(chǔ)器實(shí)現(xiàn)是一種浪費(fèi)。存儲(chǔ)器電路也是一種相對(duì)復(fù)雜的電路。另外存儲(chǔ)器電路的延遲一般偏大,原因同上。
在做數(shù)字組合邏輯電路設(shè)計(jì)時(shí),如果采用門電路的設(shè)計(jì)方式,需要更新電路功能時(shí),就需要重新布置電路結(jié)構(gòu),更換基本電路元器件;如果采用存儲(chǔ)器等效的設(shè)計(jì)方式,只需要更改預(yù)設(shè)值即可。這種方法為我們做電路升級(jí)提供了一個(gè)很好的解決途徑。
FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。
在介紹FPGA芯片結(jié)構(gòu)之前,首先就FPGA和單片機(jī)做一個(gè)簡(jiǎn)單的對(duì)比。
單片機(jī)是一種微處理器,類似于電腦CPU。它的電路是固定的,是通過(guò)軟件編程語(yǔ)言描述軟件指令控制微處理器進(jìn)行工作;它的所有指令都是微處理器順序執(zhí)行的;
圖12 :某單片機(jī)結(jié)構(gòu)圖
FPGA是一種半定制電路。它的電路也是固定的,但是可以通過(guò)硬件編程語(yǔ)言描述電路功能,重新配置電路功能,得到我們想要的電路的等效電路;它的所有功能都是利用電路來(lái)直接實(shí)現(xiàn)的,所有的功能都是可以并行執(zhí)行。
圖13 :與門邏輯功能示意圖
要求實(shí)現(xiàn)兩路信號(hào)的與操作,將結(jié)果作為一路信號(hào)輸出。那么在單片機(jī)中和FPGA中都是如何實(shí)現(xiàn)此功能的呢?
在單片機(jī)中,假設(shè)我們已經(jīng)將對(duì)應(yīng)的變量和引腳已經(jīng)分配結(jié)束。我們會(huì)編寫如下一段代碼:
CPU會(huì)首先去讀取A管腳的電平值,放入到自己的通用寄存器。然后讀取B管腳的電平值放入到自己的通用寄存器。然后將兩個(gè)電平值進(jìn)行相與,結(jié)果寫入通用寄存器。最后將存放結(jié)果的通用寄存器的值存入到Y(jié)管腳對(duì)應(yīng)的寄存器。每一步都需要很久的時(shí)間。
在FPGA內(nèi)部會(huì)形成一個(gè)存儲(chǔ)器的等效電路(與門),直接將A管腳電平和B管腳的電平相與的結(jié)果用線連接到Y(jié)管腳了。
有些人可能不太明白,覺(jué)得這兩個(gè)是相同的。都是取兩個(gè)電平,然后把結(jié)果輸送出去。不一樣的地方有兩個(gè):
第一:?jiǎn)纹瑱C(jī)執(zhí)行是順序的,也就是說(shuō),每個(gè)時(shí)刻只能做一件事情。假設(shè)A管腳被取完電平后,突然降低一段時(shí)間,然后又拉高了。但是此時(shí)CPU去取B管腳電平或者輸送結(jié)果到Y(jié)管腳了。那么整個(gè)設(shè)計(jì)將不會(huì)察覺(jué)到A管腳被拉低了一段時(shí)間。在FPGA中,都是直接線連接的,沒(méi)有任何控制邏輯,任何的變化都會(huì)直接反映到電路的結(jié)果上。
第二:由于單片機(jī)的執(zhí)行時(shí)順序的,也就是有一個(gè)時(shí)間表,每一個(gè)時(shí)刻干什么規(guī)定好的。而FPGA是純邏輯實(shí)現(xiàn),每時(shí)每刻所有的電路都在工作。速度上要比單片機(jī)快很多。
所以FPGA的本質(zhì)實(shí)現(xiàn)是靠自己的邏輯功能電路來(lái)實(shí)現(xiàn),單片機(jī)是靠控制CPU,讓CPU單個(gè)控制各個(gè)邏輯功能電路順序?qū)崿F(xiàn)的。
在數(shù)字電路基礎(chǔ)中,我們知道,所有的數(shù)字電路都是由組合邏輯和時(shí)序邏輯構(gòu)成,而時(shí)序邏輯是由組合邏輯和時(shí)序邏輯器件構(gòu)成。所以數(shù)字電路是由組合邏輯和時(shí)序邏輯器件構(gòu)成。
電路的重新配置按照現(xiàn)在的技術(shù)還實(shí)現(xiàn)不了。例如:有一個(gè)asic,現(xiàn)在想要他換一種功能,這是現(xiàn)在實(shí)現(xiàn)不了的,因?yàn)槠渲械碾娐肥枪潭ǖ?,并且沒(méi)有重新配置的功能。
如果想要電路能夠重新配置,在上一節(jié)中敘述存儲(chǔ)器等效電路時(shí),我們了解到存儲(chǔ)器電路預(yù)設(shè)不同的值是可以完成不同的電路功能。
在FPGA中,由一定的存儲(chǔ)器等效電路和時(shí)序邏輯器件構(gòu)成最小單元。那么此單元可以被配置成為組合邏輯、時(shí)序邏輯。
圖14 :CYCLONE IV E 可編程最小單元示意圖
CYCLONE IV E是INTEL FPGA中CYCLONE系列的第四代。在上圖中,四輸入查找表(Four – Input LUT)其實(shí)就是一個(gè)有16存儲(chǔ)空間,每個(gè)存儲(chǔ)空間只有1個(gè)二進(jìn)制數(shù)字的存儲(chǔ)器,LUT(Look Up Table)就是查找表。設(shè)置合理的預(yù)設(shè)值,就可以實(shí)現(xiàn)一定的數(shù)字組合邏輯電路功能。
那為什么要固定為16存儲(chǔ)器空間呢?如果我們要實(shí)現(xiàn)一個(gè)5輸入的與門,那16個(gè)存儲(chǔ)空間就不夠用了。那么此時(shí)我們應(yīng)該怎么辦?
其實(shí)也很簡(jiǎn)單,只需要將5輸入的與門分為一個(gè)四輸入的與門,然后把結(jié)果和另外一個(gè)輸入進(jìn)行相與即可。對(duì)于存儲(chǔ)器電路也可以這樣做。
如果可以級(jí)聯(lián)的話,那么做成2輸入的是不是也可以的。原則上是可以的,但是如果我們實(shí)現(xiàn)的邏輯功能比較復(fù)雜的話,那么就會(huì)級(jí)聯(lián)特別長(zhǎng),延時(shí)就會(huì)很大。那做成1000輸入的話,是不是就好了,再?gòu)?fù)雜的話,都不用級(jí)聯(lián)??墒窃谠O(shè)計(jì)時(shí),我們做的不僅僅是復(fù)雜邏輯,還有很多的不復(fù)雜的,那么一個(gè)二輸入與門的設(shè)計(jì)也要占用一個(gè)1000輸入,那就得不償失了。所以經(jīng)過(guò)衡量,最終設(shè)計(jì)者將輸入做成了4輸入的查找表。
經(jīng)過(guò)不斷的發(fā)展,F(xiàn)PGA在各個(gè)場(chǎng)合的應(yīng)用越來(lái)越多,所做的設(shè)計(jì)越來(lái)越復(fù)雜,要求的延遲越來(lái)越小。于是新出的FPGA系列擁有更多的輸入查找表。
在圖2-14中,后面還有一個(gè)時(shí)序邏輯器件。這個(gè)時(shí)序邏輯器件是FPGA廠商直接做到FPGA內(nèi)部的,我們?cè)O(shè)計(jì)電路時(shí),不需要設(shè)計(jì),只需要調(diào)用出來(lái)即可。
由此,我們就可以實(shí)現(xiàn)組合邏輯和時(shí)序邏輯的一個(gè)小部分了。但是復(fù)雜的設(shè)計(jì),往往是需要級(jí)聯(lián)的。
圖15 :CYCLONE IV 中結(jié)構(gòu)示意圖
LAB中包含了很多最小可編程單元,這些可編程單元完成電路的一部分功能。然后通過(guò)各種interconnect(連線)互聯(lián),最終實(shí)現(xiàn)我們想要的復(fù)雜的邏輯功能。
通過(guò)可編程單元和連線資源就可以完成各種電路功能,但是最終還是在芯片內(nèi)部,為了能夠和外部的芯片進(jìn)行通信,一定會(huì)需要IO單元。
圖16 :CYCLONE IV的IO單元
在IO單元中,我們可以發(fā)現(xiàn)整個(gè)IO單元可以被配置為輸入、輸出、輸入出。并且其中可以是否配置上拉電阻,以及電路延遲等等功能。
FPGA的IO數(shù)量較多,在需要同時(shí)控制多個(gè)外設(shè)時(shí),不需要級(jí)聯(lián),一致性會(huì)比較好。
圖17 :CYCLONE IV E的某塊FPGA的IO供電bank
在FPGA中,內(nèi)部邏輯運(yùn)行是一種電壓。輸入輸出被分為了好多個(gè)塊(bank),每一個(gè)塊都可以有自己的電平標(biāo)準(zhǔn),這就讓FPGA可以在不用轉(zhuǎn)換電路的情況下,驅(qū)動(dòng)多個(gè)不同電壓標(biāo)準(zhǔn)的接口。
在圖17中可以看到FPGA的內(nèi)部邏輯電壓相對(duì)較低,所以FPGA的功耗也相對(duì)較低。
通過(guò)上述的三種結(jié)構(gòu),一個(gè)簡(jiǎn)單的FPGA芯片就可以實(shí)現(xiàn)了。
在FPGA應(yīng)用時(shí),我們發(fā)現(xiàn)經(jīng)常用到一些緩存和特殊電路,并且對(duì)這些電路的要求比較高,用FPGA實(shí)現(xiàn)不太現(xiàn)實(shí)。那么FPGA就會(huì)將其集成到FPGA內(nèi)部,用大量的互聯(lián)資源引出接口,供給內(nèi)部邏輯進(jìn)行控制或者通信。
設(shè)計(jì)者可以利用FPGA的資源實(shí)現(xiàn)CPU的功能,構(gòu)成SOPC。
現(xiàn)在的很多FPGA將ARM的硬核放入到自己內(nèi)部,構(gòu)成SOC。
本文只是簡(jiǎn)單介紹FPGA內(nèi)部結(jié)構(gòu),后續(xù)在設(shè)計(jì)時(shí),需要詳細(xì)了解結(jié)構(gòu)時(shí),會(huì)單獨(dú)列出來(lái)詳細(xì)講解。有興趣的同學(xué)可以自己查詢FPGA的介紹文檔。
FPGA是一種芯片,有很多的廠商都在生產(chǎn)和銷售,下面簡(jiǎn)要介紹幾個(gè)廠家以及他們的芯片。
Intel FPGA
Altera公司(阿爾特拉)自二十年前發(fā)明世界上第一個(gè)可編程邏輯器件開始,秉承了創(chuàng)新的傳統(tǒng),是世界上“可編程芯片系統(tǒng)”(SOPC)解決方案倡導(dǎo)者。Altera結(jié)合帶有軟件工具的可編程邏輯技術(shù)、知識(shí)產(chǎn)權(quán)(IP)和技術(shù)服務(wù),在世界范圍內(nèi)為14,000多個(gè)客戶提供高質(zhì)量的可編程解決方案。我們新產(chǎn)品系列將可編程邏輯的內(nèi)在優(yōu)勢(shì)——靈活性、產(chǎn)品及時(shí)面市——和更高級(jí)性能以及集成化結(jié)合在一起,專為滿足當(dāng)今大范圍的系統(tǒng)需求而開發(fā)設(shè)計(jì)。
在2015年12月Intel斥資167億美元收購(gòu)Altera公司。至此,我們將Altera FPGA更名為Intel FPGA。
Intel FPGA的主流FPGA分為兩大類,一種側(cè)重低成本應(yīng)用,容量中等,性能可以滿足一般的邏輯設(shè)計(jì)要求,如Cyclone系列;還有一種側(cè)重于高性能應(yīng)用,容量大,性能能滿足各類高端應(yīng)用,如Startix、Arria系列等,用戶可以根據(jù)自己實(shí)際應(yīng)用要求進(jìn)行選擇。在性能可以滿足的情況下,優(yōu)先選擇低成本器件。
Xilinx FPGA
Xilinx(賽靈思)是全球領(lǐng)先的可編程邏輯完整解決方案的供應(yīng)商。Xilinx研發(fā)、制造并銷售范圍廣泛的高級(jí)集成電路、軟件設(shè)計(jì)工具以及作為預(yù)定義系統(tǒng)級(jí)功能的IP(Intellectual Property)核??蛻羰褂肵ilinx及其合作伙伴的自動(dòng)化軟件工具和IP核對(duì)器件進(jìn)行編程,從而完成特定的邏輯操作。
Xilinx的主流FPGA分為兩大類,一種側(cè)重低成本應(yīng)用,容量中等,性能可以滿足一般的邏輯設(shè)計(jì)要求,如Spartan系列;還有一種側(cè)重于高性能應(yīng)用,容量大,性能能滿足各類高端應(yīng)用,如Virtex系列,用戶可以根據(jù)自己實(shí)際應(yīng)用要求進(jìn)行選擇。在性能可以滿足的情況下,優(yōu)先選擇低成本器件。
繼Xilinx正式向外界發(fā)布其推出全球首顆28nm制程的Kintex-7后,該公司推出7系列四款芯片Artix-7、Kintex-7、Virtex-7和Zynq的FPGA芯片,以及圍繞7系列的開發(fā)資源。
Actel FPGA
ACTEL公司成立于1985年,位于美國(guó)紐約。之前的20多年里,ACTEL一直效力于美國(guó)軍工和航空領(lǐng)域,并禁止對(duì)外出售。國(guó)內(nèi)一些特殊領(lǐng)域的企業(yè)都是采用其它途徑購(gòu)買軍工級(jí)型號(hào)。目前ACTEL開始逐漸轉(zhuǎn)向民用和商用,除了反熔絲系列外,還推出可重復(fù)擦除的ProASIC3系列(針對(duì)汽車、工業(yè)控制、軍事航空行業(yè))。
Lattice FPGA
萊迪思(Lattice)半導(dǎo)體公司提供業(yè)界最廣范圍的現(xiàn)場(chǎng)可編程門陣列(FPGA)、可編程邏輯器件(PLD)及其相關(guān)軟件,包括現(xiàn)場(chǎng)可編程系統(tǒng)芯片(FPSC)、復(fù)雜的可編程邏輯器件(CPLD),可編程混合信號(hào)產(chǎn)品(ispPAC?)和可編程數(shù)字互連器件(ispGDX?)。
國(guó)產(chǎn)FPGA
京微齊力、西安智多晶微電子、紫光國(guó)微、高云等等,他們都擁有自己的FPGA系列芯片。
FPGA的廠商有很多,但是基本的內(nèi)部結(jié)構(gòu)和開發(fā)流程是比較接近了,只要掌握一種FPGA的開發(fā)方式,其他的FPGA開發(fā)就會(huì)容易上手很多。
目前學(xué)習(xí)FPGA設(shè)計(jì),使用INTEL FPGA和Xilinx FPGA的居多,這兩家的FPGA芯片也是應(yīng)用最多的。
系統(tǒng)設(shè)計(jì)師可以根據(jù)需要通過(guò)可編輯的連接把FPGA內(nèi)部的邏輯塊連接起來(lái),就好像一個(gè)電路試驗(yàn)板被放在了一個(gè)芯片里。一個(gè)出廠后的成品FPGA的邏輯塊和連接可以按照設(shè)計(jì)者而改變,所以FPGA可以完成所需要的邏輯功能。
FPGA的特點(diǎn)有以下幾點(diǎn):
- 采用FPGA設(shè)計(jì)ASIC電路(專用集成電路),用戶不需要投片生產(chǎn),就能得到合用的芯片。FPGA可做其它全定制或半定制ASIC電路的中試樣片。FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。FPGA是ASIC電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。
可以說(shuō),F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。
FPGA的應(yīng)用大可分為以下幾種:
數(shù)據(jù)采集領(lǐng)域:自然界的大部分信號(hào)是模擬信號(hào),在高速采集時(shí),信息無(wú)法直接傳入MCU或者DSP。此時(shí),需要FPGA進(jìn)行一定的轉(zhuǎn)換和速率匹配。
邏輯接口領(lǐng)域:CPU在于外界通信時(shí),需要各種專門的接口,而接口電路所引入的接口電路很龐大。加入FPGA,就可以CPU與FPGA做單獨(dú)通信,由FPGA實(shí)現(xiàn)其他各種接口的擴(kuò)展。
電平接口領(lǐng)域:不同的器件支持的電平不盡相同,如果需要連接各種接口時(shí),就需要各種接口標(biāo)準(zhǔn)或者轉(zhuǎn)換電路。對(duì)于FPGA來(lái)說(shuō),F(xiàn)PGA分為不同的BANK,可以直接支持不同的電平標(biāo)準(zhǔn)。
數(shù)字信號(hào)處理領(lǐng)域:通信、圖像等領(lǐng)域近些年對(duì)計(jì)算量提出了更高的要求,F(xiàn)PGA支持并行計(jì)算,可以大大縮短計(jì)算的時(shí)間。
IC設(shè)計(jì)領(lǐng)域:IC在設(shè)計(jì)時(shí),首先會(huì)使用FPGA設(shè)計(jì)出基礎(chǔ)的電路模型進(jìn)行各種理論驗(yàn)證,等驗(yàn)證通過(guò)后,才會(huì)進(jìn)行IC制造等等。
通過(guò)上述的敘述,了解FPGA內(nèi)部都是使用等效電路實(shí)現(xiàn)功能,那么它的速度是不是趕不上ASIC?
既然要做對(duì)比,就要說(shuō)明一部分情況。例:如果是同等工藝條件下,F(xiàn)PGA是沒(méi)有ASIC跑的快。各大FPGA廠商都是利用世界先進(jìn)工藝做出的片子,如果某些應(yīng)用類型公司嘗試?yán)玫淖钕冗M(jìn)工藝做片子,那么風(fēng)險(xiǎn)比較高,費(fèi)用也比較昂貴,如果采用成熟工藝去做片子,那么asic的速度不一定會(huì)有FPGA速度快。