FPGA的GigE Vision IP相机图像采集方案设计,转换为千兆UDP,支持10G MAC

1 概述

        GigE Vision是一个比较复杂的协议,要在FPGA中完全实现具有较大的难度。如果FPGA作为接收端希望实现GigE Vision相机的配置和图像采集功能,则只需要实现其中小部分功能即可。本文对原有GigE Vision协议的结构进行了裁剪,仅保留设备搜索、寄存器配置和图像采集三个主要功能。并在FPGA中成功实现了对Basler GIGE相机的配置和图像实时采集。

2 GigE Vision协议

        GigE Vision协议包含GVCP(GigE Vision Control Protocol)和GVSP(GigE Vision Streaming Protocol)两部分。其中,GVCP负责对相机进行配置,GVSP负责控制图像数据的传输。

2.1 GVCP协议

    GVCP协议规定了应用程序通过以太网配置和控制外部设备的准则,设备的配置过程采用了指令(CMD)和应答(ACK)的方式。以外部主机和相机为例,首先,主机通过以太网向相机发送指令包,然后等待相机返回当前指令的应答包;相机接收到指令包后执行相应的操作,而后向主机返回应答包。主机收到应答包后,根据应答包中的状态信息判断指令是否执行成功,若执行成功则继续发送下一个指令包,否则重新发送当前指令包。该方式弥补了UDP协议面向无连接的缺点,保证了数据传输的完整性和可靠性。

    GVCP包含两种格式的数据包:指令包和应答包,指令包首部为:

        在指令包首部中,0x42为GVCP指令包的固定字段,flag字段包含了不同指令的特定信息,command字段代表指令的类型,length字段代表指令包中除首部外,载荷数据的长度(单位:字节),req_id代表指令包的序号。

3结构框架

在这里插入图片描述
前面提到完全用FPGA纯逻辑GigE Vision是比较困难的,本方案主要采用cpu和PL逻辑搭配的方式实现协议的转换
最终将GigE Vision协议的相机数据转换为UDP协议数据,PC可以通过接收普通UDP数据,同时IP支持SPI接口和I2C接口对相机参数进行二次配置;
其中BUFFER需要借助片外DDR作为大容量缓存

支持GigE Vison Specification version 1.x/2.x协议

同时为了适应高分辨率的图像数据,最终只需要替换GMAC为10/25 Gbps Ethernet MAC即可,增加系统的灵活性

C代码部分可以提供静态库函数