加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 9.1  FPGA系統(tǒng)設(shè)計(jì)的3個(gè)基本原則
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

FPGA系統(tǒng)設(shè)計(jì)原則和技巧之:FPGA系統(tǒng)設(shè)計(jì)的3個(gè)基本原則

2013/08/30
閱讀需 11 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

?

9.1??FPGA系統(tǒng)設(shè)計(jì)的3個(gè)基本原則

9.1.1??面積與速度的平衡互換原則?

FPGA設(shè)計(jì)領(lǐng)域,面積通常指的是FPGA的芯片資源,包括邏輯資源和I/O資源等。速度一般指的是FPGA工作的最高頻率。和DSP或者ARM芯片不同,F(xiàn)PGA設(shè)計(jì)的工作頻率不是固定的,而是和設(shè)計(jì)本身的延遲緊密相聯(lián)。

在實(shí)際設(shè)計(jì)中,使用最小的面積設(shè)計(jì)出最高的速度當(dāng)然是每一個(gè)開發(fā)者追求的目標(biāo)。但往往面積和速度是不可兼得的。想使用最低的成本設(shè)計(jì)出最高性能的產(chǎn)品是不現(xiàn)實(shí)的,只有兼顧面積和速度,在成本和性能之間有所取舍,才能夠達(dá)到設(shè)計(jì)者的產(chǎn)品需求。

1.速度換面積

速度優(yōu)勢(shì)可以換取面積的節(jié)約。面積越小,就意味可以用更低的成本來(lái)實(shí)現(xiàn)產(chǎn)品的功能。

所謂的速度優(yōu)勢(shì)指的是在整個(gè)FPGA設(shè)計(jì)中,有一部分模塊的算法運(yùn)行周期較其他部分快很多,這部分模塊就相對(duì)與其他的部分具有速度優(yōu)勢(shì)。利用這部分模塊的速度優(yōu)勢(shì)來(lái)降低整個(gè)FPGA設(shè)計(jì)的使用資源就是速度換面積原則的體現(xiàn)。

速度換面積原則在一些較復(fù)雜的算法設(shè)計(jì)中常常會(huì)用到。在這些算法設(shè)計(jì)中,流水線設(shè)計(jì)常常是必須用到的技術(shù)。在流水線的每一級(jí),常常有同一個(gè)算法被重復(fù)的使用,但是使用的次數(shù)不一樣的現(xiàn)象。在正常的設(shè)計(jì)中,這些被重復(fù)使用但是使用次數(shù)不同的模塊將會(huì)占用大量的FPGA資源。

隨著FPGA技術(shù)的不斷發(fā)展,F(xiàn)PGA內(nèi)部越來(lái)越多的內(nèi)嵌了DSP乘法模塊,為一些常用算法的實(shí)現(xiàn)提供了很大的方便,也大大提高了運(yùn)算的速度和能力。因此,在以往設(shè)計(jì)中那些被重復(fù)使用的算法模塊的速度可以很高,即相對(duì)其他部分具有速度優(yōu)勢(shì)。

利用這個(gè)特點(diǎn),重新對(duì)FPGA的設(shè)計(jì)進(jìn)行改造。將被重復(fù)使用的算法模塊提煉出最小的復(fù)用單元,并利用這個(gè)最小的高速單元代替原設(shè)計(jì)中被重復(fù)使用但次數(shù)不同的模塊。當(dāng)然在改造的時(shí)候必然會(huì)增加一些其他的資源來(lái)實(shí)現(xiàn)這個(gè)代替的過(guò)程。但是只要速度具有優(yōu)勢(shì),那么增加的這部分邏輯依然能夠?qū)崿F(xiàn)降低面積、提高速度的目的。

如圖9.1所示,是一個(gè)流水線的n個(gè)步驟,每個(gè)步驟都相應(yīng)地運(yùn)算一定次數(shù)的算法,每個(gè)步驟的算法都占用獨(dú)立的資源實(shí)現(xiàn)。其中運(yùn)算次數(shù)方框的大小表示占用的設(shè)計(jì)資源。

圖9.1??未使用速度換面積的流水線算法

假設(shè)這些算法中有可以復(fù)用的基本單元,并且具有速度優(yōu)勢(shì),那么就可以使用如圖9.2所示的方式實(shí)現(xiàn)面積的節(jié)省。在這種方法中,通過(guò)將算法提取出最小單元,配合算法次數(shù)計(jì)數(shù)器及流水線的輸入輸出選擇開關(guān),即可實(shí)現(xiàn)將原設(shè)計(jì)中復(fù)雜的算法結(jié)構(gòu)簡(jiǎn)化的目的。

圖9.2??使用速度換面積的流水線算法

可以看到,速度換面積的關(guān)鍵是高速基本單元的復(fù)用。

2.面積換速度

面積換速度正好和速度換面積相反。在這種方法中,面積的復(fù)制可以換取速度的提高。支持的速度越高,就意味著可以實(shí)現(xiàn)更高的產(chǎn)品性能。在某些應(yīng)用領(lǐng)域,比如軍事、航天等,往往關(guān)注的是產(chǎn)品的性能,而不是成本。這些產(chǎn)品中,可以采用并行處理技術(shù),實(shí)現(xiàn)面積換速度。

如圖9.3所示是利用并行技術(shù)、面積(資源)復(fù)制的方法實(shí)現(xiàn)了高速的處理能力。

在進(jìn)行FPGA進(jìn)行設(shè)計(jì)時(shí),我們必須注意到,F(xiàn)PGA的工作頻率是有限的。因?yàn)镕PGA是工作在TTL電平下,該電平結(jié)構(gòu)(晶體管-晶體管)所能支持的切換頻率是有限的。但是在實(shí)際的產(chǎn)品設(shè)計(jì)中,高頻的處理需求越來(lái)越多,如何解決這個(gè)矛盾?

首先使用簡(jiǎn)單的串/并轉(zhuǎn)換實(shí)現(xiàn)多路的速度降頻,如圖9.3所示,450Mbit/s的頻率分為3路,每路150Mbit/s;其次在每一路上使用相同算法但各占設(shè)計(jì)資源的處理模塊進(jìn)行低頻(相對(duì))的處理;最后再將每一路的處理結(jié)果進(jìn)行并/串轉(zhuǎn)換成為高頻的輸出數(shù)據(jù)。

圖9.3??面積換速度實(shí)現(xiàn)并行高速處理

串/并和并/串轉(zhuǎn)換能夠支持那么高的頻率嗎?這個(gè)問(wèn)題的解決得益于FPGA技術(shù)的發(fā)展。如今主流的FPGA器件中,都帶有高速的I/O資源及內(nèi)部RAM供用戶使用。這些高速I/O資源及內(nèi)部RAM能夠?qū)崿F(xiàn)I/O接口的穩(wěn)定高速切換和數(shù)據(jù)總線寬度的轉(zhuǎn)換。這部分的詳細(xì)介紹參見9.3節(jié)。

?

9.1.2??硬件可實(shí)現(xiàn)原則

FPGA設(shè)計(jì)通常會(huì)采用HDL語(yǔ)言,比如Verilog?HDL或者VHDL。當(dāng)采用HDL語(yǔ)言來(lái)描述一個(gè)硬件電路功能的時(shí)候,一定要保證代碼描述的電路是硬件可實(shí)現(xiàn)的。Verilog?HDL語(yǔ)言的語(yǔ)法與C語(yǔ)言很相似,但是它們之間有本質(zhì)的區(qū)別。

C語(yǔ)言是基于過(guò)程的高級(jí)語(yǔ)言,編譯后可以在CPU上運(yùn)行。而Verilog?HDL語(yǔ)言描述的本身就是硬件結(jié)構(gòu),編譯后是硬件電路。因此,有些語(yǔ)句在C語(yǔ)言的環(huán)境中應(yīng)用沒(méi)有問(wèn)題,但是在HDL語(yǔ)言環(huán)境下就會(huì)導(dǎo)致結(jié)果不正確或者不理想。

比如for語(yǔ)句,以下代碼在C語(yǔ)言下是一段普通代碼:

for?(i=0;?i<16;?i++)

????DoSomething(); //實(shí)現(xiàn)函數(shù)的重復(fù)調(diào)用

在C語(yǔ)言下運(yùn)行沒(méi)有任何問(wèn)題,但是在Verilog?HDL的環(huán)境下編譯就會(huì)導(dǎo)致綜合后的資源嚴(yán)重浪費(fèi)。所以for語(yǔ)句在Verilog?HDL環(huán)境下一般只用來(lái)做仿真或者行為級(jí)的描述。那么for語(yǔ)句在HDL語(yǔ)言中如何實(shí)現(xiàn)呢?有幾種不同的模式,其中最常見的是以下方式。

reg[3:0]?counter; //調(diào)用次數(shù)計(jì)數(shù)器

always?@?(posedge?clk) //計(jì)數(shù)器計(jì)數(shù)模塊?

?????if?(syn_rst)

??????????counter?<=?4’b0;

?????else

??????????counter?<=?counter?+?1;

always?@?(posedge?clk) begin //使用case語(yǔ)句實(shí)現(xiàn)分支調(diào)用,

?????case?(counter) //配合計(jì)數(shù)器計(jì)數(shù),各分支可使用同樣的執(zhí)行語(yǔ)句

??????????4’b000: DoSomething; //實(shí)現(xiàn)該語(yǔ)句的重復(fù)調(diào)用

??????????4’b0001:?DoSomething; //等同于高級(jí)語(yǔ)言中的for語(yǔ)句

??????????…?…

??????????default:?DoSomething;

?????endcase

end

在counter計(jì)數(shù)器的不同狀態(tài)可以設(shè)計(jì)不同的動(dòng)作。如果都是完成一樣的操作,就是循環(huán)for語(yǔ)句了。

9.1.3??同步設(shè)計(jì)原則

同步電路和異步電路是FPGA設(shè)計(jì)的兩種基本電路結(jié)構(gòu)形式。

異步設(shè)計(jì)的核心電路是由組合邏輯電路構(gòu)成的,比如異步的SRAM、FIFO的讀寫控制信號(hào),地址譯碼電路等。這類電路的輸出信號(hào)不依賴于任何時(shí)鐘信號(hào)。異步電路最大缺陷就是會(huì)產(chǎn)生毛刺。

同步設(shè)計(jì)的核心電路是由各種觸發(fā)器構(gòu)成的。這類電路的任何輸出都是在某個(gè)時(shí)鐘的邊沿驅(qū)動(dòng)觸發(fā)器產(chǎn)生的。所以,同步設(shè)計(jì)可以很好地避免毛刺的產(chǎn)生。

在專用芯片(ASIC)的設(shè)計(jì)過(guò)程中,同步設(shè)計(jì)一般會(huì)比異步設(shè)計(jì)占用更多的資源。但是在FPGA設(shè)計(jì)過(guò)程中并不是這樣。FPGA內(nèi)部的最小單元是LE,每個(gè)LE里面既包括了實(shí)現(xiàn)異步電路需要的查找表資源,也包括了實(shí)現(xiàn)同步電路需要的寄存器資源。

如圖9.4所示是Altera公司的Cyclone系列FPGA的LE結(jié)構(gòu)圖。從圖中可以看出,這個(gè)LE中包含了輸入輸出的MUX,同步和異步的控制邏輯,LUT以及可編程寄存器。如果使用這個(gè)系列的FPGA(其他的FPGA類似)進(jìn)行同步電路或異步電路的設(shè)計(jì),那么不管使用的是LE中的LUT還是寄存器,綜合工具綜合的結(jié)果都是消耗一個(gè)LE。

圖9.4??Cyclone?LE結(jié)構(gòu)圖

?

因此,單純的使用異步電路也并不會(huì)節(jié)省觸發(fā)器的資源?;蛘哒f(shuō),使用同步設(shè)計(jì)電路,并不會(huì)帶來(lái)FPGA資源的浪費(fèi)。但是全同步的設(shè)計(jì)對(duì)于FPGA的仿真驗(yàn)證是有好處的。因?yàn)殡娐返乃袆?dòng)作都是在相同的時(shí)鐘邊沿來(lái)觸發(fā),可以減少整個(gè)設(shè)計(jì)的延遲,提高系統(tǒng)的工作頻率。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

華清遠(yuǎn)見(www.farsight.com.cn)是國(guó)內(nèi)領(lǐng)先嵌入師培訓(xùn)機(jī)構(gòu),2004年注冊(cè)于中國(guó)北京海淀高科技園區(qū),除北京總部外,上海、深圳、成都、南京、武漢、西安、廣州均有直營(yíng)分公司。華清遠(yuǎn)見除提供嵌入式相關(guān)的長(zhǎng)期就業(yè)培訓(xùn)、短期高端培訓(xùn)、師資培訓(xùn)及企業(yè)員工內(nèi)訓(xùn)等業(yè)務(wù)外,其下屬研發(fā)中心還負(fù)責(zé)嵌入式、Android及物聯(lián)網(wǎng)方向的教學(xué)實(shí)驗(yàn)平臺(tái)的研發(fā)及培訓(xùn)教材的出版,截止目前為止已公開出版70余本嵌入式/移動(dòng)開發(fā)/物聯(lián)網(wǎng)相關(guān)圖書。企業(yè)理念:專業(yè)始于專注 卓識(shí)源于遠(yuǎn)見。企業(yè)價(jià)值觀:做良心教育、做專業(yè)教育,更要做受人尊敬的職業(yè)教育。