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