找回密码
 注册
搜索
查看: 1057|回复: 0

[综合资料] FPGA分擔DSP功能降低建構成本

[复制链接]
发表于 2005-12-17 17:15:00 | 显示全部楼层 |阅读模式
<TABLE cellSpacing=0 cellPadding=5 width=700 align=center border=0>

<TR>
<TD width=690 colSpan=2>
<TABLE cellSpacing=0 cellPadding=3 width=690 border=0>

<TR>
<TD width=684>
<P align=center><b><FONT color=#2758da size=5>FPGA分擔DSP功能降低建構成本
 </FONT></b></P>
<P align=center><FONT size=2>Peter Baran、Ralph Bodenner、Joe Hanson
 </FONT></P></TD></TR>
<TR>
<TD class=text12gray vAlign=top>在任何產品開發中,有多種辦法可以減小成本和增加功能。在更高端DSP應用尤其如此,這些應用都是大計算量和對性能要求嚴苛的,需要比通用型微處理器或低成本DSP晶片有更大的處理能力。對於這類應用,有許多軟體/硬體方案可選用,包括DSP元件、專用ASIC和現場可編程邏輯陣列(FPGA)。這些可供選用的方案具有不同程度的性能優勢,但也必須在包括成本、功耗和設計時間在內的其他因素之間進行權衡。

最近大容量FPGA的成本在降低,加上軟體導向的FPGA設計工具的發展,導致了這些元件獲得更多的使用,既能處理過去DSP處理器領域的功能,同時大大地降低專用ASIC方案的風險和前期成本。

在新的和現有的設計中增加使用FPGA,是為了延長一般的、更低成本微處理器的壽命(分擔大計算量的工作)或減小或消除對更高成本頂級DSP處理器的需求。在那些必須增加現有系統傳輸量才能處理更高解析度或更大訊號頻寬的情況下,增加的必要性能主要是針對計算(需要可調整的計算資源)或可能需要全新的方法來解決頻寬問題。

訊號處理演算法(典型DSP應用的計算內部核心)通常可以用相對少量的C語言原始碼來描述。因此,用C語言模型快速試驗新演算方法的能力是有用的。另一方面,重新建造低階的硬體設計可能是單調乏味和易發生錯誤的過程。

FPGA通過兩種方式解決這些問題。首先,它們有潛力實現相當高性能的DSP應用作為專用的硬體,而且沒有專用ASIC的前期風險。主流(和相對低成本)的FPGA元件現在有必備的能力和功能支援這些應用。第二,同樣重要的是由於設計工具的發展,FPGA變得更加的容易使用。現在用多種軟體導向(採用圖形或語言)的設計方式成為FPGA設計過程的一部分,這是完全可能的。

當FPGA用來實現訊號處理或其他大計算量應用時,FPGA可以作為原型設計(之後可以轉換為硬式掩膜版的專用ASIC中或結構化ASIC)或實際的產品平臺。在這種情況下FPGA在現場軟體升級上具有獨特的優勢,對中低批量產品有著有力的成本優勢。

大容量FPGA對加值工程也很有意義。在這種情況下,多種元件(包括處理器週邊和隨機或「膠合」邏輯)可以整合到單個FPGA中。雖然尺寸和系統複雜度的減小是這類整合產品的優勢,但是主要的優勢還是成本。把FPGA作為一個無所不能的硬體平臺是很常見的,但是這方面的工作往往忽略了FPGA完成主要處理及傳統硬體功能的優勢。

在最近幾年中,FPGA具備了日益強大的嵌入式處理器核心。例如,Altera&reg;的Nios&#8482;處理器是高性能的32bit RISC處理器,具有很豐富的可供選擇週邊和配置(使用Altera提供的SOPC Builder&#8482;軟體),直接編程到大規模Stratix&#8482;或Cyclone&#8482; FPGA中。這種處理器為混合軟體/硬體應用提供了出眾的平臺,進一步增加了FPGA的整合度和加值工程應用機會。</TD></TR></TABLE></TD></TR>
<TR>
<TD class=black122 width=690 bgColor=#f5f5f5 colSpan=2><IMG src="http://www.eedesign.com.tw/article/94event/0503_newstyle/e-img-1.gif"><b><FONT color=#009300>採用FPGA架構的視訊會議方案</FONT></b>
為了檢驗最新的FPGA架構如何使用,我們考慮視訊會議產品。Be Here Technologies(Fremont,California)製造了視訊/音訊電話,包括一個專利的360°鏡頭(見下圖)。這個系統中所需的圖像處理包括動態去除由單個鏡片產生的環形圖像的扭曲,以及視訊壓縮和其他大計算量的操作。
 
<P align=center> </P>
<P>圖一:Be Here專利的360°鏡片把整個環境捕捉為完整但扭曲的圖像。單個CCD不好的圖像必須在壓縮和傳輸之前重新進行大量的處理。</P>
<P> </P>
<P>當使用這類先進的產品時,必然需要改進的視訊和聲音解析度和取樣率。最初對該產品的分析建議採用現成的處理器(作為圖像變形軟體的控制器),結合高性能的DSP元件就能夠為應用的視訊壓縮單元(在專用的圖幀尺寸上使用H.264壓縮標準,工作速率高達每秒20幀)提供必要的性能。然而當團隊考慮開發成本時,很明顯是使用更高性能的DSP將使系統超出預算,需要另闢蹊徑。

Be Here開發團隊開始關注最新的FPGA平臺,尤其是Altera產品。團隊最終決定採用Altera的Stratix系列,因為其支援電路板上大量記憶體的能力和用Altera HardCopy&#8482; ASIC轉換能滿足批量成本需求。同時系統也需要一個微處理器來控制圖像變形和產生觀看的硬體,以及圖像感測器。Altera的嵌入式Nios處理器(它是無需權利金和具備高可配置性的)是完成這些功能最自然的選擇。

為了提供一個支援快速原型開發的開發平臺,Be Here設計了專用的板子,其中包括了一塊Stratix EP1S10元件和各種用於除錯和開發的介面。這塊板和Altera的Stratix開發板很相似,作為Nios開發套件的一部分,但是為Be Here的特殊需求進行了修改。電路板上的連接允許直接和多種不同的DSP評估板相連接,以及直接和必須的攝影機和顯示元件相連接。

Be Here最新的產品包括具有獨家的圖像處理技術的H.264壓縮,這是視訊會議整體方案的一部分。正如前面所述,這部分的設計用相對昂貴的DSP元件無法滿足製造成本的目標。然而在Stratix FPGA之外使用成本更低和能力更低的DSP,就可以滿足成本目標。然後設計問題就變成了一種劃分的問題:決定哪種功能(代表演算法「熱點」)是最適合於用FPGA實現,將那些功能轉換為適合FPGA的更低層次的硬體描述,把較不關鍵的演算法留給成本更低的DSP去實現。

如早期的每個DSP應用中,最佳的方案是混合處理器設計,應用性能不太嚴苛的零件(包括作業系統、網路協定堆疊、使用者介面、視訊Codec和POT控制)都由主微處理器完成。大計算量的零件(包括圖像糾正、圖像觀看產生和壓縮/解壓縮加速)必須採用高端DSP,或是採用FPGA中的專有硬體。這需要多種功能和硬體設計方法和工具的知識,但要依性能為成本提供最大的效益。

對於系統中的每種處理器類型(標準處理器、DSP和FPGA),要考慮不同的優點、劣勢和所需的設計技能水準。例如,雖然DSP是軟體可編程的,對工具的初始投入很低,但是它們需要一些具有DSP專業設計技術的專門人員,通常需要撰寫組合語言程式的技能。另一方面,FPGA在設計時間和工具專業程度上需要相對大的投入,尤其當使用硬體設計語言作為主要的設計輸入模式時,更是如此。

然而當和專業ASIC設計的專業人員和工具投入相比,FPGA顯然是成本更低和風險更低的專用硬體開發方案。的確,對這種產品,選擇FPGA的主要因素是設計處理相對比專用ASIC的方式來的簡單和低風險。而且,通過移植到Altera HardCopy ASIC,Be Here也降低了製造成本,實現了類似ASIC的價格/性能比。

FPGA提供了和設計過程相關的其他優勢。在整個開發過程中使用FPGA,團隊也能夠逐步地導入和驗證以前在軟體中進行原型設計的演算法。這是手工完成的(手工把C程式碼轉化為更低階的HDL),但是採用C語言的設計工具(見下圖)還是可以更好地加快了這個設計過程。

為了加快硬體開發和支援疊代方式進行設計,Be Here設計了專用的開發板,允許通過連續的原型處理圖像資料,從現有的高解析度攝影機和安裝在高端個人電腦中的圖幀擷取卡開始(運行原型圖像變形和顯示軟體),然後進行更全面的圖像處理鏈,包括專門設計的整合了圖像變形的攝影機(在FPGA上運行)。顯示仍然在開發PC中完成──還是為原型設計服務的用途。

這種疊代方式的重要優點是能夠一次一個單元地改變設計(例如把演算法移至FPGA中)。在這個專案中,開發者從用原型的專用攝影機替代現成的攝影機開始,用開發卡把資料發送給圖幀擷取卡,好像它是現成的攝影機。這允許用新的鏡片系統驗證系統,而不會改變顯示鏈中的其他任何部分。軟體零件然後逐漸從軟體原型實現移至FPGA中,每個部分在進入下一步之前都會經過驗證。這種方式大大地縮短了除錯時間,降低了引入難以跟蹤的系統級錯誤的風險。</P></TD></TR>
<TR>
<TD class=text12 width=690 colSpan=2 height=40>
<DIV align=center><IMG src="http://www.eedesign.com.tw/article/94event/0503_newstyle/top.gif" border=0></DIV></TD></TR>
<TR>
<TD class=black122 width=690 bgColor=#f5f5f5 colSpan=2><IMG src="http://www.eedesign.com.tw/article/94event/0503_newstyle/e-img-1.gif"><b><FONT color=#009300>採用C語言的設計和原型工具加快開發</FONT></b>
採用混合硬體/軟體方案的試驗可能是耗時的過程,因為過去軟體發展方式和硬體設計(包括FPGA的設計)所需的低階方式之間是分割開的。在上述的例子中,最終的軟體/硬體設計是軟體和硬體原始檔案的集合,它們不易於通過單一的工具組進行編譯、模擬和除錯。另外,因為硬體設計過程是效率很低的,硬體和軟體設計週期可能是不同步的,系統介面和基本軟體/硬體劃分和演算法必須要較早地確定下來。

然而,隨著採用C語言的FPGA設計工具的發展,現在有可能對很大一部分的應用使用類似軟體的設計工具和標準C語言,尤其是那些本身就是演算法的設計部分,更是如此。後期的性能調整可能引入手工編寫的HDL程式碼替代自動產生的硬體(正如DSP用戶會用手工編寫的組合語言替代更高級的C程式碼)。因為設計能夠直接從C程式碼編譯成初始的FPGA實現,硬體工程師需要進行性能調整的時刻更推後了,總體上系統可以用更高生產力的軟體設計方法來設計。

像CoDeveloper&#8482;(來自Impulse Accelerated Technologies)這樣的工具允許C語言的應用編譯來設計硬體,以FPGA網表形式,也包括使用高度平行和多處理應用所需的C語言擴展。對於包括嵌入式處理器(如Altera的Nios軟式核心處理器)的目標平臺,CoDeveloper可以用來產生必要的硬體/軟體介面,及產生特定過程的低階硬體描述。

這些工具和硬體/軟體方法成功的關鍵一般是軟體和硬體處理資源的合理劃分。好的劃分策略不僅要考慮給定演算法零件的計算量需求,而且要考慮資料頻寬需求。這是因為硬體/軟體介面可能是主要的性能瓶頸。

利用適合於高度平行應用的編程模型也是很重要的。雖然用傳統的編程方法如遠端程序呼叫(RPC)把專門的功能交由FPGA處理是很好的,但是研究表明交替的資料流程導向的通訊方式是更有效率的,更不會給應用引入阻塞或造成鎖死。在一些情況下,這意味著要重新從整體考慮應用,尋找新的方式加快資料的搬移和處理。然而這麼做的結果是很有成效的,例如,通過增加應用層級的平行度,利用可編程應用資源的優勢,使得普通演算法比純軟體實現提高幾個數量級是可能的。

在這類應用的開發過程中(或重新設計),設計工具可以用來視覺化和除錯多個平行過程的互連性。例如,應用監視能夠提供應用和過程的整體情況,好像在標準C除錯器控制下。這種工具能夠確定代表應用瓶頸的高資料傳輸量的區域,幫助量化給定劃分方案的結果。當這些工具和類似的軟體性能分析方法相結合,允許特定區域的程式碼進行確定,獲得詳細的分析或進行性能調整。在開發後期週期精度或指令集模擬器的使用能夠幫助進一步最佳化應用。</TD></TR>
<TR>
<TD class=text12 width=690 colSpan=2 height=40>
<DIV align=center><IMG src="http://www.eedesign.com.tw/article/94event/0503_newstyle/top.gif" border=0></DIV></TD></TR>
<TR>
<TD class=black122 width=690 bgColor=#f5f5f5 colSpan=2><IMG src="http://www.eedesign.com.tw/article/94event/0503_newstyle/e-img-1.gif"><b><FONT color=#009300>範例:邊緣檢測圖像濾波器</FONT></b>
為了演示如何使用這類工具把演算法過程移到FPGA中,可以考慮圖像濾波的問題,在這個圖像濾波中輸入圖像資料流必須非常快地進行處理(一般是對一個「視窗」的相臨圖元進行一些定義的計算),產生轉換的圖像流。這種問題可能涉及大量的運算,但是也需要大量的頻寬。另外,最終的實現不必為了增加整體性能而犧牲資料傳輸量。

本範例中選用的特定的圖像處理演算法是圖像捲積演算法,它在一些圖像處理演算法中是關鍵的一個步驟,是這類其他圖像處理濾波器的代表。

我們使用CoDeveloper把原有的C程式碼轉換為適合於所選FPGA硬體編譯的版本,並對所需的C語言進行硬體編譯。我們利用Be Here的FPGA開發板(如上述)及Altera的標準Nios開發套件(使用Stratix和Cyclone FPGA)來完成這個試驗。

在這個測試中進行的指定的捲積是邊界檢測功能,它對3×3的視窗進行組合,處理來源圖像中的每個圖元。C語言描述的兩個流水線硬體過程來說明這個過程。一個過程從來源圖像(按圖元流讀出)產生一列匹配圖元,同時另一個過程接收第一個過程的結果,對每個圖元視窗進行捲積,產生輸出圖像,由第二過程輸出顯示的捲積圖元流來表示。過程和串流採用Impulse C函式庫中符合C語言的流式I/O副程式來聲明和讀寫。

因為演算法是用標準C語言(加上Impulse&#8482;函式庫),我們可以從軟體測試應用開始,它在桌面模擬環境上運行圖像演算法。這種測試應用把兩個和圖像捲積功能相關的過程和軟體測試平臺過程相結合(它能夠編譯和作為PC應用或Nios處理器上的嵌入式應用運行),從TIFF格式檔中讀取資料進行處理。這種測試被建立和用標準桌面除錯工具和CoDeveloper應用監視器(見下圖)來運行。在進入下一步和對目標FPGA平臺進行編譯之前,要驗證結果。
<P> </P>
<P align=center> </P>
<P align=center>圖二:應用監視有助於除錯和分析多種平行過程。
 </P></TD></TR>
<TR>
<TD class=text12 width=690 colSpan=2 height=40>
<DIV align=center><IMG src="http://www.eedesign.com.tw/article/94event/0503_newstyle/top.gif" border=0></DIV></TD></TR>
<TR>
<TD class=black122 width=690 bgColor=#f5f5f5 colSpan=2><IMG src="http://www.eedesign.com.tw/article/94event/0503_newstyle/e-img-1.gif"><b><FONT color=#009300>對硬體進行編譯</FONT></b>
用標準桌面工具模擬完功能之後,我們準備用Altera Stratix原型板在混合FPGA/處理目標上實現該應用。Altera Nios開發套件包括編譯、合成硬體和軟體(包括自動產生表示硬體過程的HDL原始碼和表示軟體測試過程的C原始碼)至FPGA目標所需的所有硬體和軟體。當和Impulse Codeveloper相結合時,Altera提供的軟體包括從我們的C原始檔案中編譯和執行測試應用所需的一切。

我們第一步是為圖像處理器本身的硬體。因此,我們在CoDeveloper工具中選擇Altera Nios平臺支援套件,處理相關的Impulse C原始檔。這會得到大約1200行的產生RTL和相關硬體/軟體介面原始檔。

接下來,用Altera Quartus統計創建一個新的專案,產生一個包括必要週邊的Nios處理器核心(使用Altera的SOPC Builder)。CoDeveloper的導出軟體和導出硬體特性把從CoDeveloper產生的硬體和軟體檔輸出到新創建的Quartus專案中。使用Altera模塊方框圖工具,我們通過Avalon晶片內匯流排把產生的硬體處理和Nios處理器相連接。

包括Nios處理器和產生硬體的完整的系統用Altera的Quartus工具進行合成。應用的軟體部分(標準C語言版的圖像濾波器和包括主函數的測試功能)也導入到Quartus項目中,使用包括在內的Nios編譯器進行編譯。

最後,用Altera工具產生bit檔,通過提供的平行埠纜線下載到平臺上,然後供電運行。聯合使用CoDeveloper和Altera提供工具的設計流程如下所示:
<P align=center> </P>
<P align=center>圖三:CoDeveloper從C原始碼產生可合成的硬體描述和硬體/軟體介面。</P>
<P> </P>
<P>
在本例中,兩個圖像濾波過程顯示了管線,結合由CoDeveloper C至硬體的編譯器自動產生的(過程級)管線可獲得每兩個FPGA時鐘週期的最佳的單圖元圖像處理速率,轉換為全512×512圖像大約需10ms的處理速度。

當然,任何在FPGA上實現的任何演算法的絕對性能要取決於I/O及演算法本身。我們的圖像濾波器測試例子中圖像資料從在Nios上運行的測試產生器,通過Avalon晶片內互連傳送到產生的FPGA硬體,它的有效傳輸量比上述的最大圖元率低很多。另一種演算法,圖元資料直接從FPGA硬體介面進行轉換,可以獲得和最佳結果最接近的結果。因此,考慮硬化劃分的頻寬限制是很重要的,可能的話在硬體進行測試。如CoDeveloper的工具能夠進行這樣的評估,試驗又快又容易。</P></TD></TR>
<TR>
<TD class=text12 width=690 colSpan=2 height=40>
<DIV align=center><IMG src="http://www.eedesign.com.tw/article/94event/0503_newstyle/top.gif" border=0></DIV></TD></TR>
<TR>
<TD class=black122 width=690 bgColor=#f5f5f5 colSpan=2><IMG src="http://www.eedesign.com.tw/article/94event/0503_newstyle/e-img-1.gif"><b><FONT color=#009300>結論</FONT></b>
現代的大規模FPGA已經驗證能夠勝任先進的大計算量的演算法和應用。因這些元件可以作為現有微處理器和DSP的補充(或替代)。最佳的軟體導向設計工具的發展使得FPGA作為軟體/硬體應用更受關注,大大地縮短了創建混合硬體/軟體原型的時間和減小其所需的專業性。</TD></TR></TABLE>
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-23 07:32 , Processed in 0.063559 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表