建立中英文网站,摄影网站图片,做搜狗网站优化点击,南京发布最新通告目录 1、前言免责声明本项目特点 2、相关方案推荐我这里已有的 GT 高速接口解决方案我这里已有的以太网方案 3、设计思路框架设计框图视频源选择OV5640摄像头配置及采集动态彩条视频数据组包GTP 全网最细解读GTP 基本结构GTP 发送和接收处理流程GTP 的参考时钟GTP 发送接口GTP … 目录 1、前言免责声明本项目特点 2、相关方案推荐我这里已有的 GT 高速接口解决方案我这里已有的以太网方案 3、设计思路框架设计框图视频源选择OV5640摄像头配置及采集动态彩条视频数据组包GTP 全网最细解读GTP 基本结构GTP 发送和接收处理流程GTP 的参考时钟GTP 发送接口GTP 接收接口GTP IP核调用和使用 数据对齐视频数据解包图像缓存UDP数据组包UDP协议栈UDP协议栈数据发送IP地址、端口号的修改Tri Mode Ethernet MAC介绍以及移植注意事项RTL8211QT上位机和源码 4、vivado工程1--1路SFP传输5、vivado工程2--2路SFP传输6、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项 7、上板调试验证并演示准备工作ping一下静态演示动态演示 8、福利工程源码获取 FPGA高端项目图像采集GTPUDP架构高速接口以太网视频传输提供2套工程源码加QT上位机源码和技术支持 1、前言
没玩过图像处理、GT高速接口、UDP网络通信都不好意思说自己玩儿过FPGA这是CSDN某大佬说过的一句话鄙人深信不疑。。。GT资源是Xilinx系列FPGA的重要卖点也是做高速接口的基础不管是PCIE、SATA、MAC等都需要用到GT资源来做数据高速串化和解串处理Xilinx不同的FPGA系列拥有不同的GT资源类型低端的A7由GTPK7有GTXV7有GTH更高端的U系列还有GTY等他们的速度越来越高应用场景也越来越高端。。。
本文使用Xilinx的Artix7 FPGA的GTP资源和板载的RTL8211网络PHY做GTP aurora 8b/10b编解码 UDP网络视频传输实验视频源有两种分别对应开发者手里有没有摄像头的情况一种是使用廉价的OV5640摄像头模组如果你得手里没有摄像头或者你得开发板没有摄像头接口则可使用代码内部生成的动态彩条模拟摄像头视频视频源的选择通过代码顶层的define宏定义进行上电默认使用ov5640作为视频源FPGA采集到视频数据后将视频数据进行数据组包然后调用GTP IP核配置为8b/10b编解码模式将组包的视频数据送入GTP编码发送出去然后再GTP解码接收用verilog编写视频数据对齐和视频数据解包模块解析出有效的视频数据并恢复行场等时序然后将视频送到DDR3进行缓存再读出视频送UDP协议栈进行UDP协议编码再调用Xilinx官方的Tri Mode Ethernet MAC作为MAC层最后通过板载的RTL8211将视频通过网络数据形式发送PCPC端用QT上位机接收图像并显示出来
提供2套vivado2019.1版本的工程源码2套工程的区别在于使用1个SFP光口还是使用2个SFP光口详情请看第3章节的设计思路框架工程代码可综合编译上板调试可直接项目移植适用于在校学生、研究生项目开发也适用于在职工程师做学习提升可应用于医疗、军工等行业的高速接口或图像处理领域 提供完整的、跑通的工程源码和技术支持 工程源码和技术支持的获取方式放在了文章末尾请耐心看到最后
免责声明
本工程及其源码即有自己写的一部分也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等)若大佬们觉得有所冒犯请私信批评教育基于此本工程及其源码仅限于读者或粉丝个人学习和研究禁止用于商业用途若由于读者或粉丝自身原因用于商业用途所导致的法律问题与本博客及博主无关请谨慎使用。。。
本项目特点
本项目是一个综合性的高端项目从宏观上可以分为硬件和软件的结合硬件指的是FPGA逻辑的实现软件指的是PC端QT上位机的实现从FPGA应用领域上可以分为图像处理、高速接口、网络传输三大领域这三大领域是目前FPGA的主流应用图像处理属于基础应用网络传输属于中等应用高速接口属于高端应用这个工程直接将三者结合在实际应用中很有需求但市面上会的人很少。。。
2、相关方案推荐
我这里已有的 GT 高速接口解决方案
我的主页有FPGA GT 高速接口专栏该专栏有 GTP 、 GTX 、 GTH 、 GTY 等GT 资源的视频传输例程和PCIE传输例程其中 GTP基于A7系列FPGA开发板搭建GTX基于K7或者ZYNQ系列FPGA开发板搭建GTH基于KU或者V7系列FPGA开发板搭建GTY基于KU系列FPGA开发板搭建以下是专栏地址 点击直接前往
我这里已有的以太网方案
目前我这里有大量UDP协议的工程源码包括UDP数据回环视频传输AD采集传输等也有TCP协议的工程还有RDMA的NIC 10G 25G 100G网卡工程源码对网络通信有需求的兄弟可以去看看直接点击前往 其中10G万兆TCP协议的工程博客如下 直接点击前往
3、设计思路框架
本文使用Xilinx的Artix7 FPGA的GTP资源和板载的RTL8211网络PHY做GTP aurora 8b/10b编解码 UDP网络视频传输实验视频源有两种分别对应开发者手里有没有摄像头的情况一种是使用廉价的OV5640摄像头模组如果你得手里没有摄像头或者你得开发板没有摄像头接口则可使用代码内部生成的动态彩条模拟摄像头视频视频源的选择通过代码顶层的define宏定义进行上电默认使用ov5640作为视频源FPGA采集到视频数据后将视频数据进行数据组包然后调用GTP IP核配置为8b/10b编解码模式将组包的视频数据送入GTP编码发送出去然后再GTP解码接收用verilog编写视频数据对齐和视频数据解包模块解析出有效的视频数据并恢复行场等时序然后将视频送到DDR3进行缓存再读出视频送UDP协议栈进行UDP协议编码再调用Xilinx官方的Tri Mode Ethernet MAC作为MAC层最后通过板载的RTL8211将视频通过网络数据形式发送PCPC端用QT上位机接收图像并显示出来提供2套vivado2019.1版本的工程源码2套工程的区别在于使用1个SFP光口还是使用2个SFP光口
设计框图
使用2个SFP光口框图如下 注意框图中的数字表示数据流向的顺序 使用1个SFP光口框图如下 注意框图中的数字表示数据流向的顺序
视频源选择
视频源有两种分别对应开发者手里有没有摄像头的情况如果你的手里有摄像头或者你的开发板有摄像头接口则使用摄像头作为视频输入源我这里用到的是廉价的OV5640摄像头模组如果你得手里没有摄像头或者你得开发板没有摄像头接口则可使用代码内部生成的动态彩条模拟摄像头视频动态彩条是移动的画面完全可以模拟视频默认使用ov5640作为视频源视频源的选择通过代码顶层的define宏定义进行如下 选择逻辑代码部分如下 选择逻辑如下 当(注释) define COLOR_IN时输入源视频是ov5640摄像头 当(不注释) define COLOR_IN时输入源视频是动态彩条
OV5640摄像头配置及采集
OV5640摄像头需要i2c配置才能使用需要将DVP接口的视频数据采集为RGB565或者RGB888格式的视频数据这两部分均用verilog代码模块实现代码位置如下 其中摄像头配置为分辨率1280x720如下 摄像头采集模块支持RGB565和RGB888格式的视频输出可由参数配置如下 RGB_TYPE0输出本RGB565格式 RGB_TYPE1输出本RGB888格式 本设计选择RGB565格式
动态彩条
动态彩条可配置为不同分辨率的视频视频的边框宽度动态移动方块的大小移动速度等都可以参数化配置我这里配置为辨率1280x720动态彩条模块代码位置和顶层接口和例化如下
视频数据组包
由于视频需要在GTP中通过aurora 8b/10b协议收发所以数据必须进行组包以适应aurora 8b/10b协议标准视频数据组包模块代码位置如下 首先我们将16bit的视频存入FIFO中存满一行时就从FIFO读出送入GTP发送在此之前需要对一帧视频进行编号也叫作指令GTP组包时根据固定的指令进行数据发送GTP解包时根据固定的指令恢复视频的场同步信号和视频有效信号当一帧视频的场同步信号上升沿到来时发送一帧视频开始指令 0当一帧视频的场同步信号下降沿到来时发送一帧视频开始指令 1视频消隐期间发送无效数据 0 和无效数据 1当视频有效信号到来时将每一行视频进行编号先发送一行视频开始指令在发送当前的视频行号当一行视频发送完成后再发送一行视频结束指令一帧视频发送完成后先发送一帧视频结束指令 0再发送一帧视频结束指令 1至此一帧视频则发送完成这个模块不太好理解所以我在代码里进行了详细的中文注释需要注意的是为了防止中文注释的乱序显示请用notepad编辑器打开代码指令定义如下 指令可以任意更改但最低字节必须为bc
GTP 全网最细解读
关于GTP介绍最详细的肯定是Xilinx官方的《ug482_7Series_GTP_Transceivers》我们以此来解读 《ug482_7Series_GTP_Transceivers》的PDF文档我已放在了资料包里文章末尾有获取方式 我用到的开发板FPGA型号为Xilinx Artix7 xc7a35tfgg484-2带有4路GTP资源每通道的收发速度为 500 Mb/s 到 6.6 Gb/s 之间。GTP 收发器支持不同的串行传输接口或协议比如 PCIE 1.1/2.0 接口、万兆网 XUAI 接口、OC-48、串行 RapidIO 接口、 SATA(Serial ATA) 接口、数字分量串行接口(SDI)等等
调用GTP做aurora 8b/10b协议的数据编解码前面已经对GTP做了详细概述这里不讲代码位置如下 需要注意的是我一共调用了5个GTP速率分别为1G、2G、4G、5G代码中用一个参数选择速率如下 GTP_RATE8’d1GTP以1G线速率运行 GTP_RATE8’d2GTP以2G线速率运行 GTP_RATE8’d4GTP以4G线速率运行 GTP_RATE8’d5GTP以5G线速率运行 以我的测试来看GTP以4G线速率运行时视频传输效果最佳
GTP 基本结构
Xilinx 以 Quad 来对串行高速收发器进行分组四个串行高速收发器和一个 COMMOMQPLL组成一个 Quad每一个串行高速收发器称为一个 Channel(通道下图为四路 GTP 收发器在Artix-7 FPGA 芯片中的示意图《ug482_7Series_GTP_Transceivers》第13页 GTP 的具体内部逻辑框图如下所示它由四个收发器通道 GTPE2_CHANNEL原语 和一个GTPE2_COMMON 原语 组成。每路 GTPE2_CHANNEL 包含发送电路 TX 和接收电路 RX《ug482_7Series_GTP_Transceivers》第14页 每个 GTPE2_CHANNEL 的逻辑电路如下图所示《ug482_7Series_GTP_Transceivers》第15页 GTPE2_CHANNEL 的发送端和接收端功能是独立的均由 PMA(Physical Media Attachment物理媒介适配层)和 PCS(Physical Coding Sublayer物理编码子层)两个子层组成。其中 PMA 子层包含高速串并转换(Serdes)、预/后加重、接收均衡、时钟发生器及时钟恢复等电路。PCS 子层包含8B/10B 编解码、缓冲区、通道绑定和时钟修正等电路。 这里说多了意义不大因为没有做过几个大的项目是不会理解这里面的东西的对于初次使用或者想快速使用者而言更多的精力应该关注IP核的调用和使用后面我也会重点将到IP核的调用和使用
GTP 发送和接收处理流程
首先用户逻辑数据经过 8B/10B 编码后进入一个发送缓存区Phase Adjust FIFO该缓冲区主要是 PMA 子层和 PCS 子层两个时钟域的时钟隔离解决两者时钟速率匹配和相位差异的问题最后经过高速 Serdes 进行并串转换(PISO)有必要的话可以进行预加重(TX Pre-emphasis)、后加重。值得一提的是如果在 PCB 设计时不慎将 TXP 和 TXN 差分引脚交叉连接则可以通过极性控制(Polarity)来弥补这个设计错误。接收端和发送端过程相反相似点较多这里就不赘述了需要注意的是 RX 接收端的弹性缓冲区其具有时钟纠正和通道绑定功能。这里的每一个功能点都可以写一篇论文甚至是一本书所以这里只需要知道个概念即可在具体的项目中回具体用到还是那句话对于初次使用或者想快速使用者而言更多的精力应该关注IP核的调用和使用。
GTP 的参考时钟
GTP 模块有两个差分参考时钟输入管脚(MGTREFCLK0P/N 和 MGTREFCLK1P/N作为 GTP模块的参考时钟源用户可以自行选择。一般的A7系列开发板上都有一路 125Mhz 的 GTP 参考时钟连接到 MGTREFCLK0/1上作为 GTP 的参考时钟。差分参考时钟通过IBUFDS 模块转换成单端时钟信号进入到 GTPE2_COMMOM 的 PLL0 和 PLL1 中产生 TX 和 RX 电路中所需的时钟频率。TX 和 RX 收发器速度相同的话TX 电路和 RX 电路可以使用同一个 PLL 产生的时钟如果 TX 和 RX收发器速度不相同的话需要使用不同的 PLL 时钟产生的时钟。参考时钟这里Xilinx给出的GT参考例程已经做得很好了我们调用时其实不用修改GTP 的参考时钟结构图如下《ug482_7Series_GTP_Transceivers》第21页
GTP 发送接口
《ug482_7Series_GTP_Transceivers》的第75到123页详细介绍了发送处理流程其中大部分内容对于用户而言可以不去深究因为手册讲的基本都是他自己的设计思想留给用户可操作的接口并不多基于此思路我们重点讲讲GTP例化时留给用户的发送部分需要用到的接口 用户只需要关心发送接口的时钟和数据即可GTP例化模块的这部分接口如下 在代码中我已为你们重新绑定并做到了模块的顶层代码部分如下
GTP 接收接口
《ug482_7Series_GTP_Transceivers》的第125到213页详细介绍了发送处理流程其中大部分内容对于用户而言可以不去深究因为手册讲的基本都是他自己的设计思想留给用户可操作的接口并不多基于此思路我们重点讲讲GTP例化时留给用户的发送部分需要用到的接口 用户只需要关心接收接口的时钟和数据即可GTP例化模块的这部分接口如下 在代码中我已为你们重新绑定并做到了模块的顶层代码部分如下
GTP IP核调用和使用 有别于网上其他博主的教程我个人喜欢用如下图的共享逻辑 这样选择的好处有两个一是方便DRP变速二是便于IP核的修改修改完IP核后直接编译即可不再需要打开example工程再复制下面的一堆文件放到自己的工程什么的玩儿个GTP需要那么复杂么 这里对上图的标号做解释 1线速率根据自己的项目需求来GTP的范围是0.5到6.25G由于我的项目是视频传输所以在GTP的速率范围内均可为了通用性我在vivado工程中例化了5个GTP速率分别为1G、2G、4G、5G 2参考时钟这个得根据你的原理图来可以是80M、125M、148.5M、156.25M等等我的开发板是125M 4GTP组的绑定这个很重要他的绑定参考依据有两个已是你的开发板原理图而是官方的参考资料《ug482_7Series_GTP_Transceivers》官方将GTP资源分成了4组名字分别为X0Y0、X0Y1、X0Y2、X0Y3由于GT资源是Xilinx系列FPGA的专用资源占用专用的Bnak所以引脚也是专用的那么这些GTP组和引脚是怎么对应的呢《ug482_7Series_GTP_Transceivers》的说明如下红框内为的我的开发板原理图对应的FPGA引脚 我的板子原理图如下 选择外部数据位宽32bit的8b/10b编解码如下 下面这里讲的是K码检测 这里选择K28.5也就是所谓的COM码十六进制为bc他的作用很多可以表示空闲乱序符号也可以表示数据错位标志这里用来标志数据错位8b/10b协议对K码的定义如下 下面讲的是时钟矫正也就是对应GTP内部接收部分的弹性buffer 这里有一个时钟频偏的概念特别是收发双方时钟不同源时这里设置的频偏为100ppm规定每隔5000个数据包发送方发送一个4字节的序列接收方的弹性buffer会根据这4字节的序列以及数据在buffer中的位置来决定删除或者插入一个4字节的序列中的一个字节目的是确保数据从发送端到接收端的稳定性消除时钟频偏的影响
数据对齐
由于GT资源的aurora 8b/10b数据收发天然有着数据错位的情况所以需要对接受到的解码数据进行数据对齐处理数据对齐模块代码位置如下 我定义的 K 码控制字符格式为XX_XX_XX_BC所以用一个rx_ctrl 指示数据是否为 K 码 的 COM 符号 rx_ctrl 4’b0000 表示 4 字节的数据没有 COM 码 rx_ctrl 4’b0001 表示 4 字节的数据中[ 7: 0] 为 COM 码 rx_ctrl 4’b0010 表示 4 字节的数据中[15: 8] 为 COM 码 rx_ctrl 4’b0100 表示 4 字节的数据中[23:16] 为 COM 码 rx_ctrl 4’b1000 表示 4 字节的数据中[31:24] 为 COM 码 基于此当接收到有K码时就对数据进行对齐处理也就是将数据打一拍和新进来的数据进行错位组合这是FPGA的基础操作这里不再赘述
视频数据解包
数据解包是数据组包的逆过程代码位置如下 GTP解包时根据固定的指令恢复视频的场同步信号和视频有效信号这些信号是作为后面图像缓存的重要信号 至此数据进出GTP部分就已经讲完了整个过程的框图我在代码中描述了如下
图像缓存
经常看我博客的老粉应该都知道我做图像缓存的套路是FDMA他的作用是将图像送入DDR中做3帧缓存再读出显示目的是匹配输入输出的时钟差和提高输出视频质量关于FDMA请参考我之前的博客博客地址点击直接前往 需要注意的是为了适应UDP视频传输这里的FDMA已被我修改和以往版本不同具体参考代码
UDP数据组包
实现UDP数据的组包UDP数据发送必须与QT上位机的接受程序一致上位机定义的UDP帧格式包括帧头个UDP数据帧头定义如下 FPGA端的UDP数据组包代码必须与上图的数据帧格式对应否则QT无法解析代码中定义了数据组包状态机以及数据帧如下 另外由于UDP发送是64位数据位宽而图像像素数据是24bit位宽所以必须将UDP数据重新组合以保证像素数据的对齐这部分是整个工程的难点也是所有FPGA做UDP数据传输的难点
UDP协议栈
本UDP协议栈方案需配合Xilinx的Tri Mode Ethernet MAC三速网IP一起使用使用UDP协议栈网表文件虽看不见源码但可正常实现UDP通信该协议栈目前并不开源只提供网表文件但不影响使用该协议栈带有用户接口使得用户无需关心复杂的UDP协议而只需关心简单的用户接口时序即可操作UDP收发非常简单 协议栈架构如下 协议栈性能表现如下 1支持 UDP 接收校验和检验功能暂不支持 UDP 发送校验和生成 2支持 IP 首部校验和的生成和校验同时支持 ICMP 协议中的 PING 功能可接收并响应同一个子网内部设备的 PING 请求 3可自动发起或响应同一个子网内设备的 ARP 请求ARP 收发完全自适应。ARP 表可保存同一个子网内部256 个 IP 和 MAC 地址对 4支持 ARP 超时机制可检测所需发送数据包的目的 IP 地址是否可达 5协议栈发送带宽利用率可达 93%高发送带宽下内部仲裁机制保证 PING 和 ARP 功能不受任何影响 6发送过程不会造成丢包 7提供64bit位宽AXI4-Stream形式的MAC接口可与Xilinx官方的千兆以太网IP核Tri Mode Ethernet MAC以及万兆以太网 IP 核 10 Gigabit Ethernet Subsystem、10 Gigabit Ethernet MAC 配合使用 有了此协议栈我们无需关心复杂的UDP协议的实现了直接调用接口即可使用。。。 本UDP协议栈用户接口发送时序如下 本UDP协议栈用户接口接收时序如下
UDP协议栈数据发送
UDP协议栈具有发送和接收功能但这里仅用到了发送此部分代码架构如下 UDP协议栈代码组我已经做好用户可直接拿去使用 这里对代码中用到的数据缓冲FIFO组做如下解释 由于 UDP IP 协议栈的 AXI-Stream 数据接口位宽为 64bit而 Tri Mode Ethernet MAC 的 AXI-Stream数据接口位宽为 8bit。因此要将 UDP IP 协议栈与 Tri Mode Ethernet MAC 之间通过 AXI-Stream 接口互联需要进行时钟域和数据位宽的转换。实现方案如下图所示 收发路径(本设计只用到了发送)都使用了2个AXI-Stream DATA FIFO通过其中1个FIFO实现异步时钟域的转换1个FIFO实 现数据缓冲和同步Packet mode功能由于千兆速率下Tri Mode Ethernet MAC的AXI-Stream数据接口同步时钟信号为125MHz此时UDP协议栈64bit的AXI-Stream数据接口同步时钟信号应该为125MHz/(64/8)15.625MHz因此异步 AXI-Stream DATA FIFO两端的时钟分别为125MHz(8bit)15.625MHz(64bit)UDP IP协议栈的AXI-Stream接口经过FIFO时钟域转换后还需要进行数据数据位宽转换数据位宽的转换通过AXI4-Stream Data Width Converter完成在接收路径中进行 8bit 到 64bit 的转换在发送路径中进行 64bit 到 8bit 的转换
IP地址、端口号的修改
UDP协议栈留出了IP地址、端口号的修改端口供用户自由修改位置如下
Tri Mode Ethernet MAC介绍以及移植注意事项
本设计调用了Xilinx官方IPTri Mode Ethernet MAC其在代码中的位置如下 可以看到其中泰处于被锁定状态这是我们故意为之目的是根据不同的PHY延时参数而修改其内部代码和内部时序约束代码由于本设计使用的网络PHY为RTL8211所以这里重点介绍使用RTL8211时Tri Mode Ethernet MAC的修改和移植事项当你需要工程移植或者你的vivado版本与我的不一致时Tri Mode Ethernet MAC都需要在vivado中进行升级但由于该IP已被我们人为锁定所以升级和修改需要一些高端操作关于操作方法我专门写了一篇文档已附在资料包里如下
RTL8211
本设计开发板使用的网络PHY为RTL8211工作在延时模式下原理图引出了MDIO但代码中不需要MDIO配置通过上下拉电阻即可使RTL8211工作于延时模式该PHY最高支持千兆且能在10M/100M/1000M之间自动协商但本设计在Tri Mode Ethernet MAC端固定为1000M在资料包中我们提供RTL8211的原理图
QT上位机和源码
我们提供和UDP通信协议相匹配的QT抓图显示上位机及其源代码目录如下 我们的QT目前仅支持1280x720分辨率的视频抓图显示但同时预留了1080P接口对QT开发感兴趣的朋友可以尝试修改代码以适应1080P因为QT在这里只是验证工具不是本工程的重点所以不再过多赘述详情请参考资料包的QT源码位置如下
4、vivado工程1–1路SFP传输
开发板FPGA型号Xilinx–Artix7–xc7a35tfgg484-2 开发环境Vivado2019.1 输入ov5640摄像头或者动态彩条分辨率1280x72060Hz 输出SFP光口/RJ45网口 网络PHYRTL8211延时模式 应用FPGA GTPUDP架构高速接口以太网视频传输1路SFP光口 工程Block Design如下 工程代码架构如下 工程的资源消耗和功耗如下
5、vivado工程2–2路SFP传输
开发板FPGA型号Xilinx–Artix7–xc7a35tfgg484-2 开发环境Vivado2019.1 输入ov5640摄像头或者动态彩条分辨率1280x72060Hz 输出SFP光口/RJ45网口 网络PHYRTL8211延时模式 应用FPGA GTPUDP架构高速接口以太网视频传输2路SFP光口 工程Block Design、工程代码架构、工程的资源消耗和第4章节的“vivado工程1–1路SFP传输”一致
6、工程移植说明
vivado版本不一致处理
1如果你的vivado版本与本工程vivado版本一致则直接打开工程 2如果你的vivado版本低于本工程vivado版本则需要打开工程后点击文件–另存为但此方法并不保险最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本 3如果你的vivado版本高于本工程vivado版本解决如下 打开工程后会发现IP都被锁住了如下 此时需要升级IP操作如下
FPGA型号不一致处理
如果你的FPGA型号与我的不一致则需要更改FPGA型号操作如下 更改FPGA型号后还需要升级IP升级IP的方法前面已经讲述了
其他注意事项
1由于每个板子的DDR不一定完全一样所以MIG IP需要根据你自己的原理图进行配置甚至可以直接删掉我这里原工程的MIG并重新添加IP重新配置 2根据你自己的原理图修改引脚约束在xdc文件中修改即可 3纯FPGA移植到Zynq需要在工程中添加zynq软核
7、上板调试验证并演示
准备工作
需要准备以下物品 1FPGA开发板 2OV5640摄像头没有则选择代码里的动态彩条 3光模块和光纤 4网线 5上位机电脑台式或笔记本 工程11路SFP传输的光纤接法如下 工程22路SFP传输的光纤接法如下 网口连接如下 然后将你的电脑IP地址改为和代码里规定的IP一致当然代码里的IP是可以任意设置的但代码里的IP修改后电脑端的IP也要跟着改我的设置如下
ping一下
在开始测试前我们先ping一下测试UDP是否连通如下
静态演示
ov5640摄像头1280x720输入UDP网络传输QT上位机显示如下 动态彩条1280x720输入UDP网络传输QT上位机显示如下
动态演示
动态视频演示如下 FPGA-GTP-UDP-OV5640 8、福利工程源码获取
福利工程代码的获取 代码太大无法邮箱发送以某度网盘链接方式发送 资料获取方式私或者文章末尾的V名片。 网盘资料如下