.
2.4 CPLD逻辑控制模块的设计
在该数据采集处理系统中,CPLD是一个重要的组成部分。由CPLD组成的逻辑控制模块接收DSP传送过来的动作命令,控制A/D转换模块进行数据采集,并提供对FIFO的接口时序,实现转换数据的存储。这里选用Altem公司的EPM3128A芯片,它共有128个宏单元,2500个可用门。
CPLD作为一个单独的控制执行结构.通过编写相应的Verilog HDL代码,即可生成相应的操作电路,实现对各种输入信号的锁存、判断和处理以及对各种命令信号的执行和输出信号的控制。
2.5 USB通信模块的设计
这里选用CYPRESS公司的EZ-USB FX2系列中的CY7C68013作为USB通信控制器芯片,它内含增强型8051微控制器,支持USB2.0传输协议,同时也向下兼容USBl.1规范。该芯片把USB2.0收发器、SIE(串行接口引擎)、增强型8051微控制器、I2C总线接口以及GPIF(通用可编程接口)集成于一体。CY7C68013提供了SlaveFIFO和GPIF两种接口模式,Slave FIFO模式是从机模式,外部控制器可以像对普通FI
FO存储器一样对FX2的多层缓冲FIFO存储器进行读写;GPIF模式是主机模式,可以由软件设置读写的控制波形,灵活性很大。这里采用的是Slave FIFO模式。
3 系统软件设计
系统软件设计包括DSP程序设计、USB固件程序设计、USB驱动程序设计和上位机应用程序设计。
3.1 DSP程序设计
DSP编程的主要任务是初始化、管理板上的资源和实现前端数字信号处理的算法。这里以TI公司提供的功能强大的CCS(Code Composer Studio)为集成开发环境。系统上电复位后。首先完成F2812自身的初始化,包括配置RAM块,设置I/O模式、定时器模式、中断等;然后程序进人循环状态,等待USB及FIFO的中断。F2812主程序流程图如图4所示。

在F2812的程序存储器中存储常用的数字信号处理算法,F2812在收到上位机通过USB总线发送的控制信息后,在中断函数中选择某种处理算法,同时向CPLD发出动作命令,控制A/D转换模块完成信号的采集并将采集到的数据存入FIFO中。当FIFO中数据达到半满时,向F2812提出中断申请,F2812响应此中断,在中断函数中实现对部分采样数据的读取,在主循环程序中根据上位机选定的处理算法完成数据的前端处理,然后将数据打包,通过USB总线传输给上位机。对于常用的数字信号处理算法在DSP上的实现,这里不再赘述。
3.2 USB固件程序设计
固件负责辅助硬件让设备双向交换数据,其主要功能是:接收并处理USB驱动程序的请求及应用程序的控制指令。CYPRESS公司针对EZ-USB FX2系列芯片给出了一个Firmware库和Firmware框架(Frame Works),均采用Kei C5l开发。Firmware库提供了一些常量、数据结构、宏定义、函数来简化用户对芯片的使用。用户只需要在源程序中包含进fx2.h、fx2regs.h和fx2sdly.h,并且把Ezusb.1ib和UsBJmpTB.obj添加进项目即可。Firmware框架实现了初始化芯片、处理USB标准设备请求以及挂起状态下的电源管理等功能。该框架无需添加任何代码,将编译后产生的*.hex文件载入芯片就能与主机进行基本的USB通信,只是不能完成特定的任务。在本系统中,需要选择适当的传输方式,添加需要使用的端点(Endpoint),在框架预留的地方(如TD_Init()、TD_Poll()等函数中)添加初始化代码和完成特定功能的代码。
USB共有四种数据传输方式:控制传输、中断传输、块传输及同步传输,本系统中使用了控制传输和块传输。控制传输主要用来完成主机对设备的各种控制操作,即用来实现位于主机上的USB总线驱动程序以及编写的功能驱动程序对设备的各种控制操作;块传输主要用来完成主机和设备间的大批量数据传输以及对传输的数据进行错误检测(支持“错误重传”功能)。
3.3 USB驱动程序设计
CYPRESS FX2开发包中提供了一个通用的设备驱动程序Ezusb.sys,可用于基于EZ-USB FX2系列的芯片,能够完成基本的USB通信任务。本系统设计中,利用DDK对上述驱动程序进行了修改,将不常用的函数删除,同时添加了自己定义的函数。