GigE——GVCP传输协议

简介

​ GVCP是基于UDP传输协议的应用层协议。它基本上允许应用程序配置设备(通常是摄像机),并实例化设备上的流通道,以及在特定事件发生时通知应用程序。

目标

​ 1、允许GigE 视觉设备和GigE应用程序之间进行交换命令和确认消息;
​ 2、为应用程序提供一种方法,以便在适用时实例化来自设备的流通道;
​ 3、为GigE Vision设备定义一种机制,用于向GigE Vision应用程序发送异步事件消息(使用事件生成器);
​ 4、提供唯一性访问方案,以便只有一个应用程序可以控制设备;
​ 5、最小化GigE视觉设备的IP堆栈复杂度。

GVCP Transport Protocol Considerations

​ GVCP必须使用UDP和IPV4作为传输协议;设备和应用程序不能在GVCP的IP数据报中使用任何IP选项。这样IP头的大小固定在20字节。

UDP

​ GVCP头提供一个8位字段,其中包含16进制键值0x42,用于设备与应用程序识别GVCP包,设备的第一个GVCP端口号必须为3956。

​ GVCP端口(3956)已经在IANA中注册,应用程序可以使用任何可用的动态端口号。当应用程序发送GVCP包时,它使用设备GVCP端口(3956)作为目标,并动态分配UDP端口号作为源。该设备以应用程序动态UDP端口为目标,GVCP端口(3956)为源,响应GVCP请求。出于兼容性的原因,设备必须始终使用标准的GVCP端口号来表示它的第一个实例。这允许支持非mdns的应用程序使用GVCP DISCOVERY命令枚举设备。

Fragmentation

​ 分段定义了将大消息分割成适合通过IP协议传输的小段的方式。对于IP,避免IP碎片的最大传输单元(MTU)是576字节(即所有主机需要接受或从碎片重新组装的最大数据报为576字节)。576字节包括IP头、UDP头、GVCP头以及数据负载部分(以太网报头不属于576字节的一部分)。字段如下表:
在这里插入图片描述

Packet Size Requirements

​ GVCP有效载荷必须是32位(4字节)的倍数。GVCP头本身也是32位的倍数。

Reliability and Error Recovery

​ 可靠性由应用程序有选择性的请求来自每个命令消息的确认来实现的,如下图所示:
在这里插入图片描述
​ 当请求确认时,如果在用户可配置超时之后应用程序没有收到确认,则应再次发送该命令,当重新发送命令时,应用程序必须保持req_id字段不变。消息重试次数可以由用户设定,默认值为3。req_d 初始值不能为0,在控制通道关闭后,其值会被初始化。此外,还启用了端到端连接,通过设置心跳计数来侦听链路是否断开。同理,其值是可以自定义的。一般来说,应用程序端的心跳频率应略低于设备端的1/3,这样可以在UDP包发送丢失时排除心跳因素的干扰。

在这里插入图片描述
​ 另一方面,如果设备接收到与此应用程序先前接收到的命令具有相同req_id字段的命令,则它知道已经接收了两次相同的命令。如果两次运行该命令对设备状态没有影响,则允许这样做。否则,该命令只执行一次。并且在所有请求确认的情况下,设备必须为它接收到的每个命令(原始命令和重复命令)返回一个确认。如下图:
在这里插入图片描述

Flow Control

​ 流控制确保接收的消息不会过流,方案如下:
​ 程序发送第一个数据包时,会在请求确认时必须等待确认消息。在收到第一个确认消息之前,不可以发送第二个数据包,除非传输超时或应用程序本身没有请求确认。
​ 流管理控制可使用IEEE802.3暂停机制。如果设备支持暂停机制,那么暂停配置必须在设备重置期间保持。

### 使用FPGA实现GigE接口的功能 为了实现在FPGA上构建GigE(千兆以太网)接口,需遵循特定的设计流程和技术考量。鉴于GigE Vision依赖于UDP协议进行数据传输,在FPGA内部实现必要的网络层通信成为首要任务。 #### 设计基本的网络协议栈 从硬件层面看,仅需专注于UDP、IP以及MAC三个核心协议的实现[^1]。这些协议负责封装和解析来自相机的数据包,并确保它们能被正确地路由至目标位置。对于IP地址管理方面,考虑到设备通常会分配静态IP给摄像头,故而无需额外集成ARP(Address Resolution Protocol),简化了整体架构设计。 ```verilog // Verilog伪代码片段展示部分MAC层逻辑 module mac_layer ( input wire clk, output reg [47:0] dst_mac_addr, ... ); always @(posedge clk) begin // 处理目的MAC地址设定等操作... end endmodule ``` #### 数据缓冲机制的重要性 当涉及到高速率视频流传输时,不可避免地会出现瞬态流量高峰现象。为此引入外部DDR内存作为临时存储介质显得尤为必要。它不仅能够平滑突发性的输入负载,还允许CPU或其他控制单元有足够的时间去处理接收到的信息帧[^4]。 #### 协议转换策略 一种有效的做法是利用SoC(System on Chip)结构中的软核处理器(如Nios II或MicroBlaze)配合可编程逻辑区域共同完成这项工作。具体来说就是让前者承担起较为繁琐的应用层任务——比如响应GVCP命令查询请求;后者则聚焦于底层物理链路维护及高效的数据打包/解包作业。 #### 接口标准化与互操作性保障 最后值得注意的一点在于选用符合行业标准的产品和服务提供商所提供的现成模块(IP core),这不仅能大大缩短开发周期还能增强系统的兼容性和稳定性[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值