RapidIO规范定义了几种事务类型。 每种事务类型执行不同的功能。 IP核的事务支持是通过Vivado®集成设计环境(IDE)设置的。
表3-1列出了已定义的事务类型,并指示事务所属的LOG端口。 如果事务不是表3-1中定义的事务,或者在Vivado IDE中未启用对事务的支持,则认为该事务不受支持。 如果不支持接收的事务,则它将显示在用户定义的端口上。 如果用户定义的端口不存在,则在IP核内丢弃事务并且使能port_decode_error信号。
下标列出了IP核支持的全部事务类型:
下面节选一段话来说明事务类型是如何确定的:(基于SRIO协议设计和实现了DSP与FPGA之间的高速数据通信)
SRIO初始化完成后,通过DSP对SRIO端口的读写操作实现和FPGA之间的数据传输。DSP读写支持的操作通过数据包格式中的Ftype和Ttype两个字段描述,I/O逻辑操作是简单实用的传输方式,使用该模式的前提是主设备要知道被访问端的存储器映射,可以直接读写从设备的存储器。I/O逻辑操作在被访问端的功能往往完全由硬件实现,所以被访问的器件不会有任何软件负担。下表所列为I/O操作的几种事务类型。本文使用的读操作事务是NREAD。在3种写操作事务中:NWRITE_R是带响应的写操作,效率较低;SWRITE要求数据载荷长度在8~256字节之间,且为8字节的整数倍。因此本文采用NWRITE写操作,配置简单且易于实现。
从这段话可以知道,DSP读写支持的事务类型由数据包格式中的Ftype和Ttype两个字段决定,当然对于FPGA也是一样。
到此,我们节选几个比较重要的事务类型来解释下:
NREAD
Basic read request transaction. Request does not have a data payload. Results in a response with data.
这是一个基本的读请求事务,请求当然不必携带数据(只读而已),但响应结果应该带有数据。
这里的payload为数据包中的数据所在之处。
为了更清楚地认识数据包的格式,给出示意图:
NWRITE
Basic write operation. Request has a data payload. Does not result in a response.
基本写操作。 请求具有数据有效负载。 不会导致回复(无需响应)。
NWRITE_R
Basic write operation. Request has a data payload. Results in a response with no data.
基本写操作。 请求具有数据有效负载。 响应中无数据负载。
SWRITE
Streaming write operation (uses less header fields than NWRITE). Request has a data payload. Does not result in a response.
流写入操作(使用比NWRITE少的头字段)。 请求具有数据有效负载。 不会导致回复。
DOORBELL
Very short message between processing elements. Request has no data payload. Results in a response with no data.
处理元素之间很短的消息,请求没有数据有效负载,响应也没有数据有效负载。
MESSAGE
Messaging operation – typically used by processors in distributed memory system machines. Message packets always have a data payload.
消息传递操作 - 通常由分布式存储器系统机器中的处理器使用。 消息包始终具有数据有效负载。
ATOMIC with no payload
Read-modify-write operation. Request does not have a data payload. Results in a response with data.
读 - 修改 - 写操作。 请求没有数据有效负载。 响应带有有效数据负载。
下面就不一一赘述了。