0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA NANO2开发板实现USB2.0接口通信的设计方案

牵手一起梦 来源:网络整理 作者:佚名 2020-01-16 09:20 次阅读

基于FPGA实现USB2.0接口通信, USB2.0 PHY芯片Cypress68013, 68013内部集成8051 内核,USB2.0芯片读写需要对8051核进行固件配置。

一.FX2特性介绍

1.1、介绍

Cypress Semiconductor公司的EZ-USB FX2是世界上第一款集成USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。FX2这种独创性结构可使数据传输率达到56Mbytes/s,即USB2.0允许的最大带宽。在FX2中,智能SIE可以硬件处理许多USB1.1和USB2.0协议,从而减少了开发时间和确保了USB的兼容性。GPIF(General Programmable Interface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口。

1.2、结构

CY7C68013结构图如图1所示。它有三种封装形式:56SSOP,100TQFP和128TQFP。

1.3、特征

★ 内嵌480MBit/s的收发器,锁相环PLL,串行接口引擎SIE——集成了整个USB 2.0协议的物理层。

★ 为适应USB 2.0的480MBit/s的速率,FIFO端点可配置成2,3,4个缓冲区。

★ 内嵌可工作在48MHz的增强型8051,它具有以下特征:

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

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

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

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

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

★ “软配置”——USB固件可由USB总线下载,片上不需集成ROM

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

★ 内嵌通用可编程接口GPIF,它是一个状态机,可充当主控制器,提供外部逻辑和USB总线的“无胶粘贴”。

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

二、Slave FIFO传输

2.1、概述

当有一个与FX2芯片相连的外部逻辑只需要利用FX2做为一个USB 2.0接口而实现与主机的高速通讯,而它本身又能够提供满足Slave FIFO要求的传输时序,可以做为Slave FIFO主控制器时,即可考虑用此传输方式。

Slave FIFO传输的示意图如下:

在这种方式下,FX2内嵌的8051固件的功能只是配置Slave FIFO相关的寄存器以及控制FX2何时工作在Slave FIFO模式下。一旦8051固件将相关的寄存器配置完毕,且使自身工作在Slave FIFO模式下后,外部逻辑(如FPGA)即可按照Slave FIFO的传输时序,高速与主机进行通讯,而在通讯过程中不需要8051固件的参与。

2.2、硬件连接(标准)

在Slave FIFO方式下,外部逻辑与FX2的连接信号图如下:

IFCLK:FX2输出的时钟,可做为通讯的同步时钟;

FLAGA,FLAGB,FLAGC,FLAGD:FX2输出的FIFO状态信息,如满,空等;

SLCS:FIFO的片选信号,外部逻辑控制,当SLCS输出高时,不可进行数据传输;

SLOE:FIFO输出使能,外部逻辑控制,当SLOE无效时,数据线不输出有效数据;

SLRD:FIFO读信号,外部逻辑控制,同步读时,FIFO指针在SLRD有效时的每个IFCLK的上升沿递增,异步读时,FIFO读指针在SLRD的每个有效—无效的跳变沿时递增;

SLWR:FIFO写信号,外部逻辑控制,同步写时,在SLWR有效时的每个IFCLK的上升沿时数据被写入,FIFO指针递增,异步写时,在SLWR的每个有效—无效的跳变沿时数据被写入,FIFO写指针递增;

PKTEND:包结束信号,外部逻辑控制,在正常情况下,外部逻辑向FX2的FIFO中写数,当写入FIFO端点的字节数等于FX2固件设定的包大小时,数据将自动被打成一包进行传输,但有时外部逻辑可能需要传输一个字节数小于FX2固件设定的包大小的包,这时,它只需在写入一定数目的字节后,声明此信号,此时FX2硬件不管外部逻辑写入了多少字节,都自动将之打成一包进行传输;

FD[15:0]:数据线;

FIFOADR[1:0]:选择四个FIFO端点的地址线,外部逻辑控制。

2.3、 Slave FIFO的几种传输方式

2.3.1 、同步Slave FIFO写

同步Slave FIFO写的标准连接图如下:

同步Slave FIFO写的标准时序如下:

IDLE:当写事件发生时,进状态1;

状态1:使FIFOADR[1:0]指向IN FIFO,进状态2;

状态2:如FIFO满,在本状态等待,否则进状态3;

状态3:驱动数据到数据线上,使SLWR有效,持续一个IFCLK周期,进状态4;

状态4:如需传输更多的数,进状态2,否则进状态IDLE。

状态跳转示意图如下:

几种情况的时序图示意如下(FULL,EMPTY,SLWR,PKTEND均假定低有效):

图示FIFO中本来没有数据,外部逻辑写入第一个数据时的情况。

图示假定FX2设定包大小为512字节,外部逻辑向FIFO端点中写入的数据达512字节时的情况。此时FX2硬件自动将已写入的512字节打成一包准备进行传输,这个动作就和在普通传输中,FX2固件向FIFO端点中写入512字节后,把512这个数写入EPxBC中一样,只不过这个过程是由硬件自动完成的。在这里可以看出“FX2固件不参与数据传输过程”的含义了。外部逻辑只须按上面的时序图所示的时序向FIFO端点中一个一个字节(或字)地写数,写到一定数量,FX2硬件自动将数据打包传输,这一切均不需固件的参与,由此实现高速数据传输。

图示的是FIFO端点被写满时的情况。

2.3.2 、同步Slave FIFO读:

同步Slave FIFO读的标准连接图如下:

同步Slave FIFO读的标准时序如下:

IDLE:当读事件发生时,进状态1;

状态1:使FIFOADR[1:0]指向OUT FIFO,进状态2;

状态2:使SLOE有效,如FIFO空,在本状态等待,否则进状态3;

状态3:从数据线上读数,使SLRD有效,持续一个IFCLK周期,以递增FIFO读指针,进状态4;

状态4:如需传输更多的数,进状态2,否则进状态IDLE。

状态跳转示意图如下:

几种情况的时序图示意如下(FULL,EMPTY,SLRD,SLOE均假定低有效):

图示正常情况时的时序。

图示FIFO被读空时的情况。

几种情况的时序图示意如下(FULL,EMPTY,SLWR,PKTEND均假定低有效):

图示FIFO中本来没有数据,外部逻辑写入第一个数据时的情况。

三、测试USB接口:

对于USB接口的测试,本次实验控制开发板上面的USB接口实现与PC机的通信。

用usb2.0线连接pc与开发板usb接口,先下载s3_dram.bit程序,在没有掉电的情况下,打开相应的EZ-USB软件(ez-usb为usb2.0接口PC端驱动,安装文件在 “CY7C68013开发相关工具” 目录下)。

在使用前,接上USB2.0接口到PC端,PC端设备管理器可以识别到USB设备,如果没有识别到USB设备,需要手动安装驱动,驱动文件为ezusbw2k.inf(测试目录下)的文件,手动选择inf所在目录。

启动画面如下图:

上图表示连接可以进行下面测试,通过EZ_USB软件下载相应固件s3_dpram.bit程序,slavefifo.hex文件在“下载bit”目录下点击Download,

双击打开相应读写的usb接口VC程序(如下图)

看到写的测试现象,流过的数据速率。

应用平台 :红色飓风NANO2

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593155
  • usb
    usb
    +关注

    关注

    59

    文章

    7431

    浏览量

    258076
  • 开发板
    +关注

    关注

    25

    文章

    4429

    浏览量

    93971
收藏 人收藏

    评论

    相关推荐

    NANO2开发板实例之 USB2.0接口通信回环

    ` 本帖最后由 v3cyclone 于 2014-3-24 11:03 编辑 NANO2开发板实例之USB2.0接口通信回环  基于
    发表于 03-24 10:06

    NANO2开发板实例之__FPGA实现UDP数据收发数据

    `NANO2开发板实例之__FPGA实现UDP数据收发数据 1、首先需要了解网络分层结构,直接看图,分层架构已经很清晰了。 了解一下这些名词U
    发表于 03-25 12:46

    NANO2开发应用之 如何使用xilinx下载工具下载bit,固化FPGA

    `NANO2开发应用之如何使用xilinx下载工具下载bit,固化FPGA 1、首先,需要在PC下识别xilinx下载器设备 2、打开xilinx下载工具,也可以可以从
    发表于 03-26 10:53

    基于FPGAUSB2.0设计

    基于FPGAUSB2.0设计
    发表于 12-07 11:27

    USB模块,USB2.0模块,USB数据采集模块,USB开发板

    的时间内完成高速的USB2.0数据传输功能的开发。功能特点:1、FPGA程序和VC应用程序开源设计(但不提供CY7C68013固件源码),用户可以根据自己的需要修改源码;2、独家提供稳
    发表于 10-15 10:18

    USB模块,USB2.0模块,USB数据采集模块,USB开发板

    的时间内完成高速的USB2.0数据传输功能的开发。功能特点:1、FPGA程序和VC应用程序开源设计(但不提供CY7C68013固件源码),用户可以根据自己的需要修改源码;2、独家提供稳
    发表于 01-09 14:31

    想问一下怎么用FPGA去驱动这个芯片来完成USB2.0协议?

    我的FPGA开发板上带了USB HOST接口芯片USB3320,想问一下怎么用FPGA去驱动这个
    发表于 03-21 14:42

    USB2.0接口的虚拟逻辑分析仪卡的设计与实现

    本文介绍了USB 的优缺点,较详细地论述了笔者开发的一块基于USB2.0 接口的虚拟逻辑分析仪卡,包括它的USB
    发表于 08-11 09:52 17次下载

    USB2.0接口IP核的开发与设计

    USB2.0接口IP核的开发与设计 随着PC机和外围设备的发展,传统的并行接口和串行接口RS-232在易用性(即插即用) 和端口扩展等方面
    发表于 04-22 16:34 1170次阅读

    基于FPGAUSB2.0控制器设计

    摘要:介绍了一种用VHDL设计USB2.0功能控制器的方法,详术了其原理和设计思想,并在FPGA上予以实现。 关键词:USB VHDL FPGA
    发表于 06-20 13:26 1511次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>USB2.0</b>控制器设计

    USB开发板功能特点

    USB2.0 开发板 USB+FPGA 开发板 USB2.0 开发板功能特点 ● 符合
    发表于 12-13 10:32 57次下载
    <b class='flag-5'>USB</b><b class='flag-5'>开发板</b>功能特点

    数字合成扫频仪USB2.0接口设计

    在对数字合成扫频仪的硬件设计进行概述的基础上,描述了一种基于ISP1362的USB2.0接口设计方案,包括USB接口的硬件结构设计,
    发表于 05-30 09:17 0次下载
    数字合成扫频仪<b class='flag-5'>USB2.0</b><b class='flag-5'>接口</b>设计

    USB2.0协议的通用测控通信接口设计

    USB2.0协议的通用测控通信接口设计
    发表于 08-31 14:20 23次下载
    <b class='flag-5'>USB2.0</b>协议的通用测控<b class='flag-5'>通信</b><b class='flag-5'>接口</b>设计

    PL2586 USB2.0 HUB芯片设计方案

    PL2586 USB2.0 HUB芯片设计方案
    发表于 12-07 09:47 28次下载

    AN4775_从USB2.0接口USB_Type-C接口的基础和低成本STM32解决方案

    AN4775_从USB2.0接口USB_Type-C接口的基础和低成本STM32解决方案
    发表于 11-21 17:07 6次下载
    AN4775_从<b class='flag-5'>USB2.0</b><b class='flag-5'>接口</b>到<b class='flag-5'>USB</b>_Type-C<b class='flag-5'>接口</b>的基础和低成本STM32解决<b class='flag-5'>方案</b>