摘要:提出了一種基于FPGA實現(xiàn)的PCI-I2S音頻系統(tǒng)方法。通過在FPGA中將PCI軟核、FIFO以及設(shè)計的接口電路等相結(jié)合,在FPGA上實現(xiàn)了 PCI、I2C、I2S等多種總線,并且結(jié)合音頻解碼器實現(xiàn)了不同采樣頻率語音數(shù)據(jù)的傳輸以及播放功能。系統(tǒng)充分利用FPGA的片上資源及其可編程特性,減少了硬件電路的復(fù)雜度。
I2S總線是一種用于音頻設(shè)備間傳輸數(shù)據(jù)的串行總線標(biāo)準,該總線采用獨立的時鐘線與數(shù)據(jù)線,避免了時差誘發(fā)的失真。隨著多媒體的廣泛應(yīng)用,該總線已被應(yīng)用于越來越多的數(shù)字系統(tǒng)中。
PCI總線是一種高性能的32/64位局部總線,理論最大傳輸速率可達132 Mbit·s-1,可支持多組外設(shè),已經(jīng)被各類主流處理器做為總線標(biāo)注,是目前應(yīng)用最廣泛的外圍總線。如今大部分處理器并沒有集成I2S接口,但在嵌入式系統(tǒng)中CPU經(jīng)常使用PCI總線與外圍設(shè)備進行交互,故需設(shè)計一種PCI—I2S接口轉(zhuǎn)換電路,從而實現(xiàn)CPU與外圍音頻設(shè)備進行通信。目前實現(xiàn)此種接口轉(zhuǎn)換電路主要通過PCI接口芯片與音頻接口芯片等專用集成電路芯片在板級電路進行組合從而實現(xiàn)基于PCI的音頻播放設(shè)備。此種電路雖然成熟可靠,但電路設(shè)計復(fù)雜、靈活性小而且需要占用大量的電路板空間。
隨著數(shù)字通信技術(shù)的發(fā)展,由于FPGA的靈活性與其較短的開發(fā)周期,在接口電路設(shè)計中的應(yīng)用已經(jīng)越來越廣泛。本文提出一種使用FPGA實現(xiàn)PIC—I2S 的接口轉(zhuǎn)換電路,不僅可以避免使用協(xié)議轉(zhuǎn)換芯片,節(jié)省電路板上的空間,而且還大幅加強了系統(tǒng)的靈活性,方便維護升級。
1 系統(tǒng)的硬件設(shè)計音頻播放系統(tǒng)主要由立體聲音頻編解碼器TLN320AIC23B,F(xiàn)PGA器件XC6SLX75以及處理器PowerPC8270組成。系統(tǒng)框圖如圖1所示,CPU將原始音頻數(shù)據(jù)通過PCI總線傳至FPGA后以每組數(shù)據(jù)16 bit的格式串行傳輸至音頻芯片TLV320AIC23B,并由音頻芯片將數(shù)字量轉(zhuǎn)換為模擬音頻信號輸出。FPGA實現(xiàn)PCI接口功能和對音頻編解碼芯片的配置與數(shù)據(jù)傳輸功能,其內(nèi)部主要由PCI協(xié)議接口,I2S協(xié)議接口,I2S配置寄存器,I2C協(xié)議接口以及FIFO存儲器等組成。
TLV320AIC23B在系統(tǒng)中實現(xiàn)數(shù)字音頻信息到音頻模擬量的轉(zhuǎn)換,在系統(tǒng)上電工作時,首先需要通過I2C接口配置它的多個控制寄存器,此后芯片將根據(jù)位傳輸時鐘(Bclk)與左右聲道控制時鐘(LRCIN),按控制寄存器中配置的方式采集由FPGA發(fā)送來的音頻數(shù)據(jù)。接收到的數(shù)據(jù)將傳至芯片內(nèi)部進行數(shù)模轉(zhuǎn)換、濾波等處理。
FPGA根據(jù)I2S協(xié)議規(guī)范與芯片要求,由主時鐘(MCLK)分頻產(chǎn)生位傳輸時鐘(Bclk)與左右聲道控制時鐘(LRCIN),與音頻數(shù)據(jù)同步發(fā)送至 TLV320AIC23B。其中左右聲道控制時鐘(LRCIN)應(yīng)與音頻數(shù)據(jù)的原始采樣級別頻率相同,根據(jù)I。S的協(xié)議規(guī)范及芯片資料,其位傳輸時鐘 (Bclk)與芯片的主時鐘(MCLK)如下:
BCLK=Sampling Size&TImes;Sampling Rate (1)
MCLK=Sampling Size&TImes;Sampling Rate&TImes;384 (2)
式中,Sampling Rate為原始采樣級別頻率;SamplingSize為采樣大小。
系統(tǒng)中,TLV320AIC23B芯片采用左對齊的接口模式,其時序如圖2所示,其中LRCIN為高電平時音頻的左聲道選通,為低時音頻的右聲道選通。在 LRCIN的一個周期內(nèi),左右聲道上傳輸同一組數(shù)據(jù)。由于PCI總線的傳輸速度遠高于I2S總線的傳輸速度,為不使CPU過高頻率的響應(yīng)中斷,所以在 FPGA中生成一個FIFO,可使得PCI總線可以連續(xù)傳入大量數(shù)據(jù)。此外,由于不同的音頻文件有著不同的采樣級別頻率,而通常音頻文件的采樣頻率為16 kHz或32 kHz,故在FPGA中生成I2S_config寄存器,可以通過PCI總線設(shè)置此寄存器以調(diào)用FPGA中不同的數(shù)字時鐘管理(DCM),從而為 TLV320AIC23B芯片提供不同的時鐘。
2 PCI接口設(shè)計
PCI協(xié)議比較復(fù)雜,它不僅有嚴格的同步時序要求,而且需要許多的配置寄存器,因此實現(xiàn)電路也比較復(fù)雜。通常情況下,在FPGA中實現(xiàn)PCI接口通常有3 種方式:(1)用FPGA自行設(shè)計PCI接口,該方法可根據(jù)需要有選擇地實現(xiàn)PCI接口功能,更貼近系統(tǒng)需要,而且可以降低系統(tǒng)成本,但需要開發(fā)者對 PCI協(xié)議有著深刻的了解,且在外部環(huán)境惡劣時,不容易滿足系統(tǒng)的穩(wěn)定性要求,開發(fā)難度較大。(2)利用PCI硬核來對系統(tǒng)進行開發(fā),PCI硬核即是嵌入在FPCA內(nèi)部的固化電路,類似于專用的PCI接口芯片,設(shè)計者只需完成信號鏈接與驗證即可,但此方法中,PCI硬核已經(jīng)固化在FPGA中,影響了系統(tǒng)的靈活性。(3)利用PCI軟核進行開發(fā),PCI軟核可以根據(jù)用戶自身的需要進行配置,更為靈活,貼近用戶系統(tǒng),且其已經(jīng)過設(shè)計廠商的驗證,可靠性高。本文采用Mentor公司提供的開源軟核MPCI32用于FPGA上PCI接口的開發(fā)。