【电路笔记 TMS320C6***DSP】Qm.n格式定点数 & Q15格式

Q

Q格式简介

  • Q格式是一种固定点数表示方法,用于在不支持浮点运算或需要高效利用存储空间的情况下表示小数。一个Q格式的数字由两部分组成:整数位和小数位。通常表示为Qm.n,其中:

    • m 表示分配给整数部分的位数(包括符号位)。
    • n 表示分配给小数部分的位数。(例如,Q15.16表示有15位用于整数部分,16位用于小数部分。)
    • 整个数据需要1+m+n位空间进行存储,最高的一位作为符号位。

关键特性

  1. 范围与精度

    • 范围取决于整数位的数量;更多的整数位意味着更大的数值范围。
    • 精度取决于小数位的数量;更多的小数位意味着更高的精度。
  2. 算术运算

    • 加减法可以直接对Q格式数执行,前提是它们具有相同的Q格式。
    • 乘法和除法则需特别注意,因为结果可能需要调整以保持正确的Q格式。
  3. 转换

    • 浮点到Q格式的转换涉及缩放因子的应用。
    • Q格式到浮点的转换则相反,涉及去除缩放因子。

示例:Q15格式(16位)

  • 假设我们使用Q15格式,这意味着总共有16位,其中15位用于小数部分,1位用于符号(即没有专门的整数部分)。这种格式非常适合表示介于-1到+1之间的值。
转换示例
  • 从浮点到Q15
    如果有一个浮点数0.75,要将其转换为Q15格式,首先将它乘以(2^{15}) (因为Q15有15位小数),然后取最接近的整数值。
    0.75 × 32768 = 24576 0.75 \times 32768 = 24576 0.75×32768=24576
    所以,0.75在Q15格式下表示为24576。

在这里插入图片描述

  • DSP中的实现
// Saturate input to minimum or maximum value and return value.
// https://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/DSPLib/1_30_00_02/exports/html/group__dsplib__support__device.html#ga954566620ef7aea48fdfd27439cf7762
#define 	__saturate(x, min, max)   (((x)>(max))?(max):(((x)<(min))?(min):(x)))

// https://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/DSPLib/1_30_00_02/exports/html/group__dsplib__support__device.html#gaf6a919769cef83b0e251fb353706b8b7

((_q15)((((uint32_t)1 << 15) * \
                                __saturate(A,-1.0,32767.0/32768.0))))
  • 从Q15到浮点
    反之,如果你有一个Q15格式的数24576,想要转换回浮点数,只需将其除以(2^{15})。
    24576 / 32768 = 0.75 24576 / 32768 = 0.75 24576/32768=0.75

  • https://chummersone.github.io/qformat.html#information

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值