数字电路学习(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}\,.  (1)sf2E.
具体可以看看IEEE的标准。

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值