Fixed point 设计

单片机的浮点与定点

》市面上大部分的单片机都是定点单片机,只有一些对数据处理要求比较高的单片机才会集成浮点处理单元。

  • 浮点单片机:便于浮点编程,省去了人为定标的麻烦,而且同样的位数,浮点可以表示更大范围内的数。但浮点单片机硬件复杂、功耗更大,价格也会相应高些;
  • 定点单片机:定点运算处理效率高、大小更小、功耗更低、内存占用小,但需要人为地给各个数据定标。

工程算法开发流程

image

选择合适的定标值,以确保运算结果在符合应用要求的范围之内,这是定点化过程中最重要也是最难的一个问题。

选取合适的定标值(加载操作数)

  • 定标的大小,影响着整数部分和小数部分的位数,定标的过程其实是在操作数动态范围和精度之间做权衡的过程:Q小,则表示范围大;Q大,则精度高。
  • 设一个变量可能出现的最大绝对值为 | max|,n 为正整数,满足 2^(n-1) < |max| < 2^n,则定标 Q 按如下规则选取最合适:
Q = 有效数据位 – n

对于 32 位的有符号数,数据有效位 = 31。如 | max| = 2.75,选 Q = 31 – 2 =29 是最合适的。

结果重新定标(返回结果)

个定点数运算完成之后,所得结果的定标、动态范围、精度要求等都可能发生了变化,因此可能需要进行重新定标。
比如 Q15*Q15 -> Q30,但我们依然希望得到一个 Q15 的数怎么办?其实只需做一个简单的右移 15 位操作就好,其它情况同理。

定点与浮点芯片相互支持

  • 浮点芯片均能支持定点运算,只是在一般定点芯片的基础上添加了额外的浮点处理硬件单元和指令,使得芯片得以支持快速的浮点运算;
  • 定点芯片也能支持浮点运算。很多编译器都为定点芯片提供了相应的浮点处理库,通过软件的方式同样来支持 float 型变量的操作。但这样做会使计算变得很低效在实时性要求高的情况下,定点化依然是必不可少的一环。

参考文献

1.嵌入式编程中,你应该知道的定点化知识
2.使用定点硬件的好处

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 定点小数运算 来自:http://www.eepw.com.cn/article/17893.htm 在DSP世界...
    郝宇峰阅读 13,152评论 0 2
  • reference: 而定点与浮点在《计算机组成原理》有很详细的说明,但是电子专业的学生只学《单片机》,而《单片机...
    Zz鱼丸阅读 9,977评论 1 3
  • 最近着手把CSK移植到DSP中,先看一些DSP中图像处理的一些例子,第一件事当然就是怎么把图像数据倒入CCS工程中...
    和蔼的zhxing阅读 12,421评论 0 0
  • 前言 正在写作这篇文章的笔者是一名大四的软件工程学生,因为实习工作的需要,奉命研究单片机开发,所以我所扯的内容可能...
    兔子泽阅读 10,915评论 18 57
  • 背景 在java中float赋值给double,会产生精度问题。 输出为2.0999999046325684。 小...
    我叫小小强阅读 19,394评论 2 23