歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Virtex6 PCIe 超簡版基礎概念學習(一)

文檔版本 開發工具 測試平台 工程名字 日期 作者 備注 V1.0 ise14.7 DBF板 Day2/PCIETest1 2016.03.31 lutianfei none 參考資料:
Spartan 6 PCIE_V2.4 真教程(二) 菜鳥5小時速成FPGA_PCIE設計高手教程.pdf v6_pcie_ug517.pdf PCI+EXPRESS體系結構導讀.pdf xapp1052.pdf

一 常見接口速度 二事務處理層協議理解 1 事物層空間說明 2 配置空間概述 21 配置空間寄存器說明 22 PCI總線配置概述 3 BAR空間概述 31 BAR空間與DMA空間映射關系例子 4 事物處理層概述 41 存儲器讀寫請求TLP包頭格式 42 完成包報文頭格式 33 配置讀寫請求報文頭格式 44 消息請求報文頭格式


(一) 常見接口速度

\


 <喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxoMiBpZD0="二事務處理層協議理解">(二)事務處理層協議理解

2.1 事物層空間說明

1、PCI配置空間 :主要用於向系統提供設備自身的基本信息,並接受系統對設備全局狀態的控制和查詢。 2、I/O空間 :主要包括設備控制寄存器狀態寄存器,一般用於控制和查詢設備的工作狀態以及少量數據的交換。 3、存儲器空間:主要包括內存、顯存、擴展ROM、設備緩沖區等,一般用於存放大量數據和進行數據塊交換。 4、消息空間 : 傳遞消息的時間信號機制空間。

 

2.2 配置空間概述

PCI設備只有在系統軟件初始化配置空間之後,才能夠被其他主設備訪問。當PCI設備的配置空間被初值化之後,該設備在當前的PCI總線樹上將擁有一個獨立的PCI總線地址空間,即BAR(Base Address Register)寄存器所描述的空間。

2.2.1 配置空間寄存器說明

\

Vendor ID : 代表PCI設備的生產廠商 Device ID : 代表PCI廠商所生成的具體設備 Revision ID : 記錄PCI設備的版本號,可以看成Device ID寄存器的擴展。 Class Code :供系統軟件識別當前PCI設備的分類。
Base Class Code : 將PCI設備分類為顯卡、網卡、PCI橋等設備 Sub Class Code : 對這些設備進一步細分 Interface : 編程接口 Header Type:有8位,其中
7位:為1表示PCI設備為多功能設備,為0表示單功能設備。 第6~0位:0PCI Agent 設備的配置空間(普通PCI都此設置);1PCI橋使用的配置空間 Subsystem IDSubsystem Vendor ID:與Device ID 、Vendor ID功能類似,但是進一步細分了。
Capabilities Pointer : PCIe設備必須支持此寄存器,存放一些與PCI設備相關的擴展配置信息。 Interrupt Pin :PCI通過了4個中斷引腳INTA#,INTB#,INTC#,INTD# Base Address Register0~5 : 保存PCI設備使用的地址空間的基地址,該基地址保存的是該設備在PCI總線域中的地址。 Command:PCI設備的命令寄存器,在初始化時,值為0,此時該PCI設備只能夠接受配置請求總線事物外,無法接受任何存儲器或者I/O請求。系統軟件需要合理設置該寄存器之後,才能訪問該設備的存儲器或I/O空間。(寄存器具體功能查看《PCI+EXPRESS體系結構導讀》p49) Status :絕大多數是只讀位,保存PCI設備的狀態。

 

2.2.2 PCI總線配置概述

Type00配置請求:與HOST主橋或PCI橋直接相連的PCI Agent設備或PCI橋。 Type01配置請求:至少穿越一個PCI橋,訪問沒有與其直接相連的PCI Agent設備或PCI橋。

 

2.3 BAR空間概述

PC啟動後,BIOS探測搜有的外設。對PCIe(PCI)設備來說,BIOS檢測到板卡有多少個BAR空間,每個空間有多大,然後對應為這些BAR空間分配地址。對PCI設備來說,它能“看”到PCIe板卡的空間只有BAR空間,也只能訪問這些BAR空間。 板卡可以發送合法的 PCIe TLP 包,並得到 PC 端的響應;但是 PC 端訪問板卡被局限在 BAR 空間內。

2.3.1 BAR空間與DMA空間映射關系例子

\

 

2.4 事物處理層概述

TLP(Transaction Layer Sepcification) 有三部分組成,幀頭、數據、摘要(或者稱 ECRC)。 TLP 頭標3 或者 4 個 DW,格式和內容隨事物類型變化;數據端為 TLP 幀頭定義下的數據段,如果該 TLP 不攜帶數據,那該段為空。 Digest段( Optional)是基於頭標、數據字段計算出來的 CRC,成為 ECRC,一般 Digest 段由 IP 核填充。所以, PCIe 的處理在用戶層表現為處理 TLP 中頭標數據段
\

2.4.1 存儲器讀、寫請求TLP包頭格式

\

Fmt與Type:規定事物類型、頭標長度和是否有數據載荷。

Posted與Non-Posted

Non-posted :即請求需要返回completion的響應包; Posted:即不需要completion返回響應包。例如上面的存儲器寫入請求包和Message包都隸屬於posted包。

** Length : 1~1024DW,當值為**0:表示1024DW

DW BE:

Requester ID : 包含“生成這個TLP報文”的PCIe設備的總線號(Bus Number)設備號(Device Number)功能號(Function Number)

Tag:Requester ID、Tag合起來組成Transaction ID,在同一時間段內,PCIe設備發出的每一個Non-Posted數據請求TLP,其Transaction ID必須唯一。也就是Tag必須唯一。

 

2.4.2 完成包報文頭格式

\
* Byte0~3 與存儲器、配置請求報文對應字段含義一致。
* Completer ID:該字段存放“發送完成報文”的PCIe設備的ID號。
* Byte Count 記錄源設備還需要從目標設備中獲得多少字節的數據就能完成全部數據傳遞。
* Lower Address:接收端必須使用存儲器讀寫完成TLP的Low Address 字段,識別一個TLP中包含數據的起始地址。

 

2.3.3 配置讀寫請求報文頭格式

\

配置請求TLP第0~7字節與存儲器請求類似,第8~11字節中的BUSDeviceFunction Number中存放該TLP訪問的目標設備的相應號碼。 Ext RegisterReigister Number存放寄存器號。 配置請求報文的其他字段必須為一下值:

 

2.4.4 消息請求報文頭格式

\

PCIe總線規定了一下幾類消息報文:

INTx Interrupt Signaling INTx中斷信息包 Power Management 電源管理機能。 Error Signaling錯誤信息包 Locked Transaction Support 鎖住交易的支持 Slot Power Limit Support插槽電源限制的支持 Vendor-Defined Messages制造商自行定義信息

INTx 中斷消息報文

 

Copyright © Linux教程網 All Rights Reserved