关于dsp中程序定点数和浮点数转换问题(Q15格式)

Q格式(Q domain)-用整数运算小数 定义 由于成本与功耗受限的原因,对于DSP处理器,遇到浮点数无法处理,所以需要利用定点数进行浮点数的运算,而DSP中运用Q格式进行表示。 当假定小数点位于第0位右侧时,为Q0。 当假定小数点再第15位右侧时,为Q15。 //第几位,从右向左数。计算数值时,按照位值进行计算 N位的处理器最大可以表示为Q N-1。 eg 16进制数2000H Q0时:0010 0000 0... 阅读详情

         看ti的逆变器程序,看到采集后的ADBUF数据全部都是《5,这就搞不明白了,为什么要左移5呀?然后看到上面说是兼容Q15,在QQ群里也问了高手,说是用于DSP小数运算,于是在网上找了下Q15的定义,下面把Q15整理下。

许多DSP都是定点DSP,处理定点数据会相当快,但是处理浮点数据就会非常慢。可以利用Q格式进行浮点数据到定点的转化,节约CPU时间。实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定标格式才能更好的处理运算。

  Q格式表示为:Qm.n,表示数据用m比特表示整数部分,n比特表示小数部分,共需要m+n+1位来表示这个数据,多余的一位用作符合位。假设小数点在n位的左边(从右向左数),从而确定小数的精度

  例如Q15表示小数部分有15位,一个short型数据,占2个字节,最高位是符号位,后面15位是小数位,就假设小数点在第15位左边,表示的范围是:-1<X<0.9999695 。

  浮点数据转化为Q15,将数据乘以2^15;Q15数据转化为浮点数据,将数据除以2^15。

  例如:假设数据存储空间为2个字节,0.333×2^15=10911=0x2A9F,0.333的所有运算就可以用0x2A9F表示,同理10911×2^(-15)=0.332977294921875,可以看出浮点数据通过Q格式转化后是有误差的。

  例:两个小数相乘,0.333*0.414=0.137862

  0.333*2^15=10911=0x2A9F,0.414*2^15=13565=0x34FD

  short a = 0x2A9F;

  short b = 0x34FD;

  short c = a * b >> 15;  //两个Q15格式的数据相乘后为Q30格式数据,因此为了得到Q15的数据结果需要右移15位

  这样c的结果是0x11A4=0001000110100100,这个数据同样是Q15格式的,它的小数点假设在第15位左边,即为0.001000110100100=0.1378173828125...和实际结果0.137862差距不大。或者0x11A4 / 2^15 = 0.1378173828125

 

 

Q格式的运算

  1> 定点加减法:须转换成相同的Q格式才能加减

  2> 定点乘法:不同Q格式的数据相乘,相当于Q值相加,即Q15数据乘以Q10数据后的结果是Q25格式的数据

  3> 定点除法:不同Q格式的数据相除,相当于Q值相减

  4> 定点左移:左移相当于Q值增加

  5> 定点右移:右移相当于Q减少

 

 

Q格式的应用格式

  实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定标格式才能更好的处理运算。一般用如下两种方法:

  1> 使用时使用适中的定标,既可以表示一定的整数复位也可以表示小数复位,如对于2812的32位系统,使用Q15格式,可表示-65536.0~65535.999969482区间内的数据。

  2> 全部采用小数,这样因为小数之间相乘永远是小数,永远不会溢出。取一个极限最大值(最好使用2的n次幂),转换成x/Max的小数(如果Max是取的2的 n次幂,就可以使用移位代替除法)。

 


深入解析TI DSP中的Q格式与IQmath库:定点数运算实战指南 本文深入解析了TI DSP中的Q格式定点数表示法与IQmath库的应用。针对电机控制等实时性要求高的场景,阐述了从浮点到定点思维转换的必要性,详细介绍了Q格式的原理、表示法及运算规则,并重点剖析了TI IQmath库的组成、核心数据类型与高效函数的使用。通过Park变换实战案例,展示了如何利用IQmath库在C2000系列DSP上实现高性能的定点数运算,为嵌入式实时控制开发提供关键指导。 阅读详情

相关推荐

嵌入式C语言数据类型实战:从定点数到浮点数的存储与运算优化

在嵌入式系统开发中,数据类型的选择直接影响程序的性能、精度与资源消耗。理解数据在内存中的二进制表示(如补码)是掌握其存储与运算的基础。定点数与浮点数是两种核心的数值表示方法,定点数通过固定小数点位实现快速整数运算,牺牲动态范围换取速度,适合实时控制;浮点数则通过指数与尾数表示极大或极小的数,方便但运算开销大。在电机控制、数字信号处理(DSP)等对实时性要求高的场景,合理选用数据类型(如Q格式定点数)能显著优化性能。本文以NXP GFLIB库为例,深入解析了嵌入式C语言中各类数据类型的底层原理、转换技巧与实战

cumi7754的博客 802

Q格式(Q15)DSP上浮点数据定点化处理

  许多DSP都是定点DSP,处理定点数据会相当快,但是处理浮点数据就会非常慢。可以利用Q格式进行浮点数据到定点的转化,节约CPU时间。实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定标格式才能更好的处理运算。   Q格式表示为:Qm.n,表示数据用m比特表示整数部分,n比特表示小数部分,共需要m+n+1位来表示这个数据,多余的一位用作符合位。假设小数点在n位...

weixin_30379973的博客 4241

Q15格式:Q15格式表示-matlab开发

一个简单的文件,用于将 -1 和 0.9999 之间的十进制数转换为 Q15 格式表示,用于 DSP。

Q15

Q格式表示为:Qm.n,表示数据用m比特表示整数部分,n比特表示小数部分,共需要m+n+1位来表示这个数据,多余的一位用作符合位。假设小数点在n位的左边(从右向左数),从而确定小数的精度 例如Q15表示小数部分有15位,一个short型数据,占2个字节,最高位是符号位,后面15位是小数位,就假设小数点在第15位左边,表示的范围是:-1<X<0.9999695 。 浮点数据转化为Q15,

nizhenyuchina的博客 3460

十进制转 Q15 格式:将十进制值转换为 Q15 格式的功能。-matlab开发

y = dec2q15( x , 形式 ) 适用于任何十进制值的函数(因为使用饱和度)。 Q15 格式的可用表示是二进制或十六进制。 函数的输入参数: x - 十进制整数形式 - 形式 - 依赖于输入参数的表示(十六进制或二进制)取'hex'或'bin' 功能价值: y - 存储在 MATLAB 字符串中的十六进制或二进制表示 例子: >> dec2q15(0.125,'十六进制') 答案 = 1000 >> dec2q15(0.125,'bin') 答案 = 0001000000000000 >> dec2q15(-0.775,'十六进制') 答案 = 9ccd >> dec2q15(-0.775,'bin') 答案 = 1001110011001101

TSMC 40nm LP工艺下,新手画版图最容易踩的5个坑(附Cadence避坑指南)

本文详细解析了TSMC 40nm LP工艺下版图设计的5个常见陷阱,包括MOS管尺寸转换、DNW隔离、Guard Ring设计、金属布线和DRC检查。通过Cadence实战技巧和设计规则优化,帮助新手工程师规避典型错误,提升版图设计效率和质量。

weixin_26800111的博客 458

Q格式-TI的dsp的IQmath学习

接触DSP和无刷电机源码时,对于计算的要求比较高。对Q格式做一下了解,当然也解答了我以前的疑问。 1.什么是定点数? 2.印象中的dsp不是应该支持浮点数的运算么? 在看ST的变换源码时,本没了解什么是Q格式,不过当时的理解是将sin(theta)在0-90度的值[0-1]区间做了放大,即为0-32768。下一步计算完后再右移15位缩小。 事实也如此Q格式,就是将一个小数放大若干倍后,用整数来表示小数 位数系统 做为较为底层的c程序员,或者说计算机的常识,我们对于一个数如何在计算机中存储的。不管是什么类

wei 2万+

告别“盲开”:手把手教你用MCU内置比较器搞定BLDC无感方波启动(附代码片段)

本文详细介绍了如何利用MCU内置比较器实现BLDC无感方波启动,解决传统无传感器控制中的'盲开'问题。通过虚拟中性点电路设计和三段式启动流程,结合反电动势检测和过零检测技术,提供了一套经济高效的解决方案,并附有可直接移植的代码片段,助力工程师快速实现可靠的无感控制。

weixin_33694172的博客 503

c语言 q15格式,DSP 数据 Q格式

Q格式许多DSP都是定点DSP,处理定点数据会相当快,但是处理浮点数据就会非常慢。可以利用Q格式进行浮点数据到定点的转化,节约CPU时间。实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定标格式才能更好的处理运算。Q格式表示为:Qm.n,表示数据用m比特表示整数部分,n比特表示小数部分,共需要m+n+1位来表示这个数据,多余的一位用作符合位。假设小数点在n位的左边...

weixin_39616287的博客 4865

5G NR 双连接与载波聚合:PCell、SCell、PScell、SpCell 角色全解析

本文全面解析了5G NR中双连接与载波聚合技术的关键概念,详细介绍了PCell、SCell、PScell和SpCell的角色与功能。通过实际案例和配置示例,帮助读者理解这些小区在提升网络覆盖和速率方面的作用,以及在实际组网中的优化策略。

weixin_33220360的博客 375

从波形到代码:手把手调试GaN图腾柱PFC的过零点切换与软启动策略

本文详细解析了GaN图腾柱无桥Boost PFC电路在过零点切换与软启动策略中的调试方法。通过波形分析、代码实现和寄存器配置,提供了解决误开通、震荡波形等问题的实用方案,帮助工程师优化电源设计效率与可靠性。

weixin_30831529的博客 424

DSP芯片的定点运算之数的定标Q格式(转)

在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。显然,字长越长,所能表示的数的范围越大,精度也越高。如无特别说明,本书均以16位字长为例。 DSP芯片的数以2的补码形式表示。每个16位数用一个符号位来表示数的正负,0表示数值为正,1则表示数值为负。其余15位表示数值的大小。因此, 对DS...

lut029的专栏 7275

模拟滤波器的基础知识和设计

使用Python实现多种模拟滤波器

faltas的博客 3530

深入解析TI DSP的Q格式与IQmath库:定点数运算的高效实现

本文深入解析了TI DSP中Q格式定点数运算的原理与高效实现方法。通过介绍Q格式的表示法、运算规则及溢出处理,并结合TI IQmath库的实战应用,展示了如何在资源受限的DSP上实现高性能的数字信号处理与控制算法,有效平衡成本与效率。

bean的博客 720

最新 抖音 X-Gorgon 0408 和8408 设备注册协议

抖音app先是检测了你的手机cpu架构,是x86还是armeabi,通过cpu架构的不同来调用so内不同的xg方法,所以导致现在最新版抖音app的xg算法有0408和8408两种。两种都是最新版,因为我发现当我使用oppo手机安装最新版抖音抓包的xg是8408,而当我用小米或者华为安装最新版抖音,抓包以后发现xg是0408。抖音IOS XG84 设备注册激活协议代码片段。...

Q44804487的博客 1万+

基于Simulink的轨道交通信号控制系统仿真详细介绍

轨道交通信号控制系统是确保列车安全、高效运行的核心技术。通过Simulink进行信号控制系统的仿真,可以验证系统的设计、优化调度策略并提高安全性。以下是如何在MATLAB和Simulink中设计并仿真一个轨道交通信号控制系统的详细步骤。通过上述步骤,我们成功设计并实现了基于Simulink的轨道交通信号控制系统仿真。该系统能够根据列车位置、速度和轨道状态生成控制指令,确保列车的安全、高效运行。通过虚拟场景仿真、硬件在环测试和实机测试,验证了系统的性能,并通过参数优化进一步提升了系统的可靠性。引入智能调度。

xiaoheshang_123的博客 462

DSP中定点与浮点运算

定点、浮点数据运算原理研究

zhui-meng6的博客 4202

Vue3 + uniapp 踩坑:iOS 真机调试一直报错Maximum call stack size exceeded,和(in promise)MiniProgramError err的解决方法

不是你写错代码,是微信开发工具和 iOS 真机调试的兼容问题。开个空项目都报错,勾个设置就没问题,不是你,是工具的锅。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1267

【STM32F429的DSP教程】第17章 DSP功能函数-定点数互转

完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第17章 DSP功能函数-定点数互转 本期教程主要讲解功能函数中的Q7,Q15和Q31分别向其它类型数据转换。 目录 第17章 DSP功能函数-定点数互转 17.1 初学者重要提示 17.2 DSP基础运算指令 17.3 ...

Simon223的博客 1644

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Q格式

如何在定点DSP上实现浮点运算 可以考虑用Q格式   举个例子说明定点算法本质: 首先明确:CPU计算整数比浮点方便迅速。 例如:两个小数相乘0.123*0.456,可以先将二者各乘以1000倍,变成123*456,方便CPU计算。算完之后,再将结果除以1000000,就是真实的结果了。 假设Q16定点算法,就是0.123*2^16*0.456*2^16,将两个数同时扩大2^16倍,算完之

u011463853的专栏 7943

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

dsp处理浮点数_定点DSP小数乘加实战

欢迎加入技术交流QQ群(2000人):电力电子技术与新能源905723370高可靠新能源行业顶尖自媒体在这里有电力电子、新能源干货、行业发展趋势分析、最新产品介绍、众多技术达人与您分享经验,欢迎关注我们,搜索微信公众号:电力电子技术与新能源(Micro_Grid),与中国新能源行业共成长!电力电子技术与新能源论坛www.21micro-grid.com小编推荐值得一看的书单 ...

weixin_39528559的博客 1245

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【转帖】dsp定点浮点格式

一  DSP定点算数运算1  数的定标    在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。显然,字长越长,所能表示的数的范围越大,精度也越高。如无特别说明,本书均以16位字长为例。DSP芯片的数以2的补码形式表示。每个16位数用一个符号位来表示数的正负,0表示数值为正,l则表示数值为负。其余1

Eason_Hsu的专栏 1862

【STM32F407的DSP教程】第17章 DSP功能函数-定点数互转

完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第17章 DSP功能函数-定点数互转 本期教程主要讲解功能函数中的Q7,Q15和Q31分别向其它类型数据转换。 目录 第17章 DSP功能函数-定点数互转 17.1 初学者重要提示 17.2 DSP基础运算指令 17.3 ...

Simon223的博客 716

DSP的Q格式讲解

在应用DSP时,其实硬件一般都问题不大,主要的是软件,是算法!下面的关于DSP运算的精华但愿有些价值! 一 DSP定点算数运算 1 数的定标 在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。显然,字长越长,所能表示的数的范围越大,精度也越高。如无特别说明,本书均以16位字长为例。

fz835304205的专栏 1万+

定点数与浮点数:计算机数字表示的核心原理与工程实践

在计算机系统中,数字的表示方法是数据处理的基石,直接关系到计算精度、效率与硬件成本。其核心原理在于如何用有限的二进制位高效、精确地表示各类数值,尤其是小数。定点数采用固定小数点位的思想,规则简单、运算速度快、硬件成本低,特别适合对确定性和实时性要求高的场景,如嵌入式系统、数字信号处理(DSP)和实时控制。浮点数则借鉴科学计数法,通过动态的指数和尾数分配,实现了极大的动态范围,是现代科学计算、图形渲染等通用计算的支柱,但其代价是存在固有的精度损失和舍入误差。理解定点数与浮点数的表示机制、运算特性及适用场景,是

weixin_34274029的博客 423
上一篇: 嵌入式Linux之我行——PWM在ARM Linux中的原理和蜂鸣器驱动实例开发
MARIO
博客等级 码龄16年 5粉丝 1原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值