<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

PCIe與PCI之間的區別

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 作者:FPGA設計論壇 ? 2022-07-03 16:20 ? 次閱讀

1. 概述

1)PCIe(Peripheral Component Interconnect Express)是繼ISA和PCI總線之后的第三代I/O總線。一般翻譯為周邊設備高速連接標準。

2)PCIe協議是一種端對端的互連協議,提供了高速傳輸帶寬的解決方案。目前PCIe已經發展到第四代PCIe4.0, 每一代的發展,最明顯的特征就是速率翻倍。

3)是Intel公司1991年推出的。批準組織:PCI SIG (PCI興趣小組)

4)一個x16插槽可以運行x1、x2、x4、x8、x16的卡

2. PCIe 布線規則

從金手指邊緣到PCIe芯片管腳的走線長度應限制在4英寸(約100MM)以內。

PCIe的PERP/N,PETP/N,PECKP/N是三個差分對線,注意保護(差分對之間的距離、差分對和所有非PCIe信號的距離是20MIL,以減少有害串擾的影響和電磁干擾(EMI)的影響。芯片及PCIe信號線反面避免高頻信號線,最好全GND)。

差分對中2條走線的長度差最多5MIL。2條走線的每一部分都要求長度匹配。差分線的線寬7MIL,差分對中2條走線的間距是7MIL。

當PCIe信號對走線換層時,應在靠近信號對過孔處放置地信號過孔,每對信號建議置1到3個地信號過孔。PCIE差分對采用25/14的過孔,并且兩個過孔必須放置的相互對稱。

PCIe需要在發射端和接收端之間交流耦合,差分對的兩個交流耦合電容必須有相同的封裝尺寸,位置要對稱且要擺放在靠近金手指這邊,電容值推薦為0.1uF。

SCL等信號線不能穿越PCIe主芯片。

3. PCIe 分類、速度

按lane( 車道 --》 通道 )的個數分有 x1 x2 x4 x8 x16 (最大可支持32個通道)

按代來分 有 gen1 gen2 gen3 gen4 gen5

速度:

b867d040-ed2a-11ec-ba43-dac502259ad0.png

b8913e80-ed2a-11ec-ba43-dac502259ad0.png

PCIe 與 PCI 之間的區別

速度上

PCI的工作頻率分為33MHz和66MHz,最大吞吐率 266MB/s

PCIe如3中描述,PCIe 1.0 x1 的吞吐率就達到了250MB/s

傳輸方式上

PCI 是并行數據傳輸,一次傳輸4字節/8字節,半雙工

PCIe是串行數據傳輸,全雙工

硬件

傳輸PCI信號的是普通電平

傳輸PCIe信號的是差分電平

鏈路上

PCI是總線的連接方式

PCIe是點對點的連接方式

點對點拓撲是什么樣的?

b8b975d0-ed2a-11ec-ba43-dac502259ad0.png

PCIe的物理連接方式:

b8de4e46-ed2a-11ec-ba43-dac502259ad0.png

5. 編碼方式介紹

PCIe gen1 和 PCIe gen2 采用的編解碼方式是 8b/10b,PCIe gen3 和 之后的 采用的是 128b/130b 的編碼方式。

8b/10b 意思是說,當我們要傳輸8b的數據時,實際在通道上傳輸的是10b的數據,解碼的時候,我們希望得到的是8b的有效數據。這樣,相當于有效的帶寬是實際帶寬的 80%。

同理128b/130b,是傳輸128bit數據實際線路中傳輸的是130bit數據。

速率圖中的單位間的關系:

傳輸速率單位 GT/s,表示 千兆傳輸/秒,是實際每秒傳輸的位數,他不包括額外吞吐量的開銷位。

兩個例子:

PCIe gen1 x1 傳輸速率 2.5GT/s = 2500MT/s = ( 2500 / 10 ) MB/s

PCIe gen3 x1 傳輸速率 8GT/s = 8000MT/s = ( 8000 / 130 ) x ( 128/8 ) MB/s= 984.6153.。. MB/s

6. inbound 和 outbound

在PCIe設備和系統內存互相訪問時,outbound是指CPU到設備方向;inbound指Device--》 RC(CPU端)方向。從這個概念上說,設備(device)都是外部的,沒有內部設備之說。CPU讀寫RC 端的寄存器時,還是屬于片上系統的范圍,所以既不是inbound 也不是outbound。

7. PCI 配置空間

PCI設備擁有256B的配置空間,PCIe還提供另外4KB的擴展,這256B的配置空間中前64B是規范了的,其他的字節是各個廠商自己定義的。

7.1 PCI 設備的地址組成

① 總線號 --- 廠家ID

② 設備號 --- 設備ID

③ 功能號 --- 設備類

查看PCI設備的工具是 lspci

使用工具 lspci 查找 ①②③

》lspci

b90663cc-ed2a-11ec-ba43-dac502259ad0.png

上邊輸出的每行開頭邏輯地址(XX:YY.Z)分別表示①②③,

其中一個PCI域能容納 256 個總線,

每個總線可以支持 32 個PCI設備,

每個PCI設備可容納 8 個PCI功能

》 lspci -t (以樹狀結構顯示)

》 lspci -x (打印出配置空間前64字節的內容)

》 lspci -s (指定哪個)

b948a69c-ed2a-11ec-ba43-dac502259ad0.png

挑選一個 VGA compatible controller,如下

》 lspci -s 01:00.0 -vxx

b98c379a-ed2a-11ec-ba43-dac502259ad0.png

字節序是小端格式,

[ 0 - 1 ] 表示的是廠家 ID,上圖的是 0x10de

[ 2 - 3 ] 表示的是設備 ID,上圖的是 0x0659

[ 9 - 11 ] 表示的是設備類型代碼,上圖的是 0x030000

[14]表示的是設備類型,00表示普通端點設備;01表示Bridge設備;02表示CardBus bridges

使用命令查詢PCI設備的廠商號和設備號

》 lspci -n -s 01:00.0

列出格式 【設備類型:廠商ID:設備ID】

b9a7c226-ed2a-11ec-ba43-dac502259ad0.png

設備類型介紹:

設備類型可以在 http://pci-ids.ucw.cz/read/PD 網站進行查詢,包括 classes、subclasses、Program interfaces 三部分,上圖中的設備類型是 030000依次對應下圖,03是 Device classes,00是Device subclasses,00是Program interfaces

b9cfb5b0-ed2a-11ec-ba43-dac502259ad0.png

7.2 基地址/BAR

BAR0: 0XF6000000

BAR1: 0XC000000C

。..。

BAR5:0X0000E001

有6個BAR空間,每個BAR記錄了該設備映射的一段地址空間,為了區分 IO空間和 IO內存,分開描述如下:

當BAR的最后一位為0,如下圖,表示這是映射的IO內存,1-2位表示內存的類型,00=任意32位地址,01=少于1M,10=任意64位地址,11保留。bit1為1表示區間大小超過1M,為0表示不超過1M。bit3表示是否支持可預取。

如上例子中,BAR0是 映射的IO內存,32位地址,不超過1M,不支持預取。

BAR1(最后幾位0110)也是映射的IO內存,64位地址,區間大小超過1M,不支持預取。

b9f50fa4-ed2a-11ec-ba43-dac502259ad0.png

當BAR的最后一位為1,如下圖,表示這是映射的IO地址空間。上邊例子中的BAR5(最后一位是1)是映射的是IO地址空間,基地址是 0x0000e

ba180d74-ed2a-11ec-ba43-dac502259ad0.png

中斷

由配置空間的IRQ Pin決定是否支持中斷,1表示支持,0表示不支持,加入支持,IRQ Line是中斷號。

上邊的例子中支持中斷號,中斷號是0x0b

訪問PCI

PCI設備包含3個尋址空間:配置空間、I/O端口 和 設備內存。

驅動中操作 PCI 的配置區(上邊討論的64B的空間)

pci_read_config_[byte|word|dword](struct pci_dev *pdev, int offset, int *value);

pci_write_config_[byte|word|dword](struct pci_dev *pdev, int offset, int value);

offset, 想訪問的配置空間中字節位置

value, 對read函數來說,用于存放讀回來的數據

對write函數來說,是要寫進去的值(這個int.。..。)

驅動中操作 I/O和內存

I/O區域包含寄存器,內存區域存放數據。

驅動中操作 PCI 的I/O和內存

unsigned long pci_resource = pci_resource_[start|len|end|flags] (struct pci_dev *pdev, int bar);

start, 區域的基地址

bar, 取值 0 - 5

8. PCIe 的配置空間

PCI的配置空間是256字節,即 0x00~0xFF,而PCIe的配置空間是4k字節,即 0x00~0xFFF。

PCIe 一共支持 256條bus,32個dev,8個fun。同PCI是一樣的。共需要內存大小= 4k * 256 *32*8 = 256K Bytes = 256M,這個256M的內存空間是為PCIe設備準備的空間系統不可用。

PCIe設備發展向前兼容PCI,每個設備的配置空間的前256個Byte是PCI空間,后(4k-256)個Byte的空間是PCIe擴展空間

Root和Switch的每一個端口中都包含一個P2P橋,橋的配置空間是Type1型

ba3423d8-ed2a-11ec-ba43-dac502259ad0.png

每個Type1型的Header中都包含最后一級總線號(Subordinate Bus Number)、下一級總線號(Secondary Bus Number)和上一級總線號(Primary Bus Number)等信息。當配置請求進行BDF路由的時候,正是依靠這些信息來確定要找的設備的。

9. PCIe 屬性

服務質量(Qos)

決斷振幅和帶寬

ba497846-ed2a-11ec-ba43-dac502259ad0.png

10. FAQ

TLP 和 DLLP 是什么?

TCP 是 事務層包的簡寫,結構下圖

ba6a80c2-ed2a-11ec-ba43-dac502259ad0.png

Capability是什么?

Capability是device通過在4k Byte的Configuration Space里告訴host它支持哪些特性的,而Capability又大致分為基本的Capability與之后擴展的Capability,在使用4K的配置空間時兩者大同小異,都是采用鏈表形式來自定義Capability的位置的,唯一的區別是后者種類多,且不同廠商所支持的Capability有很大區別。如下圖為Configuration Space的基本架構——0-3Fh(PCI Head域),40h-FFh(基本Capability區域),100-FFF(擴展Capability區域)。

ba81342a-ed2a-11ec-ba43-dac502259ad0.png

baaf595e-ed2a-11ec-ba43-dac502259ad0.png

基本的Capability

bad3a94e-ed2a-11ec-ba43-dac502259ad0.png

Capability point是在0-3Fh(PCI Head域),偏移為34h,用于存放第一個Capability的偏移量,偏移量的范圍是40h-FFh(基本Capability區域),這段區間可任意讓你分配各種基本Capability。

擴展的Capability

bae7ac14-ed2a-11ec-ba43-dac502259ad0.png

第一個擴展Capability默認就從100h的偏移位置開始放置,而不是像基本的Capability那樣從34h通過指針指過來。

PCI總線空間與處理器空間隔離

PCI設備具有獨立的地址空間,即PCI總線地址空間,該空間與存儲器地址空間通過HOST主橋隔離。處理器需要通過HOST主橋才能訪問PCI設備,而PCI設備需要通過HOST主橋才能訪問主存儲器。

處理器訪問PCI設備時,必須通過HOST主橋進行地址轉換,反過來也是。HOST主橋的一個重要作用就是將處理器訪問的存儲器地址轉換成PCI總線地址。

bafe5324-ed2a-11ec-ba43-dac502259ad0.png

原文標題:FPGA學習-PCIe基礎知識

文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

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

    關注

    447

    文章

    47788

    瀏覽量

    409108
  • 數據傳輸
    +關注

    關注

    9

    文章

    1526

    瀏覽量

    63562
  • PCI
    PCI
    +關注

    關注

    4

    文章

    608

    瀏覽量

    129588
  • PCIe
    +關注

    關注

    13

    文章

    1083

    瀏覽量

    80835

原文標題:FPGA學習-PCIe基礎知識

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    #硬聲創作季 PCIe-QuickLearn-PCIe-Overview-Data

    PCIPCIe
    Mr_haohao
    發布于 :2022年10月20日 23:00:07

    PCIE板設計規則--PCI Express Board Design Guidelines

    PCI Express  Board Design Guidelines -PCIE板設計規則
    發表于 03-26 22:27

    PCIPCIE 轉多串口方案資料

    PCIE PCI轉多串口方案[attach]***[/attach]
    發表于 05-05 09:20

    國外PCIE的書籍《pci express system architecture》

    `國外PCIE的書籍《pci express system architecture》寫的很不錯,受益匪淺,分享給大家是200頁的精簡版本,完整版的也有,不過太多不值得看,精華的200頁不錯`
    發表于 06-06 13:18

    能分享PCIPCIe的PCB原理圖嗎

    有大佬能分享一下PCI總線轉PCIePCIePCI)的PCB原理圖嗎?
    發表于 01-25 11:38

    求推薦PCIPCIe數據采集卡?

    求一款基于PCIPCIe的數據采集卡至少分別含有4個AI和A0口,最少一個AO能輸出任意波形。
    發表于 10-23 18:48

    zc706板和主機PC之間PCI Express如何進行通信

    你好,我正在研究zc706板和主機PC之間PCI Express通信。我有referug963-zc706-pcie-trd-ug,xtp246-zc706-pcie
    發表于 05-20 07:02

    深入PCIPCIe之一:硬件篇 精選資料推薦

    硬件都以這樣或那樣的形式連接到PCI設備樹上。雖然Intel為了方便各種IP的接入而提出IOSF總線,但是其主體接口(primary interface)還依然是PCIe形式。我們下面分成兩部分介紹PC...
    發表于 07-29 07:25

    PCIe總線和PCI總線有哪些不同之處呢

    PCIe是什么?PCIe的架構是由哪些部分組成的?PCIe總線和PCI總線有哪些不同之處呢?
    發表于 10-26 08:10

    求分享關于PCIPCIE轉串口的芯片

    你好,請問關于PCIPCIE轉串口的芯片貴司網站上只能下載一個綜合文檔
    發表于 09-30 06:01

    LS1028A兩塊板之間如何通過PCIe進行SoC到SoC通信?

    過背板連接,并且兩張卡都移植了 Flexbuild v2012 U-Boot 和 Linux。 如何通過 PCIe 接口證明兩個處理器之間的通信? 我根據 BSP 文檔
    發表于 05-06 08:33

    PCI、PCI-X到PCI-Express之間的連接

    本內容介紹了PCI總線/PCI-X接口及PCI-PCI-Express的知識,講解了從PCI、PCI-X到
    發表于 06-05 16:16 ?3120次閱讀
    從<b class='flag-5'>PCI</b>、<b class='flag-5'>PCI</b>-X到<b class='flag-5'>PCI</b>-Express<b class='flag-5'>之間</b>的連接

    pciepci插槽有什么區別

    在兼容性方面,PCI-E在軟件層面上兼容目前的PCI技術和設備,支持PCI設備和內存模組的初始化,也就是說過去的驅動程序、操作系統無需推倒重來,就可以支持PCI-E設備。目前
    發表于 12-12 11:29 ?41.9w次閱讀
    <b class='flag-5'>pcie</b>和<b class='flag-5'>pci</b>插槽有什么<b class='flag-5'>區別</b>

    理解PCIPCIE的關鍵

    之間干擾會加大,無法將速率提升到很高。 PCIe 接口速覽 PCI-E 是串行口,引腳明顯少很多,使用差分信號傳輸數據。 本文參考 百問網-韋東山驅動大全
    的頭像 發表于 07-30 09:44 ?756次閱讀
    理解<b class='flag-5'>PCI</b>和<b class='flag-5'>PCIE</b>的關鍵

    訪問PCI/PCIe設備的流程

    訪問 PCI/PCIe 設備的流程 PCI/PCIe 設備的配置信息 PCI/PCIe 設備上有
    的頭像 發表于 07-30 09:44 ?1048次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>