基于FPGA实现GigE Vision协议进行网络通信的方法转让专利

申请号 : CN201711466460.3

文献号 : CN108206829B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王彦超余建成张伟刚寇经纬

申请人 : 中国科学院西安光学精密机械研究所

摘要 :

本发明属于嵌入式通信领域,涉及一种基于FPGA实现GigE Vision协议进行网络通信的方法。该方法通过对GigE Vison协议进行精简,用硬件描述语言实现了GigE Vision协议的各个功能,该方法不仅降低了实现成本,同时运行速度大大提升。该方法的步骤是:1)搭建网络通信系统;2)建立数据收发通道;3)利用QSPI‑FLASH芯片建立参数存储区域;4)运行底层协议;5)对GVCP协议的处理;6)对GVSP协议的处理。

权利要求 :

1.一种基于FPGA实现GigE Vision协议进行网络通信的方法,其特征在于,包括以下步骤:

1)搭建网络通信系统;

所述网络通信系统包括FPGA芯片、PHY芯片、DDR2芯片以及QSPI-FLASH芯片;

PHY芯片与FPGA芯片连接负责网络数据的收发;DDR2芯片与FPGA芯片连接负责图像数据的缓存;QSPI-FLASH芯片与FPGA芯片连接负责XML文件的存储;

2)建立数据收发通道;

FPGA与PHY芯片通过RGMII接口相连,由FPGA通过MIDO和MDC配置PHY芯片的工作状态,建立数据收发通道;

3)利用QSPI-FLASH芯片建立参数存储区域;

存储区域的存储数据包括两个部分:

(1)相机通用参数,所述相机通用参数包括IP地址、MAC地址;

(2)GigE Vision协议需要的XML文件的ZIP压缩包;XML文件的ZIP压缩包内容包含了GigE Vision的协议版本信息,控制寄存器的地址表以及图像信息寄存器地址表;

4)运行底层协议;

首先进入侦听状态,在FPGA中首先将接收到的PC上位机发送的网络数据包进行解包分析后再进行协议类型判断,并进行相应处理:如果是ARP协议,则将相机的MAC地址,按照ARP协议进行封装,然后发送给PC上位机;

如果是ICMP协议,则回复相应的icmp协议数据包,表示该相机能够ping通,相机处于在线状态;

如果是UDP协议,则进入下一步的判断,如果数据包发送的目标端口为3956且关键字信息为0x42则判定其为属于GigE Vision协议的数据包;若不是,则不作处理,返回侦听状态;

GigE Vision协议数据包的解析,如果解析的数据内容为GVCP协议,则进行步骤5)的处理,如果解析的数据内容为GVSP协议,则进行步骤6);如果解析的数据内容不是GVCP协议或GVSP协议中任意一种,则不作处理;

5)对GVCP协议的处理;

GVCP协议的处理包括六种情况:

A、当PC上位机向相机广播发送搜寻命令时,FPGA芯片进行判断,如果属于同一网段的PC上位机,则回复响应搜寻数据包;如果不属于同一网段的PC上位机,不作处理;

B、当PC上位机向相机发送更改IP地址命令时,需要回复IP地址更改成功的确认信息;

C、当PC上位机需要读取相机基本参数信息时,需要从QSPI-FLASH芯片中读取已存储的相机基本参数信息;相机基本参数信息包括设备生产厂家、设备编号、协议版本、XML文件的存储位置以及XML文件的内容;

D、当PC上位机需要写入相机基本参数信息时,则需要将相机基本参数信息写入QSPI-FLASH芯片中进行存储;

E、当PC上位机需要读取相机控制参数信息时,需要从QSPI-FLASH中读取已存储的相机控制参数信息;相机控制参数信息包括曝光时间、触发方式、偏置、增益、图像格式、压缩方式;

F、当PC上位机需要写入相机控制参数信息时,则需要将相机控制参数信息写入QSPI-FLASH芯片中进行存储;

6)对GVSP协议的处理;

GVSP协议的处理包括两种情况:

情况1:当相机接收到PC上位机发送的图像采集命令时:首先,FPGA芯片发送一幅图像的起始数据帧给PC上位机,其包含的信息包括:图像类型,标号;

然后,FPGA芯片发送该幅图像的完整信息;

最后,FPGA芯片发送该幅图像的结束数据帧;

情况:2:当相机接收到PC上位机发送的图像重传命令时:FPGA芯片在DDR2芯片中查找需要重传的图像数据所在位置并将其读出,然后发送该图像数据。

说明书 :

基于FPGA实现GigE Vision协议进行网络通信的方法

技术领域

[0001] 本发明属于嵌入式通信领域,涉及一种基于FPGA实现GigE Vision协议进行网络通信的方法。

背景技术

[0002] 目前工业相机的通信方式主要包括1394接口,USB接口,ameraLink接口以及千兆网接口。
[0003] 其中1394协议的通信速度为:800M/s,传输距离为30米;USB接口的通信速度为:5Gb/s,传输距离为:3米;CameraLink接口的通信速度为:5.4Gb/s,传输距离为:3~10米,需要电脑安装采集卡;千兆网接口的通信速度为:1Gb/s,传输距离为:通过交换机,可以任意长。其中,千兆网通信,以其传输距离远,传输速度较高的特点,组网设备数量多,无需数据采集卡的特点,得到了广泛的应用。主流工业相机厂家,国外如德国Balser、日本JAI、英国E2V,加拿大Dalsa,韩国Vieworks,国内如大恒、嘉恒中自、微视图像等,均有多款千兆网通信的工业相机产品。
[0004] 工业相机能连接到千兆网络系统中,必须运行网络通信协议。TCP/IP协议,是整个通信网络的运行的协议基础。在传输层的协议有TCP协议和UDP协议。TCP协议和UDP协议各具特点:TCP提供IP环境下的数据可靠传输,它提的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据发送。UDP则不为IP提供可靠性、流控或差错恢复功能;但是TCP对计算机资源消耗较多,UDP协议简单高效。
[0005] 针对UDP协议与TCP协议各自的优缺点,国际自动成像协会(AIA)联合各大机器视觉厂商,共同开发了GigE Vision通信协议。
[0006] GigE Vision协议模型如图1所示。GigE Visoion协议基于已有千兆以太网通信协议开发,主要包括六个部分:
[0007] 1.基于UDP协议的GigE Vision控制协议GVCP:该标准定义了如何对设备进行控制和组态。规定了相机和计算机之间发送图像及配置数据的流通道和机制。
[0008] 2.GigE设备发现机制:该机制提供了搜寻相机IP地址的方法。
[0009] 3.GigE Vision流控制协议GVSP:该协议涵盖了后数据类型的定义和通过GigE传输图像的方法。
[0010] 4.基于GenICam标准的XML描述文件,该数据表单提供了相机控制和图像数据流访问的权限
[0011] 5.底层协议,如:UDP协议、ARP协议、ICMP协议;其中ARP协议用于得到目标设备的MAC地址;UDP协议用于GVCP,GVSP协议数据包的封装以及解封装;ICMP协议主要用于检测设备连接状态。
[0012] 6.硬件基础,如千兆以太网。
[0013] 国际自动成像协会(AIA)指定该协议的初衷是,统一工业相机的千兆网通信协议,使不同的公司上位机软件可以方便的控制不同品牌的工业相机,但是如何在工业相机上运行GigE Vision协议进行网络通信,这方面几乎没有相关记载。
[0014] 目前一些高校和公司在开展这方面的研究。申请号为201510014943.4,发明专利为“基于千兆以太网视觉协议的以太网控制器IP核及方法”,该方案的思路是在FPGA内部生成NIOSII软核,充当处理器,负责进行任务调度,而具体的数据收发,封装,仍由FPGA硬件逻辑语言实现。
[0015] 这种方案存在的缺陷是NIOSII是基于FPGA内部逻辑资源生成的,会消耗掉FPGA内部大量的ram,不适合低端FPGA实现,增加了实现成本。其次NIOSII运行速度低,远低于ARM,DSP等处理器,无论ALTERA公司还是XILINX公司的SOPC方案,都在向FPGA+ARM架构进化,NIOSII以及Microblaze软核方案,逐渐被放弃。

发明内容

[0016] 本发明的目的就是为了解决上述问题,提供了一种基于FPGA实现GigE Vision协议进行网络通信的方法,通过对GigE Vison协议进行精简,用硬件描述语言实现了GigE Vision协议的各个功能,该方法不仅降低了实现成本,同时运行速度大大提升。
[0017] 本发明的具体技术方案是:
[0018] 本发明提供了一种基于FPGA实现GigE Vision协议进行网络通信的方法,包括以下步骤:
[0019] 1)搭建网络通信系统;
[0020] 所述网络通信系统包括FPGA芯片、PHY芯片、DDR2芯片以及QSPI-FLASH芯片;
[0021] PHY芯片与FPGA芯片连接负责网络数据的收发;DDR2芯片与FPGA芯片连接负责图像数据的缓存;QSPI-FLASH芯片与FPGA芯片连接负责XML文件的存储;
[0022] 2)建立数据收发通道;
[0023] FPGA与PHY芯片通过RGMII接口相连,由FPGA通过MIDO和MDC配置PHY芯片的工作状态,建立数据收发通道;
[0024] 3)利用QSPI-FLASH芯片建立参数存储区域;
[0025] 存储区域的存储数据包括两个部分:
[0026] (1)相机通用参数,所述相机通用参数包括IP地址、MAC地址;
[0027] (2)GigE Vision协议需要的XML文件的ZIP压缩包;XML文件的ZIP压缩包内容包含了GigE Vision的协议版本信息,控制寄存器的地址表以及图像信息寄存器地址表;
[0028] 4)运行底层协议;
[0029] 首先进入侦听状态,在FPGA中首先将接收到的PC上位机发送的网络数据包进行解包分析后再进行协议类型判断,并进行相应处理:
[0030] 如果是ARP协议,则将相机的MAC地址,按照ARP协议进行封装,然后发送给PC上位机;
[0031] 如果是ICMP协议,则回复相应的icmp协议数据包,表示该相机能够ping通,相机处于在线状态;
[0032] 如果是UDP协议,则进入下一步的判断,如果数据包发送的目标端口为3956且关键字信息为0x42则判定其为属于GigE Vision协议的数据包;若不是,则不作处理,返回侦听状态;
[0033] GigE Vision协议数据包的解析,如果解析的数据内容为GVCP协议,则进行步骤5)的处理,如果解析的数据内容为GVSP协议,则进行步骤6);如果解析的数据内容不是GVCP协议或GVSP协议中任意一种,则不作处理;
[0034] 5)对GVCP协议的处理;
[0035] GVCP协议的处理包括六种情况:
[0036] A、当PC上位机向相机广播发送搜寻命令时,FPGA芯片进行判断,如果属于同一网段的PC上位机,则回复响应搜寻数据包;如果不属于同一网段的PC上位机,不作处理;
[0037] B、当PC上位机向相机发送更改IP地址命令时,需要回复IP地址更改成功的确认信息;
[0038] C、当PC上位机需要读取相机基本参数信息时,需要从QSPI-FLASH芯片中读取已存储的相机基本参数信息;相机基本参数信息包括设备生产厂家、设备编号、协议版本、XML文件的存储位置以及XML文件的内容;
[0039] D、当PC上位机需要写入相机基本参数信息时,则需要将相机基本参数信息写入QSPI-FLASH芯片中进行存储;
[0040] E、当PC上位机需要读取相机控制参数信息时,需要从QSPI-FLASH中读取已存储的相机控制参数信息;相机控制参数信息包括曝光时间、触发方式、偏置、增益、图像格式、压缩方式;
[0041] F、当PC上位机需要写入相机控制参数信息时,则需要将相机控制参数信息写入QSPI-FLASH芯片中进行存储;
[0042] 6)对GVSP协议的处理;
[0043] GVSP协议的处理包括两种情况:
[0044] 情况1:当相机接收到PC上位机发送的图像采集命令时:
[0045] 首先,FPGA芯片发送一幅图像的起始数据帧给PC上位机,其包含的信息包括:图像类型,标号;
[0046] 然后,FPGA芯片发送该幅图像的完整信息;
[0047] 最后,FPGA芯片发送该幅图像的结束数据帧;
[0048] 情况:2:当相机接收到PC上位机发送的图像重传命令时:
[0049] FPGA芯片在DDR2芯片中查找需要重传的图像数据所在位置并将其读出,然后发送该图像数据。
[0050] 本发明的有益效果是:
[0051] 1.新颖性,由于GigE Vision协议的研究较为稀少,主流工业相机厂商正在逐步推广GigE Vision协议,本发明为一种新颖的实现方案,基于FPGA实现的GigE Vision协议进行通信,针对FPGA运行特点以及对GigE Vision协议的适当精简,成功实现了GigE Vision的正常运行。
[0052] 2.跨平台性好:本发明与现有的技术相比,采用硬件描述语言Verilog实现,FGPA的选择性比较多,多种不同类型的FPGA均可使用。
[0053] 3.速度高:使用FPGA运行速度高,以硬件电路的形式存在。
[0054] 4.通用性好:本发明中的方法工业相机可以仅使用一枚FPGA作为主控芯片,为图像采集模块提供驱动时序,从而节省了工业相机的体积。
[0055] 5.普适性:经实际测试,在工业相机中运行本发明的方法后,可以在国内外多种工业相机的中实现正常搜寻,连接,命令设置以及图像传输。

附图说明

[0056] 图1为GigE Vision协议模型;
[0057] 图2为本发明的流程示意图;
[0058] 图3为GigE Vision协议图像重传示意图;

具体实施方式

[0059] 以下结合附图对本发明进一步的作出详细介绍:
[0060] 基于FPGA实现GigE Vision协议进行网络通信的方法,其具体步骤是:
[0061] 步骤1)首先要搭接一个网络通信系统;
[0062] 该系统所需要的主要硬件芯片包括FPGA芯片,PHY芯片,DDR2芯片,QSPI-FLASH芯片:PHY芯片与FPGA芯片连接负责网络数据的收发;DDR2芯片与FPGA芯片连接负责图像数据的缓存;QSPI-FLASH芯片与FPGA芯片连接负责XML文件的存储;
[0063] 将FPGA芯片内部下载QSPI-FLASH芯片程序后,将网线连接电路板和电脑,上电后,QSPI-FLASH将其存储的pof文件上载进FPGA中,系统开始正常工作;
[0064] 需要说明的一点是:由FPGA内生产的DDR2 IP核实现数据的读写功能,在FPGA内部实现数据读写的仲裁模块,防止同时读写出现冲突。DDR2的写入的数据,主要是图像采集前端传来的图像数据。DDR2读出的数据,包括两类,一类是正常图像顺序输出;另一类是当传输的图像数据出现丢失时,再从DDR2中查找而输出的数据。
[0065] 步骤2)建立数据收发通道;
[0066] FPGA芯片内部逻辑正常工作后,会通过MDIO和MDC接口配置PHY芯片;PHY芯片通过检测传输介质,并与电脑进行自动协商后,使得网络进入千兆网双工工作模式。
[0067] 步骤3)利用QSPI-FLASH芯片建立参数存储区域;
[0068] 存储区域的存储数据包括两个部分:
[0069] (1)相机通用参数,所述相机通用参数包括IP地址、MAC地址;
[0070] (2)GigE Vision协议需要的XML文件的ZIP压缩包;XML文件的ZIP压缩包内容包含了GigE Vision的协议版本信息,控制寄存器的地址表以及图像信息寄存器地址表;
[0071] 步骤4)运行GigE Vision协议,其运行的逻辑图如图2所示:
[0072] 首先进入侦听状态,在FPGA中首先将接收到的PC上位机发送的网络数据包进行解包分析后再进行协议类型判断,并进行相应处理:
[0073] 如果是ARP协议,则将相机的MAC地址,按照ARP协议进行封装,然后发送给PC上位机;
[0074] 如果是ICMP协议,则回复相应的icmp协议数据包,表示该相机能够ping通,相机处于在线状态;
[0075] 如果是UDP协议,则进入下一步的判断,如果数据包发送的目标端口为3956且关键字信息为0x42则判定其为属于GigE Vision协议的数据包;若不是,则不作处理,返回侦听状态;
[0076] GigE Vision协议数据包的解析,如果解析的数据内容为GVCP协议,则进行步骤5)的处理,如果解析的数据内容为GVSP协议,则进行步骤6);如果解析的数据内容不是GVCP协议或GVSP协议中任意一种,则不作处理;
[0077] 步骤5)对GVCP协议的处理;
[0078] GVCP协议的处理包括六种情况:
[0079] A、当PC上位机向相机广播发送搜寻命令时,FPGA芯片进行判断,如果属于同一网段的PC上位机,则回复响应搜寻数据包;如果不属于同一网段的PC上位机,不作处理;搜寻数据包包括本相机的MAC地址,IP地址、子网掩码,协议版本,厂家信息等。
[0080] B、当PC上位机向相机发送更改IP地址命令时,则获取新的IP地址和子网掩码信息,然后更新相机的IP地址,并回复确认信息。
[0081] C、当PC上位机需要读取相机基本参数信息时,需要从QSPI-FLASH芯片中读取已存储的相机基本参数信息;相机基本参数信息包括设备生产厂家、设备编号、协议版本、XML文件的存储位置以及XML文件的内容;
[0082] D、当PC上位机需要写入相机基本参数信息时,则需要将相机基本参数信息写入QSPI-FLASH芯片中进行存储;
[0083] E、当PC上位机需要读取相机控制参数信息时,需要从QSPI-FLASH中读取已存储的相机控制参数信息;相机控制参数信息包括曝光时间、触发方式、偏置、增益、图像格式、压缩方式;
[0084] F、当PC上位机需要写入相机控制参数信息时,则需要将相机控制参数信息写入QSPI-FLASH芯片中进行存储;
[0085] 步骤6)对GVSP协议的处理;
[0086] GVSP协议的处理包括两种情况:
[0087] 情况1:当相机接收到PC上位机发送的图像采集命令时:
[0088] 首先,FPGA芯片发送一幅图像的起始数据帧给PC上位机,其包含的信息包括:图像类型,标号;
[0089] 然后,FPGA芯片发送该幅图像的完整信息;
[0090] 最后,FPGA芯片发送该幅图像的结束数据帧;
[0091] 情况:2:当相机接收到PC上位机发送的图像重传命令时:
[0092] FPGA芯片在DDR2芯片中查找需要重传的图像数据所在位置并将其读出,然后发送该图像数据,具体见图3。