前言:如果说要在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即可达到单精度浮点的精度。
-
dsp
+关注
关注
554文章
8060浏览量
350862 -
控制器
+关注
关注
112文章
16487浏览量
179802 -
数字信号处理
+关注
关注
16文章
563浏览量
46055
发布评论请先 登录
相关推荐
PCM1794A I2S 16bit数据不出声音的原因?
求助arm编译器把16bit的内存数据的访存改成了2次8bit的访存
McASP采集这样的时序,是按照16bit采集,还是32bit采集?从Linux用户空间看,采集进来的数据是16bit还是32bit?
dm8127 YCbCr 16bit 输入?
6618虚拟定点数学库IQmath
请教关于在程序执行中定点运算和浮点运算的切换问题
32bit MCU与16bit MCU的区别是什么
spi通信中8bit的新芯片接收16bit用
定点程序会是什么样?为什么要进行定点仿真呢?
32bit MCU 与 16bit MCU 的 区别
![32<b class='flag-5'>bit</b> MCU 与 <b class='flag-5'>16bit</b> MCU 的 区别](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
16位定点数字信号处理编程是怎么思考的
![<b class='flag-5'>16</b>位<b class='flag-5'>定点</b>数字信号处理编程是怎么思考的](https://file.elecfans.com/web2/M00/8F/35/poYBAGPjSseAVCgBAAB6lmrspYI027.jpg)
AD9088: 阿波罗MxFE Octal, 16Bit, 16PSS RF DAC和Octal, 12Bit, 8 PSS RF ADC初步数据表 ADI
![AD9088: 阿波罗MxFE Octal, <b class='flag-5'>16Bit</b>, <b class='flag-5'>16</b>PSS RF DAC和Octal, 12<b class='flag-5'>Bit</b>, 8 PSS RF ADC初步数据表 ADI](https://www.elecfans.com/uploads/190218/2927106-1Z21P94211255.png)
评论