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