李游
摘 要:針對目前高速數(shù)據(jù)傳輸系統(tǒng)中數(shù)據(jù)轉(zhuǎn)換速率可調(diào)的要求,文中采用Virtex-6為核心主控制器,實現(xiàn)PCIE總線接口與LVDS總線接口的數(shù)據(jù)傳輸轉(zhuǎn)換,并實現(xiàn)對數(shù)據(jù)轉(zhuǎn)換接口中傳輸速率的控制,解決了兩種接口總線在數(shù)據(jù)傳輸中速率不匹配的問題。高速數(shù)據(jù)接口轉(zhuǎn)換系統(tǒng)分別從硬件平臺搭建,模塊設計兩方面進行了詳細的研究與分析,采用大緩存,多級FIFO接口等關鍵技術設計了系統(tǒng)方案,從而實現(xiàn)了高速數(shù)據(jù)接口轉(zhuǎn)換的過程,并在工程應用中得到了檢驗。
關鍵詞:可變位寬;LVDS接口;PCIE;數(shù)據(jù)交互;Virtex-6
中圖分類號:TP274 文獻標識碼:A 文章編號:2095-1302(2017)05-00-03
0 引 言
隨著科學技術的高速發(fā)展,通信系統(tǒng)的復雜程度不斷提高,因此對系統(tǒng)的傳輸速率提出了更高的標準。而在電子偵察、視頻圖像處理、衛(wèi)星遙感測量、現(xiàn)代通信等領域中,高速數(shù)據(jù)的傳輸及存儲處理對計算機處理系統(tǒng)的數(shù)據(jù)傳輸接口也提出了更高的要求。目前計算機系統(tǒng)的高速數(shù)據(jù)傳輸主要通過光纖接口卡、PCIE接口卡、RapidIO接口卡等實現(xiàn)[1],考慮到設備通用性和成本,基于PCIE接口的傳輸方案具有較大優(yōu)勢,本文基于此,提出了一種基于FPGA的LVDS與PCIE接口轉(zhuǎn)換的高速數(shù)據(jù)轉(zhuǎn)換設計方案,解決了高速LVDS數(shù)據(jù)傳輸?shù)姆€(wěn)定性問題。
1 整體方案設計
本文設計方案主要以Xilinx公司的FPGA Virtex-6作為主控單元,設計PCIE控制器控制高速DMA讀寫,DDR3為高速大容量緩存,實現(xiàn)可變位寬的LVDS高速數(shù)據(jù)接口與計算機之間的數(shù)據(jù)轉(zhuǎn)換平臺。通過FPGA邏輯設計,主要實現(xiàn)基于PCIE硬核的高速DMA讀寫設計,以DDR3作為大容量FIFO緩存模塊,數(shù)據(jù)傳輸使用LVDS接口邏輯,便于選擇傳輸板與發(fā)送板之間的數(shù)據(jù)傳輸速率。
1.1 系統(tǒng)硬件功能框圖
系統(tǒng)硬件主要圍繞FPGA設計,主要包括FPGA主控單元模塊、PCIE控制器模塊、DDR3存儲模塊、可選位數(shù)的LVDS接口模塊。系統(tǒng)硬件設計框圖如圖1所示。
1.2 系統(tǒng)實現(xiàn)功能
本文設計方案主要實現(xiàn)可變位寬LVDS接口與PCIE總線接口的高速數(shù)據(jù)轉(zhuǎn)換功能。為驗證本文設計方案,采用兩塊本方案板卡,分別設置為發(fā)送端和接收端,在兩臺計算機之間實現(xiàn)高速數(shù)據(jù)傳輸。計算機端與板卡之間通過PCIE接口傳輸數(shù)據(jù),發(fā)送端與接收端通過LVDS接口直接連接。計算機上需要安裝相應的PCIE驅(qū)動程序和控制應用程序,發(fā)送端的應用程序主要負責發(fā)送文件的選擇,LVDS接口的數(shù)據(jù)位數(shù)等參數(shù)的設置,接收端的應用程序主要負責接收文件的存儲,同時應用程序還有檢測PCIE鏈路是否正常的功能。
2 系統(tǒng)功能模塊設計
2.1 FPGA主控芯片單元
根據(jù)系統(tǒng)的性能要求,本文采用Xilinx Virtex-6 XC6VLX240T-1FF1156C芯片,而非性能更好的Virtex-7系列芯片,因為不僅要便于設計,更要考慮成本問題。Virtex-6系列FPGA擁有Xilinx公司推出的完善功能的評估板ML605,對于設計外設接口豐富的系統(tǒng)有很大的參考價值。
在數(shù)據(jù)接口轉(zhuǎn)換系統(tǒng)中,圍繞主控單元的外設模塊主要包括供電模塊,時鐘模塊,復位模塊,DDR3儲存器接口模塊[2],PCIE接口模塊[3],LVDS邏輯接口模塊[4],配置Flash模塊等。主控模塊相關單元框圖如圖2所示。
2.2 PCIE硬核模塊設計
在數(shù)據(jù)傳輸系統(tǒng)設計中,Virtex-6 FPGA芯片自帶的PCIE硬核可以很大程度降低開發(fā)難度。系統(tǒng)設計過程中,只需在CORE Generator GUI圖形界面中進行相關設置,包括基本參數(shù)設置(組件名稱、通道數(shù)、接口、頻率和ID號等參數(shù))、BAR空間設置(類型、大小、地址等)、配置寄存器設置和高級設置,所有參數(shù)設置完成后即可生成PCIE硬核。生成的硬核只是底層控制邏輯,這些邏輯并非PCIE總線協(xié)議的全部,生成的核中包含源設計文件(HDL 代碼)、核約束文件(UCF)和用于仿真驗證的測試平臺。
生成的硬核中使用默認的PCIE報文順序,對于兼容AMD的計算機主板來說,在傳輸過程中不存在報文亂序問題。但如果板卡連接兼容Intel的計算機主板,則存在報文亂序問題,上層邏輯需要重新對報文進行包排序。在報文亂序問題中,PCIE的存儲器讀事務中使用Split傳送方式,且讀報文中支持最大的數(shù)據(jù)負載長度為128 B,實際發(fā)送存儲器讀請求報文的請求長度為512 B,所以一個存儲器讀請求報文將對應4個存儲器讀完成報文,他們之間根據(jù)Tag標號唯一對應,上層邏輯需要根據(jù)Tag標號恢復出原報文順序。報文發(fā)送時序如圖3所示,報文接收時序如圖4所示。
PCIE報文的字節(jié)對界也是數(shù)據(jù)傳輸正確的關鍵所在,在發(fā)送存儲器讀寫事物報文時,若目的地址的起始地址非雙字對齊,則需使用DW BE字段進行字節(jié)對界操作。若在單次發(fā)送存儲器讀寫事務報文時,讀寫地址范圍跨越4 KB邊界,需要將讀寫報文拆分為兩個讀寫報文,進行兩次讀寫事務[5]。
2.3 DDR3緩存模塊設計
DDR3存儲器是與FPGA主控芯片連接的重要外設之一,本系統(tǒng)采用鎂光1 GB大容量DDR3內(nèi)存條。DDR3存儲接口主要由上下行異步 FIFO 、DDR3控制器和 DDR3 控制狀態(tài)機組成。DDR3存儲器接口總體邏輯框圖如5所示。
在這三個部分中,上下行異步FIFO是整個數(shù)據(jù)接口轉(zhuǎn)換的基礎,至關重要。首先來自PCIE上行64 bit位寬數(shù)據(jù)寫入DDR3上行FIFO中,從上行FIFO中將以256 bit位寬數(shù)據(jù)傳輸?shù)紻DR3控制器中存儲。PCIE下行數(shù)據(jù)將讀取下行FIFO中的數(shù)據(jù),下行FIFO則實現(xiàn)與上行FIFO相反的操作,實現(xiàn)整個數(shù)據(jù)接口的轉(zhuǎn)換過程。其次,DDR3控制器設計采用Virtex-6 FPGA提供的IP核來設計,在通過MIG定制DDR3控制器的過程中,需要設置芯片型號、總線寬度、接口時鐘類型、CAS延遲、突發(fā)長度等參數(shù),同時還需設置數(shù)據(jù)、地址、時鐘和控制信號在FPGA內(nèi)部不同Bank的位置分布[6]。當所有設置完成后就可以生成DDR3控制器,生成的控制器包含源文件(HDL代碼)、約束文件(UCF)和用于仿真驗證的測試平臺。
2.4 LVDS接口模塊設計
板間數(shù)據(jù)傳送使用LVDS接口,LVDS為同步差分信號傳輸,在高速傳輸系統(tǒng)上得到了廣泛應用[7]。LVDS接口根據(jù)傳輸?shù)臄?shù)據(jù)位數(shù)選擇對應的異步FIFO,異步FIFO的上行時鐘為250 MHz差分時鐘,下行時鐘使用FPGA主控模塊中的125 MHz時鐘。在接口轉(zhuǎn)換的過程中,要求本系統(tǒng)中最多使用32位LVDS接口,數(shù)據(jù)傳輸?shù)奈粩?shù)可以根據(jù)上位機進行選擇,不同的位數(shù)決定不同的傳輸速率,數(shù)據(jù)位數(shù)可以選擇2位、8位、16位或者32位。數(shù)據(jù)傳輸?shù)奈粩?shù)在發(fā)送之前需要發(fā)送板與接收板約定好,不允許在傳輸過程中動態(tài)改變傳輸位數(shù)。接口數(shù)據(jù)轉(zhuǎn)換接口框圖如圖6所示。
3 系統(tǒng)仿真與測試
3.1 PCIE 整體性能測試驗證
在PCIE整體性能測試過程中,對DMA讀寫請求過程中的不同DMA塊大小分別進行了測試。當DMA讀寫長度由32 KB向4 096 KB變化時,其數(shù)據(jù)傳輸?shù)挠行捯搽S之變化,即從800 MB/s向15 00 MB/s遞增。因為每次DMA讀寫長度越大,PCIE板卡就會減小對BAR0空間的讀寫,同時減小中斷處理的次數(shù),因此數(shù)據(jù)傳輸?shù)挠行捯矔岣摺?/p>
系統(tǒng)采用Gen1 PCIE硬核,支持V2.0總線協(xié)議,總線頻率為2.5 GHz,使用X8鏈路。PCIE硬核在FPGA內(nèi)部時鐘為250 MHz,數(shù)據(jù)寬度為64位,理論帶寬為2 GB/s。雖然X8鏈路的PCIE理論帶寬非常高,但對于實際系統(tǒng)來說,受DMA讀寫請求延時、TLP傳送開銷、協(xié)議開銷、流量控制等因素影響,因此PCIE實際帶寬遠低于其理論帶寬。當DMA讀寫傳輸均為4 096 KB時,DMA讀數(shù)據(jù)有效帶寬最大為1368 MB/s,DMA寫數(shù)據(jù)有效帶寬最大為1 543 MB/s。DMA讀寫數(shù)據(jù)最大有效帶寬之所以差異較大,原因在于DMA讀請求過程中的延時遠大于DMA寫請求過程,此外,DMA讀請求在事務層上的開銷也大于DMA寫請求。
3.2 系統(tǒng)整體性能測試驗證
在兩臺計算機上的PCIE插槽中分別插入發(fā)送板和接收板,安裝好上位機軟件后,可以通過上位機進行讀寫測試。發(fā)送板與接收板的連接實物圖如圖7所示。
在連接好發(fā)送板和接收板后,插入計算機中的PCIE X8插槽中,并啟動計算機,通過ISE軟件自帶的chipscope采集分析LVDS接口數(shù)據(jù)。chipscope采集LVDS接口數(shù)據(jù)如圖8所示。
通過分析,LVDS接口數(shù)據(jù)在LVDS差分時鐘的上升沿讀取,所以提高LVDS接口的速率除增加LVDS接口位數(shù)外,還可增加LVDS傳輸時鐘,但由于傳導線長會引起誤差,因此要求傳輸?shù)臅r鐘不能太高,實際過程中使用250 MHz差分時鐘進行傳輸。數(shù)據(jù)位數(shù)可通過上位機選擇16位LVDS接口和32位接口,傳輸速率分別為302 MB/s和607 MB/s。16位LVDS接口數(shù)據(jù)測試速率如圖9所示,32位LVDS接口數(shù)據(jù)測試速率如圖10所示。
此次發(fā)送的文件為隨機生成的2.4 GB大小的隨機碼,傳輸完成后使用WINHEX軟件進行比對,比對結果100%正確,實現(xiàn)了預期的功能。
4 結 語
本文設計的基于Virtex-6的高速接口轉(zhuǎn)換方法可以實現(xiàn)多位數(shù)LVDS總線與PCIE總線的數(shù)據(jù)交互,拓展了計算機與外設的高速接口通道,具有一定的工程實踐意義。
參考文獻
[1]溫宇辰,李明偉,陳玉龍.PCI-E總線光纖接口卡的設計[J].電子技術應用,2014, 40(4):126-129.
[2]張剛,賈建超,趙龍.基于FPGA的DDR3 SDRAM控制器設計及實現(xiàn)[J].電子科技,2014, 27(1):70-73.
[3]信侃.基于Xilinx FPGA的PCIe總線接口設計與實現(xiàn)[J].無線電通信技術, 2014(4):94-96.
[4]楊翠虹,文豐,姚宗.基于LVDS的高速數(shù)據(jù)傳輸系統(tǒng)的設計[J].通信技術,2010, 43(9):59-61.
[5]王聰,王彬,薛潔,等.基于PCIe總線協(xié)議的設備驅(qū)動開發(fā)[J].信息技術, 2013(3):32-35.
[6]殷曄,李麗斯,常路,等.基于FPGA的DDR3存儲控制的設計與驗證[J].計算機測量與控制, 2015,23(3):969-971.
[7]李大鵬,李雯,王曉華.基于FPGA的高速LVDS接口的實現(xiàn)[J].航空計算技術,2012, 42(5):115-118.
[8]許峰.基于Virtex-6的PCI Express告訴采集卡設計[J].現(xiàn)代電子技術,2012,35(16):79-81.