首页 > 其他分享 >基于UDP协议的千兆以太网红外视频传输模块设计与实现

基于UDP协议的千兆以太网红外视频传输模块设计与实现

时间:2024-11-16 09:14:33浏览次数:3  
标签:视频 UDP 缓存 Stream IP 千兆 红外 VDMA 以太网

系列文章目录

1.非制冷红外探测器片上非均匀校正(on-chip offset calibration OOC)技术应用分析

2.非制冷红外探测器驱动模块设计与实现


文章目录

  • 一、前言
  • 二、基于Zynq的总体架构设计
  • 三、红外视频传输处理软件设计
  • 四、红外视频传输存储设计
  • 五、PS端软件设计
  • 总结


前言

       本系统采用基于FPGA+ARM架构的Zynq-7000系列芯片作为核心处理器开展红外相机机芯设计,该方案通过FPGA实现红外探测器时序控制、信息采集、数据传输、图像处理和PS端实现互联,ARM作为数据传输单元对VDMA进行初始化、驱动设置以及基于UDP协议的千兆以太网数据传输模块设计,并对基于QT的红外视频上位机进行设计。

一、基于Zynq的总体架构设计

笔者设计的非制冷红外成像系统采用基于Zynq的结构,系统主要由非制冷红外焦平面探测器、信号转接电路、电源供电电路、时序控制及图像采集模块、图像数据处理、DDR3存储、以太网传输和PC机显示部分组成,其中以太网传输部分,利用UDP协议通过以太网实现红外视频数据传输,并实现千兆以太网数据传输,总体框架如图1A所示,Zynq硬件平台实物如图1B所示。

                                                  图1A:红外成像系统总体框架

  图1B:Zynq硬件平台实物图片

二、红外视频传输处理软件设计

PL端完成探测器时序驱动及图像采集,获取有效的14位原始红外图像数据,并将有效视频数据进行处理,转换为RGB888的格式,再将视频数据转换为AXI4-Stream格式的视频流,为后续VDMA与DDR3之间的通信提供便利,视频数据进入VDMA IP,VDMA利用AXI4接口实现与PS端进行数据交互,将视频数据写入DDR3中。

AXI4-Stream IP核是官方提供的 IP核,主要将探测器采集的并行红外视频信号转换成AXI-Stream流视频协议接口。在Zynq中,方便使用VDMA IP来将PL端采集的视频数据直接缓存到PS端的DDR3中。Video into AXI4-StreamIP的接口如图2所示。其中Vid_data接口主要用于传入视频数据, Vid_active_video接口用于标志有效的视频数据,Vid_hsync接口接收视频行同步信号,Vid_vsync接口是视频场同步信号,Vid_io_in_ce接口为输入视频数据时钟使能,Vid_io_in_clk接口将IP时钟与红外视频时钟同步,Vid_io_in_reset接口为此IP的复位信号。

图2  Video into AXI4-Stream IP的接口

为更好理解输出信号AXI-Stream流的格式,必须了解AXI-Stream总线的时序。 AXI-Stream 总线的工作时序如图3所示。AXI总线最主要的信号是ACLK、DATA、VALID、READY、EOL 以及SOF。传输视频数据时,只有在ACLK的上升沿,READY和VALID同时为高电平时,才会进行有效视频数据的传输,数据传输是按照packet为单位进行的,每个 packet 包含一帧视频中的一行像素数据,在每个packet的最后一个像素处,EOL会被置为高电平来标记一行的结束,如果此packet为一帧的第一个packet,在当前packet的第一个像素处将SOF置为高电平。

图3  AXI-Stream 总线工作时序

本方案中VideointoAXI4-Stream IP 的每个时钟的像素个数、视频输入格式、输入输出像素宽度、FIFO深度以及时钟模式的设置如图4所示。

图 4  VideointoAXI4-Stream IP的设置

三、红外视频传输存储设计

传输红外视频时采用以太网传输技术,但探测器采集的原始数据量比较大,因此需要对视频数据进行缓存。笔者采用了Xilinx 提供的软核IP AXI VDMA,该IP可将AXI Stream格式的视频流与Memory Map格式进 行相互转换,从而实现与DDR3通信。VDMA核中具有图像缓存技术中的多帧缓存以及动态同步锁相机制,能够防止显示视频出现图像割裂或者其他情况发生,是升级版的DMA。如图5所示为多帧缓存工作机制。动态同步锁相机制是读取和写入视频数据分别操作不同的帧存,从而避免冲突PS端读写冲突。

图5  VDMA核多帧缓存工作机制

本方案中整体传输方案设计如图6所示。Video into AXI4-Stream IP输出的AXI-Stream流视频数据通过VDMA写入到DDR3缓存器中,再由PS端在缓存器中读出利用以太网传输视频数据到上位机。视频传输缓存设计如下图6所示。

图6 视频传输缓存设计

在AXI VDMA中,包括控制和状态寄存器、数据搬运模块、行缓冲等几部分构成,如图7所示。视频数据进出DDR3存储器时需利用行缓冲进行缓存,数据搬运模块则控制寄存器读取或写入数据,实现对数据的搬运。通过读取状态寄存器,可获取VDMA当前工作状态。通过些模块的协作,AXI-Stream视频信号可以有效地转换为 Memory Map格式,保存到DDR3中。

图7 VDMA内部框图

本方案中,VDMA IP的基础配置如图8所示,高级配置如图9所示。在 VDMA Basic选项卡中,地址线宽度(AdderssWidth)设置AXI4总线可以访问的地址范围,笔者采用DDR3只有512MB,因此将其配置为32位;在帧缓存(Frame Buffers)的设置上,笔者选择了3帧的缓存数量,这一配置可以有效避免写入帧重叠到读取帧上的问题,同一时刻读写帧缓存数据组合为 Frame0/Frame2、Frame1/Frame0、Frame2/Frame1;数据线宽度(MemoryMapDataWidth)用于设置AXI4接口的数据位宽,位宽越大通信速度越高,但总线的占有率也会更高,因此一般设置为64位;为了配置AXI总线的写通道突发数量的大小,WriteBurstSize和ReadBurstSize设置为64位;Stream流数据位宽(Stream Data Width)设置为32位,这与本方案中格式转换模块输出的视频流数据位宽相对应, 从而保证数据的精确对齐。LineBufferDepth主要设置AXI4-Stream视频数据流的缓存大小,即设置FIFO的大小,用于缓存视频流数据每一行数据的buffer深度,一般越大越好,这里设置为512。在VDMA Advanced选项卡中,对读写通道进行配置,读写通道帧同步(FsyncOptions)有三个选项none、s2mmfsync以及s2mmtuser,在此系统中选择的是none。

图8  VDMA IP基础配置

图9  VDMA IP高级配置

四、PS端软件设计

FPGA的PS端采用C语言对该该部分的软件进行设计,主要对VDMA IP核的初始化及读写控制和以太网传输模块的设计,从而实现DDR3中数据利用网口发送到上位机显示。本方案需要通过VDMA对存储器DDR3进行快速访问,将处理后的红外数据写入DDR3中,因此在SDK中需要对VDMA进行配置,需要根据每一帧红外图像的大小以及每个像素值的位数去设置各个寄存器的值,探测器分辨率为640× 512,因此设置垂直方向为512,水平方向为640,在PL部分设计中,需要配置VDMA IP的帧缓存个数为3,设置3个帧起始地址,采用自动地址分配,采用库函数的方式对VDMA寄存器进行配置。

UDP的配置及主程序流程图如图10所示。当系统上电或者复位时,首先对UDP协议栈与外围以太网接口进行初始化,调用库函数对协议栈进行初始化,主要是对开发板的MAC地址、IP地址、子网掩码以及网关信息进行定义。接着通过UDP协议进行网络连接,连接前需要先创建新的pcb*,分配内存空间给pcb,再连接到指定的端口。网络连接成功后,建立UDP接收回调函数,其功能为接收上位机的UDP命令,并判断是否是自定义协议。当系统接收到上位机的 询问命令,系统发送应答信息,当接收到上位机的获取数据命令,系统开始发送图像数据。为了防止产生丢包以及提高传输质量,本方案中对红外视频数据进行分包处理。

图10  UDP的配置及主程序流程图

UDP 协议发送数据流程图如图11所示。系统开始调用发送数据函数 transfer_data时,首先判断发送数据长度len大于udp8080_qlen时,若是,继续判断 udp8080_q是否等于1,若等于,则释放udp8080_q内存空间,并重新给udp8080_q分配空间,之后将视频数据复制到udp8080_q缓冲区,并调用udp_sento发送缓冲区数据,从而完成一次UDP视频数据传输。

图11  UDP发送数据流程图

上位机软件在整个非制冷红外成像系统中实现红外视频的实时显示。本方案设计的上位机是基于Qt进行的,通过UDP socket实现对下位机的控制和视频数据传输。如图12所示位红外视频显示上位机设计流程,在上位机应用程序获取的红外视频如图13所示。

图12 上位机红外视频显示设计流程

图13   上位机应用程序获取的红外视频


总结

       本文较详细的介绍了如何利用Zynq平台,在PL端和PS端相互配合条件下,实现基于UDP协议的千兆以太网红外视频传输的设计与实现。

标签:视频,UDP,缓存,Stream,IP,千兆,红外,VDMA,以太网
From: https://blog.csdn.net/chuangan77/article/details/143811778

相关文章

  • icloudpd
    icloudpd介绍:每天定时同步icloud照片下载到本地。https://github.com/boredazfcuk/docker-icloudpddocker启动后​chmod-R777iCloud​,意思是赋予iCloud文件夹最高权限执行sync-icloud.sh--Initialise​有效期默认为90天,过期之后就会停止同步,这也算苹果的一个安全......
  • TCP_UDP
    TCP,UDPFlood攻击原理TCPFlood攻击配置环境WindowsServer2016配置服务器管理器,创建一个Web服务器并开启该服务器功能kali配置vim/etc/network/interfacesifupeth0开启网络查看Kaliip信息:修改路由器信息:拓扑关系如下所示:GNS3中修改路由器R......
  • 基于UDP的tftp传输服务的客户端
    效果图下载上传:代码:#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<string.h>#include<unistd.h>#include<netinet/in.h>#include<stdlib.h>#include<......
  • 三菱FX5UPLC以太网Socket通信功能
    通过专用指令与通过以太网连接的对象设备以TCP及UDP协议收发任意数据的功能。*1、是用于存储从开放的对象设备中接收到的数据的区域。CPU模块:连接No.1~8以太网模块:连接No.1~32 以TCP协议进行通信时TCP是在对象设备的端口号间建立连接,从而进行可靠的数据通信的协议。要......
  • UDP协议和TCP协议之间有什么具体区别?
    UDP(UserDatagramProtocol)和TCP(TransmissionControlProtocol)是两种常见的网络传输协议,它们在数据传输中有着显著的区别和适用场景。理解它们的区别对于网络工程师、软件开发人员以及网络安全专家都是至关重要的。本文会针对关于UDP和TCP之间区别的做出详细解释。一、协议概......
  • UDP 协议 - 学习笔记
    摘要:本文原创,转载请注明地址https://www.cnblogs.com/baokang/p/18543885一、UDP是什么UDP(UserDatagramProtocol)用户数据报协议是运输层协议的一种,是一种无连接的数据传输协议二、UDP协议的特点(1)UDP是无连接的,发送数据前不需要建立连接,因此减少的发生数据量和发送数据......
  • 以太网链路聚合与交换机堆叠、集群
    一、网络可靠性需求网络的可靠性可以从单板、设备、链路多个层面实现。1.单板可靠性2.设备可靠性3.链路可靠性二、链路聚合技术原理与配置1.以太网链路聚合Eth-Trunk基本原理链路聚合,通过将多个物理接口捆绑成为一个逻辑接口,可以在不进行硬件升级的条件下,达到增加......
  • 千兆反射内存卡的技术原理与优势
    在当今数字化的快节奏世界中,数据的快速、准确和实时传输已成为各行各业成功的关键。反射内存卡,作为一种尖端的数据传输解决方案,以其独特的性能和广泛的应用前景,正在引领行业的变革。本文将深入探讨千兆反射内存卡的应用领域及其发展前景,揭示这一技术如何为各行各业带来前所未有......
  • 基于surging 的木舟平台如何通过Tcp或者UDP网络组件接入设备
    一、概述     上篇文章介绍了木舟通过HTTP网络组件接入设备,那么此篇文章将介绍如何利用Tcp或者UDP网络组件接入设备.     木舟(Kayak)是什么?      木舟(Kayak)是基于.NET6.0软件环境下的surging微服务引擎进行开发的,平台包含了微服务和物联网平台。支......
  • stm32以太网接口:MII和RMII
    前言使用stm32和lwip进行网络通信开发时,实现结构如下:而MII和RMII就是stm32与PHY芯片之间的通信接口,类似于I2C、UART等。stm32以太网模块有专用的DMA控制器,通过AHB接口将以太网内核和存储器相连。数据发送时,先将数据从存储器以DMA传输到TXFIFO中进行缓冲,然后由MAC内核......