那曲檬骨新材料有限公司

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

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

3天內不再提示

PCIe總線中的鏈路初始化與訓練

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

PCIe總線中的鏈路初始化與訓練(Link Initialization & Training)是一種完全由硬件實現的功能,處于PCIe體系結構中的物理層。整個過程由鏈路訓練狀態機(Link Training and Status State Machine,LTSSM)自動完成,也就說基本沒有數據鏈路層和事務層啥事。

LTSSM在PCIe體系結構中的位置的示意圖如下:

在系統復位后,會自動進行鏈路訓練,以達成以下目標:位鎖定(Bit Lock)、字符鎖定(Symbol Lock,Gen1 & Gen2 Only)、塊鎖定(Block Lock,Gen3 Only)、確定鏈路寬度(Link Width)、通道位置翻轉(Lane Reversal)、信號極性翻轉(Polarity Inversion)、確定鏈路的數據率(Data Rate)和通道對齊(Lane-to-Lane De-skew)等功能。

下面依次的,簡要地介紹一下這些目標。

注:本次連載博文主要Gen2為主,所以一些和Gen3相關的內容只會簡單提及,并不會深入地介紹,有興趣的可以閱讀PCIe Spec V3.0或者Mindshare的相關書籍。

首先是

位鎖定(Bit Lock):

前面的文章中提到過,PCIe總線采用了一種嵌入式時鐘的機制,即發送端只向接收端發送數據信號,并不發送時鐘信號(時鐘信號影藏在數據信號中)。接收端可以通過CDR(Clock and Data Recovery)邏輯將時鐘從數據流中恢復出來,然后再用恢復出來的時鐘對數據信號進行采樣。當然,時鐘恢復需要一定的時間,才能保證時鐘信號與數據信號的相位對應關系符合要求。一旦CDR完成了時鐘的恢復,我們就說PCIe總線完成了位鎖定。

字符鎖定(Symbol Lock):

完成了位鎖定之后,只是能夠準確地識別出數據流中的0和1,還是不知道發送的內容是個啥。對于Gen1&Gen2來說,采用的8b/10b編碼,即傳輸的數據是以10bit為一個字符。LTSSM可以引導物理層相關邏輯通過識別COM字符(K28.5)來確定每個字符的開始與結束為止,即字符鎖定。

鏈路寬度(Link Width):

由于PCIe允許將x1的PCIe卡插入x4、x8甚至是x16的PCIe插槽中。因此在鏈路訓練與初始化過程中,相鄰的兩個PCIe設備需要相互通信來確定其支持的最大鏈路寬度。

注:實際上PCIe Spec還允許采用動態帶寬的機制,即允許鏈路寬度和數據率動態調整,以實現降低功耗等功能。

通道位置翻轉(Lane Reversal):

有的時候兩個PCIe設備的通道排列位置可能不太一致,PCIe Spec允許對默認的通道排列位置重新排列,如下圖所示。但是,從大部分的PCIe設備(PCIe卡和插槽等)都是按照統一的標準實現的,一般不會出現這種情況,因此這一功能是可選的。

信號極性翻轉(Polarity Inversion):

前面的文章中介紹過,PCIe收發的都是差分信號,有的時候Link兩端的設備的對應信號的極性可能是相反的。因此,PCIe Spec允許在鏈路訓練與初始化的時候,對其進行調整,如下圖所示。和通道位置翻轉(Lane Reversal)不一樣的是,信號極性翻轉(Polarity Inversion)并不是一個可選項,而是所有標準PCIe設備都應支持的。

鏈路的數據率(Data Rate):

系統剛復位的時候,鏈路訓練和初始化都是基于2.5G T/s的速率的。如果Link兩端的設備都支持更高的速率,則會自動進入Re-training狀態,以重新切換速率。

注:PCIe Spec規定,高速率的PCIe設備必須能夠向下兼容。即Gen2必須同時支持2.5G T/s和5G T/s。

通道對齊(Lane-to-Lane De-skew):

PCIe鏈路完成字符鎖定后,還需要進行通道對齊。因為有的通道的信號可能先到達,有的可能后到達。PCIe Spec規定PCIe鏈路應有能力對一定范圍了的Lane-to-Lane Skew進行移除,使得各個Lane上的信號是同步的。關于通道對齊,會在后續的博文中詳細地介紹。

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

    關注

    5092

    文章

    19178

    瀏覽量

    307691
  • 總線
    +關注

    關注

    10

    文章

    2903

    瀏覽量

    88397
  • PCIe
    +關注

    關注

    15

    文章

    1260

    瀏覽量

    83194

原文標題:【博文連載】PCIe掃盲——鏈路初始化與訓練基礎(一)

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

收藏 人收藏

    評論

    相關推薦

    SRIO重復初始化不通了

    專家好: 調試接口時經常會出現重新load程序的情況,發現如果SRIO雙方已經進行數據通信,重新加載程序進行SRIO初始化后,srio不通了,需要重新斷電重連,這樣調試起來比較浪費時間,請問有什么好的方法,可以節省調試時間
    發表于 01-07 11:15

    使用iMPACT無法初始化

    使用iMPACT我無法初始化。在初始邊界掃描時,彈出以下錯誤:有許多未知設備被檢測到。按是繼續或按否停止。我還收到以下錯誤:錯誤:iMPACT - 硬件配置可能存在問題。電纜,掃描
    發表于 09-16 10:32

    CAN總線初始化

    1、CAN總線初始化void can_init(void){CAN_InitTypeDefCAN_InitStructure
    發表于 08-19 07:17

    手機模塊初始化向導

    手機模塊初始化向導:為了剛好的對手機模塊進行初始化,所以把最基本的向導寫下來.本向導適用于本公司的西門子TC35I和華為GT9000模塊。一、在初始化手機模塊前,請先確定DT
    發表于 09-18 09:41 ?17次下載

    RDA1846S初始化設置

    RDA1846S初始化設置RDA1846S初始化設置RDA1846S初始化設置
    發表于 01-15 17:08 ?0次下載

    CAN總線控制器SJA1000的初始化程序設計

    CAN總線控制器SJA1000的初始化程序設計。
    發表于 05-06 11:29 ?12次下載

    UCOS_III_配置與初始化

    UCOS_III_配置與初始化
    發表于 12-20 22:53 ?5次下載

    objc源碼NSObject如何進行初始化

    + alloc 和 - init 這一對我們在 iOS 開發每天都要用到的初始化方法一直困擾著我, 于是筆者仔細研究了一下 objc 源碼 NSObject 如何進行初始化。 在具
    發表于 09-26 09:58 ?0次下載

    PCIe總線必須要先完成Flow Control初始化

    由于VC0是默認使能的,所以當Flow Control初始化開始時,其會被自動的初始化。其他的Virtual Channel是可選的,只有當被配置為使能的時候才會被初始化
    的頭像 發表于 05-24 09:18 ?8014次閱讀
    <b class='flag-5'>PCIe</b><b class='flag-5'>總線</b>必須要先完成Flow Control<b class='flag-5'>初始化</b>

    PCIe總線的三種錯誤報告方式

    PCIe設備的配置空間中的狀態與控制寄存器如上圖所示,通過這些寄存器可以使能(或禁止)通過錯誤消息(Error Message)發送錯誤報告、查詢錯誤狀態信息,以及訓練
    的頭像 發表于 08-23 10:14 ?1.4w次閱讀
    <b class='flag-5'>PCIe</b><b class='flag-5'>總線</b>的三種錯誤報告方式

    IIC總線初始化基本驅動參考程序應用代碼免費下載

    本文檔的主要內容詳細介紹的是IIC總線初始化基本驅動參考程序應用代碼免費下載。程序功能:為IIC總線的基本驅動程序(此程序沒有寫主函數,只是一些IIC必備的子函數)
    發表于 01-16 08:00 ?5次下載
    IIC<b class='flag-5'>總線</b><b class='flag-5'>初始化</b>基本驅動參考程序應用代碼免費下載

    神經網絡如何正確初始化?

    初始化訓練深度神經網絡的收斂性有重要影響。
    的頭像 發表于 05-17 16:32 ?8188次閱讀
    神經網絡如何正確<b class='flag-5'>初始化</b>?

    C++之初始化列表學習的總結

    可以使用初始化列表對成員進行初始化
    的頭像 發表于 12-24 17:39 ?896次閱讀

    如何在Segger J-Flash設置芯片初始化序列?

    許多微控制器在燒錄之前需要一個自定義的初始化序列來初始化目標硬件,例如初始化PLL時鐘,關閉看門狗或定義Flash的等待狀態。在使用這些對初始化過程有特殊要求的芯片時,在Segger
    的頭像 發表于 12-12 10:56 ?2488次閱讀

    DDR4-初始化訓練和校準

    上電與初始化是由一系列精心設計的步驟組成的序列(sequence)。一般來說,在系統上電之后,ASIC/FPGA/處理器的 DDR 控制器會被從復位狀態釋放,自動執行上電與初始化
    的頭像 發表于 07-03 11:48 ?7357次閱讀
    DDR4-<b class='flag-5'>初始化</b>、<b class='flag-5'>訓練</b>和校準
    金银岛娱乐城开户| 伟博百家乐官网现金网| 百家乐官网深圳广告| 百家乐桌折叠| 万豪娱乐网| 长春百家乐官网的玩法技巧和规则 | 百家乐官网新台第二局| 风水学24山看水法| 大发888娱乐场zb8| 网上百家乐官网打牌| 索雷尔百家乐的玩法技巧和规则| 安福县| 至尊百家乐贺一航| 全讯网址| 百家乐官网群lookcc| 大发888网站打不开| 百家乐官网计划| 全讯网开奖直播| 百家乐官网发牌器8副| 沙龙百家乐娱乐| 百家乐官网视频游戏网址| 百家乐游戏唯一官网站| 百家乐官网规则博彩正网| 信誉百家乐平台| 昌图县| 百家乐现金网平台排行榜| 凤庆县| 搓牌百家乐技巧| 百家乐官网分析仪博彩正网| 爱婴百家乐的玩法技巧和规则 | 大发888官网免费下载| 狮威百家乐官网赌场娱乐网规则| 大发888网页版体育| 尊龙百家乐官网娱乐| 大发888游乐场| 利澳百家乐官网的玩法技巧和规则 | 百家乐官网制胜秘| 亚洲顶级赌场 塑造品牌神话| 百家乐免費游戏| 百家乐官网有秘技吗| 百家乐蔬菜配送公司|