健康奶 · 2023年07月18日 · 重庆市

FPGA实现UDP传输视频,提供2套vivado工程源码和接收显示上位机程序

FPGA实现UDP传输视频,提供2套vivado工程源码和接收显示上位机程序

1、前言

FPGA实现UDP传输是FPGA在通信领域的应用之一,只要有UDP收发模块,那么实现UDP传输就只剩下数据组包的事项了;
之前我写过一篇文章介绍过FPGA实现UDP协议的文章FPGA实现UDP协议
后来发现有封装了这个代码的UDP协议栈网表文件,然后添加了Xilinx三速网IP和FIFO的UDP方案,该方案更有利于实现大批量数据传输,整体性能高于之前写的那个FPGA实现UDP协议,但这个方案的UDP协议部分没有源码,但能用,而且还很稳定;关于这部分请看我之前写的文章FPGA实现UDP协议新方案
想要使用这个方案,必须先去Xilinx官网申请三速网IP的licence;关于这部分请参考我之前的文章三速网licence申请

2、设计思路框架

设计框图如下:
在这里插入图片描述

视频源

有两个,对应2套工程,1是OV5640摄像头视频,720P,RGB888;
2是HDMI输入视频,720P,RGB888;

图像缓存

实现将采集到的输入视频缓存到DDR3中再读出来,使用米联客的方案,这部分请参考我之前的文章FDMA图像三帧缓存方案

UDP发送

实现UDP数据的组包,UDP数据发送必须与QT上位机的接受程序一致,上位机定义的UDP帧格式包括帧头个UDP数据,帧头定义如下:
在这里插入图片描述
另外,由于UDP发送是64位数据位宽,而图像像素数据是24bit位宽,所以必须将UDP数据重新组合,以保证像素数据的对齐,这部分是整个工程的难点,也是所有FPGA做UDP数据传输的难点;

UDP协议

这部分就是前面说的FPGA实现UDP协议新方案这里注意一下,我板子的phy芯片是B50610,关于这个芯片FPGA需要掌握的常识请看这篇文章B50610解读

提供的2套工程说明

网盘资料内容如下:
在这里插入图片描述
上位机运行程序只适用于Windows版本,目录在、如下:
在这里插入图片描述

3、vivado工程1详解

工程1:
开发板:Kintex7开发板;
开发环境:vivado2019.1;
输入:OV5640摄像头,720P,RGB888;
输出:RJ45网口;
工程BD部分如下:
在这里插入图片描述
这里的FDMA控制器要做修改,我已经修改并重新封装,感兴趣的可以去看源码,这里多了个输出信号udp_read_en,作用是等待fifo缓存足够数据时才发起UDP传输;另外,输出数据位宽也变为了128位;
代码架构如下:
在这里插入图片描述
关键代码部分如下:
在这里插入图片描述
这部分代码实现了RGB888数据的紧密排列,拿到代码后要好好理解,不然看不懂这个工程;

4、vivado工程2详解

工程2:
开发板:Kintex7开发板;
开发环境:vivado2019.1;
输入:HDMI输入720P,IT6802解码,RGB888;
输出:RJ45网口;
工程BD部分与工程1相同;
代码架构如下:
在这里插入图片描述

5、上板调试验证

上板连接:
在这里插入图片描述
开发板IP地址如下:可根据需求自由修改
在这里插入图片描述
电脑端IP修改如下:
在这里插入图片描述
上位机设置如下:
在这里插入图片描述
显示效果如下:只演示了ov5640的效果,HDMI的自己去输出看看吧兄弟
点击直接查看输出演示视频

6、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以百度网盘链接方式发送,
通过微信获取资料:
微信图片_20230604203730.jpg
网盘资料如下:
在这里插入图片描述

推荐阅读
关注数
12
内容数
112
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息