龔曉華
摘 要:本文基于Xilinx Artix-7系列FPGA的PCIe接口設計了一套高速圖像采集卡方案,通過面向WinDriver的 PCIe設備驅動程序開發(fā),在Windows7系統(tǒng)中實現(xiàn)了PC機對采集卡的讀、寫、DMA操作和中斷處理。經測試,PCIe x1@5GHz接口單向峰值傳輸速率達463.14MB/s,可以滿足實際應用中的高性能和可靠性要求。
關鍵詞:PCIE;FPGA ; WinDriver 圖像采集
隨著圖像處理走向高清化、智能化,人們對設備間數(shù)據(jù)傳輸速率的要求越來越高,PCIe作為計算機和外圍設備間數(shù)據(jù)交互的主流接口,已被廣泛的應用于圖像采集卡設計中。目前,實現(xiàn)PCIe接口有兩種方法:使用FPGA內置的PCIe專用IP,使用PCIe橋接芯片。由于FPGA應用更加靈活、成本更低,本文基于FPGA設計高速圖像采集卡。
一、圖像采集卡設計
(一) PCIe圖像采集卡設計
如圖1所示,圖像采集卡基于Xilinx公司的Artix-7系列xc7a200tffg1156-2 FPGA芯片,該型FPGA內集成有PCIe硬核,用于實現(xiàn)采集卡和PC間的數(shù)據(jù)交換,本設計使用x1模式,傳輸速率5Gbps,理論帶寬500MB/s。圍繞FPGA構建常用外設,如雙路差分VGA接口和DDR3存儲,用于圖像采集和數(shù)據(jù)存儲;電源管理模塊實時檢測采集卡上的關鍵電壓信號。
(二)圖像采集卡工作原理
數(shù)據(jù)流方面,如圖1所示,圖像數(shù)據(jù)通過差分VGA接口進入FPGA內部,接口適配模塊實現(xiàn)VGA時序向AXI-Stream[1]時序的轉化,VDMA模塊將圖像流緩存到DDR3中的循環(huán)緩沖中,并以中斷方式向緩存讀寫控制模塊報告寫入情況;當緩存讀寫控制模塊判定循環(huán)緩沖中有剩余數(shù)據(jù)時,通知CDMA模塊發(fā)起PCIe寫DMA,將DDR3中數(shù)據(jù)通過PCIE模塊發(fā)送到PC緩存,再以消息方式告知PC DMA發(fā)送完畢,PC機最終向圖像流數(shù)據(jù)緩存寫特定數(shù)據(jù)報告循環(huán)緩沖讀取情況。
控制流方面,PC需通過PCIe寫VDMA和CDMA模塊以分配板載DDR循環(huán)緩沖地址,并將PC端的緩存地址寫入片內存儲器中以配置CDMA模塊的鏈式DMA功能。
二、軟硬件程序開發(fā)
(一) FPGA硬件程序開發(fā)
如圖1所示,F(xiàn)PGA中各組件通過AXI協(xié)議互聯(lián),構成了一個小型SoC網絡[2]。利用vivado工具提供的Block Design設計流程,添加各標準IP,按實際訪存需求進行連線,并分配全局地址。其中關鍵的PCIe模塊參數(shù)配置如下:Endport device, Lane Width x1, Link Speed 5.0GT/s, PCIE:BAR0 Memory 64KB Translation DDR_ADDR(PC對片上DDR訪問),PCIE:BAR1 Memory 64KB Translation C/VDMA_ADDR(PC對DMA控制器訪問),AXI:BARS:用1個且動態(tài)可配,AXI:System:32位地址128位數(shù)據(jù)。
(二) PC端PCIe驅動開發(fā)
PCIe驅動開發(fā)使用Jungo公司的WinDriver工具。首先在圖形界面下打開待測PCIe設備,并對FPGA典型地址進行讀寫測試,最終生成驅動代碼。其次提取xxx_bsp.h和xxx_lib.c等核心文件,構建PCIe驅動動態(tài)鏈接庫,實現(xiàn)DeviceFindAndOpen、DeviceClose、WDC_DMAContigBufLock、WDC_DMABufUnlock、ReadReg32、WriteReg32等基本函數(shù)。最終,按采集卡工作原理編寫應用程序。
三、驗證結果
在該設計中,我們設計了基于PCIe接口的高速圖像采集卡,構建了FPGA片上SoC系統(tǒng),通過PC端PCIe驅動的開發(fā),實現(xiàn)了完整的圖像數(shù)據(jù)采集功能,在x1、5GHz傳輸速率條件下實現(xiàn)了PCIe接口實際傳輸帶寬463.14MB/s,滿足實際圖像采集要求,系統(tǒng)運行是穩(wěn)定可靠的。圖2為Vivado環(huán)境下Hardware Manager工具提取的PCIe IP AXI接口數(shù)據(jù)傳輸時序圖。
四、結論
本文設計了一款基于FPGA的PCIe高速圖像采集卡,并通過FPGA實測,系統(tǒng)穩(wěn)定可靠運行,滿足實際系統(tǒng)應用需求。
參考文獻:
[1] AXI Video Direct Memory Access v6.2. Xilinx, 2015.
[2] PCI Express Endpoint-DMA Initiator Subsystem. Xilinx, 2013.