?

基于FPGA的高速PCI-E的數據傳輸設計與實現

2019-12-24 06:37吳國華楊自恒郭俊磊徐勤濤
無線電通信技術 2019年1期
關鍵詞:開發板中斷總線

吳國華,楊自恒,郭俊磊,徐勤濤

( 黑龍江大學 電子工程學院,黑龍江 哈爾濱 150080)

0 引言

隨著現代通信對傳輸帶寬的要求正逐步提高,此前普遍采用的PCI總線已經無法滿足高速數據傳輸的要求,正面臨淘汰。為解決這種處境,PCI-E作為第三代互聯總線技術應運而生,它支持芯片間和設備間的點到點串行連接,并以低開銷、低延遲等特性大大提高了總線的有效數據帶寬[1]。又因為PCI-E總線高效傳輸的性能和低廉的成本,讓其獲得了廣闊的應用,解決了高性能處理器與低效傳輸系統之間存在的問題,在高速數據傳輸與存儲系統中,通過PCI-E總線進行數據的DMA方式傳輸,可完成設備間的高速數據交換。

文獻[2]使用傳統的狀態機設計PCI-E接口,結構復雜,容易丟包錯包。文獻[3]使用Block DMA的方式發送數據,但不能使用連續地址塊發送數據,必須要多次打包數據再發送,這就限制了DMA的性能。文獻[4]雖然使用最新的ZYNQ芯片進行開發,但使用的是PIO模式,占用大量CPU,傳輸效率低下。而如今,由于全球集成電路的快速發展,嵌入式技術和芯片的設計方式正經歷著突破性的改革,基于片上系統(System-On-a-Chip,SOC)的開發平臺將成為未來嵌入式系統設計的趨勢,SOC主要的設計方法是通過在FPGA的開發板上調用處理器的IP核或使用芯片內嵌入的硬核得到可編程平臺,進行處理器與FPGA的聯合開發。Xilinx公司順應時代發展的趨勢,開發出的最新的ZYNQ芯片就是新一代SOC設計的優秀產品,將FPGA 結構和ARM處理器設計在一塊芯片里,實現了軟硬件間的協同設計,提供了基于IP 核設計的嵌入式方法。本文是基于 ZYNQ的SOC設計平臺下的PCI Express 接口設計方案,使用SG-DMA方式傳輸,這將極大增強高速數據傳輸的效率以及系統實現方案的集成性和可擴展性[5]。

1 ZYNQ-7000 SOC的功能

ZYNQ-7000系列基于Xilinx全可編程的可擴展處理平臺結構,該結構在單芯片內集成了基于ARM公司的雙核ARM CortexTM-A9多核處理器的處理系統PS(Processing System)部分和基于Xilinx可編程邏輯資源的可編程邏輯系統(Programmable Logic,PL)部分[6]。

與傳統的FPGA和SOC相比,ZYNQ-7000全可編程SOC包含了完整的RAM處理子系統,不僅提供了FPGA的靈活性和可擴展性,同時提供了與專用集成電路相關的性能、功耗和易用性,雙核ARM CortexTM-A9多核CPU是PS的心臟,包括片上存儲器、外部存儲器接口和豐富功能的外設。因此ZYNQ-7000系列芯片具有強大的可擴展性和配置性,成為本設計要求高性能、高效率方案的首選。

2 硬件總體方案設計

2.1 總體設計原理

首先PC_1機發送端利用基于VS2015開發的PCI-E應用程序將要傳輸的數據進行打包,此數據經過開發板上PCI-E X4的物理接口進入到FPGA中,這一傳輸過程是PC_1機通過PCI-E總線的物理接口對DMA控制器發送寫入數據請求,從而將要傳輸的數據存放至TLP包上發送至板卡。

FPGA端的DMA控制器接收并處理來自上位機的含有數據的TLP包,經控制器的拆包處理,獲得此數據包中的地址和數據等重要信息,并發送數據的有效信號給控制器,控制器把數據暫存在AXI_DATA_FIFO進行跨時鐘的緩沖,當收到數據信號后,PS端通過C語言編寫的邏輯程序通過AXI_GP接口和AXI_LITE總線控制AXI_DMA 的IP核以DMA的方式由PS端的Slave AXI HP接口把數據從緩沖區取出并高速傳輸至PS端的DDR3中,當PL端傳輸完一組數據后,PS端接收到AXI_DMA的中斷信號后,將DDR3緩存的數據基于TCP協議以乒乓操作的方式通過PS端的千兆網口發送至PC_2接收機的網口應用程序中顯示??傮w方案的系統框圖如圖1所示。

2.2 FPGA(PL)端設計

經過查找資料并研究分析,現有程序中申請的內存一定要物理連續。DMA是直接對物理內存也就是實際的內存條進行讀寫操作,必須為物理連續的內存;而應用程序和驅動程序一般只能申請到邏輯上連續的內存,在物理上不一定連續,所以DMA傳輸要分成多次完成,在傳輸完一塊物理上連續的數據后引起一次中斷,然后再由主機進行下一塊物理上連續的數據傳輸,在有的論文中可以看到申請內存上的一些特殊處理,目的就是獲取物理連續的內存,可獲取4 KB的物理連續內存。但是在內存處理上還是存在一些問題,實驗尚可,應用則不行。

本文解決方法是FPGA邏輯部分的設計是基于PCI-E硬核XDMA IP實現。采用的數據傳輸方式是SG-DMA方式,它是通過使用鏈表描述物理上不連續的存儲空間的方式,把鏈表首地址傳回給DMA控制器。DMA控制器在一組連續物理地址的數據傳輸完成之后,并不是像block DMA發起中斷,而是根據鏈表的指向來傳輸下一塊連續的物理地址上的數據,等到全部的數據按要求傳輸完成后再發起一次中斷[7]。由此可見,SG-DMA方式比block DMA方式的傳輸效率高很多。而使用的XDMA IP核可以完美地支持SG-DMA的方式進行數據傳輸。PL端XDMA的設計連接圖如圖2所示。

圖2 PL端XDMA設計連接圖

2.3 RAM(PS)端設計

PS端設計連接圖如圖3所示,為了解決異步時鐘的問題,把從PCI-E中接收到的數據暫存在FIFO中,FIFO的主接口連接到AXI_DMA的IP從接口上,當PS端發起數據DMA方式傳輸后,RAM端的ZYNQ處理器核會通過GP接口和AXI_LITE總線傳輸指令至AXI_DMA,當其接到指令后便通過S_AXIS_S2MM接口從數據緩存的FIFO中接收數據,因為PL端與PS端進行數據交換必須使用AXI總線的數據,因此AXI_DMA會把接收到的流模式數據變成AXI模式,當AXI總線的握手結束信號出現高電平時,則表示需要發送的數據已經傳輸完成,當一次數據傳輸結束,IP核便會產生中斷信號,觸發RAM端的中斷控制器響應,PS通過中斷服務函數清除AXI_DMA的中斷狀態,在DMA中斷函數中,通過DMA完成指示信號顯示為高電平后,標志著一次完整的DMA數據傳輸結束。

PS的DMA數據接收采用了乒乓操作的模式,2個緩沖區交替進行數據接收[8],適合對數據流進行流水線式的處理,可以有效提高數據傳輸的效率。

在網口的設計中,根據需求,把開發板當作主設備,PC_2機當作從設備接收機。在邏輯程序中,調用網口連接函數,完成了開發板向PC_2機發起TCP 連接請求的命令。在TCP連接請求3次握手完成后,通過回調函數是否被調用表示開發板與PC_2接收機之間的TCP連接建立完成。

3 系統測試

本系統采用由Xilinx公司研發的ZYNQ 7035芯片構成的開發板,該開發板帶有PCI-E X4物理接口,測試平臺發送端使用帶有PCI-E X4接口的工控機,接收端使用普通PC機,通過網口連接到開發板,共同搭建了PCI-E測試平臺。實驗測試如下:

測試一:從PC_1機通過應用程序驅動PCI-E X4接口,向FPGA開發板中發送數據,并進行PCI-E接口的測速。

測試結果如圖4所示,當數據大小為1K時,發送速度為14 MB/s,接收速度為7 MB/s,而當數據大小增至8 M大小時,PCI-E的發送速度可達到1 160 MB/s,接收可達到1 467 MB/s,與文獻[3]平均速度為506 MB/s相比,本方案極大提高了PCI-E的傳輸性能,并通過PCI-E的傳輸速度結果比較,可以看出隨著測試數據大小的增大,可有效提高接口通路的利用率,SG-DMA的傳輸性能會越來越高,這與DMA傳輸的特性相符合。

圖4 PCI-E接口速度測試

測試二:開發板通過千兆網口向PC_2接收機發送數據,接收機通過網絡調試助手對接收到的數據進行顯示。結果如圖5所示,在發送文件中發送了從00到FF的循環數據,經過網絡接收數據與發送文件的對比,數據準確且沒有丟包和錯包的現象發生,解決了傳統狀態機極易出現的丟包和錯包的情況。

圖5 通過千兆網口向PC_2機上的網絡調試助手接收 從PCI-E接口接收到的數據

4 結束語

通過調用IP核的設計方法完成了PCI-E總線接口的實現,并在PS端采用邏輯程序對網口進行開發,聯合開發板和搭建的硬件平臺,對整個系統進行了測試,實驗結果表明本方案的正確性和可靠性,驗證了PCI-E接口的傳輸速度。為了能夠進一步提高在FPGA開發板上PCI-E接口的高速傳輸數據的應用性能,下一步可在其中加載SMS4加密算法,對數據進行加密處理,并在處理器上搭載實時操作系統進行復雜的數據處理,最后通過千兆網口發送到網絡上。該項目可發展成高速的數據加密卡設備,在網絡安全領域具有廣闊的應用前景。

猜你喜歡
開發板中斷總線
基于STM32H7的FDCAN通信系統設計與實現?
一種考慮GPS信號中斷的導航濾波算法
Linux中斷線程化分析及中斷延時測試
DCOM在混合總線自動測試系統的應用
基于AVR單片機的RS485工業總線開發設計
對80C51系列單片機中斷問題的研究
開發板在單片機原理及接口技術課程教學中的應用
跟蹤導練(二)(5)
ARM宣布mbed Enabled Freescale FRDM—K64F開發板通過微軟認證
寶馬F02車總線系統
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合