同一C语言程序写进不同型号的DSP芯片,他们结果相同吗

同一C语言程序写进不同型号的DSP芯片,他们结果相同吗,第1张

看看你所用到的功能在这两个不同型号的芯片说明书里软件 *** 作上,功能上是否有差别。如果没有差别,编译正常 且外围电路都一样能正常工作的话,结果电路所完成的功能一般都会相同。只是不同芯片,性能不一样,执行速度等都有所差别

至少要有一定的算法基础。

DSP上跑算法是较适合的,所谓数字信号处理器所做的就是用算法处理数据,在DSP上要考虑的是如何最高效地利用所有可利用的优化(包括硬件和软件上的)来达到一个理想的效果。所以编写要求最高的DSP算法需要对所运行的DSP的软、硬件环境有一个全面和透彻的理解。

一般我们不会去抠算法这一块,我们会做一些算法移植(比如把ARM上或PC上现成的算法移植到DSP),DSP厂家一般会提供一些已经优化的算法基础函数,我们会调用这些库,移植得不好就选一款更快的DSP。

其他的控制程序就和PC机、ARM编程差不多了。

点击有个按钮(三个正方形 红绿白 叠加在一起),在哪里可以添加。

Keil介绍、下载、安装与注册:

>

如何使用STM32F4的DSP库

我们平常所使用的CPU为定点CPU,意思是进行整点数值运算的CPU。当遇到形如11+11的浮点数运算时,定点CPU就遇到大难题了。对于32位单片机,利用Q化处理能发挥他本身的性能,但是精度和速度仍然不会提高很多。

现在设计出了一个新的CPU,叫做FPU,这个芯片专门处理浮点数的运算,这样处理器就将整点数和浮点数分开来处理,整点数交由定点CPU处理而浮点数交由FPU处理。我们见到过TI的DSP,还有STM32F4系列的带有DSP功能的微控制器。前者笔者没有用过,不作评论,而后者如果需要用到FPU的浮点运算功能,必须要进行一些必要的设置。

首先,由于浮点运算在FPU中进行,所以首先应该使能FPU运行。在system_init()中,定义__FPU_PRESENT和__FPU_USED

/

FPU

settings------------------------------------------------------------/

#if

(__FPU_PRESENT

==

1)&&

(__FPU_USED

==

1)

SCB->CPACR

|=

((3UL<<

102)|(3UL

<<

112));

/set

CP10

and

CP11

Full

Access

/

#endif

这样就使能了FPU。

对于上述改变,当程序中出现这种简单的加减乘除运算FPU就起作用了。但是对于复杂的如三角运算、开方运算等,我们就需要加入mathh头文件。但是如果单纯的加入他,那么Keil会自动调用内部的mathh,该头文件是针对ARM处理器的,专门用于定点CPU和标准算法(IEEE-754)。对于使用了FPU的STM32F4是没有任何作用的。所以,需要将mathh换成ST的库,即arm_mathh。在该头文件中,涉及到另一个文件core_cmxh(x=0、3、4),当然了,如同STM32F1系列一样,在工程中加入core_cm4h即可。

到这里,算是全部设置完毕,之差最后一步,调用!但是别小看了这一步,因为如果调用的不正确,全面的设置就白费了。在使用三角函数如sin()、cos()时不要直接写如上形式,因为他们函数的名字来自于mathh,所以你调用的仍旧是Keil库中的标准mathh。要使用arm_mathh中的arm_sin_f32()函数(见Line5780,原函数见DSP_Lib\Source\FastMathFunctions),可以看到他利用的是三次样条插值法快速求值(见Line263

/

Cubic

interpolation

process

/)。

注意一下例外函数,sqrt(),在arm_mathh中为arm_sqrt_f32()。使用他的时候需要同时开启#if(__FPU_USED

==

1)

&&

defined

(

__CC_ARM

)才行,切记!还可以发现开方函数还有q15和q31之分,我想他们的区别就是精度的问题,但是他们没有应用FPU来计算,说白了就是利用0x5f3759df这个数进行快速开方

如何使用STM32F4的DSP库

我们平常所使用的CPU为定点CPU,意思是进行整点数值运算的CPU。当遇到形如11+11的浮点数运算时,定点CPU就遇到大难题了。对于32位单片机,利用Q化处理能发挥他本身的性能,但是精度和速度仍然不会提高很多。

现在设计出了一个新的CPU,叫做FPU,这个芯片专门处理浮点数的运算,这样处理器就将整点数和浮点数分开来处理,整点数交由定点CPU处理而浮点数交由FPU处理。我们见到过TI的DSP,还有STM32F4系列的带有DSP功能的微控制器。前者笔者没有用过,不作评论,而后者如果需要用到FPU的浮点运算功能,必须要进行一些必要的设置。

首先,由于浮点运算在FPU中进行,所以首先应该使能FPU运行。在system_init()中,定义__FPU_PRESENT和__FPU_USED

/ FPU settings------------------------------------------------------------/

#if (__FPU_PRESENT == 1)&& (__FPU_USED == 1)

SCB->CPACR |= ((3UL<< 102)|(3UL << 112)); /set CP10 and CP11 Full Access /

#endif

这样就使能了FPU。

对于上述改变,当程序中出现这种简单的加减乘除运算FPU就起作用了。但是对于复杂的如三角运算、开方运算等,我们就需要加入mathh头文件。但是如果单纯的加入他,那么Keil会自动调用内部的mathh,该头文件是针对ARM处理器的,专门用于定点CPU和标准算法(IEEE-754)。对于使用了FPU的STM32F4是没有任何作用的。所以,需要将mathh换成ST的库,即arm_mathh。在该头文件中,涉及到另一个文件core_cmxh(x=0、3、4),当然了,如同STM32F1系列一样,在工程中加入core_cm4h即可。

到这里,算是全部设置完毕,之差最后一步,调用!但是别小看了这一步,因为如果调用的不正确,全面的设置就白费了。在使用三角函数如sin()、cos()时不要直接写如上形式,因为他们函数的名字来自于mathh,所以你调用的仍旧是Keil库中的标准mathh。要使用arm_mathh中的arm_sin_f32()函数(见Line5780,原函数见DSP_Lib\Source\FastMathFunctions),可以看到他利用的是三次样条插值法快速求值(见Line263 / Cubic interpolation process /)。

注意一下例外函数,sqrt(),在arm_mathh中为arm_sqrt_f32()。使用他的时候需要同时开启#if(__FPU_USED == 1) && defined ( __CC_ARM )才行,切记!还可以发现开方函数还有q15和q31之分,我想他们的区别就是精度的问题,但是他们没有应用FPU来计算,说白了就是利用0x5f3759df这个数进行快速开方

DSP的核心,是一个跨越不同推广资源平台,使用统一的定向投放,数据,优化和报告,透明自动地购买媒介资源的软件。什么是合适的DSP,总结起来主要有四点,合适的RTB能力,合适的定向能力,合适的数据分析和合适的技术能力。合适的RTB能力一个DSP必须能够连接到许多不同的推广位资源库,这样才能创造出一个每天有百亿,甚至更多展现的巨大的推广位库存池。在这个过程中,DSP可以通过使用RTB或者其他方法实现在没有购买的情况下就能看到推广展现的机会。 一般的环节中都是有多个DSP实时竞价,通过Real-time,就是120毫秒,进行竞价,最后竞价高者得,从而有效帮助媒体提高CPM单价,DSP必须能够实时地对每个推广展现做出是否参与竞价的决定和出价金额多少的决定。DSP必须能够跨越所有推广库存资源,提供全局化投放频率控制。老的平台通过向别的服务器发送非实时的指令来购买资源位。它们只是具备非常局限性的控制和定向能力的交互界面而已。 而实时竞价是众多人竞价,120毫秒之内开槌,结束竞价的环节。它不但使买方实现了精准营销,也在完全意义上给买方实现了平台营销,在一个竞价过程中同时帮助卖方实现CPM收益提升,这是一个共赢的结局。 合适的客户定向能力DSP必须有一定数量的客户基础,只有拥有庞大的客户群,才能具备一定的定向能力。才能根据客户的分类和需求,对推广投放进行精准的营销。同时DSP在媒介购买和用户数据购买过程中的各个方面必须是完全透明的。在DSP中,用户可以管理他们所有的推广计划,并且所有的消耗,数据,站点,成交和展现原因都是透明的。合适的数据分析能力DSP必须能够提供统一的优化,分析,报告和推广展现原因分析。 这些是一个优秀的DSP的最有价值的部分。DSP必须能够让它的用户可以在整个推广展现池里利用第一方,第二方,和第三方提供的数据。这意味着客户可以映射他们自己的用户数据(第一方),使用DSP的数据(第二方),并且购买第三方提供的数据。这些数据可以用在非常复杂的多变量定向功能上。 合适的技术能力DSP必须要有cookie映射和数据分享系统,能够整合第三方数据,代理人数据,分析公司数据和客户的数据。这个过程在线下和线上都能够进行。DSP必须能够实时地计算出每一个展现的价值,这个价值由展现的多种特征决定。这种能力使得高效和有效的媒体资源购买成为可能。通过实时竞价系统可以让媒体流量获得更高的收益,可以让依托于DSP的算法与匹配模型的推广主的花费更物有所值。同时,DSP只有具备技术上的对接能力,才能更好的和Ad Exchange系统进行数据交换。以达到双方平台的有效互通。完成实时竞价的能力。什么是DSP?什么是合适的DSP

以上就是关于同一C语言程序写进不同型号的DSP芯片,他们结果相同吗全部的内容,包括:同一C语言程序写进不同型号的DSP芯片,他们结果相同吗、做dsp需要学习c数据结构与算法吗、KEIL5中如何添加官方的DSP库STM32F10x_DSP_Lib_V2.0.0等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9857131.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存