C28x+FPU架构的C2000微处理器在原有的C28x定点CPU的基础上加入了一些寄存器和指令,来支持IEEE 单精度浮点数的运算。对于在定点微处理器上编写的程序,浮点C2000也完全兼容,不需要对程序做出改动。浮点处理器相对于定点处理器有如下好处: - 编程更简单
- 性能更优,比如除法,开方,FFT和IIR滤波等算法运算效率更高。
- 程序鲁棒性更强。
IEEE754格式的浮点数 C28x+FPU的单精度浮点数遵循IEEE754格式。它包括: - 1位符号位:0表示正数,1表示负数。
- 8位阶码
- 23位尾数
表1:IEEE单精度浮点数 符号位S
| 阶码E
| 尾数M
| 值
| 0
| 0
| 0
| 正0
| 1
| 0
| 0
| 负0
| 0或1
| 0
| 非0
| 非规格化数(1)
| 0
| 1-254
| 0x00000-0x7FFFF
| 正常范围正数(2)
| 1
| 1-254
| 0x00000-0x7FFFF
| 正常范围负数(2)
| 0
| 255
| 0
| 正无穷大
| 1
| 255
| 0
| 负无穷大
| 0或1
| 255
| 非0
| 非数值(NaN)
|
(1)非规格化数值非常小,计算公式为(-1)sx2(E-126)x0.M (2)正常范围数值计算公式为(-1)sx2(E-127)x1.M 正常范围数值落在± ~1.7 x 10 -38 to ± ~3.4 x 10 +38范围内。从表1可以看出,IEEE754标准包括: - 标准数据格式和特殊值,比如非数值(NaN)和无穷大
- 标准舍入模式和浮点运算
- 多平台支持,包括德州仪器C67x系列芯片。
C2000对该标准作了一些简化: - 状态标志位和比较运算不区分正0和负0
- 非规格化数值被认为是0
- 对非数值(NaN)处理方式和无穷大一样。
IEEE754标准有5种舍入模式,C28x+FPU只支持其中两种: --截断:小数位不管大小全部舍去 --就近舍入向偶舍入:这种模式下如果小数位小于5就舍去,大于5就进位,如果小数位为5,则舍入到最近的偶数。 表2展示了不同的舍入模式对数据的影响。C28x+FPU编译器默认将微处理器配置为就近舍入向偶舍入模式[1]。 表2:不同舍入模式示例 模式 / 实际值 | +11.5 | +12.5 | −11.5 | −12.5 | 就近舍入向偶舍入 | +12.0 | +12.0 | −12.0 | −12.0 | 就近舍入远离0舍入 | +12.0 | +13.0 | −12.0 | −13.0 | 截断 | +11.0 | +12.0 | −11.0 | −12.0 | 向上舍入 | +12.0 | +13.0 | −11.0 | −12.0 | 向下舍入 | +11.0 | +12.0 | −12.0 | −13.0 |
|