新聞中心

EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計應(yīng)用 > 基于IP核的PCI Express接口設(shè)計

基于IP核的PCI Express接口設(shè)計

作者: 時間:2018-08-29 來源:網(wǎng)絡(luò) 收藏

現(xiàn)代測控系統(tǒng)和通信領(lǐng)域?qū)?shù)據(jù)傳輸速率的要求越來越高。相比PC 中其他技術(shù)的發(fā)展,總線技術(shù)的發(fā)展顯得相對緩慢,總線性能已經(jīng)成為制約系統(tǒng)性能發(fā)揮的瓶頸。傳統(tǒng)的ISA, EISA 總線等已無法適應(yīng)高速數(shù)據(jù)傳輸?shù)囊?,PCI 總線技術(shù)雖然經(jīng)過了不斷的修正和發(fā)展,但是由于它固有的缺陷,使其應(yīng)用領(lǐng)域受到限制。PCI Express 總線以其優(yōu)異的性能和低廉的造價引起了業(yè)界的廣泛關(guān)注,具有廣闊的應(yīng)用前景。本文介紹PCI Express 總線接口的設(shè)計方法,,并實現(xiàn)一個基于的PCI Express 總線接口。

本文引用地址:http://2s4d.com/article/201808/387966.htm

1 PCI Express 總線簡介

PCI Express 總線是Intel 公司于1997 年提出的第3 代I/O 技術(shù),是種全新的串行總線技術(shù)。與PCI 總線相比,PCI Express 總線具有以下特點:

(1)在數(shù)據(jù)傳輸模式上,PCI Express 總線采用雙工串行傳輸模式,一條PCI Express 通道由2 對LVDS 差分線對組成:

一對負(fù)責(zé)發(fā)送,另一對負(fù)責(zé)接收,單向數(shù)據(jù)傳輸速率為2.5 Gb/s。

(2)具有很好的靈活性,一個PCI Express 物理連接可以根據(jù)實際需要配置成×1,×2,×4,×8,×16,×32 個并行的數(shù)據(jù)通

道,滿足不同設(shè)備之間通信帶寬的要求。

(3)在軟件層與PCI 總線完全兼容,原有PCI 總線的驅(qū)動程序可以完全移植到PCI Express 總線架構(gòu)的系統(tǒng)中。

(4)串行連接采用自同步時鐘技術(shù),時鐘內(nèi)嵌于串行數(shù)據(jù)的8 bit/10 bit 編碼中,可實現(xiàn)數(shù)據(jù)傳輸率的自適應(yīng)調(diào)整。

PCI Express 協(xié)議定義了3 層結(jié)構(gòu):物理層,數(shù)據(jù)鏈路層和事務(wù)層。每個層次按照協(xié)議中規(guī)定的內(nèi)容,完成相應(yīng)的數(shù)據(jù)處理功能。

2 PCI Express 接口設(shè)計方法

PCI Express 總線的接口的設(shè)計方法大體有2 種:使用專用接口芯片或者使用可以實現(xiàn)PCI Express 物理接口的可編程器件。

專用接口芯片實現(xiàn)了 PCI Express 總線的物理層、數(shù)據(jù)鏈路層和事務(wù)層的控制邏輯。例如,PEX 8311 是PLX 公司推出的第1 款本地總線到PCI Express×1 的橋接芯片,符合PCI Express 1.0 規(guī)范,支持自動極性反轉(zhuǎn)、CRC 校驗、鏈路設(shè)備電源管理,具有直接主模式、直接從模式、DMA 和數(shù)據(jù)預(yù)取等功能。

使用 PEX 8311 實現(xiàn)PCI Express 接口,用戶僅需實現(xiàn)相對簡單的本地總線接口即可,降低了開發(fā)難度。但是這種方法受限于專用接口芯片的性能,用戶無法根據(jù)自身的需求提升接口的性能。

可編程器件設(shè)計方案的基本思想是由 FPGA 實現(xiàn)PCI Express 的上層電路,利用Philip 公司或TI 公司提供的PHY(物理層)器件實現(xiàn)物理層接口,通常需要購買Xilinx 公司或Altera 公司提供的IP 核與PHY 器件配合使用。在有些FPGA 產(chǎn)品中,集成有PCI Express 接口的硬核模塊,可以采用相應(yīng)的產(chǎn)品實現(xiàn)PCI Express 接口的功能。例如,Xilinx 公司Virtex-5 LXT/SXT/FXT/TXT 系列FPGA 器件中,集成有PCI Express 硬核端點模塊,能夠自動完成數(shù)據(jù)鏈路層和物理層的數(shù)據(jù)處理功能。采用這種方法,用戶只需要設(shè)計處理事務(wù)層數(shù)據(jù)包的邏輯電路即可。還可以根據(jù)自己的需求,設(shè)計具有特殊功能的電路結(jié)構(gòu),發(fā)揮接口的性能,但是這種方法的開發(fā)難度較大,開發(fā)周期相對較長。

3 PCI Express 接口實現(xiàn)

本設(shè)計采用 Xilinx 公司Virtex-5 系列xc5vlx30t 芯片,使用該芯片內(nèi)部的PCI Express Endpoint 硬核端點模塊,設(shè)計了處理事務(wù)層數(shù)據(jù)的邏輯電路,實現(xiàn)了計算機(jī)內(nèi)存與用戶邏輯之間數(shù)據(jù)的正確傳輸。其中,控制狀態(tài)機(jī)的設(shè)計和DMA 控制器的設(shè)計是重點、難點,下面詳細(xì)介紹具體的實現(xiàn)過程。

3.1 接口電路的設(shè)計

在接口電路中,PCI Express 物理層和數(shù)據(jù)鏈路層的電路采用Xilinx 公司的PCI Express Endpoint Block plus v1.5 硬核端點模塊實現(xiàn),能夠有效完成接口物理層和數(shù)據(jù)鏈路層的數(shù)據(jù)處理功能,提供給上層一個事務(wù)層數(shù)據(jù)接口。

上層電路主要由 5 部分電路構(gòu)成,分別是核配置與輔助控制模塊、數(shù)據(jù)發(fā)送控制器、數(shù)據(jù)接收控制器、數(shù)據(jù)輸入FIFO和數(shù)據(jù)輸出FIFO,如圖1 所示,最終提供給用戶FIFO 類型的用戶邏輯接口。

圖 1 PCI Express 接口電路結(jié)構(gòu)

核配置與輔助控制模塊與硬核端點模塊緊密聯(lián)系,完成硬核端點模塊中通道寬度、時鐘頻率、設(shè)備號、版本號、存儲空間類型與大小等一系列可控制參數(shù)的配置與一些基本功能的控制。

硬核端點模塊提供的事務(wù)層數(shù)據(jù)接口為 64 bit 的數(shù)據(jù)發(fā)送接口和64 bit 的數(shù)據(jù)接收接口以及控制數(shù)據(jù)發(fā)送和接收的一系列控制信號接口。數(shù)據(jù)接收控制器將收到的事務(wù)層包進(jìn)行解析,根據(jù)數(shù)據(jù)包的類型進(jìn)行相應(yīng)的處理。數(shù)據(jù)發(fā)送控制器用于將所要發(fā)送的數(shù)據(jù)按照事務(wù)層包的格式進(jìn)行封裝后,發(fā)送到硬核端點模塊。

數(shù)據(jù)輸入 FIFO 和數(shù)據(jù)輸出FIFO 共同構(gòu)成了數(shù)據(jù)通道,均為雙端口FIFO,用于連接PCI Express 接口和用戶邏輯。數(shù)據(jù)輸入FIFO 用于保存從接口收到的數(shù)據(jù);用戶邏輯電路輸出的數(shù)據(jù)保存到數(shù)據(jù)輸出FIFO 中后發(fā)送到接口電路。

3.2 控制狀態(tài)機(jī)的設(shè)計

數(shù)據(jù)發(fā)送控制器和數(shù)據(jù)接收控制器負(fù)責(zé)事務(wù)層數(shù)據(jù)的封裝和解析工作,是本設(shè)計中的關(guān)鍵電路模塊。這兩個模塊均采用有限狀態(tài)機(jī)方式進(jìn)行設(shè)計,下面詳細(xì)介紹這2 個模塊狀態(tài)機(jī)的設(shè)計。

接收控制器從硬核端點模塊中收到事務(wù)層包(TLP),根據(jù)TLP 的格式,第56 bit~第62 bit 為表示數(shù)據(jù)包類型的標(biāo)志位。按照標(biāo)志位中的信息,對TLP 的內(nèi)容進(jìn)行解析,進(jìn)行相應(yīng)的數(shù)據(jù)操作。所設(shè)計的狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖如圖2 所示,各個狀態(tài)的說明如表1 所示。

圖2 接收控制器狀態(tài)機(jī)

系統(tǒng)復(fù)位后,接收控制器狀態(tài)機(jī)處于空閑狀態(tài),等待接收數(shù)據(jù)包,收到TLP 后跳轉(zhuǎn)到相應(yīng)的狀態(tài)進(jìn)行存儲器或者I/O的讀寫操作。在操作過程中,對存儲器或者I/O 的狀態(tài)進(jìn)行監(jiān)控,如果目標(biāo)設(shè)備沒有準(zhǔn)備好,則進(jìn)入等待狀態(tài)直到目標(biāo)設(shè)備就緒。在存儲器或者I/O 的讀寫操作完成后,狀態(tài)機(jī)又返回空閑狀態(tài)。在各個狀態(tài)中接收控制器產(chǎn)生相應(yīng)的控制信號完成數(shù)據(jù)的寫入以及對發(fā)送控制器的操作。

與接收控制器狀態(tài)機(jī)相比,發(fā)送控制器狀態(tài)機(jī)相對簡單,只有3 個狀態(tài),狀態(tài)轉(zhuǎn)換圖見圖3,各個狀態(tài)的說明見表2。

系統(tǒng)復(fù)位后,發(fā)送控制器狀態(tài)機(jī)處于復(fù)位狀態(tài)。當(dāng)從接收控制器收到發(fā)送數(shù)據(jù)的命令后,如果需要發(fā)送的是一個載荷數(shù)據(jù),則將從存儲器或者I/O 中取出的載荷數(shù)據(jù)填充到TLP中的相應(yīng)位置后發(fā)送到端點模塊;如果需要發(fā)送的只是一個響應(yīng)或者標(biāo)志信息,則直接封裝成一個TLP 發(fā)送到端點模塊。

3.3 DMA 控制器的設(shè)計

由于串行總線結(jié)構(gòu)與傳統(tǒng)的并行總線結(jié)構(gòu)不同,因此存儲器的讀寫操作都是以數(shù)據(jù)包的形式傳輸。普通的讀寫操作一次最多只能進(jìn)行64 bit 數(shù)據(jù)的讀寫,使得總線多數(shù)時間處于等待狀態(tài),嚴(yán)重影響了PCI Express 總線的數(shù)據(jù)傳輸速率。本文設(shè)計出相應(yīng)的DMA 控制器,實現(xiàn)了DMA 方式的數(shù)據(jù)傳輸。

DMA 控制器的主要電路結(jié)構(gòu)為14 個與DMA 操作相關(guān)的寄存器,通過對這些控制寄存器的讀寫,設(shè)定DMA 方式數(shù)據(jù)讀寫操作的地址范圍和數(shù)據(jù)大小,完成DMA 數(shù)據(jù)讀寫操作。這些寄存器的定義和功能描述如表3 所示。

在設(shè)計了上述14 個DMA 控制寄存器后,接收控制器和發(fā)送控制器的狀態(tài)機(jī)也要進(jìn)行相應(yīng)的調(diào)整,以適應(yīng)DMA 操作的需要。在接收控制器狀態(tài)機(jī)中加入了2 個狀態(tài),分別用于接收數(shù)據(jù)傳輸過程中的第1 個DMA 數(shù)據(jù)包和剩余的DMA數(shù)據(jù)包。在發(fā)送控制器狀態(tài)機(jī)中也加入了2 個狀態(tài),分別用于發(fā)送數(shù)據(jù)傳輸過程中的第1 個DMA 數(shù)據(jù)包和剩余的DMA數(shù)據(jù)包。為了達(dá)到盡可能高的數(shù)據(jù)傳輸速率,在接收和發(fā)送過程中都使用了64 bit 數(shù)據(jù)傳輸模式。

在設(shè)計了如上所述的 DMA 控制器后,PCI Express 總線接口就可以用DMA 方式進(jìn)行數(shù)據(jù)的讀寫操作。進(jìn)行DMA 讀/寫操作的具體過程如下:(1)寫中斷控制寄存器,打開中斷;(2)寫讀/寫地址寄存器,設(shè)置讀/寫數(shù)據(jù)的起始地址;(3)寫讀/寫包長度寄存器,設(shè)置讀/寫數(shù)據(jù)包的大小;(4)寫讀/寫包數(shù)量寄存器,設(shè)置讀/寫數(shù)據(jù)包的數(shù)量;(5)寫控制寄存器,啟動DMA 讀/寫操作;(6)等待中斷服務(wù)寄存器發(fā)出中斷;(7)收到中斷,讀中斷服務(wù)寄存器;(8)寫中斷控制寄存器,關(guān)閉中斷。

4 仿真與性能測試

使用 Verilog 語言編寫代碼實現(xiàn)本設(shè)計,使用Modelsim SE 6.2g 對該設(shè)計進(jìn)行功能仿真。從數(shù)據(jù)寫入FIFO 的仿真波形圖中可以看到,未采用DMA 方式時,每次只能夠?qū)⒁粋€數(shù)據(jù)寫入到FIFO 中,在2 次寫操作之間存在較長的等待時

間;采用DMA 方式時,可以根據(jù)用戶的設(shè)置連續(xù)寫入多個數(shù)據(jù),消除了2 次操作之間的等待時間,大大提高了數(shù)據(jù)傳輸速率。

自行設(shè)計了采用Xilinx 公司xc5vlx30t 芯片的PCI Express×4 接口數(shù)據(jù)傳輸卡;使用Xilinx 公司的ISE 9.2 對設(shè)計代碼進(jìn)行綜合和布局布線, 生成配置文件, 下載到xc5vlx30t 芯片中;使用DELL Precision 690 工作站,在Windows 環(huán)境下編寫測試程序?qū)?shù)據(jù)傳輸卡PCI Express 接口數(shù)據(jù)傳輸?shù)乃俾蔬M(jìn)行測試。

采用多種數(shù)據(jù)量對 PCI Express 接口進(jìn)行DMA 方式讀數(shù)據(jù)測試,得到的結(jié)果如圖4 所示,硬件層數(shù)據(jù)傳輸速率穩(wěn)定在840 Mb/s。

圖4 實際測試讀數(shù)據(jù)速率

采用多種數(shù)據(jù)量對 PCI Express 接口進(jìn)行DMA 方式寫數(shù)據(jù)測試,得到的結(jié)果如圖5 所示,硬件層數(shù)據(jù)傳輸速率穩(wěn)定在720 Mb/s。

圖5 實際測試寫數(shù)據(jù)速率

從圖 4、圖5 可以看出,DMA 控制器有效減少了數(shù)據(jù)傳輸過程中的等待時間,大幅度地提高了數(shù)據(jù)傳輸速率,發(fā)揮了PCI Express 總線的優(yōu)越性能。

5 結(jié)束語

本文采用基于 Xilinx 公司硬IP 核的方法設(shè)計實現(xiàn)了PCI Express 總線接口及數(shù)據(jù)的傳輸。對于DMA 控制器的設(shè)計,能提高數(shù)據(jù)傳輸?shù)乃俾剩筆CI Express 總線的性能得到充分發(fā)揮。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉