基于SPB的嵌入式音頻處理系統(tǒng)設(shè)計(jì)
2 嵌入式音頻處理系統(tǒng)設(shè)計(jì)
2.1 OoenBus系統(tǒng)設(shè)計(jì)
嵌入式設(shè)計(jì)時(shí),在處理外圍設(shè)備與處理器的連接關(guān)系時(shí),可以采用AD軟件中的開放總線(OpenBus系統(tǒng))來完成,這樣連接過程將被大大簡化。“OpenBus系統(tǒng)”是一個(gè)描述一種使用普通總線實(shí)現(xiàn)整個(gè)系統(tǒng)內(nèi)邏輯功能性“模塊”連接的術(shù)語。在OpenBus系統(tǒng)文檔中,打開OpenBus Palette面板,選擇并放置組成系統(tǒng)所需的器件。OpenBus Palette面板中用于FPGA設(shè)計(jì)的器件,按照功能分類有Connectors(連接器)、Proce ssors(處理器)、Memories(存儲(chǔ)器)、Peripherals(外圍設(shè)備)等。每個(gè)OpenBus器件必須正確配置后才能使用。這種Open Bus系統(tǒng)的設(shè)計(jì)方法與傳統(tǒng)的將處理器和外圍電路作為元件放置在電路板上不同,它移除了所有低級別的走線和互連細(xì)節(jié),能夠快速地構(gòu)建系統(tǒng)。
在本文的嵌入式音頻處理系統(tǒng)中,通過訪問NB3000開發(fā)板上的高保真音頻接口獲取音頻流信號。在設(shè)計(jì)OpenBus主處理器系統(tǒng)中,分別選擇并放置微處理器(32-bit RISC Processor TSK3000A)、連接件(Interconnect)、I2S音頻流控制器(Audio Streaming Controller)、SPI控制器(SPI Controller)和SRAM控制器(SRAM Controller)等OpenBus器件,并連線如圖1所示。同時(shí),對OpenBus器件進(jìn)行參數(shù)配置。將SPI控制器的數(shù)據(jù)發(fā)送大小(Data Transfer Size)參數(shù)配置為32。將I2S音頻流控制器的數(shù)據(jù)緩存(I2S Hardware Buffer)參數(shù)配置為4k samples,將I2S設(shè)置為中斷號INT_I1。
通常情況下,任何使用OpenBus系統(tǒng)的FPGA設(shè)計(jì)都要設(shè)計(jì)放置接口電路的頂層原理圖。圖1的Open Bus系統(tǒng)文件為32位處理器TSK3000A和I/O接口邏輯獲得了音頻流數(shù)據(jù),包含了FPGA設(shè)計(jì)中的主處理器系統(tǒng)。約束文件將原理圖頂層的端口連接到目標(biāo)FPGA器件的實(shí)際物理管腳。約束文件中不但包含端口到管腳的映射,還包含如時(shí)鐘分配、目標(biāo)器件等其他相關(guān)的設(shè)計(jì)規(guī)范。
頂層原理圖通過約束文件,將下載到FPGA中的嵌入式系統(tǒng)設(shè)計(jì)與FPGA器件的物理管腳連接起來。頂層原理圖設(shè)計(jì)中,音頻流控制器I2S與音頻編解碼器(AUDIO_CODEC)相連,SPI控制器與音頻編解碼器控制器CS4270(AUDIO_CODEC_CTRL)相連,如圖2所示。
2.2 軟件平臺文件設(shè)計(jì)
在SPB基礎(chǔ)上搭建訪問NB 3000開發(fā)板的音頻接口,并對音頻流數(shù)據(jù)進(jìn)行處理的軟件平臺文件(SwPlatform),如圖3所示。
NB 3000開發(fā)板上的音頻編解碼器為CS4270,因此圖3中選擇CS4270 Audio Codec Driver模塊,不需要再自行編寫音頻編解碼器的驅(qū)動(dòng)代碼。設(shè)計(jì)采用SPI作為配置和控制,I2S用來傳輸數(shù)字音頻數(shù)據(jù)流。因此軟件平臺文件的底層設(shè)計(jì)選擇了I2S Master Controller和SPI Master Controller模塊。中間層設(shè)計(jì)選擇了I2SDriver、SPI Driver和CS4270 Audio Codec模塊。軟件平臺文件使硬件外圍設(shè)備的訪問變得容易,底層模塊為特定的外圍設(shè)備提供了配置數(shù)據(jù)和驅(qū)動(dòng)代碼。設(shè)計(jì)軟件平臺文件時(shí),選擇什么樣的模塊,取決于設(shè)計(jì)中需要訪問哪些外圍設(shè)備。
2.3 嵌入式代碼設(shè)計(jì)
FPGA嵌入式系統(tǒng)設(shè)計(jì)中,嵌入式工程是“嵌在”微處理器中的。嵌入式代碼就是在軟件平臺構(gòu)建器上搭建的軟件平臺的基礎(chǔ)上完成的軟件編程。嵌入式工程中的軟件代碼,主要完成音頻數(shù)據(jù)流的獲取、音頻數(shù)據(jù)流的處理和將處理好的音頻數(shù)據(jù)流送到NB 3000開發(fā)板的喇叭上。主要程序代碼如下:
評論