新闻中心
PRESS CENTER2 软件设计 Fig.2 ConnectionbetweenEZUSBFX2andFPGA 图2 EZUSBFX2与 FPGA 的连接 传输系统软件包括 FPGA 控制程序、固件程序、驱动 程序和 PC端应用程序。 2.1 犉犘犌犃程序设计 FPGA 子系统原理框图如图1所示。FPGA 主要完成 接受串行数据和发送数据到 EZUSBFX2 模块。FPGA 子系统将由探测器发出的多路串行数据接收并缓存,然后 等到数据缓存到一定程度后,将其传送给 EZUSBFX2芯 片,随后 USB芯片会自动将数据通过 USB 方式传给上位 机。
FPGA 内部包含两个通道:数据通道和命令通道。 数据通道中流经的是投影数据(每一次探测器照射时 每一个通道所获得的数据),如图1所示,各个通道的投影 数据首先被存到各自对应的缓存 FIFO 中,等到 FIFO 中 的数据达到一定的数量(这里设置为512)后,FPGA 将各个 FIFO 的若干(这里为512)数据传送到 EZUSB FX2的端点缓冲区。
命令通道主要用于配置命令的传输,当上位机发出配置命令后,USB将命令通过 SlaveFIFO 的方式传给 FPGA,随后 FPGA 将接收的命令数据存储在配置 RAM 中,最后 FPGA 内部的命令配置模块通过查询配置 RAM 中值的变化来判断是否应该向探测器发送命令。
FPGA 程序共包含7个模块,如图3所示。其中同步 FIFO 和配置 RAM 采用 ALTERA 的IP;串行接收 模块和串行发送模块主要完成串行数据的收发;配置 CPU 模块对配置 RAM 的状态进行监控,如果查询到配 置 RAM 的值改变,则通过串行发送模块将改变的值发送至探测器;配置 RAM 存储配置命令同步 FIFO 存储 投影数据总线仲裁模块控制 FIFO 数据总线和配置 RAM 总线,它保证命令配置的及时性和数据传输的完整 性;SlaveFIFO 接口模块实现 FPGA 与 EZUSBFX2的通信。
2.2 固件程序 2.2.1 固件的作用 固件是指运行在 EZUSBFX2(CY7C68013A)中增强型8051EEPROM 里的可执行代码。固件的开发可 采用汇编语言或 C51,然后编译成16进制文件(.HEX 文件)写到 FX2中的代码区,从而实现设备端的编程, 完成特定功能。固件程序主要完成以下工作: ①初始化工作,包括设置一些特殊功能寄存器的初始值,以实现所需的设备属性或者功能;
②辅助硬件完成设备的重枚举过程,包括模拟设备的断开与重新连接,对收到的设置包进行分析判断,从 而对主机的设备请求作出适当的响应,完成主机对设备的配置任务; ③对中断的处理; ④数据的接收与发送; ⑤外围电路的控制。 2.2.2 USB器件与 PC的通信 USB器件在微控制器的控制下与 PC 端应用程序进行通信,从而实现 USB 数据收发,基本过程是:当 USB外设接到主机上的时候,主机首先列举设备,之后通过缺省端点 EP0下载固件程序到其片内 RAM,接下 来重列举设备,用下载到其内部 RAM 的固件配置设备,即用户所设计的模式,根据用户定义的固件程序中的 VID和 PID,找到设备的功能驱动程序,从而完成设备的配置过程。传输数据过程中,发送的数据以包(Pack et)的形式写入期间的缓冲区(FIFOBuffer),当缓冲区被写满或者数据发送完毕后,USB设置寄存器满标志。 如果主机准备接受数据,则向功能设备端点发出读令牌包,端点通过判断端点类型和是否准备发送数据响应请 求,完成数据传输后,通过握手包来完成整个通信过程。 2.2.3 从属 FIFO 模式固件程序开发 FX2提供了2种接口模式:从属 FIFO 和通用可编程接口。数据传输系统采用从属 FIFO 模式,其固件主 要包括7个文件:dscr.a51,lsecyJmpTb.a51,lsecy.h,lsecysdly.h,lsecyregs.h,main.c和function.c。 固件存储在 PC上,当设备与主机连接时,固件通过软配置从主机装载到 EZUSBFX2片内 RAM 中执 行。