紫光同创FPGA实现视频采集转USB2.0输出,基于CY7C68013芯片,提供PDS工程源码和技术支持和QT上位机

目录

紫光同创FPGA实现视频采集转USB2.0输出,基于CY7C68013芯片,提供PDS工程源码和技术支持和QT上位机

1、前言

国产FPGA现状:

"苟利国家生死以,岂因祸福避趋之!"大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于先进制程半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初心,懂先生站在高略高度和长远角度谋划,宁愿背当代一世之骂名也要为祖国千秋万世谋,2018年7月,懂先生正式打响毛衣战,随后又使出恰勃纸战术,旨在为祖国先进制程半导体领域做出自主可控的战略推动;2019年初我刚出道时,还是Xilinx遥遥领先的时代(现在貌似也是),那时的国产FPGA还处于黑铁段位;然而才短短7年,如今的国产FPGA属于百家争鸣、百花齐放、八仙过海、神仙打架、方兴未艾、得陇望蜀、友商都是XX的喜极而泣之局面,此情此景,不得不吟唱老人家的诗句:魏武挥鞭,东临碣石有遗篇,萧瑟秋风今又是,换了人间。。。

目前对于国产FPGA优势有以下几点:

1:性价比高,与同级别国外大厂芯片相比,价格相差几倍甚至十几倍;

2:自主可控,国产FPGA拥有完整自主知识产权的产业链,从芯片到相关EDA工具;

3:响应迅速,FAE技术支持比较到位,及时解决开发过程中遇到的问题,毕竟中文数据手册;

4:采购方便,产业链自主可控,采购便捷;

FPGA实现USB2.0现状:

目前FPGA实现USB2.0关键的问题是解决物理层的问题,目前大致分为两种方案;其一是使用FPGA内部逻辑资源实现USB物理层,这种方案比较少,只有少量FPGA集成了该硬核IP,比如高云国产系列FPGA,这种方案的优点是硬件电路设计极为简单,可解决国产化问题,缺点是逻辑代码设计较为复杂,需要对USB协议有深刻理解,对FPGA开发者水平要求较高;其二是使用专门的PHY芯片实现USB物理层,这种方案就比较多了,比如经典的CY7C68013和FT601等芯片,这种方案的优点逻辑代码设计简单,只需考虑与PHY的时序对接问题,无需对USB协议有太多理解,对FPGA开发者水平要求较低,缺点是硬件成本高点,硬件电路设计复杂一些;本设计使用CY7C68013芯片实现USB物理层;

工程概述

本文使用紫光同创的PGL22G系列FPGA实现视频采集转USB2.0输出系统;视频输入源为OV5640摄像头;FPGA首先对摄像头进行i2c初始化配置,配置为JPEG输出模式,然后采集摄像头视频;然后图像送入FIFO中缓存,在USB2.0驱动模块控制下,根据CY7C68013接口时序从FIFO中读取图像送USB2.0总线传输;然后图像送入CY7C68013芯片实现USB2.0协议层编码和物理层串化;然后图像经过板载的MicroUSB接口输出至PC电脑端;PC端Cypress驱动接收USB数据,然后打开QT上位机调用API接口函数接收图像并实时显示;针对市场主流需求,本设计提供1套PDS工程源码,具体如下:

现对上述1套工程源码做如下解释,方便读者理解:

工程源码1

开发板FPGA型号为PGL22G-6MBG324;视频输入源为OV5640摄像头;FPGA首先对摄像头进行i2c初始化配置,配置为JPEG输出模式,分辨率为1280x720然后采集摄像头视频;然后图像送入FIFO中缓存,在USB2.0驱动模块控制下,根据CY7C68013接口时序从FIFO中读取图像送USB2.0总线传输;然后图像送入CY7C68013芯片实现USB2.0协议层编码和物理层串化;然后图像经过板载的MicroUSB接口输出至PC电脑端,输出分辨率为1280x720;PC端Cypress驱动接收USB数据,然后打开QT上位机调用API接口函数接收图像并实时显示;该工程适用于紫光同创FPGA实现USB2.0摄像头应用;

本博客描述了紫光同创FPGA实现视频采集转USB2.0输出的设计方案,工程代码可综合编译上板调试,可直接项目移植,适用于在校学生、研究生项目开发,也适用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处理领域;

提供完整的、跑通的工程源码和技术支持;

工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

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

2、相关方案推荐

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

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

紫光同创FPGA相关方案推荐

鉴于国产FPGA的优异表现和市场需求,我专门开设了一个人紫光同创FPGA专栏,里面收录了基于紫光同创FPGA的图像处理、UDP网络通信、GT高速接口、PCIE等博客,感兴趣的可以去看看,博客地址:点击直接前往

我已有的FPGA驱动USB通信方案

我的博客主页开设有FPGA驱动USB通信专栏,里面全是FPGA驱动USB通信的工程源码及博客介绍;既有基于USB2.0也有USB3.0方案;包括USB2.0/3.0测速试验、USB2.0/3.0视频采集传输试验、USB2.0/3.0视频采集+图像处理后传输试验等等;所有工方案均包括FPGA工程和QT上位机源码;专栏地址链接如下:
点击直接前往

3、设计思路框架

工程设计原理框图

工程设计原理框图如下:

输入Sensor之-->OV5640摄像头

视频输入源为OV5640摄像头;FPGA首先对摄像头进行i2c初始化配置,配置为JPEG输出模式,分辨率1280x720,然后采集摄像头视频;整个模块代码架构如下:

CY7C68013芯片

Cypress公司的CY7C68013A芯片是一款优秀的集成USB2.0的微处理器,它集成了USB2.0 收发器、SIE(串行接口引擎)、增强的 8051 微控制器和可编程的外围接口。FX2这种独创性结构可使数据传输率达到480MBit/s。在FX2中,智能SIE可以硬件处理许多USB1.1和USB2.0协议,从而减少了开发时间和确保了USB的兼容性。该器件具有如下特性:

1、内嵌 480MBit/s 的收发器,锁相环 PLL,串行接口引擎 SIE------集成了整个USB2.0协议的物理层。

2、内嵌可工作在48MHz的增强型8051,该8051控制器具有以下特征:

(1)具有256Byte的寄存器空间,两个串口,三个定时器,两个数据指针。

(2)四个机器周期(工作在48MHz下时为83.3ns)即组成一个指令周期。

(3)特殊功能寄存器(包括 I/O 口控制寄存器)可高速访问。

(4)应用USB向量中断,具有极短的ISR响应时间。

(5) 只用作USB事务管理、控制,不参与数据传输,较好地解决了USB高速模式的带宽问题。

3、"软配置"------USB固件可由USB总线下载,片上不需集成ROM。

4、拥有四个FIFO接口,可工作在内部或外部时钟下。端点和FIFO接口的应用使外部逻辑和USB总线可高速连接。

5:一种单片USB2.0外设解决方案,不需要外部的协议物理层,FX2把所有的功能集成在一个芯片上。

CY7C68013A的内部结构图如下:

SlaveFIFO 模式及其配置

本设计需要使用CY7C68013的SlaveFIFO模式,我们已经做好了固件,并提供给使用者下载到CY7C68013中;SlaveFIFO接口为基于FPGA的应用执行高速度的USB连接事项,如数据采集、工业控制和监控以及图像处理提供了非常简单易用的接口。FX2在SlaveFIFO模式下运行, FPGA 作为主设备使用。

SlaveFIFO模式下,连接至FX2的外部系统能够生成读和写控制信号,因此,它能作为FX2的主设备使用。在基于 FPGA 的应用中,FX2一般被配置为SlaveFIFO模式。下图为 FX2使用从设备FIFO接口与外部FPGA连接时的系统框图。

在这种方式下,FX2内嵌的8051固件的功能只是配置Slave FIFO相关的寄存器以及控制FX2何时工作在Slave FIFO模式下。一旦 8051固件将相关的寄存器配置完毕,且使自身工作在Slave FIFO模式下后,外部逻辑(如 FPGA)即可按照Slave FIFO的传输时序,高速与主机进行通讯,而在通讯过程中不需要8051固件的参与。SlaveFIFO模式的配置需要安装CY7C68013A官方提供的一整套工具下载相关固件完成,这一套东西我已打包,并专门写了一个工具安装、驱动安装、工具使用、固件下载的文档,也一并放在了资料包里,如下:

下图为SlaveFIFO模式下FX2与FPGA 连接示意图。

具体信号管脚说明如下。

对于IFCLK信号,属于一个方向可配置的信号,既可以由FX2 输出,连接到外部器件如FPGA,也可以配置为输入,接收来自外部器件的时钟信号,在本例中,将 IFCLK 配置为输出,即由FX2输出给 FPGA,作为数据和控制信号的同步时钟。

采集的图像送入FIFO中缓存,在USB2.0接口驱动逻辑控制下,根据CY7C68013接口时序从FIFO中读取图像送USB2.0总线传输;即这就是一个时序接口,与CY7C68013接口对接,没有太多的复杂逻辑;代码如下:

CY7C68013驱动安装

第1步:将FPGA开发板用USB线连接到PC电脑端,然后FPGA上电;

第2步:打开电脑《我的电脑》-->《设备管理器》,应该可以看到如下信息:

表明电脑识别到了USB设备,但没有驱动;

第3步:安装步骤如下图:

第4步:安装好后验证如下:

可以看到,驱动已经安装好;

CY7C68013固件编译和下载

首先需要安装Cypress官方提供的Keil软件,用于开发51单片机程序,也就是CY7C68013固件程序;

打开如下位置的安装包安装Keil软件:

然后一路Next即可完成安装;

随后打开如下位置的启动图标即可打开我们提供的CY7C68013固件原程序:

程序架构如下:

然后按照Keil开发流程,可任意修改代码,然后编译;

编译完成后,固件下载到CY7C68013芯片,首先需要安装Cypress官方提供的软件,打开如下位置安装:

然后一路Next即可完成安装;

随后打开如下位置的软件开始下载固件:

下载步骤如下:

工程源码架构

工程源码架构如下:

4、PDS工程源码1详解:OV5640转USB2.0输出版本

开发板FPGA型号:紫光同创--PGL22G-6MBG324;

开发环境:Pango Design Suite 2021.1

视频输入:OV5640摄像头,JPEG模式,分辨率1280x720;

输入分辨率:USB2.0;分辨率1280x720;

USB2.0桥接方案:CY7C68013芯片;

工程作用:紫光同创FPGA图像视频采集系统;

工程源码架构请参考前面第3章节中的《工程源码架构》小节;

工程作用:此工程目的是让读者掌握紫光同创FPGA实现视频采集转USB2.0输出的设计能力,以便能够移植和设计自己的项目;

工程的资源消耗和功耗如下:

7、上板调试验证并演示

准备工作

你需要有以下装备才能移植并测试该工程代码:

1:FPGA开发板;

2:CY7C68013转接板;

3:USB线;

4:笔记本电脑或台式电脑;

开发板连接如下:

紫光同创FPGA实现USB2.0摄像头输出演示

紫光同创FPGA实现USB2.0摄像头输出演示如下:

OV5640-USB2.0

8、工程源码

工程源码如下:

相关推荐
RTC实战笔记3 天前
实时互动数字人怎么做,才不是一个只会说话的视频?
音视频·数字人·rtc·数字人接入
用户805533698034 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner4 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz9 天前
QML Hello World 入门示例
qt
xcyxiner12 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner13 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner13 天前
DicomViewer (添加模型类)3
qt
xcyxiner14 天前
DicomViewer (目录调整) 2
qt
xcyxiner14 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
RTC实战笔记15 天前
Android 实时音视频接入教程:媒体补充增强信息(SEI)
音视频·媒体·rtc