1 PCIe事务
AXI事务对于PCIe来说,主要涉及到在AXI总线和PCIe总线之间进行数据交换和通信的过程。在PCIe系统中,AXI总线作为一个连接不同组件的桥梁,可以实现高效的数据传输和事务处理。
AXI事务通常包括读事务和写事务。在读事务中,AXI主设备向AXI从设备发起读请求,从设备在接收到请求后返回相应的数据给主设备。而在写事务中,AXI主设备将数据发送到AXI从设备,从设备在接收到数据后进行存储或处理。
另外,s_axi_wstrb在AXI总线中确实用于表示数据写入时的字节选择信号。它是一个8位的信号,每一位对应着数据总线(DATABUS)中的一个字节。当写入数据时,s_axi_wstrb的每一位都被设置为1或0,以表示哪些字节需要被写入。s_axi_wstrb标识的有效数据顺序是从第一个字节使能到最后一个字节使能。因为AXI总线是基于突发传输的,所以在一次突发传输中,有效数据必须是连续的,以确保数据的完整性和一致性。
2 PCIe事务排序
AXI Memory Mapped to PCI Express core遵循严格的PCIe事务排序规则。完整的规则集请参考PCIe v2.1规范。为了在桥接器的高度并行的AXI总线上强制执行PCIe事务排序规则,AXI Memory Mapped to PCI Express core实现了以下行为。这些规则的执行不考虑TLP头部中的Relaxed Ordering属性位。
1、对于写入远程PCIe设备的操作,远程(请求方)AXI4主设备的bresp(响应)不会在MemWr TLP(事务层包)传输被保证在PCIe链路上发送,且任何后续TX-transfers(传输)之前发出。
2、远程AXI主设备对远程PCIe设备的读取操作不允许超过任何先前或同时发生的对远程PCIe设备的AXI主设备写入操作。时序基于AXI arvalid信号时序相对于AXI awvalid的时序。任何在awvalid被断言之前或同时与从PCIe读取的arvalid被断言的AXI写入事务,都会导致MemRd TLP(事务层包)被保持,直到流水线或同时发生的MemWr TLP(事务层包)被发送。
3、远程AXI从设备的远程PCIe设备读取操作不允许超过任何先前由AXI Memory Mapped to PCI Express核心接收到的对远程AXI从设备的远程PCIe设备写入操作。AXI读取地址阶段会被保持,直到先前的AXI写入事务完成,并且AXI写入事务的bresp(响应)已被接收。
4、从远程PCIe设备接收到的读取完成数据不允许超过AXI Memory Mapped to PCI Express core在读取完成数据之前接收到的任何对远程AXI从设备的远程PCIe设备写入操作。AXI写入的bresp必须在完成数据出现在AXI读取数据通道上之前被接收。
5、从远程AXI从设备读取的数据不允许超过在AXI总线上发起且先于或同时于读取数据返回的任何对远程PCIe设备的远程AXI主设备写入操作。时序基于AXI awvalid信号时序相对于AXI rvalid断言的时序。任何在awvalid被断言之前或同时与rvalid被断言直到最后一个数据节拍(包括该数据节拍)的AXI写入事务,都会导致Completion TLP(事务层包)被保持,直到流水线或同时发生的MemWr TLP(事务层包)被发送。
总之,这些规则确保了数据一致性和操作的顺序性。在AXI总线上的读取和写入操作需要按照特定的顺序进行,以确保数据的完整性和系统的稳定性。特别是在处理来自远程PCIe设备的读取完成数据和向远程AXI从设备或远程PCIe设备的写入操作时,这些规则尤为重要。它们防止了可能的数据冲突或时序问题,从而确保了系统的正确运行。
注意:PCIe的事务排序规则可能会在高双向流量情况下对数据吞吐量产生影响