你的位置:首頁 > 互連技術(shù) > 正文

使用音頻增強(qiáng)型 DMA 加速復(fù)雜的音頻 DSP 算法

發(fā)布時間:2023-07-31 責(zé)任編輯:lina

【導(dǎo)讀】音頻工程師面臨的挑戰(zhàn)是設(shè)計設(shè)備,提供更好的音頻保真度,支持更多音頻通道,處理更高的采樣率和位深度,同時保持緊張的實(shí)時處理預(yù)算。


音頻工程師面臨的挑戰(zhàn)是設(shè)計設(shè)備,提供更好的音頻保真度,支持更多音頻通道,處理更高的采樣率和位深度,同時保持緊張的實(shí)時處理預(yù)算。

在許多音頻應(yīng)用中,系統(tǒng)性能的主要瓶頸是音頻數(shù)據(jù)的高效移動。多年來,數(shù)字信號處理器 (DSP) 架構(gòu)引入了各種創(chuàng)新,從 DSP 內(nèi)核卸載了許多 I/O 或數(shù)據(jù)移動任務(wù),使其能夠?qū)W⒂谛盘柼幚砣蝿?wù)。

直接內(nèi)存訪問 (DMA) 引擎是當(dāng)今大多數(shù)高性能 DSP 的關(guān)鍵組件。DSP 可以配置 DMA 引擎來訪問片上和片外資源,并促進(jìn)它們之間的傳輸,而不必顯式訪問存儲器或外設(shè)。這些 DMA 傳輸可以與關(guān)鍵 DSP 內(nèi)核處理并行執(zhí)行,以獲得性能。

標(biāo)準(zhǔn) DMA 引擎非常適合傳統(tǒng)的一維和二維算法處理,例如塊復(fù)制和基本數(shù)據(jù)排序。但是,許多音頻算法需要更復(fù)雜的數(shù)據(jù)傳輸。延遲線就是一個例子,它由前一個時間點(diǎn)的音頻樣本組成,用于創(chuàng)建所需的音頻效果(例如回聲)。傳統(tǒng)的 DMA 性能對于管理延遲線來說并不是的,需要對 DMA 架構(gòu)進(jìn)行創(chuàng)新,以有效地處理所需的音頻算法。

是否需要DMA加速?

這個問題的答案是肯定的,原因有兩個。首先,許多高性能 DSP 引擎中的 DMA 通道數(shù)量限制了 (pro) 音頻應(yīng)用。其次,由于對高質(zhì)量音頻的需求,音頻應(yīng)用中的傳統(tǒng)DMA通常需要更多的CPU參與


使用音頻增強(qiáng)型 DMA 加速復(fù)雜的音頻 DSP 算法
圖1。音頻應(yīng)用框圖


上面的框圖描述了典型音頻應(yīng)用中的數(shù)據(jù)流。每個效果獲取前一個效果的輸出,處理數(shù)據(jù),并將其輸出轉(zhuǎn)發(fā)到數(shù)據(jù)處理鏈中的下一個效果(例如,Phaser 效果的輸出被輸入到 Delay 效果,Delay 效果的輸出被發(fā)送到混響) 。

上圖所示的數(shù)字音頻效果依賴于延遲線來實(shí)現(xiàn)。在描述完整的效果系統(tǒng)時,需要多個延遲線。改變設(shè)計中使用的延遲長度會改變音頻效果的質(zhì)量。

延遲線是線性時不變系統(tǒng),其輸出信號是延遲了 x 個樣本的輸入信號的副本。在 DSP 上實(shí)現(xiàn)延遲線的有效方法是使用循環(huán)緩沖器。循環(huán)緩沖區(qū)存儲在線性存儲器的專用部分中;當(dāng)緩沖區(qū)被填滿時,新的數(shù)據(jù)被寫入,從緩沖區(qū)的開頭開始。

循環(huán)緩沖區(qū)數(shù)據(jù)由一個進(jìn)程寫入,由另一個進(jìn)程讀取,這需要單獨(dú)的讀寫指針。讀寫指針不允許交叉,這樣未讀數(shù)據(jù)就不會被新數(shù)據(jù)覆蓋。循環(huán)緩沖區(qū)的大小由效果所需的延遲決定。在本文中,先進(jìn)先出 (FIFO) 和循環(huán)緩沖區(qū)名稱可以互換使用。

當(dāng)使用傳統(tǒng)的 DMA 引擎在基于延遲的音頻效果中移動數(shù)據(jù)時,會為信號處理鏈中的每個效果分配一個單獨(dú)的循環(huán)緩沖區(qū)。饋送到特定音頻效果的輸入數(shù)據(jù)存儲在分配給該效果的循環(huán)緩沖區(qū)中。下面的框圖顯示了更詳細(xì)的數(shù)據(jù)流。在下面圖 2 的框圖中,循環(huán)緩沖區(qū)由環(huán)表示。使用循環(huán)緩沖區(qū)的環(huán)形表示,因?yàn)樗@示分配給循環(huán)緩沖區(qū)的線性地址空間的包裝。當(dāng)指針通過循環(huán)緩沖區(qū)前進(jìn)時,地址將增加,直到遇到回繞條件,導(dǎo)致指針重置到內(nèi)存地址或循環(huán)緩沖區(qū)的起始點(diǎn)。


使用音頻增強(qiáng)型 DMA 加速復(fù)雜的音頻 DSP 算法
圖2. 使用傳統(tǒng)DMA引擎時的Pro音頻應(yīng)用數(shù)據(jù)流框圖


為了產(chǎn)生不同的延遲,DMA 必須從延遲線內(nèi)的不同位置檢索延遲數(shù)據(jù)。如果使用塊處理,則會檢索一組數(shù)據(jù)而不是僅一個樣本。

傳統(tǒng)的 DMA 引擎通常允許程序員指定幾個完整描述所需傳輸?shù)膮?shù)。通常,這些參數(shù)是源地址、目標(biāo)地址、源和目標(biāo)的索引以及傳輸計數(shù)。每次 DMA 傳輸將需要一個典型 DMA 總體功能的通道。

在上面的框圖中,有五個循環(huán)緩沖區(qū)。傳統(tǒng)的 DMA 引擎必須經(jīng)過編程才能將數(shù)據(jù)移入和移出每個緩沖區(qū)。在上面所示的應(yīng)用中,處理一個數(shù)據(jù)塊至少需要 11 次 DMA 傳輸。

這是所需的 DMA 傳輸?shù)臄?shù)量,假設(shè)從每個循環(huán)緩沖區(qū)中只檢索每個效果的一個延遲。在典型應(yīng)用中,每個數(shù)據(jù)塊的 DMA 傳輸數(shù)量會高得多。例如,混響效果的實(shí)現(xiàn)總是需要來自其循環(huán)緩沖區(qū)的多個延遲。

隨著實(shí)現(xiàn)的音頻效果數(shù)量的增加,所需的傳統(tǒng) DMA 傳輸數(shù)量也會增加。因此,系統(tǒng)中可用的傳統(tǒng) DMA 通道的數(shù)量會限制可實(shí)現(xiàn)的音頻效果的數(shù)量。

傳統(tǒng) DMA 在音頻應(yīng)用中的局限性

標(biāo)準(zhǔn) DMA 引擎在以連續(xù)或固定間隔移動長數(shù)據(jù)塊時表現(xiàn)良好。固定間隔傳輸?shù)囊粋€示例是 DMA 引擎訪問延遲線的每四個數(shù)據(jù)樣本。

當(dāng)訪問不連續(xù)或以固定間隔進(jìn)行時,典型的 DMA 性能并不是的。當(dāng)傳統(tǒng)的 DMA 引擎移動循環(huán)緩沖區(qū)數(shù)據(jù)以生成數(shù)字音頻效果時,CPU 在處理一個數(shù)據(jù)塊時必須干預(yù)至少兩次對 DMA 參數(shù)進(jìn)行編程。當(dāng)數(shù)據(jù)訪問環(huán)繞環(huán)形緩沖區(qū)邊界時,CPU 需要對 DMA 參數(shù)進(jìn)行編程,并干預(yù)管理延遲線。


使用音頻增強(qiáng)型 DMA 加速復(fù)雜的音頻 DSP 算法
圖3. 合唱框圖


合唱效果是說明這一點(diǎn)的一個簡單算法示例,如上圖 3 所示。合唱效果通常用于改變樂器的聲音,使其聽起來像是多個樂器在演奏,如果樂器中有人聲,那么此效果往往會使單個聲音聽起來像合唱團(tuán)。我們感知多個聲音或樂器,因?yàn)楫?dāng)多個聲音或樂器同時演奏時,總是存在不的同步和輕微的音高變化。這些是合唱效果的主要特征。

在圖 3 中,Chorus 顯示為輸入與其兩個延遲副本的組合。音調(diào)偏差是通過延遲輸入副本中緩慢變化的延遲量來建模的。延遲緩慢變化,偏差量及其頻率由低頻振蕩器 (LFO) 控制。

如下圖4中的Chorus實(shí)現(xiàn)圖所示,延遲線是通過使用環(huán)形緩沖區(qū)(由兩個同心圓表示)來實(shí)現(xiàn)的。圖 4 中呈現(xiàn)的合唱實(shí)現(xiàn)意味著使用塊處理。此合唱示例中的塊大小是四個樣本。傳入的樣本按順時針方向存儲到循環(huán)緩沖區(qū)中。


使用音頻增強(qiáng)型 DMA 加速復(fù)雜的音頻 DSP 算法
圖4. Chorus 實(shí)現(xiàn)框圖


塊處理同時管理數(shù)據(jù)塊(多個樣本),而不是只管理一個樣本。在此示例中,CPU 等待四個輸入樣本可用,然后計算四個輸出樣本。它通過將輸入樣本塊與從循環(huán)緩沖區(qū)獲取的兩個延遲數(shù)據(jù)塊相結(jié)合來處理這些樣本。

在使用傳統(tǒng) DMA 控制器的情況下(如下圖 5),每次輸入數(shù)據(jù)塊準(zhǔn)備就緒時,CPU 都會收到中斷通知。然后CPU計算合唱輸出。


使用音頻增強(qiáng)型 DMA 加速復(fù)雜的音頻 DSP 算法
圖5. 采用傳統(tǒng) DMA 時 Chorus 實(shí)現(xiàn)時間表


本例中的 DMA 引擎分配必須執(zhí)行兩個關(guān)鍵操作:

1) 將一塊輸入樣本存儲到循環(huán)緩沖區(qū)(以供將來參考)2) 從循環(huán)緩沖區(qū)檢索兩塊延遲數(shù)據(jù)(為下一個輸入樣本塊準(zhǔn)備延遲數(shù)據(jù))。

在這種情況下,CPU 必須通過跟蹤和編程源地址和目標(biāo)地址來協(xié)助 DMA,并在數(shù)據(jù)訪問繞過緩沖區(qū)邊界時進(jìn)行干預(yù)。這需要在每次傳輸之前配置 DMA 引擎。

在 CPU 重新配置 DMA 之前,每個偏移量必須由 CPU 計算(或從預(yù)先計算的表中獲取)。CPU 帶寬得到利用,因?yàn)樗仨氃诿看蝹鬏斨爸匦屡渲?DMA 引擎。在圖 5 中,CPU 時間線活動顯示為兩行:行顯示了處理合唱效果所需的 CPU 活動,第二行顯示了配置 DMA 所需的 CPU 活動。

在復(fù)雜的數(shù)字音頻效果(例如混響)的情況下,必須從循環(huán)緩沖器中檢索的延遲塊的數(shù)量可以達(dá)到256或更多。此外,這些延遲塊中的每一個都不是固定間隔的,并且隨著算法運(yùn)行,偏移量不斷變化。隨著循環(huán)緩沖區(qū)中數(shù)據(jù)訪問量的急劇增加,更復(fù)雜的數(shù)字音頻效果算法(如混響)將需要更多的 CPU 周期。這使得可用于實(shí)際應(yīng)用程序的 CPU 帶寬減少。

當(dāng)多個數(shù)字音頻效果相繼出現(xiàn)時(如圖 1 所示),CPU 將必須協(xié)助 DMA 移動每個處理階段所需和產(chǎn)生的數(shù)據(jù)。在這些任務(wù)期間,CPU 和 DMA 必須同步。同步由 DMA 促進(jìn),它會中斷 CPU。

因此,系統(tǒng)中的中斷數(shù)量會隨著系統(tǒng)復(fù)雜度的增加而增加。這些中斷會帶來很高的開銷,因?yàn)楸仨毐4婕拇嫫饕员A羯舷挛?。除此之外,中斷還會經(jīng)過處理管道并破壞指令緩存的微妙效率。保留上下文會消耗大量周期,并進(jìn)一步改變指令緩存的性能。管道的過度中斷也直接影響整體性能。


免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進(jìn)行處理。


推薦閱讀:

利用智能交流控制設(shè)計方法實(shí)現(xiàn)更好的家電安全

使用模糊邏輯設(shè)計基于 DSP 的電機(jī)控制

兩個開關(guān)正激變換器

低價校準(zhǔn)服務(wù)伴隨儀器隱性成本增加

具有延遲和報警的高低壓切斷

特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
壓控振蕩器 壓力傳感器 壓力開關(guān) 壓敏電阻 揚(yáng)聲器 遙控開關(guān) 醫(yī)療電子 醫(yī)用成像 移動電源 音頻IC 音頻SoC 音頻變壓器 引線電感 語音控制 元件符號 元器件選型 云電視 云計算 云母電容 真空三極管 振蕩器 振蕩線圈 振動器 振動設(shè)備 震動馬達(dá) 整流變壓器 整流二極管 整流濾波 直流電機(jī) 智能抄表
?

關(guān)閉

?

關(guān)閉