基于McBSP的双DSP间高速通信
TMS320C6000系列(以下简称C6000系列)DSP是美国德州仪器(TI)公司近年来推出的高端产品,因其性能优良,编码效率高,性价比好等诸多优点,被广泛的用于数字图象处理,通信基站,雷达信号处理等领域。在实际的使用中,因为数据吞吐量太大,很多时候单片DSP无法满足系统设计的要求,需要将两片或多片DSP进行互连,于是研究DSP间的高速通信就显得尤为重要。本文介绍了利用McBSP来实现C6000系列DSP间高速通信的软硬件设计和实现。
1. 多通道缓冲串口(McBSP)的功能和特点
多通道缓冲串口(McBSP)是TI公司标准串口的增强版本。功能强大的C6000系列的McBSP是基于TMS320C2000和C5000系列的标准串口之上的。其内部框图如图1所示。它具有如下功能和特点[1],[5]:
全双工通信;
双缓冲数据寄存器,支持连续的数据流;
独立的接收、发送帧和时钟信号;
可以直接与工业标准的编码器,模拟接口芯片和其他A/D,D/A器件通信连接;
具有外部移位时钟发生器及内部频率可编程移位时钟;
发送和接收通道数多达128路;
支持宽范围的数据格式,包括8,12,16,20,24,32位字长;
利用 律或A律压缩扩展通信;
帧同步和时钟信号的极性可编程;
可编程内部时钟和帧同步信号发生器等。
图1 McBSP的内部框图
数据通过数据发送引脚(DX)和数据接收引脚(DR)与连接到McBSP的器件进行通信。时钟形式并且帧同步的控制信息通过CLKX,CLKR,FSX和FER通信。外围器件通过32位控制寄存器与McBSP通信。CPU或者DMA控制器从数据接收寄存器(DRR)读取接收的数据,而把要发送的数据写入数据发送寄存器(DXR)。写入DXR的数据通过发送移位寄存器(XSR)输出到DX引脚[2]。相似地,在DR引脚接收到的数据先进入接收移位寄存器(RSR),然后拷贝到接收缓冲寄存器(RBR)。RBR然后再拷贝到DRR,DRR中的数据才能被CPU或者DMA控制器读出。这样就允许内部数据移动和外部数据通信同时进行。还有其他一些CPU可访问的寄存器用来配置McBSP的工作机制。
2. 硬件接口
C6000系列DSP的多通道缓冲串口(McBSP)可以和其他C6000系列DSP芯片的多通道缓冲串口(McBSP)进行高速互连。为了达到最高的数据传速速度,其中的一片DSP必须同时作为时钟信号和帧同步信号的发生器,换句话说,作为发送端的McBSP在发送数据传输时钟信号的同时也发送帧同步信号,而作为接收端的McBSP只能等待主片发来的这些控制信号。图2是硬件系统的设计框图[3]。DSP0的McBSP0被配置成时钟信号和帧同步信号的发生器,即主片;而DSP1的McBSP1被配置成只能被动的等待这些控制信号。
图2 最大传输速度下的硬件互连框图
图3是C6000系列双DSP的McBSP间传输数据的信号时序图。在该时序图的例子中,DSP0的McBSP0的时钟信号频率采用其CPU主频的一半。当主片产生时钟信号和帧同步信号的同时,CLKX和FSX编程配置成输出。因为在数据最大传输情况下,不支持零数据的延迟,所以FSX引脚输出的第一个数据是非零值。在该时序图中,RCR和XCR寄存器的(R/X)DATDLY都被配置为1。图3中CLKX和FSX为主片引脚,CLKR和FSR为从片引脚。
图3 McBSP间最大传输数据时的时序图
3. 软件实现
用McBSP实现C6000系列双DSP间的高速通信软件设计[4]需分别对主机DSP0和从机DSP1进行编程。软件设计的重点是对McBSP相关寄存器的设置,以使其工作在最高数据传输速度模式下。表1列出了高速通信模式下需要配置的寄存器的位段,未列出的寄存器位段采用系统默认值。
表1 高速通信模式下需配置的寄存器位段
寄存器[位段]
位段名
主片
从片
说明
RCR[17:16]
RDATDLY
0 h
1 h
接收数据延迟:0h:0-bit数据延迟;1h:1-bit数据延迟
XCR[17:16]
XDATDLY
1 h
0 h
发送数据延迟:1h:1-bit数据延迟;0h:0-bit数据延迟
SRGR[29]
CLKSM
1
0
时钟信号产生模式位:1:时钟信号来自于CPU时钟;0:时钟信号来自于CLKS引脚
SRGR[28]
FSGM
1
0
帧同步信号产生模式位:1:传输的帧同步信号来自于内部;0:当数据从DXR传输到XSR时,产生一个帧同步信号
SRGR[7:0]
CLKGDV
1 h
0 h
时钟信号产生器的分频值
PCR[11]
FSXM
1
0
帧同步信号传输模式位:1:帧同步信号又SRGR寄存器的FSGM位决定;0:帧同步信号来自于外部
PCR[10]
FSRM
0
0
接收帧同步信号模式位:0:帧同步信号来自于外部,FSR引脚为输入引脚
PCR[9]
CLKXM
1
0
时钟信号传输模式位:1:CLKX被定义为输出引脚,时钟信号来自于CPU内部;0:CLKX被定义为输入引脚,时钟信号来自于外部
PCR[8]
CLKRM
0
0
时钟信号接收模式位:0:CLKR引脚是输入引脚,接收外部时钟信号
主片DSP0的软件设计由DSP初始化,McBSP0初始化,DSP中断设置和发送数据中断设置程序构成。相似地,从片DSP1的软件设计由DSP初始化,McBSP1初始化,DSP中断设置和接收数据中断设置程序构成。图4(a)是主片DSP0软件系统流程图,图4(b)是从片DSP1软件系统流程图。
4. 数据传输速度影响因素分析
当双DSP的2个McBSP被用着高速通信接口的时候。影响数据传输速度的主要原因有以下2个:
ü 数据传输方法。例如,中断传输的优先级要低于DMA/EDMA(直接存储器访问/增强直接存储器访问),因此,要无损的传输数据,中断传输方式下的数据传输速度要明显的慢一些。
ü 数据传输的优先级。DMA/EDMA的优先级要低于CPU;或者用于传输数据的DMA/EDMA通道优先级要低于其它的DMA/EDMA通道的优先级。这些都会影响数据的传输速度。为了避免速度的降低,应该适当的配置各个通道的优先级。
当McBSP的各寄存器值都按表2的要求配置时,双DSP间的数据传输速度能达到最大。但因为C6000系列DSP的CPU主频各不相同,于是各个型号DSP间的最大传输速度也不尽相同。在理论情况下,C64X系列芯片间的传输速度最高,能达到125Mbps(兆比特每秒),C6201,C6202/B和C6203间的速度次之,能达到100Mbps。
5. 结语
本文给出了一种基于McBSP的C6000系列双DSP间的高速通信方案。本文的创新点在于:与其他的双DSP间通信方案相比较,其优点为无需增加其它通信器件,硬件线路简单,无需复杂的逻辑控制等就可实现双DSP间的高速通信。实验结果表明,该方案高速可靠,是实现C6000系列双DSP间高速通信的一种理想方案。
本文可能所用到的IC型号:
阅读(425) | 评论(0) | 转发(0) |