一.定点DSP做小数运算思路梳理:
1.由于定点DSP适用于做整数的加减乘除运算,在做小数的加减乘除等运算时效率极低,因此在做含小数数据运算时需要将小数转换为Q格式的整数,从而将问题转变为整数的加减乘除运算。
2.将小数转换为Q格式的本质就是将小数通过左移运算乘2的Q次幂把小数转换为整数(乘2的幂是因为乘2的移位运算效率最高)
3.总结:将小数通过左移n位变为整数进行运算,运算完毕,右移相同n位,变回为对应小数。(浮沉)

二.实现

1.浮点数与Q格式的相互转换(C语言实现)

a.一般方法

(1)浮点数转换为Q格式

int FtoQ (float a , unsigned char q)
{int temp;temp = a * (1 << q);//借位数上去return temp;
}

(2)Q格式转换为浮点数

float QtoF(int a , unsigned char q)
{float temp;temp = a >> q;//欠多少位还回去多少位return temp;
} 

b.防止溢出的方法,Q15/Q31类型可以有效防止乘除法运算时溢出(但是加减法不能防止溢出),但还有一个常用且简洁的方法∶把数据全部转化成小数,再用Q15格式表示。具体实现方法参见:

5 DSP Q格式 - 道客巴巴

2.Q格式四则运算(C语言实现)

核心思路:

Q的本质:升高的2次幂阶数(迟早要还回来)

  • 加减法必须相同的Q格式的数据才能相加减,不同Q格式的数据必先通过移位至相同的Q格式后才能相加减。

  • 乘法:不同Q格式的数据向乘,相当于Q值相加

  • 除法:不同Q格式的数据向乘,相当于Q值相减

  • 定点左移:相当于Q值相加

  • 定点右移:相当于Q值相减

a.输入均为Q格式数据,输出为Q格式结果

(1)加法

int q_add32(int a,int b)
{return (a + b);
}

(2)减法

int q_sub32(int a,int b)
{return (a - b);
}

(3)乘法

int q_mul32(int a , int b , unsigned char q)
{int result;result= ((long long int)a * b) >> q;return result;
}

(4)除法

int q_div(int a , int b , unsigned char q)
{int result;result = ((long long int)a << q) / b;return result;
}

b.推广型乘除运算,输入输出Q值不同(应用不多,一般情况都是统一q值,但这样写有利于加深理解)

(1)乘法

int q_mul32(int a , int b , unsigned char a_q , unsigned char b_q , unsigned char r_q)
{int result;result = ((long long int)a * b) >> (a_q + b_q - r_q);return result;
}

(2)除法

int q_div(int a , int b , unsigned char a_q , unsigned char b_q , unsigned char r_q)
{int result;result = ((long long int)a << (r_q - a_q  + b_q)) / b;return result;
}

DSP应用学习:定点DSP的小数运算方法—Q格式相关推荐

  1. DSP数的表示:定点小数Q 格式表示和加法

    DSP数的表示:定点小数Q 格式表示和加法 DSP数的表示:定点小数Q 格式表示和加法 在低开销DSP上表示小数 Q格式 小数点位置选择 Q格式举例 符号扩展 Q格式加法 使用保护位(guard bi ...

  2. 定点DSP与浮点DSP的比较(定点DSP和浮点DSP的定义)

    [ 首先要理解什么是定点运算,浮点运算 你要知道DSP芯片是如何处理小数的 这就涉及的是小数的定标问题.数值的精度与数值的范围就成了一对矛盾了. 你要知道:支持浮点运算的DSP就是浮点DSP芯片,在这 ...

  3. 【DSP学习笔记】定点DSP小数乘加计算

    由于我装的版本是CCS5.5,此版本只支持C55系列的软件仿真而不支持C54系列的软件仿真,所以本次试验我采用TMS320C5510芯片进行,新建工程的过程这里不再赘述. 以下分别采用汇编语言和C语言 ...

  4. 语音识别及其定点DSP实现

    语音识别研究的根本目的是研究出一种具有听觉功能的机器,能直接接受人的口呼命令,理解人的意图并做出相应的反映.语音识别系统的研究涉及微机技术.人工智能.数字信号处理.模式识别.声学.语言学和认知科学等许 ...

  5. 浅论定点DSP与浮点DSP的区别

    最近在研究的一个项目中必须要用到DSP处理器.可是在选型时遇到了一个问题,该选择定点型的DSP,还是选浮点型的DSP?这两者有什么区别呢?于是专门查找并总结了一些资料,如下: 一般来说,定点DSP处理 ...

  6. TI DSP入门学习

    本FAQ是针对刚刚进入DSP硬件和软件设计领域的网友,希望能够帮助大家快速入门.在设计和调试时少走弯路. 水平有错误和不完善的地方,大家一定指出,免得流毒无穷.欢迎大家补充!! 1.TI DSP的选型 ...

  7. dsp处理浮点数_定点DSP如何做浮点运算

    许多DSP芯片只支持整数运算,如果现在这些芯片上进行小数运算的话,定点小数运算应该是最佳选择了,此外即使芯片支持浮点数,定点小数运算也是最佳的速度选择. 在DSP世界中,由于DSP芯片的限制,经常使用 ...

  8. Bmu计算机,高性能定点DSP位处理单元BMU的 - 处理器/DSP - 电子发烧友网

    1 功能概述 位处理单元(Bit ManipulaTION unit,BMU)主要由取指电路.移位数据处理电路.移位选择处理电路.桶形移位电路和输出电路等几部分组成.BMU的输入数据是36位的BMUi ...

  9. DSP(TMSF280049C)学习笔记1:软件的安装与新工程的建立

    DSP(TMSF280049C)学习笔记1:软件的安装与新工程的建立 初次接触DSP(TMSF280049C)这款开发板,主要对学习的过程进行记录,因为是初次学习,可能有些地方存在错误,还请各位大神帮 ...

最新文章

  1. logstash mysql eror_Logstash安装记录(报错com.mysql.jdbc.Driver not loaded的解决)
  2. 基于workerman实现的web消息推送站内信功能
  3. Quick-cocos2d-x3.3 Study (一) --------- 创建一个UI标签
  4. vwmare vSphere 4.0产品介绍
  5. 如何更改远程Git存储库的URI(URL)?
  6. html 控件坐标定位,利用JS改变html控件位置
  7. linux 瘦客户机系统,2X ThinClientOS基于Linux的瘦客户端系统 | MOS86
  8. SpecFlow特性介绍1-Step Definitions
  9. 6 Springboot 整合Redis
  10. 自然语言12_Tokenizing Words and Sentences with NLTK
  11. html5/css3响应式布局介绍
  12. 双linux共用swap,在Linux和FreeBSD系统上共享swap空间
  13. icml和nips等各类重要会议论文收集
  14. wepy公共样式_wepy组件化开发之html转换组件
  15. win8计算机背景黑色,Win8电脑桌面背景突然变黑怎么办?
  16. matlab 三角函数积分,正弦函数与三角函数积分及Matlab编程.doc
  17. mysql .idb_mysql.idb
  18. ads1256模块模拟测试_使用模拟进行测试
  19. LATTICE FPGA 工具介绍之ACTIVE-HDL 建立工程及仿真步步来(1)
  20. ARPG游戏的战斗系统设计经验分享

热门文章

  1. STM32F407-SPI通信接口
  2. 【附源码】计算机毕业设计JAVA评标专家管理信息系统
  3. datastage 函数_DataStage常用函数大全.doc
  4. android 5.1 正在运行,android5.1在x86上运行稳定吗
  5. Cassandra 配置详解
  6. window Cassandra环境搭建
  7. 张驰课堂:老板会武术,谁也挡不住!六西格玛培训的魅力
  8. wordpress二次元动漫主题模板kanmanman
  9. 基于JavaWEB+MySQL的二手闲置物品交易网站系统
  10. flex4/air 护眼健康卫士(源码/air安装包)