0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

一個簡單地的例子來回顧PCIe總線的結構、事務層、數(shù)據(jù)鏈路層和物理層

SwM2_ChinaAET ? 來源:未知 ? 作者:李倩 ? 2018-05-02 09:58 ? 次閱讀

前面的一系列文章簡要地介紹了PCIe總線的結構、事務層、數(shù)據(jù)鏈路層和物理層。下面我們用一個簡單地的例子來回顧并總結一下。

如下圖所示,Requester的應用層(軟件層)首先向其事務層發(fā)送如下信息:32位(或者64位)的Memory地址,事務類型(Transaction Type),數(shù)據(jù)量(以DW為單位),TC(Traffic Class,即優(yōu)先級),字節(jié)使能(Byte Enable)和屬性信息(Attributes)等。

然后接收端的事務層使用這些信息創(chuàng)建了一個Mrd TLP(Memory Read的事務層包),并將Requester的ID(BDF,Bus & Device & Function)寫入到該TLP的Header中,以便Completer根據(jù)這一BDF將Completion信息返回給Requester。然后這個TLP會根據(jù)其TC的值被放到對應的VC Buffer中,F(xiàn)low Control邏輯便會檢車接收端的對應的接收VC Buffer空間是否充足。一旦接收端的VC Buffer空間充足,TLP便會準備被向接收端發(fā)送。

注:TLP的Header實際上有兩種,32位的地址對應的是3DW的Header,64為的地址對應的是4DW的Header。這在后續(xù)的文章中會詳細介紹。

當TLP到達數(shù)據(jù)鏈路層(Data Link Layer)時候,數(shù)據(jù)鏈路層會為其添加上12位的序列號(Sequence Number)和32位的LCRC。并將添加上這些信息之后的TLP(即DLLP)在Replay Buffer中做一個備份,并隨后將其發(fā)送至物理層。

物理層接收到DLLP之后,為其添加上起始字符(Start & End Characters,又叫幀字符,F(xiàn)rame Characters),然后依次進行解字節(jié)(Strip Byte)、擾碼(Scramble)、8b/10b編碼并進行串行化,隨后發(fā)送至相鄰的PCIe設備的物理層。

接收端PCIe設備(即Completer)的物理層接收到數(shù)據(jù)之后,依次執(zhí)行與發(fā)送端相反的操作。并從數(shù)據(jù)中恢復出時鐘,然后將恢復出來的DLLP發(fā)送至數(shù)據(jù)鏈路層。

Completer的數(shù)據(jù)鏈路層首先檢查DLLP中的LCRC,如果存在錯誤,則向Requester發(fā)送一個Nak類型的DLLP,該DLLP包含了其接受到的DLLP中的序列號(Sequence Number)。Requester的數(shù)據(jù)鏈路層接收到來自Completer的Nak DLLP之后,從中找到序列號(Sequence Number),并根據(jù)序列號在Replay Buffer找到對應的DLLP,然后將其重新發(fā)送至Completer。如果Completer的數(shù)據(jù)鏈路層沒有檢查到LCRC的錯誤,也會向Requester發(fā)送一個Ack類型的DLLP,該DLLP同樣包含了其接收到的DLLP中的序列號。Requester的數(shù)據(jù)鏈路層接收到之一Ack DLLP之后,便會根據(jù)其中的序列號在Replay Buffer中找到對應的DLLP的備份,并將其丟棄(Discard)。

當接收端PCIe涉筆(即Completer)的數(shù)據(jù)鏈路層正確的接收到了來自Requester的DLLP(包含TLP的)時,隨后將其進一步發(fā)送至事務層,事務層檢查ECRC(可選的),并對TLP進行解析,然后將解析后的信息發(fā)送至應用層(軟件層)。

如下圖所示,Completer的應用層會根據(jù)接受到的信息進行相應的處理,處理完成后會將數(shù)據(jù)發(fā)送至事務層,事務層根據(jù)這一信息創(chuàng)建一個新的TLP(即CplD,Completion with data)。并根據(jù)先前接收到的TLP中的BDF信息,找到原來的Requester,然后將CplD發(fā)送至該Requester。這一發(fā)送過程與Requester向Completer發(fā)送TLP(Mrd Request)的過程基本是一致的。所以這里就不在重復了。

注:如果Completer不能夠返回有效數(shù)據(jù)給Requester,或者遇到錯誤,則其返回的就不是CplD了,而是Cpl(Completion without data),Requester接收到Cpl的TLP之后便會知道發(fā)生了錯誤,其應用層(軟件層)會進行相應的處理。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 總線
    +關注

    關注

    10

    文章

    2858

    瀏覽量

    87912
  • PCIe
    +關注

    關注

    15

    文章

    1200

    瀏覽量

    82352

原文標題:【博文連載】PCIe掃盲——一個Memory Read操作的例子

文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Flex Bus物理層的CXL幀和數(shù)據(jù)概述

    在傳輸端,F(xiàn)lex Bus物理層準備從PCIe鏈路層或CXL ARB/MUX接收的數(shù)據(jù),以便通過Flex Bus鏈路進行傳輸。
    的頭像 發(fā)表于 09-11 14:34 ?2758次閱讀
    Flex Bus<b class='flag-5'>物理層</b>的CXL幀和<b class='flag-5'>數(shù)據(jù)</b>概述

    CAN總線不同的物理層

    CAN總線使用不歸零(NRZ)的位填充。有兩種不同的信令狀態(tài):顯性(邏輯0)和隱性(邏輯1)。這些信令狀態(tài)對應于所在物理層(存在幾種不同的物理層)的某種電平。模塊以線與邏輯連接到總線
    發(fā)表于 05-23 07:35

    TLP的數(shù)據(jù)鏈路層組成與操作

      本章將著重講述TLP的數(shù)據(jù)鏈路層組成與操作,上篇更新應該為第五講,數(shù)據(jù)鏈路層位于事務物理層
    發(fā)表于 01-08 17:25

    CCIX 1.1設備必須支持PCIe 5.0 PHY或CCIX EDR PHY這兩種物理層

    必須符合下面表中的定義。傳輸DVSEC包含CCIX物理層、數(shù)據(jù)鏈路層事務的控制和狀態(tài)寄存器(Control and Status Register,CSR)。協(xié)議DVSEC包含CC
    發(fā)表于 08-16 15:45

    數(shù)據(jù)鏈路層和傳輸的區(qū)別是什么

    本文開始介紹了傳輸的概念、傳輸的基本功能以及傳輸服務類型,其次介紹了數(shù)據(jù)鏈路層功能與工作過程,最后闡述了數(shù)據(jù)鏈路層和傳輸
    發(fā)表于 03-14 15:03 ?2.6w次閱讀
    <b class='flag-5'>數(shù)據(jù)鏈路層</b>和傳輸<b class='flag-5'>層</b>的區(qū)別是什么

    數(shù)據(jù)鏈路層設備有哪些

    數(shù)據(jù)鏈路層的設備與組件是指那些同時具有物理層數(shù)據(jù)鏈路層功能的設備或組件。數(shù)據(jù)鏈路層的設備與組件主要有網(wǎng)卡、網(wǎng)橋和交換機。
    發(fā)表于 03-14 15:20 ?2.5w次閱讀

    文看懂數(shù)據(jù)鏈路層和網(wǎng)絡的區(qū)別

    本文開始介紹了網(wǎng)絡的概念及網(wǎng)絡的主要功能,其次闡述了數(shù)據(jù)鏈路層的概念和數(shù)據(jù)鏈路層的功能,最后介紹了數(shù)據(jù)鏈路層的作用以及
    發(fā)表于 03-14 15:38 ?7.2w次閱讀
    <b class='flag-5'>一</b>文看懂<b class='flag-5'>數(shù)據(jù)鏈路層</b>和網(wǎng)絡<b class='flag-5'>層</b>的區(qū)別

    PCIe物理層實現(xiàn)了對收發(fā)差分對,可以實現(xiàn)全雙工的通信方式

    。也就是說,廠商可以根據(jù)自己的需要和實際情況,來設計PCIe物理層。下面將以Mindshare書中的例子來簡要的介紹PCIe物理層邏輯部
    的頭像 發(fā)表于 05-31 09:16 ?1.3w次閱讀
    <b class='flag-5'>PCIe</b><b class='flag-5'>物理層</b>實現(xiàn)了<b class='flag-5'>一</b>對收發(fā)差分對,可以實現(xiàn)全雙工的通信方式

    PCIe物理層接口定義了物理層中的,媒介物理編碼子之間的統(tǒng)接口

    隨著高速串行技術的發(fā)展,各種串行通信技術的物理層逐漸走向了統(tǒng),用戶甚至可以基于FPGA中的SerDes/PCS完成多種高速串行通信接口的設計。這些通信接口的區(qū)別往往只是體現(xiàn)在高層協(xié)議(數(shù)據(jù)鏈路層
    的頭像 發(fā)表于 09-07 11:42 ?8746次閱讀
    <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>之間的統(tǒng)<b class='flag-5'>一</b>接口

    三種不同類型以太網(wǎng)物理層的編碼規(guī)則和測試分析

    以太網(wǎng)對應OSI七模型的數(shù)據(jù)鏈路層物理層,對應數(shù)據(jù)鏈路層的部分又分為邏輯鏈路控制子(LLC)和介質(zhì)訪問控制子
    的頭像 發(fā)表于 08-29 08:01 ?2.7w次閱讀
    三種不同類型以太網(wǎng)<b class='flag-5'>物理層</b>的編碼規(guī)則和測試分析

    數(shù)據(jù)鏈路層的功能

    數(shù)據(jù)鏈路層物理層提供服務的基礎上向網(wǎng)絡提供服務,其主要作用是加強物理層傳輸原始比特流的功能,將物理層提供的可能出錯的
    的頭像 發(fā)表于 02-21 16:49 ?1.4w次閱讀

    數(shù)據(jù)鏈路層的任務

    數(shù)據(jù)鏈路層的主要任務是使網(wǎng)絡無需了解物理層的特征而獲得可靠的傳輸。數(shù)據(jù)鏈路層將通過鏈路層數(shù)據(jù)
    的頭像 發(fā)表于 02-27 15:08 ?7275次閱讀

    數(shù)據(jù)鏈路層設備有哪些

    數(shù)據(jù)鏈路層的設備與組件是指那些同時具有物理層數(shù)據(jù)鏈路層功能的設備或組件。數(shù)據(jù)鏈路層的設備與組件主要有網(wǎng)卡、網(wǎng)橋和交換機。
    的頭像 發(fā)表于 02-27 15:17 ?6w次閱讀

    CAN總線協(xié)議的數(shù)據(jù)鏈路層有哪些部分

    CAN(Controller Area Network)總線協(xié)議的數(shù)據(jù)鏈路層是CAN通信中至關重要的部分,它負責在物理層之上實現(xiàn)數(shù)據(jù)的可靠
    的頭像 發(fā)表于 09-03 14:14 ?416次閱讀

    PCIE數(shù)據(jù)鏈路層架構解析

    PCIe數(shù)據(jù)鏈路層事務物理層之間,用來負責鏈路管理,其主要功能是保證來自事務
    的頭像 發(fā)表于 11-05 17:06 ?132次閱讀
    <b class='flag-5'>PCIE</b><b class='flag-5'>數(shù)據(jù)鏈路層</b>架構解析