基于模型化DSP快速设计的音频信号采集系统
2015-11-09李智勇等
李智勇等
摘 要: 数字信号控制器具有数字信号处理器和微控制器的优点,在现代自动控制、数据采集系统中占据着重要的地位,TMS320F28335作为目前最主流的数字信号控制器,在实际工程中被广泛的使用。目前该处理器存在着程序设计周期长,程序设计过程复杂等问题。采用模型化设计的DSP嵌入式系统程序开发方法能很好地解决这个问题。以设计一个基于DSP的音频数据采集系统为例,通过将CCS软件和Matlab/Simulink进行有机的结合,对模型进行图形化界面配置,最终实现目标处理器程序代码的自动生成、下载、调试和运行,从而快速地实现音频信号数据采集系统的设计。
关键词: TMS320F28335; 数据采集系统; Matlab/Simulink; 模型化设计
中图分类号: TN912?34 文献标识码: A 文章编号: 1004?373X(2015)21?0011?03
Fast design of audio signal acquisition system based on DSP modeling design
LI Zhiyong, WANG Fei, ZHU Qiang
(Chongqing Key Laboratory of Signal and Information Processing, Chongqing University of Posts and Telecommunications, Chongqing 400065, China)
Abstract: The digital signal controller has the advantages from digital signal processor and microcontroller, which has played the important role in modern automatic control and data acquisition system. TMS320F28335 as the mainstream digital signal controller is widely used in practical engineering. Currently, this processor has the problems of long period program design and complicated program design process. The program development method of DSP embedded system with modeling design can solve these problems better. Taking design a DSP?based audio signal acquisition system as an instance, the graphic interface of the model is configured by combining CCS software with Matlab/Simulink greatly. The automatic generation, downloading, debugging and operation of the program codes in the target processor are realized, and the design of this audio signal acquisition system can be implemented fast.
Keywords: TMS320F28335; data acquisition system; Matlab/Simulink; modeling design
0 引 言
数字信号处理器(Digital Signal Processor)作为一种专用的高性能处理器,在通信、电力、自动控制等领域发挥着举足轻重的作用。工程师进行DSP程序设计时通常使用两种方法:一种是通过建立常规的系统工程,编写程序代码的方式;另外一种是使用半图形化的DSP/BIOS或SYS/BIOS对DSP进行程序设计。第一种方法的设计过程太过复杂,工程师通常都需要查阅大量技术文档才能完成相关控制寄存器的配置。此外,在进行多任务设计时,工程师还要考虑程序的结构问题。第二种方法针对前一种方法的缺点进行了一定改进,减少了一定的程序设计量,工程师也不需要再去组织程序的结构,但还是要大量的编写程序代码,这些现象导致在实际工程应用中,工程设计进度缓慢,设计方法复杂。基于模型化快速DSP程序开发方法的出现使得这类问题得到了解决。
基于模型设计方法是通过将Matlab/Simulink和DSP编程软件有机地结合起来使用。这样,工程师能够在Matlab中的Simulink工具中进行系统原型设计、自动代码生成和嵌入式系统开发。利用这样一种简单快捷的设计方法,工程师不仅可以对系统设计方案进行快速验证,分析方案的可行性,也可以快速对数字信号处理算法进行评估,从而在短时间里完成系统设计、算法构思到代码的实现。这样,工程师就可以将主要精力放在算法的研究,而不是琐碎的程序代码设计上。这就加快了系统软硬件的开发速度,降低了工程师的入门门槛;解决了DSP嵌入式工程师既要有深厚的理论知识积累,又要有熟练的嵌入式编程经验的难题。因此,这样一种基于模型化的设计可以在实际工程设计中被广泛使用。
1 建立音频数据采集系统模型
为了验证这样一种方法,建立了一个音频数据采集系统的模型,以这种快速简单的模型化设计方法来实现这个系统的功能。在开始设计之前需要设置一些环境变量,将CCS软件和Matlab软件有机结合起来,配置的主要工作就是在系统中指定相应软件的工作路径,并设置好仿真器配置文件。
完成了相关的配置之后,打开Matlab的Simulink工具。新建一个名为SAMPLE_SYSTEM的模型文件,选择器件库中的“Embedded Coder”→“Embedded Targets” →“Processors” →“Texas Instruments C2000”,然后选择C28x3x模块,从这个库中添加异步通信接口(SCI)发送模块和模拟/数字信号转换模块(ADC)到模型设计文件中。由于此次设计的系统是一个多点数据采集系统,各个数据采集模块会分开工作,最后共用一个SCI串口将数据上传到上位机,选中“Simulink”→“Signal Routing”,将其中的复用器MUX拖入模型中,通过这个复用器,多个ADC的模块就可以共用一个通信接口于上位机完成通信。
由于F28335的片内ADC采用的数据格式是12位的无符号整型,而SCI接口通常采用的是8位的字符型数据,这两者的数据并不匹配,因此需要对ADC采集到的数据进行一定的处理之后才能交给串口发送出去,而Simulink中并没有现成的模块,但是提供了自定义模块的功能,可以选中“Simulink” →“User?Define Functions”将用户自定义模块添加到系统模型中。通过对这个自定义模块的编辑,实现数据类型的转换,使数据可以被SCI接口正常的接收和发送。
添加所需要的模块之后,将各个模块接口按功能需求连接起来,ADC的三个通道分别连接到了各自的数据类型转换模块的输入口,这些模块的输出口和SCI模块通过复用器MUX进行连接,实际的连接情况如图1所示。
2 系统模型配置
为了实现各个模块的正常工作,需要对各个模块的参数进行配置。这一步的实质其实就是通过图形化的界面完成对DSP相应的控制寄存器的配置;因此,工程师不必再查阅技术文档即可完成相关的寄存器配置。
首先对ADC模块进行设置,将使用的ADC模块设置为ADC_B,并且开启ADC_B的3个转换通道。在这里还可以配置ADC的采样频率和触发方式。在本设计中将ADC采样频率设置为0.000 1 s,将触发方式设置为软件触发。SCI接口的配置和ADC的配置基本类似,这里不再赘述。ADC的配置界面如图2所示。
值得一提的是,在配置ADC时可以选择是否启用DMA(Direct Memory Access)传输ADC采集到的数据。DMA的使用可以使CPU不再管理ADC的运行,也就不需要花费大量的时间等待模/数转换的完成,CPU只在需要使用数据时,才到指定的地址中获得相关数据,这使得处理器有更多的时间去执行其他任务,这种方法在DSP程序设计中被广泛使用。但是,DMA控制器的配置非常繁琐,很多工程师对此只能望而却步,放弃这一对系统性能改善有明显提升的方法。而在基于模型化的设计中,工程师只需选择使用DMA就可以完成DMA的配置,这对提升系统性能和缩短程序的开发周期而言,有着重要的作用。
用户自定义模块的功能是实现数据类型的转换,将ADC采集到的16位无符号整形数据转换成8位的字符型数据,通过编写这个模块的C语言控制程序就可以实现数据类型转换的功能。用鼠标双击这个自定义模块就可以进入这个模块的设置窗口(如图3所示),在这里,工程师可以完成模块功能的设计。该模块将转换完成的数据封装到一个包含了相关信息的数据帧中,从模块的输出口送出。
在实际中,工程师也完全可以根据自己的实际情况,将一些更有效的算法设计成模块,在移植这种模块化的程序时,不做任何修改就可以使用。
最后就是对目标平台进行设置,这里将目标平台设置为TMS320F28335,时钟频率设置为150 MHz,这样就完成了对整个系统的设计。整个过程中,没有对TMS320F28335的任何一个寄存器进行设置,也没有查阅任何参考文档。这样的设计方式无疑是非常实用的。
3 系统实际测试
配置好模型设计文件之后,点击模型设计窗口右上角的建立模型按钮,此时,Matlab就开始编译文件,并将编译过程的相关信息在Matlab的控制台上显示出来,编译结束之后生成一个.OUT可执行文件,将这个可执行文件通过计算机系统的控制台自动下载到DSP芯片中。程序文件下载过程中计算机系统的控制台提示信息如图4所示。
程序下载完成之后,首先将音频信号接到一个音频信号预处理的硬件上,该硬件电路将输入的音频信号限制在0~3.3 V之间,并对输入信号做了抗混淆滤波处理,处理之后的信号就输入到DSP的信号采集接口。然后,将硬件电路的串口和计算机串口连接起来,并打开计算机上的串口监视软件,按照相应的通信协议完成串口的设置。确认设置之后,串口就显示出了接收到的数据,串口监控软件接收到的数据如图5所示。通过数据显示,监控软件不断地接收到采集系统发送来的数据,数据被成功采集到计算机中。
为了更为直观地查看采集到的数据波形,将串口数据监视软件关闭,打开一个串口数据的波形显示软件,就可以显示出采集到音频信号的时域波形。该软件显示采集到的音频信号时域波形如图6所示。由于在测试时只对ADC的A路输入了信号,而其余两路都没有信号输入,所以该软件只显示出了A路信号的时域波形,这与串口数据监视软件接收到的数据是匹配的。这就说明了这种基于模型化的DSP程序快速设计方法是易用可行的。
4 结 论
设计一个基于DSP的音频信号数据采集系统,通常需要编写大量的控制寄存器,而工程师无法记忆这么多寄存器的配置方式,只能查阅数据手册,一旦配置错误,很难再找出问题,这就导致了开发方式效率低下,开发周期长。而使用基于模型化的设计方法,工程师只需要在图形化的对话框中就可以完成相应的配置。这样就可以提高程序的开发速度,降低程序设计的难度。工程师甚至不用编写一行代码就可以实现DSP程序的设计。这种模型化的DSP系统快速设计方法非常适合在实际工作中使用,有着极大的实际意义和推广价值。
参考文献
[1] 陈志英,刘虹,陈飘萍.基于模型的数字滤波器设计及DSP实现[J].厦门理工学院学报,2015,23(1):39?44.
[2] 邓盼,侯志敏.基于DSP模型的快速代码的生成[J].现代电子技术,2015,38(6):142?144.
[3] 王伟,李育挺,马松辉.基于模型的验证与测试技术[J].计算机测量与控制,2013,21(4):987?989.
[4] 侯莹,洪征,潘璠,等.基于模型的Fuzzing测试脚本自动化生成[J].计算机科学,2013,40(3):206?209.
[5] 刘洋,周宇博.基于模型的设计[M].北京:国防工业出版社,2011.
[6] 冷斌,李学勇,刘建华.一种基于Matlab的DSP调试及直接代码生成方法[J].现代电子技术,2008,31(20):68?70.
[7] 梁志强.基于模型的DSP程序设计[J].微计算机应用,2008,29(3):93?97.
[8] Texas Instruments. TMS320x2833x,2823x serial communications interface (SCI) [EB/OL]. [2009?09?15]. http://www.ti.com/lit/ug/sprufz5a/sprufz5a.pdf.
[9] Texas Instruments. TMS320x2833x, 2823x system control and interrupts [EB/OL]. [2010?03?21]. http://www.ti.com/lit/ug/sprufb0d/sprufb0d.pdf.
[10] Texas Instruments. TMS320x2833x, 2823x direct memory access (DMA) module [EB/OL]. [2011?04?11]. http://www.ti.com/lit/ug/sprufb8d/sprufb8d.pdf.