EZ-USB FX2的數(shù)據(jù)采集和傳輸系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要 設(shè)計(jì)一種以FPGA和EZ-USB FX2為核心的高速數(shù)據(jù)采集和傳輸系統(tǒng)。該系統(tǒng)以FPGA為數(shù)據(jù)采集和數(shù)據(jù)傳輸?shù)臉蛄?,由A/D轉(zhuǎn)換器采集的數(shù)據(jù)在經(jīng)過(guò)FPGA后,傳輸給EZ-USB FX2的內(nèi)部端點(diǎn),最后由EZ-USB FX2傳輸給上位機(jī)。論文給出了系統(tǒng)的硬件結(jié)構(gòu)和相關(guān)的軟件程序設(shè)計(jì)。FX2的應(yīng)用簡(jiǎn)化了電路的設(shè)計(jì),提高了系統(tǒng)的可靠性,并實(shí)現(xiàn)了數(shù)據(jù)的高速采集與傳輸。該系統(tǒng)非常適合應(yīng)用于便攜式的測(cè)量?jī)x器。
關(guān)鍵詞 EZ-USB FX2 FPGA VC++ 固件設(shè)計(jì)TLC5510 數(shù)據(jù)采集
引 言
隨著社會(huì)的發(fā)展和技術(shù)的進(jìn)步,各種計(jì)算機(jī)的外圍接口不斷的推陳出新。USB接口已漸漸成為現(xiàn)今個(gè)人計(jì)算機(jī)上最重要的接口之一,并以其傳輸速度快、使用方便和價(jià)格低廉等特點(diǎn)成為現(xiàn)今一般消費(fèi)性電子產(chǎn)品和工業(yè)控制設(shè)備上不可缺少的接口。Cypress公司的EZ-USBFX2是一個(gè)USB2.0集成外圍控制器,它具有通用串行總線(USB)的3種傳輸模式:1.5 Mb/s的低速模式,12 Mb/s的全速模式,480 Mb/s的高速模式。因此,本設(shè)計(jì)選用USB2.0芯片CY7C68012、Altera公司的FPGA和TLC5510組成一個(gè)通用的數(shù)據(jù)采集和傳輸系統(tǒng)。該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,采集和數(shù)據(jù)傳輸可靠,能夠滿足現(xiàn)今高速設(shè)備的要求。
1 系統(tǒng)硬件設(shè)計(jì)
本系統(tǒng)主要分為兩個(gè)部分,一部分是由2片TLC5510和FPGA構(gòu)成的數(shù)據(jù)采集模塊,另一部分是由FPGA和EZ—USB FX2構(gòu)成的數(shù)據(jù)傳輸模塊。系統(tǒng)的框圖如圖1所示。
(1)數(shù)據(jù)采集模塊
經(jīng)過(guò)調(diào)理后的信號(hào)進(jìn)入模數(shù)轉(zhuǎn)換電路,選用的高速AD芯片是TI公司的TLC5510。TLC5510是CMOS、8位、20 Msps的模數(shù)轉(zhuǎn)換電路。它采用半閃速結(jié)構(gòu),單電源5 V工作時(shí),功耗只有100 mW,內(nèi)含采樣和保持電路,具有高阻抗方式的并行接口和內(nèi)部基準(zhǔn)電阻。與閃速轉(zhuǎn)換器相比,半閃速結(jié)構(gòu)減少了功率損耗和晶片尺寸。通過(guò)在兩步過(guò)程中實(shí)現(xiàn)轉(zhuǎn)換,可以大量地減少比較器的數(shù)目,轉(zhuǎn)換數(shù)據(jù)的等待時(shí)間為2.5個(gè)時(shí)鐘周期,且高速轉(zhuǎn)換的同時(shí)能夠保持較低的功耗。TLC5510與FPGA的接口電路如圖2所示。
FPGA提供TLC5510 20 MHz的工作時(shí)鐘和使能輸出信號(hào)OE,低電平有效,同時(shí)接受TLC5510的采樣數(shù)據(jù)。由于系統(tǒng)需要同步的兩路采樣,所以由FPGA輸出的時(shí)鐘和使能輸出信號(hào)OE同時(shí)控制2個(gè)TLC5510。這樣FPGA就可以同時(shí)收到兩路同時(shí)采樣的信號(hào)數(shù)據(jù),將其存入兩個(gè)獨(dú)立的異步FIFO中。
值的注意的是,實(shí)驗(yàn)中將FPGA產(chǎn)生的工作時(shí)鐘和使能輸出信號(hào)先輸入74HCT573,然后由74HCT573的輸出去控制兩路的TLC5510。這主要是完成將FPGA的CMOS電平轉(zhuǎn)換成TTL電平的工作。在實(shí)驗(yàn)的初期,未經(jīng)過(guò)電平轉(zhuǎn)換的信號(hào)在控制TLC5510時(shí),得不到穩(wěn)定數(shù)據(jù)。后來(lái)經(jīng)過(guò)改善后,TLC5510能夠穩(wěn)定、準(zhǔn)確地完成采樣和數(shù)據(jù)輸出。
(2)數(shù)據(jù)傳輸模塊
在數(shù)據(jù)傳輸模塊中,為了保證較高的傳輸速度,使用不經(jīng)過(guò)CPU的SLAVEFIFO控制工作模式。模塊的基本工作過(guò)程為:當(dāng)A/D采樣數(shù)據(jù)存儲(chǔ)滿FPGA中的FIFO后,F(xiàn)PGA根據(jù)SLAVEFIFO的控制時(shí)序產(chǎn)生相應(yīng)的控制信號(hào),將在FIFO中的數(shù)據(jù)傳輸給EZ-IJSB FX2的內(nèi)部端點(diǎn)FIFO,而當(dāng)內(nèi)部端點(diǎn)存儲(chǔ)滿后,F(xiàn)X2自動(dòng)將數(shù)據(jù)傳輸?shù)缴衔粰C(jī)。外部控制器FPGA對(duì)FX2的控制進(jìn)程如下:
①IDLE,當(dāng)寫事件發(fā)生時(shí),轉(zhuǎn)向狀態(tài)1。
②狀態(tài)1,指向EZ-LJSB FX2的內(nèi)部端點(diǎn)IN FIFO,激活FIFOADR[1:0],轉(zhuǎn)向狀態(tài)2。
③狀態(tài)2,如果內(nèi)部端點(diǎn)FIF0滿標(biāo)志為“假”(FIFO不滿),則轉(zhuǎn)向狀態(tài)3;否則停留在狀態(tài)2。
④狀態(tài)3,傳送總線驅(qū)動(dòng)數(shù)據(jù)。產(chǎn)生一個(gè)SLWR跳變,轉(zhuǎn)向狀態(tài)4。
⑤狀態(tài)4,如果有更多的數(shù)據(jù)要寫,則轉(zhuǎn)向狀態(tài)2;否則,轉(zhuǎn)向IDLE。
EZ-JSB FX2內(nèi)部端點(diǎn)FIFO異步寫的時(shí)序如圖3所示。
2 FPGA的模塊設(shè)計(jì)
在系統(tǒng)中,F(xiàn)PGA構(gòu)成了數(shù)據(jù)采集系統(tǒng)和數(shù)據(jù)傳輸系統(tǒng)的“橋梁”,完成對(duì)TLC25510的控制和數(shù)據(jù)的存儲(chǔ),同時(shí)也完成對(duì)EZ-USB FX2單片機(jī)的控制。利用FPGA強(qiáng)大的功能,使電路的結(jié)構(gòu)得到了簡(jiǎn)化,不需要利用分立器件來(lái)完成對(duì)數(shù)據(jù)的存儲(chǔ)。因此,在FPGA中需要構(gòu)成4個(gè)模塊:2片F(xiàn)IFO數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)通道選擇模塊、控制模塊和輸出20 MHz時(shí)鐘的PLL模塊。
(1)2片F(xiàn)IFO數(shù)據(jù)存儲(chǔ)模塊
FIFO數(shù)據(jù)存儲(chǔ)模塊主要完成對(duì)A/D轉(zhuǎn)換數(shù)據(jù)的存儲(chǔ)。由于需要兩路同時(shí)采集數(shù)據(jù),所以要有2個(gè)FIFO模塊,這樣易于對(duì)數(shù)據(jù)的存儲(chǔ)和傳輸控制。每個(gè)FIFO存儲(chǔ)模塊的存儲(chǔ)容量定為2 048 B,可通過(guò)MegaWizard工具來(lái)調(diào)用。
(2)數(shù)據(jù)通道選擇模塊
數(shù)據(jù)通道選擇模塊主要是針對(duì)兩路的數(shù)據(jù)讀取和傳輸而設(shè)計(jì)的。當(dāng)A/D轉(zhuǎn)換器采集到對(duì)應(yīng)的數(shù)據(jù)后,存入兩個(gè)異步FIFO存儲(chǔ)模塊中。在兩個(gè)異步FIFO存儲(chǔ)模塊存儲(chǔ)滿后,對(duì)FIFO存儲(chǔ)模塊數(shù)據(jù)的讀取是關(guān)鍵。數(shù)據(jù)通道選擇模塊的基本原理是在控制模塊對(duì)讀取數(shù)據(jù)進(jìn)行計(jì)數(shù),當(dāng)把其中的一個(gè)FIFO存儲(chǔ)模塊讀取完后,由控制模塊發(fā)出通道切換信號(hào),由數(shù)據(jù)通道選擇模塊切換數(shù)據(jù)通道,再讀取另一個(gè)FIFO存儲(chǔ)模塊的數(shù)據(jù)。
(3)控制模塊
控制模塊要完成對(duì)TLC5510、FIFO存儲(chǔ)模塊、數(shù)據(jù)選擇模塊和EZ—USB FX2的控制,這是整個(gè)系統(tǒng)的關(guān)鍵。根據(jù)系統(tǒng)實(shí)現(xiàn)的功能和各個(gè)模塊的控制時(shí)序,控制模塊將產(chǎn)生相應(yīng)的控制信號(hào),實(shí)現(xiàn)系統(tǒng)的采集和存儲(chǔ)的功能。
(4)20 MHz時(shí)鐘的PLL模塊
系統(tǒng)提供的FPGA外部時(shí)鐘頻率為50 MHz,而TLC5510的最大采樣工作頻率為20 MHz。所以通過(guò)對(duì)前置分頻參數(shù)N=5、倍頻器參數(shù)M=2的設(shè)置,將50 MHz鐘頻率分頻成20 MHz的時(shí)鐘作為采樣時(shí)鐘和系統(tǒng)的工作時(shí)鐘。
3 EZ—USB FX2的固件設(shè)計(jì)
固件程序是指運(yùn)行在設(shè)備CPU中的程序。只有在該程序運(yùn)行時(shí),外設(shè)才能稱為具有給定功能的外圍設(shè)備。C2ypress公司為FX2固件開發(fā)提供了一個(gè)固件庫(kù)和固件框架,都是在Keil C51集成開發(fā)環(huán)境下開發(fā)的。固件庫(kù)提供了一些常量、數(shù)據(jù)結(jié)構(gòu)、宏、函數(shù)來(lái)簡(jiǎn)化用戶對(duì)芯片的使用。固件框架實(shí)現(xiàn)了初始化芯片、處理USB標(biāo)準(zhǔn)設(shè)備請(qǐng)求以及掛起狀態(tài)下的電源管理等功能。該框架不添加任何代碼,編譯后生成的.HEX文件載人芯片就能和主機(jī)進(jìn)行基本的USB通信。用戶主要的工作就是選擇適合的傳輸方式,添加需要使用的端點(diǎn),在框架預(yù)留的地方(如TD_Init()、TD_Poll()等函數(shù)中)添加初始化代碼和完成特定功能的代碼。這樣大大簡(jiǎn)化了用戶對(duì)程序的編寫,在不十分了解USB2.O協(xié)議的情況下,也能通過(guò)代碼的編寫,實(shí)現(xiàn)USB的傳輸功能。
4 EZ—USB FX2的驅(qū)動(dòng)程序
該系統(tǒng)需要通用驅(qū)動(dòng)程序和下載固件的驅(qū)動(dòng)程序。通用驅(qū)動(dòng)程序完成與外設(shè)和用戶程序的通信及控制;而下載固件的驅(qū)動(dòng)程序則只負(fù)責(zé)在外設(shè)連接USB總線后把特定的固件程序下載到FX2的RAM中,使FX2的CPU重啟,模擬斷開與USB總線連接,完成對(duì)外設(shè)的重新設(shè)置。FX2根據(jù)新的設(shè)置安裝通用驅(qū)動(dòng)程序,重新枚舉外設(shè)為一個(gè)新的USB外設(shè)。通用驅(qū)動(dòng)程序一般不需要重新編寫,用Cypress公司已經(jīng)編好的驅(qū)動(dòng)ezusb.sys;而下載固件程序的驅(qū)動(dòng)則必須定做。
5 上位機(jī)用戶程序
上位機(jī)用戶程序主要通過(guò)VC++完成。實(shí)現(xiàn)從USB設(shè)備從下位機(jī)讀取指定數(shù)量的數(shù)據(jù)和向下位機(jī)發(fā)送特定的控制數(shù)據(jù)。用戶程序?qū)Z—USB FX2的控制,主要是通過(guò)I/0控制調(diào)用來(lái)訪問(wèn)ezusb.sys通用驅(qū)動(dòng)程序,而對(duì)I/O控制的調(diào)用是通過(guò)win32的API函數(shù)來(lái)完成的。因此,用戶程序通過(guò)對(duì)API函數(shù)的調(diào)用來(lái)實(shí)現(xiàn)與驅(qū)動(dòng)程序進(jìn)而與硬件的通信。API函數(shù)的執(zhí)行與驅(qū)動(dòng)函數(shù)中的一些分發(fā)例程相對(duì)應(yīng)。與EZ-USB FX2通信常用的API函數(shù)如表1所列。
應(yīng)用程序先通過(guò)CreatFile()得到設(shè)備驅(qū)動(dòng)程序的句柄,然后使用DeviceloControl()來(lái)提交I/O控制碼,并且設(shè)置好讀取和發(fā)送數(shù)據(jù)的緩沖區(qū),最后通過(guò)CloseFile()來(lái)關(guān)閉設(shè)備。圖4是上位機(jī)應(yīng)用程序界面。
結(jié) 語(yǔ)
EZ—USB FX2使上位機(jī)與下位機(jī)之間的數(shù)據(jù)傳輸更加快捷和可靠。基于FPGA和EZ-USB FX2的數(shù)據(jù)采集和傳輸系統(tǒng)滿足現(xiàn)代高速設(shè)備對(duì)傳輸速度的要求,解決了傳輸速度慢的瓶頸。通過(guò)FPGA的模塊設(shè)計(jì)、EZ-USB FX2的固件設(shè)計(jì)和上層應(yīng)用程序設(shè)計(jì),實(shí)現(xiàn)了整個(gè)系統(tǒng)的數(shù)據(jù)采集和傳輸。