《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于PCI Express總線的高速數(shù)據(jù)傳輸卡設(shè)計(jì)與實(shí)現(xiàn)
基于PCI Express總線的高速數(shù)據(jù)傳輸卡設(shè)計(jì)與實(shí)現(xiàn)
來(lái)源:電子技術(shù)應(yīng)用2010年第8期
潘玉霞1,2, 馬游春1,2,3, 熊繼軍1,2
1. 中北大學(xué) 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室, 山西 太原030051;2. 中北大學(xué) 儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室, 山西 太原030051;3. 北京航空航天大學(xué) 光電技術(shù)研究所, 北京100083
摘要: 通過(guò)設(shè)計(jì)PCI Express高速數(shù)據(jù)傳輸卡實(shí)現(xiàn)了地面控制臺(tái)與計(jì)算機(jī)之間的高速數(shù)據(jù)傳輸。高速數(shù)據(jù)傳輸卡采用PLX公司的接口芯片PEX8311來(lái)實(shí)現(xiàn)PCI Express總線的接口邏輯,數(shù)據(jù)傳輸采用DMA方式,通過(guò)對(duì)信號(hào)源的自檢驗(yàn)證了傳輸卡能夠?qū)崟r(shí)無(wú)誤地傳輸數(shù)據(jù)。在硬件設(shè)計(jì)部分,主要對(duì)差分傳輸、PCI Express接口電路和FPGA邏輯控制模塊進(jìn)行了描述和設(shè)計(jì)。
中圖分類號(hào): TP274
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2010)08-0092-04
Design and implementation of a high-speed data transfer card based on PCI Express
PAN Yu Xia1,2, MA You Chun1,2,3, XIONG Ji Jun1,2
1. National Key Laboratory for Electronic Measurement Technology, North University of China, Taiyuan 030051, China;2. Key Laboratory of Instrumentation Science & Dynamic Measurement of Ministry of Education,North University of China, Taiyuan 030051, China;3. Institute of Opt-electronics, Beihang University, Beijing 100083, China
Abstract: A high-speed data transfer card based on PCI Express which realized high-speed data transfer between ground controller and computer was designed. Interface chip PEX8311 of PLX Co. was used to implemented interface logic, and the data transfer mode was DMA. Self-testing of data source can testify the function of the card. At the part of hardware implementation, the paper mostly presented LVDS transition、PCI Express interface circuit and FPGA logic control module.
Key words : PCI Express; PEX8311; FPGA; interface

   地面測(cè)控系統(tǒng)由上位機(jī)軟件、工業(yè)控制計(jì)算機(jī)、地面控制臺(tái)及相應(yīng)電纜網(wǎng)組成。在系統(tǒng)聯(lián)試前它可以和采編器、存儲(chǔ)器構(gòu)成閉環(huán)反饋,對(duì)采編器、存儲(chǔ)器實(shí)施自檢。地面控制臺(tái)在上位機(jī)軟件的控制下,真實(shí)模擬機(jī)上接口信號(hào),為采編器提供不同的數(shù)字量信號(hào),并對(duì)回收后的存儲(chǔ)器進(jìn)行數(shù)據(jù)的讀取分析。以前地面測(cè)試系統(tǒng)中的上位機(jī)軟件系統(tǒng)和地面控制臺(tái)之間的通信是由USB接口來(lái)完成的,傳輸速率較低。為了解決大容量數(shù)據(jù)高速讀取的瓶頸問(wèn)題,采用PCI Express總線來(lái)讀取數(shù)據(jù)。PCI Express 采用了目前業(yè)內(nèi)流行的點(diǎn)對(duì)點(diǎn)串行連接, 每個(gè)設(shè)備都有自己的專用連接, 不需要向整個(gè)總線請(qǐng)求帶寬, 而且可以把數(shù)據(jù)傳輸率提高到一個(gè)很高的頻率, 達(dá)到 USB 所不能提供的高帶寬。本文設(shè)計(jì)并實(shí)現(xiàn)的數(shù)據(jù)傳輸卡基于PCI Express總線,提高了系統(tǒng)的讀寫速度,滿足了目前大容量高速實(shí)時(shí)傳輸記錄的要求。
1 系統(tǒng)結(jié)構(gòu)
 地面控制臺(tái)是模擬機(jī)上信號(hào)源功能,信號(hào)源由上位機(jī)生成,然后下載到地面控制臺(tái)的RAM中。為了正確地發(fā)送信號(hào)源數(shù)據(jù)需要對(duì)下載的信號(hào)源數(shù)據(jù)進(jìn)行自檢,即將地面控制臺(tái)RAM中的數(shù)據(jù)讀入上位機(jī)來(lái)驗(yàn)證控制臺(tái)中信號(hào)源是否正確。本系統(tǒng)通過(guò)PCI Express傳輸卡實(shí)現(xiàn)了信號(hào)源自檢功能。
    如圖1所示,上位機(jī)通過(guò)PCI Express接口將信號(hào)源的數(shù)據(jù)下載到FIFO1存儲(chǔ)器當(dāng)中,同時(shí)將相應(yīng)的控制命令發(fā)送給FPGA。FPGA檢測(cè)到相應(yīng)控制命令后,開(kāi)始讀取FIFO1中的數(shù)據(jù),并將該數(shù)據(jù)經(jīng)過(guò)串并轉(zhuǎn)換寫到地面控制臺(tái)RAM中。為了保證上位機(jī)下載到靜態(tài)存儲(chǔ)器中的數(shù)據(jù)的正確性,上位機(jī)可以通過(guò)PCI Express接口將地面控制臺(tái)RAM中的數(shù)據(jù)寫到FIFO2存儲(chǔ)器當(dāng)中,讀取其中的數(shù)據(jù)并進(jìn)而對(duì)該數(shù)據(jù)進(jìn)行判讀以驗(yàn)證信號(hào)源數(shù)據(jù)的正確性。

2 硬件設(shè)計(jì)
2.1 差分傳輸

 低壓差分傳送技術(shù)是基于低壓差分信號(hào)LVDS的傳送技術(shù),其主要特點(diǎn)是抗干擾能力強(qiáng)、傳輸速率高、低功耗、噪聲性能好。
 傳輸卡接收LVDS數(shù)據(jù)時(shí),考慮到在遠(yuǎn)距離的數(shù)據(jù)傳輸過(guò)程中會(huì)遇到一系列的干擾而導(dǎo)致信號(hào)的衰減,在接收端設(shè)計(jì)了CLC014驅(qū)動(dòng)芯片,發(fā)送端設(shè)計(jì)了CLC001驅(qū)動(dòng)芯片,其作用是把傳輸來(lái)的信號(hào)增強(qiáng)。CLC001與CLC014是配芯片,在設(shè)計(jì)中要一起使用才能夠起到對(duì)長(zhǎng)距離傳輸時(shí)信號(hào)衰減的恢復(fù)。串并/并串轉(zhuǎn)換電路中采用LVDS DS92LV1801芯片,它是一款18位的串并/并串轉(zhuǎn)換芯片,實(shí)現(xiàn)16位數(shù)據(jù)傳輸。
2.2  PCI Express接口設(shè)計(jì)
 PCI Express總線接口的設(shè)計(jì)方法大體有兩種:使用可實(shí)現(xiàn)PCI Express物理接口的可編程邏輯器件FPGA或使用專用接口芯片。前者的優(yōu)點(diǎn)是其靈活的可編程性,缺點(diǎn)是開(kāi)發(fā)難度比較大,開(kāi)發(fā)周期比較長(zhǎng);而專用接口芯片實(shí)現(xiàn)了PCI Express的物理層和數(shù)據(jù)鏈路層、事務(wù)層的控制邏輯,這使用戶可以專心于其應(yīng)用方面的開(kāi)發(fā),而不必費(fèi)力再調(diào)試PCI Express接口,降低了開(kāi)發(fā)的難度,是一般用戶實(shí)現(xiàn)PCI Express接口的有效方法。該設(shè)計(jì)采用美國(guó)PLX公司推出的PEX8311作為本地總線與PCI Express總線的接口。
2.2.1 PEX8311的性能簡(jiǎn)介
 PEX8311是一款x1的PCI Express接口芯片,本地端總線頻率最高可達(dá)66 MHz,數(shù)據(jù)位寬32 bit。PEX8311有主模式、從模式和DMA三種數(shù)據(jù)傳輸模式。主模式是由 Local總線主設(shè)備通過(guò)PEX8311訪問(wèn)PCI Express總線存儲(chǔ)空間和I/O空間;從模式是由PCI Express總線主設(shè)備通過(guò)PEX8311訪問(wèn)Local總線存儲(chǔ)空間和I/O空間;DMA傳輸模式由PEX8311作為兩總線的主設(shè)備,能在PCI Express總線存儲(chǔ)空間和Local總線存儲(chǔ)空間之間互傳數(shù)據(jù)。這三種數(shù)據(jù)傳輸方式中,從模式的優(yōu)先級(jí)最高,主模式次之,DMA方式最低。PEX8311橋高速數(shù)據(jù)傳輸?shù)膬?nèi)部塊圖解如圖2所示。

   PEX8311有6個(gè)內(nèi)部FIFO,分別作為主模式、從模式、DMA這三種數(shù)據(jù)傳輸模式的讀寫數(shù)據(jù)通道,這些FIFO用于使兩條總線的操作相對(duì)獨(dú)立,從而保證高性能的數(shù)據(jù)突發(fā)傳輸。
2.2.2 電路設(shè)計(jì)
 從圖2可看出,采用PEX8311的接口設(shè)計(jì)在邏輯上可分為3個(gè)功能模塊:PCI Express接口部分、EEPROM部分和本地總線部分。
 (1) EEPROM部分
 PEX8311提供兩個(gè)串行EEPROM接口,在系統(tǒng)上電后讀取配置信息。SPI串行EEPROM是PCI-Express的配置EEPROM,它主要用來(lái)控制PCI Express的性能。SPI串行EEPROM可以用來(lái)預(yù)配置片上8 KB共享緩存,用1、2或3字節(jié)地址PEX8311可支持容量達(dá)到16 MB的SPI串行EEPROM。本設(shè)計(jì)中使用容量為64 KB的AT25640器件。MicroWire串行EEPROM是本地配置EEPROM,它用來(lái)控制本地總線行為,并分配合適的地址范圍。配置器件可直接與PEX831l相連。
 (2) PCI Express接口部分
 PCI Express接口部分的信號(hào)線可以直接與PCI Express連接器(俗稱金手指)連接。其中,REFCLK±是一組差分時(shí)鐘,它由系統(tǒng)主板提供。兩個(gè)參考時(shí)鐘都要求保持在正常工作頻率100 MHz ±300 Hz之內(nèi)。PRSNT1/PRSNT2信號(hào)線用于檢查附加卡是否插入連接器。此次設(shè)計(jì)中將PRSNT1和PRSNT2相連,這樣當(dāng)接口板插入到PCI Express連接器時(shí)就能進(jìn)行存在檢測(cè)。原理圖如圖3所示。

   (3) 本地總線部分
 LOCAL端具有32位數(shù)據(jù)總線寬度和66 MHz時(shí)鐘頻率,PEX8311支持三種LOCAL總線接口模式: C模式、J模式和M模式, 可方便與多種微處理器連接。接口模式由MODE0和MODE1兩管腳確定。實(shí)際中常用的還是時(shí)序邏輯相對(duì)簡(jiǎn)單的C模式, 即非復(fù)用的地址/數(shù)據(jù)總線模式。PEX8311支持三種局部總線數(shù)據(jù)傳輸模式:單周期模式、四周期突發(fā)模式、連續(xù)突發(fā)模式。
 DMA傳輸數(shù)據(jù)使傳輸任務(wù)從主控設(shè)備中解脫出來(lái),由短且有效的傳輸描述符來(lái)承擔(dān),讓主控設(shè)備可以有時(shí)間去處理其他事件。PEX8311有兩個(gè)DMA通道,可以同時(shí)處理兩側(cè)總線上要求的傳輸,免去外部設(shè)備的等待。另外,DMA傳輸可以與主模式和從模式傳輸同步操作,但后兩者比DMA傳輸優(yōu)先級(jí)高??紤]到DMA傳輸有以上優(yōu)點(diǎn),本設(shè)計(jì)中PCI Express接口部分采用四周期突發(fā)模式DMA塊傳輸模式,LOCAL總線接口采用C模式。
2.3 FPGA邏輯控制
 在本設(shè)計(jì)中FPGA采用了Altera公司的CycloneII系列的 EP2C20F484芯片,這款芯片具有484個(gè)IO引腳,其中可用IO引腳315個(gè),具有68 416個(gè)邏輯單元,有1.1 Mbit的RAM可利用,可變的端口RAM配置×1,×2,×4,×8,×9,×16,×18,×32和×36。對(duì)EP2C20F484芯片配置可以使用EPCS4、EPCS16。在本設(shè)計(jì)中采用EPCS4對(duì)EP2C20F484芯片配置。其配置原理圖如圖4所示。

 在上面的配置原理圖中有兩個(gè)下載口:一個(gè)是JTAG下載口,一個(gè)是AS下載口。其中JTAG下載口是用來(lái)下載.sof文件的,下載.sof文件后可以使用quartus II 6.0的邏輯分析儀進(jìn)行在線調(diào)試;另一個(gè)下載口是下載.pof文件的,其作用是把程序燒寫進(jìn)EPCS4配置芯片,在FPGA每次加電開(kāi)始工作之后,把程序?qū)б紽PGA的內(nèi)部RAM中,使器件實(shí)現(xiàn)設(shè)計(jì)者要求的邏輯功能。
 FPGA作為本地總線的邏輯控制器,負(fù)責(zé)協(xié)調(diào)好與FIFO和PEX8311之間的時(shí)序關(guān)系。系統(tǒng)接收數(shù)據(jù)時(shí), 首先由驅(qū)動(dòng)程序向PEX8311發(fā)送復(fù)位信號(hào),通過(guò)LRESET復(fù)位本地端的FPGA和FIFO,清空FIFO內(nèi)部數(shù)據(jù),并將HF和FF標(biāo)志置為無(wú)效,然后等待數(shù)據(jù)的輸入。數(shù)據(jù)和時(shí)鐘進(jìn)入FPGA后, 首先將外界傳入到FPGA中的16位并行數(shù)據(jù)在兩個(gè)CLK周期下合并為32位并行數(shù)據(jù), 并在每一個(gè)寫時(shí)鐘WCLK的上升沿寫入FIFO2。當(dāng) FIFO2中的數(shù)據(jù)達(dá)到半滿狀態(tài)時(shí), HF標(biāo)志位有效,通過(guò)FPGA向PEX8311發(fā)出DMA中斷請(qǐng)求。PC機(jī)響應(yīng)中斷后, 設(shè)置 DMA傳輸模式, 傳輸字節(jié)數(shù)及地址信號(hào)等。PEX8311通過(guò)LHOLD申請(qǐng)控制本地總線, 待收到FPGA發(fā)出的 LHOLDA響應(yīng)信號(hào)后獲得本地總線的控制權(quán), 并立即啟動(dòng)4字節(jié)突發(fā)模式的Block DMA周期。FPGA在收到有效的LW/R讀信號(hào)和ADS地址選通信號(hào)后, 發(fā)出Ready本地準(zhǔn)備好應(yīng)答信號(hào), 同時(shí)使能FIFO2的讀允許 REN和輸出允許OE。在傳輸最后一個(gè)數(shù)據(jù)時(shí), PEX8311發(fā)出BLAST信號(hào), FPGA置FIFO讀使能和輸出使能無(wú)效, 并取消Ready從而結(jié)束DMA周期。系統(tǒng)發(fā)送數(shù)據(jù)時(shí),F(xiàn)PGA將計(jì)算機(jī)寫入FIFO1中的32位數(shù)據(jù)拆分成兩個(gè)16位數(shù)據(jù)送入并串轉(zhuǎn)換芯片再經(jīng)過(guò)驅(qū)動(dòng)芯片發(fā)送到測(cè)試臺(tái)。
3 軟件設(shè)計(jì)
 本系統(tǒng)軟件設(shè)計(jì)包括驅(qū)動(dòng)程序和應(yīng)用程序兩部分。為了降低開(kāi)發(fā)難度、縮短時(shí)間,又不使所開(kāi)發(fā)的驅(qū)動(dòng)程序效率太低,本文選用DriverStudio來(lái)開(kāi)發(fā)PCI-E的功能驅(qū)動(dòng)程序。應(yīng)用層軟件采用VC++6.0編寫,按用戶要求運(yùn)行于Windows2000/WindowsXP平臺(tái)。通過(guò)和人機(jī)交互界面接收用戶的設(shè)置,然后把這些設(shè)置傳遞至驅(qū)動(dòng)程序中,由驅(qū)動(dòng)程序?qū)τ布M(jìn)行初始化和配置,最后應(yīng)用程序從驅(qū)動(dòng)程序中讀寫數(shù)據(jù)。本應(yīng)用程序采用了多線程的方式與驅(qū)動(dòng)程序進(jìn)行交互通信。
4 性能測(cè)試
 信號(hào)源的數(shù)據(jù)格式可以根據(jù)需要設(shè)置,軟件默認(rèn)設(shè)置為遞增數(shù)據(jù)。圖5為自檢信號(hào)源數(shù)據(jù),該數(shù)據(jù)為00-FF遞增數(shù)據(jù)。將信號(hào)源數(shù)據(jù)下載到地面控制臺(tái)RAM中。

    下載信號(hào)源成功后,將地面控制臺(tái)RAM中的數(shù)據(jù)讀入上位機(jī)來(lái)驗(yàn)證是否信號(hào)源正確。通過(guò)圖6所示的數(shù)據(jù)分析軟件可以詳細(xì)地檢驗(yàn)從RAM中讀回的數(shù)據(jù)是否準(zhǔn)確。

    此數(shù)據(jù)波形驗(yàn)證了PCI Express傳輸卡能夠?qū)崟r(shí)無(wú)誤地傳輸數(shù)據(jù)。通過(guò)功能測(cè)試及數(shù)據(jù)分析可知,系統(tǒng)實(shí)現(xiàn)了任務(wù)中提出的功能要求,達(dá)到了技術(shù)指標(biāo)。
參考文獻(xiàn)
[1]  黃小紅,李峰, 倪衛(wèi)芳. PEX8311芯片數(shù)據(jù)傳輸研究[J]. 電子工程師,2007,33(10):64-67.
[2]  PLX Technology,Inc.PEX 8311 PCI Express-to-Generic  Local Bus Bridge Data Book[Z].2005.
[3]  PLX Technology,Inc.PEX 8311RDK Hardware Reference Manual,Version 0.90[Z].2005.
[4]  WU Qiang, XU Jia Mou, LI Xu Wen. The research and  implementation of interfacing based on PCI express. The Ninth International Conference on Electronic Measurement  & Instruments. ICEMI,2009.
[5]  YU Peng, LI Bo, LIU Da Tong. A high speed DMA transaction method for PCI express devices[C].2009 IEEE Circuits and Systems International Conference on 2009.
[6]  許軍,李玉山,賀占莊,等. PCI Express總線技術(shù)研究[J].計(jì)算機(jī)工程與科學(xué),2006,28(5).

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。