采用FPGA解決DSP設計難題
DSP對電子系統設計來(lái)說(shuō)非常重要,因為它能夠迅速地測量、過(guò)濾或壓縮即時(shí)的模擬信號。這樣有助于實(shí)現數字世界和真實(shí)(模擬)世界的通信。但隨著(zhù)電子系統進(jìn)一步精細化,需要處理多種模擬信號源,迫使工程師不得不做出艱難的決策。是使用多個(gè)DSP并將其功能與系統的其余部分同步更具優(yōu)勢?還是采用一個(gè)能夠處理多功能的具有精細軟件的高性能DSP更具優(yōu)勢?
由于當今的系統非常復雜,在許多情況下,單DSP的實(shí)現方案根本沒(méi)有足夠的處理能力。同時(shí),系統架構也不能滿(mǎn)足多芯片系統帶來(lái)的成本、復雜性和功耗要求。
FPGA已成為需要高性能DSP功能的系統的理想選擇。事實(shí)上,與單獨的數字信號處理器相比,FPGA技術(shù)常常能夠為高難度的DSP挑戰提供大為簡(jiǎn)化的解決方案。要明白其中的緣由,需要回顧一下DSP的起源以及發(fā)展。
專(zhuān)用微處理器
在過(guò)去二十年里,傳統的DSP架構一直在竭盡全力地跟上不斷提高的性能需求的步伐。但隨著(zhù)視頻系統大踏步地邁進(jìn)高清和3D時(shí)代,并且通信系統為實(shí)現更高帶寬已將現有技術(shù)發(fā)揮到極致,設計人員需要替代性的實(shí)現策略。常用于實(shí)現數字信號處理算法的硬件不外乎如下三種基本器件之一:微處理器、邏輯電路和存儲器。部分設計還需要額外的硬件來(lái)實(shí)現模數(A/D)和數模(D/A)轉換以及高速數字接口。
傳統的數字信號處理器是設計用于實(shí)現專(zhuān)門(mén)目的的微處理器。這類(lèi)處理器非常適合算法密集的任務(wù),但是性能卻受時(shí)鐘速率和其內部設計順序性的限制。這限制了它們對輸入數據采樣每秒最多執行的運算次數。一般來(lái)說(shuō),每執行一次算術(shù)邏輯單元(ALU)運算需要三或四個(gè)時(shí)鐘周期。多核架構可以提升性能,但是提升幅度仍然有限。因此,采用傳統的信號處理器設計必須將架構單元重復用于算法實(shí)現。對每次執行的加、減、乘或其它任何基本運算,不論是內部還是外部反饋,每次執行都必須循環(huán)通過(guò)ALU。
不幸的是,在處理當今眾多的高性能應用時(shí),這種傳統的DSP難以滿(mǎn)足系統的要求。在過(guò)去為此提出過(guò)多種解決方案,包括在一個(gè)器件中使用多個(gè)ALU,或在一塊板上布置多個(gè)DSP器件。然而,這些方案往往會(huì )造成成本的大幅上升,并且只是把問(wèn)題推向另一個(gè)領(lǐng)域。例如:用多個(gè)器件提高性能遵循指數曲線(xiàn)。要讓性能提高一倍,需要兩個(gè)器件。再提高一倍,則需要四個(gè)器件,依此類(lèi)推。另外,編程人員往往從注重信號處理功能轉為注重多個(gè)處理器與內核之間的任務(wù)調度。這樣會(huì )產(chǎn)生大量的附加代碼,而且這些代碼會(huì )成為系統開(kāi)銷(xiāo),而不是用于解決眼前的數字信號處理問(wèn)題。
FPGA技術(shù)的引入為解決DSP實(shí)現方案日益增長(cháng)的復雜性帶來(lái)了福音。FPGA最初開(kāi)發(fā)用于整合和集中分立的存儲器和邏輯電路,以實(shí)現更高的集成度、更出色的性能以及更高的靈活性。FPGA技術(shù)已成為當今使用的幾乎每一款高性能系統的重要組成部分。與傳統的DSP相比,FPGA是由可配置邏輯塊(CLB)、存儲器、DSP邏輯片(Slice)及一些其它元件組成的統一陣列構成的巨大并行結構。它們既可以使用VHDL和Verilog等高級描述語(yǔ)言進(jìn)行編程,也可以在方框圖中用系統生成器(SystemGenerator)編程。FPGA還提供眾多的專(zhuān)用功能和IP核,用于以高度優(yōu)化的方式直接完成實(shí)現方案。
在FPGA中完成數字信號處理的主要優(yōu)勢在于能夠根據系統要求定制實(shí)現方案。這意味著(zhù)對于多通道或高速系統,用戶(hù)可以充分利用FPGA器件的并行性來(lái)實(shí)現性能的最佳化,而對低速系統,則可以更多地采用串行方式完成設計。這樣,設計人員就能夠根據算法和系統的要求來(lái)定制實(shí)現方案,而不必折衷期望的理想設計來(lái)迎合純順序器件的諸多局限。另外,超高速I(mǎi)/O通過(guò)最大限度地提高從捕捉經(jīng)處理鏈再到最終輸出的數據流,可進(jìn)一步降低成本并減少瓶頸問(wèn)題。
下面以一個(gè)同時(shí)使用傳統DSP架構和FPGA架構的FIR濾波器實(shí)現方案為例,來(lái)說(shuō)明每種解決方案的優(yōu)劣。
數字FIR濾波器實(shí)例
有限脈沖響應(FIR)濾波器是一種使用最廣的數字信號處理元件。設計人員使用濾波器來(lái)改變數字信號的幅度或頻譜,通常用于隔離或突出樣本數據頻譜中的特定區域。從這個(gè)角度說(shuō),可以把濾波器視為信號的預處理方式。在典型的濾波器應用中,輸入數據樣本通過(guò)小心同步的數學(xué)運算與濾波器系數相結合(這取決于濾波器的類(lèi)型和實(shí)現策略),隨后數據樣本進(jìn)入下一個(gè)處理階段。如果數據源和目的地都是模擬信號,則數據樣本必須首先通過(guò)A/D轉換器,而結果則必須饋送給D/A轉換器。
最簡(jiǎn)單的FIR濾波器類(lèi)型采用一系列的延遲元件、乘法器和加法器樹(shù)或加法器鏈來(lái)實(shí)現。
下面的等式是單通道FIR濾波器的數學(xué)表達式:
該等式中的各項分別代表輸入樣本、輸出樣本和系數。假設S為連續的輸入樣本流,Y為經(jīng)濾波后產(chǎn)生的輸出樣本流,那么n和k則對應特定的瞬時(shí)時(shí)間。這樣,若要計算時(shí)間n時(shí)的輸出樣本Y(n),則需要一組在N個(gè)不同時(shí)間點(diǎn)的樣本,即:S(n)、S(n-1)、s(n-2)、…s(n-N+1)。將這組N個(gè)輸入樣本乘以N個(gè)系數并求和,便可得出最終結果Y。
圖2是一個(gè)簡(jiǎn)單的31抽頭FIR濾波器(長(cháng)度N=31)的方框圖。
在選擇濾波器的理想長(cháng)度和系數值時(shí),有多種設計工具可供使用。其目的是通過(guò)選擇適當的參數來(lái)實(shí)現所需的濾波器性能。參數選擇最常用的設計工具是MATLAB。一旦選定了濾波器參數,就可以用數學(xué)等式實(shí)現。
實(shí)現FIR濾波器的基本步驟包括:對輸入數據流采樣;在緩沖區組織輸入樣本,以便讓每個(gè)捕捉到的樣本與每項濾波器系數相乘;讓每個(gè)數據樣本與每項系數相乘,并累加結果;輸出濾波結果。
使用“相乘累加法”在處理器上實(shí)現FIR濾波器的典型C語(yǔ)言程序,如下列代碼所示:
/**捕捉輸入數據樣本*/datasample=input();/**將新數據樣本裝入緩沖器*/S[n]=datasample;/**將每個(gè)數據樣本與每項系數相乘并累加結果*/y=0;for(i=0;i{y+=k[i]*S[(n+i)%N];}n=(n+1)%N;/**輸出濾波結果*/output(y);
圖3所示的實(shí)現方案被稱(chēng)為相乘累加或MAC型實(shí)現方案。這基本上就是用傳統的DSP處理器實(shí)現濾波器的方法。采用內核時(shí)鐘速率為1.2GHz的典型DSP處理器并以這種方式實(shí)現的31抽頭FIR濾波器的最高性能約為9.68MHz,或最大的輸入數據率為968MS/s。
而FPGA提供了許多不同的實(shí)現和優(yōu)化選擇。如果需要高資源效率的實(shí)現,MAC引擎法則相當理想。還是以31抽頭濾波器為例來(lái)說(shuō)明濾波器規范對所需邏輯資源的影響,這種實(shí)現方案的方框圖如圖4所示。
這種設計需要存儲器存儲數據和系數,可以混合采用FPGA內部的RAM和ROM。RAM用于存儲數據樣本,故而采用循環(huán)的RAM緩沖器實(shí)現。字的數量與濾波器抽頭數相等,位寬按樣本大小設置。ROM用于存儲系數。在最糟糕的情況下,字的數量與濾波器抽頭的數量相等,但如果存在對稱(chēng),則可以減少字的數量。位寬必須足以支持最大的系數。因為數據樣本和系數數據都隨每個(gè)周期改變,所以需要全乘法器。累加器負責將產(chǎn)生的結果累加起來(lái)。因為隨著(zhù)濾波器采集數據,累加器的輸出會(huì )隨每個(gè)時(shí)鐘周期改變,所以需要捕捉寄存器。當全套N個(gè)樣本完成累加后,輸出寄存器負責捕捉最終結果。
如果采用MAC模式,DSP48則非常適用,因為DSP48Slice內含輸入寄存器、輸出寄存器和加法器單元。實(shí)現31抽頭MAC引擎需要的資源包括一個(gè)DSP48、一個(gè)18kb塊RAM(blockRAM)和9個(gè)邏輯片。另外,還需要一些邏輯片用于采樣、系數地址生成和控制。如果FPGA內置有600MHz的時(shí)鐘,則在一個(gè)-3速度等級的Xilinx7系列器件中,該濾波器能夠以19.35MHz或1,935MS/s的輸入采樣速率運行。
如果系統規范需要更高性能的FIR濾波器,則可采用并行結構來(lái)實(shí)現。圖5顯示了直接I型實(shí)現方案的方框圖。
直接I型濾波器結構能夠在FPGA中實(shí)現最高性能。這種結構(通常也被稱(chēng)作脈動(dòng)FIR濾波器)采用流水線(xiàn)和加法器鏈,使DSP48Slice發(fā)揮出最高性能。輸入饋送到用作數據樣本緩沖器的級聯(lián)寄存器;每個(gè)寄存器向DSP48提供一個(gè)樣本,然后乘以對應的系數;加法器鏈存儲部分乘積,然后依次相加,從而得到最終結果。
這種設計無(wú)需外部邏輯電路支持濾波器,并且該結構可擴展用于支持任意數量的系數。因為沒(méi)有高扇出的輸入信號,所以這種結構能夠實(shí)現最高性能。實(shí)現31抽頭FIR濾波器僅需要31個(gè)DSP48邏輯片。如果FPGA內置有600MHz的時(shí)鐘,則在一個(gè)-3速度等級的Xilinx7系列器件中,該濾波器能夠以600MHz或600MS/s的輸入采樣速率運行。
從這個(gè)實(shí)例可以清晰地看出,FPGA不僅在性能上顯著(zhù)超越了傳統的數字信號處理器,而且要求的時(shí)鐘速率也顯著(zhù)降低(因此,功耗也顯著(zhù)降低)。
這個(gè)實(shí)例只反映了采用PFGA實(shí)現FIR濾波器的兩種技術(shù)。為了充分利用數據采樣率規范,可對該器件進(jìn)行進(jìn)一步定制,此時(shí),數據采樣率可在連續MAC運算極值和全并行運算極值之間任齲用戶(hù)還可考慮在包括對稱(chēng)系數、插值、抽癬多通道或多速率的資源利用和性能方面進(jìn)行更多的權衡取舍。XilinxCOREGenerator或SystemGenerator實(shí)用工具可以幫助用戶(hù)充分發(fā)掘這些設計變量和技術(shù)。
在傳統DSP和FPGA之間選擇
傳統的數字處理器已經(jīng)有多年的應用歷史,當然具有為特定問(wèn)題提供最佳解決方案的實(shí)例。如果系統采樣率低于數kHz且為單通道實(shí)現,DSP可能是不二之眩但是,當采樣率增加到數MHz以上,或者如果系統要求多通道,FPGA就越來(lái)越具優(yōu)勢。在高數據率條件下,DSP可能只能勉為其難地在不造成任何損耗的情況下采集、處理和輸出數據。這是因為在處理器中存在大量的共享資源、總線(xiàn)乃至內核。然而,FPGA卻能夠為每項功能提供專(zhuān)門(mén)的資源。
DSP是基于指令而非基于時(shí)鐘的器件。一般來(lái)說(shuō),對單個(gè)樣本上的任何數學(xué)運算需要三到四條指令。數據必須首先經(jīng)輸入端采集,再發(fā)送到處理內核,每完成一次運算后再循環(huán)通過(guò)內核,然后發(fā)送到輸出端。相比之下,FPGA基于時(shí)鐘,故每個(gè)時(shí)鐘周期都有可能在輸入數據流上進(jìn)行一次數學(xué)運算。
由于DSP的運算以指令或代碼為基礎,編程機制為標準C語(yǔ)言,或者在需要更高性能的情況下,采用低級匯編語(yǔ)言。這種代碼可能包含高級的決策樹(shù)或者轉移操作,而難以在FPGA中實(shí)現。例如:存在大量的用于執行如音頻和電話(huà)編解碼器之類(lèi)的預定義功能或標準的遺留代碼。
FPGA廠(chǎng)商和第三方合作伙伴已經(jīng)意識到將FPGA用于高性能DSP系統的優(yōu)勢,并且如今已有許多IP核廣泛應用于視頻、圖像處理、通信、汽車(chē)、醫療和軍用等大部分垂直應用市常與將高級系統方框圖映射成為C語(yǔ)言代碼的DSP設計相比,將高級系統方框圖分解為FPGA模塊和IP核會(huì )更加簡(jiǎn)便易行。
從DSP轉向FPGA
考查一些主要標準將有利于在傳統DSP和FPGA之間做出決策(表1)。
軟件編程人員的數量遠遠超過(guò)硬件設計人員的數量,這已是不爭的事實(shí)。DSP編程人員的數量與FPGA設計人員的數量之間的關(guān)系也是如此。不過(guò),讓系統架構師或者DSP設計人員轉為使用FPGA的難度,并不像讓軟件編程人員轉為從事硬件設計那么大。有大量的資源可以顯著(zhù)減輕對DSP算法開(kāi)發(fā)和FPGA設計工作的學(xué)習過(guò)程。
主要的障礙是從基于樣本和事件的方法轉向基于時(shí)鐘的問(wèn)題描述和解決方案。如果能夠在設計流程的系統架構和定義階段就能夠完成,對這種轉換的理解和應用就會(huì )簡(jiǎn)單得多。由不同的工程師和數學(xué)專(zhuān)家來(lái)定義系統架構(DSP算法和FPGA設計在某種程度上相互孤立)是很尋常的事情。當然,如果每個(gè)成員對其他小組成員面臨的難題有一定程度認識的話(huà),這個(gè)過(guò)程會(huì )順利得多。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論