国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于GigE Vision的高速圖像采集傳輸系統(tǒng)設(shè)計(jì)*

2023-10-10 02:48趙冬青儲(chǔ)成群單彥虎程洪濤
艦船電子工程 2023年6期
關(guān)鍵詞:字節(jié)上位數(shù)據(jù)包

李 昂 趙冬青 儲(chǔ)成群 單彥虎 程洪濤

(中北大學(xué)電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室 太原 030051)

1 引言

目前,實(shí)時(shí)圖像采集處理系統(tǒng)在工業(yè)生產(chǎn),軍事,航海航空等領(lǐng)域有著廣泛的應(yīng)用。圖像采集處理的精度和傳輸速度很大程度上影響著工業(yè)生產(chǎn)的效率[1]。高精度圖像在圖像采集和處理過程中都會(huì)伴隨著巨大的數(shù)據(jù)吞吐量[2~4],因此需要使用傳輸效率更高且性能穩(wěn)定的視頻采集傳輸系統(tǒng)。

Xilinx 公司推出的ZYNQ-7000 系列芯片集成了Cortex-A9 雙核處理器和Xilinx7 系列的FPGA(Field-Programmable Gate Array)。同時(shí)具備ARM的軟件可編程性和FPGA 的硬件可編程性[5~9]。軟件編程是根據(jù)順序流程來(lái)運(yùn)行,而FPGA 有并行處理的內(nèi)在特點(diǎn),所有硬件邏輯可以同時(shí)工作,所以對(duì)于大數(shù)據(jù)量、需要重復(fù)執(zhí)行的邏輯功能,軟件處理的效率遠(yuǎn)遠(yuǎn)不如硬件[10~11]。本文以ZYNQ芯片作為主控芯片,充分利用硬件可編程邏輯的優(yōu)勢(shì)設(shè)計(jì)了GigE Vision 協(xié)議用于上位機(jī)和FPGA 之間的通信,提高了圖像采集傳輸速度。該系統(tǒng)結(jié)構(gòu)具有高吞吐率、高靈活性及低延時(shí)的特點(diǎn)。

GigE Vision 是一種基于千兆以太網(wǎng)的圖像傳輸標(biāo)準(zhǔn)。其具有傳輸效率高、傳輸距離長(zhǎng)和可靠性高等優(yōu)點(diǎn)[12~13]。GigE Vision 協(xié)議可分為GVCP(GigE Vision Control Protocol)和GVSP(GigE Vision Streaming Protocol)兩大類。其中,GVCP 協(xié)議用于上位機(jī)對(duì)相機(jī)進(jìn)行控制,GVSP 協(xié)議負(fù)責(zé)傳輸大量的圖像數(shù)據(jù)。

2 系統(tǒng)整體框架設(shè)計(jì)

系統(tǒng)的硬件平臺(tái)采用圖像傳感器,ZYNQ,以太網(wǎng)芯片共同組成的硬件平臺(tái)。整體架構(gòu)如圖1所示,前端的圖像采集部分中圖像傳感器將感光芯片接收到的照度信號(hào)轉(zhuǎn)換成電信號(hào),并用數(shù)字圖像的方式記錄和保存。ZYNQ 主控芯片負(fù)責(zé)從攝像頭中獲取數(shù)據(jù),將圖像數(shù)據(jù)輸出到PL 端用于圖像采集的IP 核,由VDMA0 負(fù)責(zé)將圖像數(shù)據(jù)通過AXI 互聯(lián)傳至DDR3 動(dòng)態(tài)存儲(chǔ)器中進(jìn)行緩存。利用VDMA1 讀取DDR3 中的數(shù)據(jù),最后通過用戶自定義的IP 核根據(jù)GVSP 協(xié)議對(duì)圖像數(shù)據(jù)格式進(jìn)行封裝,最終通過RGMII 接口傳到上位機(jī)上進(jìn)行顯示。上位機(jī)也可以通過GVCP 協(xié)議發(fā)送控制指令到FPGA中,通過指令解析模塊解析對(duì)GVCP 協(xié)議進(jìn)行拆解,保留其中的關(guān)鍵信息并將控制指令發(fā)送至PS端,根據(jù)指令信息處理器通過SPI 接口對(duì)Sensor 進(jìn)行寄存器配置,配置完成后上位機(jī)可以收到FPGA的回令。

圖1 系統(tǒng)整體架構(gòu)

2.1 圖像采集模塊

本文采用IMX183 CMOS 數(shù)字圖像傳感器??梢暂敵?496*3672 分辨率的黑白圖像。攝像頭的配置通過寫寄存器實(shí)現(xiàn),由PS 端通過應(yīng)用程序?qū)D像傳感器寄存器進(jìn)行配置。圖像數(shù)據(jù)以LVDS(Low-Voltage Differential Signaling)的傳輸模式進(jìn)行輸出。讀取模式設(shè)置為Readout mode No.1 像素?cái)?shù)據(jù)深度為10bit。

圖像數(shù)據(jù)以LVDS的接口形式傳輸?shù)絑YNQ 的PL端,所以要先用IBUFDS(Differential Signaling Input Buffer with Selectable I/O Interface)對(duì)信號(hào)進(jìn)行緩沖和轉(zhuǎn)接,再通過自定義圖像采集IP核將4組圖像數(shù)據(jù)差分信號(hào)進(jìn)行串行轉(zhuǎn)并行的操作,10bit 像素圖像數(shù)據(jù)取高8 位,舍棄低2 位,最終將4 組差分信號(hào)轉(zhuǎn)換成32位并行數(shù)據(jù)流格式。

2.2 圖像讀寫緩存和顯示模塊

VDMA(Video Direct Memory Access)是Xilinx官方推出的一款用于圖像處理的IP 核,用于高帶寬存儲(chǔ)器(DDR3)和AXI-Stream 類型外設(shè)之間的通信,使視頻流能夠高帶寬直接接入DDR3 中。VDMA 的結(jié)構(gòu)框圖如圖2所示,該IP 有三種不同類型的接口。Memory Map 接口是一種存儲(chǔ)映射,讀寫訪問時(shí)會(huì)伴隨一個(gè)地址,通常連接到DDR 動(dòng)態(tài)存儲(chǔ)器[14]。AXI4-Stream接口可以傳輸大量的數(shù)據(jù)流,與Memory Map 不同的是只給出數(shù)據(jù)并不給出相應(yīng)的地址。AXI4-Lite接口相對(duì)與其他兩個(gè)接口來(lái)說性能較低,使用PS 端通過此接口對(duì)VDMA 進(jìn)行寄存器配置。

圖2 AXI VDMA 結(jié)構(gòu)框圖

系統(tǒng)搭建示意圖如圖3所示,像素時(shí)鐘為125M。一共用到兩個(gè)VDMA IP 核,兩個(gè)IP 核配置各不相同,用于圖像采集的VDMA0 只需使能寫通道,用于圖像顯示的VDMA1 只需使能讀通道。將VDMA 寫通道配置成Dynamic Genlock Master,讀通道配置成Dynamic Genlock Slave。防止讀寫操作發(fā)生在同一幀,從而避免沖突。

圖3 圖像顯示系統(tǒng)架構(gòu)圖

由于VDMA 只接收AXI-Stream 類型的視頻流數(shù)據(jù)[15],要實(shí)現(xiàn)圖像數(shù)據(jù)到DDR的傳輸,需要在PL端調(diào)用Video in to AXI-Stream IP 核將數(shù)據(jù)類型轉(zhuǎn)換為AXI-Stream 類型。在通過VDMA0 進(jìn)行寫操作(S2MM)將圖像數(shù)據(jù)寫入DDR 中,圖像數(shù)據(jù)通過AXI-Smartconnect 互聯(lián)利用高速32 位AXI-HP 總線接口輸出給PS 端,AXI-HP 總線接口為PL 端訪問DDR 提供了高帶寬的數(shù)據(jù)通路,每個(gè)HP 接口攜帶兩個(gè)FIFO 用于數(shù)據(jù)緩存[16]。PL 端在讀取DDR中存儲(chǔ)的圖像數(shù)據(jù)時(shí),由VDMA1 進(jìn)行讀操作(MM2S),也是通過高速的HP 接口和AXI-Smartconnect 將DDR 中的數(shù)據(jù)傳至PL 端,讀出的數(shù)據(jù)流依然為AXI-Stream 類型,再通過自定義IP 核將其圖像數(shù)據(jù)封裝成GVSP 協(xié)議格式傳輸給上位機(jī)進(jìn)行顯示。

3 GigE Vision協(xié)議層實(shí)現(xiàn)方式

本文采用GigE Vision 協(xié)議作為千兆以太網(wǎng)的圖像傳輸?shù)臉?biāo)準(zhǔn)。GigE Vision具有傳輸速度快、通訊控制便捷、傳輸距離長(zhǎng)等優(yōu)點(diǎn)[17~21]。GigE Vision是在UDP(User Datagram Protocol)協(xié)議的基礎(chǔ)上數(shù)據(jù)傳輸?shù)?。因此,要?shí)現(xiàn)ZYNQ 與上位機(jī)之間的通信,還需要設(shè)計(jì)實(shí)現(xiàn)UDP、IP 和MAC 三種協(xié)議。所設(shè)計(jì)GigE Vision 協(xié)議層主要包含GVCP 模塊、GVSP模塊和MAC模塊。邏輯框圖如圖4所示。

圖4 GigE Vision協(xié)議層邏輯框圖

3.1 GVCP模塊

GVCP 包含指令包和應(yīng)答包兩種數(shù)據(jù)包格式,GVCP 模塊主要負(fù)責(zé)對(duì)GVCP 指令包進(jìn)行解析和產(chǎn)生GVCP 應(yīng)答包。指令包首部一共8 個(gè)字節(jié),如圖5所示。0x42 是命令指定代碼,用于此模塊識(shí)別GVCP 包,command 表示需要執(zhí)行的指令。length和req_id 分別表示除首部外指令包的長(zhǎng)度和ID號(hào)。應(yīng)答包首部如圖6所示,status 表示指令執(zhí)行的狀態(tài),acknowledge 字段代表應(yīng)答包類型,length和ack_id 分別代表除首部外應(yīng)答包的長(zhǎng)度和ID號(hào)。

圖5 GVCP指令包首部

圖6 GVCP應(yīng)答包首部

GVCP 指令解析部分根據(jù)數(shù)據(jù)有效信號(hào)對(duì)MAC 模塊發(fā)送的字節(jié)數(shù)據(jù)進(jìn)行計(jì)數(shù),對(duì)字節(jié)內(nèi)容逐字進(jìn)行解析。將command 字段指令和數(shù)據(jù)反饋給處理器,處理器接收到指令后執(zhí)行相應(yīng)的操作,之后返回應(yīng)答信號(hào)。

GVCP 回令封裝部分接受處理器返回的應(yīng)答數(shù)據(jù),其中包括指令執(zhí)行狀態(tài),應(yīng)答包類型和載荷數(shù)據(jù)等,根據(jù)GVCP 應(yīng)答包首部進(jìn)行封裝。將封裝后的數(shù)據(jù)輸出給MAC模塊。

3.2 GVSP模塊

GVSP 模塊根據(jù)GVSP 協(xié)議的數(shù)據(jù)格式對(duì)圖像數(shù)據(jù)進(jìn)行封裝,圖像數(shù)據(jù)以數(shù)據(jù)塊為單位進(jìn)行傳輸,每個(gè)數(shù)據(jù)塊中都有頭數(shù)據(jù)包、數(shù)據(jù)凈荷包和尾數(shù)據(jù)包。一個(gè)數(shù)據(jù)塊中僅有一個(gè)頭數(shù)據(jù)包和尾數(shù)據(jù)包來(lái)表示數(shù)據(jù)塊的開始和結(jié)束,頭數(shù)據(jù)包和尾數(shù)據(jù)包都不包含圖像數(shù)據(jù),本文中一個(gè)數(shù)據(jù)塊包含562 個(gè)數(shù)據(jù)凈荷包作為圖像數(shù)據(jù)傳輸?shù)拿浇?。這三種類型的數(shù)據(jù)包擁有相同的GVSP 首部,格式如圖7所示。status 用于判斷數(shù)據(jù)包的傳輸狀態(tài),block_id 表示當(dāng)前發(fā)送數(shù)據(jù)塊的ID 號(hào),每當(dāng)一個(gè)尾數(shù)據(jù)包發(fā)送完成后此ID 號(hào)加1。packet_id 表示該數(shù)據(jù)塊中數(shù)據(jù)包的ID 號(hào),每發(fā)送一個(gè)GVSP類型的數(shù)據(jù)包此ID號(hào)加1,當(dāng)發(fā)送一個(gè)尾數(shù)據(jù)包后將此ID號(hào)清零。packet_format用于區(qū)分GVSP 數(shù)據(jù)包的類型,當(dāng)packet_id 為0 時(shí),packet_format 為0x01 表示頭數(shù)據(jù)包,頭數(shù)據(jù)包的總長(zhǎng)度為86 字節(jié),當(dāng)packet_id 為564 時(shí),packet_format 為0x02 表示尾數(shù)據(jù)包,總長(zhǎng)度為60 字節(jié),packet_id 在1 到563 之間時(shí)packet_format為0x03表示數(shù)據(jù)凈荷包,這里總長(zhǎng)度為9014字節(jié)。

圖7 GVSP首部

3.3 MAC模塊

MAC 模塊結(jié)構(gòu)圖如圖8所示,包括MAC 接收幀解析模塊、MAC 發(fā)送幀封裝模塊、CRC 校驗(yàn)?zāi)K和RGMII接口模塊。

圖8 MAC層結(jié)構(gòu)圖

MAC 層根據(jù)UDP、IP 和MAC 三種協(xié)議對(duì)數(shù)據(jù)幀進(jìn)行封裝和解析。以數(shù)據(jù)幀接收模塊為例其狀態(tài)跳轉(zhuǎn)圖如圖9所示。首先針對(duì)RGMII 比特流進(jìn)行解析得到MAC 幀數(shù)據(jù),通過CRC 校驗(yàn)?zāi)K檢測(cè)幀的準(zhǔn)確性,再根據(jù)數(shù)據(jù)有效信號(hào)對(duì)MAC 幀字節(jié)進(jìn)行計(jì)數(shù),從前端碼開始對(duì)MAC 幀逐字進(jìn)行解析,檢測(cè)目的MAC 地址、目的IP 地址和目標(biāo)端口號(hào)是否與本地地址相匹配,若匹配則繼續(xù)向后解析,最后將命令信息輸出至GVCP 模塊。若不匹配,則丟棄該幀。此處的目的MAC 地址、目的IP 地址及目標(biāo)端口號(hào)都可以通過處理器利用AXI4-Lite接口進(jìn)行配置。

圖9 接收幀解析流程圖

MAC 發(fā)送幀封裝模塊執(zhí)行相反的過程,根據(jù)UDP、IP 和MAC 三種協(xié)議格式為GVSP 格式的圖像數(shù)據(jù)包和GVCP格式的應(yīng)答數(shù)據(jù)包添加UPD 首部、IP 首部和CRC 校驗(yàn)等信息,將封裝后的數(shù)據(jù)幀通過RGMII 接口輸出給上位機(jī)。采用RGMII 接口可以減少信號(hào)線數(shù)量,節(jié)約電路成本。

4 實(shí)驗(yàn)驗(yàn)證

在Vivado中搭建好硬件工程,檢測(cè)無(wú)誤后生成bit 流文件,將硬件信息導(dǎo)入SDK 開發(fā)工具中,在SDK 中通過C 語(yǔ)言程序?qū)DMA 進(jìn)行配置,將編寫好的控制代碼放入SDK 目錄下。通過上位機(jī)進(jìn)行命令發(fā)送,同時(shí)下位機(jī)接收到命令后發(fā)送圖像數(shù)據(jù)。最后結(jié)果使用Wireshark 軟件進(jìn)行驗(yàn)證,得到如圖10所示的結(jié)果圖,從圖中可以看出,接受到的圖像數(shù)據(jù)包符合系統(tǒng)設(shè)計(jì)的要求。

圖10 Wireshark抓包結(jié)果圖

上位機(jī)能夠成功接收到圖像數(shù)據(jù)并實(shí)時(shí)顯示,運(yùn)行顯示結(jié)果如圖11所示,圖像分辨率為5496*3672。數(shù)據(jù)傳輸速度可以達(dá)到980Mbps,畫面清晰穩(wěn)定,上位機(jī)可以通過發(fā)送指令對(duì)系統(tǒng)進(jìn)行復(fù)位,通過配置寄存器調(diào)節(jié)攝像頭的增益、曝光時(shí)間等參數(shù),還可以控制攝像頭啟動(dòng)或停止傳輸圖像數(shù)據(jù),只傳輸一幀圖像或者連續(xù)傳輸圖像數(shù)據(jù),整個(gè)系統(tǒng)滿足設(shè)計(jì)要求。

圖11 攝像頭實(shí)驗(yàn)結(jié)果

5 結(jié)語(yǔ)

本文基于ZYNQ 全可編程片上系統(tǒng)成功搭建了圖像采集顯示系統(tǒng),在PL 端通過設(shè)計(jì)自定義IP核實(shí)現(xiàn)了GigE Vision 協(xié)議傳輸指令信息和圖像數(shù)據(jù),充分利用可編程邏輯部分的優(yōu)勢(shì),節(jié)省了ARM端的運(yùn)行資源,降低了處理器的占用率,為后端分析及算法應(yīng)用提供了良好的硬件平臺(tái)。此系統(tǒng)可以應(yīng)用于傳輸距離長(zhǎng)、大數(shù)據(jù)量的高速圖像數(shù)據(jù)傳輸?shù)膶?shí)際應(yīng)用中。

猜你喜歡
字節(jié)上位數(shù)據(jù)包
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
SmartSniff
特斯拉 風(fēng)云之老阿姨上位
簡(jiǎn)談MC7字節(jié)碼
“三扶”齊上位 決戰(zhàn)必打贏
基于ZigBee和VC上位機(jī)的教室智能監(jiān)測(cè)管理系統(tǒng)
以新思路促推現(xiàn)代農(nóng)業(yè)上位
視覺注意的數(shù)據(jù)包優(yōu)先級(jí)排序策略研究
移動(dòng)IPV6在改進(jìn)數(shù)據(jù)包發(fā)送路徑模型下性能分析