李文燕,郭 濤,徐香菊
(中北大學儀器科學與動態(tài)測試教育部重點實驗室,中北大學電子科學與技術(shù)系,山西太原030051)
數(shù)據(jù)采集在信息處理系統(tǒng)中占有不可替代的地位,它是以傳感器、信號測量與處理、微型計算機等技術(shù)為基礎(chǔ)而形成的,主要研究信息數(shù)據(jù)的采集、存儲、處理以及控制等作業(yè),具有很強的實用性。數(shù)據(jù)采集技術(shù)已經(jīng)在雷達、通信、水聲、遙感、語音處理、智能儀器、工業(yè)自動化以及生物醫(yī)學工程等眾多領(lǐng)域得到廣泛的應(yīng)用。數(shù)據(jù)采集器一般包括數(shù)據(jù)采集部分和數(shù)據(jù)處理傳輸部分。前者包括信號的濾波、放大、采樣、保持、轉(zhuǎn)換、存儲等部分,后者包括數(shù)據(jù)讀取、傳輸及微機接口部分。
本系統(tǒng)主要由四個模塊構(gòu)成:FLASH存儲器模塊、FPGA控制模塊、USB接口控制模塊及電源模塊。如圖1所示。
其工作原理是:FLASH模塊存儲數(shù)據(jù),作為記錄器的數(shù)據(jù)源;FPGA模塊作為讀數(shù)裝置的控制器,讀取FLASH的數(shù)據(jù)并傳輸給USB控制接口模塊;USB控制芯片接收來自上位機的命令[1],并與FPGA通信來執(zhí)行用戶需要的操作;電源模塊為各模塊提供穩(wěn)定電源。
圖1 系統(tǒng)總體結(jié)構(gòu)框圖
本系統(tǒng)中芯片的工作電壓有5 V、3.3 V、2.5 V。由于計算機的USB接口可以提供5 V電源,最大為500 mA的電流,對于此系統(tǒng)已足夠,所以本系統(tǒng)的5 V電源直接由USB供電,并利用5 V電源經(jīng)過電壓調(diào)節(jié)器AMS1117調(diào)整出3.3 V 和2.5 V 電源。
本設(shè)計的FPGA采用XILINX公司的Spartan-2系列的XC2S50,包括FPGA配置電路和FPGA時鐘電路及接口配置。
FPGA的配置方式靈活多樣,本設(shè)計根據(jù)芯片是否能夠自己主動加載配置數(shù)據(jù)以及比特流的位寬,利用主串模式進行配置FPGA,如圖2所示。在FPGA的輸出端口上為每個端口連接了一個電阻,起到耦合限流的作用,使外部接口與FPGA進行匹配,防止電流過大等不良影響而燒壞芯片。
一般USB的接口芯片種類大致可分為:主控制器、根集線器、接口芯片以及具有USB接口的微控制器。本設(shè)計利用的是EZ-USB FX2LP系列的CY7C68013A-128PIN芯片。
本設(shè)計采用0XC0的EEPROM啟動方式。即在EEPROM中首字節(jié)寫入0XC0,并將VID、PID、DID和配置字節(jié)寫入EEPROM。芯片上電后,將這些數(shù)據(jù)復制到片內(nèi)存儲器,并將其發(fā)送給主機,由主機根據(jù)ID數(shù)據(jù)選擇合適的固件程序下載到USB芯片內(nèi)。本設(shè)計使用具有I2C總線接口的串行EEPROM芯片AT24C64。AT24C64具有8192 x 8位容量,可重復擦除100萬次。
FLASH存儲器存儲著記錄器的數(shù)據(jù),本設(shè)計的目的就是從FLASH中讀取數(shù)據(jù)并傳入計算機進行保存。本設(shè)計采用SAMSUNG公司的K9F5608U0D NAND FLASH存儲器[2]。其特點如下:存儲單元陣列為(32M+1024k)bit×8bit;總共64k的塊,每塊含32頁,每頁為512+16字節(jié);以頁為單位編程(200μs典型編程時間),以塊為單位擦除(2ms典型擦除時間);命令、地址、數(shù)據(jù)復用端口;提供硬件數(shù)據(jù)保護功能。
本設(shè)計的硬件連接電路如圖3所示。其中MAX1658為K9F5608U0D提供電源,排阻起到耦合限流作用。
圖2 FPGA配置電路
圖3 FLASH存儲器連接電路
本設(shè)計的FPGA程序采用Xilinx公司的ISE軟件。它提供給用戶一個從設(shè)計輸入到綜合、布線、仿真、下載的全套解決方案,并可以很方便的與其他EDA工具接口。
本設(shè)計中原理圖輸入采用其中的第三方軟件ECS,HDL綜合使用XST,測試臺輸入是圖形化的HDL Bencher,仿真使用Modelsim SE。簡要的流程如下:
建立工程項目;綜合;仿真;定義輸入輸出管腳約束;布局布線;下載配置。
FLASH模塊程序設(shè)計中FLASH控制模塊對FLASH存儲器K9F5608U0D執(zhí)行各種操作。K9F5608U0D芯片提供了8種命令,即8種操作:①讀1操作;②讀2操作;③讀ID操作;④復位操作;⑤頁編程操作;⑥復制回讀操作;⑦塊擦除操作;⑧讀狀態(tài)操作。
USB功能設(shè)備的硬件功能主要由硬件上的微處理器來實現(xiàn),因此需要為USB設(shè)備編寫固件程序。本設(shè)計的USB固件程序開發(fā)中,使用Keil Software公司推出的51系列兼容單片機軟件開發(fā)系統(tǒng)Keil μVision3。
圖4所示為68013A的固件程序流程圖,下面介紹如何編程。本設(shè)計采用固件框架中的Dscr.a51文件,修改設(shè)備描述符中的ID碼和字符串描述符,并修改相應(yīng)的端口配置,其余保持默認狀態(tài)。主機發(fā)送8字節(jié)的SETUPDAT數(shù)據(jù)包后[4],68013A將其進行解碼存入 SETUPDAT寄存器中。SETUPDAT[1]中存儲著USB發(fā)出的請求碼。在固件程序中使用switch-case語句對不同的請求碼進行分析,分別進行相應(yīng)的響應(yīng)。
圖4 固件程序流程圖
對于標準USB請求,在CY3684開發(fā)包內(nèi)已有完善的函數(shù)框架,本設(shè)計在保持其默認狀態(tài)下,修改其中的處理函數(shù),使其符合本設(shè)計的要求。在Fw.c文件中,最主要的兩個函數(shù)為Main( )函數(shù)和SetupCommand( ),其中Main( )函數(shù)控制整個68013A的程序流程,SetupCommand( )則對不同的設(shè)備請求進行分析,并調(diào)用響應(yīng)的執(zhí)行程序。
SetupCommand( )程序框架如下:
Void SetupCommand(void)
{ void*dscr_ptr; //指針變量
Switch(SETUPDAT[1]) //根據(jù)請求包類型分別處理
{//協(xié)議及請求處理代碼
}
EP0CS|=bmHSNAK;
//握手
}
在本設(shè)計需要使用自定義請求來介紹上位機的FLASH操作命令,因此需要在USB固件程序中聲明自定義請求。自定義請求和標準USB請求放在一起,但不能和已有的請求號相沖突。同時還需要編寫自定義請求對應(yīng)的處理函數(shù)。程序框架如下:
#define SC_SetData 0xa1 //自定義請求A1
此宏定義與標準USB請求的宏定義放在一起。
Switch(SETUPDAT[1]) //根據(jù)請求包類型分別處理
{ case SC_SetData: //協(xié)議請求代碼
SC_SetData( ); //協(xié)議處理函數(shù)
}
此請求包處理放在SetupCommand(void)函數(shù)內(nèi)。
對于對應(yīng)的處理函數(shù)則在Periph.c文件中進行定義。所有的USB設(shè)備請求響應(yīng)函數(shù),中斷函數(shù)都在此文件中定義。同時設(shè)備初始化函數(shù)TD_Init( ),用戶功能函數(shù)TD_Poll( ),掛起函數(shù)TD_Suspend( )和USB復位函數(shù)( )也都在此文件中定義。
本設(shè)計采用在上位機發(fā)送自定義請求A1,并在自定義請求中包含對FLASH操作的命令字,68013A在分析得到自定義請求A1后,在自定義請求A1中把命令字保存入一個全局變量[5],在用戶功能函數(shù)TD_Poll( )中執(zhí)行對命令字的分析并調(diào)用相應(yīng)的FLASH操作函數(shù)。對于傳輸?shù)缴衔粰C上的數(shù)據(jù)通過自定義請求A2、A3來執(zhí)行。
本設(shè)計根據(jù)USB總線技術(shù)、FPGA技術(shù)及面向?qū)ο蟪绦蛟O(shè)計方法,對電路的組成原理、接口電路設(shè)計、系統(tǒng)控制信號的設(shè)計及USB上位機程序的設(shè)計做出詳細的說明,設(shè)計出基本符合課題要求的USB讀數(shù)裝置及上位機程序,基本完成了工作要求。當然本設(shè)計在USB接口的速度方面還需考慮更完善的方案。希望在以后的學習工作中能夠改進。
[1]潘建兵.基于USB總線的數(shù)據(jù)采集器的研制[D].重慶大學,2006.
[2]錢峰.EZ-USB FX2單片機原理、編程及應(yīng)用[M].北京:北京航空航天大學出版社,2006.
[3]Cypress Semiconductor Corporation.CY7C68013 EZ-USB FX2 USB Microcont-roller Highspeed USB Peripheral Controller[Z].2001 .
[4]孫航.Xilinx可編程邏輯器件應(yīng)用與系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2008.
[5]徐鈞.基于USB和FPGA技術(shù)的高性能數(shù)據(jù)采集系統(tǒng)設(shè)計與實現(xiàn)[D].南京理工大學,2007.