當前位置:首頁->方案設計 |
|
使用音頻增強型 DMA 加速復雜的音頻 DSP 算法 |
|
|
文章來源:永阜康科技 更新時間:2023/7/31 10:06:00 |
在線咨詢: |
|
音頻工程師面臨的挑戰(zhàn)是設計設備,提供更好的音頻保真度,支持更多音頻通道,處理更高的采樣率和位深度,同時保持緊張的實時處理預算。
在許多音頻應用中,系統(tǒng)性能的主要瓶頸是音頻數(shù)據(jù)的高效移動。多年來,數(shù)字信號處理器 (DSP) 架構引入了各種創(chuàng)新,從 DSP 內核卸載了許多 I/O 或數(shù)據(jù)移動任務,使其能夠專注于信號處理任務。
直接內存訪問 (DMA) 引擎是當今大多數(shù)高性能 DSP 的關鍵組件。DSP 可以配置 DMA 引擎來訪問片上和片外資源,并促進它們之間的傳輸,而不必顯式訪問存儲器或外設。這些 DMA 傳輸可以與關鍵 DSP 內核處理并行執(zhí)行,以獲得性能。
標準 DMA 引擎非常適合傳統(tǒng)的一維和二維算法處理,例如塊復制和基本數(shù)據(jù)排序。但是,許多音頻算法需要更復雜的數(shù)據(jù)傳輸。延遲線就是一個例子,它由前一個時間點的音頻樣本組成,用于創(chuàng)建所需的音頻效果(例如回聲)。傳統(tǒng)的 DMA 性能對于管理延遲線來說并不是的,需要對 DMA 架構進行創(chuàng)新,以有效地處理所需的音頻算法。
是否需要DMA加速?
這個問題的答案是肯定的,原因有兩個。首先,許多高性能 DSP 引擎中的 DMA 通道數(shù)量限制了 (pro) 音頻應用。其次,由于對高質量音頻的需求,音頻應用中的傳統(tǒng)DMA通常需要更多的CPU參與
圖1。音頻應用框圖
上面的框圖描述了典型音頻應用中的數(shù)據(jù)流。每個效果獲取前一個效果的輸出,處理數(shù)據(jù),并將其輸出轉發(fā)到數(shù)據(jù)處理鏈中的下一個效果(例如,Phaser 效果的輸出被輸入到 Delay 效果,Delay 效果的輸出被發(fā)送到混響) 。
上圖所示的數(shù)字音頻效果依賴于延遲線來實現(xiàn)。在描述完整的效果系統(tǒng)時,需要多個延遲線。改變設計中使用的延遲長度會改變音頻效果的質量。
延遲線是線性時不變系統(tǒng),其輸出信號是延遲了 x 個樣本的輸入信號的副本。在 DSP 上實現(xiàn)延遲線的有效方法是使用循環(huán)緩沖器。循環(huán)緩沖區(qū)存儲在線性存儲器的專用部分中;當緩沖區(qū)被填滿時,新的數(shù)據(jù)被寫入,從緩沖區(qū)的開頭開始。
循環(huán)緩沖區(qū)數(shù)據(jù)由一個進程寫入,由另一個進程讀取,這需要單獨的讀寫指針。讀寫指針不允許交叉,這樣未讀數(shù)據(jù)就不會被新數(shù)據(jù)覆蓋。循環(huán)緩沖區(qū)的大小由效果所需的延遲決定。在本文中,先進先出 (FIFO) 和循環(huán)緩沖區(qū)名稱可以互換使用。
當使用傳統(tǒng)的 DMA 引擎在基于延遲的音頻效果中移動數(shù)據(jù)時,會為信號處理鏈中的每個效果分配一個單獨的循環(huán)緩沖區(qū)。饋送到特定音頻效果的輸入數(shù)據(jù)存儲在分配給該效果的循環(huán)緩沖區(qū)中。下面的框圖顯示了更詳細的數(shù)據(jù)流。在下面圖 2 的框圖中,循環(huán)緩沖區(qū)由環(huán)表示。使用循環(huán)緩沖區(qū)的環(huán)形表示,因為它顯示分配給循環(huán)緩沖區(qū)的線性地址空間的包裝。當指針通過循環(huán)緩沖區(qū)前進時,地址將增加,直到遇到回繞條件,導致指針重置到內存地址或循環(huán)緩沖區(qū)的起始點。
圖2. 使用傳統(tǒng)DMA引擎時的Pro音頻應用數(shù)據(jù)流框圖
為了產生不同的延遲,DMA 必須從延遲線內的不同位置檢索延遲數(shù)據(jù)。如果使用塊處理,則會檢索一組數(shù)據(jù)而不是僅一個樣本。
傳統(tǒng)的 DMA 引擎通常允許程序員指定幾個完整描述所需傳輸?shù)膮?shù)。通常,這些參數(shù)是源地址、目標地址、源和目標的索引以及傳輸計數(shù)。每次 DMA 傳輸將需要一個典型 DMA 總體功能的通道。
在上面的框圖中,有五個循環(huán)緩沖區(qū)。傳統(tǒng)的 DMA 引擎必須經過編程才能將數(shù)據(jù)移入和移出每個緩沖區(qū)。在上面所示的應用中,處理一個數(shù)據(jù)塊至少需要 11 次 DMA 傳輸。
這是所需的 DMA 傳輸?shù)臄?shù)量,假設從每個循環(huán)緩沖區(qū)中只檢索每個效果的一個延遲。在典型應用中,每個數(shù)據(jù)塊的 DMA 傳輸數(shù)量會高得多。例如,混響效果的實現(xiàn)總是需要來自其循環(huán)緩沖區(qū)的多個延遲。
隨著實現(xiàn)的音頻效果數(shù)量的增加,所需的傳統(tǒng) DMA 傳輸數(shù)量也會增加。因此,系統(tǒng)中可用的傳統(tǒng) DMA 通道的數(shù)量會限制可實現(xiàn)的音頻效果的數(shù)量。
傳統(tǒng) DMA 在音頻應用中的局限性
標準 DMA 引擎在以連續(xù)或固定間隔移動長數(shù)據(jù)塊時表現(xiàn)良好。固定間隔傳輸?shù)囊粋示例是 DMA 引擎訪問延遲線的每四個數(shù)據(jù)樣本。
當訪問不連續(xù)或以固定間隔進行時,典型的 DMA 性能并不是的。當傳統(tǒng)的 DMA 引擎移動循環(huán)緩沖區(qū)數(shù)據(jù)以生成數(shù)字音頻效果時,CPU 在處理一個數(shù)據(jù)塊時必須干預至少兩次對 DMA 參數(shù)進行編程。當數(shù)據(jù)訪問環(huán)繞環(huán)形緩沖區(qū)邊界時,CPU 需要對 DMA 參數(shù)進行編程,并干預管理延遲線。
圖3. 合唱框圖
合唱效果是說明這一點的一個簡單算法示例,如上圖 3 所示。合唱效果通常用于改變樂器的聲音,使其聽起來像是多個樂器在演奏,如果樂器中有人聲,那么此效果往往會使單個聲音聽起來像合唱團。我們感知多個聲音或樂器,因為當多個聲音或樂器同時演奏時,總是存在不的同步和輕微的音高變化。這些是合唱效果的主要特征。
在圖 3 中,Chorus 顯示為輸入與其兩個延遲副本的組合。音調偏差是通過延遲輸入副本中緩慢變化的延遲量來建模的。延遲緩慢變化,偏差量及其頻率由低頻振蕩器 (LFO) 控制。
如下圖4中的Chorus實現(xiàn)圖所示,延遲線是通過使用環(huán)形緩沖區(qū)(由兩個同心圓表示)來實現(xiàn)的。圖 4 中呈現(xiàn)的合唱實現(xiàn)意味著使用塊處理。此合唱示例中的塊大小是四個樣本。傳入的樣本按順時針方向存儲到循環(huán)緩沖區(qū)中。
圖4. Chorus 實現(xiàn)框圖
塊處理同時管理數(shù)據(jù)塊(多個樣本),而不是只管理一個樣本。在此示例中,CPU 等待四個輸入樣本可用,然后計算四個輸出樣本。它通過將輸入樣本塊與從循環(huán)緩沖區(qū)獲取的兩個延遲數(shù)據(jù)塊相結合來處理這些樣本。
在使用傳統(tǒng) DMA 控制器的情況下(如下圖 5),每次輸入數(shù)據(jù)塊準備就緒時,CPU 都會收到中斷通知。然后CPU計算合唱輸出。
圖5. 采用傳統(tǒng) DMA 時 Chorus 實現(xiàn)時間表
本例中的 DMA 引擎分配必須執(zhí)行兩個關鍵操作:
1) 將一塊輸入樣本存儲到循環(huán)緩沖區(qū)(以供將來參考)2) 從循環(huán)緩沖區(qū)檢索兩塊延遲數(shù)據(jù)(為下一個輸入樣本塊準備延遲數(shù)據(jù))。
在這種情況下,CPU 必須通過跟蹤和編程源地址和目標地址來協(xié)助 DMA,并在數(shù)據(jù)訪問繞過緩沖區(qū)邊界時進行干預。這需要在每次傳輸之前配置 DMA 引擎。
在 CPU 重新配置 DMA 之前,每個偏移量必須由 CPU 計算(或從預先計算的表中獲取)。CPU 帶寬得到利用,因為它必須在每次傳輸之前重新配置 DMA 引擎。在圖 5 中,CPU 時間線活動顯示為兩行:行顯示了處理合唱效果所需的 CPU 活動,第二行顯示了配置 DMA 所需的 CPU 活動。
在復雜的數(shù)字音頻效果(例如混響)的情況下,必須從循環(huán)緩沖器中檢索的延遲塊的數(shù)量可以達到256或更多。此外,這些延遲塊中的每一個都不是固定間隔的,并且隨著算法運行,偏移量不斷變化。隨著循環(huán)緩沖區(qū)中數(shù)據(jù)訪問量的急劇增加,更復雜的數(shù)字音頻效果算法(如混響)將需要更多的 CPU 周期。這使得可用于實際應用程序的 CPU 帶寬減少。
當多個數(shù)字音頻效果相繼出現(xiàn)時(如圖 1 所示),CPU 將必須協(xié)助 DMA 移動每個處理階段所需和產生的數(shù)據(jù)。在這些任務期間,CPU 和 DMA 必須同步。同步由 DMA 促進,它會中斷 CPU。
因此,系統(tǒng)中的中斷數(shù)量會隨著系統(tǒng)復雜度的增加而增加。這些中斷會帶來很高的開銷,因為必須保存寄存器以保留上下文。除此之外,中斷還會經過處理管道并破壞指令緩存的微妙效率。保留上下文會消耗大量周期,并進一步改變指令緩存的性能。管道的過度中斷也直接影響整體性能。 |
|
|
|
|
|
|
|
|
您可能對以下產品感興趣 |
|
|
|
產品型號 |
功能介紹 |
兼容型號 |
封裝形式 |
工作電壓 |
備注 |
ACM8629 |
2×50W,立體聲模式(4Ω, 24V, THD+N = 1%);100W,1×100W單聲道模式(2Ω, 24V, THD+N = 1%)
|
|
TSSOP-28(散熱片朝上,支持外接散熱器) |
4.5V-26.4V |
50W立體聲/100W單聲道、數(shù)字輸入音頻功放芯片,內置DSP多種音頻處理效果 |
ACM8625S |
2×40W, 立體聲輸出 (6Ω, 24V, THD+N = 1%) /82W,單聲道輸出 (3Ω, 24V, THD+N = 1%) |
TAS5805/ACM8625/ACM8628/ACM8622 |
TSSOP-28 |
4.5V-26.4V |
2×40W立體聲、數(shù)字輸入D類音頻功放芯片、 內置DSP音效處理算法 |
ACM8685 |
2×32W, 立體聲輸出(8Ω, 22V, THD+N = 10%) |
ACM8622/ACM8625/ACM8628 |
TSSOP-28 |
4.5V-26.54 |
2×26W立體聲/52W單聲道、內置DSP虛擬低音等多種音頻處理效果、數(shù)字輸入音頻功放芯片 |
ACM8615 |
21W, 單聲道輸出(8Ω, 20V, THD+N = 1%)
26W, 單聲道輸出 (8Ω, 20V, THD+N = 10%)
|
|
QFN-16 |
4.5V-21V |
內置DSP、I2S數(shù)字輸入20W單聲道D類音頻功放IC |
ACM8625P |
2×33W, 立體聲輸出(6Ω, 21V, THD+N = 1%)
51W, 單聲道輸出 (8Ω, 21V, THD+N = 1%)
|
ACM8622/ACM8625M/ACM8628 |
TSSOP-28 |
4.5V-21V |
I2S數(shù)字輸入33W立體聲D類音頻功放芯片、內置DSP小音量低頻增強等算法 |
ACM8622 |
2×14W, 立體聲輸出(4Ω, 12V, THD+N = 1%);
2×10.5W, 立體聲輸出 (6Ω, 12V, THD+N = 1%) |
TAS5805/ACM8625/ACM8628 |
TSSOP-28 |
4.5V-14.5V |
內置DSP音效處理算法、2×14W立體聲/ 1×23W單聲道、數(shù)字輸入D類音頻功放IC |
ACM8625 |
2×26W, 立體聲輸出(8Ω, 22V, THD+N = 1%)
2×32W, 立體聲輸出 (8Ω, 22V, THD+N = 10%) |
TAS5805/ACM8628/ACM8622 |
TSSOP-28 |
4.5V-26.4V |
I2S數(shù)字輸入26W立體聲D類音頻功放芯片、內置DSP小音量低頻增強等算法 |
ACM8628 |
2×41W、立體聲 (6Ω, 24V, THD+N = 1%) ;
2×33W, 立體聲 (4Ω, 18V, THD+N = 1%) ;
1×82W, 單通道 (3Ω, 24V, THD+N = 1%) |
TAS5805/ACM8625/ACM8622 |
TSSOP-28 |
4.5V-26.4V |
2×41W立體聲 /1×82W單通道數(shù)字輸入功放、內置DSP小音量低頻增強等算法 |
|
|
|
|
|
|