
浅谈matlab辅助dsp设计的研究与实现.docx
6页浅谈浅谈 MATLAB 辅助辅助 DSP 设计的研究与实现设计的研究与实现1 引言引言数字信号处理是将信号以数字方式表示并处理的理论和技术数字信号处理与模拟信 号处理是信号处理的子集数字信号处理的目的是对真实世界的连续模拟信号进行测量或 滤波因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数 转换器实现而数字信号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的 内置数字信号处理器(DSP,DigitalSignalProcessor)是车载主机内以逻辑电路对音视频数字 信号进行再加工处理的专用元件,是一个统称名词,包括数字效果器、EQ、3D 环绕等等 数字信号处理器(DSP,即 DigitalSignalProcessor)是进行数字信号处理的专用芯片,是伴 随着微电子学、数字信号处理技术、计算机技术的发展而产生的新器件MATLAB 是矩阵实验室(Matrix Laboratory)的简称,是美国 MathWorks 公司出品的商 业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和 交互式环境,主要包括 MATLAB 和 Simulink 两大部分。
MATLAB 是由美国 mathworks 公司 发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境它将数值分析、 矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个 易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领 域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如 C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平本文所作研究是以自行研制的 DSP 教学实验箱为平台进行的,其 DSP 采用 TMS320VC5416 芯片实现本文内容安排如下:第 1 部分在介绍相关背景知识的基础上, 引入使用 MATLAB 辅助 DSP 设计的思想;第 2 部分介绍了 MATALB 中实现这一思想的两种 工具;第 3 部分介绍了工具之一 CCSLink 的实现方式及工作原理;第 4 部分结合实验平台 给出了 CCSLink 的应用实例2 MATLAB 辅助辅助 DSP 设计的方法概述设计的方法概述实现 MATLAB 辅助 DSP 设计的方法有两种,即 CCSLink 和 Embedded Target for TI TMS320C6000 DSP。
前者可实现 MATLAB 与 C2000/C5000/C6000 DSP 之间的数据交互和程序 控制;后者可实现从 Simulink 模型自动生成 DSP 目标代码,但仅支持 C6000 系列的部分 DSP 器件MATLAB 的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相 似,故用 MATLAB 来解算问题要比用 C,FORTRAN 等语言完成相同的事情简捷得多,并且 MATLAB 也吸收了像 Maple 等软件的优点,使 MATLAB 成为一个强大的数学软件在新的 版本中也加入了对 C,FORTRAN,C++ ,JAVA 的支持可以直接调用,用户也可以将自己 编写的实用程序导入到 MATLAB 函数库中方便自己以后调用,此外许多的 MATLAB 爱好者 都编写了一些经典的程序,用户可以直接进行下载就可以用考虑到实验平台是以 C5000 DSP 为基础的,并且第二种工具较容易操作等因素,下面 主要研究利用 CCSLink 辅助 DSP 设计的方法2.1 Embedded Target for TI TMS320C6000 DSPCode Composer Studio(CCS)是 TI 提供的 DSP 的集成开发环境。
对于 C6000 系列而言,利用工具 Embedded Target for TI TMS320C6000 DSP,用户可以 从 Simulink 模型直接生成针对 DSP 目标板的可执行文件或者 CCS 工程文件,实现了 MATLAB/Simulink 与 CCS 集成开发环境(IDE)的无缝连接,从而把设计人员从繁杂的 DSP 编程中解脱出来,将主要的精力放在设计而不是 DSP 编程上2.2 MATLAB Link for Code Composer Studio集成在 MATLAB6.5 或更高版本中的 CCSLink 工具把 MATLAB、TI DSP 及其集成开发环境 CCS 连接在一起,使得我们可以在 MATLAB 环境下就可以完成对 CCS 和 DSP 目标板的操作, 包括与目标内存之间的数据交互,检测处理器的状态,控制 DSP 程序的运行等它提供了 MATLAB、CCS 和目标 DSP 板的双向连接,开发者可以利用 MATLAB 中强大的可视化、数据 处理和分析工具对 DSP 中的数据进行分析和再处理,以辅助 DSP 系统设计我们利用 CCSLink 提供的相关函数能够实现 MATLAB 与目标 DSP 的存储器及寄存器间 的信息交互,如同操作 MATLAB 变量一样来读、写 TI DSP 中的存储器或寄存器,即整个目 标 DSP 对于 MATLAB 而言是透明的。
3 CCSLink 的实现方式及工作原理的实现方式及工作原理3.1 CCSLink 的实现方式的实现方式利用 CCSLink 即可实现 MATLAB、CCS 和目标 DSP 之间的信息交互CCSLink 共提供了 3 种实现方式:1)使用与 CCS IDE 的连接对象利用此对象来创建 CCS IDE 和 MATLAB 的连接,从 MATLAB 命令窗中即可运行 CCS IDE 中的应用程序,查询目标 DSP 的状态信息,修改或读取 目标 DSP 的存储器或寄存器中的数据,甚至可以调试 DSP 程序2)使用与 RTDX(Real-Time Data Exchange)的连接对象提供 MATLAB 和硬件 DSP 之 间的实时通信通道利用此连接对象,可以打开、使能、关闭或禁止 DSP 的 RTDX 通道, 利用此通道可以实时地向硬件目标 DSP 发送和取出数据而不必停止 DSP 上运行的程序RTDX 连接对象实际上是 CCS 连接对象的一个子类,在创建 CCS 连接对象的同时创建 RTDX 连接对象,它们不能分别创建3)使用嵌入式对象在 MATLAB 环境中创建一个可以代表嵌入在目标 C 程序中的变量 的对象。
利用嵌入式对象可直接访问嵌入在目标 DSP 中的存储器和寄存器中的变量,即把 目标 C 程序中的变量作为 MATLAB 的一个变量对待3.2 CCSLink 的工作原理的工作原理上面的三种方式在具体实现时略有不同,但是其原理相似,不失一般性,我们通过第 一种方式——与 CCS IDE 的连接对象,来介绍 CCSLink 的工作机理1)选择目标 DSP 并创建 CCS IDE 连接对象在 MATLAB 环境下使用函数 ccsdsp 并配置相应的属性名和属性值即可创建一个 CCS IDE 连接对象 cc:cc=ccsdsp(‘boardnum’ , x, ‘procnum’ , y, ‘timeout’ , z) ;其中,boardnum、procnum、timeout 都是属性名分别表示创建连接对象时所使用的 目标板编号、DSP 处理器编号及全局超时值2)在 MATLAB 环境下加载 CCS 工程文件projfile=fullfile(matlabroot, ‘toolbox’ , ‘tiddk’ , …, ‘ccsproject.pjt’ ) ; %取 得工程文件projpath = fileparts(projfile) ; %取得工程文件路径open(cc, projfile) ; %加载工程文件,该函数实现把文件 filename 加载在 CCS IDE 中cd(cc, projpath) ; %改变 CCS 的工作路径3)在 MATLAB 环境下编译、连接并下载可执行文件创建了 CCS IDE 连接对象并加载工程文件后,即可通过函数 build()编译和链接工程 文件,以生成针对目标 DSP 的可执行文件(。
out 文件) ;通过函数 load()下载可执行文 件到目标 DSP 中具体方法如下:build(cc) ; %编译、链接工程文件,生成目标 DSP 可执行文件load(cc, ‘ccsproject.out’ ) ; %下载可执行文件到目标 DSP,可执行文件名与工程名 相同4)在 MATLAB 环境下控制程序运行CCSLink 提供了 3 个函数用于控制目标 DSP 的运行状态通过这些函数,在 MATLAB 下 对 DSP 的控制操作就像在 CCS IDE 中一样方便,实际上也确实是这样进行的halt(cc) ; %中断处理器的运行restart(cc) ; %复位程序计数器 PC,重新执行程序run(cc, ‘runtohalt’ , 30) ; %执行程序到断点处,最后一个参数表示超时时间,此 处为 30s5)在 MATLAB 环境下对 CCS IDE 连接对象进行操作在 MATLAB 中可以方便的操作 DSP 存储器和寄存器中的数据,包括读操作和写操作 下面以读写目标 DSP 存储器和寄存器中的数据来说明date=read(cc, [256,0], ‘double’ , 100) ; %从目标存储器目的地址 100H(即十进制 数 256)处开始,读取 100 个双精度数并赋给 MATLAB 对象 datereg=regread(cc, ‘A0’ , ‘2scomp’ ) ; %读取 DSP 寄存器 A0 中的数据,并转化 成双精度数分配给 MATLAB 对象 regwrite(cc, [256,0], double([1.0 2.0 3.0]) ) ;%向目标存储器 100H 开始的地址处,写入 三个双精度数据6)关闭 CC S IDE 连接对象当一切操作执行完成后,需要删除 CCSDSP 对象,以收回系统资源。
clear cc; %关闭 CCS IDE 连接对象4 CCSLink 应用实例应用实例通过 CCSLink 工具,可以使用 MATLAB 来进行 DSP 的辅助设计在该实例中,FIR 滤波 的核心内容由 DSP 实现,而算法仿真、系数产生、用户界面、结果验证等部分由 MATLAB 辅助完成4.1 FIR 滤波器滤波器设计设计FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,是数字信号处理 系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时 其单位抽样响应是有限长的,因而滤波器是稳定的系统因此,FIR 滤波器在通信、图像处 理、模式识别等领域都有着广泛的应用设输入信号为 x(n) ,输出信号为 y(n) ,则 FIR 滤波器对应的差分方程可表示为:其中,h(k) (k=0,1,2,…,N-1)表示滤波器系数序列,是滤波器设计的关键h(k) 可以通过 MATLAB 工具箱提供的滤波器函数 fir1()和 fir2()来获取:首先通过建立 MATLAB/Simulink 模型,根据所需设计低通滤波器的性能要求来确定滤波器的阶数和截止频 率等参数。
本例所设计的 FIR 低通滤波器参数为:截止频率(Fc)2kHz,采样频率(Fs)8kHz,阶数(N)40然后借助函数 fir1(N, WN)即可返回对应滤波器的系数矩阵,其中 N 为阶数,WN 为滤波器的归一化截止频率, 即 WN= 2Fc/Fs,且 0≤WN≤14.2 DSP 滤波算法实现滤波算法实现结合 MATLAB 产生的滤波器系数,就可以编写 DSP 滤波主程序了,关键代码如下:FIR_TASK:STM 。






![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)





