使用音頻增強型 DMA 加速複雜的音頻 DSP 算法
發布時間:2023-07-31 責任編輯:lina
【導讀】音(yin)頻(pin)工(gong)程(cheng)師(shi)麵(mian)臨(lin)的(de)挑(tiao)戰(zhan)是(shi)設(she)計(ji)設(she)備(bei),提(ti)供(gong)更(geng)好(hao)的(de)音(yin)頻(pin)保(bao)真(zhen)度(du),支(zhi)持(chi)更(geng)多(duo)音(yin)頻(pin)通(tong)道(dao),處(chu)理(li)更(geng)高(gao)的(de)采(cai)樣(yang)率(lv)和(he)位(wei)深(shen)度(du),同(tong)時(shi)保(bao)持(chi)緊(jin)張(zhang)的(de)實(shi)時(shi)處(chu)理(li)預(yu)算(suan)。
音(yin)頻(pin)工(gong)程(cheng)師(shi)麵(mian)臨(lin)的(de)挑(tiao)戰(zhan)是(shi)設(she)計(ji)設(she)備(bei),提(ti)供(gong)更(geng)好(hao)的(de)音(yin)頻(pin)保(bao)真(zhen)度(du),支(zhi)持(chi)更(geng)多(duo)音(yin)頻(pin)通(tong)道(dao),處(chu)理(li)更(geng)高(gao)的(de)采(cai)樣(yang)率(lv)和(he)位(wei)深(shen)度(du),同(tong)時(shi)保(bao)持(chi)緊(jin)張(zhang)的(de)實(shi)時(shi)處(chu)理(li)預(yu)算(suan)。
在許多音頻應用中,係統性能的主要瓶頸是音頻數據的高效移動。多年來,數字信號處理器 (DSP) 架構引入了各種創新,從 DSP 內核卸載了許多 I/O 或數據移動任務,使其能夠專注於信號處理任務。
直接內存訪問 (DMA) 引擎是當今大多數高性能 DSP 的關鍵組件。DSP 可以配置 DMA 引擎來訪問片上和片外資源,並促進它們之間的傳輸,而不必顯式訪問存儲器或外設。這些 DMA 傳輸可以與關鍵 DSP 內核處理並行執行,以獲得性能。
標準 DMA 引yin擎qing非fei常chang適shi合he傳chuan統tong的de一yi維wei和he二er維wei算suan法fa處chu理li,例li如ru塊kuai複fu製zhi和he基ji本ben數shu據ju排pai序xu。但dan是shi,許xu多duo音yin頻pin算suan法fa需xu要yao更geng複fu雜za的de數shu據ju傳chuan輸shu。延yan遲chi線xian就jiu是shi一yi個ge例li子zi,它ta由you前qian一yi個ge時shi間jian點dian的de音yin頻pin樣yang本ben組zu成cheng,用yong於yu創chuang建jian所suo需xu的de音yin頻pin效xiao果guo(例如回聲)。傳統的 DMA 性能對於管理延遲線來說並不是的,需要對 DMA 架構進行創新,以有效地處理所需的音頻算法。
是否需要DMA加速?
這個問題的答案是肯定的,原因有兩個。首先,許多高性能 DSP 引擎中的 DMA 通道數量限製了 (pro) 音頻應用。其次,由於對高質量音頻的需求,音頻應用中的傳統DMA通常需要更多的CPU參與

圖1。音頻應用框圖
shangmiandekuangtumiaoshuledianxingyinpinyingyongzhongdeshujuliu。meigexiaoguohuoquqianyigexiaoguodeshuchu,chulishuju,bingjiangqishuchuzhuanfadaoshujuchulilianzhongdexiayigexiaoguo(例如,Phaser 效果的輸出被輸入到 Delay 效果,Delay 效果的輸出被發送到混響) 。
上shang圖tu所suo示shi的de數shu字zi音yin頻pin效xiao果guo依yi賴lai於yu延yan遲chi線xian來lai實shi現xian。在zai描miao述shu完wan整zheng的de效xiao果guo係xi統tong時shi,需xu要yao多duo個ge延yan遲chi線xian。改gai變bian設she計ji中zhong使shi用yong的de延yan遲chi長chang度du會hui改gai變bian音yin頻pin效xiao果guo的de質zhi量liang。
延遲線是線性時不變係統,其輸出信號是延遲了 x 個樣本的輸入信號的副本。在 DSP 上實現延遲線的有效方法是使用循環緩衝器。循環緩衝區存儲在線性存儲器的專用部分中;當緩衝區被填滿時,新的數據被寫入,從緩衝區的開頭開始。
循xun環huan緩huan衝chong區qu數shu據ju由you一yi個ge進jin程cheng寫xie入ru,由you另ling一yi個ge進jin程cheng讀du取qu,這zhe需xu要yao單dan獨du的de讀du寫xie指zhi針zhen。讀du寫xie指zhi針zhen不bu允yun許xu交jiao叉cha,這zhe樣yang未wei讀du數shu據ju就jiu不bu會hui被bei新xin數shu據ju覆fu蓋gai。循xun環huan緩huan衝chong區qu的de大da小xiao由you效xiao果guo所suo需xu的de延yan遲chi決jue定ding。在zai本ben文wen中zhong,先xian進jin先xian出chu (FIFO) 和循環緩衝區名稱可以互換使用。
當使用傳統的 DMA 引yin擎qing在zai基ji於yu延yan遲chi的de音yin頻pin效xiao果guo中zhong移yi動dong數shu據ju時shi,會hui為wei信xin號hao處chu理li鏈lian中zhong的de每mei個ge效xiao果guo分fen配pei一yi個ge單dan獨du的de循xun環huan緩huan衝chong區qu。饋kui送song到dao特te定ding音yin頻pin效xiao果guo的de輸shu入ru數shu據ju存cun儲chu在zai分fen配pei給gei該gai效xiao果guo的de循xun環huan緩huan衝chong區qu中zhong。下xia麵mian的de框kuang圖tu顯xian示shi了le更geng詳xiang細xi的de數shu據ju流liu。在zai下xia麵mian圖tu 2 dekuangtuzhong,xunhuanhuanchongquyouhuanbiaoshi。shiyongxunhuanhuanchongqudehuanxingbiaoshi,yinweitaxianshifenpeigeixunhuanhuanchongqudexianxingdizhikongjiandebaozhuang。dangzhizhentongguoxunhuanhuanchongquqianjinshi,dizhijiangzengjia,zhidaoyudaohuiraotiaojian,daozhizhizhenzhongzhidaoneicundizhihuoxunhuanhuanchongqudeqishidian。

圖2. 使用傳統DMA引擎時的Pro音頻應用數據流框圖
為了產生不同的延遲,DMA 必須從延遲線內的不同位置檢索延遲數據。如果使用塊處理,則會檢索一組數據而不是僅一個樣本。
傳統的 DMA 引擎通常允許程序員指定幾個完整描述所需傳輸的參數。通常,這些參數是源地址、目標地址、源和目標的索引以及傳輸計數。每次 DMA 傳輸將需要一個典型 DMA 總體功能的通道。
在上麵的框圖中,有五個循環緩衝區。傳統的 DMA 引擎必須經過編程才能將數據移入和移出每個緩衝區。在上麵所示的應用中,處理一個數據塊至少需要 11 次 DMA 傳輸。
這是所需的 DMA 傳輸的數量,假設從每個循環緩衝區中隻檢索每個效果的一個延遲。在典型應用中,每個數據塊的 DMA 傳輸數量會高得多。例如,混響效果的實現總是需要來自其循環緩衝區的多個延遲。
隨著實現的音頻效果數量的增加,所需的傳統 DMA 傳輸數量也會增加。因此,係統中可用的傳統 DMA 通道的數量會限製可實現的音頻效果的數量。
傳統 DMA 在音頻應用中的局限性
標準 DMA 引擎在以連續或固定間隔移動長數據塊時表現良好。固定間隔傳輸的一個示例是 DMA 引擎訪問延遲線的每四個數據樣本。
當訪問不連續或以固定間隔進行時,典型的 DMA 性能並不是的。當傳統的 DMA 引擎移動循環緩衝區數據以生成數字音頻效果時,CPU 在處理一個數據塊時必須幹預至少兩次對 DMA 參數進行編程。當數據訪問環繞環形緩衝區邊界時,CPU 需要對 DMA 參數進行編程,並幹預管理延遲線。

圖3. 合唱框圖
合唱效果是說明這一點的一個簡單算法示例,如上圖 3 所(suo)示(shi)。合(he)唱(chang)效(xiao)果(guo)通(tong)常(chang)用(yong)於(yu)改(gai)變(bian)樂(le)器(qi)的(de)聲(sheng)音(yin),使(shi)其(qi)聽(ting)起(qi)來(lai)像(xiang)是(shi)多(duo)個(ge)樂(le)器(qi)在(zai)演(yan)奏(zou),如(ru)果(guo)樂(le)器(qi)中(zhong)有(you)人(ren)聲(sheng),那(na)麼(me)此(ci)效(xiao)果(guo)往(wang)往(wang)會(hui)使(shi)單(dan)個(ge)聲(sheng)音(yin)聽(ting)起(qi)來(lai)像(xiang)合(he)唱(chang)團(tuan)。我(wo)們(men)感(gan)知(zhi)多(duo)個(ge)聲(sheng)音(yin)或(huo)樂(le)器(qi),因(yin)為(wei)當(dang)多(duo)個(ge)聲(sheng)音(yin)或(huo)樂(le)器(qi)同(tong)時(shi)演(yan)奏(zou)時(shi),總(zong)是(shi)存(cun)在(zai)不(bu)的(de)同(tong)步(bu)和(he)輕(qing)微(wei)的(de)音(yin)高(gao)變(bian)化(hua)。這(zhe)些(xie)是(shi)合(he)唱(chang)效(xiao)果(guo)的(de)主(zhu)要(yao)特(te)征(zheng)。
在圖 3 中,Chorus 顯xian示shi為wei輸shu入ru與yu其qi兩liang個ge延yan遲chi副fu本ben的de組zu合he。音yin調tiao偏pian差cha是shi通tong過guo延yan遲chi輸shu入ru副fu本ben中zhong緩huan慢man變bian化hua的de延yan遲chi量liang來lai建jian模mo的de。延yan遲chi緩huan慢man變bian化hua,偏pian差cha量liang及ji其qi頻pin率lv由you低di頻pin振zhen蕩dang器qi (LFO) 控製。
如下圖4中的Chorus實現圖所示,延遲線是通過使用環形緩衝區(由兩個同心圓表示)來實現的。圖 4 中呈現的合唱實現意味著使用塊處理。此合唱示例中的塊大小是四個樣本。傳入的樣本按順時針方向存儲到循環緩衝區中。

圖4. Chorus 實現框圖
塊處理同時管理數據塊(多個樣本),而不是隻管理一個樣本。在此示例中,CPU 等待四個輸入樣本可用,然後計算四個輸出樣本。它通過將輸入樣本塊與從循環緩衝區獲取的兩個延遲數據塊相結合來處理這些樣本。
在使用傳統 DMA 控製器的情況下(如下圖 5),每次輸入數據塊準備就緒時,CPU 都會收到中斷通知。然後CPU計算合唱輸出。

圖5. 采用傳統 DMA 時 Chorus 實現時間表
本例中的 DMA 引擎分配必須執行兩個關鍵操作:
1) 將一塊輸入樣本存儲到循環緩衝區(以供將來參考)2) 從循環緩衝區檢索兩塊延遲數據(為下一個輸入樣本塊準備延遲數據)。
在這種情況下,CPU 必須通過跟蹤和編程源地址和目標地址來協助 DMA,並在數據訪問繞過緩衝區邊界時進行幹預。這需要在每次傳輸之前配置 DMA 引擎。
在 CPU 重新配置 DMA 之前,每個偏移量必須由 CPU 計算(或從預先計算的表中獲取)。CPU 帶寬得到利用,因為它必須在每次傳輸之前重新配置 DMA 引擎。在圖 5 中,CPU 時間線活動顯示為兩行:行顯示了處理合唱效果所需的 CPU 活動,第二行顯示了配置 DMA 所需的 CPU 活動。
在複雜的數字音頻效果(例如混響)的情況下,必須從循環緩衝器中檢索的延遲塊的數量可以達到256或huo更geng多duo。此ci外wai,這zhe些xie延yan遲chi塊kuai中zhong的de每mei一yi個ge都dou不bu是shi固gu定ding間jian隔ge的de,並bing且qie隨sui著zhe算suan法fa運yun行xing,偏pian移yi量liang不bu斷duan變bian化hua。隨sui著zhe循xun環huan緩huan衝chong區qu中zhong數shu據ju訪fang問wen量liang的de急ji劇ju增zeng加jia,更geng複fu雜za的de數shu字zi音yin頻pin效xiao果guo算suan法fa(如混響)將需要更多的 CPU 周期。這使得可用於實際應用程序的 CPU 帶寬減少。
當多個數字音頻效果相繼出現時(如圖 1 所示),CPU 將必須協助 DMA 移動每個處理階段所需和產生的數據。在這些任務期間,CPU 和 DMA 必須同步。同步由 DMA 促進,它會中斷 CPU。
因(yin)此(ci),係(xi)統(tong)中(zhong)的(de)中(zhong)斷(duan)數(shu)量(liang)會(hui)隨(sui)著(zhe)係(xi)統(tong)複(fu)雜(za)度(du)的(de)增(zeng)加(jia)而(er)增(zeng)加(jia)。這(zhe)些(xie)中(zhong)斷(duan)會(hui)帶(dai)來(lai)很(hen)高(gao)的(de)開(kai)銷(xiao),因(yin)為(wei)必(bi)須(xu)保(bao)存(cun)寄(ji)存(cun)器(qi)以(yi)保(bao)留(liu)上(shang)下(xia)文(wen)。除(chu)此(ci)之(zhi)外(wai),中(zhong)斷(duan)還(hai)會(hui)經(jing)過(guo)處(chu)理(li)管(guan)道(dao)並(bing)破(po)壞(huai)指(zhi)令(ling)緩(huan)存(cun)的(de)微(wei)妙(miao)效(xiao)率(lv)。保(bao)留(liu)上(shang)下(xia)文(wen)會(hui)消(xiao)耗(hao)大(da)量(liang)周(zhou)期(qi),並(bing)進(jin)一(yi)步(bu)改(gai)變(bian)指(zhi)令(ling)緩(huan)存(cun)的(de)性(xing)能(neng)。管(guan)道(dao)的(de)過(guo)度(du)中(zhong)斷(duan)也(ye)直(zhi)接(jie)影(ying)響(xiang)整(zheng)體(ti)性(xing)能(neng)。
免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯係小編進行處理。
推薦閱讀:
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
- 大聯大世平集團首度亮相北京國際汽車展 攜手全球芯片夥伴打造智能車整合應用新典範
- 2026北京車展即將啟幕,高通攜手汽車生態“朋友圈”推動智能化體驗再升級
- 邊緣重構智慧城市:FPGA SoM 如何破解視頻係統 “重而慢”
- 如何使用工業級串行數字輸入來設計具有並行接口的數字輸入模塊
- 意法半導體將舉辦投資者會議探討低地球軌道(LEO)發展機遇
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall






