FPGA 101:計算複雜數學函數

2021-01-08 電子產品世界

由於其靈活性與高性能,FPGA已經在眾多需要計算複雜數學題或傳遞函數的工業、科研、軍事及其它應用中找到用武之地。苛刻的精度要求與計算時延在更關鍵的應用中並不少見。

本文引用地址:http://www.eepw.com.cn/article/201610/308461.htm

在採用FPGA實現數學函數時,工程師一般選擇定點數學(參見:賽靈思中國通訊第80期的《FPGA數學基礎》,http://issuu.com/xcelljournal/ docs/xcell80/44?e=2232228/2002872)。另外,您還可以採用CORDIC等許多算法計算超越函數(參見:賽靈思中國通訊第79期的《如何在FPGA中運用CORDIC算法》,http://china.xilinx.com/ publications/archives/xcel l/Xcell79.pdf)。

不過,在遇到極為複雜的數學函數時,與在FPGA之中實現精確需求函數相比,還有更高效的方法進行處理。為了理解這些變通方法 – 尤其是其中的多項式近似法,我們首先需要定義相關問題。

設置問題

FPGA中負責監控鉑電阻溫度計(PRT)並把PRT電阻轉換成溫度的複雜數學傳遞函數就是這樣一個例子。這種轉換一般採用Callendar-Van Dusen方程實現。通過以下該方程的簡化形式,可以確定溫度介於0°C~660°C之間。

式中,R0 為0°C時的電阻,a 與b 是PRT的係數,而t 則是溫度。

現實中,我們希望從電阻轉換到溫度。為此,我們需要調整該方程,確保得出的結果是給定電阻下的溫度。大多數採用PRT的系統都會設計電子裝置、採用電子電路測量PRT的電阻,然後利用FPGA、通過調整後的下式計算溫度。

在FPGA中實現此方程即使是經驗豐富的FPGA工程師也會望而卻步。參考溫度繪製所獲得的電阻可以獲得圖1所示圖形。

從圖中可以清晰看出響應的非線性。

溫度與電阻

圖1 – 傳遞函數圖

直接在FPGA中實現調整後的傳遞函數會在實際所需設計工作量以及驗證方面面臨著巨大挑戰(確保精度以及跨邊界與極端條件函數)。許多工程師會想方設法實現函數,以便減少設計與驗證工作量,從而控制項目進度。一個可行的方法是採用查找表保存曲線中的一系列點,同時提供LUT所含點之間的線性插值。

根據相關精度要求和保存在查找表中的元素數量,這種方法有可能滿足需求。但是,您仍然需要在設計中包含線性插值函數。此函數在數學上非常複雜,而且往往包含一個非二次冪除法,其會進一步增加複雜性。

利用FPGA資源

相反,您還可以利用另一種方法實現此類傳遞函數,那就是利用FPGA的本身特性。賽靈思 Spartan-6與7系列Artix、Kintex與Virtex等新型FPGA不僅僅只包含傳統查找表和觸發器,還具有內置DSP Slice、Block RAM、分布式RAM、PCIe®等眾多高級IP硬核以及乙太網端點、高速串行鏈路等。

由於其提供的48位累加器,工程師通常把DSP Slice稱為DSP48s。不過,這些Slice還提供25 x 18位寬乘法器、加/減功能以及眾多其它功能。您可以利用這些內部RAM結構和DSP Slice更輕鬆實現傳遞函數。

多項式近似法

利用FPGA具有豐富DSP與RAM的結構的一種方法是多項式近似法。為了使用此方法,您必須首先繪出數學函數圖,在MATLAB或Excel等數學程序中涵蓋輸入值範圍。然後您可以在相關數據集中添加多項式趨勢線,然後可以在FPGA中實現該趨勢線的等式,以取代複雜數學函數,只要趨勢線等式符合精度要求。

如果一個多項式方程無法針對整個傳遞函數輸入範圍提供足夠精度,則可以添加更多方程。只要生成一系列在相關輸入範圍使用的多項式常數,您就能夠繼續依賴此方法。

能夠添加多項式趨勢線的數學程序大部分都允許您選擇階次或多項式項的數量。階次越高,則配合越準確——但是您需要在FPGA中實現更多的項。在針對傳遞函數示例實施此過程時,我們是採用Microsoft Excel,我們已經獲得了圖2所示趨勢線與等式。本例中採用4次多項式方程。

在獲得了適合我們希望實現的傳遞函數的多項式之後,我們可以採用相同分析工具(在本例中為Excel)針對原始傳遞函數仔細檢查精度。在所述監控溫度的例子中,最終測量精度可能會是+/-1C,這並非苛刻的精度要求。儘管如此,根據測量範圍和您實現的傳遞函數,可能證實仍然很難僅用一個多項式方程實現。我們該如何解決這個問題呢?

根據輸入值選擇的多條趨勢線

如果一個多項式方程無法針對整個傳遞函數輸入範圍提供足夠精度,則可以添加更多方程。只要生成一系列在相關輸入範圍使用的多項式常數,您就能夠繼續使用此方法。因此,一旦輸入值超出特定範圍,則加載一個新的常數集合。

圖2 – 用於溫度傳遞函數的趨勢線與多項式方程

聚焦溫度與電阻

圖3 – 可提供更準確結果的269C~300C繪圖

下面繼續探討溫度例子,第一個多項式方程可以在0C~268C範圍內提供+/-1C的精度。對於許多應用此精度已經足夠。假設我們需要達到300C的更廣泛運行範圍與容差,則意味著我們最初的方法無法滿足設計要求。利用分段方法我們能夠解決上述問題,即繪出269C~300C範圍的圖形並且獲得能夠為此輸出範圍提供更高精度的不同多項式方程(見圖3)。

總之,此實現方法採用第一套多項式常數,直到輸入值超出與268C對應的預先計算範圍。超出該範圍之後則採用第二套常數保持精度要求。

這樣您就能夠把傳遞函數分為一系列片段,以便達到預期精度。您可以選擇跨傳遞函數均勻分隔這些片段,也就是說,可以把它們分為均等於X的10分段。另外,您也可以不均勻分隔,而是按實現所需精度的要求進行分段,集中精力關注較難達到精度的傳遞函數部分。

就決定您實現方案時需要考慮的利弊權衡而言,應當牢記的是均勻方法比非均勻方法會佔用更大的內存空間。根據您所實現的傳遞函數,採用非均勻方法可能會節省大量資源。

如何對比?

當然,如前所述,其它方法也可以用於實現傳遞函數。多項式近似法之外最常用的四種方法分別是軟體程序、查找表、帶插值的查找表以及CORDIC。

由於需要添加處理器(會相應增加設計複雜性、材料清單成本等),採用軟體計算傳遞函數會使系統架構複雜化。即使設計團隊採用賽靈思Zynq-7000 All Programmable SoC等片上系統彌補上述缺陷,仍然會存在難題。對新手而言,用軟體計算傳遞函數比在邏輯電路中實現需要花費多得多的時間,從而會降低系統響應時間。事實上,傳遞函數(諸如我們示例設計中所用的)的計算是一個典型的例子,應該由Zynq SoC可編程邏輯端負責處理。

第二種方法(即採用含有輸入預算值的查找表)的效果隨輸入值範圍與寬度變化而改變。有時會很快造成非常龐大的LUT,其會佔用FPGA內部大量的RAM容量。根據相關FPGA,此方法可能需要的資源供不應求,也有可能造成與設計中其它模塊竟用資源。當然,這種方法的有利之處是能夠很快算出結果。

第三種潛在方法(帶插值的查找表)是我們前面談到過的一種方法,它試圖減少整套LUT方法所需的內存位置數量。此方法需要工程師在FPGA內編寫線性插值函數,而這項工作多少有點棘手。不過,它仍然比CORDIC這個最後選項簡單得多。

CORDIC算法能夠實現超越函數,如:正弦、餘弦、乘法、除法、平方根等。因此,利用CORDIC算法與基本數學模塊的組合能夠準確實現傳遞函數。此方法可以實現更高精度。但是,對於複雜的傳遞函數,這種好處需要付出增加設計與驗證時間的代價。當然這對採用該方法實現的器件的工作頻率會有影響。

因此,多項式近似法是四種備選方案的折中,其能夠很好地平衡性能、精度與實現資源佔用。

實現簡便性

每位工程師都希望創造出能夠最佳利益器件資源的FPGA。多項式近似法使您能夠受益於FPGA提供的豐富乘法器與RAM環境,同時能夠利用這些資源輕鬆實現看似極其複雜的數學傳遞函數。

相關焦點

  • 如何在 FPGA 上實現雙線性插值的計算?
    用數學課本上的話來說,兩個變量之間存在一次方函數關係,就稱它們之間存在線性關係。可能這麼說有些太抽象,下面舉個生活中的例子來形象地說明一下線性插值。如下圖所示,女朋友每周生氣次數和男生的直男程度是線性相關的。已知A男生直男程度為1,女朋友每周生氣次數為4千次。另外一個B男生,直男程度為5,女朋友每周生氣的次數為6千次。
  • fpga應用領域_fpga應用三個主要方向
    並發是指重複分配計算資源,使得多個模塊之間可以同時獨立進行計算。那麼fpga的應用領域有哪些呢?主要的方向又是什麼呢?具體的跟隨小編來了解一下。   第二個方向,可以稱為數位訊號處理方向或者數學計算方向,因為很大程度上這一方向已經大大超出了信號處理的範疇。例如早就在2006年就聽說老美將FPGA用於金融數據分析,後來又見到有將FPGA用於醫學數據分析的案例。在這一方向要求FPGA設計者有一定的數學功底,能夠理解並改進較為複雜的數學算法,並利用FPGA內部的各種資源使之能夠變為實際的運算電路。
  • 【數學】對數函數
    17世紀正處於數學發展史的第三時期-變量數學時期。到今天依舊帶著17世紀溫度的羊皮紙留下了複雜的圖形和對數方程。這也說明了當時指數函數還並沒有出現。17世紀的歐洲,由於航海和天文學的發展,計算越來越複雜,處理的的數字也越來越大。為了回應這個時代的呼應,對數作為計算工具被納皮爾發明。
  • 基於FPGA+MATLAB的串行多階FIR濾波器設計
    摘要 FIR濾波器的設計分為濾波器係數計算和濾波器結構的具體兩個部分。本文引用地址:http://www.eepw.com.cn/article/236081.htm關鍵詞 FPGA;FIR數字濾波器;Matlab;仿真數字濾波器是用於過濾時間離散信號的數字系統,通過對抽樣數據進行數學處理達到頻域濾波的目的。
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    機器人聽覺系統主要是對人的聲音進行語音識別並做出判斷,然後輸出相應的動作指令控制頭部和手臂的動作,傳統的機器人聽覺系統一般是以pc機為平臺對機器人進行控制,其特點是用一臺計算機作為機器人的信息處理核心通過接口電路對機器人進行控制,雖然處理能力比較強大,語音庫比較完備,系統更新以及功能拓展比較容易,但是比較笨重,不利於機器人的小型化和複雜條件下進行工作,此外功耗大、成本高。
  • 採用FPGA實現多種類型的數位訊號處理濾波器
    濾波器是任何信號處理系統的關鍵組成部分,隨著現代應用的日趨複雜,濾波器設計的複雜程度也日益提高。採用 FPGA 設計和實現的高性能濾波器的能力是模擬方法所望塵莫及的。
  • 浙江大學基礎數學、計算數學,概率論與數理統計專業招生目錄
    070101▲☆基礎數學 060理學部 69 ①101政治②201英一③601高等代數④819數學分析
  • 什麼是計算數學?​計算數學是一門應用科學,是數學的一個分支
    在經濟建設、國防建設和科學研究中經常遇到複雜的常微分方程、偏微分方程、積分方程或階數很高的線代數問題方程組,這些問題往往是無法用解析方法求出精確解的,只能用計算數學的方法,在電子計算機上求出數值近似解。特別是有很多新的、複雜的科學技術提出的計算間題,目前還沒有成熟的計算方法,必需探討和尋求新的方法由此可見,計算方法的研究在解決實際計算問題中經常起著關鍵性的作用。
  • 基於Spartan-6 FPGA的Sinc3 Filter設計
    Sinck濾波器的傳遞函數為:          將z用e-jω代替後,得到其傳遞函數的頻率響應為:        濾波器相關文章:濾波器原理 fpga
  • 精選中小學常用Python數學函數
    Python中有很多重要的函數,來滿足不同領域和工作的使用需求。Runse總結了一些Python在中小學常用Python數學函數,下面,我們一起來學習一下中小學常用的一些函數。利用這些函數,我們可以實現很多數學問題的自動化處理。知識講解1. 比較運算比較大小相等之類的數學關係,可以使用比較運算符2.
  • 用FPGA實現FFT算法
    引言  DFT(Discrete Fourier Transformation)是數位訊號分析與處理如圖形、語音及圖像等領域的重要變換工具,直接計算DFT的計算量與變換區間長度N的平方成正比。
  • 谷歌推出函數計算器 可繪製數學函數圖
    網易科技訊 12月6日消息,國外媒體報導,谷歌工程師Adi Avidor今日在博客中寫道,谷歌已在其搜索結果頁面中增加了函數計算器功能,用戶只要在谷歌搜索框中輸入需要計算的數學函數,搜索結果頁面頂部就會反饋相應的圖形表達式。
  • 基於FPGA的複數浮點協方差矩陣實現
    但是FPGA不適宜對浮點數的處理,對複雜的不規則計算開發起來也比較困難。故目前國內外協方差運算的FPGA實現都是採用定點運算方式。 在所有運算都是定點運算的情況下,每次乘法之後數據位寬都要擴大一倍。若相乘後的數據繼續做加減運算,為了保證數據不溢出,還必須將數據位寬擴展一位,而協方差矩陣的運算核心就是乘累加單元,隨著採樣點數的增加,位寬擴展呈線性增加。
  • 詳解:數學老師如何用101教育PPT讓學生秒懂知識難點
    101教育PPT就是這樣一款專門服務於老師的備授課軟體。除了海量的課件、教案、習題資源以外,101教育PPT還提供與學科知識點相匹配的教學工具,能夠將複雜、抽象的知識可視化演示,讓學生秒懂知識點。下文將針對小學數學課堂中一些具有代表性的重難點,分析101教育PPT給出的對應解決方案,供老師們參考。
  • 數學難題的剋星,3款專業數學計算軟體推薦
    數學計算難嗎?有了這3款專業數學計算軟體,你的數學難題迎刃而解有些同學可能覺得數學很難學,數學題目很難,今天給大家推薦3款數學類的應用程式,相信你用了之後,你對數學會充滿信心。1.GeoGebra是一套包含處理幾何、 代數、微積分、概率統計、數據表、圖形、計算等功能的動態數學軟體。它是由奧地利數學家 Markus Hohenwarter以及其國際開發團隊,為了讓全世界的校園都可以免費使用動態數學軟體而共同開發的自由開源軟體。
  • 基於FPGA IP核的FFT實現
    式(3)~式(6)中:m表示第m級蝶形算法;k為數據所在的行數;N為所要計算的數據的點數;WN為旋轉因子。2 FFT兆核(IP)函數 FFT Core支持4種I/O數據流結構:流(Stream-ing)、變量流(Variable Streaming)、緩衝突發(BufferedBurt)、突發(Burst)。流結構允許輸入數據連續處理,並輸出連續的複數據流,這個過程不需要停止FFT函數數據流的進出。變量流結構允許輸入數據連續處理,並產生一個與流結構相似連續輸出數據流。
  • 如何在FPGA中實現狀態機
    Moore狀態機的輸出僅為當前 狀態的函數。典型的例子就是計數器。而Mealy狀態機的輸出是當前狀態和輸入的函數。典型的例子就是Richards控制器。  定義狀態機  當需要定義一個狀態機時,首先要繪製一張狀態圖。狀態圖可用來顯示狀態、狀態間的轉換和狀態機的輸出。
  • 考研數學:六大絕技在手,函數極限不用愁
    眾所周知,函數求極限是高等數學中最基礎的內容,並且是每年考研數學的必考內容。所以各位考生一定要將極限問題琢磨透了,才能保證在這類考察基礎知識的題目上不丟分。 ;也有的題目是間接涉及到求極限問題,例如2012年數學一的1題是要求曲線漸近線的條數,求曲線漸進線最終還是通過求函數極限來達到的。這兩類題目在歷年考研數學試題中出現的頻率都很高,求極限的方法一定要熟記於心、熟練掌握,不可輕視!
  • 基於FPGA的巴特沃茲IIR數字帶通濾波器設計
    3.Matlab仿真針對式(1)所描述的系統模型,利用Matlab軟體工具箱函數freqz(b,a,N,Fs)繪製出其幅頻特性和相頻特性,以檢驗參數的正確性。該濾波器的幅相頻率特性如圖1所示。4.FPGA設計4.1 濾波器的結構同一系統函數的IIR濾波器可以用不同的結構來實現,如直接I型、直接II型(典範型)、級聯型和並聯型。不同的結構有不同的特點,為便於硬體實現及容易確定數據位數,本文選用直接I型這一結構形式。系統的直接I型結構如圖2所示。
  • 被拉普拉斯評價為延長了天文學家壽命的對數函數——圖解數學系列
    其中對數的發現,曾被18世紀法國大數學家拉普拉斯評價為"用縮短計算時間在實效上讓天文學家的壽命延長了許多倍".為什麼會有這種說法呢? 那是因為在那個時代, 特別對天文學而言, 對數的出現使得複雜易錯的計算變得簡單可靠, 並且在便攜計算器和計算機發明之前, 它一直被廣泛應用在數學計算之中, 也是數學家的基本技能. 這次讓我們來看下對數以及如何用它來簡化計算.