- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PCIE数据链路层协议(DataLinkLayerSpecifications)
数据链路层协议
数据链路层作为处理层和物理层的中间层,为处理层TLP在链路中传递提供可靠机制。数据链路层主要负责TLP的可靠传输。所以数据链路层完成的主要任务是:1、数据交换。接收发送方处理层的TLP包,并送到物理层。另外从物理层接收TLP包并送到接收端的处理层。2、出错检测和裁决。LCRC和序列号(TLP Sequence Number)的生成;存储发送端的TLP用于再试重发;为TLP和DLLP做数据完成性检测(crc校验);DLLP的ack和nack响应;错误指示;链接确认超时重试机制。3、初始化和电源管理。跟踪链路状态并传送链路活动、链路复位、链路失去连连等状态给处理层;4、生成DLLP。用于链路管理功能包括TLP确认、电源管理、流程控制信息(VC通道初始化)交流。在链接两端的数据链路层点对点传输.
数据完整性检测就是为DLLP和TLP做crc校验DLLP使用crc-16,TLP使用32bit的LCRC,此外,TLP还有一个序列号(sequence Number),用于检测TLP丢失与否。LCRC和sequence Number检测有误的TLP或者在发送过程中丢失的TLP,将被发送端重新发送。发送端存放TLP的备份,在需要的时候将备份发送或者在收到接收端的正确接收确认后清除备份。
数据链路层跟踪链路连接的状态,并和处理层和物理层交流链路状态,通过物理层来完成对链路的管理。链路层中包含状态机DLCMSM(Data Link Control and Management State Machine)来完成这些任务,以下详细介绍。
DL_Inactive – Physical Layer reporting Link is non-operational or nothing is connected to the Port
DL_Init – Physical Layer reporting Link is operational, initialize Flow Control for the default Virtual Channel
DL_Active – Normal operation mode
Status output:
DL_Down – The Data Link Layer is not communicating with the component on the other side of the Link.
DL_Up – The Data Link Layer is communicating with the component on the other side of the Link.
Dl_Inactive状态随PCIE复位之后,将所有数据链路状态信息恢复到默认值,并放弃数据层重试缓冲器中的内容。当数据链路处于DL_Inactive状态时,将通知处理层链路处于非连接状态(DL_Down),处理层将停止发送TLP。数据链路层将不产生和接收DLLP。当接收到处理层的链路不是因软件致不使能的报告和物理层的Physical LinkUP=1b(一个物理层连接标志位)时,状态转换至DL_Init。
处于DL_Init状态时,初始化流程控制成为VC0通道,当在FC_INIT1初始化阶段时输出DL_Down链路状态给处理层,在FC_INIT2初始化阶段时输出DL_UP连接状态给处理层。在初始化成功和物理层继续传递Physical LinkUp=1b后,状态转换至DL_Active。如果Physical LinkUp=0b,状态转换至DL_Inactive。
DL_Active就是总线正常运转的状态,数据包TLP和DLLP正常发送和接收,发送DL_Up至处理层。物理层的Physical LinkUp=0b报告使得状态转换至DL_Inactive。
接下来就要提到流程控制初始化协议(Flow Control Initialization)。上电或者互连复位后,总线正常操作前,需要流程控制初始化至默认虚拟通道VC0。如果需要额外使能其他虚拟通道,必须在初始化VC0之后初始化相应虚拟通道的流程控制机制。VC初始化过程包括以下两个状态:1、FC_INIT1,2、FC_INIT2。
首先介绍FC_INIT1状态,在需要初始化VC通道时进入FC_INIT1状态,条件是链路处于DL_Init状态,VCx=VC0;某VC通道(1-7)被软件使能。在FC_INIT1状态,处理层阻止TLP的发送,数据链路层为VC通道按以下顺序发送InitFC1 DLLP:1、InitFC1—p;2、InitFC1—NP;3、InitFC1—Cpl。这些DLLP包的发送至少持续24us,并且建议按特定频率重复
文档评论(0)