我是靠谱客的博主 火星上外套,最近开发中收集的这篇文章主要介绍基于cy7c68013的USB通信(FPGA端开发资料)Slave FIFO模式调试(USB设备为FPGA),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

USB基本知识

 

  1. 概念:USB是一种通用串行总线。

 

  1. USB系统:一定是由一个PC和外围设备组成。外设称为USB设备,PC为主机。主机里有USB主控制器,负责完成主机和USB设备之间的物理数据传输。USB主控制器分为两种,具体哪两种这与FPGA开发无关,在此不细说。USB设备分为集线器和功能设备两种,集线器可以让一个USB端口连接多个设备。功能设备指的是功能性的设备,例如鼠标键盘。

 

  1. USB信号线:一共四根线,两根差分NRZI编码线。两根电源线,电压5V,最大电流100mA,500mA。

 

  1. USB事务处理:主机和USB设备之间的数据传输最基本的单位。它是有特定格式的信息包。主机和USB设备之间的通讯需要多个事务处理包才能完成。

 

  1. USB的传输类型:控制传输、批量传输、中断传输、同步传输。具体如下表。

同时,USB接口和FPGA的通讯大都采用的是68013芯片的FIFO模式。根据FIFO的传输特性,满足大量、速度恒定、有周期性的要求,所以应该是同步传输模式。这种通讯类型等特性的选择可以通过固件配置。

 

  1. USB的描述符:这个东西的定义晦涩难懂,对于FPGAer来说,把它看成了用来定义USB各个性能参数的寄存器。

 

  1. USB的设备请求:大概定义了USB各类请求格式。对于FPGAer而言,依旧不知道它干啥的,应该也不用知道。

 

 

 

CY7C68013芯片

 

  1. 简介:他是第一款支持USB2.0协议的微处理器。支持12Mb/s全速传输(即USB0)和480Mb/s(即USB2.0)高速传输。上文提到的四个传输类型该芯片都支持,但是和FPGA通讯所采用的FIFO模式,是其中的同步传输模式。具体框架如下图:

 

 

大概的接口图如下:

 

  1. 显著特点:
  1. USB单芯片解决方案,集成了USB2.0,串行接口引擎,和增强型51内核。
  2. 可以软件配置RAM(即配置固件),方式多种:USB口下载、E2PROM(有专门的烧写软件)、或者外围的存储(只限于部分封装)。
  3. 可编程GPIF。
  4. 集成的81内核。
  5. 智能串行接口引擎。
  6. 中断矢量
  7. I2C接口
  8. 4个集成的FIFO轻松和外部FPGA/DSP等连接

 

 

  1. FIFO模式

该模式是与FPGA/DSP等芯片连接的一种常见模式。之前版本的USB芯片,微处理器(51内核的)都要参与数据的处理。在速率不高的时候,12Mb/s全速传输模式下没有问题,但是到了480Mb/s的时候,微处理器就成为了瓶颈。

而此版本的68013直接解除了微处理器对数据处理的干预。

68013的通讯类型等特性可以通过固件配置。根据FIFO的传输特性,满足大量、速度恒定、有周期性的要求,所以应该是同步传输模式。

 

最高是96MByte/s。以8bit为例,则传输速率是96Mhz,一共四个FIFO,可以同时工作,所以fifo最高速率是24Mhz。(FPGA和FIFO的通讯同时只能和一个fifo)

 

 

  1. 增强型8051

画重点:外接24Mhz,内部分频,产生480MHZ供USB2.0使用。(疑问:这里的480MH的时钟就是为上文中480Mb/s高速传输模式提供的源吗)

     8051的内存:由下图而知,从下至上主要分为了8K的主RAM(地址0000·1FFF),用于缓存代码和数据,同时这部分的内存可以通过EA角进行外扩内存。(地址E000·E1FF)作为临时RAM,不能跑程序。(地址E400·E47F)用于存储GPIF的波形。(地址E600·E6FF)用于保存控制状态寄存器。(地址E740·E7FF)和(F000-FFFF)都是用于数据缓冲的内存。分别称之为端点0/1/2/4/6/8。 其中端点0和端点1仅能由固件程序访问。2/4/6/8端点是FIFO的空间。

对于FPGA开发者而言,唯一需要了解的是,FIFO模式下读写的数据(端点2/4/6/8)缓存的地方其实就是8051的内存区F000-FFFF。

 

 

  1. IO系统:IO功能分为了三类,第一类就是普通的IO口,第二类就是FIFO模式下的数据读写口,第三类是GPIF接口。

 

 

 

Slave FIFO模式调试(USB设备为FPGA

  • 1.基本要素:虽然基于FX2(68013)芯片的设备可以直接使用FX2的内核8051传输数据,但是大部分环境下,还是将FX2用做USB和外部逻辑芯片(DSP或者ASIC等)的一种连接通道。

USB数据通过可以通过FX2的内置FIFO让数据在主设备(PC)和逻辑设备(FPGA)间传输。

GPIF和slave fifo模式其实都是属于FX2芯片的fifo模式。

对于那些逻辑芯片里没有标准fifo接口的,FX2里面内置的GPIF可以作为主控,在这种模式下(GPIF模式下)我们称之为主fifo模式,FX2本身就是FIFO的主控设备。当FIFO被外部的设备控制时(外部设备主控),例如,和FPGA相连,就是处在Slave FIFO模式。

Slave FIFO模式下,包括了四个FIFO。他们能够工作在16位和8位模式。大概的系统框图如下:

其中硬件配置涉及的部分寄存器如下:

  • 2.引脚:

FX2的复位只能在普通的IO模式下进行,在fifo模式下是不可以进行复位的,所以你看在slave模式下是没有复位信号的。

如果想把芯片配置到SLAVE fifo模式下,需要对IFCONFIG 这个寄存器进行设置,fifo和外部主控的信号连线如下图:

SLOE:FD数据信号是双向的,可以通过SLOE信号线进行选择。低有效。

FIFOADR:选择哪一个FIFO挂到FD总线上。低有效。

SLRD、SLWR:读写信号。分为了同步和异步两种模式。低有效。

FD:总线。可以配置为8bit和16bit模式。8模式下,用的是PORT B。16模式下,用的是PORT B和 PORT D。(PORT的概念可以去FX2手册中找)。上电默认是16位模式。其中,如果改成8位模式的时候,PORT D可以作为普通IO使用。

IFCLK:可以使用内部时候和外部时钟。内部时钟的时候,时钟频率30/48可以选择。外部时钟的时候,5到48MHZ时钟可以调整。上电默认是内部时钟48MHZ。

FLAG(FLAGA, FLAGB, FLAGC, FLAGD):这些信号主要用于监测FIFO状态,具体功能可以配置。FLAGA, FLAGB, and FLAGC 这些都可以工作在indexed和fixed两个模式。FLAGD 只能工作在FIXED模式。

Indexed模式下,flag只能显示所选择的fifo的状态,FLAGA/B/C分别代表“programmable-level” ,full,empty。Fixed模式下,flag显示特定fifo的状态,而无论是否选择了该FIFO。full,empty默认是低有效,也可以用寄存器进行配置。

上电默认是Indexed模式。

FIFOADR:选择哪一个FIFO。

PKTEND:无论设置的数据长度是多少,有效该信号则代表数据传输的结束。一般用于长度比较短的数据。例如,如果通过寄存器设置的数据长度是512byte.当一次传输的数据长度短于512时,由于数据低于设置的长度,一般主控有两个方法让数据发送。一个就是发送虚拟的数据满足最终的长度。或者有效PKTEND脚,这样就能直接写短长度的数据。

SLCS:FIFO选通信号。该信号有效,则所有控制才有效。

 

 

 

3.时序

引脚的控制时序:控制管脚主要是SLOE(输出使能),SLED(读使能),SLWR(写使能),PKTEND(包尾),FIFOADR(FIFO选择)。这里的读写都是以外部的主设备角度讲的。

读时序:SLOE使能FD总线脚。 同步模式,SLRD在时钟上升沿有效,SLRD有效同时FIFO计数加一个。异步模式则在SLRD变化时有效。他们默认都是低有效。

写时序:同步模式,SLWR上升沿有效。默认都是低有效。

 

写案例:

典型写过程(相对于主机):

 

典型读过程(相对于主机):

 

注意:读过程比写过程多了对SLOE信号的使能。

异步时序暂时不做讨论。可以参照官方文档。

 

 

 

调试记录

(读):

(写):

 

Rd和oe的关系:按照官方推荐sloe是需要提前slrd有效的

 

 

主要的参考资料:

1.《USB+FPGA开发文档》(某开发板资料)

2.《FX2开发手册》官方手册

3.《GPIF开发手册》本文中未做参考,有需要的可以看看

 

所有资料均在本人的CSDN的资源页面。

 

最后

以上就是火星上外套为你收集整理的基于cy7c68013的USB通信(FPGA端开发资料)Slave FIFO模式调试(USB设备为FPGA)的全部内容,希望文章能够帮你解决基于cy7c68013的USB通信(FPGA端开发资料)Slave FIFO模式调试(USB设备为FPGA)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部