數(shù)字信號(hào)處理 (DSP) 為開(kāi)發(fā)人員提供了以靈活且經(jīng)濟(jì)高效的方式清理和分析復(fù)雜信號(hào)的能力,這一切都來(lái)自軟件。當(dāng)開(kāi)發(fā)人員通常考慮 DSP 時(shí),他們通常會(huì)想到昂貴的專(zhuān)用處理器,但現(xiàn)代微控制器(例如 Arm Cortex-M 處理器)現(xiàn)在包含 DSP 擴(kuò)展,允許 DSP 算法在資源受限的環(huán)境中高效執(zhí)行。在本文中,我們將探討嵌入式開(kāi)發(fā)人員在開(kāi)始使用 Arm Cortex-M 處理器的 DSP 時(shí)可以遵循的幾個(gè)技巧。
技巧1 – 了解問(wèn)題域
在深入了解 DSP 之前,開(kāi)發(fā)人員了解可以應(yīng)用 DSP 的問(wèn)題領(lǐng)域是很有用的。通常,DSP 應(yīng)用于實(shí)時(shí)流式傳輸?shù)臄?shù)據(jù)信號(hào),例如音頻和語(yǔ)音處理,或靜態(tài)信號(hào),例如圖像處理。DSP 應(yīng)用范圍廣泛,例如聲納、雷達(dá)、語(yǔ)音識(shí)別、電信和控制系統(tǒng)等。
DSP 在嵌入式系統(tǒng)中有幾個(gè)非常常見(jiàn)的應(yīng)用。首先,DSP 可用于將傳統(tǒng)模擬電路轉(zhuǎn)換為軟件,這有很多好處。接下來(lái),DSP 可用于創(chuàng)建數(shù)字濾波器,例如無(wú)限脈沖響應(yīng) (IIR) 和有限脈沖響應(yīng) (FIR) 濾波器。這些濾波器經(jīng)常用于控制系統(tǒng),例如電機(jī)控制系統(tǒng),以消除傳感器信號(hào)中的噪聲。最后,開(kāi)發(fā)人員可以使用 DSP 使用Fast Fourier Transform (FFT) 將時(shí)域中的信號(hào)轉(zhuǎn)換為頻域,從而分析信號(hào)的頻率分量。
技巧2 – 探索最新的 DSP 技術(shù)
了解 DSP 為當(dāng)今設(shè)計(jì)人員提供的功能的一個(gè)好方法是檢查 DSP 技術(shù)的使用位置和方式。讓我們先看看一些工具,然后是尖端應(yīng)用程序。
首先,有允許開(kāi)發(fā)人員模擬、測(cè)試和部署 DSP 算法的高級(jí)工具,例如 MATLAB。MATLAB 為設(shè)計(jì)人員提供了一組 DSP 庫(kù),這些庫(kù)可以組合在一個(gè)易于使用的界面中,以便在將算法部署到目標(biāo)設(shè)備之前測(cè)試其行為方式。該工具還允許嵌入式開(kāi)發(fā)人員生成在目標(biāo)設(shè)備上執(zhí)行的低級(jí)微控制器代碼。MATLAB 功能廣泛,可用于解決任意數(shù)量的 DSP 相關(guān)問(wèn)題。
其次,還有一些工具,例如 ASN 濾波器設(shè)計(jì)器,允許開(kāi)發(fā)人員輕松創(chuàng)建數(shù)字濾波器。開(kāi)發(fā)人員可以選擇他們想要?jiǎng)?chuàng)建的濾波器類(lèi)型,例如 IIR 或 FIR,然后在濾波器圖上的點(diǎn)周?chē)蟿?dòng)以獲得他們需要的濾波器響應(yīng)。一旦實(shí)現(xiàn)了濾波器響應(yīng),設(shè)計(jì)人員就可以生成以多種不同格式實(shí)現(xiàn)濾波器的代碼,包括與 Cortex-M CMSIS 兼容的代碼。
除了這些工具,開(kāi)發(fā)人員還可以檢查應(yīng)用程序的用途,以深入了解如何使用 DSP。使用 DSP 的真正獨(dú)特的解決方案是 Chirp。Chirp 使用音頻將憑證信息從移動(dòng)設(shè)備傳輸?shù)竭吘壴O(shè)備以進(jìn)行配置。這消除了配置物聯(lián)網(wǎng)邊緣節(jié)點(diǎn)所需的所有額外步驟,這些步驟通常需要按住按鈕一段時(shí)間,將其轉(zhuǎn)換為接入點(diǎn),連接到它,然后告訴它應(yīng)該連接到哪個(gè)網(wǎng)絡(luò)。Chirp 創(chuàng)新性地使用 DSP 將配置信息轉(zhuǎn)換為音頻流,所有這些都通過(guò) DSP 算法進(jìn)行處理,大大簡(jiǎn)化了設(shè)備設(shè)置。
這些只是可用于 DSP 的工具和技術(shù)的幾個(gè)示例,但嵌入式開(kāi)發(fā)人員可以探索數(shù)百種工具和技術(shù)。
技巧3 – 選擇一個(gè)低成本的開(kāi)發(fā)板進(jìn)行試驗(yàn)
開(kāi)始使用DSP的最佳方式是親自動(dòng)手。這可以通過(guò)選擇具有支持DSP擴(kuò)展的 Cortex-M4處理器的開(kāi)發(fā)板來(lái)完成。有很多板可供選擇,比如基于S6E2CC系列微控制器的Cypress FM4入門(mén)套件和ST Microelectronics STM32F4-Discovery板。
FM4入門(mén)套件非常適用于Donald S. Reay的示例,也可用于Arm的大學(xué)計(jì)劃。STM32F4-Discovery板還有一個(gè)很棒的應(yīng)用筆記,演示了Arm CMSIS 庫(kù)。開(kāi)發(fā)板還帶有一個(gè) LCD,可以讓開(kāi)發(fā)人員輕松顯示轉(zhuǎn)換和信號(hào)。
無(wú)論選擇哪種開(kāi)發(fā)板,重要的是獲得實(shí)踐經(jīng)驗(yàn),而不僅僅是書(shū)本知識(shí),才能成為精通的DSP開(kāi)發(fā)人員。
技巧4 – Arm CMSIS-DSP 庫(kù)
開(kāi)發(fā)人員在開(kāi)始使用 DSP 時(shí)可以利用的最佳資源之一是使用Arm CMSIS-DSP 庫(kù)。CMSIS-DSP 庫(kù)可以免費(fèi)下載,包含 60 多種不同的 DSP 相關(guān)函數(shù)。這些函數(shù)旨在為嵌入式開(kāi)發(fā)人員提供在 Cortex-M 處理器上開(kāi)發(fā)快速高效的 DSP 算法所需的構(gòu)建塊。該庫(kù)包含十種不同類(lèi)別的函數(shù),其中包括:
基本數(shù)學(xué)函數(shù),例如向量點(diǎn)積、向量乘法、向量加法
快速數(shù)學(xué)函數(shù),例如平方根、正弦和余弦
復(fù)雜的數(shù)學(xué)函數(shù),例如復(fù)雜點(diǎn)積、復(fù)數(shù)乘實(shí)乘法
濾波器,例如 FIR、IIR、Biquad 和 Convolution
矩陣函數(shù),如矩陣乘法、復(fù)矩陣乘法
變換,例如復(fù)雜 FFT 函數(shù)
電機(jī)控制功能,包括矢量克拉克變換、矢量帕克變換、PID 電機(jī)控制
統(tǒng)計(jì)函數(shù),包括均方根 (RMS)、標(biāo)準(zhǔn)偏差、最大值和功率
支持功能,例如將數(shù)據(jù)類(lèi)型從浮點(diǎn)數(shù)轉(zhuǎn)換為定點(diǎn)數(shù)
插值函數(shù)。
選擇開(kāi)發(fā)板進(jìn)行試驗(yàn)后,下載 CMSIS-DSP 庫(kù)是很好的第二步。
技巧5 – 參與DSP社區(qū)
開(kāi)始使用DSP時(shí),有許多在線資源可供選擇,但嵌入式開(kāi)發(fā)人員可用的最佳資源之一是在線社區(qū)。社區(qū)為開(kāi)發(fā)人員提供了提問(wèn)的機(jī)會(huì),并讓更有經(jīng)驗(yàn)的開(kāi)發(fā)人員分享他們的DSP知識(shí)。網(wǎng)上有幾個(gè)不錯(cuò)的DSP社區(qū),比如Arm Community和DSP相關(guān)的,這些社區(qū)是免費(fèi)的,并且在他們的論壇上擁有一些知識(shí)最淵博的DSP專(zhuān)家,此外還有大量以前提出的問(wèn)題 DSP資源。
DSP 對(duì)于下一波嵌入式設(shè)備至關(guān)重要——但比以往任何時(shí)候都更容易實(shí)現(xiàn)
DSP已成為嵌入式系統(tǒng)開(kāi)發(fā)人員必不可少的工具。物聯(lián)網(wǎng)、自動(dòng)駕駛汽車(chē)(包括無(wú)人機(jī))和人工智能等行業(yè)的快速增長(zhǎng)正在推動(dòng)對(duì)傳感器的需求不斷增長(zhǎng)。為了以靈活、快速的方式處理來(lái)自這些傳感器的數(shù)據(jù),它們需要在軟件中進(jìn)行數(shù)字化處理。越來(lái)越不需要在昂貴的 DSP 處理器上執(zhí)行此處理,因?yàn)樗ǔ?梢栽?Arm Cortex-M 等微控制器上完成,尤其是在它具有 DSP 擴(kuò)展的情況下。遵循本文中提供的技巧將幫助嵌入式開(kāi)發(fā)人員快速有效地掌握 DSP。