1 引言
DSP芯片以其低成本、低功耗、高运算速度等优势得到了飞速发展与广泛运用。但目前各DSP厂商提供的开发环境(如TI的CCS)大多采用G/C++或汇编语言作为开发语言,与编写Matlab程序相比,前者要复杂得多。
Matlab是一个强大的分析、计算和可视化工具,且编程非常方便。Simulink是Matlab产品中用来建模、分析和仿真各种动态系统的图形化工具。通过丰富的功能模块,可以迅速地创建动态系统模型。同时Simulink也是Real-Time Workshop(以下简称RTW)的支持平台。通过RTW可以自动生成面向不同目标的代码。
Matlab辅助DSP进行混合编程,很多学者作了许多研究和尝试。文献[1]提出了由Matlab向DSP传送原始数据以及DSP反馈处理后数据的方法,充分利用了Matlab优秀的可视化功能。但仍然要在DSP开发环境中编写复杂的代码。文献[2,3]利用工具包——Matlab Link for CCS Development Tools(以下简称CCSLink),实现了在Matlab、TI开发环境和DSP硬件间的双向连接,极大地降低了开发人员调试DSP代码的难度和工作量。但CCSLink只用于DSP程序的调试、数据传递和验证等过程,同样需要编写复杂的DSP代码。而另一工具包——ETTIC6000,利用RTW直接从Simulink模型生成面向TI C6000 DSP的高效代码,不再需要传统的DSP编程过程。本文在此基础上进行研究,设计并自动生成FIR低通滤波器的DSP代码。
2 ETTIC6000的功能、特点及开发DSP代码过程
ETTIC6000是Math Works公司和TI公司联合开发的工具包。利用RTW直接从Simulink模型生成面向TI的C6701 EVM和C6711 DSK目标板的可执行文件或CCS工程。在DSP代码自动生成过程中,ETTIC6000必须与Simulink,RTW,CCS和TI目标板等软硬件相结合才能充分显现其功能。它们之间的关系如图1所示。
应用ETTIC6000开发DSP代码的过程一般经过如下几步:
(1)概念构思和DSP处理算法设计。
(2)在Simulink环境下,利用Matlab基本模块,Simulink基本模块,数字信号处理工具箱,以及专门面向TI C6000的模块组等模块,构建算法模型并运行仿真。并非所有模块都可以转化为DSP代码并顺利编译。例如一些面向Win32的程序模块在转化为DSP代码或在CCS中进行编译时就会出现无法兼容或找不到相关头文件等错误提示。
(3)对仿真结果进行评价,若仿真结果满意,即可在模型中加入C6701 EVM或C6711 DSK目标板的输入输出模块。否则,重新进行算法设计、建模、仿真。
(4)在设计好的面向具体目标板的模型中,设置Simulation选项,包括RTW中的编译连接等选项。
(5)执行代码自动生成、编译、调试并装载到目标板上运行。
从整个设计过程来看,DSP开发人员只需在Matlab中进行Simulink模型设计、构建与仿真。省去了编写、调试复杂DSP代码的过程。下面以实现FIR低通滤波器为例,详细阐述应用ETTIC6000开发DSP代码的全部过程。
3 FIR低通滤波器实现过程
此系统要求对频率分别为200 Hz,600 Hz和1 000 Hz,幅度为1的混合正弦信号进行低通滤波,保留200 Hz的正弦信号。采用Simulink环境下的FDATool工具设计FIR低通滤波器。在以下软硬件环境中设计并通过测试,以下软件均采用默认安装路径,若软硬件环境不同,相应的参数设置将有很大差别。
硬件环境:TMS320C6711 DSK开发板、PC声卡、双头音频线等。
软件环境:Matlab 7.4(R2007a),CCStudio 3.1,Simulink 6.6,Real-Time Workshop 6.6,Target forTI C6000(tm)3.2,Link for Code ComposerStudio 3.0。
Matlab附带软件可以在命令窗口通过ver命令查看,附带软件的使用可以充分利用help命令。
3.1 Simulink环境下构建算法模型并仿真
依据设计思想,在Simulink环境下,通过Simulink基本模块库和数字信号处理工具箱构建如图2所示系统模型。三个输入信号模块关键参数设置:频率分别设置为200 Hz,600 Hz和1 000 Hz;幅度为1;采样频率为1 600 Hz。FDA Tool关键参数设置:滤波类型选择低通;阶数为80;采样频率为1 600 Hz;起始频率为100 Hz;截至频率为500 Hz。
对图2所示模型运行仿真,仿真结果如图3所示。从滤波后的波形看,此滤波器的参数设置比较合理。
3.2 构建面向C6711 DSK目标模型
(1)依据仿真模型利用ETTIC6000中C6711 DSK输入输出模块构建如图4所示面向C6711 DSK目标模型。C6711 DSK ADC与C6711 DSK DAC参数采用默认设置。FDA Tool参数与仿真模型中参数保持一致,设置完成后将模型保存在Matlab默认目录下,命名为myfilter.mdl。
(2)依据图4构建如图5所示的硬件平台。TMS320C6711 DSK与PC通过并口线连接;信号源由PC声卡输出,经C6711 DSK A/D转换后进行FIR低通滤波,由Line OUT将滤波后信号输出至PC声卡,最后采集声卡信号,显示滤波后波形。
3.3 DSP代码自动生成
进行DSP代码自动生成前,首先要安装、配置相应的软硬件环境。正确安装、配置是此系统能够成功运行的关键。具体配置有如下几个方面:
(1)依据图5实现硬件连接。在BIOS中将并口传输模式改为EPP模式;在DOS模式下,运行C:\CCS-tudio v3.1\C6000\DSK6X11\conftest\dsk6xtst.exe文件,可以检测目标板是否连接正常;最后检查PC声卡输入输出是否正常。
(2)正确配置CCS。点击Setup CCStudio V3.1,选择C6711 DSK Port 378 EPP Mode模块,点击Add,设置并口地址为0x378;保存设置后退出。
(3)打开myfilter.mdl模型,展开simulation>Configuration Paraineters面板,面板中相应选项设置如下:
其他选项设置为默认模式。
(4)点击RTW面板Generate code按钮,执行代码自动生成过程,此时Matlab命令窗口将显示如下信息:
(5)CCStudio 3.1将自动运行,窗口中自动生成myfilter.pit的工程文件。
3.4 FIR低通滤渡器实现
(1)对myfiher.pit的工程文件在CCS中进行编译、连接、装载、运行。
(2)利用Matlab中的daqfcengen函数,可以实现向PC声卡输出端输出波形。在Matlab命令窗口输入daqfcengen命令,将显示波形发生器窗口,将频率设置为200 Hz,幅度设置为1,如图6所示。点击Start按钮。在Matlab命令窗口继续输入daqfcengen命令,相继实现频率为600 Hz,1 000 Hz的波形输出。这样PC声卡就输出了三个不同频率波形的叠加。
(3)利用Matlab中的daqscope函数,可以实现显示PC声卡输入端的波形。在Matlab命令窗口输入daqscope命令,将显示波形显示器窗口,如图7所示,即为滤波后的输出波形。
4 结 语
从整个FIR低通滤波器实现过程看,没有编写一行DSP代码,全部采用图形化的编程模式,生成的CCS工程文件既可供初学者学习、借鉴。又可供具有一定编程经验的程序开发者对代码进一步修改或优化,提高代码执行效率。
从实验结果看,设计的FIR低通滤波器滤波效果明显。充分说明利用DSP代码自动生成技术实现FIR低通滤波器的方法是可行的、高效的。Matlab辅助DSP在语音处理、图像处理、通信、雷达等领域还有许多值得研究的地方。采用多语言工具进行程序开发也是今后发展的趋势.