SRIO核的结构剖析-----逻辑层接口(LOG)


逻辑层(LOG)是核的顶层接口,实现与用户数据的交互。主要包括:用户接口(User Interface),传输接口(Transport Interface)和配置接口(Configuration Fabric Interface)三个接口,如下图所示。这些接口可从<component_name> _block级别获得。 每个事务类型都分配给一个特定的端口。通常在I / O端口上发送或接收任何受支持的I/O事务,例如NWRITE,NWRITE_R,SWRITE,NREAD和RESPONSE(不包括MAINTENANCE响应)。可以将MESSAGE事务(如果支持)分配给Messaging端口或I / O端口。无论是否存在消息传递端口,DOORBELL事务都使用I / O端口。如果启用了维护端口,则所有维护数据包都应在维护端口上。如果事务是用户定义的,不支持的类型或没有分配的端口,则它将使用用户定义的端口(当禁用用户定义的端口时,将丢弃与另一个端口不对应的已接收数据包)。配置接口也包含两个端口。其中配置主机端口(Configuration Master Port)用来读写本地配置空间。逻辑配置寄存器端口(LOG Configuration Register Port),它可以用来读写一部分逻辑层或传输层配置寄存器。

 image.png

1、I/O端口(I/O Port)

I/O端口能被配置为两种类型:Condensed I/O(Condensed:简明)或Initiator/Target。这两种类型可以在IP核的配置中进行选择。I/O端口的数据流协议是AXI4-Stream协议,它支持两种类型的包格式,分别是HELLO格式与SRIO Stream格式。如下图所示,我们一般使用Initiator/Target这种模式。

 image.png

其中Condensed I/O端口类型减少了用于发送和接收I/O包的端口数目。它只用一个AXI4-Stream通道来发送所有类型的包,同样,也只用一个AXI4-Stream通道去接收所有类型的包。AXI4-Stream去掉了地址项,允许无限制的数据突发传输规模,用ready/valid握手信号在主从设备之间传输信息,tlast信号指示传输的最后一个数据从而确定包的边界,用tkeep字节使能信号指示数据中的有效字节,它还包括有效数据tdata信号以及用户数据tuser信号用来传输实际的包数据。

Initiator/Target端口类型把请求事务与响应事务分别处理,所以一共有4个AXI4-Stream通道用于I/O事务的传输。如上图右是Initiator/Target端口的示意图,绿框(灰色箭头)表示请求事务,其它表示响应事务。

请求:本地设备(Local Device)生成的请求(Requests)通过ireq通道发送,远程设备(Remote Device)产生的响应包通过iresp通道接收来完成整个事务的交互过程。

响应:远程设备(Remote Device)生成的请求(Requests)通过treq通道接收,本地设备(Local Device)产生的响应包通过tresp通道发送来完成整个事务的交互过程。

在顶层模块中,变量名与通道的对应关系如下:

1、s_axis_ireq* 对应于ireq通道

2、m_axis_iresp* 对应于iresp通道

3、m_axis_treq* 对应于treq通道

4、s_axis_tresp* 对应于tresp通道

2、消息端口(Messaging Port)

消息端口是一个可选的接口,消息事务既能在I/O端口上发送,也能在独立的消息端口上发送。独立的消息端口类型为Initiator/Target类型。下图是消息端口的示意图

 image.png

3、用户自定义端口(User-Defined Port)

用户自定义端口是一个可选的端口,它包括两个AXI4-Stream通道,一个用于发送另一个用来接收。用户自定义端口仅仅支持SRIO Stream格式的事务。下图是用户自定义端口的示意图和可选配置图。

 image.png

4、维护端口(Maintenance Port)

维护端口使用的是AXI4-Lite接口协议,AXI4-Lite接口允许用户访问本地或远程配置空间,也是可选端口。下图是AXI4-Lite维护端口示意图

 image.png

5、状态(Status)

维用户接口的状态信号包括deviceid和port_decode_error,定义如下表所示

信号

方向

描述

deviceid[15:0]

输出

Base DeviceID CSR(偏移地址为0x60)寄存器的值

port_decode_error

输出

此信号为高说明用户自定义端口未使能,一个不支持的事务被接收并立即丢弃。当下一个支持的事务包在任意用户接口被接收以后此信号被拉低。这个信号同步于log_clk信号

6、配置接口

1、配置主端口,通过配置结构对本地配置空间(用于LOG,BUF和PHY)进行读写

2、LOG配置寄存器端口,它是用于读取和写入定义为逻辑层或传输层一部分的寄存器的从接口。






快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~

有建议、有需求、有疑问、联系我

<