Window XP驱动开发(十一) USB2.0 芯片CY7C68013A+FPGA实现的高速

转载请标明是引用于

欢迎大家拍砖!

一、 CY7C68013A芯片介绍1、 特点

* USB 2.0 高速(TID # 40460272)

* 单片的集成USB2.0收发器, Smart SIE 且有加强的8051 微处理器.

* 可编程的64Byte 端点。

* 8 bit 或 16 bit 外部数据接口

* Smart Media 标准 ECC Generation

* 为控制传输的配置和数据端口的分开数据Buffers

* GPIF(General Programmable Interface)

使能直接连接到并行串口

可编程的波形描述符并配置寄存器来定义波形.

支持RDY输入和CTL输出。

2、 应用

* 便携的视频记录器

* MPEG/TV 转化器

* DSL 模块

* ATA 接口

* 内存读卡器

* 摄像头

* Home PNA

* 无线的LAN

* MP3播放器

3、 功能概况3、1 USB 速度

* 全速,12Mbps

* 高速,480Mbps

(不支持低速的传输,1.5 Mbps)

3、2 8051 微处理器

EZ-USB FX2中内嵌的增强型8051微处理器带有256B的数据存储器、扩展的中断系统、3个定时/计数器和2个串口UART。

FX2需外接24MHz的晶振,并匹配20pF的电容接地,经过内部倍频电路,产生48MHz的增强型8051默认工作频率。

FX2还需产生480MHz的时钟脉冲以供USB2.0串行收发使用。

3、2、1 数据存储器

数据存储器分为3个部分:地址范围为00h-7Fh的直接寻址区、地址范围为80h-FFh的特殊功能寄存器区(SFR)和地址范围为80h-ffh的间接寻址区。

3、2、2 中断系统3、2、3 挂起和复位

在接收到USB总线发出的挂起信号后,增加型8051通过设置其寄存器PCON.0为1,可使EZ-USB FX2进入省电状态,这时FX2的振荡电路将停止工作。

唤醒方法有3种:USB总线的恢复信号、外部信号触发WAKEUP管脚和外部信号解发WU2(WAKEUP)管脚。

EZ-USB FX2 8051的复位信号由主机通过一个寄存器位CPUCS.0控制。在FX2芯片上电时,9051处于各复位状态;待软固件代码下载至芯片的RAM中后,主机

将清除CPUCS.0,使8051脱离复位状态,并开始它的固件程序。

3、3 I2C 总线3、4 总线3、5 USB Boot 方法

在上电阶段,查找内部的I2C端口,如果第一byte是0xC0或0xC2,那么它用EEPROM中的VID/PID/DID值;

如果没有EEPROM被找到,那么FX2LP会枚举内部存储的描述符。

默认的ID值是VID/PID/DID(00x4B4, 0x8613,0xAxxx where xxx = 芯片的版本)

3、6 枚举

当第刚插入USB时,FX2LP会自动枚举并下载软硬件和USB描述符表。

接下来,FX2LP会再枚举。

3、7 Bus-Powered 应用3、8 中断系统

3、8、1 INT2中断请求和全能寄存器

FX2LP执行INT2和INT4的自动vector。 总共有27个INT2(USB)vector,和14个INT4 (FIFO/GPIF)vector.

3、8、2 USB中断 Autovcetors

主USB中断被27个中断源共享。FX2LP提供第二层的中断vectoring, 叫Autovectoring.

3、9 存储空间

EZ-USB FX2的片内存储由3部分组成:主RAM(0x000-0xfFFF)、临时RAM(0xE000-0xE1FF)和寄存器/缓冲器(0xE222-0xFFFF)。如下图。

其中8k字节的RAM被程序存储器和数据存储器所共享;

0.5k字节的临时RAM仅用作为数据存储器;

7.5K字节的寄存器/缓冲器包含FX2控制/状态寄存器和各端点的数据传输缓冲区。

3、9、1 片内存储区

在上图中,地址范围为0x0000-0x1FFF的8K字节用于存储8051的程序代码和数据,称为“主RAM“。

3、9、2 片内0xE000-0xFFFF存储区

其中,512字节的临时RAM(0xE000-0xE1FF)仅作为数据存储器,8051固件代码不能在该空间运行;

128字节的0xE400-0xE47F空间用于存储GPIF的4个波形描述符;

0xE600-0xE6FF空间用于保存FX2的控制和状态寄存器;

0xE740-0XE7FF和0xF000-0xFFFF空间作为FX2端点的数据缓冲区,用户可通过寻址RAM方式或FIFO方式来访问。(重点)

2、9、2、1 FX2端点缓冲区

EZ-USB FX2 芯片内部包含3个固定的64字节端点缓冲区(0xE740-0xE7FF)和4KB的可配置端点缓冲区空间(0xF000-0xFFFF),如上图。

3个64字节的缓冲区分别用于EP0、EP1IN和EP1OUT,

4KB的可配置缓冲区用于EP2、EP4、EP6和EP8

(1)其中,,端点1支持传输、中断和同步传输,其OUT数据占用缓冲区0xE780-0xE7BF,IN数据占用缓冲区0xE7C0-0xE7FF。

(2)端点0和端点1仅能由FX2的固件程序访问。

(3)端点2、端点4、端点6和端点8是大容量高宽带的数据传输端点,其无需8051固件干涉就可同外围电路完成高速数据传输。

这4个端点的配置方式非常灵活,以适应不同场合下的带宽要求。见下表。

其中,双重缓冲意味着USB读写一个缓冲区的同时,另一个缓冲区可与外围电路进行数据通信;

三重缓冲增加了第三个数据缓冲区,可供USB端或外围电路使用;

四重缓冲增加了第四个数据缓冲区。

注意:这里的缓冲区按我的理解:如FPGA给的数据太快时会而MCU还没来取数据,那么会先放到缓冲区中,让值不会被覆盖。

3、10 I/O系统

EZ-USB FX2提供了两种类型的I/O系统:可编程I/O口和I2C控制器。

I/O口由PA、PB、PC、PD、PE组成,共40个脚。注意:如果是100脚和128脚封装的FX2包含全部5个I/O口,而56脚的仅包含FA、FB和FD。

I2C总线使用SCL和SDA两个管脚。

3、10、1 I/O口

与EZ-USB不同,FX2的增强型8051使用特殊功能寄存器0Ex(0EA、0EC、0ED、0EE)和IOx(IOA、IOB、IOC、IOD)来控制其I/O管脚。结构如下图:

3、10、2 从属FIFO接口模式

为便于端点2、端点4、端点6和端占8的数据缓冲区能更好地和外围电路进行通信,FX2还提供了2种接口模式:

从属FIFO和GPIF。其由寄存器IFCFG控制。

(1)从属FIFO模式。

以下是它的模式结构和外围电路的典型连接图:

其中IFCLK为接口时钟,可由芯片内部产生(30MHz/48MHz),也可由外部输入(5MHz-48MHz);

FLAGA-FLAGD为FIFO标志管脚,用于映射FIFO的当前状态;

SLCS#为从属FIFO的片选信号,低电平有效;

FD[15:0]为16位双向数据总线;

FIFOADR[1:0]用于选择和FD连接的端点缓冲区(00代表端点2,01代表端点4,10代表端点6,11代表端点8)

SLOE用于使能数据总线FD的输出;

SLRD和SLWR可分别作为FIFO的读写选通信号;

外围电路可通过使能PKTEND管脚向USB发送一个IN数据包,而不用考虑该包的长度。

(2) GPIF接口模式

在GPIF模式下,EZ-USB FX2可由软件来编程输出读写控制波形。这时,它几乎可对任何通用总线接口进行访问,如ASIC、DSP等。

下图展示了GPIF模式结构和这种模式下FX2和外围电路的典型连接。

其中,GPIFADR[8:0]用于输出9位地址;

IFCLK为接口时钟;

FD[15:0]为16位双向数据总线;(因为是16根数据线过来,所以得把接收FPGA数据的端点的WORDWIDE属性设置为1,不然会数据出错)

CTL[5:0]用于输出可编程的控制信号,如读写选通等;

RDY[5:0]为输入的状态信号。

GSTATE[2:0]用于输出当前GPIF状态码,通常仅在调试时使用。

3、11 列举和重列举

与EZ-USB类似,FX2在上电时,首先由“缺省USB设备”进行“列举”,并把8051固件下载到芯片的RAM内;之后8051会脱离复位并开始执行这些代码,

并照固件的内容再一次对设备进行“重列举”。再重列举完成后,对控制端点0的设备请求可FX2缺省USB设备处理(USBCS中的RENUM位为0),

也可由增强型8051的固件代码处理(RENUM为1)。

3、11、1 缺省USB设备

当EZ-USB FX2列举完成后,它将以“缺省USB设备”展现给用户,这时其只含有1个USB配置,该配置中包含1个接口,这个接口具有4种可替换设置

0、1、2 和3,见下表(全速模式)和(高速模式)。

3、11、2 端点0对设备请求的响应

在RENUM == 0时,EZ-USB FX2内核可自动对端点0的控制请求做出响应。除支持USB标准设备请求外,其还可以支持一些供应商自定义的请求。

3、11、3 无EEPROM列举模式

当EZ-USB FX2上电并脱离复位状态后,其就会检查芯片的I2C总线上是否连接有串行EEPROM,如果存在,它将读取一个字节以决定其列举模式。

根据是否存在EEPROM及其首字节内容,FX2共有3种列举模式:无串行EEPROM、EEPROM的首字节为0XC0、EEPROM的首字节为0XC2.

(1) EEPROM首字节为0XC0的列举模式

它将从EEPROM中读取VID、PID和DID的值,而各种USB描述符仍由FX2芯片内部提供。

下表是这种模式下EEPROM中数据模式,其中地址7为配置字节,用于设置I2C总线的传输速率和USB断开极性(缺省是FX2脱离复位后和USB连接)。

(2) EEPROM首字节为0xC2列表模式

此时VID、PID、DID、各种USB描述符,及其8051代码都由该EEPROM提供。

二、 系统设计

将CY7C68013A芯片的Slave FIFO块传输接口模式和FPGA技术相结合,实现了计算机与外设之间高速的数据传输。

1、硬件及外设控制设计

CY7C68013A与外设有三种接口方式:端口模式、可编程接口GPIF和Slave FIFO。

联系朋友别欠费,天空辽阔任你飞,再多困难别后退! “

Window XP驱动开发(十一) USB2.0 芯片CY7C68013A+FPGA实现的高速

相关文章:

你感兴趣的文章:

标签云: