浮点DSP,浮点DSP是什么意思

浮点DSP,浮点DSP是什么意思,第1张

通常浮点DSP的数据宽度是32位的,它用24位组成尾数,用8位组成阶码。在实际应用中,尾数定义精度,阶码表示动态范围。

定点运算DSP在应用中已取得了极大的成功,而且仍然是DSP应用的主体。然而,随着对DSP处理速度与精度、存储器容量、编程的灵活性和方便性要求的不断提高、自80年代中后期以来,各DSP生产厂家陆续推出了各自的32bit浮点运算DSP。

和定点运算DSP相比,浮点运算DSP具有许多优越性:

浮点运算DSP比定点运算DSP的动态范围要大很多。定点DSP的字长每增加1bit,动态范围扩大6dB。6666bit字长的动态范围为96dB。程序员必须时刻关注溢出的发生。例如,在作图像处理时,图像作旋转、移动等,就很容易产生溢出。这时,要么不断地移位定标,要么作截尾。前者要耗费大量的程序空间和执行时间,后者则很快带来图像质量的劣化。总之,是使整个系统的性能下降。在处理低信噪比信号的场合,例如进行语音识别、雷达和声纳信号处理时,也会发生类似的问题。而32bit浮点运算DSP的动态范围可以作到666536dB,这不仅大大扩大了动态范围,提高了运算精度,还大大节省了运算时间和存储空间,因为大大减少了定标,移位和溢出检查。

由于浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其处理速度大大高于定点DSP。这一优点在实现高精度复杂算法时尤为突出,为复杂算法的实时处理提供了保证。

32bit浮点DSP的总线宽度较定点DSP宽得多,因而寻址空间也要大得多。这一方面为大型复杂算法提供了可能、因为省的DSP目标子程序已使用到几十MB存储器或更多;另一方面也为高级语言编译器、DSP *** 作系统等高级工具软件的应用提供了条件。

DSP的进一步发展,必然是多处理器的应用。

float oint unit浮点运算单元

STM32系列M3不支持,M4支持单精度,M7支持双精度

如图独立于CPU内核,可单独开启关闭

设置方法

STM32F4采用Cortex-M4内核,相比Cortex-M3系列除了内置硬件FPU单元,在数字信号处理方面还增加了DSP指令集,支持诸如单周期乘加指令(MAC),优化的单指令多数据指令(SIMD),饱和算数等多种数字信号处理指令集。相比Cortex-M3,Cortex-M4在数字信号处理能力方面得到了大大的提升。Cortex-M4执行所有的DSP指令集都可以在单周期内完成,而Cortex-M3需要多个指令和多个周期才能完成同样的功能。

个人理解就是处理数据更快

Drivers-CMSIS-DSP-Lib中,Examples文件夹下是一些测试实例,Source中就是函数库了

参考文章:

https://www.cnblogs.com/xtark/p/9371415.html

1>溢出分类:

上溢(overflow), 下溢(underflow)

2>溢出的结果: Min Max unsigned char 0 255 signed char -128 127 unsigned int 0 65535 signed int -32768 32767 上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。

例:signed int :32767+1=-32768; 32768-1=32767

unsigned char:255+1=0; 0-1=255

3>为了避免溢出的发生,一般在DSP中可以设置溢出保护功能。当发生溢出时,自动将结果设置为最大值或最小值。 1>定义变量为浮点型(float,double),用C语言抹平定点处理器和浮点处理器的区别,但是程序的代码庞大,运算速度也慢。

2>放大若干倍表示小数。比如要表示精度为0.01的变量,放大100倍去运算,运算完成后再转化。但是这个做法比较僵硬,如要将上面的变量重新定义成0.001精度,又需要放大1000倍,且要重新编写整个程序,考虑溢出等问题。

3>定标法:Q格式:通过假定小数点位于哪一位的右侧,从而确定小数的精度。

Q0:小数点在第0位的后面,即我们一般采用的方法

Q15 小数点在第15位的后面,0~14位都是小数位。

转化公式:Q=(int)(F×pow(2,q)) F是浮点数

F=(float)(Q×pow(2,-q)) Q是定标数 1>定点加减法:须转换成相同的Q格式才能加减

2>定点乘法:不同Q格式的数据相乘,相当于Q值相加

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

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

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

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

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11379341.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存