基于TMS320C6201的多通道信号处理平台
2006-05-07 来源:电子技术应用
摘要:在VOIP和ModemPool等许多新的应用发展的今天,多通道处理技术越来越受到重视,它不仅表现在算法研究上,而且也表现在系统实现上。结合在Smart Gateway方面的工作,提出了一个基于TMS320C6201的多通道信号处理平台的结构,并详细阐述了软硬件的组成。
关键词:多通道信号处理 TMS320C6201 处理平台
随着因特网的发展,产生了Voice Over IP、Fax OverIP和Modem Pool等许多新的应用,它们都强调多通道的数据处理。传统意义上的多通道处理是将多路的单通道处理并行安排。现在的DSP芯片的运算速度越来越快,以时钟为100MHz的TMS320C549为例,如果用它完成G.729A的编解码,一片可以支持5~6路。因此,假如我们采用高速DSP芯片来充当信号处理的核心的话,一片高速芯片可以替代以前的几路,使得原有的多通道处理系统可以大大地简化,在硬件上的开销减小。
1 TMS320C6201的结构和性能
由美国TI公司生产的TMS320C6201处理器[1]硬件资源丰富,主要由三大部分组成:CPU、外围设备和存储器。
C6201的地址总线为32位,所以寻址范围达到4GB,其存储器空间可分为四部分:片内程序空间可以用作Cache、片内数据空间、外部存储空间和内部外围设备空间。可通过对五个BOOTMODE引脚的设置灵活设定各空间的地址范围。片内数据RAM包括四个8K×16的块,这些块交织在一起,使得CPU可同时访问数据RAM的两个不同块而不会发生冲突,提高了数据并行读写的能力。对于较大的程序,片内程序RAM可当做Cache来存储经常使用的代码,减少对片外访问次数,从而提高程序运行速度。
与常见的芯片不同,C6201有八个功能单元,分为两组,每组包括一个乘法器Mn和三个算术逻辑运算单元DnSnLn。它们分别进行乘法运算、加减运算、线性和环形地址计算以及算术逻辑运算。因为输入输出端口相互独立,所以8个运算单元可实现并行处理。每组运算单元对应一条数据路径,可以用作环形地址计算。
TMS320C6201的外围设备包括DMA控制器、主机接口HPI、中断选择等。DMA控制器允许数据传输在CPU操作的后台进行,因此C6201可与外部的低速设备接口而不降低CPU的吞吐量。C6201的DMA控制器有四个独立的可编程通道,可以进行四个不同的DMA操作,每个通道可根据需要传输8位、16位或32位的数据。此外,还有一个辅助通道用于响应HPI的服务请求。主机接口使得主机设备能够直接地访问CPU的存储空间。TMS320C6201可通过引脚BOOTMODE40设置多种BOOT方式,例如直接执行方式,或从外部EPROM、主机等设备装载程序。C6201允许14个中断,包括Reset、不可屏蔽中断、串行口中断、定时器中断和外部中断。CPU通过监测IACK引脚判断中断请求,引脚INUM0~INUM3标识应该服务的中断矢量位置。
TMS320C6xx的两个多通道带缓存的串行口,与TI公司生产的其他DSP C2xC2xxC5xC54x相同,具有支持全双工通信,双缓存数据寄存器结构支持连续数据发送,收发时钟独立等特点。除此之外,它还有支持多种数据格式8bit、12bit、16bit、20bit、24bit、32bit的传输,A律和μ律压扩,时钟或帧同步的编程设置和极性控制,接口方便等优点。C62xx有两个32位的定时器,主要用于时钟中断、DMA控制器同步、事件计数等,它可由外部或内部提供时钟。
2 平台的硬件构成
由于TMS320C6201具备很强的运算能力,因而我们可以以它作为运算核心建立一个基于PCI总线的多通道信号处理的平台,其硬件结构如图1所示。它包括输入/输出接口、并行的C6201芯片组、SDRAM、PCI总线控制和主机等五部分,每一片C6201可看作一个多通道处理子系统。输入/输出接口负责多路数据的A/D和D/A,并且有一定的复用和解复用能力;C6201用于信号处理和数据的接收/发送(至输入/输出接口);SDRAM存放接收/输出的数据和通道上下文相关数据;PCI总线控制主机与C6201芯片组的通信;主机负责获取处理后的数据以及发送其本身采集的数据。
当处理程序目标代码小时,可选用Boot方式将程序全部装入片内;而当代码太长时,可选用cache模式,将片内程序空间设为cache,程序放在片外的SDRAM或其它外设中。运行时程序根据CPU需要部分装入。在使用cache工作方式时,CPU的工作效率约为90%。
输入的数据先经解复用,然后分别发给C6201。C6201通过DMA通道自动接收数据,并且将数据存放在SDRAM中。在接收的同时DMA也将数据输出到输入/输出接口。当一帧数据接收完毕,外部缓存DMA产生一个中断信号,通知C6201、C6201在接收到中断信号后,更新其设置,即切换输入数据的目标地址和输出数据的源地址。与此同时,C6201也启动信号处理模块,对接收的数据通道逐个地进行处理。当然,在处理前需将该通道上下文相关数据从片外SDRAM搬移进片内,处理完后再将其搬移出去。在处理当前通道时,DMA还将同时将下一通道的上下文相关数据搬移进来。如此循环,直至所有通道都处理完毕。
SDRAM存放接收和发送数据至少需要分配两个段,一个段用于当前外部缓存DMA使用,一个段用于内部搬移DMA使用。
主机通过PCI总线对C6201芯片组的HPI进行访问,其访问方式设为DMA方式。之所以采用PCI总线是为了保证高速的数据传输。作为PCI总线和HPI桥梁的总线控制器可以有很多选择,以S5933为例,由于S5933与串行EEPROM可无缝连接,所以其初始化可在上电时由EEPROM自动载入。它有五个基址寄存器,它们可分别服务于PCI控制器的寄存器、JTAG测试总线控制器、平台的控制和状态寄存器以及C6201的HPI。PCI总线上的数据可通过S5933的mailbox寄存器、FIFO或直通数据通道等多种方式灵活地与平台实现数据的交换,为基于主机的调试提供了良好的硬件基础。
通过对整个系统的工作原理的描述中可以看出,在信号处理算法的运算速度得到保证后,整个系统的瓶颈将是C6201的DMA资源。在硬件开销允许的情况下,使用快速的外设会提高系统的性能。
3 平台的软件设计
根据上面介绍的硬件结构,可以根据不同的需要设计相应的系统软件,以下仅介绍一种可靠性较高的软件结构。
鉴于TMS320C6201的高速运算能力,所以在每块芯片内部均采用线性结构,依照某种顺序依次处理各通道的信号。芯片内部的数据RAM分割出两块空间当作处理信号缓存,即用作ping-pong缓存,一块用作当前处理,一块用于后台数据搬移。处理后的数据可视占用RAM的大小,适当地安排在片内或片外,便于HPI访问。
整个软件采用中断同步式控制,利用输入信号所产生的中断来触发信号处理模块的运行,中断信号可以是一帧信号的结束(或开始)。其结构如图2,系统在进行完初始化后,立即进入同步信号等待。当检测到中断信号后,表明一帧信号接收的结束,首先关闭中断,随后进行外部存储的DMA通道设置的更新,切换输入信号的缓存。然后,检测控制内部数据搬进的DMA状态,如果搬移完成,更新DMA设置,即切换处理信号的ping-pong缓存,通知存储器接口控制单元开始搬移下一路信号的数据。如果当前处理的是最后一个通道,则内部数据搬进DMA设置为下一帧第一通道。接着进行信号处理模块,在当前通道信号处理完成后,首先设置内部数据搬出DMA,将当前通道的上下文相关数据搬移到外部存储器中保存,然后再检测是否所有通道处理结束。若没有,则跳回内部数据DMA状态检测;若结束,则进行系统状态的更新。系统状态更新完成后,打开中断,进入中断信号等待。
这样的结构看来不够灵活,而且仅用到了一个中断资源,似乎是大材小用了,为什么不增加DSP对外界的响应且一直打开中断呢?实际上这是有一定道理的。之所以将HPI的访问方式设置为DMA方式,而只使用一个外部中断。完全是为了让DSP将主要时间花在信号处理上,且尽可能地减少DSP被频繁的数据输入输出打断。其原因有四点:第一,为加快信号处理算法的速度,尽可能地对循环进行流水线规划,CPU运行至下次时,由于跳转指令的频繁出现,根本无法相应中断;当循环次数较大时,无法保证中断的及时响应。第二,如果将循环改为可中断式的,势必造成寄存器资源使用过大,代码的效率也将大幅度下降。第三,汇编语言编写的程序大多都在不同程度对CPU的流水线时序有要求,即寄存器对流水线时序敏感。若任意时间均要响应中断的话,必将造成软件产生不可预测的错误,出现混乱。第四,由于汇编语言编写的程序代码效率一般比优化后的C语言高50%,所以为提高运算速度,核心算法都用汇编语言编写,一些寄存器的值都与C语言模块中的不同[2],如B14(DP)、A15(FP);而高层调用和中断服务程序一般都用C语言编写,如果在任意时刻响应中断,很容易造成C语言中断服务程序的变量无法正确访问,出现致命错误。综上所述,中断同步式结构稳健性更强。
在多通道处理中还应注意一个问题,即全局指针的重定向3。因为高层调用用C编写,以及通道数不确定等因素,一般情况下,很难保证同一通道的上下文相关数据每次均被放在同样的内存位置上,因而上一帧时保存的全局指针变量的数值对当前帧不一定适用,所以对全局指针的重定向是必要的。
以上分析了C6201芯片组的工作方式,而主机与它们的通信是通过HPI对C6201存储器访问来完成的。在C6201片内RAM开出一段数据空间作为系统信息区,当C6201完成了一次多通道处理后,便在系统信息区中设置帧处理结束标志,并将处理后数据的存放地址和主机下载数据的存放地址写入系统信息区的相应位置。主机通过对各个C6201系统信息区的访问了解其工作状况,当发现某一块DSP一帧处理完成后,立即清除帧处理结束标志,并从系统信息区中给出的处理后数据的存放地址读取数据到硬盘(或其他设备)进行存储(或处理),而且将待处理的数据搬移至主机下载数据的存放地址,以便C6201下一帧处理使用。当然,主机除了数据搬移和控制功能外,还可根据实际的运算能力和工作负荷,再增添一些功能。
4 展望
Radysis、Bluewave等公司基于C6000系列的多通道处理设备采用了与上述平台相似的结构。以VOIP的网关为例,本地电话的语音信号先传送到交换局,局内的复用设备(对应平台的输入/输出接口)根据C6201的处理能力分配相应的话路。C6201对原始语音信号进行压缩,压缩后的数据通过主机读取到网络处理区,交给网络处理设备进行打包处理,最后以IP方式传送到目的端。另一方面,网络处理设备拆包后的压缩码流通过主机传送到C6201控制的局部存储区中,经解压后由DMA发送至复用设备,最终由交换局送至本地电话。
除了VOIP的智能网关和Modem Pool外,多通道处理的概念还可以延伸至雷达处理、多路数据采集、多路图象监控4等更为广泛的领域中。在多媒体和因特网技术日新月异的今天,基于相同类型信号的多通道处理可进一步拓展为基于不同类型信号的多通道处理,因而研究多通道信号处理平台有着很大的实际意义,它将成为新一代智能化多媒体终端的雏形。