前言 SOPC( System On Programmable Chip)技術是SOC( System On Chip)技術和電子設計自動化(EDA)技術結合的產物。它可以將處理器、存儲器、I/O接口、硬件協處理器和普通的用戶邏輯等系統設計需要的功能模塊都集成到一個FPGA 芯片里, 構建一個可編程的片上系統[1]。它還具有靈活的設計方式,可裁減、可擴充、可升級,具備系統可編程等功能,是一種優秀的嵌入式系統設計技術[2]。本文研究了一種基于SOPC技術的嵌入式數字音頻錄放系統的設計方案。系統通過在FPGA芯片上配置NiosII軟核處理器和相關的接口模塊來實現嵌入式系統的主要硬件結構,并結合嵌入式系統所支持的軟件設計來控制音頻編/解碼芯片WM8731和SDRAM,實現了音頻信號的A/D、D/A轉換、存儲、回放等功能。由于采用了SOPC和DMA控制技術,該系統具有設計靈活、擴展性好和數據處理速度快等優點[3、4]。 1 系統原理和結構 系統結構如圖1所示。本系統選用的FPGA芯片是Altera公司最新推出的CycloneII 系列的EP2C35。該芯片具有35000個邏輯單元、672個引腳、475個用戶自定義I/O接口、35個嵌入式乘法器和4個鎖相環,是一個集成度極高和功能強大的FPGA芯片。在FPGA中設計有NiosII軟核處理器和掛在該NiosII系統的Avalon總線上的I2C配置接口模塊、串/并轉換模塊(S/P)、并/串轉換模塊(P/S)、先入先出存儲器模塊(fifo_in、fifo_out)、Sdram存儲器控制接口(Sdram control)、DMA控制器接口(Dma_in、Dma_out)和用于接收按鍵信息的通用并行接口(pio)模塊等。在FPGA外有音頻編/解碼芯片(WM8731)、音頻數據存儲模塊(SDRAM)和控制按鍵(keybord)等。 圖1 系統結構圖 系統的音頻信號采集原理是:WM8731經過I2C配置后,將輸入端加入的模擬音頻信號進行A/D轉換后,成為串行的數字信號。FPGA內的串/并轉換模塊再將該信號轉換成16位寬的并行數字信號。此信號從s/p的輸出,并交給先入先出存儲器(fifo)進行緩存。當fifo的數據達到其容量的一半時向dma_in請求一次DMA傳送。Dma_in接受請求后就執行一次fifo到Sdram之間的直接DMA數據保存。多次重復fifo到Sdram之間的DMA傳送,直到采集停止鍵被按下后,就完成了一段音頻數據的采集。 回放原理是:在Dma_out的控制下,通過Sdram控制器將Sdram中保存的音頻數據經fifo_out送到并/串轉換模塊的輸入端,經過并/串轉換后的串行數字信號再由WM8731進行數/模轉換,就還原成為模擬的聲音信號。多次重復這種DMA傳送操作,直到回放停止鍵被按下后就完成了一段音頻數據的回放。 2 系統硬件設計 系統的硬件主要由FPGA內的NIOSII中央處理器及接口模塊和FPGA外的音頻編/解碼芯片WM8731、存儲器和控制鍵等部分構成。 在系統的硬件設計中,FPGA內部各模塊的設計是本系統硬件設計的核心技術。FPGA內部各模塊是利用Altera公司提供的QuartusII開發軟件和其中集成的SOPC Builder系統開發工具來設計的。SOPC Builder支持NiosII CPU的配置,并支持設計者在該工具所提供的IP庫中根據系統設計需要選擇相應的接口模塊,并加入到NiosII系統中。這樣,在極短的時間內就可以完成一個SOPC系統的設計。將這些設計在QuartusII中編譯并生成sof格式文件后,下載到FPGA芯片中就形成了SOPC的嵌入式系統硬件平臺。 下面主要對NIOSII軟核處理器、I2C總線控制接口、串/并轉換模塊等幾個關鍵模塊的設計進行介紹。 2.1 NiosII軟核處理器 本系統設計所選擇的處理器是Altera公司新近推出的第二代嵌入式NiosII軟核處理器系列中的一個。NiosII處理器系列是一個用戶可配置的通用32位RISC嵌入式軟核處理器集合。它包括三種軟核CPU:一種是高性能軟核,它的處理能力超過200MIPS,需要占用1800個邏輯單元;一種是精簡軟核, 用這種軟核構造一個完整的CPU系統只需要占用700個邏輯單元;第三種是標準軟核,這種軟核約占用1400個邏輯單元,性能也介于上兩種軟核之間。所有軟核都是100%代碼兼容,設計者可根據需要對上述三種軟核進行選擇來調整嵌入式系統的性能及成本。由于本設計采用的CycloneII系列的2C35芯片具有35000個邏輯單元,邏輯資源十分豐富,加上系統對CPU的性能要求較高的原因,因此選用了高性能的NiosII軟核作為本系統的CPU。 2.2 I2C總線控制接口 WM8731是Wolfson Microelectronics公司生產的一款低功耗的高品質雙聲道數字信號編解碼芯片。該芯片的ADC和DAC的采樣頻率為8KHZ"96KHZ可調,可轉換的數據位長度為16"32位可調。WM8731的內部有11個寄存器。該芯片的初始化和內部功能設置是以I2C總線方式對其內部的這11個寄存器進行相應的配置來實現的。本設計中WM8731工作于主模式,采樣頻率設為48KHZ,轉換的數據位長度為16位。 由于SOPC Builder自帶的IP庫中并不包含I2C配置接口模塊,所以該模塊需要設計者根據要配制的芯片的寄存器特點和功能要求進行專門的設計。本系統的I2C接口是作者自行設計,并以IP核的形式通過SOPC Builder連接到系統的Avalon總線上的。WM8731的基地址是34h ,11個寄存器的配置數據如表1所示。其中1Eh為WM8731的軟件復位控制寄存器,復位時配置的值為00h,平時為缺省值。 表1 WM8731的寄存器及其參數設置 2.3 串/并轉換模塊 由于WM8731在A/D轉換后和D/A轉換前的數字信號都是以串行格式與外界進行數據交換的,所以,在WM8731與系統控制核心之間需要加入串/并和并/串轉換模塊。本文主要對其中的串/并轉換模塊的設計原理進行介紹。工作于主模式的WM8731與串/并轉換模塊的連接如2所示。圖中,BCLK、和LRCK為WM8731返回給控制模塊的位同步時鐘和采樣時鐘,ADCDATA為WM8731輸出的串行音頻數據流。 圖2 主模式的WM8731與串/并轉換模塊的連接圖 本設計中,串并轉換模塊由兩個16位的移位寄存器構成,分別對左聲道和右聲道的位數據流進行串/并轉換,電路構成如圖3所示。兩個移位寄存器inst7和inst8由LRCK和LRCK的非信號使能,當LRCK為低電平時,移位寄存器inst8工作,對左聲道的數據流進行串并轉換,當LRCK為高電平時,移位寄存器inst7工作,對右聲道的數據流進行串并轉換。 圖3 移位寄存器電路圖 3 系統軟件設計 本系統的軟件是在Altera公司提供的軟件集成開發工具IDE中,以C語言形式,在硬件抽象層(HAL)函數支持下設計的。系統的軟件流程圖如圖4所示。系統啟動后,先進行初始化操作,初始化程序主要完成WM8731的寄存器配置、初始化DMA通道及清采集FIFO緩沖器。隨后,系統進入主循環狀態,并檢測按鍵。當檢測到SAVE按鍵時,系統先通過I2C配置WM8731為錄制時需要的狀態,然后清FIFO緩沖器,隨后啟動DMA接收通道,開始保存數據,直到一次DMA傳輸結束。當檢測到播放按鍵被按下時,系統通過I2C配置WM8731為播放時所需要的狀態,并進入播放程序。當系統檢測到停止按鍵被按下時,設置播放標志位為STOP,并在一次DMA完成后,自動停止播放。 圖4 系統軟件流程圖 4 結束語 本設計在Altera公司最新推出的CycloneII系列的EP2C35芯片上進行了軟、硬件調試,功能全部正常。由于系統設計中采用了DMA控制下的FIFO和SDRAM之間的直接高速數據傳輸技術,有效地解決了音頻信號的高速A/D、D/A轉換及處理過程中對CPU資源長時間占用和系統功能擴展時對PCU資源更多需求的矛盾,使得本設計在系統功能擴展上具有極大的潛力。再加上SOPC技術在軟、硬件設計上的可裁減和很方便移植等優點,本設計可以作為一個子系統應用在更大型的系統設計中,例如嵌入式網絡音、視頻信號處理等,有很好的應用前景和科研價值。 |