基于DSP的信号采集处理系统
扫描二维码
随时随地手机看文章
0 引言
典型的DSP(数字信号处理器)内部采用改进的哈佛结构和流水线技术,可以在单指令周期内完成乘加运算,具有较高的处理能力。一个典型的基于DSP的信号采集处理系统,通常由DSP、A/D转换器、存储器和相应的接口电路组成,大都做成PCI(外设部件互连)接口插卡形式和主控计算机一起工作。各种控制信息通过PCI发送给DSP,采集处理后的结果再通过PCI接口发送回主控计算机。PCI接口部分一般需要采用接口芯片来完成,这样会显著增加系统的设计调试难度,并使成本增加。而选用本身带有PCI接口的DSP处理芯片就可以省去这一部分额外的电路,不但降低了开发难度,也降低了设备成本。TMS320C6205就是这样一种带有PCI接口的DSP芯片,本文重点讨论基于这种芯片的信号采集处理系统的实现方法。
1 TMS320C6205芯片的技术特点
TMS320C6205是基于TMS320C6000平台的高性能DSP,TMS320C6205源自TMS320C6201 B,一种有新的PCI接口且性能提高的DSP芯片。TMS320C6205工作在200 MHz时的最大处理能力达到了1 600 MIPS(百万条指令每秒)。所有TMS320C6000系列DSP芯片在代码上都有兼容性,TMS320C62x定点DSP都基于相同的CPU核心设计,通过指令的并行性获得了较强的处理能力。该系列DSP芯片具有8个处理单元,包括2个乘法器和6个ALU(算术逻辑单元),所有的处理单元都可以并行工作,因此在每一个时钟周期内最多可以同时执行8条指令。
TMS320C6205和TMS320C6201及TMS320C6201B具有高度的兼容性,这几种DSP芯片在以下几个方面完全相同:TMS320C6205的CPU与TMS320C6201B完全相同,因此为TMS320C6201所写的代码可以不加修改地在TMS320C6205上运行;多通道缓冲串口(McBSP)、时钟、中断选择也完全相同;TMS320C6201与TMS320C6205的内部存储空间也相同,都具有64kB的程序和数据存储区。与TMS320C6201相比,TMS320C6205通过升级具有了更强的处理能力,升级后的TMS320C6205和TMS320C6201有以下不同:
a)EMIF(扩展存储器接口总线)做了简单修改,减少了芯片的引脚数。SDRAM(同步DRAM)和SB-SRAM(同步猝发SRAM)在EMIF上共用了相同的控制信号。这两种信号是互斥的,因此在系统中只能在两种类型的存储器中任选一种。
b)为提高DMA(直接存储器访问)的数据吞吐量,4通道的DMA控制器为每一个通道都配备了专用的FIFO,这样就无需对FIFO信号进行仲裁。
c)用PCI模块代替了TMS320C6201B的HPI(主机接口),PCI模块具有高性能的32 bit主/从PCI即插即用功能,支持33 MHz的桌上电脑PCI接口,与PCI本地总线规格2.2版兼容,该接口模块可作为具有33 MHz、32 bit宽度地址数据的PCI主从对象使用,该模块包含配置寄存器、校验生成、校验和系统错误检测和报告(PERR#,SERR#)以及电源管理能力。
d)具备4线EEPROM串行接口,这样,PCI的控制空间寄存器就可以从外部的串行EEPROM加载配置,PCI模块无需DSP的干涉就可以实现自动初始化。
e)TMS320C6205的PLL有x1、x4、x6、x7、x8、x9、x10和x11等模式,这些模式可以通过CLKMODE0引脚和EMIF数据引脚的上推和下拉电阻来选择。
f)TMS320C6205使用15C05(0.15μm)处理技术,通过电池处理技术提供更低的核电压和功耗。
g)用上推和下拉电阻实现了自举模式配置。
2 信号采集处理系统硬件设计
该系统硬件部分主要由DSP、FPGA(现场可编程门阵列)和存储器构成,具体的硬件结构如图1所示。
3 基于DSP/BIOSⅡ的实时信号处理技术
信号采集处理系统中的DSP不但要实现高速信号处理,还需要处理数据的输入输出和中断请求,这都要用到基本的任务调度和输入输出服务,DSP/BIOS实时基础软件提供了一个小的具有基小运行服务的固件核,开发者可以把这个核嵌入目标DSP中。DSP/BIOSⅡ是性能得到提升的第2代实时基础软件,利用该软件可以缩短实时信号处理软件的开发时间,并且可以显著提高代码的可重用性。
基于DSP/BIOSⅡ使信号处理技术实现起来比较简单,整个配置过程都可以利用一个图形化的界面来实现。首先,新建一个DSP/BIOS的配置文件,然后在"Syetem"文件夹下选择"MEM",也就是存储区管理模块,在该模块增加两个新的MEM项,分别对应信号采集处理系统的SDRAM和Flash存储器,设置好SDRAM和Flash存储器的基地址和长度,至此片外存储区的设置就全部完成了。由于DSP和数据采集部分通过McBSP交换数据,因此还需要对McBSP行设置。找到"CSL"也就是芯片支持库文件夹,在McBSP选项下的McBSP配置管理(MsBSP ConfigurationManager)增加两个新的McBSP的配置控制项,这两个控制项分别对应McBSP0和McBSP1,然后设定这两个配置项的参数,最关键的是接收模式和输出模式的设置,接收和输出均采用无压扩的LSB方式,对于有压扩的话音数据,可以根据需要选择μ律或A律压扩,这样在数据读写的同时,利用DSP硬件也就完成了μ律或A律压扩。McBSP可以实现数据的双向传输,在本系统中只是从数据采集部分读人数据,没有用到其双向数据传输功能。实际上,利用其双向数据传输功能,结合μ律或A律可以很方便地实现话音的实时处理。所有配置都设置完后,将配置文件存盘加入当前工程,整个基于DSP/BIOS的配置便完成,在中断响应函数配合下,就可实现整个实时处理软件的开发。
实时处理软件的数据流如图2所示。从图中可以看出,数据从McBSP通过DMA方式写入SDRAM输入缓冲区,整个输入缓冲区划分成若干片,数据处理部分按片进行处理,由于McBSP写入的数据片与DSP处理的数据片不是同一个数据片,数据处理和数据写入就可以同时进行,这是保证数据实时处理的一个关键。显然,所分数据片数越多,可以有越长的处理时间,越适合进行一些复杂的算法,这样要付出的代价就是输出延时比较长,同时需要大的DSP片外存储空间。数据处理后的结果存放在输出缓冲区,输出缓冲区的大小与输入相同,当输出缓冲区写满后,触发PCI总线中断处理函数,把处理后的结果通过PCI总线写到主机缓冲区,主机程序从该缓冲区将数据读出,存储到计算机硬盘上的制定文件中。
显然,该信号处理软软件中最关键的是McBSP的DMA中断响应函数和PCI中断响应函数,下面分别介绍这两个函数。
DMA中断响应函数的主要代码如下:
从代码中可以看出,DMA中断响应函数最核心的部分是按照给定条件初始化DMA控制器,然后启动DMA通道,开始接收数据。这里的给定条件主要是保证DMA的写入地址符合要求,特别是在循环写入的情况下不致发生地址冲突。DSP与主机缓冲区之间的数据交换也是通过中断响应方式进行的,与通过DMA方式从McBSP读数据不同,PCI接口工作在猝发方式,其中断响应函数在输出缓冲区全部写满后将缓冲区内的全部数据写到主机缓冲区,因此,输出缓冲区无需分片。采用这种方式可以减少PCI接口读写次数,提高数据传输效率。
4 基于多线程的主机处理技术
DSP数据采集处理系统的处理结果需要输出到主机,主机可以对处理结果进行进一步处理。主机程序最关键的部分是要将主机缓冲区的数据读出来,再写到硬盘上的文件中。DSP数据采集处理系统的驱动程序在计算机内存中开辟主机缓冲区,在一台主机上可以允许多个数据采集处理系统同时工作,这时需要同时开辟多个缓冲区。为保证多个数据采集处理系统同时工作,主机在处理时采用了多线程技术,整个主机处理软件利用C++Builder开发,在该开发环境下很容易实现多线程处理技术。
主机处理软件的核心代码如下:
从代码中可以看出,主机多线程处理技术的核心是一个线程执行函数(Execute()),该函数将缓冲区内的数据写到文件中,在多个数据采集处理系统同时工作时,该处理函数以轮循的方式将对应缓冲区的数据写入不同的文件句柄(g_hFiles[i][0]),也就是写入不同的文件,这样就不会在数据写入时发生冲突。
主机程序除了将数据写入指定文件外,还可以控制每一个数据采集处理系统的启动和停止,并具备在线加载并配置DSP程序的能力,用户可以通过修改DSP程序的参数来执行不同的处理任务。所有这些功能都是由该系统的硬件驱动程序提供,该硬件驱动程序已封装成一个库函数,调用起来较为方便。这样,用户就可根据自己的需要开发不同的主机应用程序。
5 结束语
基于TMS320C6205的数据采集处理系统已经在实际应用中获得了良好的效果,特别是该系统可以通过加载不同的DSP处理程序进行不同的数据处理,大大拓展了该系统的应用范围,充分体现了基于DSP的数据采集处理系统在应用上的灵活性。同时,由于多个采集处理系统可同时工作,整个处理系统可以适合不同应用场合的需要,可以胜任不同处理能力的需要。