浮點是最受歡迎的數(shù)據(jù)類型,可以保證算法建模和仿真的高精度計算。傳統(tǒng)上,當您想將這些浮點算法部署到FPGA或ASIC硬件時,您的唯一選擇是將算法中的每一個數(shù)據(jù)類型轉(zhuǎn)換為固定點,以節(jié)約硬件資源并加速計算。轉(zhuǎn)換到固定點降低了數(shù)學精度,有時在轉(zhuǎn)換過程中在數(shù)據(jù)類型的字數(shù)長度和數(shù)學精度之間實現(xiàn)正確的平衡是很困難的。對于需要高動態(tài)范圍或高精度的計算(例如設計有反饋環(huán)),定點轉(zhuǎn)換可能需要幾個星期或幾個月的工程時間。另外,為了達到數(shù)字精確度,設計師必須使用大的固定字形。
在本文中,我們將介紹數(shù)學作品?固有浮點 應用ir濾波器設計ASIC/FPGA的工作流程。然后,我們將回顧使用固定點的挑戰(zhàn),我們將比較使用單精度浮點和頻率權(quán)衡。固定地點。我們還將展示浮點和固定點的組合如何在減少實際設計中的轉(zhuǎn)換和實現(xiàn)時間的同時,給您提供更高的精度。您將看到直接在浮點建模是如何重要的,以及它如何在具有高動態(tài)范圍要求的現(xiàn)實世界設計中顯著減少面積和提高速度,這與人們普遍認為固定點總是比浮點更有效的想法相反。
本地浮點實現(xiàn):在引擎蓋下
HDL編碼器 實現(xiàn)了單精度算法,模擬的基礎數(shù)學在FPGA或ASIC資源(圖1)。生成的邏輯將輸入浮點信號解成符號、指數(shù)和尾數(shù)--分別為1、8和23位寬的單個整數(shù)。
圖1hdl編碼器如何映射一個單精度浮點乘法到定點硬件資源
生成的vhdl或Viilog邏輯然后執(zhí)行浮點計算(圖1所示情況下的乘法),方法是計算出由輸入符號位產(chǎn)生的符號位、數(shù)量乘法,以及計算結(jié)果所需的指數(shù)和相應的規(guī)范化。邏輯的最后一個階段將符號、指數(shù)和尾數(shù)打包回浮點數(shù)據(jù)類型。
解決固定點轉(zhuǎn)換的動態(tài)范圍問題
一個簡單的表達式,如(1-A)/(1+A),如果需要在高動態(tài)范圍內(nèi)實現(xiàn),可以通過使用單精度浮點自然地進行翻譯(圖2)。
Figure 2. Single-precision implementation of (1-a)/(1+a)
然而,在定點上實現(xiàn)同一方程需要許多步驟和數(shù)字考慮(圖3)。
Figure 3. Fixed-point implementation of (1-a)/(1+a)
例如,您必須將除法分為乘法和互易,使用近似方法,如牛頓-拉弗森或LUT(查找表)進行非線性的互變運算,使用不同的數(shù)據(jù)類型來仔細控制比特的生長,選擇適當?shù)姆肿雍头帜割愋?并使用特定的輸出類型和蓄電池類型來進行擴展和減數(shù)。
探討綜合投資報告執(zhí)行備選方案
讓我們來看看一個無限脈沖響應濾波器的例子。一個ir濾波器需要高動態(tài)范圍的計算與反饋環(huán),使它難以收斂在一個固定點量化。圖4A顯示了一個測試環(huán)境,該測試環(huán)境比較了三個版本的同一個IRR濾波器和一個噪聲的正弦波輸入。正弦波的幅值為1,增加的噪聲使幅值略有增加.
圖4A三個帶噪聲正弦波輸入的ir濾波器的實現(xiàn)
該濾波器的第一個版本是雙精度(圖4B)。第二個版本是單精度的。第三個版本是固定點實現(xiàn)(圖4c)。這個實現(xiàn)的結(jié)果是數(shù)據(jù)類型最多可達22位,其中一個位分配給符號,21位分配給分數(shù)。這個特定的數(shù)據(jù)類型留下0位來表示整數(shù)值,這是合理的,因為給定的刺激,它的值范圍總是在-1和1之間。如果設計必須使用不同的輸入值,則需要在定點量化時考慮到這一點。
圖4BIir_篩選器實現(xiàn),用雙重精確數(shù)據(jù)類型顯示圖4c使用固定點數(shù)據(jù)類型的Iir_菲爾特_固定執(zhí)行
建立了測試環(huán)境,以比較單精度和定點濾波器的結(jié)果與被認為是黃金參考的雙精度濾波器。在這兩種情況下,精度的損失都會產(chǎn)生一定的誤差.問題是,該錯誤是否在我們應用程序的可接受容忍范圍內(nèi)。
當我們跑的時候?固定點設計師 為了執(zhí)行轉(zhuǎn)換,我們指定了1%的誤差公差.圖5顯示了比較結(jié)果。單精密版的誤差在10左右。 -8 ,而定點數(shù)據(jù)類型的錯誤約為10 -5 .這在我們指定的誤差范圍內(nèi).如果您的應用程序需要更高的精確度,您可能需要增加固定的單詞長度。
圖5模擬結(jié)果比較了雙精度IRR濾波器結(jié)果與單精度結(jié)果(上)和固定點結(jié)果(下)
這種量化融合需要硬件設計的經(jīng)驗,對可能的系統(tǒng)輸入的全面理解,明確的精度要求,以及來自定點設計師的一些幫助。如果這有助于縮小生產(chǎn)部署的算法,那么這個努力是值得的。但是,在需要簡單部署到原型硬件的情況下,或者在精確性要求使減少物理足跡變得困難的情況下,怎么辦?在這些情況下,一個解決方案是使用單精度本地浮點。
用本地浮點簡化流程
使用本地浮點有兩個好處:
· 您不需要花費時間試圖分析所需的最小比特數(shù),以保持各種各樣的輸入數(shù)據(jù)的足夠精確性。
· 單精度浮點操作的動態(tài)范圍在32位的固定成本下更有效率。
現(xiàn)在,設計過程要簡單得多,而且您知道,用符號、指數(shù)和尾數(shù)的位,您可以表示廣泛的動態(tài)數(shù)字范圍。圖6中的表比較了使用圖5中所示數(shù)據(jù)類型選擇的浮點資源利用情況和ir篩選器的定點實現(xiàn)情況。
圖6ir濾波器的定點和浮點實現(xiàn)的資源使用比較
當您比較從浮點和固定點實現(xiàn)中獲得的結(jié)果時,記住浮點計算比簡單的固定點算法需要更多的操作。使用單精度將導致在部署到FPGA或ASIC時使用更高的物理資源。如果電路區(qū)域是一個問題,那么您將需要交換更高的精度和資源使用。您也可以使用浮點和固定點的組合減少面積,同時保持單精度,以實現(xiàn)高動態(tài)范圍的數(shù)字密集計算。