APP下载

一种应用于CCD读出系统的数据传输系统设计

2016-08-25李咪咪梁金宝刘正发

电子设计工程 2016年14期
关键词:固件驱动程序上位

李咪咪,韦 飞,梁金宝,刘正发,冷 双

(1.中国科学院国家空间科学中心 北京 100190;2.中国科学院大学 北京 100049)

一种应用于CCD读出系统的数据传输系统设计

李咪咪1,2,韦 飞1,梁金宝1,刘正发1,2,冷 双1

(1.中国科学院国家空间科学中心 北京100190;2.中国科学院大学 北京100049)

在高分辨率太阳软X射线CCD读出系统设计中,为了实现对CCD采集的数据传输的需求,提出了一种基于USB 2.0协议的8位数据传输系统的设计方案,并完成了该系统的软硬件设计。设计以Xilinx公司的XC3S500E系列的FPGA为主控制器,以支持USB 2.0协议的EZ-USB FX2LP系列的CY7C68013A为接口芯片,采用块传输方式,并最终通过C++编写的程序在上位机上进行数据和图像的显示。文中详细阐述了基于端口模式的CY7C68013A和FPGA之间数据传输的软硬件设计。实验结果表明,该系统传输数据准确,达到了设计要求。。

CCD读出系统;USB 2.0;数据传输;端口模式

空间软X射线观测是获得高温等离子体温度、密度、运动速度等重要参数的有效途径,对研究太阳耀斑爆发及演化过程的加热机制及其动力学行为具有极其重要的研究价值[1]。科学级CCD由于其体积小、重量轻、噪声低、分辨率高等优点,近年来在越来越多的空间X射线观测任务中得到应用。

在高分辨率太阳软X射线CCD读出系统中,选用的科学级CCD是英国 E2V公司生产的全帧面阵CCD——CCD42-10。此款CCD采用背照式结构,适用于空间X射线观测,显著提高了其量子效率[2]。高级反转模式(AIMO)能够极大地减少暗电流的产生率,从来源上减小暗电流噪声,使对CCD的制冷要求降低到一定水平,用半导体制冷的方法就能够达到制冷要求[3]。CCD像素规格为512×2048,读出信号经放大后由16位ADC转换为数字信号进入FPGA,经由数据传输系统到达上位机进行数据和图像的显示,便于后续分析。在数据的采集和处理系统中,传统的RS-232等接口已不能满足系统对传输速率越来越高的要求,这就使USB在数据采集中得到了越来越多的应用[4]。目前USB2.0标准的传输速率最高已达480 Mbps,能够满足大多数数据传输系统的需求。同时,USB还具有使用方便、传输速率高、连接灵活、独立供电、易于扩展、支持多媒体以及即插即用等优点[5]。Cypress公司的EZ-USB FX2是一款集成USB 2.0的微处理器,它集成了USB 2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。每条指令占4个时钟周期,在48M晶振下工作时 (12 MHz工作时钟,设置内部4倍频模式,实际工作时钟为48 MHz),单指令周期为83.3 ns,执行速度远快于标准的8051单片机[6]。考虑到一帧CCD数据量很大,在保证基本精度的前提下传输过程选用高8位数据,以降低对SRAM容量大小的要求并提高传输速率。因此,本文介绍的数据传输系统选用 EZ-USB FX2系列芯片CY7C68013A,基于端口模式,在FPGA控制下实现对8位数据的采集传输,同时在上位机上进行显示、保存。下面就详细介绍系统的软硬件设计。

1 系统总体设计

该系统的总体结构框图如图1所示,首先FPGA发送来的8位数据传输到CY7C68013A的PD端口,然后由EP6IN端点发送至上位机,在上位机上显示数据和图像。FPGA发送数据的频率选为1 MHz,USB向上位机传输数据的速率大概能达到40Mb/s。将EP6端点设置成双倍缓冲区,采用乒乓操作实现数据接收和发送同时进行,这样既可以利用USB 2.0的快速传输的优点又能保证传输的可靠性。最后上位机界面程序采用VC++6.0编写,具有界面友好、操作简单的特点。

图1 系统总体结构图

2 系统硬件设计

系统的硬件电路主要包括FPGA接口电路和USB芯片电路。FPGA接口电路相对简单,在此不详细介绍,主要介绍USB芯片电路设计。该设计包括电源电路、晶振电路、复位电路、EEPROM电路和部分信号引脚设计。

各部分电路实现的功能:

电源电路:由于CY7C68013A的工作电压是+3.3 V,而VBUS提供+5 V的电压,因此电源电路采用LM1084-3.3 V来实现电压转换,输出固定电压;

晶振电路:采用24 MHz的晶振频率;

复位电路:采用积分型复位电路,芯片的复位引脚RESET低电平有效;

EEPROM电路:原理如图2所示,采用的是“C0”EEPROM引导加载方式,仅用来加载常规的VID、PID和DID。该设计使用24LC00 EEPROM芯片,采用单字节地址,对应的地址输入引脚A2、A1、A0均接低电平,连接器P1用于选择WP(写保护)引脚的连接方式,与Vss相连表示使能写操作,与Vcc相连表示禁止写操作,读操作不受影响。

图2 EEPROM电路原理图

部分引脚信号设计:I2C总线上的时钟线SCL和数据线SDA必须通过 2.2 kΩ 的电阻连接到 Vcc;保留引脚RESERVED通过10 kΩ电阻连接到地,防止芯片进入测试状态;唤醒引脚WAKEUP不能悬空,需要使用挂起模式时引脚接地,系统中不使用此引脚,则通过100 kΩ电阻连接到Vcc;芯片的I/O引脚、中断引脚、串口引脚、数据存储器相关引脚都以接插件的形式向外引出,方便后续开发使用。

3 系统软件设计

3.1FPGA程序设计

在本系统中,由于仅仅介绍数据传输系统的设计和工作,因此没有用到CCD采集的数据。在FPGA中,利用代码产生特定的数据“0xAA”直接赋值给USB端口,通过上位机检验数据传输系统的工作准确性。同时,FPGA要判断何时发送数据。简单来说,就是FPGA与USB之间需要有握手信号,当FPGA这边的数据准备好了,就向USB发送一个信号,通知USB端数据已经准备就绪,如果此时USB的EP6端点恰好不满,就开始读数据,当USB将FPGA发送来的数据读取完成后,还需要给FPGA反馈一个信号,通知FPGA该数据已经读取完成,可以进行下一个数据的发送了,避免了重复读取同一个数据。这段功能的主要实现代码如下:

3.2USB固件程序设计

USB固件程序是指在设备的微控制器中的可执行程序,它一方面用来初始化和配置设备,另一方面用来完成外部硬件与主机之间的数据通信。Cypress公司为简化程序的编写并缩短开发周期,为开发者提供了固件程序开发框架,用户只需在这些框架文件的函数里添加自己的程序代码,就可以实现所需的特定功能[7]。典型的固件框架流程图如图3所示。在固件程序中,最重要的两个函数是TD_Init()和TD_Poll()。TD_Init()在设备重枚举和任务分配前被调用,该函数在程序运行期间只被调用一次,在该函数中,用户可以根据自己的需求设置状态变量的初值、端点资源的使用及I/O端口的状态来实现特定的功能。TD_Poll()处在任务调度循环之内,在程序运行期间重复被调用,在该函数中,用户可以添加自己的程序代码,来完成特定的任务。

图3 固件框架流程图

常用的的固件开发软件是Keil uVision系列软件,Keil uVision4开发环境不仅拥有丰富的函数库和编译器,且采用Windows可视化界面,得到广泛使用。因此本系统采用Keil uVision4来提供固件编程的开发环境。同时Cypress公司提供的开发包CY3684 EZ-USB FX2LP Development Kit中包含了典型的固件程序代码,在安装开发包之后表1所列出的框架库源文件都包含在安装目录下,使用者只需进行简单的修改就能开发自己的应用程序。

表1 固件库源文件

主要程序代码如下:

3.3USB驱动程序设计

在Windows开发环境下主要的USB驱动开发方式有Microsoft公司的DDK(Driver Develop Kit)工具、KRFTech公司的WinDriver工具和Compuware公司的DriverStudio工具。其中,DriverStudio工具是常用的开发方式。但是,大多USB芯片公司都提供了通用的USB驱动程序,开发者只需要进行简单的修改和安装,就可以实现对固件程序的开发,适合于初学者。在本系统的USB驱动开发中就使用了Cypress公司提供的通用USB驱动,加速驱动开发过程。

Cypress的通用驱动程序包括CyLoad.sys和CyUSB.sys,分别用于固件程序下载和固件程序与主机之间的通信,而每个驱动程序的安装都需要由相应的INF(设备信息文件)引导。当首次插入USB设备后,主机会提示选择INF文件,根据VID和 PID (CY7C68013A芯片的 VID为 0x04B4,PID为0x1004),CY7C68013A找到INF文件中对应的固件下载驱动程序。当固件成功下载到主机后,设备进入重列举,然后USB设备运行下载固件程序。最后,主机会根据固件程序提供的设备VID和PID查找匹配的通用驱动程序,最终完成设备的配置。

3.4上位机应用程序设计

应用程序是系统与用户的接口,其通过通用驱动程序来完成对外设的控制和通信[8]。对于上位机开发程序,根据开发平台的不同,可以选择不同的开发环境,本设计中采用Visual C++开发环境。本系统中主要使用Cypress公司针对EZ-USB系列芯片提供的CY3684开发包中的CYIOCTL和CyAPI控制函数类实现对USB设备的访问。使用时先将cyapi.lib加载到项目工程中,然后只需要在Visual C++程序中加入对应的头文件cyioctl.h和cyapi.h即可。在本次设计中主要应用的函数如表2所示,对应函数的具体定义在对应的头文件中都可以找到,这些函数在使用时,必须首先获得USB设备的句柄。

表2 主要应用的USB类库函数

Visual C++提供的MFC(Microsoft Foundation Class,微软基础类库)是C++类的集合,是面向对象的函数库,利用这些类库,可以方便的进行应用程序的开发。本次设计的应用程序就是在MFC框架函数的基础上进行设计的,在进行数据采集之前,首先点击“连接开发板”按钮,当提示设备连接成功后,才能进行下一步的操作;点击“设备描述符”可以获得USB设备的描述符信息,点击“清除文本框”可以清除所有文本;点击“结束程序”可以从当前界面退出;“采集验证”是对数据进行采集;“图像采集”和“保存图像”可以进行图像的采集和保存。实验中,为了清晰比较实验结果,利用FPGA向USB发送同一个字符0xAA,得到的采集界面如图4所示。

图4 测试界面图

4 结 论

该数据传输系统以FPGA、USB芯片和PC机为硬件平台,数据的传输采用了端口模式和块传输方式,上位机界面程序采用VC++6.0编写,具有操作简单、界面友好的特点,可以应用于大部分的数据传输操作。实际应用表明,该系统传输数据准确,达到了设计要求。

[1]Takako Kato,Tomoko Fujiwara,Yoichiro Hanaoka.X-Ray spectral analysis of yohkoh bragg crystal spectrometer data on a 1992 september 6 flare:the blueshift component and ion abundances[J].ApJ,1998,492(2):822-832.

[2]Janesick J R.Scientific charge-coupled devices[M].Bellingham:SPIE press,2001.

[3]J.Janesick.Muti-pinned-phase charge-coupled device[J]. NASA Tech Briefs,1990,14(8):22.

[4]徐磊,路宇英,陈建华,等.基于USB块传输方式的实时数据采集[J].测控技术,2005,24(2):12-14.

[5]张超,李洪文,朱丹丹,等.基于USB的高速数据传输系统设计[J].计算机应用,2013,33(S2):54-56.

[6]刘吉名,裴东兴.基于CY7C68013的USB2.0数据传输模块设计[J].电子测量技术,2008,31(3):94-96.

[7]吴磊,郭超平,申世涛.基于CY7C68013与FPGA的便携式数据采集系统[J].计算机应用,2012,32(S1):164-166.

[8]袁卫,张建奇.基于USB2.0和FPGA的多路数据传输系统设计[J].微计算机信息(嵌入式与SOC),2006,22(12-2): 144-145,299.

A design of data transmission system applied to the CCD readout system

LI Mi-mi1,2,WEI Fei1,LIANG Jin-bao1,LIU Zheng-fa1,2,LENG Shuang1
(1.National Space Science Center,Chinese Academy of Sciences,Beijing 100190,China;2.University of Chinese Academy of Sciences,Beijing 100049,China)

In order to realize data transmission in the CCD readout system of high resolution solar soft X-ray spectrometer,a design of 8-bit data transmission system based on USB 2.0 is designed in this paper,and its hardware and software design has been completed.This design with bulk transmission mode takes the FPGA from XC3S500E serial as the master controller,and the CY7C68013A chip from EZ-USB FX2LP serial,supporting the USB 2.0 protocol,as the interface chip.Finally it realized data and image display on the host computer using C++programs.The hardware and software design method of data transmission with port mode between CY7C68013A and FPGA are further elaborated in this paper.The experiment shows that this system can transmit data accurately,so it achieved the design requirement.

CCD readout system;USB 2.0;data transmission;port mode

TN919.3

A

1674-6236(2016)14-0070-04

2015-08-11稿件编号:201508047

中国科学院战略性先导科技专项(XDA04070000)。

李咪咪(1991—),女,山东威海人,硕士。研究方向:高分辨率低噪声CCD传感器读出系统开发。

猜你喜欢

固件驱动程序上位
阻止Windows Update更新驱动程序
计算机硬件设备驱动程序分析
特斯拉 风云之老阿姨上位
基于SHA1的SCADA系统PLC固件完整性验证方法
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
基于UEFI固件的攻击验证技术研究*
基于固件的远程身份认证
以新思路促推现代农业上位
提取ROM固件中的APP