This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于Q格式数据范围的计算



在TMS320C2000 Motor Control Primer中:

GLOBAL_Q Max Val Min Val Resolution

28 7.999 999 996 -8 0.000 000 004

24 127.999 999 940 -128 0.000 000 060

20 2047.999 999 046 -2048 0.000 000 954

请问一下数据范围和精度是怎么计算来的?

  • 楼主,

    请参考IQmath文档。

    见附件。

    IQmath_v15a.pdf
  • 你好!

    其实Q格式很好理解的。以你提到的Q28 Q24 Q20为例。

    C2000是有符号的Q格式,那么最高位31位为符号位,30—0位为数值位。

    例如,Q28 , 30~28位为整数部分,27~0位为小数部分。表示小数有28位,那么分辨率 则是 1/(2^28) 。表示正数有3位,那么正数最大为  2^3- 1/(2^28) ,负数最小为 -2^3。

    综上, Qn, 范围为 2^(31-n) - 1/(2^n)   ~  -2^(31-n), 分辨率为 1/(2^n)。

    欢迎继续提问~

  • 你好,谢谢解答, 以下是我的计算方法,请问一下错误在哪里?

    1、如Q28格式,正数最大0_111.1111 1111 1111 1111 1111 1111 1111

                                             |      |                                    |

                                         符号 整数                小数

      于是得到最大值+7.999 999 996

    2、那么是否可以这样计算:表示负的最小值为  1_111.1111 1111 1111 1111 1111 1111 1111

                                                                                 |      |                               |

                                                                               符号 整数            小数

      算的的Q28格式的下限不就应该是-7.999 999 996么?

    我这样理解的错误在哪里啊?    

  • 这是有符号数的特点,不管是小数还是正数。负数的动态范围总是比正数的动态范围大一个bit表示的数值。

    例如:8bit 有符号数 范围为 127 ~ -128, 127~ 0 ~ -128 一共是256个数值。

    符号位为1,其余位为零,则为最小的负数。

  • 现在想起来了,是这样的,提了个比较2的问题,谢谢解答!

  • 感谢TI,  TI的工程师们!