小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

教你如何在STM32中使用DSP指令

 冒險(xiǎn)的K 2021-09-07

簡(jiǎn)介01、DSP簡(jiǎn)介 提到DSP,作為電子專業(yè)的學(xué)生,大部分第一時(shí)間想到的是DSP芯片,DSP芯片的內(nèi)部采用程序和數(shù)據(jù)分開(kāi)的哈佛結(jié)構(gòu),具有專門(mén)的硬件乘法器,廣泛采用流水線操作,提供特殊的DSP指令,可以

01、DSP簡(jiǎn)介

提到DSP,作為電子專業(yè)的學(xué)生,大部分第一時(shí)間想到的是DSP芯片,DSP芯片的內(nèi)部采用程序和數(shù)據(jù)分開(kāi)的哈佛結(jié)構(gòu),具有專門(mén)的硬件乘法器,廣泛采用流水線操作,提供特殊的DSP指令,可以用來(lái)快速的實(shí)現(xiàn)各種數(shù)字信號(hào)處理算法。

實(shí)際上,DSP的全稱是數(shù)字信號(hào)處理(DigitalSignalProcessing,簡(jiǎn)稱DSP)。在過(guò)去的二十多年時(shí)間里,數(shù)字信號(hào)處理已經(jīng)在通信等領(lǐng)域得到極為廣泛DSP技術(shù)圖解的應(yīng)用。

如下面ARM官方描述的,ARM處理器是支持DSP的。

圖片

主要是在cortex-R和Cortex-M內(nèi)核支持。

圖片

Arm的數(shù)字信號(hào)控制器Cortex-M4、Cortex-M7、Cortex-M33、Cortex-M35P和Cortex-M55處理器滿足了對(duì)高性能通用代碼處理以及數(shù)字信號(hào)處理應(yīng)用的需求。

圖片

向Thumb指令集添加DSP擴(kuò)展和可選浮點(diǎn)單元(FPU),旨在提高數(shù)值算法的性能。此外,它們提供了直接在Cortex-M處理器上執(zhí)行信號(hào)處理操作的機(jī)會(huì),同時(shí)保持Cortex-M程序員模型的易用性。

02、IAR中DSP Libary的使用

ArmCortex-M3 /M4處理器提供信號(hào)處理指令,例如SIMD(單指令多數(shù)據(jù))。特別是Cortex-M4專為DSP應(yīng)用而設(shè)計(jì),它支持高級(jí)SIMD,MAC(乘法和累加)指令。此外,Cortex-M4F器件具有FPU(浮點(diǎn)單元),用于處理浮點(diǎn)計(jì)算。

有幾種方法可以使用這些指令,例如使用匯編程序例程或內(nèi)部函數(shù),但最實(shí)用的方法之一是使用ArmCortex微控制器軟件接口標(biāo)準(zhǔn)(CMSIS)DSP庫(kù)。CMSIS-DSP庫(kù)專為Cortex-M處理器而設(shè)計(jì),它為數(shù)字信號(hào)處理提供優(yōu)化的功能,如矩陣函數(shù),統(tǒng)計(jì)函數(shù),高級(jí)數(shù)學(xué)函數(shù)等。

IAREmbedded Workbench forArm中提供了預(yù)構(gòu)建的CMSIS-DSP庫(kù)及其源代碼,在本文中,我們將了解如何將CMSIS-DSP庫(kù)與IAREmbedded Workbench for Arm一起使用以及如何改進(jìn)性能。

Configuringthe CMSIS-DSP library

配置CMSIS-DSP庫(kù)

圖片

讓我們看看如何調(diào)用CMSIS-DSP功能及其性能。這里我們將使用sqrt(平方根)函數(shù)并與標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)進(jìn)行比較:

//#define DSP_Lib#ifdef DSP_Lib
#include #endif#include #include int main()
{
#ifdef DSP_Lib
  float32_t f_input_cmsis_dsp = 2;
  float32_t f_result_cmsis_dsp;#endif
  
  float f_input = 2;  float f_result;
  

#ifdef DSP_Lib  /* Using CMSIS-DSP library */
  arm_sqrt_f32(f_input_cmsis_dsp,&f_result_cmsis_dsp);
  printf("f1: %f\n",f_result_cmsis_dsp);#endif
  
  /* Standard math function */
  f_result = sqrt(f_input);
  printf("f2: %f\n",f_result);  
  return 0;
}

結(jié)果如下

f1: 1.414214 f2: 1.414214

接下來(lái),讓我們來(lái)看看性能。

IAREmbedded Workbench中的CYCLECOUNTER寄存器可用于檢查正在運(yùn)行的代碼所消耗的周期數(shù)。在檢查上次執(zhí)行的C/ C ++源代碼或匯編程序步驟期間的循環(huán)次數(shù)時(shí),CCSTEP寄存器非常方便有用。

圖片

設(shè)置斷點(diǎn)并記下sqrt函數(shù)的CCSTEP值:

圖片

在這種情況下,CMSIS-DSPsqrt功能比標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)快10倍以上。

arm_sqrt_f32 :    52 cycles
sqrt :            752 cycles

從這個(gè)簡(jiǎn)單的例子中,我們可以看到CMSIS-DSP非常易于使用,并且顯著提高了性能。

點(diǎn)擊查看本文所在的專輯,STM32F207教程

Tags:

https://www./xitong/140639.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多