从图2可以看出,接收到的差分数据进入串行Ra—pidI0,首先RapidIO模块根据数据的上升沿变化速度检测出数据发送时钟频率,并以此频率来接收后面的数据。然后,将接收的串行数据经过S2P(Series to Parallel)单元,将串行数据转换成10位的并行数据,从而降低了10倍数据传输速度。物理层得到并行数据后,将数据送到逻辑层,依次经过译码、FIFO、CRC校验和拆包处理,送到缓冲并进行数据处理,最后经过DMA总线送到DSP处理单元,完成数据的接收。数据发送和接收过程相似,需要经过一个并串转变P2S单元,发送无需时钟处理单元,发送数据的速度包含了时钟速度。
2个DSP之间的RapidIO连接简单、方便,如图3所示,只要将收发数据相应地连接上就可以了。由于RapidIO有4根并行数据总线,如果将所有的数据总线全部连接上,可以确保最高的通信速率。也可以使用1根数据总线通信,这时数据传输速度降低到最高通信速率的1/4。如果多个DSP相互之间都需要进行通信,则一般采用单根数据通信方式。图4中的3个DSP之间相互使用RapidIO总线通信。由于只有4根数据总线,最多只能实现4个DSP之间相互使用RapidIO总线通信。需要注意的是,由于RapidIO通信速率较高,在数据总线的连接上,一定要注意屏蔽电磁干扰,尽量做到数据线等长。此外,DSP之间的数据地和模拟地需要分别连接在一起(见图3)。
3 系统软件设计
RapidIO总线的设置有3个步骤:
①设置RapidIO的时钟,通过SERDES_CFG_CNTL寄存器设置数据收发的速率;
②使能RapidIO的接收器,同时设置一些和数据接收相关的参数,包括差分信号的自适应均衡设计、相位偏差设置、信号损耗设置等;
③使能RapidIO的发送器,同时设置一些和数据发送相关的参数,包括发送速率、总线宽度等。
设置RapidIO速率为3.125 Gbps,使能接收器和发送器的代码如下: