FPGA USB FX2 数据回环试验 驱动CY7C68013A实现 提供工程源码和技术支持

news2024/11/17 12:27:42

目录

  • 1、前言
  • 2、我这儿已有的 FPGA USB 通信方案
  • 3、CY7C68013A芯片解读和硬件设计
    • FX2 简介
    • SlaveFIFO模式及其配置
  • 4、工程详细设计方案
  • 5、vivado工程
  • 6、上板调试验证
  • 7、福利:工程代码的获取

1、前言

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

本设计用FPGA驱动Cypress公司的CY7C68013A芯片实现USB2.0数据回环实验,使用SlaveFIFO模式通信,我们提供CY7C68013A的配置固件及其源码,一般固件源码不需要修改,直接通过官方工具下载即可,官方工具我们也一并提供,并放在资料包里了;基于 SlaveFIFO 接口的数据回环测试,能够实现 PC 通过 FX2 发往 FPGA 的数据再通过 FX2 芯片发回到 PC。FPGA里写了一个简单的状态机实现CY7C68013A数据额回环收发,通过ILA抓取收发数据信号并查看波形验证正确性;代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的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、工程详细设计方案

详细设计方案如下:
在这里插入图片描述
使用Cypress官方的上位机软件向CY7C68013A发送数据,FPGA接收CY7C68013A发来的数据,并将数据送入FIFO,并在状态机的控制下又将数据从FIFO读出后再发送给CY7C68013A,从而实现数据回环;状态机核心代码如下:
在这里插入图片描述

5、vivado工程

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

6、上板调试验证

先给板子上电,然后下载CY7C68013A固件,固件一般只需下载一次即可,因为CY7C68013A的原理图设计一般都会外挂一颗e2prom;下载FPGA bit流,打开上位机软件发送数据,打来vivado的ILA波形界面查看波形并分析即可,我这里的如下:
在这里插入图片描述

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

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

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

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

相关文章

kkfileview部署使用

1.gitee下载源码 kkFileView: 使用spring boot打造文件文档在线预览项目解决方案,支持doc、docx、ppt、pptx、wps、xls、xlsx、zip、rar、ofd、xmind、bpmn 、eml 、epub、3ds、dwg、psd 、mp4、mp3以及众多类文本类型文件在线预览 2.去掉cad 3.替换水印字体为免费…

php宝塔搭建好用的二次元图系统php源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套好用的二次元图系统php源码。抽时间看了一下,功能还是不错的,有参考价值。感兴趣的朋友可以自行下载学习。 技术架构 PHP7.0 nginx mysql5.7 JS CSS HTMLcnetos7以…

德国汽车行业杂志HANSERautomotive就浪潮信息算法团队在自动驾驶领域所取得的核心突破,进行专题署名报道

近日,德国专业汽车行业杂志HANSERautomotive就浪潮信息算法团队在自动驾驶领域所取得的核心突破,进行专题署名文章报道“Wahrnehmungssysteme und 3D-Objekterkennung Alles im Blick ”(《感知系统和三维物体识别,一切尽收眼底》)。针对AI感…

python ---- 根据文件名称中的数字排序

1. 需求分析 获取文件夹中的所有文件名称;筛选所有文件名称中的图片文件;获取图片文件名称中的数字;对数字排序;返回排序后的图片文件名称列表。 2. 获取所有图片文件名称 2.1 代码实现分析 使用 os.listdir 获取文件夹下的所…

keil_arm满减栈应用场景

.text .global _start _start:满减压栈使用场景ldr sp,0x40000800mov r0,#0x1mov r1,#0x2bl add1_funcadd r0,r0,r1 r0 r0 r1 0x3b stopadd1_func: 压栈保存现场 r0 0x1 r1 0x2stmfd sp!,{r0,r1,lr}mov r0,#0x3mov r1,#0x4bl add2_funcadd r0,r0,r1 r0 r…

如何在Windows中批量创建多个文件夹

你需要更好地组织你的文件和文档吗?如果你在笔记本电脑或台式机上将相关文件分组到不同的文件夹中,那么总是很容易找到你需要的东西。你还可以更改图标的大小,使其在视觉上更美观。 在 Windows 中创建一个文件夹的传统做法是:右键…

【GlobalMapper精品教程】060:用dem提取一条线的高程值

本实验使用的数据有线路数据(line.shp)和数字地形数据(dem.tif),提取线数据的高程值。 文章目录 一、加载实验数据二、生成路径剖面三、导出线路高程四、注意事项【参考阅读】:【ArcGIS微课1000例】0004:值提取至点(Extract value to point) 一、加载实验数据 本实验…

NLP学习笔记(三)

一:分类方法 (一)逻辑回归 最简单的方法就是将分类问题视为回归问题,采用逻辑回归计算分类的边界。 (二)softmax回归 softmax的前向传播过程可以分为以下三步: h W T x y ^ s o f t m a …

springboot基于keytool实现https的双向认证

一、环境准备 服务器信息如下: 操作系统说明server-one服务器1server-two服务器2 二、keytool命令解释 -genkey 表示要创建一个新的密钥。 -alias 表示 keystore 的别名。 -keyalg 表示使用的加密算法是 RSA ,一种非对称加密算法。 -keysize 表示密…

ubuntu 基础软件

文章目录 一.通过.deb 安装的软件1.谷歌浏览器2.utools3.wps4.VScode5.typora6.搜狗输入法的安装 二.通过命令行安装的软件1.截图工具2.超级终端3.安装 git4.安装net-tools5.安装tree 三.ubuntu的基础设置1.更改软件安装源头2.修改计算机名称 一.通过.deb 安装的软件 下面 .deb…

SpringBoot-集成FTP(上传、下载、删除)

目录 一、引入依赖 二、配置文件 三、Controller层 四、Service层 五、相关工具类 由于服务在内网部署&#xff0c;需要使用ftp服务器管理文件&#xff0c;总结如下 一、引入依赖 <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <depen…

基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案图像产生、发送、缓存数据处理XDMA简介XDMA中断模式图像读取、输出、显示QT上位机及其源码 5、vivado工程详解6、上板调试验证7、福利&#xff1a;工程代码的获取 1、前言 PCIE&#xff08;PCI Express&#…

SAP从入门到放弃系列之可用性检查-订单物料可用性检查-Part2

文章目录 一、概述二、物料可用性检查如何锁定库存2.1实现思路2.2系统设置关键点 三、系统测试数据3.1、勾选含预留选项的测试效果3.2、含相关预留3.2.1含相关预留-排除3.2.2含相关预留-仅可领料3.2.3含相关预留-全部 四、最后总结&#xff1a; 一、概述 物料可用性检查最终的…

【Linux】shell中快速遍历所有文件下匹配的内容

目录 1.举例 2.find命令 2.1. find命令作用 2.2. find命令选项基本格式 2.3. 常用选项 2.4. 常用动作 2.5. 根据文件名进行匹配 2.5.2 在/home目录下查找以.txt结尾的文件名 2.5.3 同上&#xff0c;但忽略大小写 2.5.4 查找 /home/ 下所有以.txt或.pdf结尾的文件…

五、卷积神经网络

文章目录 前言一、图像卷积1.1 不变性1.2 互相关运算1.3 卷积层1.4 互相关和卷积1.5 特征映射和感受野 二、填充和步幅2.1 填充2.2 步幅 三、多输入多输出通道3.1 多输入通道3.2 多输出通道3.3 11卷积层 四、汇聚层/池化层4.1 最大汇聚层与平均汇聚层4.2 填充和步幅4.3 多个通道…

Linux下安装/使用mariadb

文章目录 第一章&#xff1a;mariadb在rhel7上的使用第二章&#xff1a;mariadb在rhel6上的安装&#xff08;1&#xff09;编译源码包&#xff08;比较慢&#xff09;&#xff08;2&#xff09;二进制包安装&#xff08;比较推荐&#xff09; 第一章&#xff1a;mariadb在rhel7…

【Android】Android虚拟机

虚拟机 Android的虚拟机主要有两种&#xff1a;Dalvik 虚拟机和 ART&#xff08;Android Runtime&#xff09;虚拟机。 Dalvik 虚拟机 Dalvik 虚拟机是 Android 早期使用的虚拟机&#xff0c;它基于寄存器架构。从Android 2.2版本开始&#xff0c;支持JIT即时编译&#xff08…

计算机系统 基础知识点汇总,超全!!!

计算基础知识点合集来啦&#xff01;&#xff01;&#xff01; 更多知识请关注我&#xff01;&#xff01;&#xff01; 近期内容&#xff1a; 第二章 数据结构与算法 知识点总结第三章 程序设计基础知识点整理第四章 软件工程基础知识点汇总第五章 数据库基础知识pyhon基础知…

JVM 调优设置

堆大小设置 JVM 中最大堆大小有三方面限制&#xff1a;相关操作系统的数据模型&#xff08;32-bt还是64-bit&#xff09;限制&#xff1b;系统的可用虚拟内存限制&#xff1b;系统的可用物理内存限制。32位系统下&#xff0c;一般限制在1.5G~2G&#xff1b;64为操作系统对内存无…

Python web框架开发 - WSGI协议

目录 浏览器请求动态页面过程 多进程web服务端代码 - 面向过程 封装对象分析 增加识别动态资源请求的功能 为什么需要 WSGI协议 WSGI协议的介绍 定义WSGI接口 编写framwork支持WSGI协议&#xff0c;实现浏览器显示 hello world 本次开发的完整代码如下&#xff1a; 浏…