0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个简单地的例子来回顾PCIe总线的结构、事务层、数据链路层和物理层

SwM2_ChinaAET 来源:未知 作者:李倩 2018-05-02 09:58 次阅读

前面的一系列文章简要地介绍了PCIe总线的结构、事务层、数据链路层和物理层。下面我们用一个简单地的例子来回顾并总结一下。

如下图所示,Requester的应用层(软件层)首先向其事务层发送如下信息:32位(或者64位)的Memory地址,事务类型(Transaction Type),数据量(以DW为单位),TC(Traffic Class,即优先级),字节使能(Byte Enable)和属性信息(Attributes)等。

然后接收端的事务层使用这些信息创建了一个Mrd TLP(Memory Read的事务层包),并将Requester的ID(BDF,Bus & Device & Function)写入到该TLP的Header中,以便Completer根据这一BDF将Completion信息返回给Requester。然后这个TLP会根据其TC的值被放到对应的VC Buffer中,Flow Control逻辑便会检车接收端的对应的接收VC Buffer空间是否充足。一旦接收端的VC Buffer空间充足,TLP便会准备被向接收端发送。

注:TLP的Header实际上有两种,32位的地址对应的是3DW的Header,64为的地址对应的是4DW的Header。这在后续的文章中会详细介绍。

当TLP到达数据链路层(Data Link Layer)时候,数据链路层会为其添加上12位的序列号(Sequence Number)和32位的LCRC。并将添加上这些信息之后的TLP(即DLLP)在Replay Buffer中做一个备份,并随后将其发送至物理层。

物理层接收到DLLP之后,为其添加上起始字符(Start & End Characters,又叫帧字符,Frame Characters),然后依次进行解字节(Strip Byte)、扰码(Scramble)、8b/10b编码并进行串行化,随后发送至相邻的PCIe设备的物理层。

接收端PCIe设备(即Completer)的物理层接收到数据之后,依次执行与发送端相反的操作。并从数据中恢复出时钟,然后将恢复出来的DLLP发送至数据链路层。

Completer的数据链路层首先检查DLLP中的LCRC,如果存在错误,则向Requester发送一个Nak类型的DLLP,该DLLP包含了其接受到的DLLP中的序列号(Sequence Number)。Requester的数据链路层接收到来自Completer的Nak DLLP之后,从中找到序列号(Sequence Number),并根据序列号在Replay Buffer找到对应的DLLP,然后将其重新发送至Completer。如果Completer的数据链路层没有检查到LCRC的错误,也会向Requester发送一个Ack类型的DLLP,该DLLP同样包含了其接收到的DLLP中的序列号。Requester的数据链路层接收到之一Ack DLLP之后,便会根据其中的序列号在Replay Buffer中找到对应的DLLP的备份,并将其丢弃(Discard)。

当接收端PCIe涉笔(即Completer)的数据链路层正确的接收到了来自Requester的DLLP(包含TLP的)时,随后将其进一步发送至事务层,事务层检查ECRC(可选的),并对TLP进行解析,然后将解析后的信息发送至应用层(软件层)。

如下图所示,Completer的应用层会根据接受到的信息进行相应的处理,处理完成后会将数据发送至事务层,事务层根据这一信息创建一个新的TLP(即CplD,Completion with data)。并根据先前接收到的TLP中的BDF信息,找到原来的Requester,然后将CplD发送至该Requester。这一发送过程与Requester向Completer发送TLP(Mrd Request)的过程基本是一致的。所以这里就不在重复了。

注:如果Completer不能够返回有效数据给Requester,或者遇到错误,则其返回的就不是CplD了,而是Cpl(Completion without data),Requester接收到Cpl的TLP之后便会知道发生了错误,其应用层(软件层)会进行相应的处理。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 总线
    +关注

    关注

    10

    文章

    2864

    浏览量

    87973
  • PCIe
    +关注

    关注

    15

    文章

    1217

    浏览量

    82424

原文标题:【博文连载】PCIe扫盲——一个Memory Read操作的例子

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Flex Bus物理层的CXL帧和数据概述

    在传输端,Flex Bus物理层准备从PCIe链路层或CXL ARB/MUX接收的数据,以便通过Flex Bus链路进行传输。
    的头像 发表于 09-11 14:34 2802次阅读
    Flex Bus<b class='flag-5'>物理层</b>的CXL帧和<b class='flag-5'>数据</b>概述

    CAN总线不同的物理层

    CAN总线使用不归零(NRZ)的位填充。有两种不同的信令状态:显性(逻辑0)和隐性(逻辑1)。这些信令状态对应于所在物理层(存在几种不同的物理层)的某种电平。模块以线与逻辑连接到总线
    发表于 05-23 07:35

    TLP的数据链路层组成与操作

      本章将着重讲述TLP的数据链路层组成与操作,上篇更新应该为第五讲,数据链路层位于事务物理层
    发表于 01-08 17:25

    CCIX 1.1设备必须支持PCIe 5.0 PHY或CCIX EDR PHY这两种物理层

    必须符合下面表中的定义。传输DVSEC包含CCIX物理层数据链路层事务的控制和状态寄存器(Control and Status Register,CSR)。协议DVSEC包含CC
    发表于 08-16 15:45

    数据链路层和传输的区别是什么

    本文开始介绍了传输的概念、传输的基本功能以及传输服务类型,其次介绍了数据链路层功能与工作过程,最后阐述了数据链路层和传输
    发表于 03-14 15:03 2.6w次阅读
    <b class='flag-5'>数据链路层</b>和传输<b class='flag-5'>层</b>的区别是什么

    数据链路层设备有哪些

    数据链路层的设备与组件是指那些同时具有物理层数据链路层功能的设备或组件。数据链路层的设备与组件主要有网卡、网桥和交换机。
    发表于 03-14 15:20 2.5w次阅读

    文看懂数据链路层和网络的区别

    本文开始介绍了网络的概念及网络的主要功能,其次阐述了数据链路层的概念和数据链路层的功能,最后介绍了数据链路层的作用以及
    发表于 03-14 15:38 7.2w次阅读
    <b class='flag-5'>一</b>文看懂<b class='flag-5'>数据链路层</b>和网络<b class='flag-5'>层</b>的区别

    PCIe物理层实现了对收发差分对,可以实现全双工的通信方式

    。也就是说,厂商可以根据自己的需要和实际情况,来设计PCIe物理层。下面将以Mindshare书中的例子来简要的介绍PCIe物理层逻辑部
    的头像 发表于 05-31 09:16 1.3w次阅读
    <b class='flag-5'>PCIe</b><b class='flag-5'>物理层</b>实现了<b class='flag-5'>一</b>对收发差分对,可以实现全双工的通信方式

    PCIe物理层接口定义了物理层中的,媒介物理编码子之间的统接口

    随着高速串行技术的发展,各种串行通信技术的物理层逐渐走向了统,用户甚至可以基于FPGA中的SerDes/PCS完成多种高速串行通信接口的设计。这些通信接口的区别往往只是体现在高层协议(数据链路层
    的头像 发表于 09-07 11:42 8763次阅读
    <b class='flag-5'>PCIe</b><b class='flag-5'>物理层</b>接口定义了<b class='flag-5'>物理层</b>中的,媒介<b class='flag-5'>层</b>和<b class='flag-5'>物理</b>编码子<b class='flag-5'>层</b>之间的统<b class='flag-5'>一</b>接口

    三种不同类型以太网物理层的编码规则和测试分析

    以太网对应OSI七模型的数据链路层物理层,对应数据链路层的部分又分为逻辑链路控制子(LLC)和介质访问控制子
    的头像 发表于 08-29 08:01 2.7w次阅读
    三种不同类型以太网<b class='flag-5'>物理层</b>的编码规则和测试分析

    数据链路层的功能

    数据链路层物理层提供服务的基础上向网络提供服务,其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的
    的头像 发表于 02-21 16:49 1.4w次阅读

    数据链路层的任务

    数据链路层的主要任务是使网络无需了解物理层的特征而获得可靠的传输。数据链路层将通过链路层数据
    的头像 发表于 02-27 15:08 7296次阅读

    数据链路层设备有哪些

    数据链路层的设备与组件是指那些同时具有物理层数据链路层功能的设备或组件。数据链路层的设备与组件主要有网卡、网桥和交换机。
    的头像 发表于 02-27 15:17 6w次阅读

    CAN总线协议的数据链路层有哪些部分

    CAN(Controller Area Network)总线协议的数据链路层是CAN通信中至关重要的部分,它负责在物理层之上实现数据的可靠
    的头像 发表于 09-03 14:14 460次阅读

    PCIE数据链路层架构解析

    PCIe数据链路层事务物理层之间,用来负责链路管理,其主要功能是保证来自事务
    的头像 发表于 11-05 17:06 198次阅读
    <b class='flag-5'>PCIE</b><b class='flag-5'>数据链路层</b>架构解析