Rapid IO协议由于无主机,且各设备之间可以并行交换信息,所以广泛应用于对交换速率要求高,且交互复杂的应用中。
Xilinx现在有支持Serial RapidIO Gen2的核,可以应用在此场景中,但Xilinx 的 Rapid IO 核对外接口仅有 AXI 流接口 ,且对各类数据流的处理需要外部单独设计,不能方便的对消息、门铃、数据进行读写传输。本文介绍了将RapidIO核出来的接口转换到AXI总线上的设计。
SRIO转AXI的设计
1. SRIO 协议层框架设计
本地设备(Local Device)生成的请求(Requests)通过ireq通道发送,远程设备(Remote Device)产生的响应包通过iresp通道接收来完成整个事务的交互过程。
远程设备(Remote Device)生成的请求(Requests)通过treq通道接收,本地设备(Local Device)产生的响应包通过tresp通道发送来完成整个事务的交互过程。
在顶层模块中,变量名与通道的对应关系如下:
s_axis_ireq* 对应于ireq通道
m_axis_iresp* 对应于iresp通道
m_axis_treq* 对应于treq通道
s_axis_tresp* 对应于tresp通道
2.
m_axis_treq 端口介绍 :
该端口会收到CPU 发送的读写数据包,以及门铃和消息数据包
写数据包分为 NWRITE 和 SWRITE 两种,其中SWRITE 数据包中不包含数据包的长度信息。
门铃和消息接口:
3. S_axis_tresp
该端口为响应端口,主要负责形成SRIO的数据包的响应数据包。该模块能自动回应读写,门铃消息等数据包的响应包。
主要接口读数据用户接口:
4、
m_axis_ireq
该端口为FPAG 主动请求端口,主要负责形成SRIO的数据包的响应数据包。该模块能自动生产读写,门铃消息等数据包的请求 数据包包。
5. demo 仿真示意图