深圳住 建设局网站,西安seo代运营,广州机械加工,过年做哪些网站能致富目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本博已有的FPGA驱动USB通信方案FPGA基于GS2971的SDI视频解码方案FPGA基于FT601的USB3.0视频传输方案 3、详细设计方案设计原理框图SDI 相机GS2971-SDI解码芯片解读BT1120转RGB888图像缓存FT601-USB3.0芯… 目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本博已有的FPGA驱动USB通信方案FPGA基于GS2971的SDI视频解码方案FPGA基于FT601的USB3.0视频传输方案 3、详细设计方案设计原理框图SDI 相机GS2971-SDI解码芯片解读BT1120转RGB888图像缓存FT601-USB3.0芯片解读FT601-USB3.0读写逻辑QT上位机工程源码架构 4、工程源码1详解--Kintex7--35T版本5、工程源码2详解--Zynq7100版本6、工程源码3详解--KU040版本7、工程源码4详解--KU060版本8、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项 9、上板调试验证准备工作FT601驱动安装输出视频演示 10、福利工程代码的获取 FPGA实现SDI视频接收转USB3.0传输GS2971FT601方案提供4套工程源码和QT上位机源码 1、前言
目前FPGA实现SDI视频编解码有两种方案一是使用专用编解码芯片比如典型的接收器GS2971发送器GS2972优点是简单比如GS2971接收器直接将SDI解码为并行的YCrCb422GS2972发送器直接将并行的YCrCb422编码为SDI视频缺点是成本较高可以百度一下GS2971和GS2972的价格另一种方案是使用FPGA逻辑资源部实现SDI编解码利用Xilinx系列FPGA的GTP/GTX资源实现解串利用Xilinx系列FPGA的SMPTE SDI资源实现SDI编解码优点是合理利用了FPGA资源GTP/GTX资源不用白不用缺点是操作难度大一些对FPGA开发者的技术水平要求较高。有意思的是这两种方案在本博这里都有对应的解决方案包括硬件的FPGA开发板、工程源码等等。本设计采用GS2971芯片方案实现SDI视频解码
目前USB3.0的实现方案很多但就简单好用的角度而言FT601应该是最佳方案因为它电路设计简单操作时序简单软件驱动简单官方甚至提供了包括FPGA驱动在内的丰富的驱动源码和测试软件本设计旨在普及传播FT601芯片在FPGA领域实现USB3.0通信应用包括FT601芯片解读、FT601芯片读写时序分析、FT601芯片硬件电路参考设计、FT601与PC端的QT上位机通信包括FT601测速试验、FT601视频采集传输试验、FT601视频采集图像处理后传输试验等等本设计采用FT601芯片方案实现USB3.0图传方案
工程概述
本设计基于GS2971FT601架构实现FPGA的SDI视频接收转USB3.0传输输入源为一个3G-SDI相机也可以使用SD-SDI或者DH-SDI相机因为本设计是三种SDI视频自适应的同轴的SDI视频通过同轴线连接到GS2971转接板GS2971解码芯片将同轴的串行的SDI视频解码为并行的BT1120格式视频然后使用纯Verilog代码实现的BT1120转RGB888模块实现BT1120视频到RGB888的转换然后使用本博常用的FDMA图像缓存架构实现图像3帧缓存缓存介质为板载的DDR3/4然后由FT601读写逻辑控制视频从DDR3/4中读出FT601使用同步FIFO-245模式工作模式通过GPIO0/GPIO1引脚配置根据FT601读写时序设计了读写状态机在PC端QT上位机控制下FT601读写逻辑产生从DDR3/4中读取视频的控制信号并将读出的视频通过FT601写数据总线发送到板载的FT601芯片FPGA开发板通过USB3.0数据线连接至PC端主机PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频由此形成外接3G-SDI相机FPGAFT601QT上位机的珠联璧合针对市面上主流的FPGA本博客提供4套工程源码具体如下 现对上述4套工程源码做如下解释方便读者理解
工程源码1
开发板FPGA型号为Xilinx–Kintex7–35T–xc7k325tffg900-2输入源为3G-SDI相机分辨率为1920x108060Hz也可以使用SD-SDI或者DH-SDI相机因为本设计是三种SDI视频自适应的同轴的SDI视频通过同轴线连接到GS2971转接板GS2971解码芯片将同轴的串行的SDI视频解码为并行的BT1120格式视频然后使用纯Verilog代码实现的BT1120转RGB888模块实现BT1120视频到RGB888的转换然后使用本博常用的FDMA图像缓存架构实现图像3帧缓存缓存介质为板载的DDR3然后由FT601读写逻辑控制视频从DDR3中读出FT601使用同步FIFO-245模式工作模式通过GPIO0/GPIO1引脚配置根据FT601读写时序设计了读写状态机在PC端QT上位机控制下FT601读写逻辑产生从DDR3中读取视频的控制信号并将读出的视频通过FT601写数据总线发送到板载的FT601芯片FPGA开发板通过USB3.0数据线连接至PC端主机PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频由此形成外接3G-SDI相机FPGAFT601QT上位机的珠联璧合Vivado工程和QT工程均提供源码本工程适用于FPGA实现SDI视频接收转USB3.0传输
工程源码2
开发板FPGA型号为Xilinx–Zynq7100–xc7z100ffg900-2输入源为3G-SDI相机分辨率为1920x108060Hz也可以使用SD-SDI或者DH-SDI相机因为本设计是三种SDI视频自适应的同轴的SDI视频通过同轴线连接到GS2971转接板GS2971解码芯片将同轴的串行的SDI视频解码为并行的BT1120格式视频然后使用纯Verilog代码实现的BT1120转RGB888模块实现BT1120视频到RGB888的转换然后使用本博常用的FDMA图像缓存架构实现图像3帧缓存缓存介质为板载的DDR3然后由FT601读写逻辑控制视频从DDR3中读出FT601使用同步FIFO-245模式工作模式通过GPIO0/GPIO1引脚配置根据FT601读写时序设计了读写状态机在PC端QT上位机控制下FT601读写逻辑产生从DDR3中读取视频的控制信号并将读出的视频通过FT601写数据总线发送到板载的FT601芯片FPGA开发板通过USB3.0数据线连接至PC端主机PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频由此形成外接3G-SDI相机FPGAFT601QT上位机的珠联璧合Vivado工程和QT工程均提供源码本工程适用于FPGA实现SDI视频接收转USB3.0传输
工程源码3
开发板FPGA型号为Xilinx–Kintex UltraScale–xcku040-ffva1156-2-i输入源为3G-SDI相机分辨率为1920x108060Hz也可以使用SD-SDI或者DH-SDI相机因为本设计是三种SDI视频自适应的同轴的SDI视频通过同轴线连接到GS2971转接板GS2971解码芯片将同轴的串行的SDI视频解码为并行的BT1120格式视频然后使用纯Verilog代码实现的BT1120转RGB888模块实现BT1120视频到RGB888的转换然后使用本博常用的FDMA图像缓存架构实现图像3帧缓存缓存介质为板载的DDR4然后由FT601读写逻辑控制视频从DDR4中读出FT601使用同步FIFO-245模式工作模式通过GPIO0/GPIO1引脚配置根据FT601读写时序设计了读写状态机在PC端QT上位机控制下FT601读写逻辑产生从DDR4中读取视频的控制信号并将读出的视频通过FT601写数据总线发送到板载的FT601芯片FPGA开发板通过USB3.0数据线连接至PC端主机PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频由此形成外接3G-SDI相机FPGAFT601QT上位机的珠联璧合Vivado工程和QT工程均提供源码本工程适用于FPGA实现SDI视频接收转USB3.0传输
工程源码4
开发板FPGA型号为Xilinx–Kintex UltraScale–xcku060-ffva1156-2-i输入源为3G-SDI相机分辨率为1920x108060Hz也可以使用SD-SDI或者DH-SDI相机因为本设计是三种SDI视频自适应的同轴的SDI视频通过同轴线连接到GS2971转接板GS2971解码芯片将同轴的串行的SDI视频解码为并行的BT1120格式视频然后使用纯Verilog代码实现的BT1120转RGB888模块实现BT1120视频到RGB888的转换然后使用本博常用的FDMA图像缓存架构实现图像3帧缓存缓存介质为板载的DDR4然后由FT601读写逻辑控制视频从DDR4中读出FT601使用同步FIFO-245模式工作模式通过GPIO0/GPIO1引脚配置根据FT601读写时序设计了读写状态机在PC端QT上位机控制下FT601读写逻辑产生从DDR4中读取视频的控制信号并将读出的视频通过FT601写数据总线发送到板载的FT601芯片FPGA开发板通过USB3.0数据线连接至PC端主机PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频由此形成外接3G-SDI相机FPGAFT601QT上位机的珠联璧合Vivado工程和QT工程均提供源码本工程适用于FPGA实现SDI视频接收转USB3.0传输
免责声明
本工程及其源码即有自己写的一部分也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等)若大佬们觉得有所冒犯请私信批评教育基于此本工程及其源码仅限于读者或粉丝个人学习和研究禁止用于商业用途若由于读者或粉丝自身原因用于商业用途所导致的法律问题与本博客及博主无关请谨慎使用。。。
2、相关方案推荐
本博已有的 SDI 编解码方案
我的博客主页开设有SDI视频专栏里面全是FPGA编解码SDI的工程源码及博客介绍既有基于GS2971/GS2972的SDI编解码也有基于GTP/GTX资源的SDI编解码既有HD-SDI、3G-SDI也有6G-SDI、12G-SDI等专栏地址链接如下 点击直接前往
本博已有的FPGA驱动USB通信方案
我的博客主页开设有FPGA驱动USB通信专栏里面全是FPGA驱动USB通信的工程源码及博客介绍既有基于USB2.0也有USB3.0方案包括USB2.0/3.0测速试验、USB2.0/3.0视频采集传输试验、USB2.0/3.0视频采集图像处理后传输试验等等所有工方案均包括FPGA工程和QT上位机源码专栏地址链接如下 点击直接前往
FPGA基于GS2971的SDI视频解码方案
本方案采用GS2971接收SDI视频然后进行图像缓存操作图像缓存方案包括FDMA方案和VDMA方案缓存介质包括PL端DDR3、PS端DDR3最后以HDMI方式输出提供3套工程源码3套工程源码详情请参考“1、前言”中的截图详细设计方案请参考我专门的博客博客链接如下 点击直接前往
FPGA基于FT601的USB3.0视频传输方案
FPGA基于FT601的USB3.0视频传输详细设计方案请参考我专门的博客博客链接如下 点击直接前往
3、详细设计方案
设计原理框图
设计原理框图如下
SDI 相机
我用到的是SDI相机为HD-SDI相机输出分辨率为1920x108030Hz本工程对SDI相机的选择要求范围很宽可以是SD-SDI、HD-SDI、3G-SDI因为很设计对这三种SDI视频是自动识别并自适应的SDI相机相对比较贵预算有限的朋友可以考虑用HDMI转SDI盒子模拟SDI相机这种盒子某宝一百块左右当使用HDMI转SDI盒子时输入源可以用笔记本电脑即用笔记本电脑通过HDMI线连接到HDMI转SDI盒子的HDMI输入接口再用SDI线连接HDMI转SDI盒子的SDI输出接口到FPGA开发板如下
GS2971-SDI解码芯片解读
本设计采用GS2971芯片解码SDIGS2971不需要软件配置硬件电阻上下拉即可完成配置本设计配置为输出BT1120格式视频当然你在设计电路时也可以配置为输出CEA861格式视频GS2971硬件架构如下提供PDF格式原理图
BT1120转RGB888
BT1120转RGB模块的作用是将SMPTE SD/HD/3G SDI IP核解码输出的BT1120视频转换为RGB888视频它由BT1120转CEA861模块、YUV422转YUV444模块、YUV444转RGB888三个模块组成该方案参考了Xilinx官方的设计BT1120转RGB模块代码架构如下
图像缓存
图像缓存方案采用自研的FDMA图像缓存架构缓存介质为DDR3/4FDMA图像缓存架构由FDMA、FDMA控制器、缓存帧选择器构成图像缓存使用Xilinx vivado的Block Design设计如下图 关于FDMA更详细的介绍请参考我之前的博客博文链接如下 点击直接前往
FT601-USB3.0芯片解读
FT600/601Q 的技术参数如下 FT600601Q 芯片是 FT 最新推出的 USB3.0 to FIFO interface IC实现 USB3.0 与 16/32bit 并行 IO 接口之间的数据传输整个 USB 通信协议全部由芯片驱动自行完成开发者无须考虑 USB 底层固件的编程。 –兼容支持 USB3.05Gbps,向下兼容 USB2.0480Mbps and 12Mbps传输 –高达 8 个可配置 Endpoint. 支持 2 种 FIFO 传输协议最大传输可达 400MB/s –芯片内部有 16K 字节的缓冲区可以进行数据的大吞吐量操作 –支持远程唤醒功能 –芯片支持多种 IO 电压1.8V,2.5V.3.3V –通过 16bit D[O15]或 32bit D[0:31]并行数据线和读写状态控制线 RXF、TXE、RD、WR加上时钟 CLK使能 OE 信号线就可实现与 CPU/FPGA 的数据交换 –该芯片内部集成 1.0V LDO,可提供给芯片核心部分使用 –工业级芯片工作温度范围-40 to 85℃ FT601芯片框架如下 FT601外围电路设计参考如下 FT601支持的多种传输模式其中 245 Synchronous FIFO 模式和 Multi-Channel FIFO 模式是最常用的模式本工程配置为 245 Synchronous FIFO 模式传输模式通过GPIO引脚高低电平配置配置真值表如下 FT601读时序解读 FT601的245 Synchronous FIFO 模式读时序如下 RXF_N为读数据状态信号RXF_N为低电平期间FPGA可以读取FT601数据 检测到RXF_N低电平后拉低OE_N和RD_N然后开始读数据 检测到RXF_N高电平后拉高OE_N和RD_N然后退出读数据状态
FT601写时序解读 FT601的245 Synchronous FIFO 模式写时序如下 TXF_N为读数据状态信号RXF_N为低电平期间FPGA向FT601写入数据 检测到TXF_N低电平后拉低WR_N然后开始向FT601写入数据 检测到TXF_N高电平后拉高WR_N然后退出写数据状态
FT601-USB3.0读写逻辑
根据FT601读写时序设计了数据读写状态机一共分为三个状态分别为初始状态、读数据状态、写数据状态状态机的触发由PC端的QT上位机开启在PC端QT上位机控制下FT601读写逻辑产生从DDR3中读取视频的控制信号并将读出的视频通过FT601写数据总线发送到板载的FT601芯片PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频顶层代码接口如下
QT上位机
QT开发环境为QT上位机本方案使用 VS2015 Qt 5.12.10QT上位机实现发起FT601的读写操作QT上位机调用FT601驱动的API实现图像读取并显示视频QT上位机运行如下
工程源码架构
本博客提供4套工程源码以工程源码1为例vivado Block Design设计如下其他工程与之类似Block Design设计为图像缓存架构的部分 本博客提供4套Vivado工程源码以工程源码1为例综合后的代码架构如下其他工程与之类似 对于Zynq的工程FDMA图像缓存架构虽然不需要SDK配置但FDMA的AXI4接口时钟由Zynq提供所以需要运行SDK程序才能启动Zynq从而为PL端逻辑提供时钟由于不需要SDK配置所以SDK软件代码就变得极度简单只需运行一个“Hello World”即可如下 QT代码如下
4、工程源码1详解–Kintex7–35T版本
开发板FPGA型号Xilinx–Kintex7–35T–xc7k325tffg900-2 FPGA开发环境Vivado2019.1 QT开发环境VS2015 Qt 5.12.10 输入3G-SDI相机或HDMI转SDI盒子分辨率1920x108060Hz 输出USB3.0分辨率1920x108060Hz SDI视频解码方案GS2971芯片方案 USB3.0图传方案FT601芯片方案 缓存方案自研FDMA方案 缓存介质DDR3 实现功能FPGA实现SDI视频接收转USB3.0传输 工程作用此工程目的是让读者掌握FPGA实现SDI视频接收转USB3.0传输的设计能力以便能够移植和设计自己的项目 工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容 工程的资源消耗和功耗如下
5、工程源码2详解–Zynq7100版本
开发板FPGA型号Xilinx–Zynq7100–xc7z100ffg900-2 FPGA开发环境Vivado2019.1 QT开发环境VS2015 Qt 5.12.10 输入3G-SDI相机或HDMI转SDI盒子分辨率1920x108060Hz 输出USB3.0分辨率1920x108060Hz SDI视频解码方案GS2971芯片方案 USB3.0图传方案FT601芯片方案 缓存方案自研FDMA方案 缓存介质DDR3 实现功能FPGA实现SDI视频接收转USB3.0传输 工程作用此工程目的是让读者掌握FPGA实现SDI视频接收转USB3.0传输的设计能力以便能够移植和设计自己的项目 工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容 工程的资源消耗和功耗如下
6、工程源码3详解–KU040版本
开发板FPGA型号Xilinx–Kintex UltraScale–xcku040-ffva1156-2-i FPGA开发环境Vivado2019.1 QT开发环境VS2015 Qt 5.12.10 输入3G-SDI相机或HDMI转SDI盒子分辨率1920x108060Hz 输出USB3.0分辨率1920x108060Hz SDI视频解码方案GS2971芯片方案 USB3.0图传方案FT601芯片方案 缓存方案自研FDMA方案 缓存介质DDR4 实现功能FPGA实现SDI视频接收转USB3.0传输 工程作用此工程目的是让读者掌握FPGA实现SDI视频接收转USB3.0传输的设计能力以便能够移植和设计自己的项目 工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容 工程的资源消耗和功耗如下
7、工程源码4详解–KU060版本
开发板FPGA型号Xilinx–Kintex UltraScale–xcku060-ffva1156-2-i FPGA开发环境Vivado2019.1 QT开发环境VS2015 Qt 5.12.10 输入3G-SDI相机或HDMI转SDI盒子分辨率1920x108060Hz 输出USB3.0分辨率1920x108060Hz SDI视频解码方案GS2971芯片方案 USB3.0图传方案FT601芯片方案 缓存方案自研FDMA方案 缓存介质DDR4 实现功能FPGA实现SDI视频接收转USB3.0传输 工程作用此工程目的是让读者掌握FPGA实现SDI视频接收转USB3.0传输的设计能力以便能够移植和设计自己的项目 工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容 工程的资源消耗和功耗如下
8、工程移植说明
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软核
9、上板调试验证
准备工作
需要准备的器材如下 FPGA开发板 SDI相机或者HDMI转SDI盒子 FT601转接板FPGA开发板板载FT601除外 笔记本电脑或者PC主机 USB3.0数据线 我的开发板连接如下
FT601驱动安装
注意驱动只需要安装一次即可 首先下载bit到FPGA开发板如下 然后打开PC端–我的电脑–管理–设备管理器可以看到FT601设备已经识别如下 如果你已经下载了FT601驱动文件但没有安装则有的电脑会自动寻找驱动并自定安装所以等待大约1分钟后电脑自动帮我们装好了FT601驱动如下 如果你的电脑不能自动寻找驱动并安装请手动安装驱动如下
输出视频演示
首先打开QT上位机位置如下 打开QT界面如下需要将显示分辨率设置为1920x1080 以工程源码2为例动态输出如下 SDI-USB3.0 10、福利工程代码的获取
福利工程代码的获取 代码太大无法邮箱发送以某度网盘链接方式发送 资料获取方式私或者文章末尾的V名片。 网盘资料如下 此外有很多朋友给本博主提了很多意见和建议希望能丰富服务内容和选项因为不同朋友的需求不一样所以本博主还提供以下服务