平滑后处理模块依据中值滤波平滑处理,采用5点长的滑动窗口对提取出的基音频率进行后处理。
4 DSP加速模块与NIOS的整合及综合仿真测试
4.1基于Simulink的仿真
各模块整合后,即可添加激励及信号接收终端进行Simulink仿真。
4.2 处理器系统的构建
通过DSP Builder设计出的DSP模块可以成为单片FPGA电路系统中的一个组成部分,以担任某个局部电路的功能,另一方面,也可以直接通过DSP Builder为Nios嵌入式处理器设计各类加速器,从而成为Nios系统的一个接口设备,与整个片内嵌入式系统融为一体,使得Nios的通用性和DSP加速模块的专用性恰到好处地结合在了一起,使DSP处理器系统的灵活性得到了最大程度的体现。当Nios接收到对语音数据进行基音频率提取的任务时,它会将需处理的原始数据送往DSP加速模块,DSP加速模块对数据进行处理并将处理结果转交给Nios处理器,由Nios送往相应终端进行结果显示或进行其它处理,从而构建起整个SOPC系统。需要特别说明的是,Nios系统的所有外设都是通过Avalon总线与Nios CPU相接的,DSP加速模块也不例外,该模块若与Nios进行信息交换,必须通过Avalon总线,也就是说,所设计出的DSP模块应该有与Avalon总线的接口。DSP Builder提供了SOPC Builder Links库,其中的AVALON Ports提供了各种与Avalon总线相连接的功能端口,本设计需根据所完成的DSP模块各端口的功能为其添加Avalon总线接口。
DSP模块功能验证后,即可加载DSP Builder中的核心模块“SignalCompiler”,以完成模型分析、 MDL到VHDL的转化、综合及适配。最后在SOPC Builder中完成将该模块与Nios的整合,以使DSP能成为挂接到Nios的一个硬件加速模块。此后即可完成下载,并在Nios的集成开发环境(IDE)中编写测试程序对整个处理器系统进行测试。
4.3 性能评估
经分析,从输入最后一个数据到开始陆续得到最终结果(由于算法的限制,该系统并不是一个实时系统),需N*T/2时间(T为一个基本工作周期,N为语音数据的帧数),若从DSP向外输出数据的周期仍为T,那么送出数据共需N*T时间,两者之和为3N*T/2,即从输入最后一个数据到所有数据输出,共需时间3N*T/2。这种执行效率与软件相比,其优势是显而易见的,从理论上讲,软件没有执行上的并行性可言,也就是说对于顺序执行的子函数而言,只有前一个子函数执行完毕,后一个子函数才能执行,比如端点检测部分和基音频率提取部分只能顺序执行,而不像硬件那样,端点检测与基音频率提取可以分成两个独立的模块同时并行地对输入数据进行处理。对于语音内容为“你好”的1.1s的语音数据而言,Matlab的软算法的平均耗时在0.8-0.85秒之间(运行环境为1.73GHz主频,256MB内存)。但若令T=1/1.73G,代入到3N*T/2中(N=54),其延迟只有4.36×10-8秒,可见差异的显著。而这种差异将随N的增大而更加显著。可见,该算法的DSP实现使整个执行效率有了大幅度的提高,达到了预期的效果。
5 结语
本文尝试采用基于Altera硬件设计的一套新的设计流程和设计思路,不同于传统的在MAX-PLUS II和QUARTus II中面向RTL级的硬件设计思路,转向了以MatlabSimulink为基本平台,以DSP Builder为其中的BLOCkset的面向系统级和算法级的硬件设计思路,同时充分利用了Simulink的强大的仿真功能,而在将系统级模型向RTL级模型转化时,完全通过DSP Builder的核心模块SignalCompiler自动实现,并同时完成综合和适配,若采用自动设计流程,甚至可以在Simulink中完成下载。这种设计思路有益于复杂算法的硬件化设计,将设计者的视线从Quartus中更多地转移到了MatlabSimulink中,使设计者考虑问题的着眼点从传统围绕底层的硬件实现转移到上层面向算法的实现和整个系统的构成。而在原来需要考虑过多的底层实现问题,通过SignalCompiler模块的强大功能,只是一蹴而就的事。
本文作者创新点在于通过一套新的设计流程,面向最终的应用(即实现基音周期特征的提取),并充分利用FPGA的优势,实现了彻底的硬件执行架构的设计,而不同于以往更多的周旋于软件层面的编程,同时以DSP Builder作为开发平台,按照自顶向下的设计思想,极大地简化了DSP核的设计,同时使算法的DSP设计结果实现了执行效率上的飞跃。
参考文献:
1 L.R.拉宾纳,R.W.谢弗. 语音信号数字处理. 北京:科学出版社,1983
2 易克初,田斌,付强. 语音信号处理. 北京:国防工业出版社,2000
3 王朝英,冯新喜. 信号处理原理. 北京:清华大学出版社,北京交通大学出版社,2005
4 邹鲲,袁俊泉,龚享铱. MATLAB 6.x信号处理. 北京:清华大学出版社,2002
5 张智星. MATLAB程序设计与应用. 北京:清华大学出版社,2002
6 何强,何英. MATLAB扩展编程. 北京:清华大学出版社,2002
7 潘松,黄继业,曾毓. SOPC技术实用教程. 北京:清华大学出版社,2005
8 彭澄廉,周博,丘卫东,陈燕,周学功,方茁. 挑战SOC-基于Nios的SOPC设计与实践. 北京:清华大学出版社,2004
9 潘松,黄继业,王国栋. 现代DSP技术. 西安:西安电子科技大学出版社,2003
10 Altera Corp. DSP Builder Reference Manual,2005
11 Altera Corp. DSP Builder User Guide,2005
12 杨守良. 利用Matlab/DSP Builder实现DDS的设计. 微计算机信息,2006, 7-2:211-212
本文关键字:检测 DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术