|
摘要:链路DMA是在处理器内核不干预的情况下,后台利用链路口高速传送数据的一种机制。TS101是高性能浮点数字信号处理器,它有8个链路DMA通道,可以在内部/外部存储器和链路口之间、链路口与链路口之间进行多种类型的DMA传输。文章介绍了链路DMA及其在雷达信号处理系统中的实际应用。
关键词:TS101;链路DMA;TCB;转发
1 引言
雷达处理过程中大量复杂信号的处理算法要求信号处理机具有每秒超过百亿次的浮点运算能力,如此高的速度在目前的技术条件下无法用单片DSP实现,需要采用多片并行处理技术才能满足处理速度的需求。TS101处理器是Analog Devices公司推出的一种新型高速实时数字信号处理芯片(DSP),其峰值运算能力可达18亿次/秒。TS101采用改进的静态超标量流水结构,适用于构成各种不同的并行多处理器系统,可以较好的满足雷达信号处理的要求。在多片DSP组成的并行系统中,链路口应用得到了越来越多的重视,各DSP间可通过链路口互连解决多处理器之间共同占用总线所产生的数据通信瓶颈问题,增强处理器之间的通信能力。链路DMA(Direct Memory Access)是在处理器内核不干预情况下的后台高速数据传送机制,其传输方式灵活,不占用内核的处理时间,因而在雷达信号的并行实时处理系统中尤为重要。本文对TS101中链路口的DMA传输方式进行了探讨。
2 TS101的链路口及链路DMA传输
2.1 链路口
TS101是高性能128bit浮点数字信号处理器(Digital Signal ProcessorDSP)有四个链路口。每个链路口由发送器和接收器两部分组成,每部分都有一个128bit的移位寄存器和一个128bit的缓冲寄存器,其结构如图1所示。每个链路口均有8bit数据线和LxCLKIN、LxCLKOUT和LxDIR(x为链路口序号0~3)三个控制引脚,可支持多片TS101处理器间点对点的双向数据传送。其中LxDIR 用来指示链路口的数据流向。LxCLKIN和LxCLKOUT为链路口的时钟/确认握手信号。数据发送时,LxCLKOUT为时钟信号,LxCLKIN为确认信号;数据接收时,LxCLKIN为时钟信号,LxCLKOUT为确认信号。发送数据时,首先传输四字数据到链路发送缓冲寄存器LBUFTx,再将其复制到移位寄存器(若移位寄存器为空,此时LBUFTx可被写入新的数据),然后以字节的形式发送出去(先发送低字节),每个字节在链路时钟的上升沿和下降沿被驱动和锁存(SHARC系列DSP只在一个时钟沿驱动数据)。接收器的移位寄存器为空时,系统将开始接收发送方传输的数据并将其送入移位寄存器,同时驱动LxCLKOUT为低。当整个四字到齐后,如果接收缓冲寄存器LBUFRx为空,系统会将四字数据从移位寄存器复制到LBUFRx,并在数据被取走后驱动其LxCLKOUT为高,以告诉发送方接收缓冲寄存器为空,可以准备接收新数据。发送方检测到LxCLKIN为高后立即进行下一次传输。所有的链路口都可用于TS101处理器的引导(SHARC系列只固定某个链路口引导)。然而应当注意:TS101处理器的链路口与SHARC系列的DSP是不兼容的。
2.2 链路DMA
链路DMA是在处理器内核不干预的情况下,后台通过链路口高速传送数据的一种机制。TS101有4个链路口,每个链路口有两个DMA通道(一个接收DMA通道和一个发送DMA通道),图2所示是TS101中DMA控制器的示意图。利用TS101的片上DMA控制器能通过8个专用的链路DMA通道进行各处理器间多种类型的DMA传输。
要利用链路DMA在各TS101处理器之间进行通信,必须对链路口及其DMA寄存器进行正确的设置。其一般过程为:设置链路控制寄存器LCTLx(SHARC系列DSP一旦设置该寄存器就启动DMA)使能链路口x接收或发送,写链路DMA的发送或接收TCB(传输控制块)寄存器DCy(其中y=4~11,当y=4~7时,DCy分别为链路口0~3的发送DMA通道TCB寄存器,当y=8~11时,DCy分别为链路口0~3的接收DMA通道TCB寄存器),同时启动DMA。TCB寄存器是一个128位的寄存器,它包括四个32位寄存器,分别为DI、DX、DY和DP,DI是传输数据的起始地址;DX包括两个16位寄存器:地址修正寄存器和传输数据个数寄存器;DY与DX寄存器相同,可用于二维DMA,在一维DMA传输时,可将其设置为零;DP用于控制DMA传输方式。链路DMA传输可由TCB DP寄存器的TY域定义。DMA数据传输结束会产生相应的链路DMA中断。如果该中断没有被屏蔽,也可以进入中断服务程序(其入口地址存放在中断向量寄存器IVDMAy中)以完成其它功能。
链路DMA传输主要有以下两种形式:
(1) 链路口与内/外部存储器之间的数据传输
从链路口向内/外部存储器传送数据,实际上是在链路口接收数据,再把接收到的数据存储到内部或外部存储器中。因此必须编程接收TCB块。一旦DSP的链路口接收到数据,它将请求内部总线启动一个DMA传输。
从内/外部存储器向链路口传送数据,实际上是链路口从内部或外部存储器读取数据,再把数据由链路口发送出去。因此必须编程发送TCB块。DMA启动后,一旦链路缓冲器不满,它将向内部或外部存储器请求数据。这时,如果DMA可以占用内部或外部数据总线,那么,系统便可将数据从存储器传送到链路口并发送出去。 |