完整版教程下載地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547
第1章 初學數字信號處理准備工作
本期教程開始帶領大家學習DSP教程,學習前首先要搞明白一個概念,DSP有兩層含義,一個是DSP芯片也就是Digital Signal Processor,另一個是Digital Signal Processing,也就是我們常說的數字信號處理技術。本教程主要講的是后者。
1.1 初學者重要提示
1.2 STM32F4的DSP功能介紹
1.3 Cortex-M4內核的DSP和專業DSP的區別
1.4 ARM提供的CMSIS-DSP庫
1.5 TI提供的32位定點DSP庫IQmath
1.6 ARM DSP軟件替代模擬器件的優勢
1.7 Matlab的安裝
1.8 總結
1.1 初學者重要提示
- 關於學習方法問題,可以看附件章節A。
- 這幾年單片機的性能越來越強勁,DSP芯片的中低端應用基本都可以用單片機來做。
- 當前單片機AI也是有一定前景的,ARM一直在大力推進,很多軟件廠商和研究機構也在不斷的努力。通過此貼可以了解下:單片機AI的春天真的來了,ARM最新DSP庫已經支持NEON,且支持Python http://www.armbbs.cn/forum.php?mod=viewthread&tid=94406 。
1.2 STM32F4的DSP功能介紹
STM32F4是采用的Cortex-M4內核,而DSP功能是內核自帶的,下面我們通過M4內核框圖來了解下:
重點看如下兩個設計單元:
- DSP
DSP單元集成了一批專用的指令集(主要是SMID指令和快速MAC乘累加指令),可以加速數字信號處理的執行速度。
- FPU
Cortex-M4內核支持單精度浮點,可以大大加速浮點運算的處理速度。
下面是Cortex-M3,M4和M7的指令集爆炸圖:
通過這個圖,我們可以了解到以下幾點:
- M4和M7系列有相同的DSP指令集。
- M7相比M4系列要多一些浮點指令集。
- 同時這里要注意一個小細節,浮點指令都是以字符V開頭的。通過這點,我們可以方便的驗證是否正確開啟了FPU(MDK或者IAR調試狀態查看浮點運算對應的反匯編是否有這種指令)。
不同M內核的DSP性能比較:
- Cortex-M7內核的DSP性能最強。
- Cortex-M3,M4和M33是中等性能,其中M3最弱。
- Cortex-M0,M0+和M23性能最弱。
1.3 Cortex-M4內核的DSP和專業DSP的區別
M核的DSP處理單元與專業DSP的區別:
1.4 ARM提供的CMSIS-DSP庫
為了方便用戶實現DSP功能,ARM專門做一個DSP庫CMSIS-DSP,主要包含以下數字信號處理算法:
- BasicMathFunctions
提供了基本的數據運算,如加減乘除等基本運算,以_f32結尾的函數是浮點運算,以_q8, _q15, _q31,結尾的函數是定點運算,下面是部分API截圖:
- FastMathFunctions
主要提供SIN,COS以及平方根SQRT的運算。
- ComplexMathFunctions
復雜數學運算,主要是向量,求模等運算。下面是部分API截圖:
- FilteringFunctions
主要是濾波函數,如IIR,FIR,LMS等,下面是部分API截圖:
- MatrixFunctions
主要是矩陣運算。
- TransformFunctions
變換功能。 包括復數FFT(CFFT),復數FFT逆運算(CIFFT),實數FFT(RFFT),實數 FFT 逆運算,下面是部分API截圖:
- ControllerFunctions
控制功能,主要是PID控制函數和正余弦函數。
- StatisticsFunctions
統計功能函數,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截圖。
- SupportFunctions
支持功能函數,如數據拷貝,Q格式和浮點格式相互轉換。
- CommonTables
arm_common_tables.c 文件提供位翻轉或相關參數表。
1.5 TI提供的32位定點DSP庫IQmath
初次使用這個定點庫,感覺在各種Q格式的互轉、Q格式數值和浮點數的互轉處理上更專業些,讓人一目了然。
所以本次教程也會對IQmath的時候做個介紹並配套一個例子。
1.6 ARM DSP軟件替代模擬器件的優勢
我們日常生活中用到DSP的地方很多,以生活中的設備為例:
通過ARM DSP軟件替換模擬組件可以降低成本,PCB的面積和設計時間,同時提高靈活性和適應性。
- 降低BOM成本
將模擬電路轉換為軟件的最明顯的好處是材料清單成本(BOM)減少。
- 提高設計靈活性
使用模擬濾波器來不斷調節電路以獲得最佳性能時,這種情況並不少見。較小的電路板修改會導致新的電氣特性突然改變寄生電容或電感,從而導致模擬電路達不到預期。將模擬電路轉換為DSP算法不僅可以消除這種風險,還可以根據軟件的需要增加調整,且更靈活性。
- 減少產品尺寸
降低BOM成本具有額外的好處,也允許開發人員減少其產品的尺寸。
- 縮短設計周期時間
將模擬電路轉換為軟件有助於縮短設計周期。這有幾個原因:
-
- 首先,有很多工具可供軟件設計人員模擬和生成替換模擬電路所需的DSP算法。這通常比通過電路仿真和測試調整電路所需的時間快得多。
- 其次,如果需要進行更改,可以在軟件中進行更改,這可以在幾分鍾內完成,而不必重新調整電路板或進行硬件修改。
- 現場適應性
在某些產品中,設計者很難預料用戶在現場所遇到的各種情況。使用DSP算法,設計者甚至用戶都可以進行實時調整,以適應現場條件,而無需進行大量硬件修改。
用數字信號處理算法替換模擬電路有很多好處。需要設計者在實際應用中權衡利益,選擇最合適的方案。
1.7 Matlab安裝
Matlab是學習DSP過程中非常重要的輔助工具,也是需要熟練掌握的,本教程的第2章到第5章進行了入門介紹。
1.8 總結
本期教程主要是做一些入門性的介紹,下期教程將開始實戰。