这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » AN4044 应用笔记 基于STM32微控制器上的浮点单元的性能演示

共1条 1/1 1 跳转至

AN4044 应用笔记 基于STM32微控制器上的浮点单元的性能演示

高工
2017-10-24 18:26:14     打赏

前言

本应用笔记介绍了如何使用STM32 Cortex®-M4和STM32 Cortex®-M7微控制器中可用的浮点

单元(FPU),并对浮点运算作了简要介绍。

X-CUBE-FPUDEMO固件是为改进双精度FPU而开发,并能演示使用此硬件实现所带来的改进。

第 4节:应用程序示例中给出了两个示例


目录

1 浮点算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.1 定点或浮点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2 浮点单元(FPU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 浮点运算的IEEE标准(IEEE 754) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2 数字格式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2.1 归一化数字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2.2 非归一化数字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2.3 零 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2.4 无穷数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2.5 NaN(非数字) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2.6 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3 舍入模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

2.4 算术运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

2.5 数字转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

2.6 异常和异常处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

2.7 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 STM32 Cortex®-M浮点单元(FPU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.1 特殊操作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2 浮点状态和控制寄存器(FPSCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2.1 代码条件位:N,Z,C,V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2.2 模式位:AHP,DN,FZ,RM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2.3 异常标志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.3 异常管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.4 程序员模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.5 FPU指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.5.1 FPU算术指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.5.2 FPU的比较与转换指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.5.3 FPU加载/存储指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4 应用程序示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.1 Julia集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.2 在STM32F4上实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.3 在STM32F7上实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.4 结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.5 Mandelbrot集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.6 结论 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5 参考文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

6 版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30


表格索引

表1. 整数动态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

表2. 浮点数动态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

表3. 归一化数字范围. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

表4. 非归一化数字范围 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

表5. IEEE.754数字格式的数值范围 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

表6. STM32 Cortex®-M4/-M7 中的FPU实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

表7. FPSCR寄存器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

表8. 一些浮点单精度数据处理指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

表9. 一些浮点双精度数据处理指令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

表10. 基于硬件单精度FPU与软件运算的CORTEX® -M4性能比较

利用MDK-ARM™工具链V5.17的FPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

表11. 基于硬件单精度FPU与软件运算的CORTEX® -M7性能比较

利用MDK-ARM™工具链V5.17的FPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

表12. 基于硬件双精度FPU与软件运算的CORTEX® -M7性能比较

利用MDK-ARM™工具链V5.17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

表13. 参考文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

表14. 文档版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

表15. 中文文档版本历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30


图片索引

图1. IEEE.754单精度和双精度浮点编码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

图2. 其值采用8 bpp蓝色编码的Julia集(c=0.285+i.0.01). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

图3. 其值采用RGB565调色板编码的Julia集(c=0.285+i.0.01) . . . . . . . . . . . . . . . . . . . . . . . . 20

图4. 利用MDK-ARM™工具链V5.17配置FPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

图5. zoom in =1时Mandelbrot-set的图像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

图6. Mandelbrot-set图像,使用双精度FPU,放大了48倍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

图7. Mandelbrot-set图像,使用单精度FPU,放大了32倍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27


--------------------------------------


>>查看更多,下载此文档





关键词: AN4044     STM32     控制器     性能     精度    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]