• FPGA接收串口指令切换视频输入源,2路输入视频选择1路输出,高度贴近现实项目,提供工程源码


    1、前言

    在实际项目中,经常会用到多路视频输入后选择其中一路作为输出的应用场景,如果你用的是FPGA,那么他的实现就不再像软件那么简单快捷,这里不仅是一个简单的切换问题,而是伴随着时序等复杂综合体的问题;本文使用Xilinx的Kintex-7 FPGA作为平台,该开发板板载1路ov5640摄像头输入接口,1路HDMI输入接口,1路HDMI输出接口;本设计采用项目中常用的低速总线串口作为控制手段,通过串口发送控制指令,控制2路输入视频的切换;本博客详细描述了该设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
    提供完整的、跑通的工程源码和技术支持;
    工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

    免责声明

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

    2、设计思想框图

    这个项目高度贴近现实项目,即FPGA接受串口协议帧,解析出有效数据,然后根据有效数据选择2路输入视频中的1路输出,框图如下:
    在这里插入图片描述

    2路输入视频源

    原视频1:
    OV5640摄像头720P输入,RGB888格式;
    原视频2:
    HDMI视频720P输入,RGB888格式,it6802采集;可以参考我之前的文章it6802采集HDMI视频

    串口控制指令

    外部串口输入及解析:
    在这里插入图片描述
    关于串口指令协议部分,请参考我之前的文章点击直接前往

    视频切换逻辑

    切换逻辑如下:
    板子上电后默认为OV5640输入;
    FPGA收到4个字节十六进制数据01020304时切换为OV5640输入;
    FPGA收到4个字节十六进制数据04030201时切换为HDMI输入;
    外部串口按照自定义的串口协议帧格式发送控制指令给FPGA,并去掉帧头、帧尾、和校验,提取出控制指令,这部分请参考我之前写的文章FPGA解析串口协议帧
    视频选择切换逻辑:
    FPGA根据解析出的串口控制指令选择1路视频给到FDMA缓存做三帧缓存,关于FDMA缓存请参考我之前写得文章FDMA图像三帧缓存方案
    输出HDMI:
    720P输出屏幕显示;

    3、vivado工程详解

    工程介绍:
    开发板FPGA型号:Kintex7–xc7k325tffg676-2;
    输入视频源1:OV5640摄像头720P;
    输入视频源1:HDMI输入720P,it6802解码;
    输出:HDMI输出720P;
    工程BD如下:
    在这里插入图片描述
    在这里插入图片描述
    工程代码架构如下:
    在这里插入图片描述
    视频切换部分核心代码如下:
    在这里插入图片描述

    4、上板调试验证并演示

    上板连接如下:HDMI输入连接笔记本电脑;
    在这里插入图片描述
    打开串口调试工具,提前准备好串口指令如下:
    在这里插入图片描述
    点击指令发送后即可切换视频了,看看演示效果吧:

    视频输入二选一

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

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

  • 相关阅读:
    RabbitMQ图解
    音视频开发岗位,2023年为何持续增加?如何应聘音视频岗位
    springcloudalibaba架构(11):Sentinel规则持久化至Nacos
    消除过期的对象引用
    命令执行漏洞
    Html 后端了解基础
    基于gunicorn+flask+docker模型高并发部署
    连锁超市如何部署远程监控系统
    es查询学习记录
    代码随想录算法训练营第九天|二叉树(截止到合并二叉树)
  • 原文地址:https://blog.csdn.net/qq_41667729/article/details/127708867