使用音頻增強型 DMA 加速複雜的音頻 DSP 算法
發布時間:2023-07-31 責任編輯:lina
【導讀】yinpingongchengshimianlindetiaozhanshishejishebei,tigonggenghaodeyinpinbaozhendu,zhichigengduoyinpintongdao,chuligenggaodecaiyanglvheweishendu,tongshibaochijinzhangdeshishichuliyusuan。
yinpingongchengshimianlindetiaozhanshishejishebei,tigonggenghaodeyinpinbaozhendu,zhichigengduoyinpintongdao,chuligenggaodecaiyanglvheweishendu,tongshibaochijinzhangdeshishichuliyusuan。
在許多音頻應用中,係統性能的主要瓶頸是音頻數據的高效移動。多年來,數字信號處理器 (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。音頻應用框圖
上(shang)麵(mian)的(de)框(kuang)圖(tu)描(miao)述(shu)了(le)典(dian)型(xing)音(yin)頻(pin)應(ying)用(yong)中(zhong)的(de)數(shu)據(ju)流(liu)。每(mei)個(ge)效(xiao)果(guo)獲(huo)取(qu)前(qian)一(yi)個(ge)效(xiao)果(guo)的(de)輸(shu)出(chu),處(chu)理(li)數(shu)據(ju),並(bing)將(jiang)其(qi)輸(shu)出(chu)轉(zhuan)發(fa)到(dao)數(shu)據(ju)處(chu)理(li)鏈(lian)中(zhong)的(de)下(xia)一(yi)個(ge)效(xiao)果(guo)(例如,Phaser 效果的輸出被輸入到 Delay 效果,Delay 效果的輸出被發送到混響) 。
shangtusuoshideshuziyinpinxiaoguoyilaiyuyanchixianlaishixian。zaimiaoshuwanzhengdexiaoguoxitongshi,xuyaoduogeyanchixian。gaibianshejizhongshiyongdeyanchichangduhuigaibianyinpinxiaoguodezhiliang。
延遲線是線性時不變係統,其輸出信號是延遲了 x 個樣本的輸入信號的副本。在 DSP 上實現延遲線的有效方法是使用循環緩衝器。循環緩衝區存儲在線性存儲器的專用部分中;當緩衝區被填滿時,新的數據被寫入,從緩衝區的開頭開始。
xunhuanhuanchongqushujuyouyigejinchengxieru,youlingyigejinchengduqu,zhexuyaodandudeduxiezhizhen。duxiezhizhenbuyunxujiaocha,zheyangweidushujujiubuhuibeixinshujufugai。xunhuanhuanchongqudedaxiaoyouxiaoguosuoxudeyanchijueding。zaibenwenzhong,xianjinxianchu (FIFO) 和循環緩衝區名稱可以互換使用。
當使用傳統的 DMA yinqingzaijiyuyanchideyinpinxiaoguozhongyidongshujushi,huiweixinhaochulilianzhongdemeigexiaoguofenpeiyigedandudexunhuanhuanchongqu。kuisongdaotedingyinpinxiaoguodeshurushujucunchuzaifenpeigeigaixiaoguodexunhuanhuanchongquzhong。xiamiandekuangtuxianshilegengxiangxideshujuliu。zaixiamiantu 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。
yinci,xitongzhongdezhongduanshulianghuisuizhexitongfuzadudezengjiaerzengjia。zhexiezhongduanhuidailaihengaodekaixiao,yinweibixubaocunjicunqiyibaoliushangxiawen。chucizhiwai,zhongduanhaihuijingguochuliguandaobingpohuaizhilinghuancundeweimiaoxiaolv。baoliushangxiawenhuixiaohaodaliangzhouqi,bingjinyibugaibianzhilinghuancundexingneng。guandaodeguoduzhongduanyezhijieyingxiangzhengtixingneng。
免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯係小編進行處理。
推薦閱讀:
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
- 1200餘家企業齊聚深圳,CITE2026打造電子信息產業創新盛宴
- 掌握 Gemini 3.1 Pro 參數調優的藝術
- 築牢安全防線:電池擠壓試驗機如何為新能源產業護航?
- Grok 4.1 API 實戰:構建 X 平台實時輿情監控 Agent
- 電源芯片國產化新選擇:MUN3CAD03-SF助力物聯網終端“芯”升級
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall



