李穎宏 趙俊桃
摘 要:介紹一種基于SoPC 技術實現的語音處理系統的設計方法。系統主要由Cyclone Ⅱ FPGA內嵌 Nios Ⅱ軟核處理器及音頻編/解碼芯片構成;通過構建嵌入式Linux操作系統來實現對音頻信號的采集和回放處理。詳細介紹通過SoPC Builder配置Nios Ⅱ嵌入式處理器、外圍設備及接口的過程,以及嵌入式Linux操作系統在SoPC系統上的移植過程。利用SoPC系統的可裁減性以及嵌入式系統的可移植性,可使該設計作為一個子系統應用在如網絡會議的視頻電話中,該方法對SoPC系統的開發研究具有較高的參考價值。
關鍵詞:片上系統;嵌入式Linux;音頻編碼;音頻解碼;軟核處理器
中圖分類號:TN912.3文獻標識碼:B
文章編號:1004 373X(2009)02 033 03
Design and Realization of the Embedded Audio Processing System Based on SoPC
LI Yinghong,ZHAO Juntao
(North China University of Technology,Beijing,100144,China)
Abstract:This paper introduces a scheme of designing audio process system based on implementation of SoPC technology.The system is mainly constituted by Cyclone Ⅱ FPGA which Nios Ⅱ soft core processor embedded in,and audio encode and decode chip.The realization of collecting and replaying of audio signal processing is formed by embedded Linux operating system.The paper introduces the process of configuring Nios Ⅱ embedded processors,peripherals and interface by SoPC Builder,and the transplant process of embedded Linux operating system in SoPC system.The characters of reducing of SoPC system and transplanting of embedded system make the design as a subsystem used in the video frequency telephone of network conference.This method has a high reference value for development and research of SoPC system.
Keywords:SoPC;embedded Linux;audio encode;audio decode;soft core processor
0 引 言
可編程的片上系統(System on Programmable Chip,SoPC)是現代計算機輔助設計技術、EDA技術和大規模集成電路技術高度發展的產物。它可以將處理器、存儲器、I/O接口、硬件協處理器和普通的用戶邏輯等系統設計需要的功能模塊都集成到1片FPGA芯片內部,實現MCU,DSP和FPGA 的完美結合,這將是未來嵌入式系統的發展趨勢[1],在儀器儀表、手持設備上有著廣闊的應用前景。
在此利用SoPC技術設計了語音處理系統,包括語音的采集和回放處理,該系統可以作為音視頻監控系統、VoIP 等系統的語音處理模塊。
1 系統構成方案
1.1 系統硬件構成
設計的嵌入式語音處理系統[2]的硬件結構如圖1所示[3]。系統的主控部分由Cyclone Ⅱ EP2C35系列FPGA芯片、外圍電路及語音編解碼芯片構成。EP2C35是Altera公司推出低成本FPGA芯片,該芯片具有33 216個邏輯單元(LE)、105個M4KB RAM塊、RAM總位數是483 840 b、4個鎖相環和35個嵌入式乘法器以及豐富外部擴展引腳。
Cyclone Ⅱ系列FPGA片內結構是以32 b Nios Ⅱ處理器作為核心,Nios Ⅱ處理器是Altera公司的第二代用戶可配置的、采用流水線技術、單指令流的32位RISC內嵌處理器,基于通用FPGA架構的軟CPU內核,其性能超過200 DMIPS。Nios Ⅱ處理器 內核有3種類型,分別是快速型、經濟型和標準型,用來滿足不同的設計要求[1,4]。
音頻部分主要由語音編解碼芯片TLV320AIC23和外部輸入/輸出器件構成;通過麥克風采集模擬音頻信號,經過AIC23轉換為數字音頻信號,由Nios Ⅱ處理器進行語音的存儲及傳輸;Nios Ⅱ處理器輸出的數字音頻信號經過AIC23轉換為模擬音頻信號,通過耳機播放。系統內部包括UART,以太網接口等可以方便地實現系統的擴展,實現諸如IP電話的系統設計。
1.2 主控芯片FPGA的配置
主控芯片FPGA的配置[5]是通過SoPC Builder在Cyclone Ⅱ FPGA開發平臺上實現的。根據需求,該系統主要配置如下:標準型Nios Ⅱ處理器、片上SDRAM MT46V16M16、以太網芯片LAN91C111,FLASH存儲器件AM29LV128M,SSRAM器件CY7C1380C,UART,JTAG UART,PLL鎖相環、定時器Timer,DMA,I2C,AIC23等控制器核。其中以太網芯片、FLASH存儲器件、SSRAM器件通過Avalon三態總線橋與Avalon Switch Fabric連接,所有的外圍接口通過Avalon Switch Fabric與Nios Ⅱ處理器連接。通過SoPC Builder添加的主要外圍接口如圖2所示。
系統添加外圍器件的控制核后,經過SoPC Builder定義生成系統,集成SoPC Builder 系統到Quartus Ⅱ工程,進行引腳分配,編譯硬件設計,生成配置文件.sof和.ptf文件。SoPC Builder是一個自動化的系統開發工具,能夠非常容易地在一個設計中加入Nios Ⅱ處理器以及其它外設接口[6]。
2 系統接口設計
系統主要模塊在FPGA 片內生成,外部接口主要是TLV320AIC23 與Cyclone Ⅱ EP2C35的硬件接口設計。
TLV320AIC23(AIC23)是TI公司的一款高性能的立體聲音頻編解碼器,設計中通過其自帶的A/D,D/A轉換器來完成模擬音頻信號的采樣和數字音頻信號的D/A 轉換工作;AIC23 中的模/數與數/模轉換器使用了多比特sigma-delta 工藝,并在內部集成了高采樣率的數字內插濾波器。該器件的數字傳輸字長可以是16,20,24,32 b,它支持8~96 kHz 的采樣率[7]。
AIC23內部有11 個配置寄存器,可通過控制接口來配置該器件的寄存器,AIC23的控制接口有SPI,I2C兩種規格[7-8]。模式終端狀態決定了控制接口的形式,在設計中MODE接數字地表示利用I2C控制接口對AIC23 傳輸控制數據。I2C總線是Philips公司開發的一種雙向兩線多主機總線,它能方便地實現芯片間的數據傳輸與控制。CS接數字地定義了在I2C總線上A IC23的7 b外設地址為“0011010”。該系統的I2C接口使用GPIO-I2C,即用2根通用的I/O口作為I2C時鐘線SCL和數據傳輸線SDA,通過軟件實現I2C協議。
AIC23芯片與數字系統的接口有右判斷模式、左判斷模式、I2S模式和DSP模式4種。設計中使用I2S數據傳送模式。I2S總線是飛利浦公司為數字音頻設備之間的音頻數據傳輸而制定的一種總線標準,廣泛應用于各種多媒體系統。數字音頻接口由時鐘信號BCLK、數據信號DIN和DOUT、同步信號LRCIN和LRCOUT組成。應當說明:BCLK在主動方式下是輸出,而在從動方式下是輸入。AIC23的IP 核包I2S發送/接收模塊、輸入/輸出FIFO存儲器模塊,AIC23的IP 核結構如圖3所示。
AIC23芯片與EP2C35系列FPGA的連接電路如圖4所示。通過I2C控制接口配置AIC23的11個寄存器;通過I2S總線讀寫音頻數據,讀寫音頻數據使用DMA方式。
系統的音頻信號采集原理:麥克風輸入的模擬音頻信號通過AIC23內部的A/D 轉換器轉換為數字音頻信號,通過I2S總線傳輸給輸入FIFO緩存區。當輸入FIFO緩存區存儲的數據達到設定值時,向DMA控制器請求DMA傳送,DMA控制器接受請求后就完成FIFO到SDRAM之間的數據傳送。當回放錄音數據時:通過SDRAM控制器將SDRAM中保存的音頻數據經輸出FIFO緩存區送到I2S總線,再由AIC23進行D/A轉換,將數字音頻信號還原成為模擬音頻信號通過耳機播放。
3 系統軟件設計
該語音處理系統軟件設計是在Linux操作系統中完成的。
3.1 μClinux操作系統移植
μClinux是針對控制領域的嵌入式Linux操作系統,適合如Nios Ⅱ處理器等不具備內存管理單元(MMU) 的微處理器/微控制器。基于操作系統進行的軟件開發,需將操作系統移植到硬件平臺[9],μClinux可以以部件的形式集成到SoPC 系統中,也可以在用虛擬機運行的Linux下進行μClinux的交叉編譯,此設計中使用后一種方法。
(1)建立編譯環境。
安裝虛擬機、redhat9、Nios Ⅱ的交叉編譯工具鏈(ToolChain) nios2gcc.tar.bz2及nios2libs.tar.bz2,μClinux的代碼包μClinux-dist-20070130.tar.gz及一個針對Nios Ⅱ處理器的補丁包μClinux-dist-20070130-nios2-02.diff.gz。
(2)內核的配置與編譯,按如下順序進行:
make menuconfig //配置內核將quartus工程目錄下的
voip_nios.ptf拷貝到/home/taozi目錄下,
make vendor_hwselect SYSPTF=“/home/taozi/sys.ptf ” //按照提示配置硬件系統
make romfs //編譯內核建立起romfs文件樹,
make //編譯系統
make linux image //內核文件vmlinux和romfs連接起來
生成目標內核文件zImage
(3) 啟動μClinux 系統。
將zImage傳回Windows,下載.sof配置文件后再下載zImage,通過nios2-terminal啟動μClinux 系統。連接串口,通過串口調試器即可看到系統的啟動信息。
3.2 語音處理的軟件設計[10]
移植完Linux 操作系統后,需要添加設計中使用到的編解碼芯片的驅動程序,系統會根據SoPC Builder生成的.ptf 文件將外圍器件的引腳及中斷信息生成Nios_system.h 文件,提供給各外圍器件的驅動程序。本設計中需要添加AIC23和I2C控制器的驅動程序[5]。
系統的語音處理程序流程圖如圖5所示,軟件設計實現語音的采集和回放,系統的軟件設計采用C 語言和Nios Ⅱ匯編語言混合編寫。為使AIC23 正常工作并產生預期效果,必須對其相應的寄存器進行配置。這里只列出對AIC23 芯片初始化設置時的部分代碼,AIC23是通過I2C總線進行初始化配置的。
AIC23 初始化的部分源代碼:
tlv320aic23b_write(client,15,0x000); /* RESET */
tlv320aic23b_write(i2c_client,1,0x119);
tlv320aic23b_write(i2c_client,2,0x1f9);
tlv320aic23b_write(i2c_client,3,0x1f9);
tlv320aic23b_write(client,6,0x00A);/* turn off DAC & mic input */
tlv320aic23b_write(client,7,0x042);/* i2s,16-bit,master mode */
tlv320aic23b_write(client,0,0x119);/* set gain on both channels to +3.0 dB */
tlv320aic23b_write(client,8,0x000);/* set sample rate to 48 kHz */
tlv320aic23b_write(client,9,0x001);/* activate digital interface */
4 結 語
該設計在Cyclone Ⅱ FPGA 開發平臺上配置硬件系統,在Linux操作系統在進行軟件設計,從而實現了對語音的采集與回放等基本音頻處理功能。SoPC系統的可裁減性以及嵌入式系統的可移植性等優點,使設計可以作為一個子系統應用在更大型的系統設計中,例如把G723.1 的編解碼算法移植到該系統中,則完全可以把該模塊嵌入到網絡會議的可視電話中作為語音處理模塊,因而有很好的應用前景和科研價值。
參考文獻
[1]李蘭英.Nios Ⅱ 嵌入式軟核SoPC 設計原理及應用.北京:北京航空航天大學出版社,2006.
[2]林振營,馬剛.基于Nios Ⅱ的SoPC 嵌入式系統開發解決方案.現代電子技術,2007,30(6):79-81.
[3]李鴻強,苗長云.自動語音記錄系f&(AVR S)的SoPC設計與實現.微計算機信息,2005,21(2):48-50,81.
[4]Altera Corp.Nios Ⅱ Processor Reference Handbook.2005.
[5]Altera Corp.Volume 5: Altera Embedded Peripherals.2005.
[6]Altera Corp.Quartus Ⅱ Version 6.0 Handbook.2005.
[7]TI Corp.TLV320AIC23B Data Manual.http:∥www.ti.com,2007.
[8]胡濤,陳超.TLV320AIC23B與TMS320DM642 的接口設計.儀表技術與傳感器,2006(6):36-37.
[9]劉淼.嵌入式系統接口與Linux 驅動程序開發.北京:北京航空航天大學出版社,2006.
[10]Altera Corp.Nios Ⅱ Software Developer′s Handbook.2005.
作者簡介 李穎宏 女,1968年出生,教授。研究方向為智能控制及現場總線技術應用。
趙俊桃 女,1984年出生,北方工業大學碩士研究生。研究方向為基于嵌入式系統的語音處理。