PCIe事务层包TLP Header详解

 

1、事务层包的一般格式:

 

        包的header为3DW(double word)或者4DW(一个DW代表4字节),数据负载为1~1024DW(即4~4096byte,最大4M),TLP Digest可选,TLP Digest表示检查,即CRC校验可选,长度为1DW(4byte),

 

 

      TLP header的格式和内容会随着TLP的类型和路由(ID、Address、implcit)方式而改变,TLP的类型由Fmt(Format)决定,类型由type决定,

 

 

 

 

 

 

     关于byte enable,分为Last DW Byte Enables和First DW Byte Enables,在PCIe中Data Payload的单位是DW,也就是说数据大小(地址)需要以双字进行对齐,优势数据的大小并不是DW的整数倍,因此引入了Byte Enable来解决该问题,需要遵循的原则为:

(1)、Byte enable为高电平有效,低电平表示Data Payload对应的byte为无效,不被completer使用。

(2)、如果有效数据小于1DW,即小于4byte,则last DW byte enable应全部为0.

(3)、如果有效数据大于1DW,则Last DW byte enable 中至少有一位有效

(4)、如果有效数据大于等于3DW,则first DW byteenable和

 

      关于TLP的Data Payload有:

(1)、Data Payload的大小由TLP Header中的length决定

(2)、Data Payload的大小并不是有效的数据的大小,有效数据的大小是由Data Payload和Byte Enable共同决定的。

(3)、data Payload采用的对齐方式i是小端对齐,低字节存放于低地址中。

(4)、当事务包类型为Message是,Length一般是保留的,除非该Message是带有数据的MsgD。

(5)、TLP的Data Payload大小不得超过Max_Payload_Size的值,该值位于Device Control Register中。对于比较大的数据量,因此只能分多次进行发送。对于读请求来说,并没有Data Payload,也就是说该规则并不适用于读请求。

 

posted on 2019-11-30 15:21  🐗  阅读(3267)  评论(0编辑  收藏  举报

导航