PCIe学习笔记(一)-------1.5 一个TLP包的传输过程

1,MRd包的传输

以MRd TLP包的传输为例,说明一个Non-Posted事务的TLP是如何在PCIe系统层次中处理的。

1)Requester的软件层发送需要传送的信息给事务层。

2)事务层将数据打包成TLP的Header(和Data,MRd TLP没有Data),并根据需要是否附加ECRC,将完成的TLP存入相应的VC transmit buffer。流控制机制确保TLP在合适的时间被发送指数据链路层。

3)数据链路层将TLP前增加Sequence ID,并在后面附加LCRC。然后将TLP存入 Replay buffer备份,并将TLP传输给物理层。

4)物理层将TLP增加Start 和 End 字符,然后将TLP包进行字节拆分、加扰、编码、并串转换,再通过TX发送到链路上。

5)Completer的物理层RX接收到差分信号,将信号进行并串转换,在一个弹性buffer中组装数据包,(组装好的数据已经被解码、去扰了)。然后检测并删除Start和End字符。将最后得到的TLP发送给数据链路层。

6)数据链路层进行CRC检查。

        6.1)如果没有错误,则形成ACK的DLLP包,通过物理层发送给对方。对方的数据链路层接收到ACK包后,会根据ACK包中的Sequence ID信息删除保存在Replay buffer中相应的TLP包。

        6.2)如果有错误,则形成NAK的DLLP包,通过物理层发送给对方。对方的数据链路层接收到NAK包后,会根据NAK包中的Sequence ID信息重新发送保存在Replay buffer中对应的TLP包。

7)数据链路层删除TLP包的Sequence ID和 LCRC,将得到的TLP包发送给事务层相应的VC receive buffer。

8)事务层检查CRC错误(如果有ECRC),如果没有错误,则将TLP包中的信息发送给软件层。

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值