PCIe Base Specification解析(六)
文章目录
- 3 Data Link Layer Specification
- 3.1 Data Link Layer Overview
- 3.2 Data Link Control and Management State Machine
- 3.2.1 Data Link Control and Management State Machine Rules
- 3.3 Data Link Feature Exchange
- 3.4 Floww Control Initialization Protocol
- 3.4.1 Flow Control Initialization State Machine Rules
- 3.4.2 Scaled Flow Control
- 3.5 Data Link Layer Packets (DLLPs)
3 Data Link Layer Specification
数据链路层充当事务层和物理层之间的中间阶段。它的主要职责是提供一种可靠的机制,用于在链路上的两个组件之间交换事务层数据包(TLP)。
3.1 Data Link Layer Overview
Figure 3-1: Layering Diagram Highlighting the Data Link Layer
数据链路层负责通过PCI Express链路可靠地将事务层提供的事务层数据包(TLP)传输到其他组件的事务层。数据链路层提供的服务包括:
数据交换(DataExchange) :
- 在发送端接收事务层TLP,送到物理层。
- 在接收端把物理层接收到的TLP发送给事务层。
错误检测和重试(Error Detection and Retry):
- TLP Sequence Number 和LCRC生成。
- 存储发送端的TLP用于链路层重试。
- TLP和DLLP的数据链路层数据完整性检查。
- Ack/Nak机制。
- 错误指示,用于错误报告和日志记录机制。
- 链路确认超时重播机制。
初始化和电源管理(Initialization and power management) :
- 跟踪链路状态并把active/reset/disconnected等状态发送给事务层。
DLLP (Data Link Layer Packet) :
- 用作链路管理功能的Ack/Nak DLLP、用作电源管理的DLLP和用作流控管理的DLLP。
- DLLP在链路两侧设备的的数据链路层交换。
DLLP是点到点而不是端到端的传输。TLP是端到端传输。
DLLP和TLP的数据完整性检查是通过跨链路发送的每个数据包附带的CRC完成的。DLLP使用16位CRC,而TLP使用32位LCRC。TLP还包含一个序列号,该序列号用于检测一个或多个完整TLP是否丢失。
收到的未通过CRC检查的DLLP将被丢弃。使用DLLP的机制可能会因信息丢失而遭受性能损失,但会进行自我修复,以使后续的DLLP会取代任何丢失的信息。
数据完整性检查(LCRC检查和序列号检查)失败,或在从一个组件到另一个组件的传输中丢失了TLP,则由发送器重新发送。发送器存储所有已发送TLP的副本,并在需要时重新发送这些副本,并且仅当它从其他组件收到Ack确认后才清除这些副本。如果在指定时间段内未收到Ack,则发送器将自动开始重新发送。接收方可以使用Nak请求发送方立即重发。
数据链路层像是一个信息管道,对事务层的延迟有所不同。在任何给定的单个链路上,灌入发送数据链路层(1和3)的所有TLP 之后将以相同顺序出现在接收数据链路层(2和4)的输出处,如Figure 3-1所示。之间的延迟将取决于许多因素,包括流水线延迟、链路的宽度、工作频率、链路上电信号的传输以及由数据链路层重试引起的延迟。由于这些延迟,传输数据链路层(1和3)可以向传输事务层施加反压,而接收数据链路层(2和4)将有效信息的存在或不存在传达给接收事务层。
3.2 Data Link Control and Management State Machine
数据链路层跟踪链路的状态。它与事务层和物理层通信链路状态,并通过物理层执行链路管理。数据链路层包含执行这些任务的数据链路控制和管理状态机(DLCMSM)。该状态机的状态描述如下,如Figure 3-2所示。
状态机状态有:
- DL_Inactive:物理层报告链路不可用或端口无连接时数据链路层处于DL_Inactive状态。
- DL_Feature(可选):物理层报告链路可操作,执行Data Link Feature Exchange。
- DL_Init:物理层报告链接可操作后进入DL_Init,数据链路层在DL_Init状态为默认虚通道初始化流控制。
- DL_Active:正常操作状态。
输出的数据链路层状态有两个:
-
DL_Down:数据链路层未与链路另一侧的组件进行通信。
-
DL_Up:数据链路层正在与链路另一侧的组件进行通信。
Figure 3-2 Data Link Control and Management State Machine
3.2.1 Data Link Control and Management State Machine Rules
DL_Inactive
- PCI Express Hot Reset、Warm Reset 或Cold Reset 后数据链路层进入该初始状态(请参阅Section 6.6)。请注意,DL状态不受FLR的影响(请参阅Section 6.6)。
- 进入DL_Inactive时:
- 所有数据链路层状态复位为默认值。
- 如果端口支持可选实现的Data Link Feature Exchange,则Remote DataLink Feature Supported 字段和 Remote Data Link Feature Supported Valid 字段必须清 0。
- 丢弃数据链路层Retry Buffer的值(see Section 3.6)。
在DL_Inactive时:
- 向事务层以及对端设备数据链路层报告DL_Down状态。
这将导致事务层丢弃所有outstanding transaction,并在内部终止尝试发送 TLP。对于下游端口,这等效于"Hot-Remove"。。对于上游端口,使链路断开等效于Hot Reset(see Section 2.9)。
- 丢弃来自事务层和物理层的TLP。
- 不能生成DLLP,也不能接收DLLP。
在以下情况会退出DL_Inactive并进入DL_Feature状态:
- 端口支持可选的Data Link Feature Exchange, Data Link Feature Exchange Enable
字段被置1,事务层指示该链路未被软件禁用,并且物理层报告Physical LinkUp=1∼b。
退出DL_Inactive时:
-
如果端口不支持可选实现的Data Link Feature Exchange,事务层指示该链路未被软件禁用,并且物理层报告Physical LinkUp=1b
-
如果端口支持可选实现的Data Link Feature Exchange,则Data Link Feature Exchange Enable字段清0,事务层指示该链路未被软件禁用,并且物理层报告Physical LinkUp=1b。
DL_Feature
- 在DL_Feature时,
- 按Section 3.3描述的执行 Data Link Feature Exchange协议。
- 报告DL_Down状态。
- 允许状态为DL_Down的端口的数据链路层丢弃任何接收到的TLP,前提是它不通过发送一个或多个Ack DLLP来确认那些TLP。
- 在以下情况会退出DL_Feature并进入DL_Init:
- Data Link Feature Exchange 成功完成,并且物理层继续报告 Physical LinkUp=1b,or
- Data Link Feature Exchange 确定远程数据链路层不支持可选的Data Link Feature Exchange协议,并且物理层继续报告 Physical LinkU p=1b。
- 在下列情况下,终止Data Link Feature Exchange 协议并退出到DL_Inactive:
- 物理层报告 Physical LinkUp=0b
DLnit
- 在DLnit时:
- 按照 Section 3.3 中描述的流控制初始化协议,为默认虚通道VCO初始化流控制。
- 发送FC_INIT1 DLLP的过程中报告DL_Down状态;发送FC_INIT2 DLLP的过程中报告 DLp 状态。
- 允许状态为 DLown 的端口的数据链路层丢弃任何接收到的TLP,前提是它不通过发送一个或多个Ack DLLP来确认那些TLP。
- 在以下情况会退出DL_Init并进入DL_Active状态:
- 流控制初始化成功完成,并且物理层继续报告 Physical LinkUUp=1b。
- 在以下情况下,终止尝试初始化VCO的流控制并退出到DL_Inactive:
- 物理层报告PhysicalLinkUp=0b。
DL_Active
- DL_Active为正常操作状态。
- 在DL_Active时:
- TLP正常传输。
- DLLP正常发送和接收。
- 向事务层和物理层报告DL_Up状态。
- 在下述情况退出到DL_Inactive状态:
- 物理层报告 Physical LinkUp=0b。
- 上游组件可以将从DL_Active到DL_Inactive的转换视为一个Surprise Down error,除非以下情况阻止了此错误检测:
- 如果通过软件将Bridge Control寄存器中的Secondary Bus Reset字段设置为1b,则随后的向DL_Inactive的转换不得视为错误。
- 如果软件已将Link Disable 字段设置为1b,则随后的向DL_Inactive的转换不得视为错误。
- 如果由于该端口上方的事件而导致Switch下游端口转换为DL_Inactive,则转换到DL_Inactive不得被视为一个错误。示例事件包括:Switch 上游端口发送一个Hot Reset,Switch上游链路转换为DL_Down以及设置了Switch 上游端口中的Secondary Bus Reset字段。
- 如果已通过此端口发送了PME_Turn_Off消息,则随后的向DL_Inactive的转换不得视为错误。
- 请注意,只有在关闭电源,复位或恢复链路的请求发送到物理层后,才会发生这种向DL_Inactive的转换。
- 请注意,在PME_Turn_Off/PME_TO_Ack握手未能成功完成的情况下,可能会检测到Surprise Down错误。
- 如果端口与可热插拔插槽关联(Slot Capabilities 寄存器中的Hot-Plug Capable 设置为1b),并且Slot Capabilities 寄存器中的Hot-Plug Surprise 设置为1b,则任何向DL_Inactive的转换都不视为错误。
如果端口与可热插拔插槽关联(Slot Capabilities 寄存器中的Hot-Plug Capable 设置为1b),并且 Slot Capabilities 寄存器中的Power Controller Control 设置为1b(Off),则任何向DL_Inactive的转换都不视为错误。
由上述情况中的一种或多种引起的错误阻止必须保持有效,直到端口退出DL_Active 并随后返回DL_Active为止,而再次返回DL_Active时没有发生任何阻止情况。
请注意,从DL_Active退出只是根据错误检测阻止条件所预期的预期过渡。
如果实现,则是报告的与检测端口相关的错误(请参见Section 6.2)。
IMPLEMENTATION NOTE
Physical Layer Throttling
请注意,在某些情况下,物理层可能暂时无法接受来自数据链路层的TLP和DLLP。数据链路层必须通过为物理层提供传达此条件的机制,以及为TLP和DLLP被该条件暂时阻止的机制来理解这一点。
3.3 Data Link Feature Exchange
Data Link Feature Exchange 协议是可选实现的。实现此协议的端口会实现一个Data Link Feature Extended Capability(请参阅 Section 7.7.4)。此Capability包含四个字段:
- Local Data Link Feature Supported 字段表示local Port支持此数据链路功能。
- Remote Data Link Feature Supported 字段表示remote Port支持此数据链路功能。
- Remote Data Link Feature Supported Valid 字段表示 Remote Data Link Feature Supported 字段包含有效数据。
- Data Link Feature Exchange Enable 字段允许系统禁用 Data Link Feature Exchange。这可用于解决无法正确忽略DLLP的旧硬件的问题。
Data Link Feature Exchange 协议将 Local Port的 Feature Supported 的信息传输到Remote Port,并捕获该 Remote Port的Feature Supported的信息。
此协议的规则如下:
-
在进入DL_Feature时:
- Remote Data Link Feature Supported 和 Remote Data Link Feature Supported Valid 字段必须清0。
-
在DL_Feature时:
-
事务层必须阻塞TLP的发送。
-
发送Data Link Feature DLLP。
-
发送的DLLP的Feature Supported 字段必须等于Local Data Link Feature Supported字段的值。
-
发送的DLLP的Feature Ack字段必须等于RemoteDataLinkFeatureSupported Valid字段值。
-
-
-
Data Link Feature DLLP必须每34μs至少发送一次。在Recovery或Configuration状态中花费的时间不会导致此限制。
-
处理收到的Data Link Feature DLLP。
- 如果 Remote Data Link Feature Supported Valid字段清0,请在Remote Data Link Feature Supported字段中记录接收到的Data Link Feature DLLP中的 Feature Supported字段的值,然后把Remote Data Link Feature Supported Valid字段设置为1。
-
在以下情况下会退出DL_Feature:
-
收到了一个InitFC1 DLLP。
-
收到了一个MR-IOV MRInit DLLP(编码为00000001b)。or
-
在DL_Feature中时,至少收到一个Feature Ack字段设置为1的Data Link Feature DLLP。
-
每个Data Link Feature在 Feature Supported 字段中都有一个对应的比特位。当在Local Data Link Feature Supported 和Remote Data Link Feature Supported 字段中将该位设置为“1时,将激活此Data Link Feature。
Table 3-1中显示了 Data Link Feature及其对应的比特位置。
Table 3-1 Data Link Feature Supported Bit Definition
3.4 Floww Control Initialization Protocol
在链路正常运行之前,有必要为默认虚通道VCO初始化流控制(Section 6.6)。此外,启用其他虚通道(VC)后,必须为每个新启用的VC完成流控制初始化过程,然后才能使用它(see Section 2.6.1)。本节介绍了用于所有VC的初始化过程。请注意,由于在所有其他VC之前先启用了VCO,所以在初始化vco之前不会有任何类型的TLP业务流处于活动状态。但是,在初始化其他VC时,通常将在其他已启用的VC上传输TLP业务流。此类业务对其他VC的初始化过程没有直接影响。
VC初始化有两个过程:
- FC_INIT1
- FC_INIT2
各个过程的规则如下节描述。
3.4.1 Flow Control Initialization State Machine Rules
- 如果在VC 1-7初始化期间的任何时间禁用了VC,则终止VC的流控制初始化过程。
- FCNIT1 状态的规则:
- 如果需要初始化一个VC(VCx) 就进入此状态。
- 在进入 DLnit_状态时, VCx=VCO∘
- 当软件使能一个VC(VCx=VC1-7)时就会进入FCNIT1 (see Sections 7.9.1 and 7.9.2)。
- 在FC_INIT1状态下:
- 事务层必须阻止使用VCx传输TLP。
- 按下述顺序为VCx发送以下三个InitFC1 DLLP:
- InitFC1-P(first)
- InitFC1-NP(second)
- InitFC1-Cpl(third)
- 三个InitFC1 DLLP必须每34μs至少发送一次。
- 在Recovery或Configuration 状态消耗的时间不会导致此限制。
- 强烈建议频繁重复InitFC1 DLLP传输,尤其是在没有其他TLP或DLLP可用于传输时。
- 如果链路激活了Scaled Flow Control,请将InitFC1 DLLP中的HdrScale和DataScale字段设置为01b,10b或11b,以指示其在相应的HdrFC和DataFC值上使用的缩放因子。
- 如果发送器不支持Scaled Flow Control,或者如果链路未激活 Scaled Flow Control,则将HdrScale和 DataScale字段设置为00b。
- 除非要保证最小的传输 InitFC1 DLLP的频率,否则数据链路层不得阻止其他传输。
- 请注意,这包括所有物理层发起的传输(例如,有序集)、Ack和Nak DLLP、以及使用先前已完成初始化的VC的TLP。
- 处理收到的InitFC1和InitFC2 DLLP:
- 记录其中携带的HdrFC和DataFC值。
- 如果接收器支持 Scaled Flow Control,则记录其中的HdrScale和DataScale值。
- 一旦记录了VCx的每个P、NP和Cpl的FCunit值,就设置标志Fl1。
- 下述条件满足则退出FC_INIT1状态进入 FC_INIT2:
- 已设置FI1,表示已为VCx的每个P、NP和Cpl记录了FC unit值,则进入FC_INIT2状态。
- 如果需要初始化一个VC(VCx) 就进入此状态。
FC_INIT2状态的规则:
-
在FC_INIT2状态时:
- 事务层必须阻止使用VCx传输TLP。
- 按下述顺序为VCx发送以下三个InitFC2 DLLP:
- InitFC2-P(first)
- InitFC2-NP (second)
- InitFC2-Cpl (third)
- 三个InitFC1 DLLP必须每34μs至少发送一次。
- 在Recovery或Configuration 状态消耗的时间不会导致此限制。
- 强烈建议频繁重复InitFC2 DLLP传输,尤其是在没有其他TLP或DLLP可用于传输时。
- 如果链路激活了 Scaled Flow Control,请将InitFC2 DLLP中的HdrScale和DataScale字段设置为01b,10b或11b,以指示其在相应的HdrFC和DataFC值上使用的缩放因子。
- 如果发送器不支持Scaled Flow Control,或者如果链路未激活 Scaled Flow Control,则将HdrScale和DataScale字段设置为00b。
- 除非要保证最小的传输InitFC2 DLLP的频率,否则数据链路层不得阻止其他传输。
- 请注意,这包括所有物理层发起的传输(例如,有序集)、Ack和Nak DLLP、以及使用先前已完成初始化的VC的TLP。
- 处理收到的InitFC1和 InitFC2 DLLP:
- 忽略其中携带的HdrFC、DataFC、HdrScale和DataScale的值。
- 一旦收到任何针对VCx的InitFC2 DLLP,就设置标志FI2。
- 在收到VCx上的任何TLP或UpdateFC DLLP时,设置标志FI2。
-
满足下述条件则完成初始化并退出FC_INIT2:
- FI2被设置为1。
- 如果链路激活了Scaled Flow Control,则发送器必须在VCx的所有UpdateFC DLLP中为HdrScale和DataScale发送01b,10b或11b。
- 如果支持 Scaled Flow Control或链路未激活 Scaled Flow Control,则发送器必须在所有VCx的UpdateFC DLLP中为 HdrScale和 DataScale 发送00b。
IMPLEMENTATION NOTE
Example of Flow Control Initialization
Figure 3-3 说明了 Switch和下游组件之间vco的流控制初始化协议的示例。在此示例中,每个组件都会为每种类型的流控制信用通告最小允许值。对于这两个组件,支持的最大Max_Payload_Size值为1024字节,对应于040h的数据有效负载信用通告。所有DLLP都显示为已收到,没有错误。
Figure 3-3 VCO Flow Control Initialization Example with 8b/10b Encoding-based Framing
3.4.2 Scaled Flow Control
如果没有足够的流控制信用额度,则可能会影响链路性能。在较高的链路速度下,这种影响会变得更加明显,而限制127个Header 信用(流控DLLP中HdrFC字段为8-Bit)和2047个Data信用(流控DLLP中DataFC字段为12-Bit)会限制性能。Scaled Flow Control 机制旨在解决此限制。(1Credit=16∼B)
Flow Control Credits 代表的是接收端VC buffer的可用空间,这个值直接影响着PCle Link的性能。Scaled Flow Control 扩展了流控DLLP,其中加入了Hdr Scale字段和 Data Scale字段,用于对Credit的数量进行成倍的放大。见Table3-2, Figure 3-7, Figure 3-8和Figure 3-9。
引入Scaled Flow Control 功能之后,PCle的Data Link也发生了相应的变化。与PCle 3.0相比,PCle多了一个"DL_Feature"状态。不过,要进入DL_Feature状态还是有条件的,需要在Data Link Feature Capabilities Register 中使能 Data Link Feature Exchange 字段。在Flow Control中,DL_Feature这个状态主要用于Scaled Flow Control 功能的握手交互(专业名称叫做Handshake)。在这个过程中,会用到一个叫做Data Link Feature DLLP。
Data Link Feature DLLP 中 Byte1 bit[7]是 Feature Ack bit,就是用来握手的,Byte 3 bit[0]也就是Feature support的bit[0]代表Scaled Flow Control 是否 support,Feature support的其他bit[22:1]目前是保留的,以备将来之用。
允许所有端口支持Scaled Flow Control。支持16.0 GT/s和更高数据速率的端口必须支持按Scaled Flow Control。Scaled Flow Control 激活不会影响以16.0GT/s和更高数据速率运行的能力。
当未为链路激活Scaled Flow Control时,以下规则适用:
- 发送和接收的InitFC1、InitFC2和UpdateFC DLLP的HdrScale和DataScale字段必须为00b。
- HdrFC计数器为8比特宽,且HdrFC DLLP字段包括此计数器的所有比特。
- DataFC计数器为12比特宽,且DataFC DLLP字段包括此计数器的所有比特。
当为链路激活 Scaled Flow Control时,以下规则适用:
- InitFC1和InitFC2 DLLP在HdrScale字段中必须包含01b、10b或11b。该值由Table3-2中定义的指定信用类型的outstanding 的最大Header信用数确定。
- InitFC1和InitFC2 DLLP在DataScale字段中必须包含01b,10b或11b。该值由Table3-2中定义的指示信用类型的outstanding 的数据有效载荷信用的最大数量确定。
- 如果在状态FC_INIT1中记录的接收到的HdrScale和DataScale值不为零,则在此VC上启用Scaled Flow Control,并且UpdateFC DLLP在HdrScale和DataScale字段中必须包含01b,10b或11b。
- 如果在状态FC_INIT1中记录的接收到的HdrScale和DataScale值为零,则在此Vc上未启用Scaled Flow Control,并且 UpdateFC DLLP在HdrScale和DataScale字段中必须包含00b。
Table 3-2: Scaled Flow Control Scaling Factors
3.5 Data Link Layer Packets (DLLPs)
以下DLLP用于支持链路操作:
- Ack DLLP:TLP Sequence number 应答;用于指示成功接收到一定数量的TLP。
- Nak DLLP: TLP Sequence number 否定确认;用于启动数据链路层重试。
- InitFC1、InitFC2和UpdateFC DLLP:用于流控制。
- 电源管理DLLP。
3.5.1 Data Link Layer Packet Rules
形成DLLP时,所有标记为“Reserved”(缩写为R)的DLLP字段都必须用全0填充。接收者必须忽略此类字段中的值。每种情况都指定了编码字段中保留值的处理。
所有DLLP都包括以下字段,如Figure 3-4:
- DLLP Type-DLLP类型编码字段,如Table 3-3。
- 16-bit CRC字段。
Figure 3-4 DLLP Type and CRC Fields
Table 3-3: DLLP Type Encodings
- 对Ack和Nak DLLP (see Figure 3-5) :
- AckNak_Seq_Num字段用于指示哪些TLP受到影响。
- 数据链路层根据Section 3.6中提供的规则发送和接收。
- 对于InitFC1、InitFC2 和 UpdateFC DLLP:
- HdrFC字段指P、NP或Cpl类型报头的信用值。
- DataFC字段指P、NP或Cpl类型数据负载的信用值。
- HdrScale 字段包含对应类型的Header的缩放因子。编码在Table 3-4中定义。
- DataScale 字段包含对应类型的有效负载数据的缩放因子。编码在Table 3-4中定义。
-
如果激活了Scaled Flow Control,则必须在所有传输的InitFC1,InitFC2和UpdateFC DLLP中将 HdrScale和DataScale字段设置为01b,10b或11b。
-
在UpdateFC中,仅允许发送器在支持Scaled FlowControl的情况下在HdrScale和DataScale字段中发送非零值,并且在此VC的InitFC1和InitFC2中接收到HdrScale和DataScale的非零值。
-
InitFC1、InitFC2和UpdateFC DLLP包格式如 Figure 3-7、Figure 3-8和Figure 3-9所示。
-
当数据链路层初始化虚通道的流控制(请参见Section 3.4),事务层根据Section2.6中的规则对流控制进行初始化后,触发传输。
-
在数据链路层接收时检查完整性,如果正确,则将DLLP的信息内容传递到事务层。如果检查失败,则信息将被丢弃。
电源管理DLLP (see Figure 3-10) :
-
根据Chapter 5中的电源管理逻辑规则触发。
-
在数据链路层接收时检查完整性,然后传递到组件的电源管理逻辑。
Vendor Specific DLLP (see Figure 3-11):
-
建议接收者静默丢弃Vendor Specific DLLP,除非由特定于实现的机制启用。
-
建议发送者不要发送Vendor Specific DLLP,除非由特定于实现的机制启用。
NOP DLLP (see Figure 3-6)
-
接收者应在检查DLLP的数据完整性后不采取任何措施并将其丢弃。
注:这是不支持DLLP Type 编码的更通用规则的特殊情况(请参见Section 3.6.2.2)。
Data Link Feature DLLP (see Figure 3-12)
-
Feature Ack字段设置为1表示发送端口已接收到一个Data Link Feature DLLP。
- Feature Supported字段表示发送端口支持的feature。这些位等于Local Data Link Feature Supported 字段的值(请参见Section 7.7.4.2)。
OM13781A
Figure 3-5 Data Link Layer Packet Format for Ack and Nak
NOPDataLinkPktFmt
Figure 3-6 NOP Data Link Layer Packet Format
OM13782B
Figure 3-7 Data Link Layer Packet Format for InitFC1
OM13783B
Figure 3-8 Data Link Layer Packet Format for InitFC2
OM13784B
Figure 3-9 Data Link Layer Packet Format for UpdateFC
OM14304A
Figure 3-10 PM Data Link Layer Packet Format
OM14305A
Figure 3-11 Vendor-specific Data Link Layer Packet Format
以下是与数据链路层数据包(DLLP)相关的特征和规则:
-
当DLLP呈现给物理层或从物理层接收时,它们与TLP不同。
-
DLLP使用一个16-bit的CRC保护DLLP完整性。
-
该16-bit CRC计算规则如下(see Figure 3-13) :
-
用于CRC计算的多项式的系数表示为100Bh。
-
seed值为FFFFh。
-
CRC计算从byte0的bit0开始,从每个字节的bit0到bit 7。
-
请注意,CRC计算使用DLLP的所有位,而与字段类型无关,包括保留字段。计算结果经过补充,然后放入DLLP的16位CRC字段中,如Table3-5所示。
-
Table 3-5 Mapping of Bits into CRC Field