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