FPGA的最大優(yōu)勢之一是您能夠利用其嵌入式DSP模塊解決最棘手的數學傳遞函數。多項式近似法就是此方面的良方。
由于其靈活性與高性能,FPGA已經在眾多需要計算復雜數學題或傳遞函數的工業(yè)、科研、軍事及其它應用中找到用武之地??量痰木纫笈c計算時延在更關鍵的應用中并不少見。
在采用FPGA實現數學函數時,工程師一般選擇定點數學(參見:賽靈思中國通訊第80期的《FPGA數學基礎》, docs/xcell80/44?e=2232228/2002872 )。另外,您還可以采用CORDIC等許多算法計算超越函數(參見:賽靈思中國通訊第79期的《如何在FPGA中運用CORDIC算法》, publicaTIons/archives/xcel l/Xcell79.pdf )。
不過,在遇到極為復雜的數學函數時,與在FPGA之中實現精確需求函數相比,還有更高效的方法進行處理。為了理解這些變通方法 – 尤其是其中的多項式近似法,我們首先需要定義相關問題。
設置問題
FPGA中負責監(jiān)控鉑電阻溫度計(PRT)并把PRT電阻轉換成溫度的復雜數學傳遞函數就是這樣一個例子。這種轉換一般采用Callendar-Van Dusen方程實現。通過以下該方程的簡化形式,可以確定溫度介于0 ℃~660 ℃之間。
式中,R0 為0 ℃時的電阻,a 與b 是PRT的系數,而t 則是溫度。
現實中,我們希望從電阻轉換到溫度。為此,我們需要調整該方程,確保得出的結果是給定電阻下的溫度。大多數采用PRT的系統(tǒng)都會設計電子裝置、采用電子電路測量PRT的電阻,然后利用FPGA、通過調整后的下式計算溫度。
在FPGA中實現此方程即使是經驗豐富的FPGA工程師也會望而卻步。參考溫度繪制所獲得的電阻可以獲得圖1所示圖形。從圖中可以清晰看出響應的非線性。
直接在FPGA中實現調整后的傳遞函數會在實際所需設計工作量以及驗證方面面臨著巨大挑戰(zhàn)(確保精度以及跨邊界與極端條件函數)。許多工程師會想方設法實現函數,以便減少設計與驗證工作量,從而控制項目進度。一個可行的方法是采用查找表保存曲線中的一系列點,同時提供LUT所含點之間的線性插值。
根據相關精度要求和保存在查找表中的元素數量,這種方法有可能滿足需求。但是,您仍然需要在設計中包含線性插值函數。此函數在數學上非常復雜,而且往往包含一個非二次冪除法,其會進一步增加復雜性。
利用FPGA資源相反,您還可以利用另一種方法實現此類傳遞函數,那就是利用FPGA的本身特性。賽靈思 Spartan-6與7系列ArTIx、Kintex與Virtex等新型FPGA不僅僅只包含傳統(tǒng)查找表和觸發(fā)器,還具有內置DSP Slice、Block RAM、分布式RAM、PCIe®等眾多高級IP硬核以及以太網端點、高速串行鏈路等。
由于其提供的48位累加器,工程師通常把DSP Slice稱為DSP48s。不過,這些Slice還提供25 x 18位寬乘法器、加/減功能以及眾多其它功能。您可以利用這些內部RAM結構和DSP Slice更輕松實現傳遞函數。
多項式近似法利用FPGA具有豐富DSP與RAM的結構的一種方法是多項式近似法。為了使用此方法,您必須首先繪出數學函數圖,在MATLAB或Excel等數學程序中涵蓋輸入值范圍。然后您可以在相關數據集中添加多項式趨勢線,然后可以在FPGA中實現該趨勢線的等式,以取代復雜數學函數,只要趨勢線等式符合精度要求。
如果一個多項式方程無法針對整個傳遞函數輸入范圍提供足夠精度,則可以添加更多方程。只要生成一系列在相關輸入范圍使用的多項式常數,您就能夠繼續(xù)依賴此方法。
能夠添加多項式趨勢線的數學程序大部分都允許您選擇階次或多項式項的數量。階次越高,則配合越準確——但是您需要在FPGA中實現更多的項。在針對傳遞函數示例實施此過程時,我們是采用Microsoft Excel,我們已經獲得了圖2所示趨勢線與等式。本例中采用4次多項式方程。
在獲得了適合我們希望實現的傳遞函數的多項式之后,我們可以采用相同分析工具(在本例中為Excel)針對原始傳遞函數仔細檢查精度。在所述監(jiān)控溫度的例子中,最終測量精度可能會是+/-1?C,這并非苛刻的精度要求。盡管如此,根據測量范圍和您實現的傳遞函數,可能證實仍然很難僅用一個多項式方程實現。我們該如何解決這個問題呢?