Void TD_PoLL(void):此函数在设备运行时被重复的调用,应包括完成特别任务的代码。在该函数返回前,优先级高的任务可能己完成。若它返回值为假,EZ—USBFX2将不会影响设备请求和USB总线设备挂起事件。若需要大量的处理时间,EZ-USBFX2会通过多次调用TD_PoLL函数将时间分段。
BooL TD_suspend(void):此函数是在设备进入挂起状态前调用,在其中加入适当的代码,配置设备的工作状态,可使设备处于低功耗状态并返回真值。可以改动TD_Suspend的程序代码,使其返回为假,可使EZ-USBFX2不进入挂起状态。
Void TD_Resume (void):当外部要求重新启动时,设备会通过调用此函数对处理器重启,即TD_SUspendO函数的逆操作。此时,设备在正常电源下重新启动。设备请求函数主要完成对来自主机的命令和请求的处理工作。
4.2 固件主程序
fw.c是固件程序的主程序文件,负责处理主机发出的各种USB设备请求。该程序首先初始化所有的内部状态变量,然后调用TD_InitO函数初始化,并打开中断。然后,固件程序开始列举USB设备,直至在端点0上接收到SETUP包为止。一旦接受到令牌包,框架将开始交互的任务调度。
整个系统实现过程中,设置一些重要寄存器。表1列出EZ—USBFX2为异步从属FIFO自动模式时,需要配置的相关寄存器。

5 FPGA程序的设计
编程思路:由于CY7C68013设置为异步SlaveFIFO模式,根据异步FIFO读写状态图,选择状态机来编写进程。其状态图如图3所示。

6 结语
以CY7C68013和FPGA接口为例描述了USB芯片的SlaveFIFO固件程序流程和设计思想,并且在项目中得到了实际应用,并且数据连续传输无误码,无丢失。