<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于SoC的AC97技術(shù)硬件設(shè)計(jì)(圖)

          基于SoC的AC97技術(shù)硬件設(shè)計(jì)(圖)

          ——
          作者:SanDisk公司Flash存儲(chǔ)器產(chǎn)品工程部 張歸雁 時(shí)間:2007-02-06 來(lái)源: 收藏

          摘 要:介紹一種在soc內(nèi)核仿真環(huán)境中設(shè)計(jì)ac97音頻控制器的方法,著重闡述了所設(shè)計(jì)的音頻控制器以及soc內(nèi)核仿真環(huán)境的結(jié)構(gòu)和原理。本音頻控制器邏輯功能正確,可以與內(nèi)核協(xié)調(diào)工作。
          關(guān)鍵詞:ac97音頻控制器;soc內(nèi)核仿真;現(xiàn)場(chǎng)可編程門(mén)陣列

          引言
          ---符合audio codec97協(xié)議(簡(jiǎn)稱(chēng)ac97,是由intel公司提出的數(shù)字音頻處理協(xié)議)的音頻控制器不但廣泛應(yīng)用于個(gè)人電腦聲卡,并且為個(gè)人信息終端設(shè)備的soc(如intel的pxa250)提供音頻解決方案。本文設(shè)計(jì)的音頻控制器可為dsp內(nèi)核提供數(shù)字音頻接口。全文在介紹音頻控制器結(jié)構(gòu)的同時(shí),著重強(qiáng)調(diào)其與內(nèi)核之間數(shù)據(jù)的協(xié)調(diào)傳輸,并給出基于fpga實(shí)現(xiàn)soc內(nèi)核仿真環(huán)境對(duì)音頻控制器進(jìn)行功能測(cè)試的方法。

          音頻控制器的結(jié)構(gòu)和原理
           ac97系統(tǒng)由音頻編解碼器(codec)和音頻控制器(controller)兩個(gè)部分組成。其中音頻編解碼器實(shí)現(xiàn)a/d、d/a轉(zhuǎn)換、音效處理等功能,而音頻控制器則是soc內(nèi)核與音頻編解碼器之間的數(shù)字接口,負(fù)責(zé)控制數(shù)據(jù)和音頻數(shù)據(jù)的串/并、并/串轉(zhuǎn)換以及傳輸。
          ● 性能指標(biāo)
          本設(shè)計(jì)的音頻控制器符合ac97規(guī)范v2.3,其主要指標(biāo)如下:支持雙聲道錄放音;支持定采樣率(48khz)和變采樣率錄放音;20位寬16層深pcm音頻數(shù)據(jù)fifo;支持省電模式;支持中斷、dma和輪詢(xún)3種方式實(shí)現(xiàn)與內(nèi)核或內(nèi)存的數(shù)據(jù)交換。
          ● 組成結(jié)構(gòu)
          音頻控制器的主結(jié)構(gòu)如圖1所示。


          內(nèi)核/內(nèi)存和音頻控制器接口(core/memory,ctrl interface)連接音頻控制器與內(nèi)核或內(nèi)存。cs是片選信號(hào),wr和rd分別是讀寫(xiě)使能,addr(16位寬)是音頻控制器的端口地址,din和dout(都是32位寬)分別是總線上的輸入輸出數(shù)據(jù),irq和dma req分別是中斷和dma請(qǐng)求。
          主模塊(ac97 ctrl master)負(fù)責(zé)音頻控制器(ac97 controller)與內(nèi)核或內(nèi)存(dma模式下)之間pcm音頻數(shù)據(jù)、控制和狀態(tài)寄存器組(control&status regs)數(shù)據(jù)以及音頻編解碼器(ac97 codec)內(nèi)部寄存器數(shù)據(jù)各并行數(shù)據(jù)的傳輸,由主時(shí)鐘clk同步。電源控制模塊(power ctrl)可以啟動(dòng)省電模式,也由主時(shí)鐘clk同步。


          4組fifo用于存放pcm音頻數(shù)據(jù),都是20位寬16層深,因此可以支持最高20位寬分辨率。當(dāng)fifo滿或者空時(shí),可以發(fā)出中斷或dma請(qǐng)求。
          音頻編解碼器內(nèi)部寄存器讀寫(xiě)緩存器(codec reg write/read buf,簡(jiǎn)稱(chēng)crbuf)是2個(gè)32位寄存器。寫(xiě)緩沖器可以緩存準(zhǔn)備寫(xiě)入音頻編解碼器內(nèi)部寄存器的控制字,其空時(shí)可以發(fā)出中斷請(qǐng)求;讀緩沖器可以緩存已經(jīng)從音頻編解碼器內(nèi)部寄存器中讀出的狀態(tài)字,其滿時(shí)可以發(fā)出中斷請(qǐng)求。
          控制和狀態(tài)寄存器組包含8個(gè)32位寄存器,其中,通用控制寄存器的主要功能是系統(tǒng)冷啟動(dòng)、熱啟動(dòng);通用狀態(tài)寄存器反映音頻編解碼器狀態(tài);其他寄存器的功能包括配置pcm輸入輸出聲道、配置和產(chǎn)生中斷或dma請(qǐng)求。
          輔模塊(ac97 ctrl slave)實(shí)現(xiàn)音頻控制器與音頻編解碼器之間(ac-link)數(shù)據(jù)幀的串行發(fā)送和接收。輸出數(shù)據(jù)(sdata_out)由輔時(shí)鐘bit_clk上跳沿同步,輸入數(shù)據(jù)(sdata_in)由bit_clk下跳沿同步。
           ● 工作原理
          dsp內(nèi)核通過(guò)讀寫(xiě)音頻控制器csrs分別來(lái)獲得音頻編解碼器狀態(tài)和設(shè)置音頻編解碼器工作模式;通過(guò)讀寫(xiě)fifo來(lái)緩沖音頻錄制和播放過(guò)程中的pcm音頻數(shù)據(jù);通過(guò)讀寫(xiě)crbuf來(lái)獲得音頻編解碼器內(nèi)部寄存器狀態(tài)和設(shè)置音頻編解碼器內(nèi)部寄存器參數(shù)。下面以音頻播放中的主要步驟為例,介紹音頻控制器的工作原理。
          (1)寫(xiě)滿pcm左聲道輸出fifo;
          (2)寫(xiě)滿pcm右聲道輸出fifo;
          (3)輪詢(xún)音頻編解碼器準(zhǔn)備好(codec ready)信號(hào)是否有效;
          (4)讀音頻編解碼器的26h寄存器,判斷d/a轉(zhuǎn)換器是否準(zhǔn)備好;
          (5)允許crbuf產(chǎn)生中斷請(qǐng)求;
          (6)寫(xiě)0到音頻編解碼器的02h寄存器,使主音量衰減最??;
          (7)等待crbuf產(chǎn)生中斷,響應(yīng)中斷并寫(xiě)0到音頻編解碼器的18h寄存器,使pcm輸出音量衰減最??;
          (8)等待crbuf產(chǎn)生中斷,響應(yīng)中斷并寫(xiě)1到音頻編解碼器的2ah寄存器,即以變采樣率播放音頻;
          (9)等待crbuf產(chǎn)生中斷,響應(yīng)中斷并寫(xiě)5622(十六進(jìn)制)到音頻編解碼器的2ch寄存器,即以22.05khz采樣率播放音頻;
          (10)允許pcm左右聲道fifo產(chǎn)生滿中斷;
          (11)設(shè)置pcm左右聲道定速率或者變速率傳輸,并開(kāi)始播放音頻;
          (12)等待fifo中的pcm碼傳送掉16層并發(fā)出中斷請(qǐng)求;
          (13)判斷是否是pcm左聲道fifo發(fā)出中斷請(qǐng)求,如果是,則寫(xiě)16層pcm左聲道數(shù)據(jù);
          (14)判斷是否是pcm右聲道fifo發(fā)出中斷請(qǐng)求,如果是,則寫(xiě)16層pcm右聲道fifo數(shù)據(jù);
          (15)如果內(nèi)存中pcm數(shù)據(jù)被讀完,則放音結(jié)束,否則返回第12步繼續(xù)放音。

          soc仿真環(huán)境的構(gòu)成和原理
          由音頻控制器的工作原理可見(jiàn),其每一個(gè)步驟都是在dsp內(nèi)核控制下進(jìn)行的。因此在對(duì)音頻控制器進(jìn)行功能驗(yàn)證時(shí),不但要保證其本身的邏輯正確,更要保證其與內(nèi)核的數(shù)據(jù)傳輸正確,這樣才有利于音頻控制器和內(nèi)核的整合。由此提出通過(guò)構(gòu)件soc內(nèi)核仿真環(huán)境來(lái)逼近真實(shí)內(nèi)核,并在這個(gè)仿真環(huán)境中測(cè)試所設(shè)計(jì)的音頻控制器。
          ● 仿真環(huán)境的構(gòu)成
          soc內(nèi)核仿真環(huán)境的硬件以xilinx公司的microblaze多媒體開(kāi)發(fā)電路板為基礎(chǔ),其核心是vertex ii fpga。電路板上還集成了national semiconductor公司的ac97 codec lm4549芯片,并且提供了line in/out、耳機(jī)以及麥克風(fēng)插口??梢酝ㄟ^(guò)這些插口來(lái)測(cè)試音頻錄放效果,也可通過(guò)電路板上的測(cè)試點(diǎn)調(diào)試部分關(guān)鍵信號(hào)。soc內(nèi)核仿真環(huán)境的構(gòu)成如圖3所示。


          內(nèi)核模擬模塊(core sim)是soc內(nèi)核仿真環(huán)境的核心,以rtl代碼形式下載到vertex ii fpga中模擬dsp內(nèi)核的單周期指令,可以實(shí)現(xiàn)讀寫(xiě)內(nèi)存、訪問(wèn)音頻控制器(包括讀寫(xiě)fifo、crbuf以及csrs)、響應(yīng)并處理中斷請(qǐng)求或dma請(qǐng)求。
          其中,din_ram是32位內(nèi)存數(shù)據(jù)輸入總線;din_ctrl是32位音頻控制器數(shù)據(jù)輸入總線;dout是32位數(shù)據(jù)輸出總線;irq是音頻控制器中斷請(qǐng)求;dma req是音頻控制器dma請(qǐng)求;rst是音頻控制器異步復(fù)位。
          塊內(nèi)存模塊是由vertex ii fpga中的塊內(nèi)存實(shí)現(xiàn)的單端口內(nèi)存,這種內(nèi)存的時(shí)序與常規(guī)sram相同,可以模擬最大126kb的片上sram。在xilinx集成開(kāi)發(fā)環(huán)境(ise)中調(diào)用core generator,就可以生成這種靜態(tài)內(nèi)存。如果運(yùn)用memory eidtor工具生成cgf和coe文件(塊內(nèi)存的配置文件),就可以在為fpga下載bit文件的同時(shí)給塊內(nèi)存賦初始值?;趂pga這項(xiàng)強(qiáng)大的功能,就可以將從個(gè)人電腦上提取出來(lái)的pcm音頻碼下載到塊內(nèi)存中,然后在內(nèi)核模擬模塊的控制下,通過(guò)音頻控制器傳送到音頻編解碼器中,由此實(shí)現(xiàn)音頻播放。
          時(shí)鐘發(fā)生模塊(clock generator)可發(fā)出27mhz、54mhz以及108mhz三種時(shí)鐘,并且產(chǎn)生音頻控制器異步復(fù)位信號(hào)rst。microblaze開(kāi)發(fā)電路板上的晶振發(fā)出27mhz和50mhz的占空比1:1的方波信號(hào)作為時(shí)鐘發(fā)生模塊的輸入,調(diào)用數(shù)字鎖相環(huán)硬核模塊(clockgen.v和clockgen.ucf)可輸出各倍頻時(shí)鐘(本設(shè)計(jì)用108mhz)以及異步復(fù)位信號(hào)rst。
          ac97 ctrl是以rtl形式下載到vertex ii fpga中的音頻控制器邏輯。ac97 codec是national semiconductor公司的lm4549 ac97 codec芯片。

          內(nèi)核模擬模塊的實(shí)現(xiàn)原理
          rtl代碼模擬的都是流水線中的指令執(zhí)行級(jí),是音頻控制器和內(nèi)核直接交互數(shù)據(jù)的級(jí)別。根據(jù)dsp內(nèi)核在指令執(zhí)行級(jí)的行為和接口特性,可以靈活地改變內(nèi)核模擬模塊的接口和內(nèi)部信號(hào)(通過(guò)改變r(jià)tl代碼),形成不同的仿真環(huán)境。測(cè)試在新的仿真環(huán)境中音頻控制器與內(nèi)核的工作是否協(xié)調(diào)穩(wěn)定,如果結(jié)果不理想,就應(yīng)更改音頻控制器的設(shè)計(jì)。這樣就能使音頻控制器的特性也能和內(nèi)核達(dá)到最好的協(xié)調(diào)。

          基于soc內(nèi)核仿真環(huán)境的放音實(shí)例
          下面給出基于soc內(nèi)核仿真環(huán)境播放音頻的實(shí)例,流程如圖2所示。
          音頻來(lái)源于windows2000操作系統(tǒng)初始安裝后winnt/media目錄下的utopia windows start.wav(153kb,16位單聲道的wave文件),提取出文件中的pcm音頻碼后下載到vertex ii的塊內(nèi)存中。
          音頻控制器在soc內(nèi)核仿真環(huán)境中控制音頻編解碼器工作,連接耳機(jī)到microblaze開(kāi)發(fā)電路板的耳機(jī)插口,可以聽(tīng)到維持將近3秒鐘的音頻信號(hào),和原音頻文件的聲音基本一致。
          使用音頻分析軟件audicity來(lái)分析音頻播放效果,原始音源與開(kāi)發(fā)板播放的音頻略有不同,其原因有以下3點(diǎn)。
          (1)電腦聲卡錄音起點(diǎn)和原音頻的放音起點(diǎn)不同;
          (2)由于塊內(nèi)存的最大容量為126kb,所以所錄波形文件只截取了原文件(153kb)的前2/3部分。
          (3)經(jīng)過(guò)soc內(nèi)核仿真環(huán)境放音,并由電腦聲卡錄音得到的音頻與原音頻的幅度必然不同。
          第1、2兩個(gè)因素引起兩個(gè)波形在時(shí)間軸方向上的偏差,因素3引起幅度軸方向上的偏差。盡管存在這些差異,但完全可以說(shuō)明在soc內(nèi)核仿真環(huán)境中,所設(shè)計(jì)的音頻控制器邏輯功能正確,與內(nèi)核能夠協(xié)調(diào)工作。

          總結(jié)
          本文根據(jù)所設(shè)計(jì)的音頻控制器的結(jié)構(gòu)詳細(xì)介紹了構(gòu)建soc內(nèi)核仿真環(huán)境來(lái)測(cè)試音頻控制器的思想和實(shí)現(xiàn)方法?;谶@個(gè)仿真環(huán)境,不但可以測(cè)試音頻控制器實(shí)際錄放音的效果和性能,更重要的是可以及時(shí)反映其與內(nèi)核的協(xié)調(diào)程度。這樣就可避免孤立設(shè)計(jì)音頻控制器而不考慮其與soc系統(tǒng)協(xié)調(diào)的弊端,明顯提高后期整合soc系統(tǒng)的效率。

          參考文獻(xiàn)
          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



          關(guān)鍵詞: SoC ASIC

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();