Adaptive Filtering 功能詳解及代碼實(shí)現
摘 要
本文引用地址:http://dyxdggzs.com/article/148405.htmTexas instruments 推出的超低功耗miniDSP 音頻Codec 集成了miniDSP 內核,可在耗電極低的工作狀態(tài)下為電池供電的便攜式產(chǎn)品提供高性能的語(yǔ)音及音樂(lè )處理能力。AdaptiveFiltering 是miniDSP 的一項重要功能。本文詳細介紹了該功能的使用方法及注意事項,并給出了示例代碼以供參考。
1 miniDSP Codec 簡(jiǎn)介
德州儀器半導體公司(Texas Instruments)推出的內嵌miniDSP 的音頻編解碼器(簡(jiǎn)稱(chēng)miniDSP Codec)在普通音頻編解碼器的基礎上提供了強大、靈活的低功耗DSP 引擎來(lái)滿(mǎn)足消費類(lèi)電子應用中對音質(zhì)、音效的需求。
miniDSP 的內核是完全可編程的,支持許多錄音和回放的專(zhuān)用算法。例如:多段均衡(Multi-Band Equalization)、動(dòng)態(tài)噪聲消除(Dynamic Noise Filter)、回聲消除(Echo Cancellation)等。miniDSP Codec 具有非常優(yōu)秀的電源管理功能,在提供強大的音效處理能力的同時(shí)兼顧了低功耗特性,非常適合電池供電的便攜式產(chǎn)品應用,例如智能手機,多媒體播放器,導航儀,電子相框等。
TLV320AIC3254(簡(jiǎn)稱(chēng)AIC3254)是miniDSP Codec 的典型器件,本文將基于該器件展開(kāi)分析。其他miniDSP Codec 均具有類(lèi)似的架構、功能及使用方法。請用戶(hù)參考相應產(chǎn)品的器件手冊獲得詳細信息。
1.1 miniDSP Codec 架構
以AIC3254 為例,該miniDSP Codec 集成了兩個(gè)miniDSP 內核,如圖1 所示,miniDSP-A 位于A(yíng)DC 信號路徑上,主要負責ADC 采樣后的數字音頻流處理。miniDSP-D 位于DAC 路徑上,主要負責I2S 總線(xiàn)輸入的數字音頻流處理。miniDSP-A 和miniDSP-D 之間有互聯(lián)的內部數據總線(xiàn)可用于數據交換及共享代碼空間。

圖 1. miniDSP 音頻Codec 內部簡(jiǎn)化框圖
除了Audio Codec 以外,某些ADC、DAC 也擁有miniDSP 內核,本文介紹的部分內容也適用于該類(lèi)器件。請參考相應器件的手冊獲得詳細信息。
1.2 miniDSP 內存架構及寄存器地址
miniDSP-A 和D 分別有自己獨立的內存空間。每個(gè)DSP 的內存分為指令內存(Instruction RAM)、數據內存(Data RAM)和系數內存(Coefficient RAM)三類(lèi)。
• 指令內存用于存儲miniDSP 的運行指令及程序。
• 數據內存用來(lái)暫存miniDSP 運行時(shí)的運算結果等臨時(shí)數據。
• 系數內存用來(lái)存儲miniDSP 音效、增益等控件的參數數據。
指令內存和系數內存均可通過(guò)映射的I2C 或SPI 地址來(lái)進(jìn)行讀寫(xiě)。Codec 上電時(shí)主控芯片需要通過(guò)I2C 或SPI 接口將miniDSP 程序下載到指令內存和系數內存以供運行。以TLV320AIC3254 為例,指令內存、系數內存的寄存器映射地址及功能如表1 所示:
表 1. TLV320AIC3254 內存架構及寄存器地址

從寄存器映射地址可發(fā)現,miniDSP-A 和 miniDSP-D 的系數內存控件均被等分成兩塊:Buffer-A和Buffer-B。當Adaptive Filtering 功能關(guān)閉時(shí),Buffer-A 和Buffer-B 是一個(gè)整體,連續的存儲空間。當Adaptive Filtering 功能開(kāi)啟時(shí),兩個(gè)Buffer 的內容是完全同步并相互備份的。這種內存架構是Adaptive Filtering 功能的基礎。
注 意:
當用戶(hù)不需要Adaptive Filtering 功能時(shí),建議關(guān)閉該功能。系數內存(Coefficent
RAM)將不會(huì )劃分Buffer-A 和Buffer-B。能提供多一倍的系數內存給用戶(hù)使用。
2 Adaptive Filtering
2.1 功能概述
Adaptive Filtering 是一種在miniDSP 運行時(shí)的濾波器、音效控件、混音比例等參數的實(shí)時(shí)切換功能。啟動(dòng)該功能后主控芯片可以通過(guò)控制端口對系數內存內的參數數據進(jìn)行實(shí)時(shí)更新。
當miniDSP Codec 運行在non-Adaptive Filtering 模式下,系數內存中的濾波器、音效控件、混音比例等參數將被鎖定,無(wú)法實(shí)時(shí)更改。這種模式適用于不需要實(shí)時(shí)調節參數的場(chǎng)合。miniDSP 的代碼將在啟動(dòng)時(shí)一次性被下載并執行,運行過(guò)程中不會(huì )進(jìn)行任何miniDSP 系數內存參數的修改。
當Adaptive Filtering 功能啟動(dòng)后,系數內存將啟用緩存(Buffer-A 和Buffer-B)設置。允許用戶(hù)在miniDSP 工作時(shí)實(shí)時(shí)修改系數內存中的參數設置,從而滿(mǎn)足用戶(hù)實(shí)時(shí)調節音效等參數的需求。例如,啟用了Adaptive Filtering 模式后,用戶(hù)可在聽(tīng)歌過(guò)程中將EQ 均衡器從流行(POP)轉換為古典(Classic)模式,該效果實(shí)時(shí)產(chǎn)生作用無(wú)需中斷播放。
2.2 Adaptive Filtering 控制寄存器
Adaptive Filtering 功能是通過(guò)特定寄存器來(lái)控制和實(shí)現的,以AIC3254 的miniDSP-A 為例,表2列出了miniDSP-A 的Adaptive Filtering 控制寄存器的含義。用戶(hù)可通過(guò)D2 位開(kāi)啟或關(guān)閉miniDSP-A 的Adaptive Filtering 功能。D1 位用來(lái)指示miniDSP 運行時(shí)哪一個(gè)Buffer 被鎖定,用戶(hù)可讀取該位來(lái)確認Buffer 使用的狀態(tài)。D0 位用來(lái)控制Buffer 的切換,向D0 位寫(xiě)入1 后miniDSP-A 會(huì )切換到新的Buffer 進(jìn)行工作,并向控制端口釋放原先使用的Buffer。切換完畢后D0的值會(huì )自動(dòng)清零,用戶(hù)可通過(guò)循環(huán)讀取D0 的值來(lái)判斷Buffer 的切換是否已經(jīng)完成。
表 2. AIC3254 miniDSP-A Adaptive Filtering 控制寄存器(P8_R1)

注 意:
每個(gè)支持Adaptive Filtering 功能的miniDSP 都有自己的Adaptive Filtering 控制寄存器,miniDSP-A 和miniDSP-D 的Adaptive Filtering 功能是獨立運行的。
2.3 系數內存(Coefficient Memory)存取規范
評論