上一篇讲到了PCIe的事务层,下面会对数据链路层和物理层做简要介绍。
数据链路层的主要功能为:
TLP传输
出错检测和裁决
LCRC和Sequence Number的生成
存储发送端的TLP用于重发
为TLP和DLLP做crc校验
DLLP的ack/nack响应
链路初始化和电源管理
DLLP传输
用于链路管理功能(TLP确认,电源管理,VC通道初始化)
仍然用下面这张图来梳理三层结构中的事务包.
数据链路层为了保证事务包传输的正确性, 采用了Ack/Nak的握手机制,
Ack/Nak是一种由硬件实现的,完全自动的机制,目的是保证TLP有效可靠地传输。Ack DLLP用于确认TLP被成功接收,Nak DLLP则用于表明TLP传输中遇到了错误。
下图为数据链路层的工作过程:
PCIe的物理层 :
物理层分为两部分,逻辑物理层和电气物理层。如下图所示:
电气层和逻辑层间定义了一个成为PIPE的物理接口
电气子层: 包括收发器、模拟缓冲器、串行/解串行器(SerDes)在内的模拟器件以及10位接口
编码子层(PCS)把每8位数据字节编码/解码为10位代码。这种编码特性不仅能检查有效字符,而且也限制了被发送的0/1数量上的差异,从而同时在发射器和接收器侧保持了DC均衡