4.2 端点分配
系统中数据通道分为数据上传通道以及配置和控制命令通道,根据设计需要,选择其中两个端点分别作为发送和接收端点。配置如下:EP2用于从USB向FPGA传输采集控制命令,4×512字节缓冲,传输类型为批量OUT传输方式;EP6用于从 FPGA向USB传输数据采集结果,4×512字节缓冲,传输类型为批量IN传输方式。EZ-USB FX2相当于一个中转站,一方面将FPGA发来的采集数据传输给主机,另一方面将主机发送的数据采集参数传输至FPGA,便于控制A/D转换。
5 固件程序设计
固件是设备运行的核心,其主要功能是控制EZ-USB FX2处理驱动程序请求(如请求设备描述符、请求或设置设备状态及设备接口等USB2.0标准请求)、向FPGA发送采集参数、通过EZ-USB FX2缓存数据并实时上传至PC等。
本系统中,即使使用外部逻辑和内置通用可编程接口,在没有CPU的干涉下能够通过4个端点FIFO处理高速带宽数据,固件还需器件初始化、GPIF波形初始化、控制和监测GPIF的动作。
5.1 器件初始化
同件初始化函数为TD_Init(),主要负责对EZ-USB FX2的初始化,在同件开始运行时调用该甬数。其初始化工作主要分为以下步骤:
(1)设置EZ-USB FX2的IFCLK输出频率,将时钟频率设置为内部时钟48 MHz;
(2)设置EZ-USB FX2的EP2为BULK、OUT传输方式,EP6为BULK、IN传输方式,均为4倍缓冲;
(3)复位EP2 FIFO并设置为Auto OUT模式,复位EP6FIFO并设置为Auto IN模式;
(4)调用GpifInit()函数,初始化GPIF所需的寄存器;对EP2OUT、GPIF使用EF标志,对EP6IN,GPIF使用FF标志;
(5)初始化PA2为输出引脚并置为低电平,高电平时点亮LED。