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

基于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


怼三星S8和iPhone8!雷军:小米MIX2有更多黑科技!
台湾半导体设备已经不能出售给晋华!
焊锡丝(锡线出现炸锡到底是怎么回事?
什么是气象站?气象站的简介
魅族取消附赠充电器的动机是什么?
基于FPGA NANO2开发板实现USB2.0接口通信的设计方案
iPhone 12 mini销量为什么不行?
小米申请铁蛋商标
e络盟现货供应新款BeagleV-Fire单板机
苹果收购英特尔5G业务是众望所归
向量数据库是如何工作的?
二维式超声波风速风向传感器的工作原理
实际积分电路
单片机对汽车行车状况实时监测和语音提醒的实现
浅析开关电源中的频率抖动
可编程逻辑器件中逻辑怎么来实现
泛林发布 2022 年 ESG 报告,展示在实现“零净排放”方面取得的进展
一文解析主动分频器和被动分频器的优缺点
三星GalaxyS9Plus和iPhoneX哪个好
交流汇流箱在分布式光伏行业中应用