定点计算与浮点计算在MCU上的较量:以电机控制系统算法实现为例

本文主要是介绍定点计算与浮点计算在MCU上的较量:以电机控制系统算法实现为例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在嵌入式系统尤其是电机控制算法的实现过程中,定点计算与浮点计算的选取始终是一个重要议题。电机控制系统对实时性和计算效率有着极高要求,而MCU(微控制器)作为其核心处理器,其计算模式的选择直接影响整个系统的性能。本文将围绕定点计算与浮点计算在电机控制系统软件实现中的应用、优劣势以及具体案例展开讨论。

一、定点计算

定点计算是基于整数或二进制补码表示实数的方法,无需专门的浮点运算单元(FPU),因此在许多低端或资源有限的MCU上广为采用。电机控制算法中的常见参数如电流、速度等,可以通过合适的量化方法转化为定点数进行处理。例如,在PID控制器中,比例、积分和微分环节的各项参数以及中间结果都可以用定点数表达,从而节省存储空间和计算资源。

优点:

硬件开销小:大部分MCU无需内置FPU即可支持定点计算,降低了成本和功耗。

计算速度快:定点运算指令执行周期短,有助于提高实时性。

易于移植和调试:定点计算的实现相对简单,代码兼容性更好。

缺点:

精度受限:定点数表示范围和精度固定,可能因数值范围过小或过大导致计算误差累积。

设计复杂性:需要精心选择合适的量化方式和字长,以平衡精度与资源占用。

此图片来源于网络

二、浮点计算

相比之下,浮点计算提供了较大的动态范围和较高的精度,尤其适合处理涉及大量乘除法和指数运算的复杂电机控制算法。现代高端MCU往往配备了FPU,可以直接支持IEEE 754标准的单精度或双精度浮点数运算。

优点:

高精度计算:浮点数提供动态范围大的表示方法,有利于减小算法误差。

算法实现简洁:无需手动量化处理,简化编程和算法移植。

缺点:

硬件资源消耗大:使用FPU会占用更多硅片面积,增加MCU的成本和功耗。

执行速度相对较慢:浮点运算的指令周期通常比同等功能的定点运算要长,可能影响实时性。

具体案例分析: 在设计一款高性能伺服电机控制器时,如果选择使用低成本、低功耗的MCU,考虑到电机控制算法中的参数调整较为频繁,且对实时性要求较高,采用定点计算或许更为适宜,只需合理设计量化策略以确保足够的精度。而对于一些需要高精度定位和复杂控制算法的场合,如工业机器人关节电机的控制,采用内建FPU的高端MCU,通过浮点计算可以更好地保证算法性能和控制精度。

结论: 定点计算与浮点计算在电机控制系统中的选用,本质上是性能、成本和精度之间的权衡。开发者应根据具体应用场景和MCU资源情况,合理评估计算需求和限制,以实现最优化的电机控制算法实现方案。随着MCU技术的快速发展,未来的芯片设计可能兼顾两者之长,提供更加灵活、高效且能满足多样化需求的计算平台。

三、FPU相关

浮点运算单元(Floating Point Unit, FPU)是计算机处理器中专门处理浮点数运算的部件,它遵循国际标准化组织制定的IEEE 754浮点数标准来执行加、减、乘、除以及其它复杂浮点运算。浮点数相比整数运算更能精确表示较大范围内的小数,是科学计算、图像处理、信号处理等领域不可或缺的基础工具。

原理介绍

浮点运算单元的核心工作原理如下:

  1. 数据表示:浮点数由符号位(表示正负)、指数部(表示数值大小)和尾数部(表示小数部分)组成。FPU负责解析和操作这些部分。

  2. 算术运算:FPU包含专用电路来进行浮点加减乘除运算,这些运算涉及到对指数和尾数的独立处理,包括对齐(对齐尾数以便相加或相减)、相加减、乘法和除法、舍入处理以及异常情况检查(如溢出、下溢、NaN、无穷大等)。

  3. 特殊函数处理:除了基本算术运算,FPU还可能支持其他数学函数,如平方根、三角函数、对数函数、指数函数等。

  4. 流水线处理:现代FPU设计通常采用流水线结构以提高运算效率,即将运算分为多个阶段并在不同时间内并行执行。

成本分析

在计算机硬件设计中,是否配备FPU以及FPU的性能等级直接影响到处理器的成本:

  1. 硬件成本:FPU作为一个额外的硬件组件,增加了处理器的制造成本。它需要更多的硅片面积,这意味着更高的材料成本和工艺难度。越复杂的FPU,其内部结构可能包括更多的晶体管和更先进的电路设计,成本自然越高。

  2. 功耗与散热:高性能FPU往往伴随着更大的功耗,这会影响整个系统的电源管理设计,并可能需要更有效的散热解决方案,间接增加整体系统的成本。

  3. 性能与价格比:尽管增加了成本,FPU却极大地提高了处理器处理浮点运算的能力,对于需要高性能计算的场合来说,这样的投入通常是值得的。在嵌入式系统中,如果任务需求并不涉及大量的浮点运算,则选择不带FPU的处理器可以降低成本。

  4. 市场定位与竞争力:对于高端服务器芯片和图形处理器GPU而言,高效的浮点运算能力是必不可少的,因此厂家愿意投资于更强大的FPU设计,以提升产品在市场上的竞争力。

总结起来,浮点运算单元的设计和集成对处理器性能有着重大影响,而其成本主要包括硬件设计与制造、功耗管理和市场定位等多个维度。在选择是否集成FPU以及何种级别的FPU时,工程师和制造商需根据目标应用需求、市场定位和经济效益做出权衡决策。

这篇关于定点计算与浮点计算在MCU上的较量:以电机控制系统算法实现为例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063121

相关文章

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络