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