李咪咪,韋 飛,梁金寶,劉正發,冷 雙
(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所示,首先FPGA發送來的8位數據傳輸到CY7C68013A的PD端口,然后由EP6IN端點發送至上位機,在上位機上顯示數據和圖像。FPGA發送數據的頻率選為1 MHz,USB向上位機傳輸數據的速率大概能達到40Mb/s。將EP6端點設置成雙倍緩沖區,采用乒乓操作實現數據接收和發送同時進行,這樣既可以利用USB 2.0的快速傳輸的優點又能保證傳輸的可靠性。最后上位機界面程序采用VC++6.0編寫,具有界面友好、操作簡單的特點。

圖1 系統總體結構圖
系統的硬件電路主要包括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.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 測試界面圖
該數據傳輸系統以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傳感器讀出系統開發。