基于SoPC的嵌入式语音处理系统的设计与实现
2009-05-12李颖宏赵俊桃
李颖宏 赵俊桃
摘 要:介绍一种基于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年出生,北方工业大学硕士研究生。研究方向为基于嵌入式系统的语音处理。