今天,數位訊號處理(Digital Signal Processing;DSP)在電子系統中的應用急速成長,對於高度連結多媒體世界永不滿足的追求,驅使DSP進入多樣不同應用領域,包含了無線通訊、電信、廣播視訊、個人運算、與車用多媒體等。當DSP變得越來越普遍之際,即使是高運算量需求的應用像是軟體無線電技術(software-defined radio)、雷達訊號處理、無線基地台,或指紋辨識都需要使用DSP於其中。
DSP的應用是如此快速又多樣化的發展,也暴露出現行處理器在今日應用中的限制,今日DSP應用需要極高度運算能力,遠比現行的標準處理器能達到要求的還要高。儘管獨立的DSP處理器提供了相當高的設計效率以及設計的相似性,然而認同需要用不同設計平台,才能跟上產品應用前進的腳步的設計師也不斷增加。由於現行的標準處理器欠缺數項關鍵優勢,因此FPGA正快速地變成許多以DSP為基礎系統實現平台的選項。
FPGA最高可以提供512個乘法器在同一塊基版上,相較於僅有一個乘法器的通用型DSP處理器,由主要的FPGA供應商所提供的FPGA有著高度平行化的特性,相較於僅依賴標準處理器的系統,使用具有DSP特性的FPGA系統展現了十倍的效能優勢。今日的FPGA具有快速的產品開發時間,具有高度彈性實現方法,還有具DSP特性的功能。這些也解釋了為什麼今日FPGA裝置正快速地取代DSP應用系統中的標準處理器,如(圖一)所示。
DSP系統設計師正著手從事FPGA發展程序,然而也發現了沒有人能保證可以成功建置一個設計;龐大又複雜的設計可能會超出一般設計流程所能負荷,效率與建置最佳化將會是一巨大挑戰。
系統架構工程師研究FPGA DSP系統架構設計時,有兩個最為困擾的問題,分別如下:
- ●將DSP的演算法轉換成硬體描述語言像是Verilog亦或是VHDL,都是一件耗時又容易出錯的工作,並且還需要特殊的DSP以及FPGA技術的專業知識;
- ●在演算法中的細微修改將可能對FPGA的建置造成極大影響。關鍵的設計方法特性將幫助設計者克服問題,獨立於各種製程之外的DSP資料庫和合成(synthesis)將可以讓設計者在演算法層級完成工作。
獨立於製程之外的特性
並非所有的設計資料庫(libraries)都被建立成相同的架構,舉例來說,那些由不同FPGA供應商提供的架構無法被移植到其他廠商的架構。同樣的,限定供應商的設計資料庫,也不是原來就設計成可以擴展他們的架構到所有可能的DSP應用。而且,可能也無法支援未來架構的改變。甚至,限定供應商的區塊讓製程設計陷入了泥沼,被不必要的建置細節牽絆。利用這些設計資料庫來實現一種設計往往無法提供最佳化的實現、重複使用性,以及設計效率。
因此,一種獨立於製程之外的DSP架構組合,是成功的FPGA DSP架構設計製程中之關鍵。獨立製程可被定義出兩個特性,一個是使用者自訂延伸,另一個則是可移植性。一個使用者自訂延伸的設計資料庫或是區塊組合提供了DSP運算函式的基本組成,使用者可以輕易的建立客制化且獨立於晶片提供者的高階函式。不像現行的設計資料庫,這樣的延伸區塊組合保有了DSP架構設計在演算法層級的切入點,這個架構並非用於定義任何的低階實現,像是如何使用內部儲存裝置、要用暫存器或是記憶體這樣的決定,或是乘法器和加法器要使用內建的數學運算處理器(MAC)或以邏輯線路建置?該層級所需要定義的參數只有高階特性,如濾波器的係數、是否需要增益等。
可移植性則被視為獨立於製程外資料庫的另一個重要優勢。使用延伸的設計區塊組合,DSP系統設計師可以只要實現演算法一次,例如先進先出記憶裝置(FIFO)是否在最新的製程裡提供?這並不是考量的項目。一套演算法可以被所有供應商任何的FPGA架構建置,而無需經過任何修改。如此一來,一個設計的壽命被延長了,而且隨時可以被移植到不同的架構、不同製程,與不同晶片供應商的產品。
使用獨立於製程外的DSP設計資料庫也可以對設計師的產能做出卓越貢獻。一個由一般DSP功能架構起來的設計,可在設計初期免除架構參數調整等不必要的妨礙。設計完成後,經由設計流程裡頭的DSP合成時的最佳化限制導向,這些功能將會被調整得更有效能,參數的延遲時間將會被納入計算,並不會耗費系統設計者的產能。
清楚的硬體建置與最佳化
DSP設計師通常希望能夠專注在設計製程上,並最小化硬體實現所耗費的時間。DSP架構設計師不會利用些特殊程式語言的技巧,只是讓DSP設計轉換成暫存器轉換階層(RTL)硬體描述語言,而他們也不需要。為了讓設計師的專業充分發揮,採用良好的FPGA設計方法是極度重要的,如此一來可以讓程式發展人員在不用注意硬體設計細節的情況下亦能得到所需的製程。
DSP特化的合成是DSP設計領域和FPGA硬體實現領域之間的關鍵連結,也提升DSP FPGA的可能性。另外,它也是FPGA-based DSP發展流程中的基本組成。該合成使得設計進入點可以在高層次的抽象階層,並自動分析最佳化的尺寸與效能。使用DSP合成時,設計師可以用他所熟悉的程式語言快速掌握一種設計,並且靠著自動化的合成分析技術提供特定範圍的可能結果。
FPGA為主的DSP設計發展建置流程是從無關供應商的高階模型開始,像是基於Synplicity的Synplify的DSP設計資料庫。在這個階段,設計可以被硬體建置,但卻不會影響系統架構。系統架構設計師在純製程之階段創造該模型,因此可以維持專注在設計高階的功能上,高階數值模擬環境像是MathWorks的Simulink自然可以處理DSP特殊的挑戰,像是多速率離散時間定義(multi-rate discrete time definition)以及浮點數模擬(floating-point simulations)。
一旦該模型發展完成,即可進行DSP合成。一個和DSP合成有著緊密接和的介面模組,讓設計者在即使設計已經被合成且完成最佳化的情況下,仍可在原始的程式碼中繼續工作,因為原始程式碼被保留的緣故,系統設計者可以不需考量硬體建置等議題,藉此確保忠實的原味設計。
進行合成之際,設計者必須定義出效能以及面積的限制,合成引擎必須應用智慧將合成參數選項以及合成演算法,創造出不同選項提供設計者評估選擇。舉例來說,若在某應用中,效能的考量是優先於面積的,那麼使用上百個乘法器在同一設計中也是情有可原的,這個設計可能是非常高速但也相當耗費面積。另一方面,優先考量面積的系統,像是手持裝置應用將會利用資源共享的方式來實現這樣的系統,並且犧牲部分的效能,最佳化分析必須要有限制導向的DSP合成技術,以及可以完整包含各種建置選項之製程支援。
DSP合成精巧的製作出一種消耗最少資源又能達到效能要求目標的架構,達到這些客觀的需要合成引擎應用最佳化的技術像是折疊(folding)運算到共享的資源、系統層次的時間最佳化(retiming)以及插入延遲等等,這個最終設計將會用與供應商無關的暫存器轉換層級(RTL)程式碼來產生。
剩下的步驟就是依照那些傳統的特殊應用晶片(ASIC),或是FPGA發展流程來設計FPGA為主的DSP元件。由DSP合成軟體所提供的高度最佳化RTL碼將備用於當成FPGA邏輯合成的輸入,也就是實現FPGA硬體。DSP合成和FPGA合成之間的緊密連結可以確保剩下流程中的步驟效能,並創造出最佳化的結果。
系統開發者於該DSP發展流程下,可避免犯下以往經常困擾設計者的常見錯誤,利用高階模組以及緊密連結的DSP合成介面,以往由DSP演算法轉移成硬體描述語言的難題可被徹底的解決;此外,緊密整合的DSP模型和合成階段裡,單一的原始碼在流程中維持不變。這意味著任何系統層級演算法的改變將會自動被建置於合成的RTL程式碼中,DSP設計工程師不需要知道架構,或是與供應商相關的技術細節。
DSP特化的FPGA正在快速演變成今日高度要求且多樣化的應用選項。應用和供應商無關的設計資料庫還有DSP合成,是成功且有效率地規劃出以FPGA為主的DSP設計流程之基礎。這些關鍵提供了在高階語言程式碼快速且準確最佳化設計的工具,並且隨時準備好可被重複使用,或被移植到未來更先進的不同FPGA架構上。有了這些能力在手,系統設計者現在可以得到強大的FPGA技術以達產品在市場上的競爭優勢。
---作者為Synplicity美商昕博科技資深技術行銷經理---