<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 基于I2S的USB 聲卡系統設計

基于I2S的USB 聲卡系統設計

——
作者:武漢科技大學(xué)計算機學(xué)院 閔華松 孫程建 時(shí)間:2007-03-12 來(lái)源:電子產(chǎn)品世界 收藏

摘  要:本文介紹了基于處理器平臺,利用總線(xiàn)的系統設計。詳細闡述了通訊的實(shí)現,并且根據總線(xiàn)DMA傳輸的特點(diǎn)實(shí)現了環(huán)形緩沖區,以提高系統性能,滿(mǎn)足音頻實(shí)時(shí)性的要求。

關(guān)鍵詞;;

引言

近年來(lái)USB產(chǎn)品層出不窮,USB音頻類(lèi)在USB開(kāi)發(fā)者論壇的努力下,成為一種標準的規范,USB聲卡也開(kāi)始在市場(chǎng)上悄然出現。因為USB聲卡內置了DAC和有源功放,音頻數據以數字方式進(jìn)入USB聲卡,完全杜絕了PC的內部干擾,所以,USB聲卡將有可能成為現有內置聲卡的替代品。本文介紹了一種基于A(yíng)RM處理器的USB聲卡設計。
  
USB聲卡原理

由USB聲卡數據流圖(見(jiàn)圖1)可以看出USB聲卡的工作原理。在主機端播放音樂(lè )時(shí),應用軟件或驅動(dòng)程序把各類(lèi)音頻信號轉換為統一的格式,如PCM、MPEG等格式的數據流,通過(guò)主機的USB接口發(fā)送給USB聲卡。聲卡的USB接口接收到數據后,通過(guò)I2S接口把并行音頻數據轉為串行,再發(fā)送給音頻編解碼芯片進(jìn)行D/A轉換,即可在音頻芯片連接的揚聲器中發(fā)音。錄音過(guò)程和播放過(guò)程正好相反。

圖1 USB聲卡數據流
   
硬件設計

USB聲卡硬件主要包括MCU和音頻編解碼芯片。MCU采用三星公司的處理器,S3C2410內置I2S總線(xiàn)控制器和USB Slaver控制器。S3C2410的I2S控制器實(shí)現了一個(gè)外部8/16位立體聲音頻CODEC IC的接口,支持I2S總線(xiàn)數據格式和MSB-justified數據格式,并且支持DMA傳輸模式。

音頻芯片采用UDA1341TS。UDA1341TS提供標準的I2S接口,可以直接和S3C2410的I2S引腳連接。另外,此芯片還提供標準的L3、麥克風(fēng)和揚聲器接口。L3接口的引腳分別連到S3C2410的3個(gè)GPIO輸出引腳上,通過(guò)GPIO控制L3接口。UDA1341TS音頻芯片集成數字化音頻和混頻器功能。數字化音頻功能可以播放數字化聲音或錄制聲音,因為包括這個(gè)功能,所以常把此類(lèi)芯片稱(chēng)為CODEC設備?;祛l器用來(lái)控制各種輸入/輸出的音量大小等,在本芯片中通過(guò)L3接口進(jìn)行控制。

軟件設計

軟件設計包括兩部分:USB聲卡固件程序設計和主機端Windows驅動(dòng)設計。因為USB音頻類(lèi)設備是一種標準設備,在Windows 操作系統上有標準的USB音頻驅動(dòng),所以只需要開(kāi)發(fā)者根據USB音頻類(lèi)的協(xié)議開(kāi)發(fā)固件程序。

USB聲卡的固件程序主要包括兩部分,第一部分主要是USB通訊,第二部分實(shí)現I2S接口數據傳輸以及數據流的緩沖區控制等。

USB通訊

USB聲卡描述符

為了有效地定義出USB聲卡的描述符,可先根據USB音頻類(lèi)協(xié)議,并結合需要實(shí)現的USB聲卡功能,確定出USB聲卡的拓撲圖(見(jiàn)圖2),然后再根據拓撲圖和USB音頻類(lèi)描述符的協(xié)議,寫(xiě)出USB聲卡的描述符。

圖2 USB聲卡拓撲圖

USB聲卡的描述符包括5部分,分別為設備描述符、配置描述符、接口描述符、端點(diǎn)描述符和字符串描述符。接口描述符是其中的難點(diǎn)。USB聲卡的接口描述符包括兩部分:音頻控制(AudioControl)接口描述符和音頻數據流(AudioStreaming)接口描述符。

1. USB音頻控制接口描述符。根據USB聲卡的拓撲圖所示,當聲卡用于回放功能時(shí),其聲卡功能的控制流程,通過(guò)IT1(Input Teminal),OT3(Out Teminal)和Feature單元表示,IT1表示的是PC向USB聲卡發(fā)送的音頻數據流,OT3表示的是發(fā)向DAC的數據流,在IT1和OT3之間的Feature單元用于調節音量和音效功能等。當聲卡執行錄音功能時(shí),USB的功能拓撲通過(guò)IT2,OT4表示,IT2表示A/D采樣的音頻數據流,OT4表示的是通過(guò)USB接口發(fā)向PC的數據流。USB音頻控制接口的數據傳輸一般使用默認端點(diǎn)0。

在USB聲卡的拓撲圖中,F表示的是USB音頻類(lèi)的Feature單元,Feature單元的主要作用是控制音量、靜音、低音等。如果在描述符中聲明了Feature單元,在Windows操作系統下,控制面板中的聲音和音頻設備的一些功能才能使用。那么在Windows中進(jìn)行調節音量等控制時(shí),就會(huì )觸發(fā)固件程序對UDA1341TS芯片L3接口的控制。

2. USB音頻數據流接口描述符。因為USB 音頻有回放和錄音兩種功能,所以需要兩個(gè)同步數據流接口,兩個(gè)接口使用雙向端點(diǎn)1進(jìn)行數據傳輸。

通過(guò)USB聲卡的拓撲圖,可以分析出音頻接口的流程和功能,從而得出USB聲卡的描述符。

USB通訊的程序實(shí)現

S3C2410有5個(gè)雙向FIFO端點(diǎn),其中0端點(diǎn)是控制傳輸端點(diǎn),其他4個(gè)端點(diǎn)支持批量、中斷、同步傳輸等方式。在本系統中使用0、1兩個(gè)雙向傳輸端點(diǎn)。端點(diǎn)0執行控制傳輸(CONTROL),一方面傳輸USB協(xié)議的控制信息,例如Setup事件、握手信號、枚舉信息等,另一方面傳輸音頻控制信息,例如采樣率控制、音量控制等。端點(diǎn)1采用同步傳輸方式( ISOCHRONOUS),傳輸時(shí)間間隔為1ms,用于實(shí)時(shí)傳遞主機和I2S之間的錄音或放音數據。

根據USB協(xié)議,USB設備的任何數據傳輸,都由USB主機分配,然后USB設備響應相應的USB主機總線(xiàn)請求。S3C2410的USB控制器采用的是中斷方式響應,那么在S3C2410的USB中斷服務(wù)程序中要作以下工作:

Isr_USB()
{
if(USB_INT_REG&RESET_INT)     Reset_USB();   //重啟USB設備
if(USB_INT_REG&RESUME_INT)   Resume_USB();  //喚醒USB設備
if(USB_INT_REG&SUSPEND_INT)  Suspend_USB(); //掛起USB設備
if(EP_INT_REG&EP0_INT)         Handle_EP0(); //執行控制傳輸端點(diǎn)0處理程序
if(EP_INT_REG&EP1_INT)         Handle_EP1(); //執行同步傳輸端點(diǎn)1處理程序
}

USB聲卡的控制傳輸

在主機端應用程序中,執行音量調節、靜音等事件時(shí),USB音頻驅動(dòng)通過(guò)默認端點(diǎn)0執行一個(gè)控制傳輸。一次控制傳輸主要包括兩個(gè)步驟,第一步,由主機向設備發(fā)送一個(gè)建立(Setup)信息,描述控制訪(fǎng)問(wèn)的類(lèi)型,設備將執行此控制訪(fǎng)問(wèn)。第二步,零個(gè)或多個(gè)控制數據信息的傳送,這是訪(fǎng)問(wèn)的具體信息。根據USB音頻類(lèi)協(xié)議分解控制信息包,然后再根據控制信息,執行相應的操作。例如,在主機端應用程序中播放音樂(lè )前,USB聲卡就會(huì )從主機端收到如下的兩個(gè)包:

Setup包  22 01 00 01 01 00 03 00
控制數據包 40 1F 00

根據USB音頻類(lèi)協(xié)議分解Setup包,可以得知,本次控制傳輸的作用是設置USB聲卡的采樣頻率,并且收到的3字節控制數據信息是采樣頻率,即8KHz。那么在播放音樂(lè )前,必須把I2S和UDA1341TS芯片的采樣頻率設置為8kHz,才能和主機端保持同步。

I2S總線(xiàn)實(shí)現方法

在S3C2410芯片中,I2S接口提供三種數據傳輸模式:正常傳輸模式、DMA傳輸模式、傳輸/接收模式。本系統采用的是傳輸/接收模式,它具有雙通道DMA功能,一方面竊取總線(xiàn)控制權,提高系統的吞吐能力,另一方面,可以實(shí)現同時(shí)接收和發(fā)送音頻數據,即全雙工模式。

在S3C2410芯片中,有4個(gè)DMA通道控制器用于控制各種外部設備,其中I2S與其他串行外設共用兩個(gè)橋接DMA(BDMA)類(lèi)型的DMA通道。通過(guò)設置I2SFCON寄存器可以使I2S接口工作在DMA模式下。此模式下FIFO寄存器組的控制權掌握在DMA控制器上。當FIFO滿(mǎn)時(shí),由DMA控制器對FIFO中的數據進(jìn)行處理。DMA模式的選擇由I2SCON寄存器的第四和第五位控制。

為了使USB聲卡的回放和錄音可以同時(shí)進(jìn)行,即實(shí)現全雙工,數據傳輸使用兩個(gè)BDMA通道,通道0用于回放,通道1用于錄音,因為S3C2410的BDMA中沒(méi)有內置DMA存儲區域,所以需要在SDRAM中分配DMA緩沖區。音頻數據回放時(shí),先由USB總線(xiàn)取得音頻數據,寫(xiě)入DMA緩沖區,由BDMA控制器通道0竊取總線(xiàn)控制權,通過(guò)I2S控制器寫(xiě)入I2S總線(xiàn)并傳輸給音頻芯片。錄音采用BDMA控制器的通道1,其數據流過(guò)程和回放相反。

由于處理的音頻數據量比較大,并且PC端接收/發(fā)送數據的速度和I2S處理數據的速度不能完全匹配,這就導致了放音失真或者錄音丟幀的現象。為了解決這個(gè)問(wèn)題,最簡(jiǎn)單易行的方法是使用比較大的環(huán)形緩存。但實(shí)際上大的緩存區需要更長(cháng)的填充時(shí)間,在使用時(shí)會(huì )出現延時(shí)。為了解決延時(shí)的問(wèn)題,使用環(huán)形、多段緩存機制。在這種機制下,將緩存區分割成若干個(gè)相同大小的塊,并使用算法實(shí)現環(huán)形緩沖。下面以8kHz/16位/單通道音頻流的播放為例說(shuō)明緩沖區的操作。

USB音頻類(lèi)規定的USB同步傳輸周期為1ms,即對于8kHz/16位/單通道PCM編碼的音頻流,每隔1ms,USB設備就會(huì )收到一次主機傳來(lái)的數據,數據包大小為16字節,為了盡量保持I2S和USB傳輸同步,可以取16字節作為一個(gè)緩存區段的大小。當USB聲卡接收到數據后,MCU先判斷緩沖區中是否有空閑區域,如果沒(méi)有足夠緩沖區就跳過(guò)一個(gè)樣本,然后再逐一把FIFO中的數據復制到SDRAM的緩沖區。

因為I2S的DMA控制器處理數據是按段進(jìn)行,每段長(cháng)度為16字節,在DMA取數據前,先判斷緩沖區中的數據量,如果沒(méi)有足夠數據(16字節),則加入靜音數據,然后再執行DMA傳輸。

結語(yǔ)

本文所闡述的基于I2S總線(xiàn)的USB聲卡,已經(jīng)在基于S3C2410處理器的開(kāi)發(fā)板上成功實(shí)現,不過(guò)只是實(shí)現了USB聲卡的最基本功能??梢試L試把MP4、U盤(pán)等和USB聲卡集成在一體,會(huì )更有應用價(jià)值。 ■

參考文獻
1. Samsung Inc. S3C44B0X Risc Microprocessor Datasheet. http://www.samsung.com.  2003
2.Philips Semiconductors. UDA1341TS datasheet.http://www. semiconductor. philips.com. 2002
3. Hyde, John, USB Design by Example. Intel. www.usb-by-example.com.2002.5



評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>