EDN China > 设计实例 > 微处理器与DSP > DSP应用 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 一种新型DSP(TS101)中的链路DMA研究

2011年11月22日 ?? 收藏0
1 引言

雷达处理过程中大量复杂信号的处理算法要求信号处理机具有每秒超过百亿次的浮点运算能力,如此高的速度在目前的技术条件下无法用单片DSP实现,需要采用多片并行处理技术才能满足处理速度的需求。TS101处理器是AnalogDevices公司推出的一种新型高速实时数字信号处理芯片(DSP),其峰值运算能力可达18亿次/秒。TS101采用改进的静态超标量流水结构,适用于构成各种不同的并行多处理器系统,可以较好的满足雷达信号处理的要求。在多片DSP组成的并行系统中,链路口应用得到了越来越多的重视,各DSP间可通过链路口互连解决多处理器之间共同占用总线所产生的数据通信瓶颈问题,增强处理器之间的通信能力。链路DMA(DirectMemory Access)是在处理器内核不干预情况下的后台高速数据传送机制,其传输方式灵活,不占用内核的处理时间,因而在雷达信号的并行实时处理系统中尤为重要。本文对TS101中链路口的DMA传输方式进行了探讨。

2 TS101的链路口及链路DMA传输

2.1 链路口

TS101是高性能128bit浮点数字信号处理器(DigitalSignal 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传输。

TS101中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传输可由TCBDP寄存器的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所示。

系统连接方式

程序


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

雷达? 链路DMA? 处理器?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈