PCIe在传输中用8b/10b编码,所以单PCEe2.0的有效带度是4Gb/s

x2模式将用于内部接口而非插槽模式

PCIe卡能使用在至少与之传输通道相当的插槽上(例如x1接口的卡也能工作在x4或x16的插槽上)。一个支援较多传输通道的插槽可以建立较少的传输通道(例如8个通道的插槽能支援1个通道)。PCIe设备之间的链接将使用两设备中较少通道数的作为标准。一个支援较多通道的设备不能在支援较少通道的插槽上正常工作,例如x4接口的卡不能在x1的插槽上正常工作(插不入),但它能在x4的插槽上只建立1个传输通道(x1)。PCIe卡能在同一数据传输通道内传输包括中断在内的全部控制信息。这也方便了与PCI的兼容。多传输通道上的数据传输采取交叉存取,这意味着连续字节交叉存取在不同的通道上。这一特性被称之为“数据条纹”,需要非常复杂的硬件支援连续数据的同步存取,也对链接的数据吞吐量要求极高。由于数据填充的需求,数据交叉存取不需要缩小数据包。与其它高速数传输协议一样,时钟信息必须嵌入信号中。在物理层上,PCIe采用常见的8B/10B代码方式来确保连续的1和0字符串长度符合标准,这样保证接收端不会误读。编码方案用10位编码比特代替8个未编码比特来传输数据,占用20%的总带宽。到了PCIe 3.0,采用128B/130B代码方式,仅占用1.538%的总带宽。

PCIe有1x,2x,4x,8x甚至16x之分。也有end point和root complex,end point是作从机来用,root complex是作主机来用。DM8168是x2的,能作为一个x1或者一个x2来使用。而且可以配置成主从两种模式。DM8168文档说明如下:

One PCI Express® (PCIe®) 2.0 Port With
Integrated PHY
– Single Port With or Lanes at 5.0 GT/s
– Configurable as Root Complex or Endpoint

具体配置应该由PL_GEN2来完成是使用x1还是x2。

如果要配置成x1,只能使用Lane0,关于这点请参考下面的说明。
17.1.5 Supported Use Case Statement
The PCIe subsystem has only one interface link and this link can be used in a x1 or x2 lane arrangements
connecting to only one single device. In other words, there exists no support for connecting to two devices
in an x1 arrangement since it has the support of a single interface link. It also means that it cannot be
used as a switch. Lane 0 must always be connected and functioning, either alone or in conjunction with
Lane 1, for the link to be established. Lane 1 cannot be used alone.
请参考Technical Reference Manual
如果要配置成x1,只能使用Lane0,关于这点请参考下面的说明。
17.1. Supported Use Case Statement
The PCIe subsystem has only one interface link and this link can be used in a x1 or x2 lane arrangements connecting to only one single device. In other words, there exists no support for connecting to two devices in an x1 arrangement since it has the support of a single interface link. It also means that it cannot be used as a switch. Lane must always be connected and functioning, either alone or in conjunction with
Lane , for the link to be established. Lane cannot be used alone.
请参考Technical Reference Manual

  

PCIE学习的更多相关文章

  1. PCIe学习笔记(15)--- TLP的ROUTING方式

    PCIE是POINT TO POINT的,不像PCI,是SHARED-BUS,总线上的数据,是被所有EP DEV看到的. 这一点与USB2.0比较类似,是广播方式的(BROADCASTING) USB ...

  2. PCIE学习链接集合

    <PCIE基础知识+vivado IP core设置> https://blog.csdn.net/eagle217/article/details/81736822 <一步一步开始 ...

  3. PCIE学习笔记--TLP Header详解(三)

    目录篇地址为:http://blog.chinaaet.com/justlxy/p/5100053481 Completions Completions的TLP Header的格式如下图所示: 这里来 ...

  4. PCIE学习笔记--PCIe错误源详解(二)

    转载地址:http://blog.chinaaet.com/justlxy/p/5100057799 这篇文章主要介绍事务(Transaction)错误.链路流量控制(Link Flow Contro ...

  5. FPGA实战操作(2) -- PCIe总线(协议简述)

    目录 1. PCIe基础知识 2. 事务层协议 2.1 数据包结构 2.2 帧头含义详述 3. 报文举例 3.1 寄存器读报文 3.2 完成报文 4. 机制简述 4.1 Non-Posted和Post ...

  6. FPGA实战操作(2) -- PCIe总线(例程设计分析)

    1.框架总览 平台:vivado 2016.4 FPGA:A7 在实际应用中,我们几乎不可能自己去编写接口协议,所以在IP核的例程上进行修改来适用于项目是个不错的选择. 通过vivado 中有关PCI ...

  7. 汲取营养的blog专栏

    网路上博客专栏是学习提升.思考深化的好途径,目前发现的博客价值高的平台: (1)EETOP www.eetop.cn (2)CSND www.csdn.net (3)cnblog www.cnblog ...

  8. NCCL(Nvidia Collective multi-GPU Communication Library) Nvidia英伟达的Multi-GPU多卡通信框架NCCL 学习;PCIe 速率调研;

    为了了解,上来先看几篇中文博客进行简单了解: 如何理解Nvidia英伟达的Multi-GPU多卡通信框架NCCL?(较为优秀的文章) 使用NCCL进行NVIDIA GPU卡之间的通信(GPU卡通信模式 ...

  9. 转载:使用Xilinx IP核进行PCIE开发学习笔记(一)简介篇

    https://zhuanlan.zhihu.com/p/32786076 最近接触到一个项目,需要使用PCIE协议,项目要求完成一个pcie板卡,最终可以通过电脑进行通信,完成电脑发送的指令.这当中 ...

随机推荐

  1. C#正则表达式Regex类的用法

    C#正则表达式Regex类的用法 更多2014/2/18 来源:C#学习浏览量:36891 学习标签: 正则表达式 Regex 本文导读:正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串, ...

  2. openscales实现漂亮的冒泡效果

    使用的时候openscales 默认的冒泡效果确实有点简陋,想实现那种看着比较舒服的效果,只能自己定义了.参考现有的openscales实现的方式,它是通过控件的状态实现的,每个状态中使用Path绘制 ...

  3. [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢?   原因在于: ...

  4. SVN show log failed

    Q: SVN 不能显示日志 能正常update, commit,但是show log的时候报错 A:可能原因是服务器权限配置问题 修改配置文件svnserve.conf 和 authz, 修改前请先备 ...

  5. python IDLE编程时遇到Python Error: Inconsistent indentation detected! 解决方法

    仔细检查了几遍代码,发现indent没有错误! 之后试将所有indent都用空格代替,程序就跑起来了. 具体原因可能是IDLE环境内的Tab键有小bug.

  6. c++学习--面向对象一

    类与对象一 一 注意的点 1 利用构造函数给数据成员初始化的两种办法:1 赋值语句,2 用成员初始化列表 解释:1 成员初始化列表的一般形式为: 数据成员名1(初始值1),数据成员名2(初始值2) 2 ...

  7. JS数组转成json字符串的注意事项

    在js中常常会将一个数组转成json字符串发送给后端. 这时候在定义数组数据结构的时候需要格外注意,意味json中是有集合和对象的区别的. 集合的定义是[];对象的的定义是{}. 这时候,在创建数组时 ...

  8. cursor 鼠标样式——属性

    取值: [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-res ...

  9. WKWebView _WebFilterIsActive returning: NO

    写这篇文是因为在UIWebView加载页面的时候有时候会返回: filterBlacklist = ( ); filterWhitelist = ( ); restrictWeb = 1; useCo ...

  10. ppt 数组课后作业

    任务要求:随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 设计思路:建一个数组,在for语句中将随机数存入数组中,然后每生成一个数就进行相加, ...