pcie握手机制_PCIe初探(2/2)

本文介绍了PCIe的数据链路层和物理层,包括TLP传输、错误检测、DLLP的Ack/Nak握手机制、物理层的编码子层和电气子层功能。此外,还概述了PCIe上电后的链路初始化、枚举扫描和配置BAR空间的过程。
摘要由CSDN通过智能技术生成

上一篇讲到了PCIe的事务层,下面会对数据链路层和物理层做简要介绍。

数据链路层的主要功能为:

TLP传输

出错检测和裁决

LCRC和Sequence Number的生成

存储发送端的TLP用于重发

为TLP和DLLP做crc校验

DLLP的ack/nack响应

链路初始化和电源管理

DLLP传输

用于链路管理功能(TLP确认,电源管理,VC通道初始化)

仍然用下面这张图来梳理三层结构中的事务包.

数据链路层为了保证事务包传输的正确性, 采用了Ack/Nak的握手机制,

Ack/Nak是一种由硬件实现的,完全自动的机制,目的是保证TLP有效可靠地传输。Ack DLLP用于确认TLP被成功接收,Nak DLLP则用于表明TLP传输中遇到了错误。

下图为数据链路层的工作过程:

PCIe的物理层 :

物理层分为两部分,逻辑物理层和电气物理层。如下图所示:

电气层和逻辑层间定义了一个成为PIPE的物理接口

电气子层: 包括收发器、模拟缓冲器、串行/解串行器(SerDes)在内的模拟器件以及10位接口

编码子层(PCS)把每8位数据字节编码/解码为10位代码。这种编码特性不仅能检查有效字符,而且也限制了被发送的0/1数量上的差异,从而同时在发射器和接收器侧保持了DC均衡,进而大大提高了电磁兼容性(EMC)和电气信号性能。

在物理层内PIPE接口的另一侧包含用以指示链路训练和状态的状态机(LTSSM)、通道间去除偏移、特殊序列检测和生成等功能。

电气层涉及模拟电路的部分,这里简单了解一点:

从串行引脚层到PIPE接口层统称为物理层。

从PIPE接口到应用的那些层称为数字控制器(Controller)。

SerDes设计挑战

串行到并行的数据转换,要求先进的模拟设计

不同工艺技术间,模拟设计不具有移植性。所以必须针对芯片制造所采用的工艺技术对物理层实施重新设计

高速-模拟链路引入的额外设计复杂性使设计难度进一步加大(如因信号完整性和噪音导致的衰减问题)

物理层必须通过严格的电气和兼容性测试,以确保与其他设备的互操作性。

逻辑物理层:

物理层的发射部分负责:

采用特殊符号插入对数据包进行帧化处理; 如用STP或SDP符号标志数据包的开始,用END符号标记数据包结束。

通道映射使顺序传送数据包在到通道链路上同时发送,从而增加吞吐量。接收器物理层以正确顺序对数据包进行重组

数据加扰

链路控制 – 初始化、宽度和通道反转协商

多通道传输控制

生成跳跃序列以补偿链路两端的时钟PPM差。

物理层的接收部分负责:

负责包含多通道链路的通道映射、通道到通道间的去偏移

数据解扰

发现数据包并实施去帧化处理

CDR恢复始终信号

检测特殊数据包序列,如: TS1, TS2, Skip和电气闲置。

关于三层结构介绍暂时到这里,那么PCIe在上电后是怎么开始工作的呢?下面会较详细的叙述PCIe开始工作的过程。

PCIe开始工作主要分为3个步骤:链路训练,枚举扫描,配置BAR空间。

链路初始化:

Link Initialization & Training:

枚举扫描:

总线枚举过程:

配置BAR:

配置基地址寄存器,给PCIe分配地址空间。

PCIe还有很多其他内容,比如Ordering, 中断,RAS,Power管理,虚拟化等,每一个话题都可以单独开题,PCIe初探部分就到此为止了,后续会对PCIe的Ordering和在ARM架构中的应用做一次专题,敬请期待.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值