FPGA USB FX2 图片发送试验 驱动CY7C68013A实现 提供2套工程源码和技术支持

news2024/11/28 13:47:56

目录

  • 1、前言
  • 2、我这儿已有的 FPGA USB 通信方案
  • 3、CY7C68013A芯片解读和硬件设计
    • FX2 简介
    • SlaveFIFO模式及其配置
  • 4、工程详细设计方案
    • 输入测试图片的处理
    • PC上位机发送测试图片
    • 图像接收与缓存
    • 图像输出显示
  • 5、vivado工程1--LCD输出显示
  • 6、vivado工程1--LCD输出显示
  • 7、上板调试验证
  • 8、福利:工程代码的获取

1、前言

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

本设计用FPGA驱动Cypress公司的CY7C68013A芯片实现USB2.0 图片发送试验,使用SlaveFIFO模式通信,我们提供CY7C68013A的配置固件及其源码,一般固件源码不需要修改,直接通过官方工具下载即可,官方工具我们也一并提供,并放在资料包里了;基于 SlaveFIFO 接口的图片发送试验,能够实现 PC 通过 FX2 向 FPGA 图片,FPGA接收图片后将图片缓存至DDR3后读出送显示器显示,我们提供了2套vivado工程,一套是LCD显示屏显示接收的图片,另一套是HDMI显示屏显示接收的图片;代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的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、工程详细设计方案

工程1:LCD 输出显示的详细设计方案如下:
在这里插入图片描述
工程2:HDMI 输出显示的详细设计方案如下:
在这里插入图片描述

输入测试图片的处理

输入测试图片要求为.bin文件,你可以通过脚本或者工具将图片转为.bin文件,我提供的资料包里已经为你提供好了,如下:
在这里插入图片描述

PC上位机发送测试图片

打开Cypress官方软件,按照下图中 1 2 3 4的顺序加载.bin文件的图片,即可完成PC上位机发送图片给FPGA的过程;
在这里插入图片描述

图像接收与缓存

调用一个 FIFO 实现数据图片数据的跨时钟处理,然后将图像数据缓存进DDR3中,然后再读出送显示设备显示;这里的DDR3缓存调用了 MIG IP核,MIG的用户接口为AXI4-FULL,所以图像缓存部分手写了一个AXI4主机及其控制模块实现数据读写;详情请参考源代码;

图像输出显示

我们提供了2套vivado工程,一套是LCD显示屏显示接收的图片,另一套是HDMI显示屏显示接收的图片;二者的分辨率均配置为 800x480,手写了 LCD 驱动和 HDMI 发送模块,详情请参考源代码;

5、vivado工程1–LCD输出显示

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

6、vivado工程1–LCD输出显示

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

7、上板调试验证

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/723792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue数组深层赋值

一、问题 使用vue开发的项目,有一个页面的data中定义了两个数组,需要把其中一个数组赋值给另一个数组的其中一个对象的一个属性(有点拗口),如图所示: 二、错误赋值 直接使用opts:this.print_name&#xf…

el-button与i标签实现区域切换效果

题记&#xff1a;我们工作中需要实现内容区域切换放大缩小的效果&#xff0c;其实道理很简单&#xff0c;给事件给样式即可。 #el-button与i标签实现区域切换效果 ##图片展示&#xff1a; ##代码实现 ###template部分 <div class"right"><el-button type&…

【SQL应知应会】行列转换(三)• Oracle版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 行列转换 • Oracle版 oracle的行列转换前言1.数据…

Perhaps you are running on a JRE rather than a JDK?

我记得我遇到过好多次 mvn clean package的时候报错&#xff1b; 最后检查时这里的路径配置错了

蓝牙耳机品牌排行榜前十名!2023年超全蓝牙耳机合集!

虽然称不上发烧友&#xff0c;但近年来用过的蓝牙耳机少说也有几十款了。这篇文章以近年来市面上的热销且评价都比较高的十款蓝牙耳机为主要推荐对象&#xff0c;来给大家做一期有关于蓝牙耳机的实测体验以及提供相关的选购思路&#xff0c;希望能为大家的选择出一份力。 第一…

# TSWIKI 0.2 版本

TSWIKI 0.2 版本 TSWIKI 0.2 版本经过这段时间的改进&#xff0c;增加了搜索&#xff0c;版本变更查看等功能&#xff0c;基本开发完成。功能方面已经与 gollum 类似。 功能改进说明 1、GIT 版本变更查看功能 实现 git 版本变更查看功能, 在 markdown 文档查看界面&#xf…

day 44 完全背包

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…

LLVM介绍

LLVM项目是什么 工业级编译技术集合 优化器和代码生成器llvm-gcc和Clang前端MSIL和.NET虚拟机开源项目 行业组织、研究团体和个人 LLVM愿景 主要使命&#xff1a;构建一套模块化的编译器组件&#xff1a; 减少构建特定编译器的时间和成本组件可以在不同的编译器之间共享使用…

OpenCat:一个基于Arduino和Raspberry Pi的开源四足机器人宠物框架

一个深圳项目&#xff0c;OpenCat&#xff1a;一个基于Arduino和Raspberry Pi的开源四足机器人宠物框架。 项目灵感来自于到波士顿动力公司Big Dog和Spot Mini的启发。 OpenCat提供了一个基础的开源平台&#xff0c;可以创建令人惊奇的可编程步态、运动四足机器人。它可以进行复…

什么是孪生视频,孪生视频是什么意思,她的关键技术,及应用场景案例

视频孪生&#xff0c;即视频数字孪生。是集三维地理信息系统、视频虚实融合、数字孪生、人工智能、时空位置智能、地球空间网格编码、知识图谱于一体的多学科、多维度、多尺度的综合技术应用&#xff0c;是对数字孪生的创新升级。 什么是视频孪生&#xff0c;视频孪生的关键技术…

c++ 之decay简单介绍

简介 std::decay是C获取类型的一种方式&#xff0c;它定义在<type_traits>头文件中。 #include <type_traits>模型 template< class T > using decay_t typename decay<T>::type; //(since C14)使用示例 template<typename T> static void …

关于流程图svg线条流动的效果-jq

获取所有的SVG并加上相应的样式 var svgElement $(svg.jtk-connector);console.info(svgElement,svgElement)var pathElement svgElement.find(path:first);pathElement.attr(class, connector-line);pathElement.attr(fill, transparent);pathElement.attr(stroke, #1890ff)…

vue3项目打开本地pdf文件实现方法

vue3项目打开本地pdf文件实现方法 效果图引入pdf插件pdf页面封装pdf存放目录结语 效果图 引入pdf插件 注意一定要这个版本&#xff0c;不然会报错key.split(...).at is not a function npm install pdfjs-dist2.12.313pdf页面封装 <template><div class"pdf-co…

饮料市场京东销售数据分析(京东大数据)

近日&#xff0c;关于“阿斯巴甜可能是致癌物”的话题持续发酵&#xff0c;众所周知阿斯巴甜是常见的人工甜味剂之一&#xff0c;并被广泛应用于无糖可乐以及一些饮料产品中&#xff0c;而这一话题引起人们的巨大恐慌。 阿斯巴甜致癌与否尚未定论&#xff0c;但这一言论也引得…

【学习笔记-QGIS】 QGIS从零快速上手

原文感谢作者才华横溢吴道简 安装文章参考&#xff1a;https://zhuanlan.zhihu.com/p/370633306 一、下载安装 QGIS免费开源&#xff0c;中文界面&#xff0c;下载地址&#xff1a;https://download.qgis.org/downloads/ 三、配置中文环境 开始——QGIS 3.18——QGIS Deskto…

SpringBoot2+Vue2实战(十)权限管理之动态菜单、动态路由生成

一、父子菜单实现 新建数据库表 sys_menu sys_role 实体类 Role import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName;import java.io.Serializable;import l…

Numpy速通笔记

Numpy可以高效处理大数组的数据&#xff0c;因为&#xff1a; Numpy在一个连续的内存块中存储数据&#xff0c;独立于其他Python内置对象。Numpy是C写的&#xff0c;有优化&#xff0c;比Python内置序列使用的内存少可以在整个数组上进行复杂运算&#xff0c;不需要for循环 下…

table的tr动态增加(含html示例)

html页面table的tr动态增加&#xff08;含示例&#xff09; 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>简单示例</title><script type"text/javascript">function …

陶建辉在“2023 可信数据库发展大会”发表演讲,TDengine 入选中国数据库产业图谱

当前&#xff0c;全球数字经济加速发展&#xff0c;数据正在成为重组全球要素资源、重塑全球经济结构、改变全球竞争格局的关键力量。数据库作为存储与处理数据的关键技术&#xff0c;在数字经济大浪潮下&#xff0c;全球数据库产业中新技术、新业态、新模式不断涌现。 7 月 4…

mysql创建表练习

CREATE TABLE student ( Id int(10) primary key auto_increment comment "学号", Name varchar(20) not null comment "姓名", Sex enum(M,F) default M comment "性别", Birth year(4) comment "出生年份", Department varchar(20)…