欢迎访问autooo.net
在传输要求甚高的情况下,选用EZ-USB FX2提供的Slave FIFO的BULK(批量传输)模式,能很好的满足传输要求。在这种模式下,USB芯片内存单元中划分出6个端点(endpoint),以下简称为EP。EP0和EP1被保留作为芯片配置FIFO。EP2、4、6、8可作为用户传输,并且4个EP采用双重FIFO(double FIFO)的方式组织构成。
举例来说,如图2所示,USB执行OUT传输,将EP2端点设成512字节双重FIFO。在外部器件看来,USB端只要有1个512字节的FIFO为“半满”,就可以继续发送数据。当操作的FIFO写“满”时,FX2自动将其转换到外部接口端,排除等候读取;并将USB接口队列中下一个为“空”的FIFO转移到USB接口上,供其继续写数据。外部接口端与此类似,只要有1个FIFO为“半满”,就可以继续读取数据。当前操作的FIFO读“空”时,FX2自动将其转换到USB接口端,排除等候写并将外部接口队列中下一个为“满”的FIFO转移到接口上,供外部器件使用。

图2 EndPoint示意图
图3所示为双重FIFO的工作过程。当一个512字节的FIFO满时,FPGA可以取出里面的数据,同时PC可以向另一个FIFO写入数据(一组实箭头)。当一个512字节的FIFO空时,PC可以写入数据。同时FPGA可以读取另一个仍然有数据的FIFO(一组虚箭头)。
本文相关DataSheet:

图3 双重EP运作模式
2 固件程序设计
在通过编写固件程序初始化设备过程中,以下重要的配置寄存器需要设置。
IFCONFIG;设置USB时钟由外部提供,并且选用Slave FIFO模式。
EPXCFG(X=2,4,6,8);配置4个EP(端点FIFO)的模式。
EPXFIFOCFG(X=2,4,6,8);配置4个EP的自动传输模式以及传输位宽。
其他一些寄存器,根据实际的需要可以单独配置。本设计中配置EP2用于传输命令头,EP4用于传输源码文件,EP6用于传输命令,EP8用于传输解码结果文件。
在完成固件程序的设计之后,可以利用FX2自带的Control Panel将固件程序的编译结果下载到68013A的中,或者存放在外部的I2C中,以便下次复位时,芯片自己读取。
3 电路设计原理图

图4 电路设计原理图
图4为本设计的电路设计原理图,原件按左起以及上起顺序分别为:CY7C68013A芯片、电源耦合电容组、USB 2.0标准接口、标准RS232串行口、外部晶体振荡器和HIN232串口芯片。本设计是按照这一电路原理图制作电路板图,完成USB 2.0的
欢迎访问autooo.net