新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式系統中的IIS音頻接口技術的研究

        嵌入式系統中的IIS音頻接口技術的研究

        作者: 時間:2009-03-09 來源:網絡 收藏

          1

          IIS(Integrate InteRFace of Sound)即集成,在上個世紀80年代首先被Philips公司用于消費產品的音頻設備,并在一個稱為LRCLK(Left/Right CLOCK)的信號機制中經過多路轉換,將兩路音頻信號合成單一的數據隊列。當LRCLK為高時,左聲道數據被傳輸;LRCLK為低時,右聲道數據被傳輸(也可以反過來,高低與左右聲音的對應可以自定義)。對于多通道系統,在同樣的BCLK和LRCLK條件下,并行執行幾個數據隊列也是可能的。由于IIS、PCM和類似的不能提供寄存器入口,因此需要獨立的控制接口。

          一般具有4根信號線,如圖1所示,包括串行數據輸入(IISDI)、串行數據輸出(IISD0)、左/右聲道選擇(IISLRCK)和串行數據時鐘(IISCLK);產生IISLRCK和IISCLK的是主設備。

        IIS總線一般具有4根信號線

          2 IIS實現

          有3種模式:MDD/PDD模式、Wavedev2模式、UAM模式。它們相同的地方很明顯:接口相同,都是流驅動,透過流接口與上層的waveapi.dll交互。

          第1種MDD/PDD模式是最早的模式,也是其他驅動常見的分層模式。如果使用CE提供的MDD(wavem—dd.1ib),會受到一些限制:僅支持一個設備;一個設置僅支持一個流;對循環的支持不大可靠;對流的支持較弱。當然,由于提供了源碼,可以自己修改MDD,突破以上這些限制。

          第2種Wavedev2模式,是因為2000年的Smartphone項目產生了新的要求,這些需求需要大改MDD/PDD。比如上面的限制2,根據CE的開發歷史,此時waveapi.dll也不支持software mixer,這就是說只能同時允許一個應用在播放。所以根據當時情況,CE的多媒體開發團隊設計了Wavedev2模式。這是一個單體(不分層)的驅動模式,平臺相關的模塊都在hwctxt.h和hwetxt.cpp中,此外還加入了midi支持、software mixer支持、S/PDlF接口、gain class接口、forcespeaker接口,等等。因此,開發Smartphone或者PPC,這個模式是挺適合的。

          第3種UAM模式,即統一音頻模式(Unified AudioModel),在開發WinCE4.2時,要增加對DirectSound的支持,而且有一些音頻設備是支持硬件mixer的,對此使用UAM是很好的選擇。

          本測試采用MDD/PDD的驅動結構,下面講述本驅動的關鍵點。

          2.1 DMA控制及驅動

          通俗地講,DMA(直接內存存取)不需要CPU干擾也不消耗CPU資源,可以把音頻數據自動地從系統總線搬到上;如果音頻平均按采樣頻率44.1 kHz、16位字長、左右2聲道計算,碼流為1.411 Mbps,通常在1~3Mbps,所以采用DMA傳輸十分必要。

          2.2 時鐘配置

          只要位時鐘和采樣時鐘能匹配好,IIS數據格式主從一致,DMA配置好,音頻就可以工作了。

          IIS數據格式主要分3種:左對齊、右對齊、IIS格式。聲音聽起來“怪怪地”,就是數據格式不對。頻率計算方法如表1所列。
        頻率計算方法

          IIS主設備時鐘頻率可以通過采樣頻率來選擇。IIS主設備時鐘頻率是由IIS預分頻器產生的(IIS主設備時鐘頻率=MCLK/預分頻器值),因此必須選擇合適的預分頻器的值和CODECLK的采樣頻率類型(256或者384fs),才能獲得合適的IISLRC采樣頻率(IISLRCK頻率=IIS主設備時鐘頻率/CODECLK的采樣頻率類型);串行位采樣頻率類型(16/32/48fs)可以通過配置每個通道的串行位數和CODECLK采樣頻率類型來完成,它們之間的關系如表2所列。
        頻率計算方法

          如晶振頻率為16.934 4 MHz,通過384分頻為44.1kHz(采樣頻率就是這么來的)。

          位時鐘頻率=采樣頻率×數據位×2=44.1 kHz×16×2=1.411 MHz

          對于其他頻率的晶振或是來自于總線的時鐘頻率,就要計算出IISC0N中的分頻系數了,以最大限度擬合CODECLK。

          2.3 CODEC控制

          目前有SPI、I2C和L3三種總線控制CODEC。L3總線(L3MODE、L3CLOCK、L3DATA)都是由通用的I/O端口來控制的。其中L3接口實際上是一種串行接口,它由3根信號線組成,完成處理器和C0DEC之間的數據和控制信號交換。UDAl341TS就是采用L3接口的。

          L3DATA:處理器接口數據線。

          L3MODE:處理器接口模式信號線。

          L3CLOCK:處理器接口時鐘信號線。

          三種控制方式中以I2C最為常見。其中I2C又分為寄存器方式和I/O模擬方式兩種,I/O模擬方式的可移植性好,僅I/0模擬方式的I2C驅動又可分為8位、9位、16位,以及是否帶子地址、是否可以連讀連寫、是否要兼容SCCB總線。

          2.4 音量控制節點

          使用音量調節的地方較多。圖2是音量控制節點的一般模型。

         ?、偬幍脑鲆嬗刹シ牌鞯囊袅靠刂乒δ軟Q定,最大是0dB。也就是說,最多只能還原出原信號強度。

         ?、诤廷厶幍脑鲆嬗蒀oded IC自身控制,WM8731沒有產生增益功能,②處容易引入信號失真,一般置為O dB,codec加大音量時主要在③處提高增益。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 和龙市| 南部县| 宝坻区| 宝应县| 溧水县| 织金县| 济南市| 石泉县| 太谷县| 黎川县| 新泰市| 乡城县| 高雄市| 洛阳市| 汕头市| 泸州市| 元阳县| 马公市| 霸州市| 桃源县| 若尔盖县| 哈巴河县| 九龙城区| 荔波县| 樟树市| 西乌珠穆沁旗| 得荣县| 靖西县| 赣州市| 平定县| 湖南省| 即墨市| 通渭县| 黄浦区| 西畴县| 固阳县| 五常市| 冷水江市| 会理县| 措勤县| 兴义市|