SlaveFIFO使用手册Word文档下载推荐.docx

上传人:b****6 文档编号:19034087 上传时间:2023-01-03 格式:DOCX 页数:31 大小:1.37MB
下载 相关 举报
SlaveFIFO使用手册Word文档下载推荐.docx_第1页
第1页 / 共31页
SlaveFIFO使用手册Word文档下载推荐.docx_第2页
第2页 / 共31页
SlaveFIFO使用手册Word文档下载推荐.docx_第3页
第3页 / 共31页
SlaveFIFO使用手册Word文档下载推荐.docx_第4页
第4页 / 共31页
SlaveFIFO使用手册Word文档下载推荐.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

SlaveFIFO使用手册Word文档下载推荐.docx

《SlaveFIFO使用手册Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《SlaveFIFO使用手册Word文档下载推荐.docx(31页珍藏版)》请在冰豆网上搜索。

SlaveFIFO使用手册Word文档下载推荐.docx

.19

3.7EPxAUTOINLENH/L…………………………………………………。

20

3.8EPxFIFOPFH/L………………………………………………………..。

.21

3.9INPKTEND……………………………………………………………...22

3.10OUTPKTEND…………………………………………………………。

22

3.11EPxFIFOIE和EPxFIFOIRQ………………………………………。

.。

3.12PORTACFG…………………………………………………………...。

23

3.13EPxFIFOBCHEPxFIFOBCL………………………………………。

3.14EP24\68FIFOFLAG……………………………………………………24

3.15其它通用寄存器………………………………………………………。

.25

第四章同步slavefifo测试操作指南………………………………………。

26

4.1安装软件包……………………………………………………………。

..。

4.2同步写FIFO测试……………………………………………………….26

4.3同步读FIFO测试……………………………………………………….30

第五章红色飓风II开发板USB2FPGA软件设计…………………….….…….33

5.168013固件程序设计……………………………………………………。

33

5.2FPGA源代码设计………………………………………………………35

第六章USB2FPGA硬件原理图…………………………………………..……。

..37

第七章改板后注意的问题………………………………………………。

……..…37

附录1版本历史……………………………………………………………………39

一.FX2特性介绍

1.1介绍

CypressSemiconductor公司的EZ-USBFX2是世界上第一款集成USB2。

0的微处理器,它集成了USB2。

0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口.FX2这种独创性结构可使数据传输率达到56Mbytes/s,即USB2.0允许的最大带宽。

在FX2中,智能SIE可以硬件处理许多USB1.1和USB2。

0协议,从而减少了开发时间和确保了USB的兼容性。

GPIF(GeneralProgrammableInterface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口.

1.2结构

CY7C68013结构图如图1所示。

它有三种封装形式:

56SSOP,100TQFP和128TQFP。

1.3特征:

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

★为适应USB2.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总线的“无胶粘贴”。

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

二、SlaveFIFO传输

2.1概述

当有一个与FX2芯片相连的外部逻辑只需要利用FX2做为一个USB2。

0接口而实现与主机的高速通讯,而它本身又能够提供满足SlaveFIFO要求的传输时序,可以做为SlaveFIFO主控制器时,即可考虑用此传输方式.

SlaveFIFO传输的示意图如下:

在这种方式下,FX2内嵌的8051固件的功能只是配置SlaveFIFO相关的寄存器以及控制FX2何时工作在SlaveFIFO模式下。

一旦8051固件将相关的寄存器配置完毕,且使自身工作在SlaveFIFO模式下后,外部逻辑(如FPGA)即可按照SlaveFIFO的传输时序,高速与主机进行通讯,而在通讯过程中不需要8051固件的参与。

2.2硬件连接(标准)

在SlaveFIFO方式下,外部逻辑与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.3SlaveFIFO的几种传输方式

2.3.1同步SlaveFIFO写

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

同步SlaveFIFO写的标准时序如下:

IDLE:

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

状态1:

使FIFOADR[1:

0]指向INFIFO,进状态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同步SlaveFIFO读:

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

同步SlaveFIFO读的标准时序如下:

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

使FIFOADR[1:

0]指向OUTFIFO,进状态2;

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

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

状态4:

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

图示正常情况时的时序.

图示FIFO被读空时的情况。

2.3.3异步SlaveFIFO写:

异步SlaveFIFO写的标准连接图如下:

异步SlaveFIFO写的标准时序如下:

使FIFOADR[1:

0]指向INFIFO,进状态2;

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

驱动数据到数据线上,使SLWR有效,再无效,以使FIFO写指针递增,进状态4;

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

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

2.3.4异步SlaveFIFO读:

异步SlaveFIFO读的标准连接图如下:

异步SlaveFIFO读的标准时序如下:

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

0]指向OUTFIFO,进状态2;

如FIFO空,在本状态等待,否则进状态3;

状态3:

使SLOE有效,使SLRD有效,从数据线上读数,再使SLRD无效,,以递增FIFO读指针,再使SLOE无效,进状态4;

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

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

图示正常情况时的时序。

三、寄存器设置

slavefifo模式下常用寄存器

IFCONFIG

EPxFIFOPFH/L

PINFLAGAB

PORTACFG

PINFLAGCK

INPKTEND

FIFORESET

EPxFLAGIE

FIFOPINPOLAR

EPxFLAGIRQ

EPxCFG

EPxFIFOBCH:

L

EPxFIFOCFG

EPxFLAGS

EPxAUTOINLENH:

EPxBUF

3.1IFCONFIG(E601):

接口配置寄存器

IFCLKSRC:

FIFO时钟内部/外部时钟源选择,0外部时钟源,1内部时钟源。

3048MHZ:

如选择内部时钟,30MHz/48MHz频率选择,0IFCLK时钟30M,1IFCLK时钟48M.

IFCLKOE:

IFCLK时钟输出使能,0关闭,1打开。

IFCLKPOL:

IFCLK输出反转使能,0不反转,1反转。

ASYNC:

SlaveFIFO同步/异步工作方式选择,0同步,1异步。

GSTATE:

选择是否将GSTATE[2:

0]在PORTE[2:

0]输出,0关闭,1使能。

IFCFG1:

0:

FX2I/O端口模式选择,也既是上面所说的FX2与外部逻辑传输方式的选择。

00:

I/O方式;

01:

reserved;

10:

SlaveFIFO方式;

11:

GPIF方式。

3.2PINFLAGSAB/CD(E602:

E603):

FLAGx引脚配置寄存器

FLAGA,FLAGB,FLAGC,FLAGD反映FIFO状态选择。

每个脚有编址/固定两种模式:

如设为编址模式,则它们都反映FIFOADR[1:

0]脚当前所指端点的状态,其中,FLAGA反映“可编程极限”,FLAGB反映“满”标志,FLAGC反映“空"

标志,FLAGD不存在;

如设为固定模式,它们均可任意设置成反映任意端点的任意标志,而不受限于FIFOADR[1:

0]脚当前所指端点的状态。

Slavefifo模式中,用引脚FLAGA~FLAGD来定义用端点FIFO的状态,并可灵活编程来实现FLAGx设置,见表3.2

说明:

1.PF表示FIFO编程状态,EF表示FIFO已空,FF表示FIFO已满

2.0000为索引模式,其它为固定模式

3.3FIFORESET(E604):

端点缓冲区复位寄存器

将FIFO复位到初始状态.具体过程是,写0x80到此寄存器,NAK所有主机请求;

写0x02,0x04,0x06,0x08分别复位各个端点;

写0x00,结束复位过程.

一般,在每一次开始进行slaveFIFO或GPIF传输之前,先复位端点,再清空端点,然后即可进行数据传输。

NAKALL-0关闭NAK功能,1用NAK响应主控器请求,例如在复位端点FIFO时,为了保证复位正常,防止主控器请求的干扰,先写入0x80,然后复位端点,最后写入0x00,使能请求响应.

EP3~EP0,1复位对应的端点缓冲区,其中EP3~EP0分别对应端点EP8,EP6,EP4,EP2。

3.4FIFOPINPOLAR(E609):

控制引脚极性设置寄存器

SlaveFIFO引脚极性设置:

0低有效,1高有效。

提示:

PF极性没有提供寄存器设置,为高有效。

3.5EPxCFG(E610:

E615):

端点2,4,6,8配置

VALID-0端点无效,1端点有效

DIR-端点方向,0=OUT方向,1=IN方向,默认端点2,4为IN,端点6,8为OUT

TYPE1,TYPE0-端点类型,见表3.4

SIZE-缓冲区大小(仅端点2和端点),0=512字节,1=1024字节

BUF1,BUF0-端点缓冲区个数(仅端点2和端点6),见表3。

5

3.6EPxFIFOCFG(E618:

E61B):

端点FIFO配置寄存器

INFM1:

FIFO状态标志是否提前一个字节有效选择,IN端点满减1,1使能,0非使能。

OEP1:

FIFO状态标志是否提前一个字节有效选择,OUT端点空加1,1使能,0非使能。

AUTOOUT:

在前面,我们说SlaveFIFO方式下的数据传输过程不需要FX2固件的参与,实际上是不确切的,应该说,FX2固件可以不参与数据传输过程,也可以参与。

AUTOOUT即可设置。

如果设置AUTOOUT为1,则就如上面所说的,FX2固件只需要完成初始化工作,真正的数据传输是不需要FX2固件的参与的,具体的说,当FX2从主机收到一包数据时,外部逻辑即可看到FIFO端点缓冲区状态的改变,然后从中取数。

如果设置AUTOOUT为0,则数据传输过程就需要FX2参与了,此时当FX2从主机收到一包数据时,FIFO端点缓冲区状态的改变并不会立刻在端口显现,而是固件先看到FIFO端点状态的改变,此时,FX2固件可以做三件事情:

a.向OUTPKTEND中的SKIP位写0,使FIFO端点状态的改变在端口显现,从而使外部逻辑可以从FIFO端点中读取数据;

b.向OUTPKTEND中的SKIP位写1,丢掉这包数据,这样就相当于主机从来就没有发送这一包数据,外部逻辑当然也不能从FIFO端点中读到这一包数据了;

c.从新编辑这一包数据,设置完全重写整个包的数据,再写EPxBC寄存器,把数据传给外部逻辑。

在FX2复位之后,如果其OUT端点缓冲区内有一包数据未处理,这包数据并不会自动传给外部逻辑。

所以,为保证OUT端点缓冲区内没有未处理数据,在resetFX2后,要清空一下OUT端点缓冲区,具体做法就是向SKIP位写1(OUT端点缓冲区有几个缓冲区就写几次).

AUTOIN:

AutoIN和AutoOUT有一点不同,在AutoOUT里,包的大小只能是512或1024,而在AutoIN里,包的大小可以任意设定,甚至可以是0字节,这可以通过EPxAUTOINLENTH/L设置。

和AUTOOUT类似,当设置AUTOIN=0时,FX2固件可以传输,丢弃,修改外部逻辑传过来的数据,这通过向INPTKEND寄存器的SKIP写不同的值实现。

ZEROLENIN:

是否允许传输0字节,1使能,0非使能。

WORDWIDE:

8Bit,16Bit选择。

当选择8Bit模式时,PortB将是FD[7:

0];

当选择16Bit模式时,PortD将是FD[15:

8],1则为16位,0则为8位。

3.7EPxAUTOINLENH/L(E620:

E627):

端点2,4,6,8AUTOIN长度设置(仅IN端点有效)

设置AUTOIN时自动传输的包大小(注意,不能大于IN端点的缓冲区的大小)。

PL10仅端点2和6有效

3.8EPxFIFOPFH/L(E630:

E637):

FIFO可编程PF状态长度设置

DECIS-0小于等于门限值PF有效,1大于等于门限值PF有效

PKSTAT-

1.OUT端点FIFO:

门限值为PFC12:

0设置,当FIFO长度小于等于门限值(DECIS=0),或者FIFO长度大于等于门限值(DECIS=1),则PF有效.

2.IN端点FIFO,且PKTSTAT=1:

门限值为PFC9:

3.IN端点FIFO,且PKTSTAT=0:

门限值由两部分组成:

PKTS2:

0(数据包)再加上PFC9:

0(当前数据长度).

解释:

对于OUT包,极限存储在PFC[12:

0]中,在整个FIFO缓冲区中的数据数目少于等于(DECIS=0)或大于等于(DECIS=1)这个极限时,PF将有效。

对于IN包,当PKTSTAT=1时,极限存储在两部分:

PKTS[2:

0]存储极限包数(已经交给SIE但未传给主机的包数),PFC[9:

0]存储极限字节数(正在编辑的包里的字节数).在整个FIFO缓冲区中的数据数目少于等于(DECIS=0)或大于等于(DECIS=1)这个极限时,PF将有效.

3.9INPKTEND(E648):

结束IN传输

SKIP-当ENH_PKT(REVCTL寄存器bit0)为1时,0表示自动“分配”一个IN缓冲区,1表示将跳过一个IN缓冲区

EP3,EP2,EP1,EP0-代替PKTEND引脚功能,软件强行结束IN端点8,6,4,2IN数据传输,传输短包。

3.10OUTPKTEND(E649):

强行结束OUT传输寄存器

SKIP-当ENH_PKT(REVCTL寄存器bit0)为1时,0表示自动“分配”一个OUT缓冲区,1表示将跳过一个OUT缓冲区

EP3,EP2,EP1,EP0-代替EPxBLH.7=1引脚功能,软件强行结束OUT端点8,6,4,2数据传输。

3.11EPxFIFOIE和EPxFIFOIRQ(E652:

E657):

端点FIFO中断(INT4)使能和请求

EDGPF-PF中断触发沿,0上升沿触发,1下降沿触发

PF-1使能端点FIFOPF中断,0非使能

EF-1使能端点FIFOEF中断,0非使能

FF-1使能端点FIFOFF中断,0非使能

PF-0无PF中断,1有PF中断

EF-0无EF中断,1有EF中断

PF-0无FF中断,1有FF中断

3.12PORTACFG:

端口A配置

置1使能端口A复用引脚,虽然SLCS出现在PORTACFG。

6的位置上,当IFCFG1:

0=11时,PORTA。

7复用为SLCS,FLAGD也出现在PORTA。

7引脚上,当PORTACFG。

7置位时,PORTA。

7复用为FLAGD输出,当PORTACFG。

6和PORTACFG。

7均为1,则PORTA.7复用为FLAGD。

所以PORTACFG7:

6=01时,PORTA。

7复用为SLCS.

3.13EPxFIFOBCHEPxFIFOBCL(E6AB:

E6B2):

端点FIFO计数

当前端点缓冲区中已有的数据数目.

端点2最大缓冲区计数BC[12:

0],为4096字节.

端点6最大缓冲区计数BC[11:

0],为2048字节。

端点4和8最大缓冲区计数BC[10:

0],为1024字节.

3.14EP24\68FIFOFLAG(SFRAB:

SFRAC)和EPxFIFOFLGS(E6A7:

E6AA):

端点FIFO状态标志寄存器

3.15其它通用寄存器

CPUCS(E600):

PORTCSTB:

128脚或100脚的RD,WR输出使能。

CLKSPD1,CLKSPD0:

CPU频率选择,00:

12MHz(默认);

24MHz;

48MHz;

Reserved.

CLKINV:

CLKOUT反转选择。

CLKOE:

CLKOUT输出使能。

REVCTL(E608):

正常情况下,简单地设置DYN_OUT和ENH_PKT位为1即可。

四、同步slavefifo测试操作指南

4.1安装软件包

第一次使用时,首先要安装CYPRESS开发包,安装完毕后,在目录“windows\system32\drivers”中有一个文件ezusb。

sys,用驱动程序目录下的ezusb。

sys将其代替,两个驱动程序文件的区别是,后者将缓冲区的大小扩展为6M字节,详见驱动代码.

图4。

1

4.2同步写FIFO测试

插上开发板后,系统默认采用USB接口供电,PC上安装好下载线,并将下载线与开发板FPGA的JTAG下载口连接好,将FPGA程序下载到配置芯片中或内部flash,打开XILINX的编译软件ISE10.1,“相应目录\SPARTAN6_USB_test\FIFIO_WR\USB_SLAVE_LX16_WR”下的。

ise工程项目文件打开,将相应的bit文件或者。

mcs文件下载到FPGA中.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1