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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

PCIe與PCI之間的區(qū)別

FPGA設(shè)計(jì)論壇 ? 來源:FPGA設(shè)計(jì)論壇 ? 作者:FPGA設(shè)計(jì)論壇 ? 2022-07-03 16:20 ? 次閱讀

1. 概述

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

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

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

4)一個(gè)x16插槽可以運(yùn)行x1、x2、x4、x8、x16的卡

2. PCIe 布線規(guī)則

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

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

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

當(dāng)PCIe信號(hào)對(duì)走線換層時(shí),應(yīng)在靠近信號(hào)對(duì)過孔處放置地信號(hào)過孔,每對(duì)信號(hào)建議置1到3個(gè)地信號(hào)過孔。PCIE差分對(duì)采用25/14的過孔,并且兩個(gè)過孔必須放置的相互對(duì)稱。

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

SCL等信號(hào)線不能穿越PCIe主芯片。

3. PCIe 分類、速度

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

按代來分 有 gen1 gen2 gen3 gen4 gen5

速度:

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

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

PCIe 與 PCI 之間的區(qū)別

速度上

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

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

傳輸方式上

PCI 是并行數(shù)據(jù)傳輸,一次傳輸4字節(jié)/8字節(jié),半雙工

PCIe是串行數(shù)據(jù)傳輸,全雙工

硬件

傳輸PCI信號(hào)的是普通電平

傳輸PCIe信號(hào)的是差分電平

鏈路上

PCI是總線的連接方式

PCIe是點(diǎn)對(duì)點(diǎn)的連接方式

點(diǎn)對(duì)點(diǎn)拓?fù)涫鞘裁礃拥模?/p>

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 意思是說,當(dāng)我們要傳輸8b的數(shù)據(jù)時(shí),實(shí)際在通道上傳輸?shù)氖?0b的數(shù)據(jù),解碼的時(shí)候,我們希望得到的是8b的有效數(shù)據(jù)。這樣,相當(dāng)于有效的帶寬是實(shí)際帶寬的 80%。

同理128b/130b,是傳輸128bit數(shù)據(jù)實(shí)際線路中傳輸?shù)氖?30bit數(shù)據(jù)。

速率圖中的單位間的關(guān)系:

傳輸速率單位 GT/s,表示 千兆傳輸/秒,是實(shí)際每秒傳輸?shù)奈粩?shù),他不包括額外吞吐量的開銷位。

兩個(gè)例子:

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設(shè)備和系統(tǒng)內(nèi)存互相訪問時(shí),outbound是指CPU到設(shè)備方向;inbound指Device--》 RC(CPU端)方向。從這個(gè)概念上說,設(shè)備(device)都是外部的,沒有內(nèi)部設(shè)備之說。CPU讀寫RC 端的寄存器時(shí),還是屬于片上系統(tǒng)的范圍,所以既不是inbound 也不是outbound。

7. PCI 配置空間

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

7.1 PCI 設(shè)備的地址組成

① 總線號(hào) --- 廠家ID

② 設(shè)備號(hào) --- 設(shè)備ID

③ 功能號(hào) --- 設(shè)備類

查看PCI設(shè)備的工具是 lspci

使用工具 lspci 查找 ①②③

》lspci

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

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

其中一個(gè)PCI域能容納 256 個(gè)總線,

每個(gè)總線可以支持 32 個(gè)PCI設(shè)備,

每個(gè)PCI設(shè)備可容納 8 個(gè)PCI功能

》 lspci -t (以樹狀結(jié)構(gòu)顯示)

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

》 lspci -s (指定哪個(gè))

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

挑選一個(gè) VGA compatible controller,如下

》 lspci -s 01:00.0 -vxx

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

字節(jié)序是小端格式,

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

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

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

[14]表示的是設(shè)備類型,00表示普通端點(diǎn)設(shè)備;01表示Bridge設(shè)備;02表示CardBus bridges

使用命令查詢PCI設(shè)備的廠商號(hào)和設(shè)備號(hào)

》 lspci -n -s 01:00.0

列出格式 【設(shè)備類型:廠商ID:設(shè)備ID】

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

設(shè)備類型介紹:

設(shè)備類型可以在 http://pci-ids.ucw.cz/read/PD 網(wǎng)站進(jìn)行查詢,包括 classes、subclasses、Program interfaces 三部分,上圖中的設(shè)備類型是 030000依次對(duì)應(yīng)下圖,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個(gè)BAR空間,每個(gè)BAR記錄了該設(shè)備映射的一段地址空間,為了區(qū)分 IO空間和 IO內(nèi)存,分開描述如下:

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

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

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

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

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

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

中斷

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

上邊的例子中支持中斷號(hào),中斷號(hào)是0x0b

訪問PCI

PCI設(shè)備包含3個(gè)尋址空間:配置空間、I/O端口 和 設(shè)備內(nèi)存。

驅(qū)動(dòng)中操作 PCI 的配置區(qū)(上邊討論的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, 想訪問的配置空間中字節(jié)位置

value, 對(duì)read函數(shù)來說,用于存放讀回來的數(shù)據(jù)

對(duì)write函數(shù)來說,是要寫進(jìn)去的值(這個(gè)int.。..。)

驅(qū)動(dòng)中操作 I/O和內(nèi)存

I/O區(qū)域包含寄存器,內(nèi)存區(qū)域存放數(shù)據(jù)。

驅(qū)動(dòng)中操作 PCI 的I/O和內(nèi)存

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

start, 區(qū)域的基地址

bar, 取值 0 - 5

8. PCIe 的配置空間

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

PCIe 一共支持 256條bus,32個(gè)dev,8個(gè)fun。同PCI是一樣的。共需要內(nèi)存大小= 4k * 256 *32*8 = 256K Bytes = 256M,這個(gè)256M的內(nèi)存空間是為PCIe設(shè)備準(zhǔn)備的空間系統(tǒng)不可用。

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

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

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

每個(gè)Type1型的Header中都包含最后一級(jí)總線號(hào)(Subordinate Bus Number)、下一級(jí)總線號(hào)(Secondary Bus Number)和上一級(jí)總線號(hào)(Primary Bus Number)等信息。當(dāng)配置請(qǐng)求進(jìn)行BDF路由的時(shí)候,正是依靠這些信息來確定要找的設(shè)備的。

9. PCIe 屬性

服務(wù)質(zhì)量(Qos)

決斷振幅和帶寬

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

10. FAQ

TLP 和 DLLP 是什么?

TCP 是 事務(wù)層包的簡(jiǎn)寫,結(jié)構(gòu)下圖

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

Capability是什么?

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

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,用于存放第一個(gè)Capability的偏移量,偏移量的范圍是40h-FFh(基本Capability區(qū)域),這段區(qū)間可任意讓你分配各種基本Capability。

擴(kuò)展的Capability

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

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

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

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

處理器訪問PCI設(shè)備時(shí),必須通過HOST主橋進(jìn)行地址轉(zhuǎn)換,反過來也是。HOST主橋的一個(gè)重要作用就是將處理器訪問的存儲(chǔ)器地址轉(zhuǎn)換成PCI總線地址。

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

原文標(biāo)題:FPGA學(xué)習(xí)-PCIe基礎(chǔ)知識(shí)

文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    49937

    瀏覽量

    419591
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    1743

    瀏覽量

    64329
  • PCI
    PCI
    +關(guān)注

    關(guān)注

    4

    文章

    655

    瀏覽量

    130057
  • PCIe
    +關(guān)注

    關(guān)注

    15

    文章

    1174

    瀏覽量

    82245

原文標(biāo)題:FPGA學(xué)習(xí)-PCIe基礎(chǔ)知識(shí)

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    不到兩年,PCI-SIG宣布完成PCIe 5.0標(biāo)準(zhǔn)制定工作

    PCIe 4.0 發(fā)布才不到兩年,PCI-SIG決定加速推進(jìn) PCIe 5.0 的制定工作了。最新消息是,PCI-SIG 剛剛完成了 PCIe
    發(fā)表于 05-31 12:03 ?2914次閱讀

    #硬聲創(chuàng)作季 PCIe-QuickLearn-PCIe-Overview-Data

    PCIPCIe
    Mr_haohao
    發(fā)布于 :2022年10月20日 23:00:07

    PCIE板設(shè)計(jì)規(guī)則--PCI Express Board Design Guidelines

    PCI Express  Board Design Guidelines -PCIE板設(shè)計(jì)規(guī)則
    發(fā)表于 03-26 22:27

    PCIPCIE 轉(zhuǎn)多串口方案資料

    PCIE PCI轉(zhuǎn)多串口方案[attach]***[/attach]
    發(fā)表于 05-05 09:20

    國(guó)外PCIE的書籍《pci express system architecture》

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

    能分享PCI轉(zhuǎn)PCIe的PCB原理圖嗎

    有大佬能分享一下PCI總線轉(zhuǎn)PCIePCIe轉(zhuǎn)PCI)的PCB原理圖嗎?
    發(fā)表于 01-25 11:38

    zc706板和主機(jī)PC之間PCI Express如何進(jìn)行通信

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

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

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

    求分享關(guān)于PCIPCIE轉(zhuǎn)串口的芯片

    你好,請(qǐng)問關(guān)于PCIPCIE轉(zhuǎn)串口的芯片貴司網(wǎng)站上只能下載一個(gè)綜合文檔
    發(fā)表于 09-30 06:01

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

    本內(nèi)容介紹了PCI總線/PCI-X接口及PCI-PCI-Express的知識(shí),講解了從PCI、PCI-X到
    發(fā)表于 06-05 16:16 ?3390次閱讀
    從<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插槽有什么區(qū)別

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

    PCI-SIG發(fā)布的PCIe板卡結(jié)構(gòu)規(guī)范

    PCI-SIG發(fā)布的PCIe板卡結(jié)構(gòu)規(guī)范。Revision 4.0 Version 0.9.
    發(fā)表于 06-19 09:59 ?5次下載

    理解PCIPCIE的關(guān)鍵

    之間干擾會(huì)加大,無法將速率提升到很高。 PCIe 接口速覽 PCI-E 是串行口,引腳明顯少很多,使用差分信號(hào)傳輸數(shù)據(jù)。 本文參考 百問網(wǎng)-韋東山驅(qū)動(dòng)大全
    的頭像 發(fā)表于 07-30 09:44 ?1011次閱讀
    理解<b class='flag-5'>PCI</b>和<b class='flag-5'>PCIE</b>的關(guān)鍵

    訪問PCI/PCIe設(shè)備的流程

    訪問 PCI/PCIe 設(shè)備的流程 PCI/PCIe 設(shè)備的配置信息 PCI/PCIe 設(shè)備上有
    的頭像 發(fā)表于 07-30 09:44 ?1476次閱讀

    PCI CAN卡和PCIE CAN卡的區(qū)別

    PCI CAN卡和PCIe CAN卡主要在接口標(biāo)準(zhǔn)、性能、以及應(yīng)用場(chǎng)景等方面存在不同。
    的頭像 發(fā)表于 08-02 09:36 ?356次閱讀