一种新型DSP(TS101)中的链路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 Processor?DSP)?有四个链路口。每个链路口由发送器和接收器两部分组成,每部分都有一个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可以占用内部或外部数据总线,那么,系统便可将数据从存储器传送到链路口并发送出去。
接收(发送)TCB的程序配置将在本文稍后进行说明。
(2)从一个链路口向另一链路口传输数据
通常,SHARC系列的DSP用链路口传输数据时,发送和接收链路口分别在两个DSP上。其中作为发送方的链路口编程发送TCB,作为接收方的链路口编程接收TCB。但对TS101而言,发送和接收链路口可以设在同一片DSP上,从一个链路口向另一个链路口传送数据时,如链路口a把接收的数据送向链路口b。应把a的接收TCB寄存器的DI设置成b的链路发送缓冲寄存器的存储器映射地址,再把DX设置成0。a收到数据后,由DMA请求内部总线开始传输,将数据从请求DMA服务的链路口a传送到链路口b。这种链路口间的数据传送方式大大减轻了片内存储器的负担,因为它不占用中间节点处理器的片内存储资源就把数据传送出去了,这种TS101特有的链路传输方式比SHARC系列DSP应用更灵活。如果链路传输的数据在内存中不是一段数据,而是多段数据,也可以用链式DMA或二维DMA进行传输,限于篇幅,本文不作详述。
2.3 链路DMA程序举例
下面给出链路口与内部存储器之间进行DMA传输的参数设置及传输过程。该程序段先让数据从链路口0传送到内部存储器,等传完后,再把数据从内部存储器传送到链路口0的DMA。其系统连接方式如图3所示。
.section program;
……………… // 设置IMASK寄存器,打开或关闭相应中断
j0 = j31+_dma_int;; // dma int为中断服务程序入口
IVDMA4 = j0;; // 如需要应用DMA完成中断,则设置DMA中断矢量寄存器,存放
IVDMA8 = j0;; // 中断服务程序入口地址,IMASK中也应打开相应DMA中断
xr8 = N;; // 传输数据值
xr9 = lshift r8 by 16;;
xr10 = 4;; // 步长
xr4 =link_data_rx;; //目的地址
xr5 = r9 or r10;; // 00000000001000000000000000000100
xr6 = 0x00000000;; //非二维DMA,设为零
xr7 = 0x47000000;; // 设为内部存储器与链路口之间的传输
xr0 = 0x000004DA??
LCTL0 = xr0;; // 设置link0控制位,始能链路的接收和发送,同时清空链路缓冲
DC8 = xr7:4;; // 启动 Link0接收DMA通道8
idle;; // 等候中断
xr4 = link_data_rx;; // xr4:内部存储器中的源指针
DC4 = xr7:4;; // 启动Link0发送DMA通道4
idle;; // 等中断
…………
3 链路口DMA的应用
以下以某雷达信号处理系统为例,具体讲述链路口转发功能的应用,其系统框图如图4所示。
3.1 硬件设计
雷达信号的实时性和连续性要求处理系统应具有较高的数据处理能力。所以设计时采用多片DSP来构成并行处理系统以提高系统的数据处理能力。同时为了保证系统的数据吞吐能力,采用了数据入口和出口分开的方法,并选用TigerSHARC系列DSP TS101作为处理系统的核心单元,系统中的各DSP分别用于接收处理位于不同时间段的雷达回波信号。为了使各DSP协调工作,DSP之间的通信是必不可少的,本系统采用共享总线的分布式结构使各DSP之间可采用多种途径进行通信。其系统框图如图4所示,这里只对“母板模块”链路的应用进行详述。
为了信号处理板的通用性和灵活性,设计时用四片DSP组成共享总线结构子板。各DSP间用链路口点对点环形相连,并将各信号线通过PMC插槽引出与母板通信,图5是其硬件框图。母板上放置两块子板,两块子板用子板各DSP剩下的链路(TS101有四个链路口)互连,留出一个链路口以备它用?与定时接口板和AD板通信?。母板用CPLD进行逻辑控制,并用FIFO进行数据缓冲。A子板以中断触发方式轮流接收AD采样数据,4片DSP以轮转方式对每个发射脉冲的回波信号进行脉压处理。由于前端AD送来的数据频繁占用总线,因此链路口间的DMA传送为各DSP间的通信提供了极大的方便。由于系统处理时间限制,A子板上各DSP需将每个脉冲脉压后的结果按时间分成四段,并通过链路口送往B子板中的各个DSP,B子板各DSP集齐所需处理的脉冲数后会同时完成各距离门的MTD处理。由于本系统处理的数据量比较大,在两块子板间传输数据时,不希望增大每个链路传输的压力(以A1为例,不希望A1将数据全部传送到B1,再由B1分发给B2、B3和B4),转而借助不同的DSP将数据转发到B子板各DSP(仍以A1为例,它处理的各脉冲的前两段一部分经B2转发给B1,一部分留给B1;第三段经A4转发给B3,第四段经A2转发给B4)。此时,利用链路口的转发功能,数据包就可在该网络状多DSP系统中不间断地传输,而不占用中间DSP节点的存储器资源,从而减轻了链路压力,同时也为数据传输的稳定性和实时性提供了保障。
3.2 软件设计
以A1经B2转发到B1为例,假设A1的链路口1与B2的链路口2相连,B2的链路口3与B1的链路口0相连(此处链路连接方法只为说明链路转发程序的设置,实际系统中此种方法的编程十分复杂)。在软件设计时,由A1设置发送TCB寄存器,启动内部存储器到链路口的DMA,然后通过DMA通道5发送数据;由B1设置接收TCB寄存器,并启动链路口到内部存储器的DMA,并通过DMA通道8接收数据;B2只需设置接收TCB寄存器,同时启动链路口到链路口之间的DMA,通过DMA通道10接收A1传出的数据。此时要注意的是,B2的TCB寄存器的DI域必须指向B2链路口3的链路发送缓冲寄存器在存储器中的映射地址(0x1804B8),并将DX域设置为零,将DP的TY域设为001。
图5
另外,在DMA的传送过程中,接收DSP DMA通道不能比发送DSP DMA通道晚打开一定的时钟周期,否则会出现丢数或错数。为避免出现此种现象,可利用B2的链路口2中断启动B2的DMA。具体方法如下?先由A1启动DMA,当B2的链路口2的接收缓冲寄存器收到前端发来的四字数据后产生链路口中断并进入中断服务程序,再在中断服务程序中写通道10的TCB寄存器,同时启动接收DMA,当DMA通道10激活后,链路口2中断消失,接着再应用DMA中断服务程序清空链路缓冲,以便下一处理周期能够应用该中断,从而正确接收数据。
4 结束语
本文介绍了TS101的链路口及链路DMA传输,阐述了链路DMA的设置,同时结合实例说明了其特有的链路转发功能和应用方法。工程实践表明:在并行多TS101系统中,充分利用链路口特性可保证数据传输可靠性,同时又可以解决多处理器之间共用总线所产生的I/O瓶颈问题,因此,增强了各处理器间的通信能力,提高了系统的整体运行效率。