摘要:SEP4020是東南大學(xué)ASIC中心自主開發(fā)的一款基于ARM7TDMI核的微處理器,通過IIS音頻總線與UDA1341型CODEC構(gòu)成一種嵌入式音頻系統(tǒng),實(shí)現(xiàn)音頻的播放和采集。該文介紹了基于SEP4020和IIS總線的嵌入式音頻設(shè)備的硬件體系結(jié)構(gòu)及其驅(qū)動(dòng)程序的設(shè)計(jì)。給出相關(guān)硬件電路的說明及嵌入式系統(tǒng)下音頻驅(qū)動(dòng)程序的設(shè)計(jì)要點(diǎn)。
關(guān)鍵詞:SEP4020;音頻系統(tǒng);驅(qū)動(dòng)程序;IIS總線;UDA1341
中圖分類號:TP338文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)31-0964-03
Design of Embedded Audio System Based on SEP4020
QI Hao-chun
(IC Embedded System Lab,Southeast University,Nanjing 210096,China)
Abstract: SEP4020 which is developed by National ASIC System Engineering Research Center of SEU is a microprocessor based on ARM7TDMI core. The playing and sampling of audio signals is realized with an embedded audio system constructed by connecting the SEP4020 and CODEC UDA1341 with IIS bus. The hardware system structure and design of device driver of Embedded Audio device based on SEP4020 and IIS Bus interface have been introduced in the article. The explanations of relative hardware designs, as well as the key features of the audio devices' driver under embedded system are provided.
Key words: SEP4020; audio system; driver; IIS bus; UDA1341
1 引言
嵌入式音頻系統(tǒng)廣泛應(yīng)用于GPS自動(dòng)導(dǎo)航、PDA、3G手機(jī)等嵌入式領(lǐng)域,音頻系統(tǒng)基于某種處理器和操作系統(tǒng),由音頻設(shè)別和驅(qū)動(dòng)程序兩部分組成。音頻設(shè)別主要完成聲音數(shù)據(jù)的采集、回放、混音和聲音信號的模數(shù)轉(zhuǎn)換,驅(qū)動(dòng)程序在系統(tǒng)啟動(dòng)時(shí)對硬件進(jìn)行初始化,在系統(tǒng)啟動(dòng)后實(shí)現(xiàn)硬件和應(yīng)用程序之間的數(shù)據(jù)交互。
音頻系統(tǒng)設(shè)計(jì)包括軟件設(shè)計(jì)和硬件設(shè)計(jì)兩方面,硬件部分采用基于IIS總線的音頻系統(tǒng)體系結(jié)構(gòu)。IIS(Inter-IC Sound bus)是飛利浦公司提出的串行數(shù)字音頻總線協(xié)議,它主要針對數(shù)字音頻處理技術(shù)和設(shè)別的標(biāo)準(zhǔn)接口,它將音頻數(shù)據(jù)和時(shí)鐘信號分離,從而避免了由時(shí)鐘帶來的抖動(dòng)問題,系統(tǒng)中不再需要消除抖動(dòng)的器件。隨著該標(biāo)準(zhǔn)的廣泛應(yīng)用,不同廠家紛紛開發(fā)了支持該標(biāo)準(zhǔn)的語音芯片,但大多數(shù)由于功能單一,操作復(fù)雜,沒有得到廣泛應(yīng)用。PHILIPS生產(chǎn)了一種支持IIS總線數(shù)據(jù)格式的音頻編解碼新品啊UDA1341TS,由于其功能強(qiáng)大、低功耗、低電壓及其具有DSP語音功能等特征,目前已廣泛應(yīng)用于各種嵌入式語音系統(tǒng)中。
在軟件上,作為一個(gè)功能復(fù)雜的嵌入式系統(tǒng),需要有嵌入式操作系統(tǒng)支撐。Nucleus PLUS是美國ATI公司位實(shí)時(shí)性要求較高的嵌入式系統(tǒng)應(yīng)用設(shè)計(jì)的操作系統(tǒng)內(nèi)核。約95%的Nucleus PLUS代碼用ANSI C語言編寫,因此,非常便于移植并能夠支持大多數(shù)類型的微處理器。由于音頻應(yīng)用對實(shí)時(shí)性有很高的要求,且需要處理的數(shù)據(jù)量較大,所以必須合理分配資源,使用合適的算法。本文針對東南大學(xué)的SEP4020處理器和PHILIPS公司的UDA1341TS型立體聲音頻CODEC構(gòu)造了基于IIS的嵌入式音頻系統(tǒng), 給出了整個(gè)系統(tǒng)的軟硬件實(shí)現(xiàn)方案。
2 硬件體系結(jié)構(gòu)的配置
2.1 SEP4020微處理器簡介
SEP4020由東南大學(xué)國家專用集成電路系統(tǒng)工程技術(shù)研究中心設(shè)計(jì)的基于ARM720T的一款A(yù)RM處理器,采用0.18um標(biāo)準(zhǔn)CMOS的工藝設(shè)計(jì),內(nèi)嵌32位RISC內(nèi)核,兼容ARM720T,帶8KB指令數(shù)據(jù)Cache,三級流水線作業(yè),支持片上斷點(diǎn)、調(diào)試點(diǎn)設(shè)置,具有先進(jìn)的軟件開發(fā)環(huán)境和調(diào)試環(huán)境。圖1為SEP4020處理器的結(jié)構(gòu)框圖。
2.2 IIS總線
IIS(Inter-IC Sound)總線是PHILIPS公司提出的串行數(shù)字音頻總線協(xié)議。它是一種面向?qū)γ襟w的音頻總線,專用于音頻設(shè)備之間的數(shù)據(jù)傳輸,為數(shù)字立體聲提供序列的連接至標(biāo)準(zhǔn)編解碼器。IIS總線只處理聲音數(shù)據(jù)。其他信號(如控制信號)必須單獨(dú)傳輸。為了使必需的引腳數(shù)最小并且保持連線簡單,IIS總線由3條信號線組成:時(shí)分復(fù)用的數(shù)據(jù)銅導(dǎo)線(SD)、字選擇線(WS)和時(shí)鐘線(SCK)。
I2S工作模式分為MASTER模式和SLAVE模式,MASTER模式下,I2S向外輸出時(shí)鐘,SLAVE模式下,時(shí)鐘由外部芯片提供。常見的SOC芯片的I2S工作在MASTER模式,芯片外接音頻CODEC,SOC芯片向外提供數(shù)據(jù),CODEC做DA轉(zhuǎn)換發(fā)出聲音,錄音則是CODEC提供AD轉(zhuǎn)換后的數(shù)據(jù),SOC芯片把數(shù)據(jù)接收到MEMORY中。
無論在MASTER模式還是在SLAVE模式,I2S都可以作為TRANSMITTER或者RECEIVER,如果I2S向外接CODEC提供數(shù)據(jù),I2S是TRANSMITTER,如果I2S從外接CODEC接收數(shù)據(jù),I2S是RECEIVER。
■
圖2 MASTER = TRANSMITTER圖3 MASTER = RECEIVER
SCK由總線時(shí)鐘分頻而來,分頻比可配。WS是占空比為50%的周期性信號,高低電平分別對應(yīng)左右(或者右左)聲道,周期長度和音頻數(shù)據(jù)的字長有關(guān),例如,8位的雙聲道音頻數(shù)據(jù),對應(yīng)的WS周期就是16個(gè)SCK,8個(gè)左聲道數(shù)據(jù),8個(gè)右聲道數(shù)據(jù);若是單聲道,WS的高低電平將使用相同的數(shù)據(jù)。左右聲道對應(yīng)的WS信號電平可配,可以左低右高或者左高右低。
■
圖4I2S信號傳輸波形(左先) 圖5 I2S信號輸出波形(右先)
I2S的數(shù)據(jù)(SD信號)的變化比字選擇(WS)晚一個(gè)時(shí)鐘。I2S支持8位、16位、32位字傳輸,數(shù)據(jù)的傳輸支持DMA模式。在單聲道模式下,左右聲道輸出同樣的數(shù)據(jù)。
當(dāng)I2S作為TRANSMITTER工作時(shí),數(shù)據(jù)從總線傳輸?shù)絀2S的數(shù)據(jù)FIFO,然后根據(jù)設(shè)定的字長、聲道將數(shù)據(jù)送出,數(shù)據(jù)的高位先出。當(dāng)FIFO為半空的時(shí)候,發(fā)出中斷和DMA請求,當(dāng)FIFO為空時(shí),發(fā)出空中斷,I2S將繼續(xù)重復(fù)發(fā)送最后一個(gè)數(shù)據(jù)(這種情況下,CODEC將會(huì)發(fā)出不是用戶想要的聲音),直到有新的數(shù)據(jù)寫到FIFO中。
當(dāng)I2S作為RECEIVER工作時(shí),數(shù)據(jù)從外接的CODEC輸入到FIFO,當(dāng)FIFO半滿時(shí)發(fā)出中斷和DMA請求,當(dāng)FIFO為滿時(shí),發(fā)出滿中斷,I2S將繼續(xù)接收數(shù)據(jù),但之后接收的數(shù)據(jù)會(huì)被丟棄而不被存入FIFO中。
除了工作在標(biāo)準(zhǔn)的I2S模式,I2S模塊還可以工作在WS和SD對齊的方式。
■
圖6 對齊數(shù)據(jù)輸出波形(左先)圖7 對齊數(shù)據(jù)輸出波形(右先)
SEP4020內(nèi)置IIS總線接口,可直接外接8/16比特的立體聲CODEC。它還可以給FIFO通道提供DMA傳輸模式而非中斷模式,從而使數(shù)據(jù)發(fā)送和接收同時(shí)進(jìn)行。該IIS接口有3種工作方式(正常傳輸模式,DMA模式,傳輸/接收模式),可以通過設(shè)置IISCON寄存器來選擇,本系統(tǒng)使用正常傳輸模式,該模式下,IIS數(shù)據(jù)線將通過DMA接收和發(fā)送音頻數(shù)據(jù),IIS總線接口為FIFO隊(duì)列的訪問提供DMA傳輸模式來取代中斷,從而發(fā)送和接收數(shù)據(jù)。
2.3 支持IIS的編解碼芯片UDA1341TS介紹
UDA1341支持IIS總線數(shù)據(jù)格式,采用位元流轉(zhuǎn)換技術(shù)進(jìn)行信號處理,完成聲音信號的模數(shù)轉(zhuǎn)換,具有可編程增益放大器和數(shù)字自動(dòng)增益控制器,其低功耗、低電壓的特點(diǎn)使其非常適合用于MD/CD、筆記本電腦等便攜式設(shè)備。
UDA1341提供兩個(gè)音頻通道,分別輸入和輸出,對應(yīng)的引腳連接:IIS總線的音頻輸出IISSDO對應(yīng)UDA1341的音頻輸入;IIS總線的音頻輸入IISSDI對應(yīng)于DA1341的音頻輸出。UDA1341的L3接口相當(dāng)于一個(gè)混音器控制接口,可以用來控制輸入/輸出音頻信號的音量大小、低音等。L3接口的引腳L3MODE、L3DATA、L3CLOCK分別連接到SEP4020的GPA8、GPA3、GPA2。
2.4 L3總線介紹
本文中UDA1341TS采用微控制器輸入模式。在該模式總,所有的數(shù)字音頻處理特征和系統(tǒng)控制特征由微控制器通過l3m總線控制。如UDA1341TS在放音過程中去重音、音量控制、低音增強(qiáng)、高音和軟件靜音等DSP特征可通過L3 總線控制。
UDA1341TS和微控制器之間數(shù)據(jù)和控制信息的交換是通過一個(gè)L3硬件接口實(shí)現(xiàn)的。它包括以下引腳:
L3DATA,微控制器接口數(shù)據(jù)線;
L3MODE,微控制器接口模式線;
L3CLOCK,微控制器接口時(shí)鐘線;
通過微控制器總線的信息傳輸是按照“L3”格式來組織的。它有兩種不同的操作模式:地址模式和數(shù)據(jù)傳輸模式。地址模式通過L3總線來選擇通道設(shè)備并且指明數(shù)據(jù)傳輸?shù)哪康募拇嫫鳌?shù)據(jù)傳輸模式中數(shù)據(jù)傳輸可以是雙向的,向UDA1341TS輸入數(shù)據(jù),對它的音頻處理和控制功能進(jìn)行編程;向外輸出峰值電平的值。
L3控制的本質(zhì)就是向UDA1341TS寫數(shù)據(jù)的過程。向設(shè)備寫控制字分兩步進(jìn)行:第一步是在地址模式根據(jù)地址選擇設(shè)備,同時(shí)指名后來數(shù)據(jù)要發(fā)送到的寄存器類型;第二步是在數(shù)據(jù)傳輸模式下,傳送一個(gè)8位字節(jié)。要想正確地配置硬件以完成正確的功能,SEP4020提供的5根IIS信號線IISDI,IISDO,IISLRCK,IISCLK及CODEC必須和UDA1341TS提供的IIS信號線DATAO,DATAI,WS,BCK及SYSCLK對應(yīng)連接。
至此,使用SEP4020芯片和UDA1341TS及其它必需外圍設(shè)備構(gòu)建了一個(gè)功能完善的嵌入式音頻硬件系統(tǒng)。為接下來的與本系統(tǒng)對應(yīng)的底層控制軟件的開發(fā)做好了準(zhǔn)備,接下來進(jìn)行基于硬件的底層軟件設(shè)計(jì)。
3 底層驅(qū)動(dòng)程序設(shè)計(jì)
嵌入式系統(tǒng)硬件設(shè)備種類繁多,且缺乏PC中標(biāo)準(zhǔn)的體系結(jié)構(gòu),所以必須為各種設(shè)備編寫驅(qū)動(dòng)程序,驅(qū)動(dòng)程序的主要任務(wù)是控制音頻數(shù)據(jù)在硬件中流動(dòng),并為音頻應(yīng)用提供標(biāo)準(zhǔn)接口。
通過配置IIS和CODEC,以及對DMA傳輸進(jìn)行配置,可以實(shí)現(xiàn)IIS的錄音和放音等功能,本系統(tǒng)音頻采樣規(guī)格為44.1Hz,采樣精度為16bit。具體配置如下:
3.1 L3總線配置
本系統(tǒng)將GPA2配置為L3CLOCK信號,GPA3,GPA8分別配置為L3DATA和L3MODE。SEP4020和UDA1341連接配置程序如下:
static void IIS_PortSetting(void)
{ #define L3C (1<<2)//GPA2 = L3CLOCK
#define L3D (1<<3)//GPA3 = L3DATA
#define L3M (1<<8)//GPA8 = L3MODE
static void _WrL3Addr(U8 data)
{
S32 i,j;
rGPBDAT= rGPBDAT ~(L3D|L3M|L3C)|L3C;//L3D=L, L3M=L(in address mode), L3C=H
for(j=0;j<4;j++);//tsu(L3) > 190ns
//GPB[4:2]=L3C:L3D:L3M
for(i=0;i<8;i++) //LSB first
{
if(data 0x1) //If data's LSB is 'H'
{
rGPBDAT = ~L3C; //L3C=L
rGPBDAT |= L3D;//L3D=H
for(j=0;j<4;j++);//tcy(L3) > 500ns
rGPBDAT |= L3C;//L3C=H
rGPBDAT |= L3D;//L3D=H
for(j=0;j<4;j++);//tcy(L3) > 500ns
}
else //If data's LSB is 'L'
{
rGPBDAT = ~L3C; //L3C=L
rGPBDAT = ~L3D; //L3D=L
for(j=0;j<4;j++);//tcy(L3) > 500ns
rGPBDAT |= L3C;//L3C=H
rGPBDAT = ~L3D; //L3D=L
for(j=0;j<4;j++);//tcy(L3) > 500ns
}
data >>= 1;
}
rGPBDAT= rGPBDAT ~(L3D|L3M|L3C)|(L3C|L3M); //L3M=H,L3C=H
}
3.2 DMA傳輸配置
本系統(tǒng)相應(yīng)的DMA寄存器配置如下,I2S Transmitter 表示放音,I2S Receiver表示錄音。
// I2S Transmitter DMA Configuration
write_reg(DMACC0SrcAddr, EMIADDR_CSC_BASE);//source addr
write_reg(DMACC0DestAddr, I2S_T_DR);//destination addr
write_reg(DMACC0Control, TRANSFERSIZE(16)+DI(0)+SI(1)+DESTSIZE(2)+SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));
//control, 16, SI, 32, Burst = 4
write_reg(DMACC0Configuration, 0X200B);//configuration, mem to I2S_T,
//completionmask, enable
// I2S Receiver DMA configuration
write_reg(DMACC2SrcAddr, I2S_R_DR);
write_reg(DMACC2DestAddr, EMIADDR_CSD_BASE);
write_reg(DMACC2Control, TRANSFERSIZE(0x800)+DI(1)+SI(0) + DESTSIZE(2) + SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));//re:256 -- tr:16, add int
write_reg(DMACC2Configuration, 0X038D); //I2S_R(MMC) TO mem,
//completion not mask
// I2S_T DMA Configuration as receiver
write_reg(DMACC0SrcAddr, I2S_T_DR);//source addr
write_reg(DMACC0DestAddr, EMIADDR_CSGBAB_val);//destination addr
write_reg(DMACC0Control, TRANSFERSIZE(16) + DI(1) + SI(0) + DESTSIZE(2)+SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));//control, 16, SI, 32, Burst = 4
write_reg(DMACC0Configuration, 0X020D);//configuration, mem to I2S_T,
//completionmask, enable
// I2S_R DMA configuration as transmitter
write_reg(DMACC2SrcAddr, EMIADDR_CSB_BASE);
write_reg(DMACC2DestAddr, I2S_R_DR);
write_reg(DMACC2Control, TRANSFERSIZE(256)+DI(0)+SI(1)+DESTSIZE(2)+SOURCESIZE(2)+DESTBURST(3)+SOURCEBURST(3));//re:256--tr:16, add int
write_reg(DMACC2Configuration, 0X280B);//I2S_R(SSI) TO mem,
//completion not mask
4 結(jié)束語
本文介紹了在嵌入式系統(tǒng)中構(gòu)建基于IIS總線的音頻系統(tǒng),實(shí)現(xiàn)音頻的播放和錄音的采集。具體講述了基于東南大學(xué)ASIC中心SEP4020型微處理器的CODEC硬件連接的實(shí)現(xiàn)及嵌入式操作系統(tǒng)下音頻驅(qū)動(dòng)的實(shí)現(xiàn)。該系統(tǒng)已經(jīng)在基于SEP4020的開發(fā)平臺上得到了實(shí)現(xiàn),可以順利進(jìn)行音頻的播放和采集,并取得了良好的效果。
參考文獻(xiàn):
[1] SEP4020移動(dòng)終端應(yīng)用處理器用戶手冊[S].國家用集成電路系統(tǒng)工程技術(shù)中心,2008-01.
[2] FURBERS.ARM SoC System Structure[M].田澤,于敦山,盛世敏,譯.北京:北京航空航天大學(xué)出版社,2002:87-159.
[3] 徐睿,李斐,王申康.基于IIS總線的嵌入式音頻系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2004(4):7-9.
[4] 黎想,馬欣.基于VxWorks的音頻系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2002(12):233-235.
[5] 32位嵌入式系統(tǒng)硬件設(shè)計(jì)與調(diào)試[M].北京:機(jī)械工業(yè)出版社,2005.
[6] Marwedel P.Embedded system design[M].北京:科學(xué)出版社,2007.