该如何把浮点切换到16bit的定点来呢?

前言:如果说要在16bit定点环境上使用dsp算法,如iir构成的2p2z,会受到定点编程和量化精度的问题。如果说在float32环境上可以很容易进行编程,那切换到定点环境上就不得不得考虑这些问题。
通常情况下单精度浮点在小数点后的精度为1/(2^23),理论上使用32位定点iq24就可以覆盖单精度浮点的精度问题,但是在16bit上,使用i1.q15的方法来算,仅有1/(2^15)的精度,如果直接使用则会遇到量化精度引起的误差问题。那么该如何把浮点切换到16bit的定点来呢,下面将一步一步的来进行讨论。
s1 传递函数离散
离散化:
带入参数,并出归一化的z域传递函数,这里把分母的z^2提出来,然后全部除以其它的数字,即可得到:
s2 使用iq15的方法量化:
可见,a1项为最大,即可把全部数字除以a1项,让它用满15bit的字长,可得:
然后乘以2^15,得到:
s3 提升b系数:这里可以看到分子项上b0/b2的数字太小,所以为了提高量化精度,可以在b系数上继续扩大到2^12,这样可以更多的利用字长,最后在输出上除去引入增益即可。
可得b系数更新为。
然后考虑一下分母量化为32786时引入的增益:1.99998,在编程上考虑先左移1位然后再考虑小数点(32709/32678)即可引入增益。然后开始测试定点化后的pr控制器:
s4 测试:输入测试信号为50hz正弦波:
run,这里使用floor函数,进行向下取整来进行定点化:
s5 输出:可见定点和浮点的输出波形几乎接近,存在很小的误差,属于可以接受的量化精度。
小结:可见在充分利用上32768的精度后,pr控制器很好的运行在16bit环境上,如果是32bit的定点环境,则无需这么麻烦,直接使用i6q24即可达到单精度浮点的精度。

国行版HomePod怎么样 值不值得买
放大倍数可调的放大器的设计
热升华打印原理
楼道清洁机器人的系统设计方案,很酷很时尚有木有
双音和WCDMA调制阻塞的有效IM2分量评估
该如何把浮点切换到16bit的定点来呢?
敬自由:破壁人华为,开启PC的无界探索
如何判断是否需要使用分立式晶振和振荡器呢?
PLC控制系统实际使用的注意事项
西门子博途符号寻址的优势介绍
两款家用电器智能改造电路图解析
英特尔如何构建下一代超级计算芯片
国民技精选各领域代表展品及MCU开发生态亮相慕尼黑展
通友集团受邀参加昆山市税务局税收助力“专精特新”企业发展专场活动
TET PDF IFilter支持所有相关风格的PDF输入
一种三相反应式步进电机驱动器设计方法
展示超长待机能力 惠普首款智能手表曝光
新唐科技NCT5569D芯片简介
“墨子号”量子科学实验卫星提前实现全部三大既定目标
可燃气体报警器的运用和维护方式的详细介绍