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

news2024/12/28 18:51:48

在嵌入式系统尤其是电机控制算法的实现过程中,定点计算与浮点计算的选取始终是一个重要议题。电机控制系统对实时性和计算效率有着极高要求,而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时,工程师和制造商需根据目标应用需求、市场定位和经济效益做出权衡决策。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1850114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pycharm中的使用技巧

1、更改主题:找到设置,然后更改主题 点击选择自己喜欢的主题,然后就可以更改主题了 2、设置字体的快捷键 找到设置,如下: 找到increase,如下: 右键选择,增加字体快捷键 按住ctrl滑轮…

压缩包文件密码破解软件 Ziperello 下载及使用教程

使用 Ziperello https://qweree.cn/index.php/416/ 对加了密码的压缩包进行密码破解,教程如下: 第一步,双击运行 Ziperello双击我打开程序.exe,如下图: 第二步,打开一个加了密的 ZIP 压缩包,再…

LCR 142.训练计划IV

1.题目要求: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ int compare(const void* a,const void* b) {return (*(int*)a - *(int*)b); } struct ListNode* trainningPlan(struct ListNode* l1, struct Li…

Linux驱动开发笔记(十三)Sysfs文件系统

文章目录 前言一、Sysfs1.1 Sysfs的引入1.2 Sysfs的目录结构1.2 Sysfs的目录详解1.2.1 devices1.2.2 bus1.2.3 class1.2.4 devices、bus、class目录之间的关系1.2.5 其他子目录 二、Sysfs使用2.1 核心数据结构2.2 相关函数2.2.1 kobject_create_and_add2.2.2 kobject_put()2.2.…

转让5000万内资融资租赁公司变更需要的条件和变更时间

我们现在有一家陕西的融资租赁公司公司是非常干净的非常适合接手后直接开展业务如果北京的不能够变更了我们这边还有渠道可以变更现在能做的越来越少了,详情流程致电咨询或者来我们公司面谈。 现成融资租赁公司转让: 1、公司名称:陕西xxX融资…

【龙晰 离线安装openssl-devel】openssl-devel rpm 离线安装 需要下载哪些安rpm 包

进入龙晰镜像源地址下载 http://mirrors.openanolis.cn/anolis/8/BaseOS/x86_64/os/Packages/(base) [rootAI lib64]# yum install openssl-devel Last metadata expiration check: 14:03:32 ago on Fri 21 Jun 2024 07:26:56 AM CST. Dependencies resolved. Package …

Linux扩展lvm分区实践 -- 使用其他磁盘的空间

如图,根分区900G,计划将另一块磁盘sdb分出1T来给根分区 步骤 1:创建新的分区 sudo fdisk /dev/sdb输入 n 创建一个新分区 然后选择分区类型,输入p 设置起始扇区(默认),然后设置分区大小&…

nginx启动之后任务管理器里面没有nginx进程

原因1:确保你的nginx文件夹里面只包含英文路径!绝对不能有中文! 原因2: 到conf\nginx.conf里面查看端口和IP地址是否正确设置,ip地址有无正确输入

MySQL之复制(十)

复制 改变主库 确定期望的日志位置 如果有备库和新主库的位置不相同,则需要找到该备库最后一条执行的时间在新主库的二进制日志中相应的位置,然后再执行CHANGE MASTER TO.可以通过mysqlbinlog工具来找到备库执行的最后一条查询,然后在主库上…

JupyterLab使用指南(二):JupyterLab基础

第2章 JupyterLab基础 2.1 JupyterLab界面介绍 JupyterLab的用户界面非常直观和灵活。它包括文件浏览器、工作区、多标签页、命令面板和侧边栏等功能。以下是各个部分的详细介绍: 2.1.1 文件浏览器 文件浏览器位于界面左侧,用于导航和管理文件。你可…

【英伟达GPU的挑战者】Groq—AI大模型推理的革命者

目录 引言第一部分:Groq简介第二部分:Groq的特点与优势1、高性能推理加速2、近存计算技术3、专用ASIC芯片设计4、低延迟与高吞吐量5、成本效益分析6、易用性与集成性7、软件与硬件的协同设计 第三部分:Groq的使用指南1、准备工作2、简单使用样…

<Rust><iced>在iced中显示gif动态图片的一种方法

前言 本文是在rust的GUI库iced中在窗口显示动态图片GIF格式图片的一种方法。 环境配置 系统:window 平台:visual studio code 语言:rust 库:iced、image 概述 在iced中,提供了image部件,从理论上说&…

基于51的单片机GPS定位系统设计

一.硬件方案 本设计主要是制作出一款基于51单片机的GPS定位器,根据设计需求,硬件部分主要由51单片机GPS定位模块LCD12864液晶LED指示灯3.3V稳压电路天线设计而成; 二.设计功能 (1)单片机选用:51单片机(S…

MQ~消息队列能力、AMQP协议、现有选择(Kafka、RabbitMQ、RocketMQ 、Pulsar)

消息队列 消息队列看作是一个存放消息的容器,当我们需要使用消息的时候,直接从容器中取出消息供自己使用即可。由于队列 Queue 是一种先进先出的数据结构,所以消费消息时也是按照顺序来消费的。 常⽤的消息队列主要这 五 种,分别…

Python星载气溶胶数据处理与反演分析

在当前全球气候变化和环境污染问题日益突出的背景下,气溶胶研究显得尤为重要。气溶胶在大气中由直径范围在0.01微米至10微米固体和液体颗粒构成,直接或间接影响地球辐射平衡、气候变化和空气质量。尤其在“碳中和”目标的驱动下,研究气溶胶对…

掌握 Nuxt 3 中的状态管理:实践指南

title: 掌握 Nuxt 3 中的状态管理:实践指南 date: 2024/6/22 updated: 2024/6/22 author: cmdragon excerpt: 摘要:该文指南详述了Nuxt 3的概况与安装,聚焦于在Nuxt 3框架下运用Vuex进行高效的状态管理,涵盖基础配置、模块化实…

vue实现post请求接口流式输出数据sse

使用fetchEventSource 参考git源码:https://github.com/Azure/fetch-event-source/tree/main 本地联通 发现数据并没有流式输出:vue代理需要关闭compress 如下: devServer:{proxy:{},compress:false } 安装插件 npm install microsoft/f…

深入理解Python中的并发与异步的结合使用

​ 在上一篇文章中,我们讨论了异步编程中的性能优化技巧,并简单介绍了trio和curio库。今天,我们将深入探讨如何将并发编程与异步编程结合使用,并详细讲解如何利用trio和curio库优化异步编程中的性能。 文章目录 并发与异步编程的区…

鸿蒙HarmonyOS NEXT角落里的知识:ArkTS高性能编程实践

概述 本文主要提供应用性能敏感场景下的高性能编程的相关建议,助力开发者开发出高性能的应用。高性能编程实践,是在开发过程中逐步总结出来的一些高性能的写法和建议,在业务功能实现过程中,我们要同步思考并理解高性能写法的原理…

AMSR/ADEOS-II L1A Raw Observation Counts V003地球表面和大气微波辐射的详细观测数据

AMSR/ADEOS-II L1A Raw Observation Counts V003 简介 AMSR/ADEOS-II L1A Raw Observation Counts V003数据是由日本航空航天研究开发机构(JAXA)的AMSR (Advanced Microwave Scanning Radiometer)仪器收集的一组原始观测计数数据。这些数据是从ADEOS-I…