FPGA與數字信號處理基礎——(1)數值的表示和運算


最近學習過程中發現,使用Python和Matlab等純軟件實現數字信號處理算法時根本不需要考慮數值的表示,但是使用硬件實現時,還是有必要復習下之前學過的計算機知識。

 

 

(一)整數的二進制表示

  在二進制系統中,整數的表示可分為有符號數和無符號數兩種。

  無符號數表示的整數范圍:0-2^N-1,例如8位無符號數可表示的范圍0~255。

  有符號數,即整數不只有正整數,還有負整數,通常使用最高位來表示符號位,1:-,0:+。

(二)原碼、反碼、補碼

  對於有符號數而言,在進行二進制運算時采用原碼很不方便,所以對於二進制有符號數的運算都是采用補碼實現的。

(三)加法與溢出

  無符號數溢出,只需要看最高位是否有進位就可判斷是否溢出。

  有符號的溢出,正+正=負,負+負=正都可表明計算結果發生了溢出。

(四)定點數和浮點數

  (1)定點數:即小數位是固定的,固定的小數點位置決定了固定位數的整數部分和小數部分。

          圖1 單精度定點數的表示

 

  例:8位字長定點數,

  1) 11010.110,5個整數位,3個小數位,表示-5.25;

  2) 110.10110,3個整數位,5個小數位,表示-1.3125。顯然,對於固定字長的二進制數來說,整數位越大可表示的數值越大,相應的精度降低。

  (2)浮點數:浮點數可提供更大的動態范圍表示,且相比定點數具有更高的分辨率。

 

 

           圖2 單精度定點數的表示

  浮點數的存儲格式,一般按照標准 IEEE 754。

  IEEE 754 規定,浮點數的表示方法為:

  

  最高的 1 位是符號位 s,接着的 8 位是指數E,剩下的 23 位為有效數字 M,其實也就是二進制數的科學計數法吧,通常還有個偏置bias用來表示指數的正負,對於32位單精度

  浮點數,指數位8位,采用127作為bias,大於127取正,小於127取負。

  例如:

  5 DEC = 101 BIN = 1.01 x 2^2

  9 DEC = 1001 BIN = 1.001 x 2^3

  100 DEC = ‭01100100‬ BIN = 1.100100 x 2^6

  0.125 DEC = 0.001 BIN = 1 x 2^-3。

  浮點數到十進制數的轉換如圖:

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM