FPGA數碼訊號截位分析和位寬設計

2021-10-07 15:33:46 字數 2273 閱讀 3645

fpga數碼訊號截位分析和位寬設計

fpga資料在進行乘加過程中會面臨這資料位寬變大的問題,然而硬體資源是有限的,需要對資料最終位寬進行設計,這就會面臨著位寬的選擇和如何截位的問題。

對多位資料進行截位處理,是乙個從高量化精度向低量化精度的轉換過程,由於量化位數的減少,產生截位誤差,導致運算結果在時域上出現直流分量,頻域出現由諧波失真造成的尖峰,降低了訊號的無雜散動態範圍。

比如:模擬訊號經過16位adc量化後變為數碼訊號,且資料型別為整型,且均採用補碼形式表示如按照16 bit 量化,則15 =0000 0000 0000 1111;而-15=1111 1111 1111

0001。直接截位法是對資料直接截掉低位。以2 bit 截位為例,則15 截位後為0000 0000 0000 11=3,而-15 截位後為1111 1111 111100=-4。可以看出,在fpga 中採用直接截位法對資料進行截位,截位是按照向下取整的方式進行的,由截位導致的近似方式對正數和負數來言是不同的,即15/(22)=3.75≈3,而-15/(22)=-3.75≈-4,因此截位後的訊號會整體向下偏移,導致出現直流偏置,頻譜上表現為在0 頻出現誤差尖峰。對截位後的訊號,再進行變頻等處理,就會將尖峰搬移到其他的頻率。如果出現多次截位,則將增加誤差尖峰的個數,影響訊號產生和訊號處理的效果。因此在對訊號處理要求較高的場合,採用直接截位法是不合適的。

常見的截位方式有:1、負數直接截位後+1,就是所有數都按絕對值取floor

2、truncate:直接截位,就是正數取floor,負數按絕對值取ceil

3、rounding:捨入截位,就是所有數按絕對值取四捨五入

這三種截位方式都是可以的,其中捨入截位精度相對較高。而(《數碼訊號截位影響分析》-- 焦慶君,解劍)這篇**中的資料截位誤差抑制方法就是用的四捨五入的思想,通過加上或者減去乙個數來實現的,實現方法比較簡單,我個人也是用這種方法來進行資料的截位的。具體實現方式是:①

判斷資料的符號;② 如果符號為正,則將資料加上2^ (n-1);③ 如果符號為負,則將資料加上2^(n-1)-1;④ 截掉資料的低n 位。

在一些數字訊號處理的ip核中資料的截位也是可選的,一般選擇近似截位。

然而上述的幾種方法截位誤差基本上是可以滿足絕大多數需求,然而對特殊的要求時以上幾種方式難以滿足時,就需要對截位誤差進行特殊的設計。筆者根據自身專案的除錯經驗,總結出來乙個經過實際測試有效的方法。這個方法成為誤差傳遞。這裡設定進製上線為0.75,向下截位下線為0.25.如下圖所示

1、 若資料大於設定的則資料直接置1,如圖中b點,如果小於下線,則直接置0,如圖中a點。這裡的上線和下線是可以根據實際的需求進行調整的,但調整的原則是資料超出上下限的點的個數應當是一直的,並且上下限內的資料應當關於上下限中點對稱的。

2、 如果資料在上線和下線之間,則把資料直接截位,截下的資料與下乙個資料相加後再進行直接截位,這樣依次進行下去即可。即若l1+l2+l3=ls>1,則把資料點e置1,然後把ls-1=ld作為新的誤差傳遞下去,若ld+l4+l5>1則把g點置1,產生新的誤差繼續傳遞下去,如果ld+l4+l5<1,則繼續加入新的資料,判斷ld+l4+l5+l6是否大於1,直至產生大於1的那個點進行近衛,然後繼續把新產生的誤差進行傳遞。

通過誤差傳遞的方式在資料量相對大一些的情況下,使得訊號的原始值與截位後資料的值在時域上做差產生的差值是0,在頻域上也沒有引入低頻資訊。這種方式在實際的應用測試中很好用,因此就簡單的寫了出來,嚴格的證明畢竟麻煩,需要很大的篇幅來寫,這裡就不詳細寫了,但是這個結果是通過matlab**和實際的應用測試驗證的,是能直接用的。

在實際系統中存在著加和乘的運算,這樣就導致資料位寬發生變化,有時候為了保證資料的精度不進行截位,但硬體資源有限,適當的截位對最終結果影響較小,因此合理的位寬設計既要滿足精度要求也要滿足資源要求。

乙個典型的例子就是有限脈衝響應(fir)濾波器的設計就會面臨上面的問題。

假設濾波器系數字[15、17、-88、103、75、75、103、-88、17、15],輸入資料位寬位n,而輸出位寬最佳是如何設計呢?要想資料全精度的運算,針對上面的濾波器系數字寬應該為n+8(係數最大值103的有符號二進位制位寬)+4(係數個數的二進位制值)。然而在實際運算中通常先得到係數絕對值的和596,而596至少需要10位二進位制數表示,因此實際位寬設計為n+10。但是在係數較多或者運算次數較多的系統中,要求輸入位寬為n而輸出位寬為n+1時,就需要進行截位處理。合理的截位能提公升系統的實際執行效能,最佳的截位是定點的運算達到浮點運算的效果。

FPGA訊號截位策略研究

fpga訊號截位策略研究 在fpga中,隨著訊號處理的層次加深,對訊號進行乘 累加 濾波等運算後,可能輸入時僅為8位位寬的訊號會擴充套件成幾十位位寬,位寬越寬,占用的硬體資源就越多,但位寬超過一定範圍後,位寬的增寬並不會對處理精度帶來顯著的改善,這時就需要對訊號進行截位。寫過fpga hdl 的童鞋...

fpga資料位寬擷取 FPGA訊號截位策略研究

在fpga中,隨著訊號處理的層次加深,對訊號進行乘 累加 濾波等運算後,可能輸入時僅為8位位寬的訊號會擴充套件成幾十位位寬,位寬越寬,占用的硬體資源就越多,但位寬超過一定範圍後,位寬的增寬並不會對處理精度帶來顯著的改善,這時就需要對訊號進行截位。寫過fpga hdl 的童鞋都應該知道,截位是最為經常...

數碼訊號和模擬訊號

1.定義 1 數碼訊號 是指幅度的取值是離散的,幅值表示被限制在有限個數值之內。例如二進位製碼就是一種數碼訊號 二進位製碼受雜訊的影響小,易於由數位電路進行處理 2 模擬訊號 analog signal 是指在時域上數學形式為連續函式的訊號,可以取得連續值 2.聯絡 模擬訊號與數碼訊號的聯絡在於它們...