健康奶 · 4月20日 · 重庆

FPGA实现RGB转LVDS视频发送,基于Xilinx OSERDES2原语

FPGA实现RGB转LVDS视频发送,基于Xilinx OSERDES2原语,提供8套工程源码和技术支持

[video(video-UadCpRjq-1752037973010)(type-bilibili)(url-https://player.bilibili.com/p...)(image-https://i-blog.csdnimg.cn/img...)(title-FPGA实现RGB转LVDS视频发送)]

1、前言

FPGA实现LVDS视频发送现状:

FPGA实现LVDS视频发送目前有两种方案:
一是使用专用编芯片解码,比如TI的DS90C189,优点是简单快捷,缺点是需要额外的芯片,导致PCB布线难度加大,系统成本上升;另一种方案是使用FPGA逻辑资源实现LVDS并串转换,其中7系列FPGA使用OSERDESE2+OBUFDS原语实现并串转换,UltraScale系列FPGA使用OSERDESE3+OBUFDS原语实现并串转换,优点是充分利用了FPGA资源,系统设计简单,成本更低,缺点是实现难度大,对FPGA工程师水平要求较高;本设计使用7系列FPGA的OSERDESE2+OBUFDS原语实现并串转换;

工程概述

本文详细描述了FPGA纯verilog实现LVDS视频发送的设计方案;输入视频为FPGA内部实现的RGB动态彩条,可完美模拟视频源;双通道模式下的RGB视频进入纯verilog代码实现的奇偶场分离模块,实现一帧视频的奇偶场分离;然后奇偶场视频进入纯verilog代码实现的LVDS通道排序模块,根据LVDS显示屏的时序要求,将RGB视频像素分配到8条数据通道中去;单通道模式下的RGB视频则不需要奇偶场分离,直接进入纯verilog代码实现的LVDS通道排序模块,根据LVDS显示屏的时序要求,将RGB视频像素分配到4条数据通道中去;多通道视频在进入纯verilog代码实现的RGB转LVDS模块,使用Xilinx 7系列FPGA的OSERDESE2+OBUFDS原语实现并串转换;最后LVDS视频送入LVDS显示屏显示即可;针对市场主流需求,本博客提供8套工程源码,具体如下:
在这里插入图片描述
现对上述8套工程源码做如下解释,方便读者理解:

工程源码1

开发板FPGA型号为Xilinx--Artix7-35T--xc7a35tfgg484-2;输入视频为FPGA内部实现的RGB动态彩条,分辨率为1024x600@60Hz,可完美模拟视频源;单通道模式下的RGB视频则不需要奇偶场分离,直接进入纯verilog代码实现的LVDS通道排序模块,根据LVDS显示屏的时序要求,将RGB视频像素分配到4条数据通道中去;多通道视频在进入纯verilog代码实现的RGB转LVDS模块,使用Xilinx 7系列FPGA的OSERDESE2+OBUFDS原语实现并串转换,输出LVDS视频为单通道,即由4条数据通道+1条随路时钟通道组成,输出LVDS视频分辨率为1024x600@60Hz;最后LVDS视频送入LVDS显示屏显示即可;工程适用于RGB转LVDS应用;

工程源码2

开发板FPGA型号为Xilinx--Artix7-35T--xc7a35tfgg484-2;输入视频为FPGA内部实现的RGB动态彩条,分辨率为1920x1080@60Hz,可完美模拟视频源;双通道模式下的RGB视频进入纯verilog代码实现的奇偶场分离模块,实现一帧视频的奇偶场分离;然后奇偶场视频进入纯verilog代码实现的LVDS通道排序模块,根据LVDS显示屏的时序要求,将RGB视频像素分配到8条数据通道中去;多通道视频在进入纯verilog代码实现的RGB转LVDS模块,使用Xilinx 7系列FPGA的OSERDESE2+OBUFDS原语实现并串转换,输出LVDS视频为双通道,即由8条数据通道+2条随路时钟通道组成,输出LVDS视频分辨率为1920x1080@60Hz;最后LVDS视频送入LVDS显示屏显示即可;工程适用于RGB转LVDS应用;

工程源码3

开发板FPGA型号为Xilinx--Artix7-100T--xc7a100tfgg484-2;输入视频为FPGA内部实现的RGB动态彩条,分辨率为1024x600@60Hz,可完美模拟视频源;单通道模式下的RGB视频则不需要奇偶场分离,直接进入纯verilog代码实现的LVDS通道排序模块,根据LVDS显示屏的时序要求,将RGB视频像素分配到4条数据通道中去;多通道视频在进入纯verilog代码实现的RGB转LVDS模块,使用Xilinx 7系列FPGA的OSERDESE2+OBUFDS原语实现并串转换,输出LVDS视频为单通道,即由4条数据通道+1条随路时钟通道组成,输出LVDS视频分辨率为1024x600@60Hz;最后LVDS视频送入LVDS显示屏显示即可;工程适用于RGB转LVDS应用;

工程源码4

开发板FPGA型号为Xilinx--Artix7-100T--xc7a100tfgg484-2;输入视频为FPGA内部实现的RGB动态彩条,分辨率为1920x1080@60Hz,可完美模拟视频源;双通道模式下的RGB视频进入纯verilog代码实现的奇偶场分离模块,实现一帧视频的奇偶场分离;然后奇偶场视频进入纯verilog代码实现的LVDS通道排序模块,根据LVDS显示屏的时序要求,将RGB视频像素分配到8条数据通道中去;多通道视频在进入纯verilog代码实现的RGB转LVDS模块,使用Xilinx 7系列FPGA的OSERDESE2+OBUFDS原语实现并串转换,输出LVDS视频为双通道,即由8条数据通道+2条随路时钟通道组成,输出LVDS视频分辨率为1920x1080@60Hz;最后LVDS视频送入LVDS显示屏显示即可;工程适用于RGB转LVDS应用;

工程源码5

开发板FPGA型号为Xilinx-->Kintex7--325T--xc7k325tffg676-2;输入视频为FPGA内部实现的RGB动态彩条,分辨率为1024x600@60Hz,可完美模拟视频源;单通道模式下的RGB视频则不需要奇偶场分离,直接进入纯verilog代码实现的LVDS通道排序模块,根据LVDS显示屏的时序要求,将RGB视频像素分配到4条数据通道中去;多通道视频在进入纯verilog代码实现的RGB转LVDS模块,使用Xilinx 7系列FPGA的OSERDESE2+OBUFDS原语实现并串转换,输出LVDS视频为单通道,即由4条数据通道+1条随路时钟通道组成,输出LVDS视频分辨率为1024x600@60Hz;最后LVDS视频送入LVDS显示屏显示即可;工程适用于RGB转LVDS应用;

工程源码6

开发板FPGA型号为Xilinx-->Kintex7--325T--xc7k325tffg676-2;输入视频为FPGA内部实现的RGB动态彩条,分辨率为1920x1080@60Hz,可完美模拟视频源;双通道模式下的RGB视频进入纯verilog代码实现的奇偶场分离模块,实现一帧视频的奇偶场分离;然后奇偶场视频进入纯verilog代码实现的LVDS通道排序模块,根据LVDS显示屏的时序要求,将RGB视频像素分配到8条数据通道中去;多通道视频在进入纯verilog代码实现的RGB转LVDS模块,使用Xilinx 7系列FPGA的OSERDESE2+OBUFDS原语实现并串转换,输出LVDS视频为双通道,即由8条数据通道+2条随路时钟通道组成,输出LVDS视频分辨率为1920x1080@60Hz;最后LVDS视频送入LVDS显示屏显示即可;工程适用于RGB转LVDS应用;

工程源码7

开发板FPGA型号为Xilinx-->Zynq7100--xc7z100ffg900-2;输入视频为FPGA内部实现的RGB动态彩条,分辨率为1024x600@60Hz,可完美模拟视频源;单通道模式下的RGB视频则不需要奇偶场分离,直接进入纯verilog代码实现的LVDS通道排序模块,根据LVDS显示屏的时序要求,将RGB视频像素分配到4条数据通道中去;多通道视频在进入纯verilog代码实现的RGB转LVDS模块,使用Xilinx 7系列FPGA的OSERDESE2+OBUFDS原语实现并串转换,输出LVDS视频为单通道,即由4条数据通道+1条随路时钟通道组成,输出LVDS视频分辨率为1024x600@60Hz;最后LVDS视频送入LVDS显示屏显示即可;工程适用于RGB转LVDS应用;

工程源码8

开发板FPGA型号为Xilinx-->Zynq7100--xc7z100ffg900-2;输入视频为FPGA内部实现的RGB动态彩条,分辨率为1920x1080@60Hz,可完美模拟视频源;双通道模式下的RGB视频进入纯verilog代码实现的奇偶场分离模块,实现一帧视频的奇偶场分离;然后奇偶场视频进入纯verilog代码实现的LVDS通道排序模块,根据LVDS显示屏的时序要求,将RGB视频像素分配到8条数据通道中去;多通道视频在进入纯verilog代码实现的RGB转LVDS模块,使用Xilinx 7系列FPGA的OSERDESE2+OBUFDS原语实现并串转换,输出LVDS视频为双通道,即由8条数据通道+2条随路时钟通道组成,输出LVDS视频分辨率为1920x1080@60Hz;最后LVDS视频送入LVDS显示屏显示即可;工程适用于RGB转LVDS应用;

本文详细描述了FPGA实现RGB转LVDS视频发送的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的高速接口领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

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

2、相关方案推荐

我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目

其实一直有朋友反馈,说我的博客文章太多了,乱花渐欲迷人,自己看得一头雾水,不方便快速定位找到自己想要的项目,所以本博文置顶,列出我目前已有的所有项目,并给出总目录,每个项目的文章链接,当然,本博文实时更新。。。以下是博客地址:
点击直接前往

FPGA实现LVDS视频收发方案

我的FPGA-LVDS专栏有很多FPGA的LVDS视频编解码方案,专栏链接如下:欢迎前往查看:
点击直接前往

3、工程详细设计方案

工程设计原理框图

工程设计原理框图如下:
在这里插入图片描述

FPGA动态彩条

FPGA动态彩条由纯verilog代码实现,可完美模拟视频源,有别于网上的静态彩条,FPGA动态彩条完全是运动的,对于验证而言更有说服力,FPGA动态彩条支持多种分辨率,背景、边框、颜色、运动方块大小等均可通过参数配置,FPGA动态彩条代码架构如此下:
在这里插入图片描述
FPGA动态彩条顶层接口如下:
在这里插入图片描述

奇偶场分离

奇偶场分离模块在双通道LVDS工程中才有,双通道LVDS将RGB视频分为奇偶场发送,奇偶场是模拟视频中的概念,对于入门较晚的兄弟而言比较陌生,这块可以在CSDN或知乎等平台搜索学习一下;奇偶场分离模块就是将1920*1080@60Hz的视频分为奇场和偶场偶;奇偶场分离模块码架构如此下:
在这里插入图片描述
奇偶场分离顶层接口如下:
在这里插入图片描述

LVDS通道排序

然后奇偶场视频进入纯verilog代码实现的LVDS通道排序模块,根据LVDS显示屏的时序要求,将RGB视频像素分配到8条数据通道中去;不同的LVDS屏幕可能有不同的通道排序,以我手里的LVDS屏幕为例,根据屏幕手册,LVDS通道排序要求如下:
在这里插入图片描述
此外,为了适应8bit和10bit模式,我们在LVDS通道排序模块中做了适配,LVDS通道排序顶层接口如下:
在这里插入图片描述
本设计使用8bit模式,LVDS通道排序模块码架构如此下:
在这里插入图片描述

LVDS并串转换

多通道视频在进入纯verilog代码实现的RGB转LVDS模块,使用Xilinx 7系列FPGA的OSERDESE2+OBUFDS原语实现并串转换,OSERDESE2原语实现RGB并行数据转换串行数据,OBUFDS原语实现单端串行数据转换差分串行数据;采用7bit,SDR模式;LVDS并串转换模块码架构如此下:
在这里插入图片描述
LVDS并串转换顶层接口如下:
在这里插入图片描述
!!!注意
!!!注意
单通道LVDS视频输出模式下,LVDS由4条数据通道+1条随路时钟通道组成;
双通道LVDS视频输出模式下,LVDS由8条数据通道+2条随路时钟通道组成;

LVDS显示屏

LVDS显示屏由本博主提供,目前有两款,一款为单通道LVDS模式,最高分辨率支持1204x600@60Hz;另一款为双通道LVDS模式,最高分辨率支持1920x1080@60Hz,LVDS显示屏为8bit SDR模式;

工程源码架构

提供8套工程源码,以工程源码2为例,综合后的工程源码架构如下:
在这里插入图片描述
本博主发布的工程均已编译完成,且时序收敛,无时序违约,如下:
在这里插入图片描述

4、Vivado工程详解1详解:Artix7-35T,单通道LVDS版本

开发板FPGA型号:Xilinx--Artix7--xc7a35tfgg484-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA动态彩条,分辨率1024x600@60Hz;
输出:LVDS,RTL逻辑编码,分辨率为1024x600@60Hz;
LVDS视频编码方案:Xilinx官方OSERDES2+OBUFDS原语方案;
LVDS差分对:4对差分数据+1对随路差分时钟;
实现功能:FPGA实现RGB转LVDS视频发送;
工程作用:此工程目的是让读者掌握FPGA实现RGB转LVDS视频发送的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

5、Vivado工程详解2详解:Artix7-35T,双通道LVDS版本

开发板FPGA型号:Xilinx--Artix7--xc7a35tfgg484-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA动态彩条,分辨率1920x1080@60Hz;
输出:LVDS,RTL逻辑编码,分辨率为1920x1080@60Hz;
LVDS视频编码方案:Xilinx官方OSERDES2+OBUFDS原语方案;
LVDS差分对:8对差分数据+2对随路差分时钟;
实现功能:FPGA实现RGB转LVDS视频发送;
工程作用:此工程目的是让读者掌握FPGA实现RGB转LVDS视频发送的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

6、Vivado工程详解3详解:Artix7-100T,单通道LVDS版本

开发板FPGA型号:Xilinx--Artix7--xc7a100tfgg484-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA动态彩条,分辨率1024x600@60Hz;
输出:LVDS,RTL逻辑编码,分辨率为1024x600@60Hz;
LVDS视频编码方案:Xilinx官方OSERDES2+OBUFDS原语方案;
LVDS差分对:4对差分数据+1对随路差分时钟;
实现功能:FPGA实现RGB转LVDS视频发送;
工程作用:此工程目的是让读者掌握FPGA实现RGB转LVDS视频发送的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

7、Vivado工程详解4详解:Artix7-100T,双通道LVDS版本

开发板FPGA型号:Xilinx--Artix7--xc7a100tfgg484-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA动态彩条,分辨率1920x1080@60Hz;
输出:LVDS,RTL逻辑编码,分辨率为1920x1080@60Hz;
LVDS视频编码方案:Xilinx官方OSERDES2+OBUFDS原语方案;
LVDS差分对:8对差分数据+2对随路差分时钟;
实现功能:FPGA实现RGB转LVDS视频发送;
工程作用:此工程目的是让读者掌握FPGA实现RGB转LVDS视频发送的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

8、Vivado工程详解5详解:Kintex7-325T,单通道LVDS版本

开发板FPGA型号:Xilinx-->Kintex7--325T--xc7k325tffg676-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA动态彩条,分辨率1024x600@60Hz;
输出:LVDS,RTL逻辑编码,分辨率为1024x600@60Hz;
LVDS视频编码方案:Xilinx官方OSERDES2+OBUFDS原语方案;
LVDS差分对:4对差分数据+1对随路差分时钟;
实现功能:FPGA实现RGB转LVDS视频发送;
工程作用:此工程目的是让读者掌握FPGA实现RGB转LVDS视频发送的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

9、Vivado工程详解6详解:Kintex7-325T,双通道LVDS版本

开发板FPGA型号:Xilinx-->Kintex7--325T--xc7k325tffg676-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA动态彩条,分辨率1920x1080@60Hz;
输出:LVDS,RTL逻辑编码,分辨率为1920x1080@60Hz;
LVDS视频编码方案:Xilinx官方OSERDES2+OBUFDS原语方案;
LVDS差分对:8对差分数据+2对随路差分时钟;
实现功能:FPGA实现RGB转LVDS视频发送;
工程作用:此工程目的是让读者掌握FPGA实现RGB转LVDS视频发送的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

10、Vivado工程详解7详解:Zynq7100,单通道LVDS版本

开发板FPGA型号:Xilinx-->Zynq7100--xc7z100ffg900-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA动态彩条,分辨率1024x600@60Hz;
输出:LVDS,RTL逻辑编码,分辨率为1024x600@60Hz;
LVDS视频编码方案:Xilinx官方OSERDES2+OBUFDS原语方案;
LVDS差分对:4对差分数据+1对随路差分时钟;
实现功能:FPGA实现RGB转LVDS视频发送;
工程作用:此工程目的是让读者掌握FPGA实现RGB转LVDS视频发送的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

11、Vivado工程详解8详解:Zynq7100,双通道LVDS版本

开发板FPGA型号:Xilinx-->Zynq7100--xc7z100ffg900-2;
FPGA开发环境:Vivado2019.1;
输入:FPGA动态彩条,分辨率1920x1080@60Hz;
输出:LVDS,RTL逻辑编码,分辨率为1920x1080@60Hz;
LVDS视频编码方案:Xilinx官方OSERDES2+OBUFDS原语方案;
LVDS差分对:8对差分数据+2对随路差分时钟;
实现功能:FPGA实现RGB转LVDS视频发送;
工程作用:此工程目的是让读者掌握FPGA实现RGB转LVDS视频发送的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

12、工程移植说明

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软核;

13、上板调试验证

准备工作

需要准备的器材如下:
FPGA开发板,可以找本博主提供;
LVDS显示屏,可以找本博主提供;

FPGA实现LVDS视频输出效果演示

FPGA实现LVDS视频输出效果演示如下:
[video(video-UadCpRjq-1752037973010)(type-bilibili)(url-https://player.bilibili.com/p...)(image-https://i-blog.csdnimg.cn/img...)(title-FPGA实现RGB转LVDS视频发送)]

14、工程代码获取

福利:工程代码的获取
代码太大,无法邮箱发送,以百度网盘链接方式发送,
通过微信获取资料:微信号 hllsq22
微信.jpg
还可以关注我的微信公众号:FPGA教父
公众号.jpg
还可以关注我的CSDN:9527华安
24ee0bda9f366427d90b421a90955f18.jpg
还可以关注我的知乎:FPFA个人练习生
1b8fe79dc52f823e850278530e2be57f.png
还可以关注我的B站:ikun-FPFA
57c5c2d92bcb215635cc4ff7888126d2.jpg
还可以关注我的小红书:FPFA制作人
f18832cbb92bbdbc7a2153a5ae279cd8.jpg
还可以关注我的微信视频号:FPGA教父
ff3609d881d70edc282a31565a9b120f.jpg
网盘资料如下:
在这里插入图片描述
此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务:
在这里插入图片描述

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