摘 要: 提供了基于CPLD" title="FPGA/CPLD">FPGA/CPLD的數(shù)字化音頻處理系統(tǒng)的典型解決方案。該方案由語(yǔ)音芯片(TLV320AIC23)和處理器(FPGA/CPLD)兩部分組成。語(yǔ)音芯片完成模擬語(yǔ)音信號(hào)與數(shù)字信號(hào)之間的相互轉(zhuǎn)換,包括ADC和DAC;處理器則完成對(duì)經(jīng)模數(shù)轉(zhuǎn)換后的語(yǔ)音信號(hào)在數(shù)字域處理的過(guò)程。該方案可以充分發(fā)揮FPGA/CPLD所具有的靈活性好、實(shí)時(shí)性能高及并行處理能力強(qiáng)的特點(diǎn)。
關(guān)鍵詞: 語(yǔ)音處理 音頻編解碼器 FPGA SPI DSP-Mode
隨著人們消費(fèi)水平的提高和全社會(huì)信息化、數(shù)字化程度的加快,數(shù)字化音頻處理被廣泛應(yīng)用于各個(gè)領(lǐng)域。需要語(yǔ)音系統(tǒng)完成的功能越來(lái)越復(fù)雜,如語(yǔ)音加解密、語(yǔ)音識(shí)別、語(yǔ)音錄放、數(shù)字音效處理等;同時(shí),對(duì)語(yǔ)音質(zhì)量的要求也越來(lái)越高,因此對(duì)語(yǔ)音芯片和處理器提出了更高的性能要求。
TLV320AIC23是TI生產(chǎn)的集成模擬功能的高性能立體聲音頻編解碼器[2],而FPGA/CPLD有著強(qiáng)大的數(shù)字邏輯處理功能,并憑借其靈活性好、實(shí)時(shí)性高等特點(diǎn)在業(yè)界的應(yīng)用越來(lái)越廣。本文設(shè)計(jì)并實(shí)現(xiàn)了基于TLV320AIC23與FPGA/CPLD的數(shù)字化語(yǔ)音處理系統(tǒng)。
1 系統(tǒng)方案介紹
圖1所示數(shù)字化語(yǔ)音處理系統(tǒng)中,主要包括模擬語(yǔ)音信號(hào)采集、模數(shù)轉(zhuǎn)換器(ADC)、接收模塊(RX)、數(shù)字語(yǔ)音信號(hào)處理、發(fā)送模塊" title="發(fā)送模塊">發(fā)送模塊(TX)、數(shù)模轉(zhuǎn)換器(DAC)以及模擬語(yǔ)音信號(hào)輸出。其中模擬語(yǔ)音信號(hào)采集、模數(shù)轉(zhuǎn)換器(ADC)、數(shù)模轉(zhuǎn)換器(DAC)和模擬語(yǔ)音信號(hào)放大部分的功能可以由語(yǔ)音專用芯片完成;接收模塊(RX)、數(shù)字語(yǔ)音信號(hào)處理和發(fā)送模塊(TX)部分的功能則由處理器完成。
1.1 語(yǔ)音芯片的選擇
目前市場(chǎng)上的語(yǔ)音芯片種類繁多,各有特色。本系統(tǒng)從便攜性、移動(dòng)性、高性能和低功耗等方面綜合考慮選用了TLV320AIC23[2]。此款芯片采用低功耗設(shè)計(jì),各個(gè)功能模塊均有斷開(kāi)功能,錄放模式下功率消耗小于23mW,并且具有TI特有的MicroStar JuniorTM封裝方式,占用的PCB面積僅為25mm2。另外這款芯片的ADC與DAC采用多位的∑-△技術(shù),并且內(nèi)部集成高采樣率的數(shù)字內(nèi)插濾波器,傳輸字長(zhǎng)可以是16、20、24、32位,支持8kHz-96kHz的采樣率[2]。ADC的信噪比可達(dá)90dB,DAC的信噪比可達(dá)100dB,從而可在小型低功耗設(shè)計(jì)中實(shí)現(xiàn)高保真錄放音[2]。
1.2 處理器的可選方案
MCU:通常的MCU數(shù)據(jù)處理能力較低,接口資源有限。
DSP:DSP的數(shù)據(jù)處理能力強(qiáng),工作頻率高;與TLV320AIC23的控制和數(shù)據(jù)傳輸接口可以直接匹配,但需要占用DSP有限的接口資源,且芯片成本相對(duì)較高。
FPGA/CPLD:接口設(shè)計(jì)靈活,具備用戶自定義端口功能,并行處理能力強(qiáng)[1]。
本文要實(shí)現(xiàn)數(shù)字語(yǔ)音處理系統(tǒng)的通用平臺(tái),從可擴(kuò)展性、設(shè)計(jì)靈活性和成本等方面綜合考慮,F(xiàn)PGA/CPLD是比較理想的選擇。但是在基于FPGA/CPLD與TLV320AIC23的數(shù)字語(yǔ)音處理系統(tǒng)中,由于TLV320AIC23和FPGA/CPLD之間沒(méi)有現(xiàn)成可用的固定接口,因而接口部分是系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中的重點(diǎn)和難點(diǎn)。
2 數(shù)字化語(yǔ)音處理系統(tǒng)中硬件電路設(shè)計(jì)
2.1 語(yǔ)音芯片電路
TLV320AIC23內(nèi)置耳機(jī)輸出放大器,支持MIC和LINEIN兩種輸入方式(二選一),且通過(guò)對(duì)相應(yīng)寄存器設(shè)置可調(diào)節(jié)輸入和輸出的增益。TLV320AIC23具有11個(gè)可編程控制寄存器,通過(guò)不同的設(shè)置,可以改變芯片的工作狀態(tài)。控制接口具有SPI(三線)和I2C(兩線)兩種工作方式,由MODE引腳選擇:MODE=0為I2C模式,MODE=1為SPI模式。TLV320AIC23與數(shù)字系統(tǒng)的數(shù)據(jù)傳輸接口支持4種數(shù)據(jù)格式:左對(duì)齊模式、右對(duì)齊模式,I2S模式和DSP模式[2]。
TLV320AIC23的硬件電路如圖2所示。外圍模擬電路包含了MIC、LINEIN的輸入電路和LINEOUT、HEADPHONE的輸出電路,實(shí)現(xiàn)過(guò)程中兩路輸入是二選一的,兩路輸出并行。
2.2 FPGA/CPLD與TLV320AIC23連接電路
根據(jù)TLV320AIC23使用規(guī)則,需要提供控制接口和數(shù)據(jù)通信接口[2]??刂平涌谶x擇SPI方式,即TLV320A-IC23需要通過(guò)CS、SDIN、SCLK三線與FPGA/CPLD連接[2]。由FPGA/CPLD發(fā)送控制字" title="控制字">控制字到TLV320AIC23控制寄存器,使其按照寄存器設(shè)置進(jìn)行工作。數(shù)據(jù)通信接口選擇DSP模式傳輸數(shù)據(jù),設(shè)置TLV320AIC23為主(Master)模式,F(xiàn)PGA/CPLD為從(Slave)模式。由文獻(xiàn)[3]可知,工作在Master模式下的TLV320AIC23將時(shí)鐘信號(hào)BCLK和幀同步" title="幀同步">幀同步信號(hào)LRCOUT、LRCIN提供給工作在Slave模式下的FPGA/CPLD。
工作電路中,TLV320AIC23外接12.288MHz晶振,內(nèi)部ADC和DAC的采樣率設(shè)置為32kHz,數(shù)據(jù)字長(zhǎng)為16位[2]。FPGA/CPLD以Altera公司器件EP1C3T144C8為例。系統(tǒng)連接結(jié)構(gòu)如圖3所示。
3 用VHDL實(shí)現(xiàn)FPGA/CPLD和TLV320AIC23的接口設(shè)計(jì)
3.1 控制接口
(1)時(shí)序分析
SPI是一種同步串行接口,能實(shí)現(xiàn)全雙工通信,一般需要四線支持,即片選信號(hào)、時(shí)鐘信號(hào)SDCLK、主入從出信號(hào)MISO和主出從入信號(hào)MOSI。配置TLV320A-IC23的控制時(shí)序工作在單向SPI方式下,只需三線;工作在Master模式下的FPGA輸出:片選信號(hào)
、時(shí)鐘信號(hào)SCLK和數(shù)據(jù)輸出信號(hào)SDOUT;工作在Slave模式下的TLV320AIC23三線均為輸入。SPI的時(shí)序如圖4所示[2]。
每一個(gè)控制字由16位數(shù)據(jù)構(gòu)成:7位地址[15..9]和9位數(shù)據(jù)[8..0],按照高位(MSB)在前的順序傳輸[2]。每一位數(shù)據(jù)在SCLK的上升沿" title="上升沿">上升沿鎖存進(jìn)TLV320AIC23接收移位寄存器,每一個(gè)控制字發(fā)送結(jié)束時(shí),要產(chǎn)生一個(gè)上升沿。
(2)實(shí)現(xiàn)方案
FPGA/CPLD實(shí)現(xiàn)SPI的功能框圖如圖5所示。SPI實(shí)現(xiàn)模塊包括兩個(gè)部分,即信號(hào)生成模塊和計(jì)數(shù)控制模塊。信號(hào)生成模塊輸出SCLK、和DATA信號(hào),其中SCLK是通過(guò)對(duì)CLK時(shí)鐘分頻生成的恒定時(shí)鐘信號(hào),它為片選信號(hào)發(fā)生器(
_Generate)和數(shù)據(jù)發(fā)送器(DATA_Sending)部分提供工作時(shí)鐘。計(jì)數(shù)控制模塊包括位(Bit)計(jì)數(shù)器和字(Word)計(jì)數(shù)器。位計(jì)數(shù)器用于記錄串行發(fā)送數(shù)據(jù)個(gè)數(shù),字計(jì)數(shù)器用于記錄已發(fā)送控制字的個(gè)數(shù)。當(dāng)FPGA/CPLD對(duì)TLV320AIC23的所有11個(gè)寄存器配置完成后,輸出停止整個(gè)控制字傳輸模塊工作的標(biāo)志信號(hào)Stop。
為保證TLV320AIC23的SPI正常工作時(shí)序,F(xiàn)PGA/CPLD在SCLK的下降沿處通過(guò)SDOUT輸出數(shù)據(jù)位。在控制字最后1位數(shù)據(jù)輸出完成后的SCLK下降沿處,產(chǎn)生一個(gè)上升沿,結(jié)束一個(gè)控制字的傳輸并將下一個(gè)待發(fā)送的控制字鎖存到FPGA的發(fā)送移位寄存器中。當(dāng)對(duì)TLV320AIC23的所有寄存器配置結(jié)束時(shí),STOP信號(hào)產(chǎn)生一個(gè)上升沿,停止整個(gè)控制字傳輸模塊的工作,同時(shí)打開(kāi)數(shù)據(jù)傳輸模塊,開(kāi)始FPGA與TLV320AIC23的數(shù)據(jù)傳輸和音頻信號(hào)的數(shù)字處理過(guò)程。仿真時(shí)序如圖6所示。須注意的是計(jì)數(shù)器的遞增操作和對(duì)計(jì)數(shù)器值的判斷要分別在SCLK下降沿和上升沿進(jìn)行,避免產(chǎn)生競(jìng)爭(zhēng)。
3.2 數(shù)據(jù)通信接口
(1)時(shí)序分析
通過(guò)配置TLV320AIC23,使其數(shù)據(jù)接口工作在DSP模式。在DSP模式下工作的TLV320AIC23參與數(shù)據(jù)通信的信號(hào)有:兩個(gè)幀同步信號(hào)輸出LRCIN和LRCOUT、時(shí)鐘信號(hào)輸出BLCK以及數(shù)據(jù)輸入和輸出信號(hào)DIN、DOUT[2]。由于工作在主模式下的TLV320AIC23的兩個(gè)幀同步信號(hào)完全一致,因而工作在Slave模式下的FPGA只需一個(gè)幀同步信號(hào)輸入。
DSP模式時(shí)序圖如圖7所示[2]。由此分析得出,TLV320AIC23在幀同步信號(hào)下降沿到來(lái)時(shí)開(kāi)始傳輸數(shù)據(jù),在時(shí)鐘信號(hào)BCLK下降沿時(shí),DIN和DOUT同時(shí)變化,雙向傳輸數(shù)據(jù),以先傳輸左聲道語(yǔ)音數(shù)據(jù)后傳輸右聲道語(yǔ)音數(shù)據(jù)(由控制字選擇)的順序與FPGA進(jìn)行通信。
為保證數(shù)據(jù)傳輸?shù)恼_性,在BCLK的上升沿,F(xiàn)PGA/CPLD讀取TLV320AIC23的輸出數(shù)據(jù)(DOUT);在BCLK的下降沿,F(xiàn)PGA/CPLD寫數(shù)據(jù)到TLV320AIC的數(shù)據(jù)輸入端(DIN)。
(2)實(shí)現(xiàn)方案
由FPGA/CPLD實(shí)現(xiàn)DSP模式數(shù)據(jù)傳輸和數(shù)據(jù)處理的功能框圖如圖8所示,它由五部分組成:檢測(cè)模塊、數(shù)據(jù)接收模塊、數(shù)據(jù)發(fā)送模塊、標(biāo)志控制模塊和數(shù)據(jù)處理模塊。其中檢測(cè)模塊用于檢測(cè)幀同步信號(hào),并使能數(shù)據(jù)接收模塊和數(shù)據(jù)發(fā)送模塊;數(shù)據(jù)接收模塊和數(shù)據(jù)發(fā)送模塊在使能信號(hào)有效的情況下分別啟動(dòng)數(shù)據(jù)接收和發(fā)送操作,傳輸時(shí)鐘都是BCLK;標(biāo)志控制模塊用于在一幀數(shù)據(jù)發(fā)送和接收完成后,復(fù)位接收模塊和發(fā)送模塊,使其等待下一個(gè)幀同步信號(hào)的到來(lái);數(shù)據(jù)處理模塊將接收到的并行數(shù)據(jù)經(jīng)過(guò)數(shù)字域處理后轉(zhuǎn)發(fā)給發(fā)送模塊。
在功能框圖中接收模塊(RX-Module)和發(fā)送模塊(TX-Module)的使能信號(hào)不同:對(duì)于接收模塊,使能信號(hào)在幀同步信號(hào)(LRCIN/LRCOUT)的下降沿產(chǎn)生,在此后的BCLK上升沿處讀取數(shù)據(jù),存放到接收寄存器中,如果一幀數(shù)據(jù)已經(jīng)接收完畢,則下一個(gè)BCLK的下降沿輸出完成信號(hào)(finish)。在BCLK的下降沿計(jì)數(shù)器計(jì)數(shù),記錄在前一個(gè)BCLK上升沿讀取的數(shù)據(jù)的個(gè)數(shù)。這種處理方式避免了競(jìng)爭(zhēng),保證在判斷時(shí)計(jì)數(shù)器值處于穩(wěn)態(tài),數(shù)據(jù)最后一位輸出穩(wěn)定后關(guān)閉傳輸模塊。而對(duì)于發(fā)送模塊,被發(fā)送的數(shù)據(jù)在BCLK的下降沿輸出,所以使能信號(hào)在幀同步信號(hào)(LRCIN/LRCOUT)的上升沿產(chǎn)生。SampleClk是一個(gè)高頻掃描信號(hào),用于檢測(cè)幀同步信號(hào),采用高頻信號(hào)檢測(cè)低頻信號(hào)可以減少毛刺的引入。
基于本文所述的方案成功實(shí)現(xiàn)了Altera EP1C3T144C8對(duì)TLV320AIC23的配置、兩者間的數(shù)據(jù)通信以及對(duì)語(yǔ)音數(shù)據(jù)的處理,從而建立了由語(yǔ)音AD采集、傳輸、處理和DA語(yǔ)音輸出四個(gè)部分組成的結(jié)構(gòu)化數(shù)字語(yǔ)音處理系統(tǒng)開(kāi)發(fā)平臺(tái)。本文通過(guò)對(duì)設(shè)計(jì)方案的分析與實(shí)現(xiàn)得出:在FPGA/CPLD中設(shè)計(jì)數(shù)據(jù)接口非常靈活,可按功能劃分模塊,由標(biāo)志信號(hào)控制模塊啟閉,方便設(shè)計(jì)和調(diào)試。本文為基于FPGA/CPLD和TLV320AIC23的數(shù)字化語(yǔ)音處理提供了完善的、高擴(kuò)展性的解決方案,通過(guò)改變數(shù)字處理模塊的功能即可實(shí)現(xiàn)各種數(shù)字語(yǔ)音系統(tǒng),如語(yǔ)音加密/解密、語(yǔ)音數(shù)據(jù)存儲(chǔ)、語(yǔ)音壓縮、數(shù)字音效處理等。
參考文獻(xiàn)
[1] WOLF W.FPGA-BASED System Design.Prentice Hall,2004.
[2] Texas Instrument Inc.TLV320AIC23B Stereo Audio CODEC 8- to 96-kHz,With Integrated Headphone Amplifier.
2004,2.