沧小海基于xilinx srio核的学习笔记之第二章 Rapidio技术概述

总的目录在这哦~ 

https://blog.csdn.net/z123canghai/article/details/114648658 


目录

第二章 Rapidio技术概述

2.1 总体原则

2.2 协议概述

2.2.1 传输机制

2.2.2 协议结构

2.2.3 协议格式


第二章 Rapidio技术概述

协议的出现是为了解决实际问题,所以对本章内容的理解要基于这一点。

Rapidio协议组成的基本要素是包和控制符号,包是基于各种协议的传输数据内容,控制符号是用于物理层的数据交互的调控。

本章讲述了推动rapidio互连技术的总体原则、协议规范的划分以及具体的协议内容。总体原则定了协议内容的走向,协议规范描述协议的框架,在这二者要求之下逐步逐层介绍协议内容。


2.1 总体原则

协议目的是为了:解决机箱间或板卡间或器件间的短距离高速互连

要具备的特点有:

  1. 提高性能:
  1. 限制协议开销,提高运载能力
  2. 管理硬件错误,互连技术应具有检测所有可能发生错误的能力,并可以利用硬件机制从错误中自动回复
  3. 限制硅片封装尺寸,芯片上也是寸土寸金啊,太大了不好。
  4. 限制对软件的影响,做好封装接口
  1. 增强兼容性和扩展性:
  1. 充分利用现有的I/O驱动技术和接收器技术,例如fpga直接用固有硬件GTP就可以了
  2. 协议划分规范,增强技术的重用性,以后在现有技术上增加内容也不受影响

因此,Rapidio体系的总体原则就是满足高性能嵌入式系统的独特需求,具有短距离、高性能、可兼容的应用特点。


2.2 协议概述

协议概述包括协议的传输机制、协议结构和协议格式三项内容。传输机制介绍数据包在器件间的传输方式,协议结构主要阐述协议的层级机构特点、协议格式简要说明协议包括的主要内容及大致分类。

2.2.1 传输机制

Rapidio操作是基于请求和响应进行的。请求即发送,例如A与B进行数据通信,A发送到B的数据可能是给B的数据,也可能是一个请求读的“信号”,无论是什么,我们都称之为请求数据包,当B接收到A的数据,若对此做出反应,我们称之为响应,那么A接收B的数据包就是响应包了,但B也可能主动给A发送数据,对A来说,依旧是响应数据包。总之,对于一端来说,发出去的就是请求,接收的就是响应。而数据包“包”是端点器件通讯的基本单元,所以说,不同器件间的数据交换就是数据包的传递。如下图就是一个请求数据包与响应数据包的传输流程。

在第一章我们阐述了对交互的理解,再次就不再赘述了。“Acknowledge Symbol”是物理层的数据包,它们就好像交通警察一样,协调各个路口的数据交换,以防拥堵、丢包、错包情况,我们称之为“控制符号”,在第四章会对此进行详细描述。

2.2.2 协议结构

Rapidio采用三级分层体系结构,实现基于请求和响应事务的逻辑操作。其中逻辑层定义包的格式,是数据产生之源头,数据发送之端点。传输层为包添加源和目的ID并指示其位宽。物理层主要有两个任务,一个是通过物理结构实现串并转换及8b/10b的编码与解码,另一个是为协议添加必要的信息,如下图可见,包就是在这三级分层中不断添加信息成的,就好像快递一样,不断的包装,最终组成一个可以完整传送到目的地的包裹。

         这种层级结构具有很好的兼容性,当新加了一种规范或者说协议,不需要改变其它层的结构,更不需要更改硬件设备,非常的灵活。本章不讲具体的内容,就比如每个字符表示什么含义等,这在下一章节描述。

2.2.3 协议格式

2.2.2我们阐述了一包数据是如何包装的,这小节就来讲述这“包”里面装的是什么。也就是“事务类型和格式”。A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。我觉得有必要再重复一下什么是rapidio,它是硬件和软件的集合,软件就是协议,就是上一节所阐述的内容,是我们通过代码来实现的,硬件就是在芯片里面会集成这样一个电路,满足我们进行rapidio协议的数据传输的需求。在一定程度上,我们可以把互连的rapoidio器件看作一个又一个的站点,那么互连的链路就是集散地和公路,在公路上我们可以开符合国家标准的车辆,这些车辆可以是卡车、轿车、救护车。同样,rapidIO的硬件链路上也支持满足其要求的不同类型的数据包,我们把不同类型的数据包称之为事务,大的事务又被分为多个小事务,林林总总一堆事务,就是rapidio各样的协议。这和卡车有大卡小卡,客车有大巴小巴一个道理。如果你研发了一款新车,只要符合国家要求,也可以上路,rapidio协议也是这样,这也就是前文所说的rapidio的灵活性。

Rapidio有多种协议方式,差不多15种。我们也可以理解为在rapidio链路上,有15种类型的车辆是允许上路的。我们在对协议进行归纳时也有多种分类方式,一般情况,我们有两种分类方式,一是按照数据格式分类,有时候称之为事务类型,准许的说是“格式类型”Ftype (Format Type),其实我们需要对它有个准确的称呼,这有助于对协议的理解。如果按照事务类型分类,常用的可以分为如下几类:大致看看就好,后续还会着重介绍的。

Ftype

Ttype

包类型

功能

2

4’b0100

NREAD

读指定的地址

4’b1100

ATOMIC increment

先往指定的地址中传递数据,在把传递的数据加1,此操作为原子操作,不可打断

4’b1101

ATOMIC decrement

先往指定的地址中传递数据,在把传递的数据减1,此操作为原子操作,不可打断

4’b1110

ATOMIC set

把指定地址中的数据每个bit全部写1

4’b1111

ATOMIC clear

把指定地址中的数据清0(每个bit全部清零)

5

4’b0100

NWRITE

往指定的地址写数据

4’b0101

NWRITE_R

往指定的地址写数据,写完成以后接收目标器件(Target)的响应

4’b1101

ATOMIC test/swap

对指定地址中的数据进行测试并交换,此操作为原子操作,不可打断

6

4’bxxxx

SWRITE

以流写方式写指定的地址,与NWRITE以及NWRITE_R相比,此方式效率最高

8

4’b0000

MAINTENANCE read request

发起读配置,控制,状态寄存器请求

4’b0001

MAINTENANCE write request

发起写配置,控制,状态寄存器请求

4’b0010

MAINTENANCE read response

产生读配置,控制,状态寄存器响应

4’b0011

MAINTENANCE write response

产生写配置,控制,状态寄存器响应

4’b0100

MAINTENANCE write resquest

端口写请求

10

4’bxxxx

DOORBELL

门铃

11

4’bxxxx

MESSAGE

消息

13

4’b0000

RESPONSE no data

不带有效数据的响应包

4’b1000

RESPONSE with data

带有效数据的响应包

除了这种分类方式,还有其他的分类方式,例如按功能特点分类,也是xilinx的IP核所用的分类方式,这种分类方式在我看来也是比较好理解的。根据功能可分为I/O操作、维护操作、消息事务这三类。I/O操作就好比运输货物的卡车,载人的客车,目的是完成内容从一端到另一端的传递,由于采用不同的车型,所以会有以下几种I/O操作。

操作

使用的事务

描述

请求类事务

NREADATOMIC_incdecsetclr

从目标器件中读数据

NWRITE

往目标器件中写数据

有响应写

NWRITE_RRESPONSE

往目标器件中写数据,写完后等待目标的响应

流写

SWRITE

面向大数据量DMA传输优化写数据

Atomic

ATOMICRESPONSE

原子操作,读-修改-写,事务不能被打断

维护事务就可以理解为救火车、急救车等,是为了为何各个集散地的正常运行。消息事务是大喇叭,是广播,是传递些通知的内容。


就关于官方的实例分析,不仅实现了对核的配置、仿真,还对信号进行了整理,如下所示

开发软软件为vivado2016.4,打开工程点击“Flow”选择“open static simulation”打开静态仿真可直接查看信号波形


相关程序可关注“沧小海的FPGA”微信公众号回复“SRIO”即可获取,感谢关注~ 

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SRIO(Serial RapidIO)和RapidIO(Rapid Input/Output)是两种不同的串行高速数据传输接口标准。 首先,SRIOSRIO工作组(Serial RapidIO Working Group)创建的一种串行高速数据传输协议,用于在多种应用中实现低延迟、高带宽和可靠性的数据传输。SRIO通常用于连接网络处理器、数字信号处理器和其他高性能计算设备,例如用于运算密集型应用的服务器和通信设备。 而RapidIO是一种用于构建高性能互连组件和系统的开放式标准。它是从Motorola公司的一种内部总线技术发展而来,并由RapidIO Trade Association(简称RTA)进行管理。RapidIO设计旨在构建低延迟、高带宽和高可靠性的数据传输系统,广泛应用于通信基础设施、数据中心和高性能计算等领域。 两者的区别主要在于以下几个方面: 1. 出处:SRIOSRIO工作组创造的,而RapidIO最初是Motorola公司的内部总线技术,后来被RTA接管。 2. 标准化机构:SRIOSRIO工作组进行管理,而RapidIO由RTA进行管理。 3. 应用领域:SRIO通常用于连接网络处理器、数字信号处理器和高性能计算设备,而RapidIO广泛应用于通信基础设施、数据中心和高性能计算领域。 4. 特性和性能:虽然SRIO和RapidIO都是用于构建低延迟、高带宽和高可靠性的数据传输系统,但两者在具体的特性和性能上可能有所不同,具体取决于实际的设计和实现。 综上所述,SRIO和RapidIO虽然都是用于实现高速数据传输的串行接口标准,但它们有着不同的出处、标准化机构、应用领域和具体特性。对于具体的应用需求,选择适合的标准有助于实现更好的数据传输性能和系统可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值