1.1 FPGA簡(jiǎn)介-(mdy-edu.com)
本文的文檔編號(hào):001500000028
需要看對(duì)應(yīng)的視頻,請(qǐng)點(diǎn)擊視頻編號(hào):001000000047
1、本章主要介紹了FPGA的概念、基本結(jié)構(gòu),以及FPGA芯片的架構(gòu)和工作原理(數(shù)據(jù)存儲(chǔ)以及配置方式)。
2、這是ALTERA和VIVADO文檔
第一章?FPGA簡(jiǎn)介
1?什么是FPGA
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理解為大量的邏輯門陣列,用戶可以自由組合以實(shí)現(xiàn)不同的電路功能,即FPGA的可編程特性。相比于馮諾依曼結(jié)構(gòu)的CPU、GPU等通用處理器,F(xiàn)PGA具有效率更高速度更快的優(yōu)點(diǎn);相比于專職專用的ASIC,F(xiàn)PGA則具有開發(fā)難度小,開發(fā)周期更短的優(yōu)勢(shì),更適用于復(fù)雜多變的數(shù)據(jù)中心等應(yīng)用
但是FPGA也不是萬(wàn)能的,優(yōu)勢(shì)有時(shí)候也是劣勢(shì)。雖然FPGA相比于CPU效率更高、功耗更低的特點(diǎn),但是易于開發(fā)程度遠(yuǎn)遠(yuǎn)不如CPU;雖然相比ASIC開發(fā)周期更短,但是也存在著資源浪費(fèi),成本過(guò)高、性能較差的問題,不能真正的替代ASIC。
2 FPGA的工作原理
由于FPGA要反復(fù)燒寫,所以他實(shí)現(xiàn)組合邏輯的結(jié)構(gòu)不能像ASIC那樣通過(guò)固定的與非門來(lái)完成,而只能采用一種抑郁反復(fù)配置的結(jié)構(gòu)。查找表(LUT)可以很好地滿足這一要求,目前主流FPGA都采用了基于SRAM工藝的查找表結(jié)構(gòu)。通過(guò)燒寫文件改變查找表內(nèi)容的方法來(lái)實(shí)現(xiàn)對(duì)FPGA的重復(fù)配置。
根據(jù)數(shù)字電路的基本知識(shí)可以知道,對(duì)于一個(gè)n輸入的邏輯運(yùn)算,不管是與或非運(yùn)算還是異或運(yùn)算等等,最多只可能存在2n種結(jié)果。所以如果事先將相應(yīng)的結(jié)果存放在一個(gè)存儲(chǔ)單元,就相當(dāng)于實(shí)現(xiàn)了與非門電路的功能。FPGA的原理就是如此,他通過(guò)燒寫文件去配置查找表的內(nèi)容,從而在相同的電路情況下實(shí)現(xiàn)了不同的邏輯功能。
查找表(Look-Up-Table)簡(jiǎn)稱為L(zhǎng)UT,LUT本質(zhì)上就是一個(gè)RAM。目前FPGA中多實(shí)用4輸入的LUT,所以每一個(gè)LUT可以看成一個(gè)有4位地址線的RAM。當(dāng)用戶通過(guò)原理圖或HDL語(yǔ)言描述了一個(gè)邏輯電路以后,F(xiàn)PGA開發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能結(jié)果,并把真值表(即結(jié)果)事先寫入RAM,這樣,每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查找表,找出相應(yīng)的內(nèi)容,然后輸出即可。
以實(shí)現(xiàn)y=(a&b)|c的功能為例。如果是ASIC,下面就是基本的實(shí)現(xiàn)結(jié)構(gòu):

圖?1
而在FPGA,用戶首先寫出“y=(a&b)|c”代碼,軟件工具(QUARTUS、ISE或VIVADO)分析這一行代碼,得出a、b、c不同值下(共8種不同值),y的值分別是多少。

然后軟件工具將結(jié)果寫到LUT上,從而實(shí)現(xiàn)了該代碼的功能。下圖就是FPGA的實(shí)現(xiàn)基本結(jié)構(gòu)。LUT就像一個(gè)RAM,abc則相當(dāng)于地址,通過(guò)abc的地址就得讀到值賦給y。

圖?2
3?更為復(fù)雜的FPGA架構(gòu)
賽靈思公司在1985年推出的第一塊FPGA—XC2064包含8×8=64的邏輯塊陣列,每個(gè)邏輯塊包含一個(gè)四輸入查找表及其它一些簡(jiǎn)單功能。由于它們的容量非常有限,因此早期的FPGA只用來(lái)執(zhí)行一些相對(duì)簡(jiǎn)單的任務(wù),比如集中一些膠合邏輯,或?qū)崿F(xiàn)基本的狀態(tài)機(jī)。
隨著時(shí)間的推移和工藝節(jié)點(diǎn)的進(jìn)步,F(xiàn)PGA的容量和性能不斷得到提高,功耗卻不斷的下降。直到大約2006年以前廣泛使用的一直是四輸入查找表,一些高端器件可能使用六、七或八輸入的查找表。這些大家伙可能被用作一個(gè)大的查找表,或分裂成許多更小的功能,比如兩個(gè)四輸入的查找表或一個(gè)三輸入一個(gè)五輸入的查找表。在實(shí)際的高端器件中,這種可編程構(gòu)造可以描述相當(dāng)于百萬(wàn)級(jí)(有時(shí)甚至千萬(wàn)級(jí))的原始邏輯門。
如果某個(gè)邏輯功能(比方說(shuō)計(jì)數(shù)器)是用FPGA的可編程構(gòu)造實(shí)現(xiàn)的,那么這個(gè)功能可以被說(shuō)成“軟功能”,我們稱之為軟內(nèi)核。相比之下,如果某個(gè)功能是直接用芯片實(shí)現(xiàn)的,則被說(shuō)成“硬功能”,我們一般稱之為硬內(nèi)核。軟內(nèi)核的優(yōu)勢(shì)在于,你可以讓它們做你想讓它們做的任何事,注意,是數(shù)字功能,不包括模擬功能。硬內(nèi)核的優(yōu)勢(shì)是它們占用較少的硅片面積,具有較高的性能,并且功耗較低,并且硬內(nèi)核可用于實(shí)現(xiàn)模擬功能。例如鎖相環(huán)的倍頻功能,這需要用于模擬電路,所以這一部分是在FPGA內(nèi)部用硬件來(lái)實(shí)現(xiàn)的。
4?帶嵌入式處理器的FPGA
我們可以用FPGA中的普通可編程構(gòu)造做的事情之一是,使用其中的一部分實(shí)現(xiàn)一個(gè)或多個(gè)軟處理器內(nèi)核。當(dāng)然,你可以實(shí)現(xiàn)不同規(guī)模的處理器。舉例來(lái)說(shuō),你可以創(chuàng)建一個(gè)或多個(gè)8位的處理器,加上一個(gè)或多個(gè)16位或32位的軟處理器—所有處理器都在同一器件中。
如果FPGA供應(yīng)商希望提供一個(gè)占用較少硅片面積、消耗較低功率但性能更高的處理器,解決方案是將它實(shí)現(xiàn)為硬內(nèi)核。現(xiàn)在流行的ZYNQ,就是由賽靈思公司推出的,內(nèi)部集成了ARM硬核的FPGA芯片。考慮下面所示這個(gè)例子:

圖?3
圖4:一種新的SoC FPGA
這個(gè)芯片完全以硬內(nèi)核方式實(shí)現(xiàn)的雙路ARM Cortex-A9微控制器子系統(tǒng)(運(yùn)行時(shí)鐘高達(dá)1GHz,包含浮點(diǎn)引擎,片上緩存,計(jì)數(shù)器,定時(shí)器等),以及種類廣泛的硬內(nèi)核接口功能(SPI,I2C,CAN等),還有一個(gè)硬內(nèi)核的動(dòng)態(tài)內(nèi)存控制器,所有這些組件都利用大量傳統(tǒng)的可編程構(gòu)造和大量的通用輸入輸出(GPIO)引腳進(jìn)行了性能增強(qiáng)。
如果需要高速、高性能的處理器,并且需要實(shí)現(xiàn)邏輯編程時(shí),傳統(tǒng)的方法是在電路板上放置處理器(如ARM、DSP等)和FPGA,ARM或者DSP工程師實(shí)現(xiàn)軟件部分,F(xiàn)PGA工程師實(shí)現(xiàn)可編程邏輯部分,兩者協(xié)同合作。現(xiàn)在最新的方案,就可以使用ZYNQ一個(gè)芯片,以更低的功耗、更高的速度實(shí)現(xiàn)上面的功能。
如果是ZYNQ單芯片方案,是不是意味著只需要軟件工程師或者FPGA工程師獨(dú)立工作就可以了呢?筆者現(xiàn)時(shí)所了解的情況是:FPGA工程師負(fù)責(zé)搭建周邊電路,如ARM的接口、時(shí)鐘配置等,還負(fù)責(zé)可編程邏輯部分的開發(fā)。而軟件部分仍然還是軟件工程師負(fù)責(zé)。這主要原因是,F(xiàn)PGA邏輯開發(fā)和軟件開發(fā)都是專業(yè)性比較強(qiáng)的技能,非常少的工程師能同時(shí)掌握這兩個(gè)技能。當(dāng)然,這里說(shuō)的掌握性能,是專業(yè)性的、能應(yīng)用到企業(yè)項(xiàng)目的技能,只是接觸一下的不算。
5?編程方式
FPGA是由存放在片內(nèi)的RAM來(lái)設(shè)置其工作狀態(tài)的,因此工作室需要對(duì)片內(nèi)RAM進(jìn)行編程。用戶可根據(jù)不同的配置模式,采用不同的編程方式。FPGA有如下幾種配置模式:
1、并行模式:并行PROM、Flash配置FPGA;
2、主從模式:一片PROM配置多片F(xiàn)PGA;
3、串行模式:串行PROM配置FPGA;
4、外設(shè)模式:將FPGA作為微處理器的外設(shè),由微處理器對(duì)其編程。
目前,F(xiàn)PGA市場(chǎng)占有率最高的兩大公司Xlinx和Altera生產(chǎn)的FPGA都是基于SRAM工藝的,需要在使用時(shí)外接一個(gè)片外存儲(chǔ)器以保存程序。上電時(shí),F(xiàn)PGA將外部存儲(chǔ)其中的數(shù)據(jù)讀入片內(nèi)RAM,完成配置后,進(jìn)入工作狀態(tài);掉電后FPGA恢復(fù)為白片,內(nèi)部邏輯消失。這樣FPGA不僅能反復(fù)使用,還無(wú)需專門的FPGA編程器,只需通用的EPROM、PROM編程器即可。