FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持

这篇具有很好参考价值的文章主要介绍了FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前言

没玩过GT资源都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。
GT资源是Xilinx系列FPGA的重要卖点,也是做高速接口的基础,不管是PCIE、SATA、MAC等,都需要用到GT资源来做数据高速串化和解串处理,Xilinx不同的FPGA系列拥有不同的GT资源类型,低端的A7由GTP,K7有GTX,V7有GTH,更高端的U+系列还有GTY等,他们的速度越来越高,应用场景也越来越高端。。。

本文使用Xilinx的Virtex7 FPGA的GTH资源做视频传输实验,视频源有两种,分别对应开发者手里有没有摄像头的情况,一种是使用笔记本电脑模拟HDMI视频,silicon9011解码输入的HDMI为GRB后供FPGA使用;如果你得手里没有摄像头,或者你得开发板没有HDMI输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频;视频源的选择通过代码顶层的`define宏定义进行,默认使用HDMI输入作为视频源;调用GTH IP核,用verilog编写视频数据的编解码模块和数据对齐模块,使用开发板硬件上的2个SFP光口实现数据的收发,FPGA接收到SFP发来的高速数据后,用FDMA将数据写进DDR3中缓存,然后调用XDMA去读取DDR3中的数据,再通过XDMA通过PCIE2.0总线将数据发送给电脑主机,电脑端用QT上位机接收并显示图像;本博客提供2套vivado工程源码,2套工程的不同点在于使用1个SFP光口做收发还是两个2个SFP光口做收发;

本博客详细描述了FPGA GTH 8b/10b编解码 PCIE 视频传输的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

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

2、我这里已有的 GT 高速接口解决方案

我的主页有FPGA GT 高速接口专栏,该专栏有 GTP 、 GTX 、 GTH 、 GTY 等GT 资源的视频传输例程和PCIE传输例程,其中 GTP基于A7系列FPGA开发板搭建,GTX基于K7或者ZYNQ系列FPGA开发板搭建,GTH基于KU或者V7系列FPGA开发板搭建,GTY基于KU+系列FPGA开发板搭建;以下是专栏地址:
点击直接前往

3、GTH 全网最细解读

关于GTH 介绍最详细的肯定是Xilinx官方的《ug476_7Series_Transceivers》,我们以此来解读:
《ug476_7Series_Transceivers》的PDF文档我已放在了资料包里,文章末尾有获取方式;
我用到的开发板FPGA型号为Xilinx Virtex7 xc7vx690tffg1761-3;带有8路GTH 资源,其中2路连接到了2个SFP光口,每通道的收发速度为 500 Mb/s 到 10.3125 Gb/s 之间。GTH 收发器支持不同的串行传输接口或协议,比如 PCIE 1.1/2.0 接口、万兆网 XUAI 接口、OC-48、串行 RapidIO 接口、 SATA(Serial ATA) 接口、数字分量串行接口(SDI)等等;

GTH 基本结构

Xilinx 以 Quad 来对串行高速收发器进行分组,四个串行高速收发器和一个 COMMOM(QPLL)组成一个 Quad,每一个串行高速收发器称为一个 Channel(通道),下图为四路 GTH 收发器在Virtex7 FPGA 芯片中的示意图:《ug476_7Series_Transceivers》第24页;
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
GTH 的具体内部逻辑框图如下所示,它由四个收发器通道 GTHE2_CHANNEL原语 和一个GTHE2_COMMON 原语组成。每路GTHE2_CHANNEL包含发送电路 TX 和接收电路 RX,GTHE2_CHANNEL的时钟可以来自于CPLL或者QPLL,可在IP配置界面里配置;《ug476_7Series_Transceivers》第25页;
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
每个 GTHE2_CHANNEL 的逻辑电路如下图所示:《ug476_7Series_Transceivers》第26页;
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
GTHE2_CHANNEL 的发送端和接收端功能是独立的,均由 PMA(Physical Media Attachment,物理媒介适配层)和 PCS(Physical Coding Sublayer,物理编码子层)两个子层组成。其中 PMA 子层包含高速串并转换(Serdes)、预/后加重、接收均衡、时钟发生器及时钟恢复等电路。PCS 子层包含8B/10B 编解码、缓冲区、通道绑定和时钟修正等电路。
这里说多了意义不大,因为没有做过几个大的项目是不会理解这里面的东西的,对于初次使用或者想快速使用者而言,更多的精力应该关注IP核的调用和使用,后面我也会重点将到IP核的调用和使用;

GTH 发送和接收处理流程

首先用户逻辑数据经过 8B/10B 编码后,进入一个发送缓存区(Phase Adjust FIFO),该缓冲区主要是 PMA 子层和 PCS 子层两个时钟域的时钟隔离,解决两者时钟速率匹配和相位差异的问题,最后经过高速 Serdes 进行并串转换(PISO),有必要的话,可以进行预加重(TX Pre-emphasis)、后加重。值得一提的是,如果在 PCB 设计时不慎将 TXP 和 TXN 差分引脚交叉连接,则可以通过极性控制(Polarity)来弥补这个设计错误。接收端和发送端过程相反,相似点较多,这里就不赘述了,需要注意的是 RX 接收端的弹性缓冲区,其具有时钟纠正和通道绑定功能。这里的每一个功能点都可以写一篇论文甚至是一本书,所以这里只需要知道个概念即可,在具体的项目中回具体用到,还是那句话:对于初次使用或者想快速使用者而言,更多的精力应该关注IP核的调用和使用。

GTH 的参考时钟

GTH 模块有两个差分参考时钟输入管脚(MGTREFCLK0P/N 和 MGTREFCLK1P/N),作为 GTH 模块的参考时钟源,用户可以自行选择。一般的A7系列开发板上,都有一路 148.5Mhz 的 GTH 参考时钟连接到 MGTREFCLK0上,作为 GTH 的参考时钟。差分参考时钟通过IBUFDS 模块转换成单端时钟信号进入到 GTHE2_COMMOM 的QPLL或CPLL中,产生 TX 和 RX 电路中所需的时钟频率。TX 和 RX 收发器速度相同的话,TX 电路和 RX 电路可以使用同一个 PLL 产生的时钟,如果 TX 和 RX收发器速度不相同的话,需要使用不同的 PLL 时钟产生的时钟。参考时钟这里Xilinx给出的GT参考例程已经做得很好了,我们调用时其实不用修改;GTH 的参考时钟结构图如下:《ug476_7Series_Transceivers》第31页;
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

GTH 发送接口

《ug476_7Series_Transceivers》的第107到165页详细介绍了发送处理流程,其中大部分内容对于用户而言可以不去深究,因为手册讲的基本都是他自己的设计思想,留给用户可操作的接口并不多,基于此思路,我们重点讲讲GTH 例化时留给用户的发送部分需要用到的接口;
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

用户只需要关心发送接口的时钟和数据即可,GTH 例化模块的这部分接口如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
在代码中我已为你们重新绑定并做到了模块的顶层,代码部分如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

GTH 接收接口

《ug476_7Series_Transceivers》的第167到295页详细介绍了发送处理流程,其中大部分内容对于用户而言可以不去深究,因为手册讲的基本都是他自己的设计思想,留给用户可操作的接口并不多,基于此思路,我们重点讲讲GTH 例化时留给用户的发送部分需要用到的接口;
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
用户只需要关心接收接口的时钟和数据即可,GTH 例化模块的这部分接口如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
在代码中我已为你们重新绑定并做到了模块的顶层,代码部分如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

GTH IP核调用和使用

FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
有别于网上其他博主的教程,我个人喜欢用如下图的共享逻辑:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
这样选择的好处有两个,一是方便DRP变速,二是便于IP核的修改,修改完IP核后直接编译即可,不再需要打开example工程,再复制下面的一堆文件放到自己的工程什么的,玩儿个GTH需要那么复杂么?
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
这里对上图的标号做解释:
1:线速率,根据自己的项目需求来,GTH的范围是0.5到13.1G,由于我的项目是视频传输,所以在GTH的速率范围内均可,本例程选择了5G;
2:参考时钟,这个得根据你的原理图来,可以是80M、125M、148.5M、156.25M等等,我的开发板是156.25M;
4:GTH组的绑定,这个很重要,他的绑定参考依据有两个,已是你的开发板原理图,而是官方的参考资料《ug476_7Series_Transceivers》,官方根据BANK不同将GTH资源分成了多组,由于GT资源是Xilinx系列FPGA的专用资源,占用专用的Bnak,所以引脚也是专用的,那么这些GTH组和引脚是怎么对应的呢?《ug476_7Series_Transceivers》的说明如下:红框内为的我的开发板原理图对应的FPGA引脚;
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
我的板子原理图如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
选择外部数据位宽32bit的8b/10b编解码,如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
下面这里讲的是K码检测:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
这里选择K28.5,也就是所谓的COM码,十六进制为bc,他的作用很多,可以表示空闲乱序符号,也可以表示数据错位标志,这里用来标志数据错位,8b/10b协议对K码的定义如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
下面讲的是时钟矫正,也就是对应GTH内部接收部分的弹性buffer;
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
这里有一个时钟频偏的概念,特别是收发双方时钟不同源时,这里设置的频偏为100ppm,规定每隔5000个数据包发送方发送一个4字节的序列,接收方的弹性buffer会根据这4字节的序列,以及数据在buffer中的位置来决定删除或者插入一个4字节的序列中的一个字节,目的是确保数据从发送端到接收端的稳定性,消除时钟频偏的影响;

4、设计思路框架

本博客提供2套vivado工程源码,2套工程的不同点在于使用1个SFP光口做收发还是两个2个SFP光口做收发;使用1个SFP光口做收发是用光纤连接SFP的RX和TX;使用2个SFP光口做收发是用光纤连接一个SFP的RX和另一个SFP的TX;设计思路框架分别如下:
使用2个SFP光口框图如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
使用1个SFP光口框图如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

视频源选择

视频源有两种,分别对应开发者手里有没有摄像头的情况,如果你的手里有摄像头,或者你的开发板有HDMI输入接口,则使用HDMI输入作为视频输入源,我这里用到的是笔记本模拟HDMI视频,silicon9011解码芯片解码HDMI;如果你得手里没有摄像头,或者你得开发板没有HDMI输入接口,则可使用代码内部生成的动态彩条模拟摄像头视频,动态彩条是移动的画面,完全可以模拟视频;默认使用HDMI输入作为视频源;视频源的选择通过代码顶层的`define宏定义进行;如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
选择逻辑代码部分如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
选择逻辑如下:
当(注释) define COLOR_TEST时,输入源视频是动态彩条;
当(不注释) define COLOR_TEST时,输入源视频是HDMI输入;

silicon9011解码芯片配置及采集

silicon9011解码芯片需要i2c配置才能使用,关于silicon9011解码芯片的配置和使用,请参考我往期的博客,博客地址:点击直接前往
silicon9011解码芯片配置及采集这两部分均用verilog代码模块实现,代码位置如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
代码中配置为1920x1080分辨率;

动态彩条

动态彩条可配置为不同分辨率的视频,视频的边框宽度,动态移动方块的大小,移动速度等都可以参数化配置,我这里配置为辨率1920x1080,动态彩条模块代码位置和顶层接口和例化如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

视频数据组包

由于视频需要在GTH中通过aurora 8b/10b协议收发,所以数据必须进行组包,以适应aurora 8b/10b协议标准;视频数据组包模块代码位置如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
首先,我们将16bit的视频存入FIFO中,存满一行时就从FIFO读出送入GTH发送;在此之前,需要对一帧视频进行编号,也叫作指令,GTH组包时根据固定的指令进行数据发送,GTH解包时根据固定的指令恢复视频的场同步信号和视频有效信号;当一帧视频的场同步信号上升沿到来时,发送一帧视频开始指令 0,当一帧视频的场同步信号下降沿到来时,发送一帧视频开始指令 1,视频消隐期间发送无效数据 0 和无效数据 1,当视频有效信号到来时将每一行视频进行编号,先发送一行视频开始指令,在发送当前的视频行号,当一行视频发送完成后再发送一行视频结束指令,一帧视频发送完成后,先发送一帧视频结束指令 0,再发送一帧视频结束指令 1;至此,一帧视频则发送完成,这个模块不太好理解,所以我在代码里进行了详细的中文注释,需要注意的是,为了防止中文注释的乱序显示,请用notepad++编辑器打开代码;指令定义如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
指令可以任意更改,但最低字节必须为bc;

GTH aurora 8b/10b

这个就是调用GTH做aurora 8b/10b协议的数据编解码,前面已经对GTH做了详细概述,这里不讲;代码位置如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

数据对齐

由于GT资源的aurora 8b/10b数据收发天然有着数据错位的情况,所以需要对接受到的解码数据进行数据对齐处理,数据对齐模块代码位置如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
我定义的 K 码控制字符格式为:XX_XX_XX_BC,所以用一个rx_ctrl 指示数据是否为 K 码 的 COM 符号;
rx_ctrl = 4’b0000 表示 4 字节的数据没有 COM 码;
rx_ctrl = 4’b0001 表示 4 字节的数据中[ 7: 0] 为 COM 码;
rx_ctrl = 4’b0010 表示 4 字节的数据中[15: 8] 为 COM 码;
rx_ctrl = 4’b0100 表示 4 字节的数据中[23:16] 为 COM 码;
rx_ctrl = 4’b1000 表示 4 字节的数据中[31:24] 为 COM 码;
基于此,当接收到有K码时就对数据进行对齐处理,也就是将数据打一拍,和新进来的数据进行错位组合,这是FPGA的基础操作,这里不再赘述;

视频数据解包

数据解包是数据组包的逆过程,代码位置如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
GTH 解包时根据固定的指令恢复视频的场同步信号和视频有效信号;这些信号是作为后面图像缓存的重要信号;
至此,数据进出GTH 部分就已经讲完了,整个过程的框图我在代码中描述了,如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

图像缓存

经常看我博客的老粉应该都知道,我做图像缓存的套路是FDMA,他的作用是将图像送入DDR中做3帧缓存再读出显示,目的是匹配输入输出的时钟差和提高输出视频质量,关于FDMA,请参考我之前的博客,博客地址:点击直接前往
这里需要注意的是,我的开发板的DDR3并不是直接贴片的DDR3颗粒,而是SODIMM接口的DDR3内存条,这种情况下,MIG的配置方式是不一样的,基于此,我在之前专门写过一篇博客介绍FPGA MIG 如何配置SODIMM接口的DDR3内存条的博客,可以到那里看看,请参考我之前的博客,博客地址:点击直接前往

XDMA及其中断模式的使用

本设计使用Xilinx官方的XDMA方案搭建基于Xilinx系列FPGA的PCIE通信平台,使用XDMA的中断模式与QT上位机通讯,即QT上位机通过软件中断的方式实现与FPGA的数据交互;XDMA将从SFP接收到的视频从DDR3中读取出来,通过PCIE总线发送给电脑主机,电脑主机运行QT上位机软件,QT软件通过通断方式接收PCIE发来的图像数据并实时显示图像;

本设计的关键在于我们编写了一个 XDMA中断模块。该模块用来配合驱动处理中断,xdma_inter.v 提供了AXI-LITE 接口,上位机通过访问 user 空间地址读写 xdma_inter.v 的寄存器。该 模块 在 user_irq_req_i 输入的中断位,寄存中断位号,并且输出给 XDMA IP ,当上位机的驱动响应中断的时候,在中断里面写 xdma_inter.v 的寄存器,清除已经处理的中断。DMA中断模块代码位置如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
XDMA配置为X8模式,5G线速率,如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
关于基于XDMA的PCIE应用,请参考我的PCIE通信专栏,专栏地址:点击直接前往

QT上位机及其源码

QT上位机本方案使用 VS2015 + Qt 5.12.10 完成上位机开发软件环境搭建,QT程序调用XDMA官方API采用中断模式实现与FPGA的数据交互,本例程实现的是读写测速,提供QT上位机软件及其源码,路径如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
QT源码部分截图如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

5、vivado工程1–>2路SFP传输

开发板FPGA型号:Xilinx–Virtex7–xc7vx690tffg1761-3;
开发环境:Vivado2019.1;
输入:HDMI或者动态彩条,分辨率1920x1080@60Hz;
输出:PCIE2.0 X8;
应用:2路SFP GTH 8b/10b编解码 PCIE 视频传输;
工程Block Design如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
工程代码架构如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
综合编译完成后的FPGA资源消耗和功耗预估如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

6、vivado工程2–>1路SFP传输

开发板FPGA型号:Xilinx–Virtex7–xc7vx690tffg1761-3;
开发环境:Vivado2019.1;
输入:HDMI或者动态彩条,分辨率1920x1080@60Hz;
输出:PCIE2.0 X8;
应用:1路SFP GTH 8b/10b编解码 PCIE 视频传输;
工程Block Design如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
工程代码架构如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
综合编译完成后的FPGA资源消耗和功耗预估如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

7、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
3:如果你的vivado版本高于本工程vivado版本,解决如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
打开工程后会发现IP都被锁住了,如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
此时需要升级IP,操作如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

8、上板调试验证

光纤连接

工程2:1路SFP传输的光纤接法如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
HDMI输入后的输出效果:
当GTH运行5线速率时输出如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
动态彩条输出效果:
当GTH运行5G线速率时输出如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT

动态演示

动态彩条输出效果演示视频:

V7-GTH-COLOR

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

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT
FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持,菜鸟FPGA GT 高速接口,菜鸟FPGA PCIE通信专题,菜鸟FPGA图像处理专题,fpga开发,GTH,8b/10b,PCIE,XDMA,QT文章来源地址https://www.toymoban.com/news/detail-706039.html

到了这里,关于FPGA GTH aurora 8b/10b编解码 PCIE 视频传输,提供2套工程源码加QT上位机源码和技术支持的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+GTX 8b/10b编解码SFP光口传输,提供2套工程源码和技术支持

    FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+GTX 8b/10b编解码SFP光口传输,提供2套工程源码和技术支持

    FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+GTX 8b/10b编解码SFP光口传输,提供2套工程源码和技术支持 目前FPGA实现SDI视频编解码有两种方案:一是使用专用编解码芯片,比如典型的接收器GS2971,发送器GS2972,优点是简单,比如GS2971接收器直接将SDI解码为并行的YCrCb422,

    2024年03月23日
    浏览(11)
  • FPGA实现SDI视频解码PCIE传输 提供工程源码和QT上位机源码加技术支持

    FPGA实现SDI视频解码PCIE传输 提供工程源码和QT上位机源码加技术支持

    FPGA实现SDI视频编解码目前有两种方案: 一是使用专用编解码芯片,比如典型的接收器GS2971,发送器GS2972,优点是简单,比如GS2971直接将SDI解码为并行的YCRCB,缺点是成本较高,可以百度一下GS2971的价格; 另一种方案是使用FPGA实现编解码,利用FPGA的GTP/GTX资源实现解串,优点

    2024年02月06日
    浏览(32)
  • Zynq实现SDI视频解码PCIE传输 提供工程源码和QT上位机源码加技术支持

    Zynq实现SDI视频解码PCIE传输 提供工程源码和QT上位机源码加技术支持

    PCIE(PCI Express)采用了目前业内流行的点对点串行连接,比起 PCI 以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到 PCI 所不能提供的高带宽,是目前各行业高速接口的优

    2024年02月07日
    浏览(8)
  • FPGA实现MPEG2视频压缩PCIe传输 提供软硬件工程源码和技术支持

    FPGA实现MPEG2视频压缩PCIe传输 提供软硬件工程源码和技术支持

    MJPEG、MPEG2、MPEG4、H264 是流行且兼容性很高的 4 种视频编码格式。其中 MJPEG 对每帧独立进行 JPEG 图象压缩,而不利用帧间相关性,因此压缩效果较差。 MPEG2、MPEG4 和 H264 会进行帧间压缩,但后两者更复杂,效果也更好。MPEG2 虽然比较老 (1994年),但在低压缩率的条件下与 MPEG

    2024年02月08日
    浏览(13)
  • FPGA实现Aurora 8B/10B接口(5)--官方例程学习(Framing接口)

    文章目录 1、IP核定制与官方例程的生成 1.1、第一页配置:物理层以及链路层信息选择

    2024年02月09日
    浏览(9)
  • 8B10B编解码原理与FPGA代码

    8B10B编解码原理与FPGA代码

    8B/10B编码是1983年由IBM公司的Al Widmer和PeterFranaszek所提出的数据传输编码标准,目前已经被广泛应用到高速串行总线,如IEEE1394b、SATA、PCI-Express、Infini-band、FiberChannel、XAUI、RapidIO、USB 3.0的美好。8B/10B编码将待发送的8位数据转换成10位代码组,其目的是保证直流平衡,以及足够

    2024年02月16日
    浏览(8)
  • FPGA使用GTH实现SDI视频回环收发 提供工程源码和技术支持

    FPGA使用GTH实现SDI视频回环收发 提供工程源码和技术支持

    FPGA实现SDI视频编解码目前有两种方案: 一是使用专用编解码芯片,比如典型的接收器GS2971,发送器GS2972,优点是简单,比如GS2971接收器直接将SDI解码为并行的YCRCB,GS2972发送器直接将并行的YCRCB编码为SDI视频,缺点是成本较高,可以百度一下GS2971和GS2972的价格; 另一种方案是

    2024年02月11日
    浏览(10)
  • Aurora8B10B(二) 从手册和仿真学习Aurora8B10B

    Aurora8B10B(二) 从手册和仿真学习Aurora8B10B

    在上篇文章中,主要结合IP配置界面介绍了一下Aurora8B10B,这篇文章将结合文档来学习一下Aurora8B10B内部的一些细节 和 相关的时序吧。文档主要是参考的是这个 pg046-aurora-8b10b-en-us-11.1 在手册上,对Aurora8B10B的内部并没有做非常信息的说明,所以我们也不用纠结的特别深入,大

    2024年02月20日
    浏览(11)
  • FPGA高端项目:基于GTH的 4K HDMI 视频收发例程,提供工程源码和技术支持

    FPGA高端项目:基于GTH的 4K HDMI 视频收发例程,提供工程源码和技术支持

    FPGA高端项目:基于GTH的 4K HDMI 视频收发例程,提供工程源码和技术支持 没玩过GT高速接口和4K 高清视频都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。GT资源是Xilinx系列FPGA的重要卖点,也是做高速接口的基础,不管是PCIE、SATA、MAC等,都需要

    2024年02月04日
    浏览(108)
  • Aurora8B10B(一) 从IP配置界面学习Aurora

    Aurora8B10B(一) 从IP配置界面学习Aurora

    哈喽,大家好,好久没有给大家写FPGA技术的文章,是不是已经忘记我是做FPGA的啦,O(∩_∩)O哈哈~。 这里将会给大家分享我学习到的第一个高速接口Aurora8B10B,有点复杂,但不是特别复杂,对于第一次接触到高速接口的朋友来说,难点在于细节的把控上,由于资料并不是那么

    2024年01月23日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包