zoukankan      html  css  js  c++  java
  • 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,也就是说该规则并不适用于读请求。

  • 相关阅读:
    学习、发现和创造一切皆有规律
    Ubuntu12.04下建立交叉编译环境、使用QEMU模拟CortexA9、QEMU运行uboot
    基于ARM的SoC设计入门[zz]
    ARM指令集详解[zz]
    电子工程自学步骤与书籍非电子专业
    IC设计的前端和后端[zz]
    [转]用C#获取IE临时文件
    二行代码解决全部网页木马(含iframe/script木马)(zt)
    winform 分页控件,源码下载
    在UpdatePanel中GridView导出EXECL问题
  • 原文地址:https://www.cnblogs.com/luxinshuo/p/11962599.html
Copyright © 2011-2022 走看看