0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:开关电源仿真与实用设计 作者:杨帅锅 2023-05-02 14:23 次阅读

前言:如果说要在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
    dsp
    +关注

    关注

    544

    文章

    7687

    浏览量

    344398
  • 控制器
    +关注

    关注

    112

    文章

    15241

    浏览量

    171247
  • 数字信号处理

    关注

    15

    文章

    520

    浏览量

    45304
收藏 人收藏

    评论

    相关推荐

    #28335 浮点/定点 运用

    大家好, #28335以浮点支持而著称,但同时可以支持定点;不知道大家在实际使用过程中,更多地是使用定点,还是浮点?各有哪些优劣
    发表于 03-23 11:12

    求助arm编译器16bit的内存数据的访存改成了2次8bit的访存

    最近在学习网卡驱动的编写,调试的时候发现接收数据的时候隔了16bit(本身的读写宽度是16bit),查看反汇编文件发现编译器在编译的时候读取16bit数据的一次操作分成了2次8
    发表于 04-18 09:50

    McASP采集这样的时序,是按照16bit采集,还是32bit采集?从Linux用户空间看,采集进来的数据是16bit还是32bit

    McASP;2. FrameSync是高电平时长32个bit,低电平时长32个bit;3. 有效数据是左对齐,时长16bit;问题是这样的:1. McASP采集这样的时序,是按照
    发表于 05-28 10:22

    dm8127 YCbCr 16bit 输入?

    dm8127 的Camera Interface (I/F)支持YCbCr 16bit的吗? 9.12 Imaging Subsystem (ISS) Parallel Camera (CAM
    发表于 05-28 06:14

    6618虚拟定点数学库IQmath

    慢一倍,不知道什么原因?另外C64+系列的定点虚拟库中,有定义16bit数据的类型,但没有想过不同Q值得运算函数。怀疑是不是数据长度依旧采用32bit所以速度没有显著提升。求大神解答! 1、C6618
    发表于 06-21 11:23

    请教关于在程序执行中定点运算和浮点运算的切换问题

    编译选项选择6700+。定点浮点结合可以在-mv编译选项选择6748。现在我想写一段程序,这段程序先用浮点运算计算一个公式,算完之后再用定点运算计算这个公式,请问我
    发表于 08-02 08:54

    请问如何正确测量AD7988-5 16bit ADC DC&AC performance?

    10KHz,但是量测结果较差,SNR只有74dB,noise floor较高。怀疑是信号源不能满足测试需求,那请教如何正确测量16bit ADC DC&AC performance?
    发表于 10-09 16:08

    32位浮点怎么转换成16定点

    如题,32位浮点怎么转换成16定点我用了强制转换但发现转换前后数值不一样了
    发表于 05-05 12:24

    32bit MCU与16bit MCU的区别是什么

    bit 为一组。结论:不管是16-bit 还是 32-bit 的MCU,地址对应的最小单元都是1个byte,它们的区别在于一次访问的最大内存是 32bit 还是
    发表于 11-01 07:12

    spi通信中8bit的新芯片接收16bit

    1、用EFM8L芯片作为spi从设备,接收16bit的数据,数据速率达到8M。数据手册上芯片spi支持高达12M速率。现在通过两次中断数据放在数组中,凑成
    发表于 12-21 11:17

    定点数和浮点数的区别是什么

    的傅里叶变换后的数据,那么,选择正确的处理方式时,首先要解决的是定点数和浮点数的问题。如果使用过单片机的同学,一定会知道定点运算和浮点运算两个概念,那么,
    发表于 02-21 07:22

    定点dsp浮点运算教程

    定点dsp浮点运算的多媒体视频教程:
    发表于 01-24 09:14 50次下载
    <b class='flag-5'>定点</b>dsp<b class='flag-5'>浮点</b>运算教程

    16Bit Group Ripple Adder

    16Bit Group Ripple Adder。
    发表于 03-21 15:07 0次下载

    32bit MCU 与 16bit MCU 的 区别

    ,32个bit 为一组。结论:不管是16-bit 还是 32-bit 的MCU,地址对应的最小单元都是1个byte,它们的区别在于一次访问的最大内存是 32bit 还是
    发表于 10-25 16:36 11次下载
    32<b class='flag-5'>bit</b> MCU 与 <b class='flag-5'>16bit</b> MCU 的 区别

    16定点数字信号处理编程是怎么思考的

    通常情况下单精度浮点在小数点后的精度为1/(2^23),理论上使用32位定点IQ24就可以覆盖单精度浮点的精度问题,但是在16bit上,使用i1.q15的方法来算,仅有1/(2^15)
    的头像 发表于 02-08 15:11 660次阅读
    <b class='flag-5'>16</b>位<b class='flag-5'>定点</b>数字信号处理编程是怎么思考的