淺談SSI接口技術(shù)及其在音頻處理中的應(yīng)用
引 言
嵌入式系統(tǒng)是“控制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。從中可以看出嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機(jī)械等附屬裝置。目前國(guó)內(nèi)一個(gè)普遍被認(rèn)同的定義是:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)必須根據(jù)應(yīng)用需求對(duì)軟硬件進(jìn)行裁剪,滿足應(yīng)用系統(tǒng)的功能、可靠性、成本、體積等要求。所以,如果能建立相對(duì)通用的軟硬件基礎(chǔ),然后在其上開(kāi)發(fā)出適應(yīng)各種需要的系統(tǒng),是一個(gè)比較好的發(fā)展模式。目前的嵌入式系統(tǒng)的核心往往是一個(gè)只有幾K到幾十K微內(nèi)核,需要根據(jù)實(shí)際的使用進(jìn)行功能擴(kuò)展或者裁減,但是由于微內(nèi)核的存在,使得這種擴(kuò)展能夠非常順利的進(jìn)行。
隨著嵌入式系統(tǒng)的廣泛應(yīng)用,系統(tǒng)內(nèi)串口通信的需求越來(lái)越高,串行數(shù)據(jù)傳輸?shù)膮f(xié)議也多樣化,常用的有SSI、SPI、I2C、UART等。SSI(Server Side Include),通常稱為服務(wù)器端嵌入,是一種類似于ASP的基于服務(wù)器的網(wǎng)頁(yè)制作技術(shù)。大多數(shù)(尤其是基于Unix平臺(tái))的WEB服務(wù)器如Netscape Enterprise Server等均支持SSI命令。另外,在計(jì)算機(jī)硬件領(lǐng)域SSI是同步串行接口(Synchronous Serial Interface)的英文縮寫。微處理器MCF5329中的SSI接口除了能用作一般的串行數(shù)據(jù)傳輸外,由于它帶有的幀同步信號(hào)可用作左右聲道數(shù)據(jù)的同步,支持兩種音頻總線接口(I2S和AC97接口),微處理器用一片或少數(shù)幾片大規(guī)模集成電路組成的中央處理器。這些電路執(zhí)行控制部件和算術(shù)邏輯部件的功能。微處理器與傳統(tǒng)的中央處理器相比,具有體積小,重量輕和容易模塊化等優(yōu)點(diǎn)。微處理器的基本組成部分有:寄存器堆、運(yùn)算器、時(shí)序控制電路,以及數(shù)據(jù)和地址總線。微處理器能完成取指令、執(zhí)行指令,以及與外界存儲(chǔ)器和邏輯部件交換信息等操作,是微型計(jì)算機(jī)的運(yùn)算控制部分。它可與存儲(chǔ)器和外圍電路芯片組成微型計(jì)算機(jī)。
TLV320DAC23是TI公司推出的高性能立體聲高端編解碼芯片,支持多種采樣率和多種音頻格式,并具有功耗低、封裝小的特點(diǎn),廣泛應(yīng)用于便攜式數(shù)字音頻處理系統(tǒng)中。
1 同步串行接口SSI的工作原理
Synchronous SerialInterface(SSI)是一個(gè)全雙工的串行接口,允許芯片與多種串行設(shè)備通信。可以使用“服務(wù)器端包含 (SSI)”指令將文本、圖形或應(yīng)用程序信息包含到網(wǎng)頁(yè)中。例如,可以使用 SSI 包含時(shí)間/日期戳、版權(quán)聲明或供客戶填寫并返回的表單。對(duì)于在多個(gè)文件中重復(fù)出現(xiàn)的文本或圖形,使用包含文件是一種簡(jiǎn)便的方法。將內(nèi)容存入一個(gè)包含文件中即可,而不必將內(nèi)容輸入所有文件。通過(guò)一個(gè)非常簡(jiǎn)單的語(yǔ)句即可調(diào)用包含文件,此語(yǔ)句指示 Web 服務(wù)器將內(nèi)容插入適當(dāng)網(wǎng)頁(yè)。而且,使用包含文件時(shí),對(duì)內(nèi)容的所有更改只需在一個(gè)地方就能完成。 SSI模塊結(jié)構(gòu)如圖1所示。
從圖中可看出,SSI模塊由發(fā)送電路、接收電路、串行時(shí)鐘和幀同步時(shí)鐘產(chǎn)生電路組成。發(fā)送電路和接收電路相互獨(dú)立,但是共用串行時(shí)鐘和幀同步時(shí)鐘。
1.1 SSI模塊引腳信號(hào)描述
SSLCLKIN:SSI時(shí)鐘輸入信號(hào)。
SSLBCLK:SSI串行比特時(shí)鐘。
SSLMCLK:SSI串行主時(shí)鐘信號(hào),在SSI主模式下,
該信號(hào)也作為過(guò)采樣時(shí)鐘信號(hào)。
SSI_FS:SSI串行幀同步信號(hào)。
SSLRXD:SSI串行接收數(shù)據(jù)信號(hào)。
SSI_TXD:SSI串行發(fā)送數(shù)據(jù)信號(hào)。
1.2 SSI的操作模式
SSI有3種基本同步操作模式:普通模式、網(wǎng)絡(luò)模式和門時(shí)鐘模式。
普通模式是最簡(jiǎn)單的模式,一幀內(nèi)只能傳輸一個(gè)字,而且每一幀都需要幀同步信號(hào)來(lái)控制同步;網(wǎng)絡(luò)模式主要用于多時(shí)隙的情況下,一幀內(nèi)可以傳輸2個(gè)字到32個(gè)字不等;門時(shí)鐘SSI_BCLK模式下,串行比特時(shí)鐘SSI_BCLK指示了發(fā)送引腳或接收引腳上的有效數(shù)據(jù)。
除了上述3種基本模式外,針對(duì)音頻上的應(yīng)用,SSI還支持兩種衍生模式——I2S模式和AC97模式,分別用于傳輸I2S和AC97音頻格式數(shù)據(jù)。
1.3 SSI的初始化
初始化SSI模塊的正確順序:
①上電或重啟SSI(SSI_CR[SSI_EN]=0),即關(guān)閉SSI模塊功能。
②配置SSI模塊。涉及的寄存器包括控制寄存器SSI_CR、中斷允許寄存器SSI_IER、發(fā)送配置寄存器SSI_TCR、接收配置寄存器SSI_RCR和時(shí)鐘控制寄存器SSI_CCR。
③通過(guò)SSI_IER寄存器設(shè)置必要的中斷或DMA。
④設(shè)置SSI_CR[SSI_EN]=1允許SSI模塊功能。
⑤設(shè)置SSI_CR[TE/RE],開(kāi)始發(fā)送/接收數(shù)據(jù)。
1.4 SSI的工作過(guò)程
(1)發(fā)送數(shù)據(jù)
單通道時(shí),數(shù)據(jù)從串行發(fā)送數(shù)據(jù)寄存器SSI_TX0中傳到發(fā)送移位寄存器TXSR中,再通過(guò)串行發(fā)送引腳SSI_TXD發(fā)送出去,然后根據(jù)用戶設(shè)置情況決定是否產(chǎn)生發(fā)送中斷。如果發(fā)送緩沖區(qū)TXFIFOO被允許,則SSI_TX0繼續(xù)從TXFIFOO中取數(shù)據(jù),直到TXFIFOO中的數(shù)據(jù)全部被發(fā)送,再通過(guò)用戶設(shè)置情況決定是否產(chǎn)生發(fā)送中斷。雙通道時(shí),發(fā)送移位寄存器TXSR交替從SSI_TX0和SSI_TXl中取出數(shù)據(jù)。
(2)接收數(shù)據(jù)
單通道時(shí),數(shù)據(jù)從串行接收引腳SSI_RXD進(jìn)來(lái),由接收移位寄存器RXSR傳輸給接收數(shù)據(jù)寄存器SSI_RX0,再根據(jù)用戶設(shè)置情況決定是否產(chǎn)生接收中斷。如果接收緩沖區(qū)RXFIFOO被允許,則SSI_RX0將數(shù)據(jù)寫入RXFIFOO,并繼續(xù)從接收移位寄存器中獲取數(shù)據(jù)。雙通道時(shí),接收移位寄存器RXSR交替將數(shù)據(jù)傳輸給SSI_RX0和SSI_RXl。
2 音頻編解碼芯片簡(jiǎn)介
Codec 編碼解碼器主要作用是對(duì)視頻信號(hào)進(jìn)行壓縮和解壓縮。計(jì)算機(jī)工業(yè)定義通過(guò)24位測(cè)量系統(tǒng)的真彩色,這就定義了近百萬(wàn)種顏色,接近人類視覺(jué)的極限。現(xiàn)在,最基本的V GA顯示器就有640*480像素。這意味著如果視頻需要以每秒30幀的速度播放,則每秒要傳輸高達(dá)27MB的信息,1GB容量的硬盤僅能存儲(chǔ)約37 秒的視頻信息。因而必須對(duì)信息進(jìn)行壓縮處理。通過(guò)拋棄一些數(shù)字信息或容易被我們的眼睛和大腦忽略的圖像信息的方法,使視頻的信息量減小。這個(gè)對(duì)視頻壓縮解壓的軟件或硬件就是編碼解碼器。編碼解碼器的壓縮率從一般的2 :1-100:1不等,使處理大量的視頻數(shù)據(jù)成為可能。
TLV320DAC23是TI公司推出的一顆高性能立體聲音頻處理芯片(CODEC芯片),采用了多比特sigma-delta過(guò)采樣技術(shù),采樣率可以從8 kHz到96 kHz,傳輸字長(zhǎng)可選擇為16位、20位、24位或32位;最大輸出信噪比可達(dá)到100 dB;控制端口可兼容SPI、2-wire等協(xié)議;回放模式下功率為18 mw,省電模式下小于15μW;適用于便攜式的數(shù)字音頻處理。其功能模塊框圖如圖2所示。
2.1 控制接口
控制接口用于對(duì)器件TLV320DAC23的寄存器編程,設(shè)置音頻芯片的工作參數(shù)。它兼容兩種模式:SPI三線模式和2一wire模式。
MODE:模式選擇引腳。為0時(shí),采用2一wire模式;為1時(shí),采用SPI模式。
SCLK:控制端口串行數(shù)據(jù)時(shí)鐘。
SDI:控制端口串行數(shù)據(jù)輸入。
CS:控制端口輸入鎖存/地址選擇。在SPI模式下,CS用于數(shù)據(jù)鎖存控制;在2一wire模式下,CS定義了器件地址域的第7位。SPI模式下,一個(gè)控制字為16位,分為兩部分:高7位為控制地址,低9位為控制字。16位的控制字由MSB位開(kāi)始傳輸,每個(gè)比特在SCLK的上升沿被鎖存,整個(gè)16位的控制字在最低位被CS鎖存進(jìn)TLV320DAC23。
2.2 模擬接口
模擬接口包括線輸入、線輸出和耳機(jī)輸出。耳機(jī)輸出可以驅(qū)動(dòng)16Ω或32 Ω的耳機(jī),音量增益為6 dB到一73 dB。
LLINEIN、RLINEIN:左、右聲道輸入。
LOUT、ROUT:左、右聲道輸出。
LHPOUT、RHPOUT:左、右聲道耳機(jī)輸出
2.3 數(shù)字音頻接口
數(shù)字音頻接口用于輸入TLV320DAC23的D/A數(shù)據(jù)。
BCLK:I2S串行比特時(shí)鐘。主模式時(shí)BCLK為輸出,從模式時(shí)BCLK為輸入。
DIN:I2S串行數(shù)據(jù)輸入。
LRCIN:字時(shí)鐘信號(hào)(幀信號(hào)),用于控制左、右聲道的數(shù)據(jù)。在主模式中,由TLV320DAC23產(chǎn)生該信號(hào),在從模式中,由主設(shè)備(如DSP或MCU)產(chǎn)生該信號(hào)。
TLV320DAC23支持4種音頻接口模式:右對(duì)齊模式、左對(duì)齊模式、I2S模式和DSP模式。這4種模式都是最高有效位MSB在前,16到32位不同的字長(zhǎng)(右對(duì)齊除外,它不支持32位)。圖4是I2S模式下的數(shù)字音頻接口時(shí)序,數(shù)據(jù)的MSB在LRCIN下降沿后的第2個(gè)BCLK上升沿開(kāi)始傳輸。
2.4 時(shí)鐘接口
MCLK:芯片主時(shí)鐘信號(hào)。當(dāng)TLV320DAC23作為主設(shè)備時(shí),該信號(hào)由芯片自身產(chǎn)生;當(dāng)TLV320DAC23作為從設(shè)備時(shí),該信號(hào)由外部產(chǎn)生。
CLKOUT:時(shí)鐘輸出信號(hào)。可以為MCLK或MCLK/2。
3 基于MCF5329的音頻驅(qū)動(dòng)設(shè)計(jì)
3.1 硬件電路
TLV320DAC23與MCF5329的接口有兩個(gè):一個(gè)是控制接口,用于設(shè)置TLV320DAC23的寄存器,從而設(shè)置它的工作參數(shù)。由于MCF5329具有QSPI模塊,它兼容SPI接口格式,所以TLV320DAC23的控制接口采用SPI模式。另一個(gè)是數(shù)字音頻接口,用于傳輸TLV320DAC23的音頻數(shù)據(jù)并控制數(shù)據(jù)的時(shí)序。
在本設(shè)計(jì)中,由微控制器MCF5329提供時(shí)鐘信號(hào),所以將MCF5329設(shè)為主設(shè)備,TLV320DAC23作為從設(shè)備。具體連接如圖5所示。
3.2 軟件設(shè)計(jì)
音頻播放的過(guò)程如下:程序檢測(cè)到用戶空間有需要播放的音頻數(shù)據(jù),便將音頻數(shù)據(jù)拷貝到所建立的緩沖區(qū)中;然后通過(guò)DMA將緩沖區(qū)的音頻數(shù)據(jù)傳輸?shù)絊SI模塊的發(fā)送引腳SSI_TXD,發(fā)送引腳將數(shù)據(jù)發(fā)送至TLV320DAC23中,通過(guò)耳機(jī)播放出來(lái)。
軟件設(shè)計(jì)的流程如圖6所示。其中,音頻緩沖區(qū)被設(shè)置為一個(gè)固定大小的循環(huán)隊(duì)列,其設(shè)置如圖7所示。初始時(shí),bufstart、audiostart、audiotail都指向緩沖區(qū)頭。當(dāng)用戶空間有數(shù)據(jù)時(shí),將數(shù)據(jù)拷貝到緩沖區(qū)并用audiotail指示數(shù)據(jù)尾部,數(shù)據(jù)的頭部通過(guò)DMA引擎連接到SSI_TXD引腳。
結(jié) 語(yǔ)
本文分析了同步串行接口SSI的工作原理及過(guò)程,并通過(guò)與編解碼芯片TLV320DAC23的通信詳細(xì)介紹了SSI在音頻處理中的應(yīng)用。實(shí)踐表明,SSI接口簡(jiǎn)單,使用靈活可靠。
QICK