《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于I2S的USB 聲卡系統(tǒng)設(shè)計(jì)
基于I2S的USB 聲卡系統(tǒng)設(shè)計(jì)
摘要: 本文介紹了基于S3C2410處理器平臺(tái),利用I2S總線的USB聲卡系統(tǒng)設(shè)計(jì)。詳細(xì)闡述了USB聲卡通訊的實(shí)現(xiàn),并且根據(jù)I2S總線DMA傳輸?shù)奶攸c(diǎn)實(shí)現(xiàn)了環(huán)形緩沖區(qū),以提高系統(tǒng)性能,滿足音頻實(shí)時(shí)性的要求。
關(guān)鍵詞: ARM USB 聲卡 音頻
Abstract:
Key words :

  引言

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

  USB聲卡原理

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

USB聲卡數(shù)據(jù)流

  圖1 USB聲卡數(shù)據(jù)流

  硬件設(shè)計(jì)

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

 

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

  軟件設(shè)計(jì)

  軟件設(shè)計(jì)包括兩部分:USB聲卡固件程序設(shè)計(jì)和主機(jī)端Windows驅(qū)動(dòng)設(shè)計(jì)。因?yàn)閁SB音頻類設(shè)備是一種標(biāo)準(zhǔn)設(shè)備,在Windows 操作系統(tǒng)上有標(biāo)準(zhǔn)的USB音頻驅(qū)動(dòng),所以只需要開(kāi)發(fā)者根據(jù)USB音頻類的協(xié)議開(kāi)發(fā)固件程序。

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

  USB通訊

  USB聲卡描述符

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

USB聲卡拓?fù)鋱D

  圖2 USB聲卡拓?fù)鋱D

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

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

  在USB聲卡的拓?fù)鋱D中,F(xiàn)表示的是USB音頻類的Feature單元,F(xiàn)eature單元的主要作用是控制音量、靜音、低音等。如果在描述符中聲明了Feature單元,在Windows操作系統(tǒng)下,控制面板中的聲音和音頻設(shè)備的一些功能才能使用。那么在Windows中進(jìn)行調(diào)節(jié)音量等控制時(shí),就會(huì)觸發(fā)固件程序?qū)DA1341TS芯片L3接口的控制。

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

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

  USB通訊的程序?qū)崿F(xiàn)

  S3C2410有5個(gè)雙向FIFO端點(diǎn),其中0端點(diǎn)是控制傳輸端點(diǎn),其他4個(gè)端點(diǎn)支持批量、中斷、同步傳輸?shù)确绞健T诒鞠到y(tǒng)中使用0、1兩個(gè)雙向傳輸端點(diǎn)。端點(diǎn)0執(zhí)行控制傳輸(CONTROL),一方面?zhèn)鬏擴(kuò)SB協(xié)議的控制信息,例如Setup事件、握手信號(hào)、枚舉信息等,另一方面?zhèn)鬏斠纛l控制信息,例如采樣率控制、音量控制等。端點(diǎn)1采用同步傳輸方式( ISOCHRONOUS),傳輸時(shí)間間隔為1ms,用于實(shí)時(shí)傳遞主機(jī)和I2S之間的錄音或放音數(shù)據(jù)。

 

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

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

  USB聲卡的控制傳輸

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

  Setup包  22 01 00 01 01 00 03 00

  控制數(shù)據(jù)包 40 1F 00

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

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

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

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

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

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

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

  因?yàn)镮2S的DMA控制器處理數(shù)據(jù)是按段進(jìn)行,每段長(zhǎng)度為16字節(jié),在DMA取數(shù)據(jù)前,先判斷緩沖區(qū)中的數(shù)據(jù)量,如果沒(méi)有足夠數(shù)據(jù)(16字節(jié)),則加入靜音數(shù)據(jù),然后再執(zhí)行DMA傳輸。

  結(jié)語(yǔ)

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

  參考文獻(xiàn)

  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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产精品视频观看| 精品二区视频| 麻豆91精品| 久久不见久久见免费视频1| 9色porny自拍视频一区二区| 久久精品一区二区三区不卡| 亚洲在线日韩| 亚洲一区欧美激情| 亚洲夜间福利| 亚洲一级在线| 亚洲综合色网站| 亚洲一级一区| 亚洲欧美成人网| 亚洲婷婷国产精品电影人久久| 亚洲精品国久久99热| 在线免费观看成人网| 黄色一区二区在线| 韩国一区二区三区在线观看| 国产一区二区看久久| 国产一区二区三区的电影| 国产日韩欧美一区二区三区四区 | 国产精品欧美一区二区三区奶水 | 一区二区三区 在线观看视频| 99视频超级精品| 在线亚洲+欧美+日本专区| 一区二区激情视频| 中日韩美女免费视频网站在线观看 | 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美jjzz| 欧美激情中文字幕在线| 欧美国产综合视频| 欧美日韩国产首页| 欧美视频中文一区二区三区在线观看 | 亚洲影视九九影院在线观看| 午夜综合激情| 亚洲国产高清一区| 99视频在线观看一区三区| 亚洲私人影吧| 欧美自拍丝袜亚洲| 葵司免费一区二区三区四区五区| 欧美99在线视频观看| 欧美日韩国产天堂| 国产精品热久久久久夜色精品三区| 国产欧美一区二区白浆黑人| 伊人春色精品| 日韩午夜中文字幕| 亚洲专区一二三| 亚洲福利视频在线| 99re66热这里只有精品4| 午夜精品久久久久久| 久久深夜福利| 欧美日韩成人激情| 国产精品视频免费观看www| 激情综合色综合久久综合| 亚洲精品网站在线播放gif| 亚洲欧美乱综合| 亚洲人午夜精品| 亚洲免费一区二区| 麻豆精品精华液| 国产精品v片在线观看不卡| 国产自产精品| 99热这里只有精品8| 久久er99精品| 亚洲色诱最新| 另类人畜视频在线| 国产精品国产自产拍高清av王其| 国内精品国产成人| 一本色道久久综合亚洲精品不卡 | 一区二区三区欧美在线| 久久精品国产久精国产一老狼 | 国产精品乱人伦中文| 在线观看中文字幕亚洲| 中日韩美女免费视频网址在线观看 | 久久婷婷蜜乳一本欲蜜臀| 欧美乱人伦中文字幕在线| 国产伦精品一区二区三| 亚洲日本在线观看| 性久久久久久久| 亚洲性xxxx| 欧美国产丝袜视频| 国产小视频国产精品| 99re亚洲国产精品| 亚洲人成免费| 欧美在线影院在线视频| 欧美日韩不卡| 亚洲国产精品精华液网站| 亚洲欧美一区二区精品久久久| 日韩午夜高潮| 蜜臀av在线播放一区二区三区| 国产欧美精品va在线观看| 亚洲乱码国产乱码精品精| 亚洲国产精品久久久久| 欧美一区二区精美| 欧美亚洲不卡| 亚洲精品日韩在线| 亚洲激情精品| 快播亚洲色图| 国模大胆一区二区三区| 亚洲视频一区二区在线观看| 99pao成人国产永久免费视频| 久久综合色婷婷| 国产一区二区电影在线观看| 亚洲一区二区三区精品视频| 国产精品99久久久久久久女警| 欧美高清视频免费观看| 在线观看欧美| 亚洲成色777777在线观看影院 | 久久久精品国产99久久精品芒果| 国产精品美女主播| 99国产精品久久久久久久久久| 亚洲精品一级| 欧美成人精品激情在线观看| 一区二区视频免费完整版观看| 性久久久久久久| 久久九九国产| 国产婷婷色综合av蜜臀av| 亚洲专区欧美专区| 性色av一区二区三区| 国产精品久久一区二区三区| 国产精品99久久久久久宅男| 亚洲主播在线观看| 欧美日韩综合在线免费观看| 99视频有精品| 亚洲男人第一av网站| 国产精品久久一区主播| 亚洲一级高清| 欧美专区亚洲专区| 国产亚洲成年网址在线观看| 欧美一区二区在线视频| 久久精品一二三区| 国产在线精品一区二区中文| 欧美在线观看视频一区二区三区| 久久精品国产99国产精品| 国产一区二区三区免费观看| 亚洲成色999久久网站| 久久天天躁狠狠躁夜夜爽蜜月| 狠狠色狠狠色综合日日小说| 亚洲国产精品一区二区第一页 | 午夜精品一区二区三区在线| 国产精品久久久久久久久免费| 制服丝袜亚洲播放| 欧美在线视频免费播放| 国产欧美在线视频| 久久精品一区二区三区四区| 免费不卡亚洲欧美| 亚洲精品一区二区三区在线观看| 亚洲私人影院| 国产日韩欧美| 亚洲国产精品一区二区第一页| 欧美精品一区三区在线观看| 亚洲精品视频在线播放| 亚洲欧美日韩国产一区二区三区| 国产精品一区二区男女羞羞无遮挡| 欧美在线电影| 欧美国产高清| 亚洲自拍啪啪| 农村妇女精品| 一区二区三区精密机械公司 | 久久成人一区| 欧美久久九九| 亚洲欧美999| 嫩模写真一区二区三区三州| 日韩亚洲成人av在线| 久久国产综合精品| 亚洲第一色在线| 亚洲一区精彩视频| 国产一区二区三区四区五区美女| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美日韩在线播放一区二区| 亚洲欧美日韩精品久久奇米色影视 | 免费日韩av电影| 在线中文字幕一区| 久久久精品性| 一区二区欧美精品| 久久久视频精品| 亚洲美女视频在线免费观看| 欧美在线视频a| 亚洲精品免费在线观看| 欧美一区二区三区在| 亚洲国产老妈| 欧美一区成人| 亚洲裸体在线观看| 久久久久久久一区二区三区| 亚洲美女在线一区| 久久久亚洲国产天美传媒修理工| 一区二区三区久久精品| 久久九九国产精品| 99精品福利视频| 乱中年女人伦av一区二区| 亚洲深夜福利网站| 欧美成人dvd在线视频| 午夜激情一区| 欧美日韩中文另类| 久久精品一区| 国产精品亚洲视频| 一区二区日韩欧美| 在线免费不卡视频| 久久久久国产精品厨房| 亚洲性视频h| 欧美日韩午夜|