在現(xiàn)代電子系統(tǒng)中,在信號(hào)測(cè)量、圖像處理、音視頻信號(hào)處理等一些高速、大容量的信號(hào)采集和傳輸過程中,數(shù)據(jù)的實(shí)時(shí)采集和實(shí)時(shí)傳輸受到人們?cè)絹碓綇V泛的重視?,F(xiàn)在通用的數(shù)據(jù)采集卡一般是PCI卡或是ISA卡,這些采集卡存在諸多缺點(diǎn),比如安裝不方便、傳輸速度慢、受計(jì)算機(jī)插槽數(shù)量、地址、中斷等資源的限制.可擴(kuò)展性差。
LJSB(Universal Serial Bus),其中文名稱為“通用串行總線”。他是為了解決計(jì)算機(jī)外設(shè)種類口益增加與有限的主板插槽和端r丁之間的矛盾.由Intel,Microsoft,IBM,NEC,lucent等7家廠商共同制定的總線標(biāo)準(zhǔn)。目前,常用的LISB 2.O版本支持的最高傳輸速度可達(dá)到480 Mb/s.他以速度快、成本低、可靠性高、支持即插即用和熱插拔等優(yōu)點(diǎn),迅速得到眾多PC廠商的大力支持。同時(shí),開發(fā)這種基于uSB 2.0的高速數(shù)據(jù)采集系統(tǒng),代表了現(xiàn)代數(shù)據(jù)采集和傳輸系統(tǒng)的發(fā)展趨勢(shì),他也將被越來越多的用戶所接受。
1 系統(tǒng)硬件整體設(shè)計(jì)
該系統(tǒng)總體框架為PC機(jī)(能支持USB 2.O協(xié)議的計(jì)算機(jī))、A/D轉(zhuǎn)換模塊、FPGA控制模塊、LYSB控制模塊,如圖l所示。
從整體上看結(jié)構(gòu)可分為2個(gè)部分:高速數(shù)據(jù)采集模塊的設(shè)計(jì);USB 2.O高速數(shù)據(jù)傳輸系統(tǒng)。
1.1數(shù)據(jù)采集模塊
該系統(tǒng)主要由l片高速AD 芯片、1片SDRAM和l片A1tera公司的FPGA構(gòu)成。由于系統(tǒng)設(shè)計(jì)采樣速度最大為1()0 MHz.據(jù)采樣定理,采樣頻率至少應(yīng)在200MHz以上,所以A/D芯片采用Analog公司的高速A/D芯片AD9480。該芯片轉(zhuǎn)換精度8 b.單一3.3 V電源供電,低功耗,最高工作速度為250 MS/s,采用差分形式、LVDS電平輸出,經(jīng)過測(cè)試可以很好地滿足系統(tǒng)要求。
為了滿足數(shù)據(jù)采集中高速實(shí)時(shí)流數(shù)據(jù)的應(yīng)用,避免FIFO溢出,本系統(tǒng)通過FPGA及SDRAM構(gòu)造一個(gè)大容量的FIFO,可以提供一個(gè)低成本并且能滿足高速實(shí)時(shí)流數(shù)據(jù)傳輸?shù)姆桨浮?/p>
低速數(shù)據(jù)采集系統(tǒng)常使用MCU作為CPU來控制,但在高速數(shù)據(jù)采集系統(tǒng)中,采樣速度往往受MCU速度的影響,而且隨著速度的提高,ADC,SDRAM和MCtJ之間的時(shí)序同步問題也顯示出來,因此系統(tǒng)使用了高速FPGA芯片來控制ADC和SDRAM,從而很好地解決了時(shí)序精度和同步的問題。
FPGA選擇A1tera公司的CYCLONE系列高性價(jià)比產(chǎn)品EPlC6T144C8。他基于1.5 V,O.3 μm及全層銅SRAM工藝,其密度增加至20 060個(gè)邏輯元件(LE),RAM增加至288 kb。他具有鎖相環(huán)以及DDR SDR和速度周期RAM(FCRAM)存儲(chǔ)器所需的專用雙數(shù)據(jù)(DDR)接口等。CYCLONE器件支持多種I/O口標(biāo)準(zhǔn),包括640 Mb/s的LVDS,以及速率為33 MHz和66 MHz,數(shù)據(jù)寬度為32 b和64 b的PCI。FPGA實(shí)現(xiàn)的功能邏輯主要有:實(shí)現(xiàn)對(duì)ADC的控制,開始A/D轉(zhuǎn)換;為ADC同步提供SDRAM地址計(jì)數(shù)和寫信號(hào),把每次A/D轉(zhuǎn)換的結(jié)果直接存入SDRAM,并自動(dòng)增加地址;當(dāng)?shù)刂酚?jì)數(shù)器達(dá)到最大時(shí),發(fā)出RAMFULL中斷信號(hào),提示SDRAM已滿。
FPGA的功能邏輯用VHDL語言實(shí)現(xiàn),其編譯和仿真使用Altera公司的QuartusⅡ5.1,使用ByteBlastⅡ并行編程電纜和JTAG口下載編程和配置文件。
1.2 USB 2.0高速數(shù)據(jù)傳輸
用于USB設(shè)備開發(fā)的芯片通常有2種類型:一種是MCU集成在芯片里面,如CYPRESS的EZ-USB;另一種是純粹的USB接口芯片,僅處理USB通信,使用時(shí)必須由外部微控制器(MCU)進(jìn)行控制,如Philips的PDIUSBD1 2,National Semiconductor的USBN9604等。在本設(shè)計(jì)中經(jīng)過論證分析,采用第一種類型,采用Cypress公司的EZ-USB FX2系列的CY7C68013芯片。
1.2.1 EZ-USB FX2(CY7C68013)芯片
Cypress公司的EZ-USB FX2系列芯片是最早符合USB 2.0協(xié)議的微控制器之一,他集成了符合USB 2.O協(xié)議的收發(fā)器(transceiver),串行接口引擎(SIE),增強(qiáng)型的8051內(nèi)核以及可編程的外圍接口。FX2系列芯片獨(dú)特的結(jié)構(gòu)使得數(shù)據(jù)傳輸速度最高可達(dá)56 Mb/s,最大限度地滿足了USB 2.O的帶寬。CY7C68013集成標(biāo)準(zhǔn)8051內(nèi)核,且具有下列增強(qiáng)特性:可以達(dá)到48 MHz時(shí)鐘;每條指令占4個(gè)時(shí)鐘周期;2個(gè)USARTS;3個(gè)定時(shí)/計(jì)數(shù)器;擴(kuò)展的中斷系統(tǒng);2個(gè)數(shù)據(jù)指針。
805l程序從內(nèi)部RAM開始運(yùn)行,借助如下3種方式進(jìn)行程序裝載:通過USB下載,從E2PROM中裝載;通過外部存儲(chǔ)器設(shè)備。內(nèi)部集成了達(dá)4 kB的FIFO,用戶程序發(fā)送數(shù)據(jù)時(shí),直接從FIFO里讀取,保證了數(shù)據(jù)高速傳輸,與外部實(shí)現(xiàn)透明數(shù)據(jù)傳輸。
1.2.2 硬件連接
根據(jù)系統(tǒng)對(duì)數(shù)據(jù)傳輸?shù)乃俣群蛯?shí)時(shí)性的要求,配置CY7C68013工作的接口模式為Slave FIFO模式。當(dāng)進(jìn)行數(shù)據(jù)采集時(shí),硬件連接方式如圖3所示。
A/D轉(zhuǎn)換器的采樣時(shí)鐘同時(shí)作為CY7C68013的Slave F=IFO模式的讀寫控制時(shí)鐘,即CY7C68013的接口時(shí)鐘連接到IFCLK引腳。SLWR/SLRD是CY7C68013Slave FIFO的寫使能/讀允許信號(hào)。FPGA向CY7C268013Slave FIFO提供Slave FIFO輸出允許信號(hào)SLOE,僅在數(shù)據(jù)輸出時(shí)有效。FD[15:0]為16 b雙向數(shù)據(jù)總線。FI-FOADR[1:0]為端點(diǎn)FIFO選擇信號(hào)。在數(shù)據(jù)輸入時(shí)固定為OO,選擇端點(diǎn)2;在數(shù)據(jù)輸出時(shí)固定為10,選擇端點(diǎn)6。
2 系統(tǒng)程序設(shè)計(jì)
USB系統(tǒng)的軟件設(shè)計(jì)可分為3部分:固件設(shè)計(jì)、驅(qū)動(dòng)程序設(shè)計(jì)和用戶端的應(yīng)用程序設(shè)計(jì)。
2.1 固件(firmware)設(shè)計(jì)
固件程序?qū)嶋H上就是單片機(jī)方面的軟件設(shè)計(jì),他是所有基于微控制器及其外圍電路的功能設(shè)備正常工作必不可少的部分,其作用就是輔助硬件。
2.1.1 軟件設(shè)計(jì)的主要功能
與軟件設(shè)計(jì)主要有以下幾種功能:初始化工作,包括設(shè)置一些特殊功能寄存器的初值以實(shí)現(xiàn)所需的設(shè)備屬性或者功能,例如開中斷,使能端點(diǎn),配置端口等;輔助硬件完成設(shè)備的重新枚舉過程,包括模擬設(shè)備的斷開與重新連接,對(duì)接收到的設(shè)置包進(jìn)行分析判斷,從而對(duì)主機(jī)的設(shè)備請(qǐng)求作出適當(dāng)?shù)捻憫?yīng),完成主機(jī)對(duì)設(shè)備的配置任務(wù);對(duì)中斷的處理;數(shù)據(jù)的接收和發(fā)送;外圍電路的控制。
Cypress公司為了簡(jiǎn)化和加速用戶使用EZ-USBFX2芯片進(jìn)行USB外設(shè)的開發(fā)過程,提供了一個(gè)完整的固件程序的架構(gòu),可以在KEILC5l環(huán)境下開發(fā),用戶只需要提供一個(gè)USB描述符表,添加其他端點(diǎn)接收和發(fā)送數(shù)據(jù)的通信代碼,以及控制外圍電路的程序代碼。由于開發(fā)框架的引入,大大縮短了用戶的研發(fā)周期。
2.1.2 軟件設(shè)計(jì)的框架
該框架由以下幾部分組成:
(1)Fw.C中包含了程序框架的MAIN函數(shù),管理整個(gè)51內(nèi)核的運(yùn)行,因?yàn)镃ypress對(duì)這個(gè)部分的功能進(jìn)行了精心劃分,一般是不用改動(dòng)的。
(2)用戶必須將PERIPH.C實(shí)例化,他負(fù)責(zé)系統(tǒng)周邊器件的互聯(lián)。固件的設(shè)計(jì)主要針對(duì)這個(gè)文件,用戶必須根據(jù)自己系統(tǒng)的需要,實(shí)例化這個(gè)文件,以實(shí)現(xiàn)自己的功能。在這個(gè)文件中有幾個(gè)函數(shù)是比較關(guān)鍵的,在這里做特別說明:
TD_Init函數(shù) 負(fù)責(zé)對(duì)USB端點(diǎn)進(jìn)行初始化設(shè)置。在FX2再次枚舉和開始任務(wù)分配前被調(diào)用,其目的是初始化各個(gè)端口以及各端口的先入先出緩沖區(qū)。
TD_Poll函數(shù) 負(fù)責(zé)系統(tǒng)中循環(huán)任務(wù)的處理。他主要是對(duì)各個(gè)端點(diǎn)的狀態(tài)進(jìn)行查詢,處理各種OUT或IN端點(diǎn)的交互。值得說明的一點(diǎn)是,這種處理只是輔助性質(zhì)的,大部分工作由硬件自動(dòng)完成。
DR-VendorCmnd函數(shù) 主要負(fù)責(zé)用戶自定義命令的譯碼工作,用戶請(qǐng)求通過端點(diǎn)O傳輸給內(nèi)核。由于CY7C68013上SIE硬件的支持,用戶只需查詢固定地址單元即可獲得當(dāng)前的命令代碼。
DSCR.A51是描述表文件,負(fù)責(zé)USB設(shè)備的描述工作,CY7C68013在上電后自動(dòng)利用其中的VID和PID取代默認(rèn)的VID和:PID。兩個(gè)包含文件EZtJSB.LIB和US-BJMPTB.OBJ,前者是EZUSB函數(shù)庫的二進(jìn)制文件,后者是USB的中斷向量表。
固件調(diào)試,使用Cypress提供的EZ-LISB controlpanel,具體的操作讀者可以參考其自帶幫助。對(duì)編譯好的固件代碼,Cypress為L(zhǎng)ISB總線設(shè)備開發(fā)者提供了2種方法向。EZ一USB芯片下載8051固件代碼:
一種是主機(jī)通過軟件下載固件從主機(jī)上下載8051固件代碼,他為用戶提供了很大的靈活性。這種方法充分利用EZ-USB內(nèi)部的8 k RAM來裝載8051代碼和數(shù)據(jù)。由于EZ-USB具有重新枚舉的能力,所以在初始化枚舉以后,用戶不需要斷開設(shè)備就可以裝載新的。設(shè)備描述符和8051程序代碼都能通過主機(jī)中的磁盤文件下載;另外一種是由E2PROM通過I2C口來下載固件。EZ-USB支持外部E2PROM通過總線來下載固件,這種方式使開發(fā)者可以從外圍硬件下載8051程序代碼。
2.2驅(qū)動(dòng)程序設(shè)計(jì)
USB設(shè)備驅(qū)動(dòng)程序是開發(fā)USB外設(shè)的一個(gè)關(guān)鍵,他在整個(gè)系統(tǒng)中處于主機(jī)端應(yīng)用程序和設(shè)備端Firmware之間。他的主要作用是使操作系統(tǒng)能夠識(shí)別USB設(shè)備,并建立起主機(jī)端和設(shè)備端之間的通訊。
USB驅(qū)動(dòng)程序?qū)儆谙冗M(jìn)的wDM(Win32 Driver Mod-e1)驅(qū)動(dòng)程序模式,支持即插即用功能。在wDM驅(qū)動(dòng)程序模式中,每個(gè)硬件設(shè)備至少有2個(gè)驅(qū)動(dòng)程序:一個(gè)為功能驅(qū)動(dòng)程序,即硬件設(shè)備的驅(qū)動(dòng)程序,他了解USB外設(shè)硬件工作的所有細(xì)節(jié),負(fù)責(zé)初始化I/O操作;另一個(gè)為總線驅(qū)動(dòng)程序,他負(fù)責(zé)管理USB外設(shè)與主機(jī)的連接,如檢測(cè)接入主機(jī)的USB設(shè)備,并確定設(shè)備的資源使用情況等??偩€驅(qū)動(dòng)程序要負(fù)責(zé)枚舉總線,并為每個(gè)設(shè)備創(chuàng)建一個(gè)PDO(物理設(shè)備對(duì)象)。當(dāng)總線驅(qū)動(dòng)程序發(fā)現(xiàn)有設(shè)備接人或拔出總線時(shí),他要向上層驅(qū)動(dòng)程序報(bào)告事件的發(fā)生。功能驅(qū)動(dòng)程序位于總線驅(qū)動(dòng)程序的上層,他要為設(shè)備創(chuàng)建一個(gè)FDO(功能設(shè)備對(duì)象)。USB驅(qū)動(dòng)程序也稱客戶驅(qū)動(dòng)程序,他從不直接與硬件對(duì)話,僅靠創(chuàng)建USB請(qǐng)求塊URB,并使用USB驅(qū)動(dòng)程序接口USBDI將URB提交到總線驅(qū)動(dòng)程序就可以完成硬件操作。
在windows操作系統(tǒng)下,開發(fā)wDM驅(qū)動(dòng)程序可以有2種選擇:一種是選擇微軟公司的DDK(驅(qū)動(dòng)程序開發(fā)包)。DDK提供了創(chuàng)建wDM驅(qū)動(dòng)程序的開發(fā)環(huán)境,并提供了用于開發(fā)Windows 2000和Windows XP驅(qū)動(dòng)程序的頭文件、庫函數(shù)、源代碼、各種工具和文檔資料;另一種選擇是使用一些驅(qū)動(dòng)程序的輔助開發(fā)工具,比如Driver Stu-dio,windriver等,這些開發(fā)工具可以根據(jù)用戶的需求,為用戶自動(dòng)生成驅(qū)動(dòng)程序,用戶只需要在生成驅(qū)動(dòng)程序前,在向?qū)Э蛑邪凑仗崾咎钊胱约旱男枨?,并?duì)生成的驅(qū)動(dòng)程序做一些小的修改即可。
Cypress FX2開發(fā)包提供了一個(gè)通用的驅(qū)動(dòng)程序,可被用于基于EZ-uSB系列芯片的uSB設(shè)備。該程序可不加修改經(jīng)DDK編譯后直接使用,在應(yīng)用中可以看到其運(yùn)行穩(wěn)定。當(dāng)然,用戶也可以以這個(gè)驅(qū)動(dòng)程序?yàn)槠瘘c(diǎn),創(chuàng)建自己的驅(qū)動(dòng)程序。 2.3應(yīng)用程序設(shè)計(jì)
應(yīng)用程序設(shè)計(jì)以驅(qū)動(dòng)程序?yàn)闃蛄?,?duì)15SB設(shè)備進(jìn)行命令控制,處理uSB設(shè)備傳回的數(shù)據(jù),例如波形顯示、頻譜分析等。采集系統(tǒng)的主機(jī)端工作在Windows操作系統(tǒng)下,所以主機(jī)端應(yīng)用程序的設(shè)計(jì)需要windows平臺(tái)下的開發(fā)工具如Visual C++,C++Builder。等。主機(jī)端軟件的關(guān)鍵是實(shí)現(xiàn)從uSB設(shè)備讀取指定數(shù)量的數(shù)據(jù)以及向USB設(shè)備發(fā)送指定數(shù)量的數(shù)據(jù),另外,還有向USB設(shè)備發(fā)送USB標(biāo)準(zhǔn)設(shè)備請(qǐng)求和特定的命令,這種命令包括廠商定義的命令和用戶自定義的命令。
CypreSS FX2開發(fā)包提供的EZ-USB通用驅(qū)動(dòng)程序?yàn)橹鳈C(jī)端的用戶態(tài)應(yīng)用程序提供IJSB標(biāo)準(zhǔn)設(shè)備請(qǐng)求和數(shù)據(jù)傳輸?shù)慕涌?。所有用戶態(tài)程序訪問EZ USB通用驅(qū)動(dòng)程序都是通過I/OControl調(diào)用。用戶態(tài)程序首先通過調(diào)用Win32函數(shù)CreatFile()得到設(shè)備驅(qū)動(dòng)程序的句柄。然后調(diào)用win32函數(shù)DeviceloControl(),通過得到的句柄把I/O Control Code(IOCTL)和相關(guān)的輸入輸出緩沖區(qū)提交給驅(qū)動(dòng)程序。用戶程序框圖如圖4所示。
3 結(jié) 語
隨著筆記本電腦的迅速普及,高性能便攜式采集系統(tǒng)將會(huì)受到工程師們?cè)絹碓蕉嗟那嗖A,尤其是在RS 232接口已被大多數(shù)筆記本電腦擯棄的今天,對(duì)基于USB接口的數(shù)據(jù)采集系統(tǒng)的需求就變得更加迫切。在該高速同步數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)中,CY7C68013芯片靈活的接口和可編程特性簡(jiǎn)化了外部硬件的設(shè)計(jì),提高了系統(tǒng)的可靠性,且利于設(shè)備的生產(chǎn)與調(diào)試。另外,設(shè)備的可熱插拔特性使該系統(tǒng)具有便攜式的特點(diǎn),使用方便,無需關(guān)機(jī)重啟或打開機(jī)箱進(jìn)行安裝。事實(shí)證明,該基于2.0接口的高速數(shù)據(jù)采集系統(tǒng)完全滿足設(shè)計(jì)和使用要求。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22049瀏覽量
618379 -
芯片
+關(guān)注
關(guān)注
460文章
52505瀏覽量
440791 -
數(shù)據(jù)采集
+關(guān)注
關(guān)注
40文章
7173瀏覽量
116489
發(fā)布評(píng)論請(qǐng)先 登錄
求大俠幫忙 CY7C68013 與CPLD通信問題
cy7c68013開發(fā)包及驅(qū)動(dòng)

基于CY7C68013的USB數(shù)據(jù)采集系統(tǒng)
USB2.0接口芯片CY7C68013的固件程序開發(fā)
基于CY7C68013的CCD圖像傳輸系統(tǒng)

基于CY7C68013A的并口轉(zhuǎn)USB口數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

基于CY7C68013的高速數(shù)據(jù)通信接口設(shè)計(jì)
CY7C68013的固件程序開發(fā)方法

基于USB2.0芯片CY7C68013的高速數(shù)據(jù)通信接口設(shè)計(jì)
CY7C68013和FPGA的數(shù)據(jù)通信

評(píng)論