• 【紫光同创国产FPGA教程】【第二十七章】千兆以太网视频传输实验


    本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处()。

    适用于板卡型号:

    PGL22G

    1. 简介

    本实验将实现视频图像的以太网传输,也相当于用 FPGA 来实现网络摄像头的功能。这里采用黑金的 500 万摄像头 AN5642 模组,通过配置 OV5640 的寄存器实现 JPEG 视频压缩的图像输出。以太网传输用 Ethernet UDP 通信协议,达到视频图像数据的快速传输。上位机通过接收网口的 UDP 数据包,提取 JPEG 的图像数据显示在电脑上。 在 FPGA 内部,我们使用一个 FIFO 模块用于存储摄像头 OV5640 采集的 JPG 图像数据,当 FIFO 数据的数量达到一个 UDP 数据包的长度时,触发一次 UDP 的数据包发送。实现的逻辑框图如下:

    注意:在做此实验之前,首先要学习之前的例程,OV5640的摄像头显示例程以及千兆以太网传输实验。如果此实验遇到问题,建议温习前面的例程。

    2. 程序设计

    2.1 摄像头参数设置

    我们对ov5640寄存器配置做了修改,在寄存器表里,将分辨率改成了800*600。并且选择了JPEG模式。

    这里需要注意,JPEG 格式输出的视频图像的每一帧的数据大小是不一样的,JPEG 输出的

    数据模式有 6 种,我们程序中设置为 JPEG 模式 2,即每行的长度是固定的,每帧会有不同的

    行数,最后一行的数据没有达到固定的长度的话,会补充 dummy 数据。具体大家看一下

    OV5640 的 datasheet。

    每行的长度由以下的寄存器配置,这里我们程序中并没有设置,默认参数为 0x400,也就

    是每行的数据长度为 1024.

    2.2 以太网设置

    在例化mac_test.v时,将UDP发送数据长度设置为1024字节。并对以太网做了上电复位处理,利用power_on_rst.v上电延迟100ms复位以太网模块。在udp_tx.v文件中,去掉了UDP数据的校验和计算,节省时间。在mac_test.v的状态机中,加入了CHECK_FIFO状态,由于以太网首部发送也要一定时间,因此提前判断fifo中的可读数据数量是否大于1000,启动UDP数据发送。

    3. 下载和实验

    注意:在做实验之前一定要确保OV5640摄像头显示没有问题,可结合OV5640摄像头显示例程确认。

    3.1 开发板连接

    1)将AN5642摄像头模组插入开发板,模块依次接入AX7035/AX050的扩展口J9、J8。保证1脚对齐,1脚在焊盘形状和其他引脚是有明显区别的,是方形的;

    2)使用网线连接PC和开发板的以太网口,这里的PC网卡需要千兆网卡和千兆网线,切换摄像头视频时需按KEY2键。

    3.2 PC端IP设置

    设置PC端的IP地址为192.168.0.3,如下图:

    3.3 程序下载

    下载FPGA程序,在打开上位机软件之前,首先检查网络是否连通,可在CMD窗口

    ping 192.168.0.2查看连通情况。

    3.4 上位机软件

    打开“CD7_软件工具及驱动以太网视频传输软件”文件夹中的video.exe

    之后软件就可以显示图像,效果如下:

    3.5 视频截图

    在软件显示窗口,点击鼠标左键按住不放,可以保存图片及视频,松开即可停止保存。出现jpg_save文件,图片和视频保存在里面。

     

    打开文件夹,可以看到保存的图片和视频,注意要控制保存的时间,否则会很占用磁盘空间。每一张图片表示一帧图像。

    4. 常见问题

    4.1 等待板卡连接

    在打开软件后,如果出现以下情况,可能原因是摄像头或网线没有插好,请检查摄像头及网线连接情况。之后重新打开软件。

    4.2 数据异常

    如果出现以下情况,可能原因是摄像头配置不正常,有数据发送,但上位机无法解析,建议先用摄像头显示例程检查摄像头是否能正常使用或者重新插好摄像头。之后重新打开软件。

    4.3 IP地址未配置

    如果出现以下情况,表示没有设置IP地址,请确认设置好IP后重新打开软件。

    5. 总结

    到此为止,以太网传输视频的实验就做完了,程序比较简单,仅在原有的实验基础上做了扩展,理解起来相对容易些。

  • 相关阅读:
    依赖查找与依赖注入
    实时插入排序算法
    Phantomjs实现后端将URL转换为图片
    唯一约束 UNIQUE KEY
    基于队列模型编写一个入岗检查站
    通过实例深入理解监听器
    函数式接口
    Linux学习6-安装Python3.6
    Jenkins构建项目后发送钉钉消息推送
    Docker学习之安装tomcat环境
  • 原文地址:https://www.cnblogs.com/alinx/p/14631065.html
Copyright © 2020-2023  润新知