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)的微处理器/微控制器。基于操作系统进行的软件开发,需将操作系统移植到硬件平台,μClinux可以以部件的形式集成到SoPC系统中,也可以在用虚拟机运行的Linux下进行μClinux的交叉编译,此设计中使用后一种方法。
(1)建立编译环境。安装虚拟机、redhat9、NiosⅡ的交叉编译工具链(ToolChain)nios2gcc.tar.bz2及nios2libs.tar.bz2,μClinux的代码包μClinux—dist一20070130.tar.gz及一个针对NiosⅡ处理器的补丁包μC1inux—dist一20070130—nios2—02.diff.gz。
(2)内核的配置与编译,按如下顺序进行:
(3)启动μClinux系统。将zlmage传回Win—dows,下载.sof配置文件后再下载zImage,通过nios2一terminal启动μClinux系统。连接串口,通过串口调试器即可看到系统的启动信息。
3.2 语音处理的软件设计
移植完Linux操作系统后,需要添加设计中使用到的编解码芯片的驱动程序,系统会根据SoPC Builder生成的.ptf文件将外围器件的引脚及中断信息生成Nios_system.h文件,提供给各外围器件的驱动程序。本设计中需要添加AIC23和I2C控制器的驱动程序。
系统的语音处理程序流程图如图5所示,软件设计实现语音的采集和回放,系统的软件设计采用C语言和NiosⅡ汇编语言混合编写。为使AIC23正常工作并产生预期效果,必须对其相应的寄存器进行配置。这里只列出对AIC23芯片初始化设置时的部分代码,AIC23是通过I2C总线进行初始化配置的。
AIC23初始化的部分源代码:
4 结 语
该设计在CycloneⅡFPGA开发平台上配置硬件系统,在Linux操作系统在进行软件设计,从而实现了对语音的采集与回放等基本音频处理功能。SoPC系统的可裁减性以及嵌入式系统的可移植性等优点,使设计可以作为一个子系统应用在更大型的系统设计中,例如把G723.1的编解码算法移植到该系统中,则完全可以把该模块嵌入到网络会议的可视电话中作为语音处理模块,因而有很好的应用前景和科研价值。