《電子技術應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于SoC的AC'97技術硬件設計

基于SoC的AC'97技術硬件設計

2011-02-11

引言

        符合Audio Codec'97協議(簡稱AC'97,是由Intel公司提出的數字音頻處理協議)的音頻控制器不但廣泛應用于個人電腦聲卡,并且為個人信息終端設備的SOC(如Intel的PXA250)提供音頻解決方案,。本文設計的音頻控制器可為DSP內核提供數字音頻接口,。全文在介紹音頻控制器結構的同時,著重強調其與內核之間數據的協調傳輸,并給出基于FPGA實現SoC內核仿真環(huán)境對音頻控制器進行功能測試的方法。

音頻控制器的結構和原理

        AC'97系統由音頻編解碼器(Codec)和音頻控制器(Controller)兩個部分組成。其中音頻編解碼器實現A/D,、D/A轉換、音效處理等功能,,而音頻控制器則是SoC內核與音頻編解碼器之間的數字接口,,負責控制數據和音頻數據的串/并、并/串轉換以及傳輸,。


性能指標

        本設計的音頻控制器符合AC'97規(guī)范V2.3,,其主要指標如下:支持雙聲道錄放音;支持定采樣率(48kHz)和變采樣率錄放音,;20位寬16層深PCM音頻數據FIFO,;支持省電模式;支持中斷,、DMA和輪詢3種方式實現與內核或內存的數據交換,。

        組成結構音頻控制器的主結構如圖1所示。內核/內存和音頻控制器接口(CORE/MEMORY,,CTRL INTERFACE)連接音頻控制器與內核或內存,。CS是片選信號,WR和RD分別是讀寫使能,,ADDR(16位寬)是音頻控制器的端口地址,,DIN和DOUT(都是32位寬)分別是總線上的輸入輸出數據,IRQ和DMA REQ分別是中斷和DMA請求,。主模塊(AC'97 CTRL MASTER)負責音頻控制器(AC'97 CONTROLLER)與內核或內存(DMA模式下)之間PCM音頻數據,、控制和狀態(tài)寄存器組(CONTROL&STATUS REGS)數據以及音頻編解碼器(AC'97 CODEC)內部寄存器數據各并行數據的傳輸,由主時鐘CLK同步,。電源控制模塊(POWER CTRL)可以啟動省電模式,,也由主時鐘CLK同步。
 

                                         圖1 音頻控制器的主結構

        4組FIFO用于存放PCM音頻數據,,都是20位寬16層深,,因此可以支持最高20位寬分辨率。當FIFO滿或者空時,,可以發(fā)出中斷或DMA請求。音頻編解碼器內部寄存器讀寫緩存器(CODEC REG WRITE/READ BUF,,簡稱CRBUF)是2個32位寄存器,。寫緩沖器可以緩存準備寫入音頻編解碼器內部寄存器的控制字,,其空時可以發(fā)出中斷請求;讀緩沖器可以緩存已經從音頻編解碼器內部寄存器中讀出的狀態(tài)字,,其滿時可以發(fā)出中斷請求,。控制和狀態(tài)寄存器組包含8個32位寄存器,,其中,,通用控制寄存器的主要功能是系統冷啟動、熱啟動,;通用狀態(tài)寄存器反映音頻編解碼器狀態(tài),;其他寄存器的功能包括配置PCM輸入輸出聲道、配置和產生中斷或DMA請求,。輔模塊(AC'97 CTRL SLAVE)實現音頻控制器與音頻編解碼器之間(AC-LINK)數據幀的串行發(fā)送和接收,。輸出數據(SDATA_OUT)由輔時鐘BIT_CLK上跳沿同步,輸入數據(SDATA_IN)由BIT_CLK下跳沿同步,。

工作原理

        DSP內核通過讀寫音頻控制器CSRS分別來獲得音頻編解碼器狀態(tài)和設置音頻編解碼器工作模式,;通過讀寫FIFO來緩沖音頻錄制和播放過程中的PCM音頻數據;通過讀寫CRBUF來獲得音頻編解碼器內部寄存器狀態(tài)和設置音頻編解碼器內部寄存器參數,。下面以音頻播放中的主要步驟為例,,介紹音頻控制器的工作原理。

(1)寫滿PCM左聲道輸出FIFO,;

(2)寫滿PCM右聲道輸出FIFO,;

(3)輪詢音頻編解碼器準備好(Codec ready)信號是否有效;

(4)讀音頻編解碼器的26H寄存器,,判斷D/A轉換器是否準備好,;

(5)允許CRBUF產生中斷請求;

(6)寫0到音頻編解碼器的02H寄存器,,使主音量衰減最?。?br />
(7)等待CRBUF產生中斷,,響應中斷并寫0到音頻編解碼器的18H寄存器,,使PCM輸出音量衰減最小,;

(8)等待CRBUF產生中斷,,響應中斷并寫1到音頻編解碼器的2AH寄存器,即以變采樣率播放音頻,;

(9)等待CRBUF產生中斷,,響應中斷并寫5622(十六進制)到音頻編解碼器的2CH寄存器,即以22.05kHz采樣率播放音頻;

(10)允許PCM左右聲道FIFO產生滿中斷,;

(11)設置PCM左右聲道定速率或者變速率傳輸,,并開始播放音頻;

(12)等待FIFO中的PCM碼傳送掉16層并發(fā)出中斷請求,;

(13)判斷是否是PCM左聲道FIFO發(fā)出中斷請求,,如果是,則寫16層PCM左聲道數據,;

(14)判斷是否是PCM右聲道FIFO發(fā)出中斷請求,,如果是,則寫16層PCM右聲道FIFO數據,;

(15)如果內存中PCM數據被讀完,,則放音結束,否則返回第12步繼續(xù)放音,。

SOC仿真環(huán)境的構成和原理

        由音頻控制器的工作原理可見,,其每一個步驟都是在DSP內核控制下進行的。因此在對音頻控制器進行功能驗證時,,不但要保證其本身的邏輯正確,,更要保證其與內核的數據傳輸正確,這樣才有利于音頻控制器和內核的整合,。由此提出通過構件SoC內核仿真環(huán)境來逼近真實內核,,并在這個仿真環(huán)境中測試所設計的音頻控制器。

仿真環(huán)境的構成

        SoC內核仿真環(huán)境的硬件以Xilinx公司的MICroBlaze多媒體開發(fā)電路板為基礎,,其核心是Vertex II FPGA,。電路板上還集成了National Semiconductor公司的AC'97 CODEC LM4549 芯片,并且提供了LINE IN/OUT,、耳機以及麥克風插口,。可以通過這些插口來測試音頻錄放效果,,也可通過電路板上的測試點調試部分關鍵信號,。SoC內核仿真環(huán)境的構成如圖2所示。

                                       圖2 SoC內核仿真環(huán)境的構成

        內核模擬模塊(CORE SIM)是SOC內核仿真環(huán)境的核心,,以RTL代碼形式下載到Vertex II FPGA中模擬DSP內核的單周期指令,,可以實現讀寫內存、訪問音頻控制器(包括讀寫FIFO,、CRBUF以及CSRS),、響應并處理中斷請求或DMA請求。其中,,DIN_RAM是32位內存數據輸入總線,;DIN_CTRL是32位音頻控制器數據輸入總線,;DOUT是32位數據輸出總線;IRQ是音頻控制器中斷請求,;DMA REQ是音頻控制器DMA請求,;RST是音頻控制器異步復位。

        塊內存模塊是由Vertex II FPGA中的塊內存實現的單端口內存,,這種內存的時序與常規(guī)SRAM相同,可以模擬最大126KB的片上SRAM,。在Xilinx集成開發(fā)環(huán)境(ISE)中調用CORE Generator,,就可以生成
這種靜態(tài)內存。如果運用Memory Eidtor工具生成cgf和coe文件(塊內存的配置文件),,就可以在為FPGA下載BIT文件的同時給塊內存賦初始值,。基于FPGA這項強大的功能,,就可以將從個人電腦上提取出來的PCM音頻碼下載到塊內存中,,然后在內核模擬模塊的控制下,通過音頻控制器傳送到音頻編解碼器中,,由此實現音頻播放,。

        時鐘發(fā)生模塊(CLOCK GENERATOR)可發(fā)出27MHz、54MHz以及108MHz三種時鐘,,并且產生音頻控制器異步復位信號RST,。MICroBlaze開發(fā)電路板上的晶振發(fā)出27MHz和50MHz的占空比1:1的方波信號作為時鐘發(fā)生模塊的輸入,調用數字鎖相環(huán)硬核模塊(CLOCKGEN.v和CLOCKGEN.ucf)可輸出各倍頻時鐘(本設計用108MHz)以及異步復位信號RST,。AC'97 CTRL是以RTL形式下載到Vertex II FPGA中的音頻控制器邏輯,。AC'97 CODEC是National Semiconductor公司的LM4549 AC'97 CODEC芯片。

內核模擬模塊的實現原理

        RTL代碼模擬的都是流水線中的指令執(zhí)行級,,是音頻控制器和內核直接交互數據的級別,。根據DSP內核在指令執(zhí)行級的行為和接口特性,可以靈活地改變內核模擬模塊的接口和內部信號(通過改變RTL代碼),,形成不同的仿真環(huán)境,。測試在新的仿真環(huán)境中音頻控制器與內核的工作是否協調穩(wěn)定,如果結果不理想,,就應更改音頻控制器的設計,。這樣就能使音頻控制器的特性也能和內核達到最好的協調。

基于SoC內核仿真環(huán)境的放音實例

        下面給出基于SoC內核仿真環(huán)境播放音頻的實例,。音頻來源于Windows2000操作系統初始安裝后winnt/media目錄下的Utopia Windows Start.wav(153KB,,16位單聲道的wave文件),提取出文件中的PCM音頻碼后下載到Vertex II的塊內存中,。音頻控制器在SoC內核仿真環(huán)境中控制音頻編解碼器工作,,連接耳機到MicroBlaze開發(fā)電路板的耳機插口,可以聽到維持將近3秒鐘的音頻信號,和原音頻文件的聲音基本一致。使用音頻分析軟件Audicity來分析音頻播放效果,,原始音源與開發(fā)板播放的音頻略有不同,,其原因有以下3點。(1)電腦聲卡錄音起點和原音頻的放音起點不同,; (2)由于塊內存的最大容量為126KB,,所以所錄波形文件只截取了原文件(153KB)的前2/3部分。(3)經過SoC內核仿真環(huán)境放音,,并由電腦聲卡錄音得到的音頻與原音頻的幅度必然不同,。第1、2兩個因素引起兩個波形在時間軸方向上的偏差,,因素3引起幅度軸方向上的偏差,。盡管存在這些差異,但完全可以說明在SoC內核仿真環(huán)境中,,所設計的音頻控制器邏輯功能正確,,與內核能夠協調工作。

總結 
        本文根據所設計的音頻控制器的結構詳細介紹了構建SOC內核仿真環(huán)境來測試音頻控制器的思想和實現方法,?;谶@個仿真環(huán)境,不但可以測試音頻控制器實際錄放音的效果和性能,,更重要的是可以及時反映其與內核的協調程度,。這樣就可避免孤立設計音頻控制器而不考慮其與SoC系統協調的弊端,明顯提高后期整合SoC系統的效率,。

參考文獻
1 Audio Codec ’97, Revision 2.3 Revision 1.0, Intel,,April 2002
2 MICroBlaze and Multimedia Development Board User Guide UG020 (v1.0),Xilinx, August 2002
3 Core Gennerator Guide - ISE 5, Xilinx
4 LM4549A AC ’97 Rev 2.1 Codec with Sample Rate Conversion and National 3D Sound, National Semiconductor, November 2002



 

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