主處理系統(tǒng)運(yùn)行嵌入式操作系統(tǒng),而輔助處理單元?jiǎng)t專注某一些的專用領(lǐng)域的處理。這些系統(tǒng)的應(yīng)用減少了FPGA作為CPU協(xié)處理單元的領(lǐng)域。因?yàn)楫吘笷PGA相比ARM等流行嵌入式處理器價(jià)格要相對(duì)較高。
在這種情形下,F(xiàn)PGA的廠商似乎也感受到了壓力,不約而同推出了帶ARM硬核的FPGA,例如ALTERA的和XILINX的ZYNQ和ALTERA的SOC FPGA。這是即是互相競(jìng)爭(zhēng)的需要,也是同眾多CPU廠商一掰手腕的杰作。即使在這兩種在趨勢(shì)下,經(jīng)典的處理器+FPGA的設(shè)計(jì)仍然可看做為高性能嵌入式系統(tǒng)的典型配置。
經(jīng)典的處理器+FPGA的配置中有多種的架構(gòu)形式,即多個(gè)處理器單元,可能是ARM,MIPS,或者DSP,F(xiàn)PGA也可能是多片的配置,具體架構(gòu)形式于具體處理的業(yè)務(wù)相關(guān)和目標(biāo)設(shè)備的定位也相關(guān)。因?yàn)镕PGA作為簡(jiǎn)單業(yè)務(wù)流大數(shù)據(jù)量的處理形態(tài)仍然是CPU無(wú)可比擬的優(yōu)勢(shì),F(xiàn)PGA內(nèi)部可以開(kāi)發(fā)大量業(yè)務(wù)數(shù)據(jù)并行,從而實(shí)現(xiàn)高速的數(shù)據(jù)處理。
在實(shí)現(xiàn)高速處理方面,CPU的另一個(gè)發(fā)展趨勢(shì)是多核,多核處理器也能處理大數(shù)據(jù)量的業(yè)務(wù)的并行,例如業(yè)界TERILA已推出64核的多核處理器,采用MIPS處理器,通過(guò)二維MASH網(wǎng)絡(luò)連接在一起,形成NOC的結(jié)構(gòu)。在性能上已經(jīng)和現(xiàn)有的高速FPGA的處理能力上不相上下。但是多核處理器的不得不說(shuō)的問(wèn)題就是,同一業(yè)務(wù)流分配到多核處理上后,如需交互,例如訪問(wèn)同一資源,就會(huì)造成讀寫(xiě)的緩存一致的問(wèn)題,解決的這一問(wèn)題的天然思路是加鎖,即在變量訪問(wèn)上加自旋鎖,但是帶來(lái)的問(wèn)題就是處理性能的急劇下降。而FPGA無(wú)論并行處理和同一變量的訪問(wèn),都可以變成工程師的設(shè)計(jì)水平的問(wèn)題,沒(méi)有原理性的挑戰(zhàn)。
FPGA的幾種熱門(mén)應(yīng)用
沒(méi)有一種器件可以滿足全人類的眾多需求,因此不用擔(dān)心FPGA沒(méi)有用武之地。必定是一系列產(chǎn)品的組合。下面主要介紹一下FPGA可以作為現(xiàn)今熱門(mén)場(chǎng)景的幾種應(yīng)用。
(1)網(wǎng)絡(luò)存儲(chǔ)產(chǎn)品,特別是現(xiàn)在的NAS,或者SAN設(shè)備上,其存儲(chǔ)的時(shí)間、接口、安全性等都要求較高,而FPGA無(wú)論處理性能還是擴(kuò)展接口的能力都使其在這一領(lǐng)域大有作為?,F(xiàn)在高端FPGA單片就可以擴(kuò)展32個(gè)或者更多4G或者8G的FC接口。并且其協(xié)議處理相對(duì)的固定,也使FPGA在這一領(lǐng)域有大量的可能應(yīng)用。
(2)高速網(wǎng)絡(luò)設(shè)備,現(xiàn)在高速網(wǎng)絡(luò)設(shè)備10G、40/100G以太網(wǎng)設(shè)備領(lǐng)域,同樣FPGA也是關(guān)鍵的處理部件。特別是IPv6的商用化及大數(shù)據(jù)對(duì)于基礎(chǔ)設(shè)施的高要求,都使這一領(lǐng)域的處理應(yīng)用會(huì)逐漸廣泛,這一領(lǐng)域通常是高速網(wǎng)絡(luò)處理器(NP)+FPGA的典型架構(gòu)。
(3)4G等通信設(shè)備,對(duì)于新一代通信基站的信號(hào)處理,F(xiàn)PGA+DSP陣列的架構(gòu)就是絕配。特別是在專用處理芯片面世之前,這樣的架構(gòu)可以保證新一代通信基礎(chǔ)設(shè)施的迅速研發(fā)和部署。
沒(méi)有完美的架構(gòu),只有合適的組合,各種芯片和架構(gòu)都是為應(yīng)用服務(wù),互相的滲透是趨勢(shì),也是必然。FPGA相對(duì)處理器的可編程領(lǐng)域,仍然屬于小眾(雖然人數(shù)也不少)。但是正像一則笑話所說(shuō):大腿雖然比根命根子粗,但決沒(méi)有命子重要。這算開(kāi)個(gè)玩笑。FPGA的實(shí)現(xiàn)為以后的芯片化留下了許多可能和想象空間,從而在應(yīng)用大量爆發(fā)時(shí)通過(guò)芯片化來(lái)大幅降低成本,這這也正是其他可編程器件所不能比擬的。
FPGA與各組成器件之間互聯(lián)
系統(tǒng)架構(gòu)確定,下一步就是FPGA與各組成器件之間互聯(lián)的問(wèn)題了。通常來(lái)說(shuō),CPU和FPGA的互聯(lián)接口,主要取決兩個(gè)要素:
(1)CPU所支持的接口。
(2)交互的業(yè)務(wù)。
通常來(lái)說(shuō),F(xiàn)PGA一般支持與CPU連接的數(shù)字接口,其常用的有EMIF,PCI,PCI-E,UPP,網(wǎng)口(MII/GMII/RGMII),DDR等接口。作為總線類接口,F(xiàn)PGA通常作為從設(shè)備與CPU連接,CPU作為主設(shè)備通過(guò)訪問(wèn)直接映射的地址對(duì)FPGA進(jìn)行訪問(wèn)。根據(jù)是否有時(shí)鐘同步,通??偩€訪問(wèn)分為同步或異步的總線,根據(jù)CPU外部總線協(xié)議有所不同,但數(shù)據(jù)、地址、控制信號(hào)基本是總線訪問(wèn)類型中總線信號(hào)所不能省略的。CPU手冊(cè)中會(huì)對(duì)信號(hào)定義和時(shí)序控制有著詳細(xì)的說(shuō)明,F(xiàn)PGA需要根據(jù)這些詳細(xì)說(shuō)明來(lái)實(shí)現(xiàn)相應(yīng)的邏輯。同時(shí)CPU還可以對(duì)訪問(wèn)時(shí)序進(jìn)行設(shè)置,比如最快時(shí)鐘,甚至所需的最小建立時(shí)間和保持時(shí)間,這些一般CPU都可以進(jìn)行設(shè)置,而這些具體參數(shù),不僅影響FPGA的實(shí)現(xiàn),也決定總線訪問(wèn)的速度和效率。對(duì)于同步總線,只需要根據(jù)輸入時(shí)鐘進(jìn)行采樣處理即可,但對(duì)于異步總線,則需要的對(duì)進(jìn)入的控制信號(hào)進(jìn)行同步化處理,通常處理方式是寄存兩拍,去掉毛刺。
因此用于采樣的時(shí)鐘就與CPU所設(shè)置的總線參數(shù)相關(guān),如采樣時(shí)鐘較低,等控制信號(hào)穩(wěn)定后在譯碼后輸出,一個(gè)總線操作周期的時(shí)間就會(huì)相對(duì)較長(zhǎng),其處理的效率也相對(duì)較低;假如采樣時(shí)鐘過(guò)快,則對(duì)關(guān)鍵路徑又是一個(gè)挑戰(zhàn),因此合理設(shè)定采樣頻率,便于接口的移植并接口的效率是設(shè)計(jì)的關(guān)鍵點(diǎn)和平衡點(diǎn)。
對(duì)于總線型的訪問(wèn)來(lái)說(shuō),數(shù)據(jù)信號(hào)通常為三態(tài)信號(hào),用于輸入和輸出。這種設(shè)計(jì)的目的是為了減少外部連線的數(shù)量。因?yàn)閿?shù)據(jù)信號(hào)相對(duì)較多一般為8/16/32位數(shù)據(jù)總線??偩€的訪問(wèn)的優(yōu)勢(shì)是直接映射到系統(tǒng)的地址區(qū)間,訪問(wèn)較為直觀。但相對(duì)傳輸速率不高,通常在幾十到100Mbps以下。
這種原因的造成主要為以下因素(1)受制總線訪問(wèn)的間隔,總線操作周期等因素,總線訪問(wèn)間隔即兩次訪問(wèn)之間總線空閑的時(shí)間,而總線操作周期為從發(fā)起到相應(yīng)的時(shí)間。(2)不支持雙向傳輸,并且FPGA需主動(dòng)發(fā)起對(duì)CPU操作時(shí),一般只有發(fā)起CPU的中斷處理一種方式。這種總線型操作特點(diǎn),使其可以用作系統(tǒng)的管理操作,例如FPGA內(nèi)部寄存器配置,運(yùn)行過(guò)程中所需參數(shù)配置,以及數(shù)據(jù)流量較小的信息交互等操作。這些操作數(shù)據(jù)量和所需帶寬適中,可以應(yīng)對(duì)普通的嵌入式系統(tǒng)的處理需求。
對(duì)于大數(shù)據(jù)流量的數(shù)據(jù)交互,一般采用專用的總線交互,其特點(diǎn)是,支持雙向傳輸,總線傳輸速率較快,例如GMII/RGMII、Upp、專用LVDS接口,及SERDES接口。專用SERDES接口一般支持的有PCI-E,XAUI,SGMII,SATA,Interlaken接口等接口。GMII/RGMII,專用LVDS接口一般處理在1GbpS一下的業(yè)務(wù)形式,而PCI-E,根據(jù)其型號(hào)不同,支持幾Gbps的傳輸速率。而XAUI可支持到10Gbps的傳輸速率,lnterlaken接口可支持到40Gbps的業(yè)務(wù)傳輸。
對(duì)于不同所需的業(yè)務(wù)形式及處理器的類型,則可選擇相應(yīng)的接口形式,來(lái)傳輸具體的業(yè)務(wù)?,F(xiàn)今主流FPGA中都提供的各種接口的IP。選擇FPGA與各型CPU互聯(lián)接口,一般選擇主流的應(yīng)用交互方案,特殊的接口缺少支撐IP,導(dǎo)致開(kāi)發(fā)、調(diào)試、維護(hù)和兼容性的成本都較大,同時(shí)注意系統(tǒng)的持續(xù)演進(jìn)的需要,如只在本項(xiàng)目使用一次,而下一項(xiàng)目或開(kāi)發(fā)階段已摒棄此類接口,則需提前規(guī)劃技術(shù)路線。畢竟一個(gè)穩(wěn)定、高效的接口互聯(lián)是一個(gè)項(xiàng)目成功的基礎(chǔ)。
不是所有的嵌入式系統(tǒng)都需要“高大上”的接口形式,各類低速的穩(wěn)定接口也同樣在FPGA的接口互聯(lián)中有著重要的角色,其中UART、SPI、I2C等連接形式也非常的常見(jiàn)。畢竟,一個(gè)優(yōu)秀的設(shè)計(jì)不是“高大上”的堆積,而是對(duì)需求最小成本的滿足。適合的才是最美的。
相關(guān)閱讀:
盤(pán)點(diǎn)高性能汽車和FPGA共同點(diǎn),不是一般的多
設(shè)計(jì)實(shí)例:基于FPGA的可穿戴設(shè)備的設(shè)計(jì)
FPGA掉電易失難題如何破?看芯片來(lái)破解