数字电路学习(1)——小数问题

小数

数字电路中,像是要计算FFT啊之类的,需要电路能处理的小数。一般分定点小数和浮点小数两种。

定点形式简单,量化后限定范围,只要在误差允许的情况下,且计算不会溢出。浮点较为复杂,运算需要专门设计的电路结构来实现,但具有表达范围大,动态分辨率的好处。

1.1定点小数

先上例子:8位有符号位,第4位为小数点位:
b1000.0000~b0111.1111即-8到7.9375
注意第一位是符号位,负数用补码形式表示。
假设,正数有m位,小数有n位。

实际上电路里哪有小数不小数,只有10之分,所以我需要对我的小数进行量化(也就是让他左移m位),乘2^n。

但是任意数值转2进制小数会有误差,比如用小数点后15位二进制表示0.3,乘2取整法为0.010 0110 0110 0110,
舍去之后的位数的操作叫截尾,数字电路中截尾操作就是连线就能实现。最大误差为2^-n。

1.2定点小数的运算

加法和减法,以加法为例,先进行移位:
a+b=(a+b)*2^n / 2^n
也就是先用正二进制数相加后右移。

乘法就比较复杂不多做分析,直接上结论:
W位二进制数相乘得到2W位,两个m.n相乘会得到2m.2n,对于数字信号处理简直是噩梦。
但好就好在(当年学半导体物理和老师学的口头禅),数字信号处理的数范围在-1到1之间,相当于m=1但是正数部份为0。相当于只有小数n位,所以相乘以后不用考虑它带来的截位误差,分辨率是2^-n
在这里插入图片描述
除法就不谈了用的不多,先挖个坑吧。

2.1浮点小数

就是各种什么double,float双精度单精度浮点数这种东西。

和十进制计数法类似
  ( 1 ) s f 2 E . \ (-1)^{s} *f*2^{E}\,.
具体可以看看IEEE的标准。

以上学习FPGA应用开发与仿真的记录

发布了2 篇原创文章 · 获赞 0 · 访问量 73

猜你喜欢

转载自blog.csdn.net/weixin_43093575/article/details/104010123