一、RapidIO协议结构及包格式        
        为了满足灵活性和可扩展性的要求,RapidIO协议分为三层:逻辑层、传输层和物理层。下图说明了RapidIO协议的分层结构。

逻辑层定义了操作协议; 传输层定义了包交换、路由和寻址机制;物理层定义了电气特性、链路控制和纠错重传等。
        像以太网一样,RapidIO也是基于包交换的互连技术。RapidIO包由包头、可选的载荷数据和16bits CRC校验组成。包头的长度因为包类型不同可能是十几到二十几个字节。每包的载荷数据长度不超过256字节,这有利于减少传输时延,简化硬件实现。

二、逻辑层协议
        逻辑层定义了操作协议和相应的包格式。RapidIO支持的逻辑层业务主要是:直接IO/DMA (Direct IO/Direct Memory Access)和消息传递(Message Passing)。
        直接IO/DMA模式是最简单实用的传输方式,其前提是主设备知道被访问端的存储器映射。在这种模式下,主设备可以直接读写从设备的存储器。直接IO/DMA在被访问端的功能往往完全由硬件实现,所以被访问的器件不会有任何软件负担。从功能上讲,这一特点和德州仪器DSP的传统的主机接口(HPI, Host Port Interface)类似。但和HPI口相比,SRIO(Serial RapidIO)带宽大,管脚少,传输方式更灵活。
        对上层应用来说,发起直接IO/DMA传输主要需提供以下参数:目标器件ID、数据长度、数据在目标器件存储器中的地址。

直接IO/DMA模式又可进一步分为以下几种传输格式:
        1、NWRITE: 写操作,不要求接收端响应。
        2、NWRITE_R: 带响应的NWRITE(NWRITE with Response),要求接收端响应。
        3、SWRITE:流写(Stream Write),数据长度必须是8字节的整数倍,不要求接收端响应。
        4、NREAD: 读操作。

SWRITE是最高效的传输格式;带响应的写操作或读操作效率则较低,一般只能达到不带响应的传输的效率的一半。
        消息传递(Message Passing)模式则类似于以太网的传输方式,它不要求主设备知道被访问设备的存储器状况。数据在被访问设备中的位置则由邮箱号(类似于以太网协议中的端口号)确定。从设备根据接收到的包的邮箱号把数据保存到对应的缓冲区,这一过程往往无法完全由硬件实现,而需要软件协助,所以会带来一些软件负担。
        对上层应用来说,发起消息传递主要需提供以下参数:目标器件ID、数据长度、邮箱号。

下表对直接IO/DMA和消息传递进行了对比:
                                                          直接IO/DMA         消息传递
        主机可直接访问从机存储器?              可以                  不可以
        主机需要知道从机存储器映射?           需要                  不需要
        数据寻址方式                                存储器地址             邮箱号
        支持的数据访问方式                          读/写                     写
        从机软件负担                                      无                       有

三、传输层协议
        RapidIO是基于包交换的互连技术,传输层定义了包交换的路由和寻址机制。
        RapidIO网络主要由两种器件,终端器件(End Point)和交换器件(Switch)组成。终端器件是数据包的源或目的地,不同的终端器件以器件ID来区分。RapidIO支持8 bits 或 16 bits器件ID,因此一个RapidIO网络最多可容纳256或65536个终端器件。与以太网类似,RapidIO也支持广播或组播,每个终端器件除了独有的器件ID外,还可配置广播或组播ID。交换器件根据包的目标器件ID进行包的转发,交换器件本身没有器件ID。
        RapidIO的互连拓扑结构非常灵活,除了通过交换器件外,两个终端器件也可直接互连。

四、物理层协议
        RapidIO 1.x 协议定义了以下两种物理层接口标准:
        1、8/16 并行LVDS协议
        2、1x/4x 串行协议 (SRIO)

并行RapidIO由于信号线较多(40~76)难以得到广泛的应用,而1x/4x串行RapidIO仅4或16个信号线,逐渐成为主流,所以本文仅介绍串行RapidIO。
        串行RapidIO基于现在已广泛用于背板互连的SerDes(Serialize Deserialize)技术,它采用差分交流耦合信号。差分交流耦合信号具有抗干扰强、速率高、传输距离较远等优点。
        为了支持全双工传输,串行RapidIO收发信号是独立的,所以每一个串行RapidIO口由4根信号线组成。标准的1x/4x 串行RapidIO接口,支持四个口,共16根信号线。这四个口可被用作独立的接口传输不同的数据;也可合并在一起当作一个接口使用,以提高单一接口的吞吐量。
         DSP6678上集成了标准的1x/4x串行RapidIO接口,如下图所示。

发送时,逻辑层和传输层将组好的包经过CRC编码后被送到物理层的FIFO中,“8b/10b编码”模块将每8bit数据编码成10bits数据,“并/串转换”模块将10bits并行数据转换成串行bits,发送模块把数字bit转换成差分交流耦合信号在信号线上发送出去。这里的8b/10编码的主要作用是:
        1、保证信号有足够的跳变,以便于接收方恢复时钟。串行RapidIO没有专门的时钟信号线,接收端靠数据信号的跳变恢复时钟。所以需要把信号跳变少的8bits数据(如全0或全1)编码成有一定跳变的10bits数据。另外,也使得总体数据中0和1的个数均衡,以消除直流分量,保证交流耦合特性;
        2、8b/10编码可扩大符号空间,以承载带内控制符号。10bits能表示1024个符号,其中256个表示有效的8bits数据,剩下的符号中的几十个被用作控制符号。控制符号可被用作包分隔符,响应标志,或用于链路初始化,链路控制等功能;
        3、8b/10编码能实现一定的检错功能。1024个符号中,除了256个有效数据符号和几十个控制符号外,其它符号都是非法的,接收方收到非法符号则表示链路传输出错。

接收的过程则正好相反,首先接收方需要根据数据信号的跳变恢复时钟,用这个时钟采样串行信号,将串行信号转换为10bits的并行信号,再按8b/10b编码规则解码得到8bits数据,最后做CRC校验并送上层处理。
        数据被正确的接收时,接收端会发送一个ACK响应包给发送端;如果数据不正确(CRC错或非法的10bits符号),则会送NACK包,要求发送方重传。这种重传纠错的功能由物理层完成,而物理层功能往往由硬件实现,所以不需要软件干预。

本文参考http://www.ti.com.cn/general/cn/docs/gencontent.tsp?contentId=50741

DSP6678 RapidIO基本原理之二——RapidIO协议结构及包格式相关推荐

  1. 【计算机网络】网络层 : IPv6 协议 ( IPv6 数据包格式 | IPv6 地址表示 | IPv6 地址类型 | IPv4 与 IPv6 协议对比 | IPv4 -> IPv6 过渡策略 )

    文章目录 一.IPv6 发展 二.IPv6 数据报格式 三.IPv6 和 IPv4 对比 四.IPv6 地址表示 五.IPv6 地址 类型 六.IPv4 向 IPv6 过渡策略 一.IPv6 发展 I ...

  2. IP协议(RFC791)-IP包格式

    IP封包格式(IPv4包首部长度为20字节) Internet Header Format0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 ...

  3. DSP6678 RapidIO基本原理之一

    一.        RapidIO简介 RapidIO是一种非私有的.高带宽的.系统级的互联方式.它是一个包交换的互联,主要作为片间和板件的互联接口. 可用于微处理器.内存.内存映射的IO设备间的连接 ...

  4. java实现FTP协议:wireshark抓包解析

    本节我们看看ftp协议的数据包格式,同时使用代码加以实现.首先我们现在机器上安装ftp服务器,我在自己的机器上安装了QuickFTP Server,它是我随便找来的一款Mac ftp服务器,如下图所示 ...

  5. 串行RapidIO(Serial RapidIO,SRIO):协议介绍

    目录 一.RapidIO背景介绍 二.RapidIO协议概述 2.1 操作与控制符号 2.2 包格式 三.I/O逻辑操作与包格式 3.1 引言 3.2 常用的I/O逻辑操作 读操作(NREAD, RE ...

  6. 【高速接口-RapidIO】1、RapidIO协议概述

    一.RapidIO背景介绍 RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能. 低引脚数. 基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一种开放 ...

  7. DLT645协议解析(二)---07协议数据帧结构解析

    (二)DLT645-2007协议数据帧结构解析      书接上回,下图展示的是DLT645-2007协议读取电表电量的交互过程,数据请求帧里面请求的数据类型是当前正向有功电量. PC请求帧:   6 ...

  8. 【高速接口-RapidIO】2、RapidIO串行物理层的包与控制符号

    总目录:总目录(经验分享) 献上链接: [高速接口-RapidIO]2.RapidIO串行物理层的包与控制符号 [高速接口-RapidIO]3.RapidIO串行物理层的包传输过程 [高速接口-Rap ...

  9. 【高速接口-RapidIO】3、RapidIO串行物理层的包传输过程

    总目录:总目录(经验分享) 献上链接: [高速接口-RapidIO]2.RapidIO串行物理层的包与控制符号 [高速接口-RapidIO]3.RapidIO串行物理层的包传输过程 [高速接口-Rap ...

最新文章

  1. 属性字符串(富文本)的使用
  2. WPF Dispatcher介绍
  3. 【题解】已经没有什么好害怕的了
  4. 欠阿里云一分钱,会是什么样的后果。。。
  5. 计算机仿真实训系统的企业排名,闵行区虚拟仿真实训平台企业-哪家不错
  6. ElasticSearch、kibana、head、ik分词器在Windows下的安装
  7. 斐波那契数列-爬楼梯算法
  8. Pollen 1.5 发布,Web 投票系统
  9. 如何发送请求以及AJAX
  10. java学校信息管理系统 论文设计与实现
  11. 键盘连接计算机接口,终于明白电脑如何连接键盘
  12. python的PIL库
  13. 如何去除2345好压的广告弹窗
  14. 关于grldr is missing
  15. Chrome浏览器谷歌翻译 失效/用不了的解决方法idea-翻译插件失败(TKK: 更新 TKK 失败,请检查网络连接)
  16. conda冗余package的清理(.conda/pkgs)
  17. 想成为魅力十足的人的十大习惯
  18. 计算机在教育中的应用的基本现状,现代教育技术应用的现状与发展
  19. [墨者学院] Windows硬盘文件分析取证(新建的用户名)
  20. 【BZOJ5077】【UOJ198】【CTSC2016】时空旅行

热门文章

  1. 在Unity游戏中使用Live2D
  2. Learning to Learn
  3. 陈景润与数学家比龙筛法
  4. 3dsmax小车模型
  5. Go语言Web框架:Beego框架快速入门
  6. GJB6600-装备交互式电子技术手册
  7. 新一代ERPII 企业销售、采购及财务一体化高效管理的利器
  8. 编程段子│只有程序猿才能看懂的搞笑段子
  9. 获取 Cydia 下载的 deb 文件
  10. linux 解决中文乱码问题