新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于SPB的嵌入式音頻處理系統設計

        基于SPB的嵌入式音頻處理系統設計

        作者: 時間:2016-10-10 來源:網絡 收藏

        2
        2.1 OoenBus
        設計時,在處理外圍設備與處理器的連接關系時,可以采用AD軟件中的開放總線(OpenBus系統)來完成,這樣連接過程將被大大簡化。“OpenBus系統”是一個描述一種使用普通總線實現整個系統內邏輯功能性“模塊”連接的術語。在OpenBus系統文檔中,打開OpenBus Palette面板,選擇并放置組成系統所需的器件。OpenBus Palette面板中用于FPGA設計的器件,按照功能分類有Connectors(連接器)、Proce ssors(處理器)、Memories(存儲器)、Peripherals(外圍設備)等。每個OpenBus器件必須正確配置后才能使用。這種Open Bus系統的設計方法與傳統的將處理器和外圍電路作為元件放置在電路板上不同,它移除了所有低級別的走線和互連細節,能夠快速地構建系統。
        在本文的系統中,通過訪問NB3000開發板上的高保真音頻接口獲取音頻流信號。在設計OpenBus主處理器系統中,分別選擇并放置微處理器(32-bit RISC Processor TSK3000A)、連接件(Interconnect)、I2S音頻流控制器(Audio Streaming Controller)、SPI控制器(SPI Controller)和SRAM控制器(SRAM Controller)等OpenBus器件,并連線如圖1所示。同時,對OpenBus器件進行參數配置。將SPI控制器的數據發送大小(Data Transfer Size)參數配置為32。將I2S音頻流控制器的數據緩存(I2S Hardware Buffer)參數配置為4k samples,將I2S設置為中斷號INT_I1。
        通常情況下,任何使用OpenBus系統的FPGA設計都要設計放置接口電路的頂層原理圖。圖1的Open Bus系統文件為32位處理器TSK3000A和I/O接口邏輯獲得了音頻流數據,包含了FPGA設計中的主處理器系統。約束文件將原理圖頂層的端口連接到目標FPGA器件的實際物理管腳。約束文件中不但包含端口到管腳的映射,還包含如時鐘分配、目標器件等其他相關的設計規范。

        b.JPG


        頂層原理圖通過約束文件,將下載到FPGA中的嵌入式與FPGA器件的物理管腳連接起來。頂層原理圖設計中,音頻流控制器I2S與音頻編解碼器(AUDIO_CODEC)相連,SPI控制器與音頻編解碼器控制器CS4270(AUDIO_CODEC_CTRL)相連,如圖2所示。

        c.JPG

        2.2 軟件平臺文件設計
        基礎上搭建訪問NB 3000開發板的音頻接口,并對音頻流數據進行處理的軟件平臺文件(SwPlatform),如圖3所示。

        d.JPG


        NB 3000開發板上的音頻編解碼器為CS4270,因此圖3中選擇CS4270 Audio Codec Driver模塊,不需要再自行編寫音頻編解碼器的驅動代碼。設計采用SPI作為配置和控制,I2S用來傳輸數字音頻數據流。因此軟件平臺文件的底層設計選擇了I2S Master Controller和SPI Master Controller模塊。中間層設計選擇了I2SDriver、SPI Driver和CS4270 Audio Codec模塊。軟件平臺文件使硬件外圍設備的訪問變得容易,底層模塊為特定的外圍設備提供了配置數據和驅動代碼。設計軟件平臺文件時,選擇什么樣的模塊,取決于設計中需要訪問哪些外圍設備。
        2.3 嵌入式代碼設計
        FPGA嵌入式系統設計中,嵌入式工程是“嵌在”微處理器中的。嵌入式代碼就是在軟件平臺構建器上搭建的軟件平臺的基礎上完成的軟件編程。嵌入式工程中的軟件代碼,主要完成音頻數據流的獲取、音頻數據流的處理和將處理好的音頻數據流送到NB 3000開發板的喇叭上。主要程序代碼如下:
        e.JPG



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 五家渠市| 福州市| 抚远县| 冀州市| 光山县| 曲阜市| 彭水| 汶上县| 临潭县| 肃宁县| 乐平市| 武穴市| 宜君县| 松潘县| 忻城县| 那坡县| 泽库县| 古浪县| 马关县| 十堰市| 桐梓县| 漯河市| 卫辉市| 鄂托克旗| 新干县| 收藏| 南召县| 罗源县| 景泰县| 平阳县| 潞西市| 崇礼县| 万州区| 临潭县| 鄂伦春自治旗| 普定县| 平塘县| 鲁甸县| 桑日县| 南溪县| 遵义县|