《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > Adaptive Filtering 功能詳解及代碼實現(xiàn)

Adaptive Filtering 功能詳解及代碼實現(xiàn)

2012-09-12
作者:王 凡 Ryan Wang (Fan)
來源:South China OEM Team

摘 要

    Texas instruments 推出的超低功耗miniDSP 音頻Codec 集成了miniDSP 內核,可在耗電極低的工作狀態(tài)下為電池供電的便攜式產品提供高性能的語音及音樂處理能力,。AdaptiveFiltering 是miniDSP 的一項重要功能,。本文詳細介紹了該功能的使用方法及注意事項,并給出了示例代碼以供參考,。

1 miniDSP Codec 簡介

    德州儀器半導體公司(Texas Instruments)推出的內嵌miniDSP 的音頻編解碼器(簡稱miniDSP Codec)在普通音頻編解碼器的基礎上提供了強大、靈活的低功耗DSP 引擎來滿足消費類電子應用中對音質,、音效的需求,。

     miniDSP 的內核是完全可編程的,,支持許多錄音和回放的專用算法。例如:多段均衡(Multi-Band Equalization),、動態(tài)噪聲消除(Dynamic Noise Filter)、回聲消除(Echo Cancellation)等,。miniDSP Codec 具有非常優(yōu)秀的電源管理功能,,在提供強大的音效處理能力的同時兼顧了低功耗特性,,非常適合電池供電的便攜式產品應用,例如智能手機,,多媒體播放器,導航儀,,電子相框等,。

    TLV320AIC3254(簡稱AIC3254)是miniDSP Codec 的典型器件,,本文將基于該器件展開分析。其他miniDSP Codec 均具有類似的架構,、功能及使用方法。請用戶參考相應產品的器件手冊獲得詳細信息,。

1.1 miniDSP Codec 架構

     以AIC3254 為例,,該miniDSP Codec 集成了兩個miniDSP 內核,,如圖1 所示,miniDSP-A 位于ADC 信號路徑上,,主要負責ADC 采樣后的數(shù)字音頻流處理,。miniDSP-D 位于DAC 路徑上,,主要負責I2S 總線輸入的數(shù)字音頻流處理。miniDSP-A 和miniDSP-D 之間有互聯(lián)的內部數(shù)據(jù)總線可用于數(shù)據(jù)交換及共享代碼空間,。

圖 1. miniDSP 音頻Codec 內部簡化框圖

    除了Audio Codec 以外,某些ADC,、DAC 也擁有miniDSP 內核,,本文介紹的部分內容也適用于該類器件,。請參考相應器件的手冊獲得詳細信息。

1.2 miniDSP 內存架構及寄存器地址

    miniDSP-A 和D 分別有自己獨立的內存空間,。每個DSP 的內存分為指令內存(Instruction RAM)、數(shù)據(jù)內存(Data RAM)和系數(shù)內存(Coefficient RAM)三類,。

• 指令內存用于存儲miniDSP 的運行指令及程序,。

• 數(shù)據(jù)內存用來暫存miniDSP 運行時的運算結果等臨時數(shù)據(jù),。

• 系數(shù)內存用來存儲miniDSP 音效、增益等控件的參數(shù)數(shù)據(jù),。

     指令內存和系數(shù)內存均可通過映射的I2C 或SPI 地址來進行讀寫。Codec 上電時主控芯片需要通過I2C 或SPI 接口將miniDSP 程序下載到指令內存和系數(shù)內存以供運行,。以TLV320AIC3254 為例,,指令內存,、系數(shù)內存的寄存器映射地址及功能如表1 所示:

1. TLV320AIC3254 內存架構及寄存器地址

    從寄存器映射地址可發(fā)現(xiàn),,miniDSP-A 和 miniDSP-D 的系數(shù)內存控件均被等分成兩塊:Buffer-A和Buffer-B。當Adaptive Filtering 功能關閉時,,Buffer-A 和Buffer-B 是一個整體,連續(xù)的存儲空間。當Adaptive Filtering 功能開啟時,,兩個Buffer 的內容是完全同步并相互備份的,。這種內存架構是Adaptive Filtering 功能的基礎,。

注 意:

當用戶不需要Adaptive Filtering 功能時,,建議關閉該功能。系數(shù)內存(Coefficent

RAM)將不會劃分Buffer-A Buffer-B,。能提供多一倍的系數(shù)內存給用戶使用,。

2 Adaptive Filtering

2.1 功能概述

    Adaptive Filtering 是一種在miniDSP 運行時的濾波器,、音效控件、混音比例等參數(shù)的實時切換功能,。啟動該功能后主控芯片可以通過控制端口對系數(shù)內存內的參數(shù)數(shù)據(jù)進行實時更新。

    當miniDSP Codec 運行在non-Adaptive Filtering 模式下,,系數(shù)內存中的濾波器,、音效控件,、混音比例等參數(shù)將被鎖定,無法實時更改,。這種模式適用于不需要實時調節(jié)參數(shù)的場合。miniDSP 的代碼將在啟動時一次性被下載并執(zhí)行,,運行過程中不會進行任何miniDSP 系數(shù)內存參數(shù)的修改,。

    當Adaptive Filtering 功能啟動后,,系數(shù)內存將啟用緩存(Buffer-A 和Buffer-B)設置。允許用戶在miniDSP 工作時實時修改系數(shù)內存中的參數(shù)設置,,從而滿足用戶實時調節(jié)音效等參數(shù)的需求。例如,,啟用了Adaptive Filtering 模式后,,用戶可在聽歌過程中將EQ 均衡器從流行(POP)轉換為古典(Classic)模式,該效果實時產生作用無需中斷播放,。

2.2 Adaptive Filtering 控制寄存器

    Adaptive Filtering 功能是通過特定寄存器來控制和實現(xiàn)的,,以AIC3254 的miniDSP-A 為例,,表2列出了miniDSP-A 的Adaptive Filtering 控制寄存器的含義。用戶可通過D2 位開啟或關閉miniDSP-A 的Adaptive Filtering 功能,。D1 位用來指示miniDSP 運行時哪一個Buffer 被鎖定,,用戶可讀取該位來確認Buffer 使用的狀態(tài),。D0 位用來控制Buffer 的切換,向D0 位寫入1 后miniDSP-A 會切換到新的Buffer 進行工作,,并向控制端口釋放原先使用的Buffer。切換完畢后D0的值會自動清零,,用戶可通過循環(huán)讀取D0 的值來判斷Buffer 的切換是否已經(jīng)完成,。

2. AIC3254 miniDSP-A Adaptive Filtering 控制寄存器(P8_R1

注 意:

    每個支持Adaptive Filtering 功能的miniDSP 都有自己的Adaptive Filtering 控制寄存器,,miniDSP-A miniDSP-D Adaptive Filtering 功能是獨立運行的。

2.3 系數(shù)內存(Coefficient Memory)存取規(guī)范

    在介紹Adaptive Filtering 的具體流程前,,首先需要了解系數(shù)內存存取的規(guī)范。

     在non-Adaptive Filtering 模式下,,系數(shù)內存在miniDSP 停止運行時可通過控制端口(I2C/SPI)直接存取,。在miniDSP 工作時,系數(shù)內存將被鎖定只有miniDSP 能夠存取,。表3 給出了該模式下的存取規(guī)范供參考:

3. non-Adaptive Filtering 模式下系數(shù)內存的存取規(guī)范

     當啟動了Adaptive Filtering 模式,系數(shù)內存將分為Buffer-A 和Buffer-B 兩塊,,兩塊內存內容完全一致,相互備份,。miniDSP 工作時將鎖定Buffer-A 或者Buffer-B 其中的一個,從中獲取參數(shù)信息,??刂贫丝冢↖2C 或SPI)只可以讀寫未鎖定的另一塊Buffer。表4 給出了該模式下的存取規(guī)范供參考:

4. Adaptive Filtering 模式下系數(shù)內存的存取規(guī)范

    為了簡化Buffer 切換的操作,,在miniDSP 運行時,控制端口訪問系數(shù)內存的地址均映射到未鎖定的Buffer 內,。例如控制端口向鎖定Buffer-A 某地址寫入的參數(shù)將直接更新未鎖定Buffer-B 內的鏡像參數(shù),。這個設置允許用戶在切換Buffer 后無需修改寫入地址即可向釋放出來的Buffer 內存更新參數(shù),。注意在miniDSP 停止運行的時候,Buffer-A 和Buffer-B 的頁面地址均恢復正常模式,,用戶需使用它們各自的地址進行參數(shù)更新,。

2.4 Adaptive Filtering 控制流程

    本節(jié)詳細介紹了如何使用Adaptive Filtering 功能來進行系數(shù)內存內參數(shù)的更新操作,。附錄A 給出了推薦的Adaptive Filtering 更新參數(shù)操作時序圖供參考。

2.4.1miniDSP 停止時的參數(shù)更新流程

    如2.3 節(jié)所示,,在miniDSP 停止運行時,控制端口可以存取所有的系數(shù)內存地址(Buffer-A 和 Buffer-B),。則該模式下參數(shù)更新的流程為:

1. 通過控制接口直接向Buffer-A 寫入新參數(shù)。

2. 切換到Buffer-B 所在頁面,,向Buffer-B 寫入同樣參數(shù),。使Buffer-A 和Buffer-B 保持同步,。

    以AIC3254 為例,若需要更新的參數(shù)在miniDSP-A 的Buffer-A 內,,其地址為p8_r44,,新參數(shù)值為0xAB,。則更新流程為:

1. 向p8_r44 寫入新參數(shù)0xAB。

2. 向p26_r44 寫入新參數(shù)0xAB,。(p26_r44 是p8_r44 的鏡像寄存器)

2.4.2miniDSP 運行時的參數(shù)更新流程

    miniDSP 運行時,系數(shù)內存的其中一個Buffer 被miniDSP 鎖定,,控制端口無法直接修改該Buffer內的參數(shù)。用戶需要先更新未鎖定Buffer 內的參數(shù),然后通知miniDSP 切換Buffer 來使用新的參數(shù),。切換后原先被鎖定的Buffer 將被釋放,,用戶需要對它更新相同的參數(shù)以確保兩塊Buffer 的參數(shù)同步,。

在miniDSP 運行時,系數(shù)內存參數(shù)更新的流程如下:

1. 通過控制端口向目標寄存器更新參數(shù),。

2. 向Adaptive Filtering 寄存器寫入Buffer 切換命令。

3. 回讀Adaptive Filtering 寄存器狀態(tài)位,,判斷Buffer 切換是否完成,。

4. 確認切換完成后,再次向目標寄存器更新參數(shù)確保Buffer-A 和Buffer-B 參數(shù)同步,。

    以AIC3254 為例,若需要更新的參數(shù)在miniDSP-A 的Buffer-A 內,,其地址為p8_r44,新參數(shù)值為0xAB,。則更新流程為:

1. 向p8_r44 寫入新參數(shù)0xAB,。

2. 將p8_r1_d0,Adaptive Filtering 寄存器的D0 位置1,,執(zhí)行Buffer 切換操作。

3. 回讀p8_r1_d0,,Adaptive Filtering 寄存器狀態(tài)位,,判斷Buffer 切換是否完成,。

4. 確認切換完成后,再次向目標寄存器p8_r44 更新參數(shù)0xAB,,確保Buffer-A 和Buffer-B參數(shù)同步,。

3 總結

    本文詳細介紹了miniDSP Codec 的Adaptive Filtering 功能的使用方法,,并以AIC3254 為例給出了詳細的操作步驟和示例代碼。在實際使用中,,用戶需要注意準確的獲取并判斷miniDSP 工作狀態(tài),,選擇正確的操作流程來完成參數(shù)的切換和更新。

參考文獻

1. TLV320AIC3254, Ultra Low Power Stereo Audio Codec With Embedded miniDSP-Data sheet (SLAS549)

2. Design and Configuration Guide for the TLV320AIC3204 & TLV320AIC3254 Audio Codec (SLAA404C)

3. Coefficient RAM Access Mechanisms (SLAA425A)

本站內容除特別聲明的原創(chuàng)文章之外,,轉載內容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉載的所有的文章,、圖片,、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者,。如涉及作品內容,、版權和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected],。