(2)、DL Init:物理层通知数据链路层当前PCIe链路可用,此时数据链路层需要首先初始化VC0的流量控制机制,之后初始化其他通道的流量控制机制,且此时不可以收发DLLP或TLP。此时物理层处于链路初始化状态。 在DL INIT时,首先对PCIe的VC0的流量控制进行初始化,流量控制(Flow Control)初始化分为两个阶段(FC_INIT1&FC_IN...
这会导致过渡到 DL_Init 子状态,该子状态包含两个处理Flow Control初始化的阶段:FC_INIT1和FC_INIT2。 6.4.3 FC_Init1详细信息 在FC_INIT1 状态下,设备会连续发送 3 个 InitFC1 Flow Control DLLP 序列,通告其Receiver Buffer Buffer大小(参见图 6-5)。根据规范,Data包必须按以下顺序发送:Posted、Non-po...
(2)、DL Init:物理层通知数据链路层当前PCIe链路可用,此时数据链路层需要首先初始化VC0的流量控制机制,之后初始化其他通道的流量控制机制,且此时不可以收发DLLP或TLP。此时物理层处于链路初始化状态。 在DL INIT时,首先对PCIe的VC0的流量控制进行初始化,流量控制(Flow Control)初始化分为两个阶段(FC_INIT1&FC_IN...
当进入FC_INIT1阶段后,device会持续依次发送3个InitFC1 Flow Control DLLPs初始化接收端的VC buffer。 依照PCIe协议中的定义,InitFC1 Flow Control DLLPs包括Posted, Non-Posted, Completions三类,格式如下表: FC_INIT2: FC_INIT1已经对Flow Control相关的缓存进行初始化,FCINIT2的作用主要是验证FC_INIT1的结果。
在流量控制的FC_INIT1阶段,数据链路层将向事务层提交DL_Down状态信息;而在流量控制的FC_INIT2 阶段,数据链路层将向事务层提交DL_Up状态信息。 当PCIe链路处于DL_Down状态时,发送端可以丢弃任何没有被ACK/NAK确认的TLP,数据链路层几乎不会受到事务层的干扰,保证流量控制初始化的正常进行。 当VC0的流量控制初始化...
在FC_Init1步骤中,PCIe设备会连续地发送三个InitFC1类型的Flow Control DLLP来报告其接收Buffer 的大小。三个DLLP的顺序是固定的:Posted、Non-Posted然后是Completions。如下图所示: FC_Init2与FC-Init1类似,同样是连续的发送三个InitFC2类型的DLLP,当完成后,DLCMSM(上一篇文章中提到的状态机)会切换到DL_Activ...
Length:Payload的长度,单位为DW(Double Word),1DW = 4字节 这里由两个字段TC和Attr我们没有介绍,因为它们是事务描述符的一部分,我们马上就会介绍。 2.2.2. 事务描述符(Transaction Descriptor) 为了帮助通信的双方知道对方的信息和对消息的处理方式进行描述,在TLP的头中有几个公共的字段,合在一起被称为事务描述...
Flow Control初始化被分为两个步骤,FC_Init1和FC_Init2,其在整个数据链路控制和管理状态机(Data Link Control & Management State Machine)的位置如下图所示: 在FC_Init1步骤中,PCIe设备会连续地发送三个InitFC1类型的Flow Control DLLP来报告其接收Bu...
FC_Init1步骤中,PCIe设备会连续地发送三个InitFC1类型的Flow Control DLLP来报告其接收Buffer 的大小。三个DLLP的顺序是固定的:Posted、Non-Posted然后是Completions【就在传输层】 传输层 FC_Init2与FC-Init1类似,同样是连续的发送三个InitFC2类型的DLLP,当完成后,DLCMSM(上一篇文章中提到的状态机)会切换到DL...