1.fpgamacԴ??
2.Artix7系列FPGA实现SDI视频编解码+UDP以太网传输,基于GTP高速接口,提供工程源码和技术支持
3.FPGA高端项目:纯verilog的 25G-UDP 高速协议栈,提供工程源码和技术支持
4.Zynq GTX全网最细讲解,aurora 8b/10b协议,OV5640板对板视频传输,视频云存储源码提供2套工程源码和技术支持
fpgamacԴ??
前言:
探索使用FPGA实现千兆网UDP视频传输,本文采用基于RTL PHY芯片的设计,提供完整工程源码与QT上位机源码。本文主要针对FPGA开发者的实践指南,特别强调UDP协议栈的实现与优化。
设计思路框架:
本文设计的FPGA系统基于RTL PHY实现千兆网UDP视频传输,包含视频源选择、OV摄像头配置、动态彩条生成、UDP协议栈实现、IP地址与端口配置、QT上位机显示等功能。通过顶层的宏定义选择视频源,支持动态彩条与OV摄像头。
视频源选择与配置:
系统提供两种视频源选择:一是使用廉价的OV摄像头模组;二是内置动态彩条模拟视频,适用于无摄像头或无法接入摄像头的情况。选择逻辑通过顶层宏定义实现,默认选择OV摄像头。
OV摄像头配置与采集:
支持x分辨率的OV摄像头配置,输出RGB或RGB格式的视频数据,配置通过verilog代码模块实现。系统集成摄像头配置与视频采集功能,为视频传输提供稳定数据源。
动态彩条生成:
动态彩条模块可配置不同分辨率与参数,用于无摄像头输入时生成模拟视频数据。动态彩条通过FPGA内部产生,提供灵活的视频源选择。
UDP协议栈实现:
系统采用非开源的UDP协议栈,与Tri Mode Ethernet MAC三速网IP配合使用。协议栈提供用户接口,简化UDP协议实现,支持接收校验和检验、IP首部校验和生成、检测源码是否加密ARP请求与响应等功能。
数据缓冲与发送:
使用数据缓冲FIFO组实现UDP数据的高效传输,通过AXI-Stream接口与Tri Mode Ethernet MAC互联,支持时钟域与数据位宽转换,确保高效数据传输。
IP地址与端口号修改:
协议栈允许用户修改IP地址与端口号,适应不同网络环境的配置需求。
Tri Mode Ethernet MAC与RTL PHY移植:
设计使用Xilinx官方的Tri Mode Ethernet MAC IP核,针对RTL PHY进行移植优化,包括时钟域转换与数据位宽适配。移植注意事项包括版本一致性、FPGA型号调整、DDR配置与引脚约束修改等。
QT上位机与源码提供:
系统集成与QT上位机通信的用户接口,提供兼容x与P分辨率的QT上位机源码,支持视频抓取与显示功能。用户可根据需求修改代码以适应更高分辨率。
工程移植与调试:
本文提供详细的工程移植指南,包括vivado版本、FPGA型号、资源消耗与功耗分析。针对不同vivado版本、FPGA型号与DDR配置的移植策略,确保工程在不同环境下的稳定运行。
上板调试与演示:
本文指导开发板的连接与调试步骤,包括开发板与电脑的物理连接、IP地址配置与验证过程。通过ping测试确保网络连通性,提供静态与动态演示视频,直观展示视频传输流程。
福利与获取:
本文提供工程源码的获取方式,包括某度网盘链接分享。用户需通过私信或指定方式获取源码文件,以适应不同需求与环境的FPGA千兆网UDP视频传输项目。
Artix7系列FPGA实现SDI视频编解码+UDP以太网传输,基于GTP高速接口,提供工程源码和技术支持
在FPGA设计领域,Xilinx Artix7系列的知识论坛源码器件被用于实现SDI视频的编解码和UDP以太网传输,借助GTP高速接口提供高效处理。这项技术主要针对视频信号的处理,支持SDI相机或HDMI转SDI设备作为输入,通过FPGA的GTP资源解串并解码,再利用SMPTE SDI IP进行转换,生成BT视频。接着,视频进行图像缩放,从x调整至x,然后通过纯verilog实现的图像缓存方案存储于DDR3中,等待通过UDP以太网传输。
本工程不仅包含硬件开发板,还提供了完整的工程源码和技术支持,使得开发者可以轻松实现SDI视频处理到网络的转换。设计中,使用了Xilinx官方的Tri Mode Ethernet MAC配合PHY芯片B,通过RJ网口输出,同时,PC端的QT上位机负责接收并显示视频。工程适用于需要将SDI视频转换为网络传输的项目,并且代码兼容多种SDI模式,适应性强。
为了方便移植和应用,开发者需要注意版本兼容性问题,可能需要升级或调整vivado版本和FPGA型号,同时根据硬件配置调整MIG IP和引脚约束。通过准备相应的硬件设备,如FPGA开发板、SDI设备和网络线,配合上位机配置,即可进行实际的视频处理和传输验证。
博主还提供了详细的工程代码获取方式,以及针对不同需求的定制服务,以满足读者和粉丝的多样化的学习研究和项目需求。
FPGA高端项目:纯verilog的 G-UDP 高速协议栈,提供工程源码和技术支持
FPGA高端项目:纯verilog的 G-UDP 高速协议栈,提供工程源码和技术支持
前言:在现有的FPGA实现UDP方案中,我们面临以下几种常见挑战和局限性。波段风暴的源码首先,有一些方案使用verilog编写UDP收发器,但在其中使用了FIFO或RAM等IP,这种设计在实际项目中难以接受,因为它们缺乏基本的问题排查机制,例如ping功能。其次,有些方案具备ping功能,但代码不开源,用户无法获取源码,限制了问题调试和优化的可能性。第三,一些方案使用了Xilinx的Tri Mode Ethernet MAC三速网IP,尽管功能强大,但同样面临源码缺失的问题。第四,使用FPGA的GTX资源通过SFP光口实现UDP通信,这种方案便捷且无需额外网络变压器。最后,真正意义上的纯verilog实现的UDP协议栈,即全部代码均使用verilog编写,不依赖任何IP,这种方案在市面上较少见,且难以获取。
本设计采用纯verilog实现的G-UDP高速协议栈,专注于提供G-UDP回环通信测试。它旨在为用户提供一个高度可移植、功能丰富的G-UDP协议栈架构,支持用户根据需求创建自己的项目。该协议栈基于主流FPGA器件,提供了一系列工程源码,适用于Xilinx系列FPGA,使用Vivado作为开发工具。核心资源为GTY,同时支持SFP和QSFP光口。
经过多次测试,该协议栈稳定可靠,适用于教育、农业供需平台源码研究和工业应用领域,包括医疗和军用数字通信。用户可以轻松获取完整的工程源码和技术支持。本设计在遵守相关版权和使用条款的前提下,提供给个人学习和研究使用,禁止用于商业用途。
1G和G UDP协议栈版本介绍:本设计还提供了1G和G速率的UDP协议栈,包括数据回环、视频传输、AD采集传输等应用。通过阅读相关博客,用户可以找到这些版本的工程源码和应用案例。
性能特点:本协议栈具有以下特性:
- 全部使用verilog编写,无任何IP核依赖。
- 高度可移植性,适用于不同FPGA型号。
- 强大的适应性,已成功测试在多种PHY上。
- 时序收敛良好。
- 包括动态ARP功能。
- 不具备ping功能。
- 用户接口数据位宽高达位。
- 最高支持G速率。
详细设计方案:设计基于FPGA板载的TI DPISRGZ网络芯片和QSFP光口,采用GTY+QSFP光口构建G-UDP高速协议栈,同时利用1G/2.5G Ethernet PHY和SGMII接口实现1G-UDP协议栈。设计包含两个UDP数据通路,分别支持G和1G速率,使用同一高速协议栈。代码中包含axis_adapter.v模块用于8位到位数据宽度的转换,以及axis_switch.v模块用于数据路径切换的仲裁。
网络调试助手:本设计提供了一个简单的回环测试工具,支持常用Windows软件,用于测试UDP数据收发。
高速接口资源使用:设计中涉及到G-UDP和1G-UDP数据通路的实现,包括GTY和1G/2.5G Ethernet PHY资源的调用,分别应用于不同速率的UDP通信。
详细实现方案:设计包含G-PHY层、G-MAC层、1G-MAC层、AXI4-Stream总线仲裁、AXI4-Stream FIFO、G-UDP高速协议栈等关键组件。每个模块都采用verilog实现,确保高性能和可移植性。
网络数据处理:设计中的G-PHY层处理GTY输出的数据,进行解码、对齐、校验等操作。1G-MAC层则将GMII数据转换为AXI4-Stream数据。协议栈包含动态ARP层、IP层、UDP层,实现标准UDP协议功能。
工程源码获取:对于感兴趣的开发者,可以获取完整的工程源码和技术支持。工程源码以某度网盘链接方式提供,确保用户能够轻松下载并进行移植和调试。
总结:本设计提供了一个强大、灵活的G-UDP高速协议栈解决方案,支持多种FPGA平台和PHY接口,适用于各种网络通信需求。通过提供的工程源码和技术支持,用户可以轻松地在自己的项目中集成和使用这些功能。
Zynq GTX全网最细讲解,aurora 8b/b协议,OV板对板视频传输,提供2套工程源码和技术支持
没玩过GT资源都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。
GT资源是Xilinx系列FPGA的重要卖点,也是做高速接口的基础,不管是PCIE、SATA、MAC等,都需要用到GT资源来做数据高速串化和解串处理,Xilinx不同的FPGA系列拥有不同的GT资源类型,低端的A7由GTP,K7有GTX,V7有GTH,更高端的U+系列还有GTY等,他们的速度越来越高,应用场景也越来越高端。
本文使用Xilinx的Zynq FPGA的GTX资源做板对板的视频传输实验,视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV摄像头模组;如果你得手里没有摄像头,或者你得开发板没有摄像头接口,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的`define宏定义进行,默认使用ov作为视频源,调用GTX IP核,用verilog编写视频数据的编解码模块和数据对齐模块,使用2块开发板硬件上的2个SFP光口实现数据的收发;本博客提供2套vivado工程源码,2套工程的不同点在于一套是GTX发送,另一套是GTX接收;本博客详细描述了FPGA GTX 视频传输的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后。
免责声明:本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。
我这里已有的 GT 高速接口解决方案:我的主页有FPGA GT 高速接口专栏,该专栏有 GTP 、 GTX 、 GTH 、 GTY 等GT 资源的视频传输例程和PCIE传输例程,其中 GTP基于A7系列FPGA开发板搭建,GTX基于K7或者ZYNQ系列FPGA开发板搭建,GTH基于KU或者V7系列FPGA开发板搭建,GTY基于KU+系列FPGA开发板搭建。
GTX 全网最细解读:关于GTX介绍最详细的肯定是Xilinx官方的《ug_7Series_Transceivers》,我们以此来解读;我用到的开发板FPGA型号为Xilinx Kintex7 xc7ktffg-2;带有8路GTX资源,其中2路连接到了2个SFP光口,每通道的收发速度为 Mb/s 到 . Gb/s 之间。GTX收发器支持不同的串行传输接口或协议,比如 PCIE 1.1/2.0 接口、万兆网 XUAI 接口、OC-、串行 RapidIO 接口、 SATA(Serial ATA) 接口、数字分量串行接口(SDI)等等;GTX 基本结构:Xilinx 以 Quad 来对串行高速收发器进行分组,四个串行高速收发器和一个 COMMOM(QPLL)组成一个 Quad,每一个串行高速收发器称为一个 Channel(通道)。GTX 的具体内部逻辑框图:GTX 的发送和接收处理流程:首先用户逻辑数据经过 8B/B 编码后,进入一个发送缓存区(Phase Adjust FIFO),最后经过高速 Serdes 进行并串转换(PISO)。GTX 的参考时钟:GTX 模块有两个差分参考时钟输入管脚(MGTREFCLK0P/N 和 MGTREFCLK1P/N),作为 GTX 模块的参考时钟源,用户可以自行选择。
GTX 发送接口:用户只需要关心发送接口的时钟和数据即可,GTX例化模块的这部分接口如下:在代码中我已为你们重新绑定并做到了模块的顶层,代码部分如下。GTX 接收接口:用户只需要关心接收接口的时钟和数据即可,GTX例化模块的这部分接口如下:在代码中我已为你们重新绑定并做到了模块的顶层,代码部分如下。
GTX IP核调用和使用:有别于网上其他博主的教程,我个人喜欢用如下图的共享逻辑:这样选择的好处有两个,一是方便DRP变速,二是便于IP核的修改,修改完IP核后直接编译即可。
设计思路框架:本博客提供2套vivado工程源码,2组工程的不同点在于一套是GTX发送,另一套是GTX接收。第1套vivado工程源码:GTX作为发送端,Zynq开发板1采集视频,然后数据组包,通过GTX做8b/b编码后,通过板载的SFP光口的TX端发送出去。视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用廉价的OV摄像头模组;如果你得手里没有摄像头,或者你得开发板没有摄像头接口,则可使用代码内部生成的动态彩条模拟摄像头视频;默认使用ov作为视频源。第2套vivado工程源码:Zynq开发板2的SFP RX端口接收数据,经过GTX做8b/b解码、数据对齐、数据解包的操作后就得到了有效的视频数据,再用我常用的FDMA方案做视频缓存,最后输出HDMI视频显示。
视频源选择:视频源有两种,分别对应开发者手里有没有摄像头的情况,如果你的手里有摄像头,或者你的开发板有摄像头接口,则使用摄像头作为视频输入源,我这里用到的是廉价的OV摄像头模组;如果你得手里没有摄像头,或者你得开发板没有摄像头接口,则可使用代码内部生成的动态彩条模拟摄像头视频,动态彩条是移动的画面,完全可以模拟视频;默认使用ov作为视频源;视频源的选择通过代码顶层的`define COLOR_IN 宏定义进行。
视频源配置及采集:OV摄像头需要i2c配置才能使用,需要将DVP接口的视频数据采集为RGB或者RGB格式的视频数据。选择逻辑如下:当(注释) define COLOR_IN时,输入源视频是动态彩条;当(不注释) define COLOR_IN时,输入源视频是ov摄像头。
视频数据组包:由于视频需要在GTX中通过aurora 8b/b协议收发,所以数据必须进行组包,以适应aurora 8b/b协议标准。视频数据组包模块代码位置如下:首先,我们将bit的视频存入FIFO中,存满一行时就从FIFO读出送入GTX发送;在此之前,需要对一帧视频进行编号,也叫作指令,GTX组包时根据固定的指令进行数据发送,GTX解包时根据固定的指令恢复视频的场同步信号和视频有效信号。
GTX aurora 8b/b:这个就是调用GTX做aurora 8b/b协议的数据编解码。数据对齐:由于GT资源的aurora 8b/b数据收发天然有着数据错位的情况,所以需要对接受到的解码数据进行数据对齐处理。视频数据解包:数据解包是数据组包的逆过程。图像缓存:我用到了Zynq开发板,用FDMA取代VDMA具有以下优势:不需要将输入视频转为AXI4-Stream流;节约资源,开发难度低;不需要SDK配置,不要要会嵌入式C,纯FPGA开发者的福音;看得到的源码,不存在黑箱操作问题。
视频输出:视频从FDMA读出后,经过VGA时序模块和HDMI发送模块后输出显示器。
第1套vivado工程详解:开发板FPGA型号:Xilinx--Zynq--xc7zffg-2;开发环境:Vivado.1;输入:ov摄像头或者动态彩条,分辨率x@Hz;输出:开发板1的SFP光口的TX接口;应用:GTX板对板视频传输;工程Block Design如下:工程代码架构如下:综合编译完成后的FPGA资源消耗和功耗预估如下。
第2套vivado工程详解:开发板FPGA型号:Xilinx--Zynq--xc7zffg-2;开发环境:Vivado.1;输入:开发板2的SFP光口的RX接口;输出:开发板2的HDMI输出接口,分辨率为X@Hz;应用:GTX板对板视频传输;工程Block Design如下:工程代码架构如下:综合编译完成后的FPGA资源消耗和功耗预估如下。
上板调试验证光纤连接:两块板子的光纤接法如下。静态演示:下面以第1组vivado工程的两块板子为例展示输出效果。当GTX运行4G线速率时输出如下。
福利:工程代码的获取:代码太大,无法邮箱发送,以某度网盘链接方式发送,资料获取方式:私。网盘资料如下: