FPGA USB FX2 ov5640摄像头视频采集 驱动CY7C68013A实现 提供2套工程源码和技术支持

1、前言

目前USB2.0的实现方案很多,但就简单好用的角度而言,Cypress公司的CY7C68013A应该是最佳方案,因为它内部集成了8051 CPU 并封装为FIFO接口,电路设计简单,操作时序简单,软件驱动简单,官方甚至提供了包括FPGA驱动在内的丰富的驱动源码和测试软件;

本设计用FPGA驱动Cypress公司的CY7C68013A芯片实现USB2.0 视频采集发送试验,使用SlaveFIFO模式通信,我们提供CY7C68013A的配置固件及其源码,一般固件源码不需要修改,直接通过官方工具下载即可,官方工具我们也一并提供,并放在资料包里了;基于 SlaveFIFO 接口的视频发送试验,FPGA开发板实时采集OV5640摄像头数据,用一个FIFO缓冲和跨时钟域处理,然后将图像数据发送给CY7C68013A芯片,通过USB2.0接口发送给电脑,电脑端上位机接收并显示输出;代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的USB2.0通信和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式以及上板调试的演示视频放在了文章末尾,请耐心看到最后;

2、我这儿已有的 FPGA USB 通信方案

我这儿现有的FPGA基于 CY7C68013A 的 USB3.0通信方案,主要有数据回环测试,图片收发测试,视频收发测试,视频收发基于OV5640摄像头完成;感兴趣的可以去我的USB2.0通信专栏阅读,专栏地址如下:
点击直接前往专栏

此外,我这儿还有的FPGA基于FT601和FT602的USB3.0通信方案,主要有简单的测速方案、图像传输方案,图像传输方案包括简单的彩条传输采集、OV5640摄像头传输采集、HDMI视频采集,HDMI视频采集抓拍、USB3.0 UVC视频等等,所有工方案均包括FPGA工程和QT上位机源码;感兴趣的可以去我的FT601 USB3.0通信专栏阅读,专栏地址如下:
点击直接前往专栏

3、CY7C68013A芯片解读和硬件设计

FX2 简介

Cypress 公司的 EZ-USB FX2 是世界上第一款集成 USB2.0 的微处理器,它集成了USB2.0 收发器、SIE(串行接口引擎)、增强的 8051 微控制器和可编程的外围接口。FX2 这种独创性结构可使数据传输率达到480MBit/s。在FX2中,智能SIE可以硬件处理许多USB1.1和 USB2.0 协议,从而减少了开发时间和确保了 USB 的兼容性。该器件具有如下特性:
1:内嵌 480MBit/s 的收发器,锁相环 PLL,串行接口引擎 SIE——集成了整个 USB 2.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:一种单片 USB 2.0 外设解决方案,不需要外部的协议物理层,FX2 把所有的功能集成
在一个芯片上。
典型的 FX2 控制器,比如CY7C68013A的内部结构图如下:
在这里插入图片描述

SlaveFIFO模式及其配置

FX2-FPGA 接口为基于 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,作为数据和控制信号的同步时钟。

4、工程详细设计方案

详细设计方案如下:
在这里插入图片描述
FPGA开发板实时采集OV5640摄像头数据,OV5640摄像头需要i2c配置才能使用,本设计提供了verilog的i2c配置模块完成用OV5640摄像头的i2c配置,一个FIFO缓冲和跨时钟域处理,然后将图像数据发送给CY7C68013A芯片,通过USB2.0接口发送给电脑,电脑端上位机接收并显示输出;

5、vivado工程

开发板FPGA型号:Xilinx-XC7A35T-2FGG484C-2;
开发环境:vivado2019.1;
输入:OV5640摄像头;
输出:上位机显示;
应用:USB2.0接口图片发送;
工程代码架构如下:
在这里插入图片描述
综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

6、上板调试验证

先给板子上电,然后下载CY7C68013A固件,固件一般只需下载一次即可,因为CY7C68013A的原理图设计一般都会外挂一颗e2prom;下载FPGA bit流,打开上位机软件输出效果,如下:
在这里插入图片描述

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

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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
FPGA读写OV5640摄像头显示例程 Verilog逻辑源码Quartus工程文件+文档说明,FPGA型号Cyclone4E系列中的EP4CE6F17C8,Quartus版本17.1。 本实验将采用 500 万像素的 OV5640 摄像头模组(模块型号:AN5640)为大家显示更高分辨率 的视频画面OV5640 摄像头模组最大支持 QSXGA (2592x1944)的拍照功能,支持 1080P、720P、 VGA、QVGA 视频图像输出。本实验将 OV5640 配置为 RGB565 输出,先将视频数据写入外部存储 器,再从外部存储器读取送到 VGA、LCD 等显示模块。 module top( input clk, input rst_n, output cmos_scl, //cmos i2c clock inout cmos_sda, //cmos i2c data input cmos_vsync, //cmos vsync input cmos_href, //cmos hsync refrence,data valid input cmos_pclk, //cmos pxiel clock output cmos_xclk, //cmos externl clock input [7:0] cmos_db, //cmos data output cmos_rst_n, //cmos reset output cmos_pwdn, //cmos power down output vga_out_hs, //vga horizontal synchronization output vga_out_vs, //vga vertical synchronization output[4:0] vga_out_r, //vga red output[5:0] vga_out_g, //vga green output[4:0] vga_out_b, //vga blue output sdram_clk, //sdram clock output sdram_cke, //sdram clock enable output sdram_cs_n, //sdram chip select output sdram_we_n, //sdram write enable output sdram_cas_n, //sdram column address strobe output sdram_ras_n, //sdram row address strobe output[1:0] sdram_dqm, //sdram data enable output[1:0] sdram_ba, //sdram bank address output[12:0] sdram_addr, //sdram address inout[15:0] sdram_dq //sdram data ); parameter

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9527华安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值