基于dMAX的C6727B并行数据传输设计

2010年04月13日 10:29    发布者:李宽
引言

DSP(数字信号处理器)和FPGA(现场可编程门阵列)一直是数字信号处理的两个核心处理单元。目前的无线通信、图像系统、语音系统都是以这两类芯片为核心,配置必要的外围电路来组成整个系统。 DSP的主要优点是算法处理能力强,而FPGA的主要优点则是并行处理。随着电子技术和芯片技术的发展,DSP和FPGA逐渐融合,目前一般的FPGA芯片都提供数字算法处理IP核,可以在FPGA上完成FFT、滤波等传统意义上属于DSP的工作。这些核的主要缺点是算法固定,只提供成熟的算法,算法处理的灵活性较低。经过长期的发展,DSP的片内外设逐渐丰富,但一直很难触及FPGA的并行处理。

TI公司推出的C6727B芯片其片内集成了最新的dMAX(Dual Data Movement Accelerator,双向数据传输加速器)模块,使得并行数据传输成为可能。其实现并行数据传输的本质就是相当于在片内集成2个EDMA(En— hanced Direct Memory Access,增强的直接存储器访问)模块,实现数据在无需CPU参与情况下的并行双路传输。本文以HPI和EMIF接口的数据传输为例,介绍dMAX的结构、配置及其使用方法。

1 dMAX及其结构

C6727B是在C671x基础上发展的浮点型DSP,其最高工作频率达到350 MHz。单个指令周期可以执行6个浮点数据运算,最高达到2 100MFLOPS;片内具有256KB的RAM,片内外设有。EMIF、UHPI、音频串口、dMAX、定时器以及I2C、SPI接口等。

dMAx模块是C672x系列DSP所特有的数据传输模块,可以实现内部存储器、片内外设和外部存储器两两之间的数据传输。其内部结构如图1所示。



从图中可以看出,dMAX主要由事件和中断处理模块、事件编码器、事件参数表、事件的地址生成硬件等组成。事件模块分成高优先级和低优先级两个相互独立的模块,各自有独立的事件入口和事件参数表,和CPU有独立的接口,使得dMAX可以同时处理两个不同的事件。当访问CPU端口时,MAX0的优先级高,MAXl的优先级低。

dMAX可以使用户定义的数据在内部数据存储器与外设之间移动,dMAX能够移动数据到任意能够寻址的存储器空间,包括内部存储器、外设存储器空间、扩展内存。dMAx能够同时处理2个数据转移请求,而且dMAX能够通过执行先进的一维、二维与三维数据的存储器传输工作,从而使DSP得以专注于信号处理任务,显著提高系统性能,适合图像的子帧提取或者语音信号的子信道提取。

为了方便CPU直接控制dMAX,C6727B还有2个专门的寄存器负责CPU与dMAX的通信,分别为DETR与DESR寄存器,CPU通过对这两个寄存器的读写就可以控制dMAX的操作。

2 系统硬件结构

C6727B和其他DSP有一个较大的区别就是,C6727B不再提供专门的外部中断引脚,而是使用一些GPIO引脚与dMAX配合使用,通过寄存器的设置将GPIO引脚配置成外部中断引脚。为了实现并行的数据传输,需要使用2个外部中断引脚。为此,使用C6727B的音频串口的AXR和 AXR作为通用I/O引脚,同时需要将音频串口的CONFIGMCASP0和CONFIGMCASP1分别配置成Ox0001和0x0002,如图 2所示。此时音频串口不能再作为普通的音频口使用,而是配置成I/0接口。

从图2可以看出,配置好音频串口后,一旦AXR和AXR引脚有上升沿到,则McASP0和McASP1激活dMAX的事件26和事件27。这两个事件分别连接到dMAX的低优先级和高优先级模块。即使两个中断同时发生,dMAX也可以同时响应事件,并处理相应的数据传输。



为了实现并行数据传输,必须将事件26的参数设置成与EMIF接口通信,同时需要将传输数据的源地址,目的地址,数据个数和数据增加方式(不变、加1、减 1等)在初始化时写入dMAx(Lo)的参数中。这样,一旦事件26触发,dMAX(Lo)将自动传输数据;数据传输结束后,可以根据需要将 dMAX(Lo)配置为向CPU发送内部中断14。同样,对于事件27,配置dMAX(Hi)的参数就可以完成对HPI接口的数据传输,也可以根据需要将 dMAX(Hi)配置为向CPU发送内部中断13。

McASP与中断相关的寄存器配置是实现以上方案的重点,其中断配置框图如图3所示。从图中可以看出,使用PFUNC寄存器将其配置成通用I/0引脚;PDIR寄存器控制I/O引脚的方向,若是输出引脚则由POUT引脚输出高低电平,若是输入引脚则由PDIN寄存器读出该引脚的状态;此外,可以使用 PDCLR和PSET寄存器清除或者设置输出引脚的状态。



3 系统软件设计

系统软件设计主要包括McASP、dMAX、HPI和EMIF的初始化,以及中断使能等。系统主程序只需要等待中断进行相应的处理,主要的数据传输工作都是由dMAX按照软件配置自动完成,不需要CPU参与。系统软件流程如图4所示。图中,虚线部分表示由dMAX独立完成的工作,实线部分表示由CPU完成的工作。两者之间通过内部中断方式实现状态的交流。



当有2个以上传输事件发生,尤其是多个事件都在同一个dMAX优先级完成时,事件仲裁就变得很重要。图5是多个dMAX事件进行数据传输的例子。图中,事件A为dMAX(Hi)数据传输;事件0~2为dMAX(Lo)数据传输。在dMAX(Lo)中,设定事件O优先级最高,事件2优先级最低。



事件A和事件0同时发生,将分别触发dMAX(Hi)和dMAX(Lo)进行数据传输。在之后的时钟周期内,dMAX(Hi)不再有其他事件发生,将稳定、持续地进行事件A的数据传输,直到传输结束,如图5中最后一行所示。

对于dMAX(Lo),在传输了事件0的一个数据后,事件2发生。虽然事件2的优先级低于事件O,但dMAX(Lo)仍然会响应事件2,并且会传输一个事件2的数据,如图中第5行的E2/QO。此时,dMAX(Lo)就存在2个激活的事件——事件O和事件2。之后的数据传输dMAX(Lo)进行优先级判断,将优先传输事件O的数据,而将事件2挂起,直到事件O结束后才开始处理事件2的数据传输。

4 总结

dMAX使用2路独立的传输通道从而实现并行数据传输,其本质是采用了独立的物理通道,这与FPGA实现并行处理基本一致。本文介绍了基于C6727B的 dMAX的基本结构以及软硬件设计,使用事件优先级控制区分多个事件的数据传输。由于可以并行传输数据,使得DSP与外部设备的通信更加方便和快捷,而且不需要CPU的参与,减轻了CPU的负担,使CPU可以专注于复杂的算法处理。

参考文献

   1. 汪安民.张松灿.常春藤 TMS320C6000 DSP实用技术与开发案例 2008
   2. Texas Instruments Inc TMS320C672x DSP Dual Data Movement Accelerator (dMAX) Reference Guide 2007
   3. Texas Instruments Inc TMS320C672x DSP Multichannel Audio Serial Port (McASP) Reference Guide 2008

作者:国营第713厂博士后工作站 陈向明  汪安民
来源:单片机与嵌入式系统应用  2009 (2)