首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐
2025年6月19日 星期四 0:44am

FPGA实现UDP视频传输,带抓拍和录像功能,纯verilog代码 提供工程源码和技术支持

  • 25-03-04 14:41
  • 2771
  • 5451
blog.csdn.net

目录

  • 1、前言
    • 免责声明
  • 2、我这里已有的UDP方案
  • 3、UDP详细设计方案
  • 4、本UDP视频传输的优势
  • 5、UDP视频传输详细设计方案
    • ov5640 寄存器配置
    • UDP发送设计
  • 6、vivado工程详解
  • 7、上板调试验证并演示
  • 8、验证演示视频
  • 9、福利:工程代码的获取

1、前言

目前网上的fpga实现udp基本生态如下:
1:verilog编写的udp收发器,但不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代码谁敢用?
2:带ping功能的udp收发器,代码优秀也好用,但基本不开源,不会提供源码给你,这样的代码也有不足,那就是出了问题不知道怎么排查,毕竟你没有源码,无可奈何;
3:使用了Xilinx的三速网IP实现,这样的代码也很优秀,但还是那个问题,没有源码,且三速网IP需要licence,官方提供的licence有效期只有120天,其实三速网IP仅仅实现了rgmii到gmii再到axis的转换,完全可以不用这个ip;
本设计使用Micrel公司的KSZ9031RNX作为网络PHY芯片,使用verilog代码设计UDP协议,并带有用户接口,使得用户无需关心复杂的UDP协议而只需关心简单的用户接口时序即可操作UDP收发,非常简单,通过一个fifo实现UDP数据的回环收发,并在电脑端使用网络调试助手进行UDP收发验证;

本设计使用UDP传输视频,通过配置 OV5640摄像头的寄存器实现 JPEG 视频压缩的图像输出,以太网传输用 Ethernet UDP 通信协议,达到视频图像数据的快速传输。上位机通过接收网口的 UDP 数据包,提取 JPEG 的图像数据显示在电脑上,文章末尾有演示视频,请耐心看到最后。

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、我这里已有的UDP方案

目前我这里有如下几种UDP方案和应用实例:
我的博客主页有个FPGA以太网通信专栏,专栏是免费的,里面有很多FPGA实现的UDP应用,对网络通信有需求的兄弟可以去看看:直接点击前往

3、UDP详细设计方案

本实验以千兆以太网 RGMII 通信为例来设计 verilog 程序,UDP分为两部分,分别为发送和接收,实现了 动态ARP,UDP,Ping 和10/100/1000M网速自动协商仲裁功能。以下为原理实现框图:详细的设计请参考我之前写的文章:直接点击前往
在这里插入图片描述

4、本UDP视频传输的优势

相较于其他UDP视频传输方案,本方案具有以下优势:
1、使用ov5640摄像头作为输入源,价格便宜,接口简单;
2、使用ov5640的jpg输出模式,这点很新颖,可以学习一下ov5640的jpg输出模式的配置;
3、图像输出几乎无延时,没有将图像缓存DDR3,仅进出一个FIFO就送UDP发出去了;
3、图像画质好,由于采用ov5640的jpg输出模式,输出画质更好,可以在文章末尾有演示视频查看;

5、UDP视频传输详细设计方案

本设计使用UDP传输视频,通过配置 OV5640摄像头的寄存器实现 JPEG 视频压缩的图像输出,以太网传输用 Ethernet UDP 通信协议,达到视频图像数据的快速传输。上位机通过接收网口的 UDP 数据包,提取 JPEG 的图像数据显示在电脑上,在 FPGA 内部使用一个FIFO 模块用于存储摄像头 OV5640 采集的 JPG 图像数据,当 FIFO 数据的数量达到一个 UDP 数据包的长度时,触发一次 UDP 的数据包发送。实现的逻辑框图如下:
在这里插入图片描述

ov5640 寄存器配置

首先对 ov5640 寄存器配置做了修改,在寄存器表里,将分辨率改成了 800*600,并且选择了JPEG 模式,配置详情请参考代码练习。。。需要注意的是,JPEG 格式输出的视频图像的每一帧的数据大小是不一样的,JPEG 输出的数据模式有 6 种,我们程序中设置为 JPEG 模式 2,即每行的长度是固定的,每帧会有不同的行数,最后一行的数据没有达到固定的长度的话,会补充 dummy 数据。具体大家看一下OV5640 的 datasheet。

UDP发送设计

在例化 mac_test.v 时,将 UDP 发送数据长度设置为 1024 字节。并对以太网做了上电复位处理,利用 power_on_rst.v 上电延迟 100ms 复位以太网模块。在 udp_tx.v 文件中,去掉了 UDP 数据的校验和计算,节省时间。在 mac_test.v 的状态机中,加入了 CHECK_FIFO 状态,由于以太网首部发送也要一定时间,因此提前判断 fifo 中的可读数据数量是否大于 1000,启动 UDP 数据发送。
需要注意的是,由于上位机的IP是写死的,所以FPGA代码里的UDP模块的本机和目的IP都不能修改,只需要将你的电脑网卡IP地址修改为192.168.0.3即可。

6、vivado工程详解

工程介绍:
开发板:Xilinx Artix7开发板;
开发环境:vivado2019.1;
网络PHY:KSZ9031;
输入:OV5640摄像头,800*600分辨率,jpeg模式;
输出:UDP-RJ45网口;
工程代码架构如下:
在这里插入图片描述
FPGA资源消耗和功耗预估如下:
在这里插入图片描述

7、上板调试验证并演示

注意!!!
注意!!!
注意!!!
由于上位机的IP是写死的,所以FPGA代码里的UDP模块的本机和目的IP都不能修改,只需要将你的电脑网卡IP地址修改为192.168.0.3即可。
在这里插入图片描述
板子上电下载bit后,先测试ping功能,效果看视频演示。。。
再打开上位机软件测试接受到的视频画质,效果看视频演示。。。
上位机软件和工程代码打包在一起,如下:
在这里插入图片描述
然后鼠标点住上位机软件的图像区不放,即可完成视频录像和抓拍图片,文件保存位置如下:
在这里插入图片描述
可以点击去查看,如下:
在这里插入图片描述
在这里插入图片描述

8、验证演示视频

FPGA-自协商-UDP-ov5640

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

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述
在这里插入图片描述

文章知识点与官方知识档案匹配,可进一步学习相关知识
网络技能树首页概览43744 人正在系统学习中
源码技术支持加我微信哦
微信名片
注:本文转载自blog.csdn.net的9527华安的文章"https://blog.csdn.net/qq_41667729/article/details/129941343"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top