石永亮 秦麗 張會新 劉文怡 樊劉華



摘 要: 設計一種USB 3.0+PCI的雙接口數據傳輸系統,系統采用FPGA作為核心控制器,CYUSB3014和PCI9054作為USB 3.0與PCI接口芯片,實現上位機下發指令給遠端采編存儲設備,及存儲設備的數據回傳。設計中PCI接口采用單次訪問結合突發訪問的數據傳輸模式,USB通信高速穩定,且兩個接口互為備用,相較于單一接口具有更高的可靠性。實踐表明,該系統數據傳輸速率達到176 MB/s,保證可靠性的同時,相較于單一USB 2.0接口的12 MB/s有了大幅提高。
關鍵詞: 高速數據傳輸; 雙接口; PCI; USB 3.0
中圖分類號: TN911?34; TP274 文獻標識碼: A 文章編號: 1004?373X(2016)08?0096?04
Application of PCI and USB3.0 in high?speed data transmission system
SHI Yongliang, QIN Li, ZHANG Huixin, LIU Wenyi, FAN Liuhua
(National Key Laboratory for Electronic Measurement Technology, MOE Key Laboratory of Instrumentation Science & Dynamic Measurement,
North University of China, Taiyuan 030051, China)
Abstract: A USB 3.0 and PCI dual?interface data transmission system was designed. A FPGA is used as the core controller in the system. CYUSB3014 and PCI9054 are adopted as interface chips of USB and PCI to achieve the functions that the host computer issued instructions to the remote storage devices, and collect the data returned from storage devices. The data transmission mode combining the single access with burst access is adopted in the design for PCI interface. USB communication is fast and stable, and the two interfaces are mutual backups of the two. Compared with the system with a single interface USB 2.0, whose data transmission rate is 12 MB/s, it has higher reliability. The practice shows that the data transmission rate of the system can reach up to 176 MB/s, while ensuring its reliability.
Keywords: high?speed data transmission; dual?interface; PCI; USB 3.0
0 引 言
飛行器的研制工作量大、系統復雜、成本昂貴,為了有效降低研制經費、加快研制進程,同時確保飛行試驗的工作參數可靠有效,本文設計了一種地面高速數據傳輸系統。該系統旨在實現遠距離控制采編存儲設備的工作狀態,同時能夠遠距離可靠并實時傳輸采編設備的數據,實現數據的回傳分析[1]。本系統將PCI9054作為“橋接”芯片,采用單次訪問結合突發訪問的數據傳輸模式,實現主控芯片FPGA和PCI接口的數據傳輸。由于USB接口占用資源少,易于開發和集成,支持熱插拔功能,串行接口選用了USB 3.0接口。本系統設置了自檢功能,一旦其中一個接口出現問題就選擇使用另外一個接口,即PCI和USB接口互為備用接口,保證了系統的可靠性,兩種典型的串并接口,使得本系統在保證高速、可靠的同時也增強了該系統的通用性。
1 系統總體設計
本系統通過PCI或USB與上位機實現指令接收與數據回傳,為了保證系統的工作可靠性,正常工作模式下,兩接口互為對方的備用通信接口。系統接收上位機下發的命令后,通過數據傳輸卡轉發到LVDS轉發器,采用LVDS傳輸協議實現系統與遠程采編存儲設備的通信。系統總體設計如圖1所示。
USB 3.0通信采用CYUSB3014芯片,相比于早期的USB接口,USB 3.0在物理層上增加了支持并行傳輸的線路,實現了超高速傳輸。USB 3.0的全雙工數據傳輸模式,并兼容USB 2.0,雙向并發的工作模式減少了在USB 2.0協議傳輸中的等待時間。由于PCI總線協議復雜,PCI總線接口開發一般采用通用PCI接口芯片FPGA方式實現PCI總線接口通信,通用接口芯片可以實現PCI目標和主控模塊的接口功能,將復雜的PCI總線接口協議轉化為比較簡單的用戶接口,這樣保證了系統的可靠性。
2 硬件電路設計
2.1 PCI接口電路設計
在PCI系統中,能夠獲取總線控制權的設備稱之為主設備,被主設備控制的設備稱為目標設備或從設備。本系統中的PCI傳輸設備為主設備,其接口電路總體設計框圖如圖2所示。
PCI總線信號是直接與PCI插槽相連接的地址/數據信號和PCI協議控制信號,這類信號包括系統信號CLK(時鐘信號)、RST#(復位信號),地址/數據復用信號AD[31:00]、協議控制信號PAR(奇偶校驗信號)、STOP#(停止信號)、FRAME#(幀周期信號)、DEVSEL#(設備選擇信號)、IRDY#(主設備準備好信號)、TRDY#(目標設備),初始化設備選擇信號IDSEL(初始化設備選擇信號)、PERR#(數據奇偶校驗錯誤報告信號)、SERR#(系統錯誤報告信號)。由于較高的背板阻抗會加劇瞬態干擾,為減小信號線上的分支對總線的影響,需要對總線信號進行串聯匹配,匹配電阻為10 Ω,由于本地總線過沖比較嚴重,故本系統設計時串聯22 Ω,以減小總線的過沖影響[2]。
PCI9054內部提供一個串行的E2PROM配置接口,為PCI總線和局部總線存儲寄存器提供配置信息,設計中常選用93LC56B作為外接E2PROM。PCI9054上電后首先會自動讀取E2PROM中的數據,若檢測到第一個長字為非全0或非全1時,說明存在已經燒寫好的E2PROM,上電后該芯片會為PCI9054的寄存器配置初始化參數[3],圖2中,93LC56B的3、4引腳和EEDI/DO連接,并通過3.9 kΩ電阻分別接3.3 V和地,此處設計方便根據實際需求選擇電路連接方式,當不需要E2PROM對PCI9054進行配置時選擇下拉電阻接地,否則選擇上拉電阻接3.3 V。
2.2 USB接口電路設計
USB 3.0控制芯片采用CYUSB3014,該芯片具有高度集成的靈活特性,并向下兼容USB 2.0協議。在實際應用中,USB接口經常接觸人體,且頻繁進行熱插拔,為了加強接口的靜電防護性能,本系統增加了外置ESD防護芯片,芯片采用Semtech公司的RCLAMP0524J芯片作為ESD防護器件[4],電路見圖3。另外,將PMODE[2:0]配置成Z1Z模式,系統上電時USB3014選擇I2C的引導方式,只需將配置好的固件程序通過I2C燒錄進外部E2PROM,這樣在重新上電時不需要重復下載固件。USB3014和FPGA的硬件通信實現只需要將USB3014的控制總線和數據總線分別連接到FPGA的I/O引腳上即可。在實際工作時,FPGA通過控制片選引腳SLCS#、中斷控制引腳PKTEND#、寫選通控制引腳SLWR#、讀選通控制引腳SLRD#、輸出使能控制引腳SLOE、時鐘輸入引腳PCLK以及緩存選擇引腳A[1:0]等引腳來控制USB3014芯片的數據緩沖區的讀寫時序;而USB3014芯片通過狀態標志引腳FLAGB和FLAGA引腳為FPGA提供數據緩沖區的空滿狀態;通過雙向數據總線DQ[15:0],FPGA的高速I/O口與USB3014的數據傳輸接口進行16位的并行高速傳輸。
3 軟件設計
FPGA控制單元選用XILINX公司的XC6SLX75作為主控芯片,以ISE14.7為開發環境,使用VHDL語言進行FPGA與PCI接口及USB接口通信協議的邏輯時序控制。
3.1 PCI接口軟件設計
3.1.1 PCI通信協議
本地總線和PCI總線之間的數據傳輸有三種方式:PCI Initiator模式、PCI Target模式和DMA模式[5]。對于本系統,主要目的是將數據快速地上傳至上位機,在DMA和PCI Target的突發模式皆滿足速度要求的前提下,考慮到易操作性,選擇上傳數據采用突發模式,而下發命令采用DMA的單一周期訪問模式。
圖3 USB 3.0接口電路
本系統通過類似握手協議的方式來對指令確認反饋,以確保正確下發指令。工作模式具體是:上位機給地址0x0010下發一個指令,FPGA通過改地址獲取指令,之后進行兩種操作:一是通過將指令寫入地址0x0020反饋給上位機;二是將指令發送給下一級設備。當指令反饋給上位機之后,上位機判斷該指令是否與前一次發的一致,一致說明上位機下發指令成功,若不一致上位機自動重新下發指令,如果確認三次都不一致,則上位機顯示發送失敗,保證指令的及時性和準確性。本系統協議中上位機與功能板卡之間的指令約定為8 b,并約定4個地址用于交互指令和數據,地址分配如表1所示。
表1 地址分配關系表
3.1.2 讀寫程序設計
FPGA與PCI通過專用接口控制器PCI9054進行通信,實現單一周期和突發訪問,需要的本地信號主要有:Lhold(本地申請總線信號)、LW/R#(讀有效為低,寫有效為高)、ADS#(有效地址和新總線的開始)、Blast#(決定一個單周期被執行或突發周期被執行)、Ready#(有效時表示總線上讀的數據有效或者一次寫數據傳輸結束)[6]。為了同時滿足單一周期總線訪問和突發方式傳輸數據的要求,FPGA程序采用了狀態及方式,讀寫程序流程如圖4所示。
FPGA內部邏輯從S0狀態開始,判斷ADS#是否為低電平。當上位機沒有下發指令時,ADS#信號處于高電平,PCI總線一直處于空閑狀態;當有指令下發時ADS#拉低,新的總線傳輸啟動,進入S1狀態進行單一周期訪問。FPGA判斷LW/R#信號狀態,當LW/R#為高時執行寫操作,即FPGA從本地數據端接收上位機下發的命令,一次單周期訪問以Ready#、Blast#信號拉低結束。結束單周期訪問后,狀態機又跳回S0狀態,根據協議,LW/R#信號為PCI Target讀操作,傳輸的本地地址為指令確認地址,將前一次剛接收 的命令寫入約定好的地址,并再一次結束單周期訪問,跳回S0狀態。同時上位機從0x0020獲取指令與前一次下發的指令作對比,對指令進行確認反饋。
當通過單周期訪問完成下發指令后,若指令中有上傳數據指令,PCI總線會再一次啟動單周期PCI Target讀操作,將是否能獲取數據的標志寫入固定地址,傳送給上位機進行判斷,若是半滿信號,說明FPGA準備好數據,狀態機進入突發訪問周期,上位機可以突發獲取數據。
3.2 USB接口軟件設計
USB3014的工作模式為同步Slave FIFO,將USB3014的GPIF端口配置為16位以匹配DDR2的位寬。GPIF接口作為雙向通道,它既可以將計算機的命令等內容存入緩沖區以被FPGA讀取,也可以從FPGA內部接收數據存入緩沖區回傳至計算機。FPGA作為Master對從屬器件USB3014的內部緩沖區進行突發或單周期數據存取,FPGA通過改變邏輯狀態來選擇對USB3014執行讀寫操作, USB3014給FPGA提供FLAGA/FLAGB信號作為緩沖區的空/滿標志,FPGA中的控制模塊就會根據空/滿標志的狀態來決定是否暫停其讀或寫的行為[7?8]。本傳輸系統USB 3.0模塊的程序功能主要為:時鐘管理模塊通過CMT對外部輸入的50 MHz進行分頻倍頻處理,產生FPGA的工作時鐘以及與其他芯片諸如DDR2以及USB3014的通信時鐘; FIFO管理模塊將通過LVDS接收的數據進行緩存,來解決不同模塊間數據傳輸的跨時鐘域及位寬不同的問題,將數據寫入DDR2;DDR2控制模塊是調用IP核來實現FPGA對DDR2的控制,對其進行充電、激活等操作[9];USB 3.0控制模塊是對USB3014進行控制,并識別其標志信號,最終實現把DDR2 SDRAM中的數據通過USB 3.0接口批量回傳給上位機。FPGA的功能結構框圖如圖5所示。
4 測量結果與分析
4.1 PCI接口仿真測試
接口測試過程中用Chipscope進行在線仿真調試,下發指令采用單一周期訪問模式,各信號時序如圖6所示,回傳數據采用突發傳輸模式,測試時序如圖7所示,仿真結果與本文中第3.1.1節PCI通信協議完全相符。
4.2 數據分析
通過搭建地面測試平臺對該傳輸系統進行測試,測試過程中為便于分析,采編存儲設備中存儲的數據是帶有幀標志的遞增數,采編存儲設備接收到指令后從FLASH中讀取數據并通過LVDS發送給本文中的高速數據傳輸系統,本系統通過USB 3.0及PCI接口分別接收數據回傳給上位機,數據解析如圖8所示,分析結果:數據傳輸穩定可靠,沒有丟幀及誤碼現象,下發指令正常。
5 結 語
本文主要介紹了一種基于PCI+USB 3.0的雙接口高速、高可靠性數據傳輸系統,從硬件電路設計及軟件通信協議入手,詳細闡述了PCI和USB兩個接口在高速數據傳輸系統中的關鍵技術應用,并搭建平臺進行數據測試分析,驗證了該系統的性能,滿足任務需求提出的遠距離高速可靠性傳輸,實現速率176 MB/s的數據傳輸。
參考文獻
[1] 曹賽男.基于FPGA的PCI接口控制器的設計與應用[D].南京:南京航空航天大學,2012.
[2] 董海蘭,康懷祺,鐘午.基于FPGA的多接口高速PCI傳輸系統設計[J].火控雷達技術,2012(4):43?47.
[3] 張丹紅,張孝勇,劉文.基于PCI9054的數據通信接口卡設計[J].武漢理工大學學報(信息與管理工程版),2013,35(3):49?54.
[4] 薛圓圓,趙建領.USB應用開發寶典[M].北京:人民郵電出版社,2011.
[5] 王騏,王青萍.基于PCI9054的DMA和突發數據傳輸實現[J].物聯網技術,2011,1(3):86?88.
[6] 郭柳柳,儲成君,甄國涌,等.基于PXI總線高速數據傳輸卡的設計[J].計算機測量與控制,2014,22(6):1899?1901.
[7] 李澤明.基于USB 3.0接口的高速數據傳輸電路設計與實現[D].太原:中北大學,2013.
[8] LIN Mushan, TSAI Chien?Chun, CHANG Chih?Hsien. A 5Gb/s low?power PCI express/USB3.0 ready PHY in 40 nm CMOS technology with high?jitter immunity [C]// IEEE Asian Solid?State Circuits Conference. [S.l.]: IEEE, 2009: 16?18.
[9] 黃萬偉,董永吉,伊鵬,等.Xilinx FPGA應用進階[M].北京:電子工業出版社,2014.