Niosll和USB接口的高速數(shù)據(jù)采集卡設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引 言
隨著現(xiàn)代工業(yè)生產(chǎn)和科學(xué)研究對(duì)數(shù)據(jù)采集的要求日益提高,在瞬態(tài)信號(hào)測(cè)量、圖像信號(hào)處理等一些高速、高精度的測(cè)量中,都迫切需要進(jìn)行高速數(shù)據(jù)采集(如雷達(dá)信號(hào)分析、超音波信號(hào)分析);而進(jìn)行數(shù)字處理的先決條件是將所研究的對(duì)象數(shù)字化,因此數(shù)據(jù)采集與處理技術(shù)日益得到重視。在圖像信號(hào)處理、瞬態(tài)信號(hào)檢測(cè)、工業(yè)過程檢測(cè)和監(jiān)控等領(lǐng)域,更是要求高速度、高精度、高實(shí)時(shí)性的數(shù)據(jù)采集與處理技術(shù)。現(xiàn)在的高速數(shù)據(jù)采集處理卡一般采用高性能數(shù)字信號(hào)處理器(DSP)和高速總線技術(shù)的框架結(jié)構(gòu)。DSP用于完成計(jì)算量巨大的實(shí)時(shí)處理算法,高速總線技術(shù)則完成處理結(jié)果或者采樣數(shù)據(jù)的快速傳輸。DSP主要采用TI和ADI公司的產(chǎn)品,高速總線可以采用ISA、PCI、USB等總線技術(shù)。其中PCI卡或ISA卡安裝麻煩,價(jià)格昂貴,受計(jì)算機(jī)插槽數(shù)量、地址、中斷資源的限制,可擴(kuò)展性差,在一些電磁干擾性強(qiáng)的測(cè)試現(xiàn)場(chǎng),無(wú)法專門對(duì)其做電磁屏蔽,易導(dǎo)致采集的數(shù)據(jù)失真。通用串行總線USB是為解決傳統(tǒng)總線不足而推廣的一種新型的通信標(biāo)準(zhǔn)。該總線接口具有安裝方便、高帶寬、易于擴(kuò)展等優(yōu)點(diǎn),已逐漸成為現(xiàn)代數(shù)據(jù)發(fā)展趨勢(shì)。基于USB的高速數(shù)據(jù)采集卡充分利用USB總線的上述優(yōu)點(diǎn),有效地克服了傳統(tǒng)高速數(shù)據(jù)采集卡的缺陷。
1 系統(tǒng)硬件設(shè)計(jì)
本系統(tǒng)主要是基于USB2.O的S1ave FIFO模式,在FPGA控制下完成雙通道、不同速率的數(shù)據(jù)的采集和發(fā)送,全兼容USB2.O總線接口標(biāo)準(zhǔn),其數(shù)據(jù)的采樣率可高達(dá)65 Msps;適用于較高速動(dòng)態(tài)信號(hào)的實(shí)時(shí)記錄采集,其硬件系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示。
該系統(tǒng)主要由信號(hào)調(diào)理模塊、A/D轉(zhuǎn)換模塊、觸發(fā)模塊、基于FPGA的主控模塊、USB收發(fā)控制模塊、片外存儲(chǔ)器及其他輔助電路組成。調(diào)理電路與A/D轉(zhuǎn)換器,將傳感器采集的模擬信號(hào)進(jìn)行相關(guān)的信號(hào)調(diào)理后送入AD9244芯片轉(zhuǎn)換為數(shù)字信號(hào)。處理后的數(shù)據(jù)送往FPGA主控模塊,根據(jù)相關(guān)的控制信息,選擇通過直接傳輸給上位機(jī),或者先存儲(chǔ)在外部SDRAM,然后經(jīng)過相關(guān)的數(shù)字處理后再傳輸給上位機(jī)。
2 系統(tǒng)模塊介紹
2.1 USB2.0專用微處理器CY7C68013A
CY7C68013A是Cypress Semiconductor公司生產(chǎn)的一款集成USB2.O的微處理器。它有3種封裝形式——56SSOP、100TQFP和128TQFP,其結(jié)構(gòu)框圖如圖2所示。
CY7C68013集成了USB2.O收發(fā)器、SIE、增強(qiáng)的8051微控制器和可編程的外圍接口部件。其SIE可在全速(12 Mb/s)和高速(480 Mb/s)兩種模式下運(yùn)行,同樣可以使用內(nèi)部RAM來(lái)進(jìn)行程序和數(shù)據(jù)的存儲(chǔ)。GPIF和Master/Slave端口FIFO為ATA、UTOHA、EPP、PCM—CIA和DSP等提供了簡(jiǎn)單和無(wú)需附加邏輯的連接接口。其編程可以根據(jù)設(shè)計(jì)的需要進(jìn)行,不需要CPU的干預(yù),只需通過CPU的一些標(biāo)志和中斷即可進(jìn)行通信。CY7C68013共有7個(gè)輸入輸出端口:EP0、EPlOUT、EPlIN、EP2、EP4、EP6、EP8,其中EP2、EP4、EP6、EP8可以分別被配置為批量/中斷/同步傳輸模式,傳輸方向均可配置為I/O,端口EP2、EP6的緩沖區(qū)大小可編程為512或1 024字節(jié),深度可編程為2/3/4倍大??;端口EP4、EP8的緩沖區(qū)大小固定為512字節(jié),深度為2倍,采用不同的配置方式,可實(shí)現(xiàn)特定帶寬和速率要求的數(shù)據(jù)傳輸。 [!--empirenews.page--]
2.2 主控電路FPGA芯片
EP2C8Q208EP2C8Q208主控電路如圖3所示。
FPGA芯片也是一種特殊的ASIC芯片,屬于可編程邏輯器件,它是在PAL、GAL等邏輯器件的基礎(chǔ)上發(fā)展起來(lái)的。同以往的PAL、GAL等相比,F(xiàn)PGA規(guī)模比較大,適合于時(shí)序、組合等邏輯電路應(yīng)用。本文選用A1tera公司的FPGA芯片EP2C8Q208,完成數(shù)據(jù)采集卡的時(shí)序和地址譯碼電路設(shè)計(jì)。由于EP2C8Q208有36個(gè)M4K RAM,在FPGA內(nèi)部設(shè)計(jì)一個(gè)16位寬度、4 KB深度的FIFO,使用FIFO提高數(shù)據(jù)采集卡對(duì)多通道信號(hào)的采集存儲(chǔ)能力。FIFO有半滿、全滿、空標(biāo)志位,當(dāng)檢測(cè)到半滿標(biāo)志位時(shí),F(xiàn)IFO同時(shí)讀寫;全滿時(shí)只讀不寫;空時(shí)只寫不讀。A/D采樣控制信號(hào)通過FPGA控制;PC機(jī)對(duì)采集后的數(shù)據(jù)作進(jìn)一步處理,以提高精度,其中2選1模塊,由主控制模塊來(lái)控制,選擇是直接將采集數(shù)據(jù)送給PC機(jī)處理,還是在內(nèi)部進(jìn)行DSP處理后再送給PC機(jī)。
由于Nios是一個(gè)位于FPGA中的處理器軟核,定制其外設(shè)就顯得比較容易,在SOPC Builder(集成到Quartus II工具中的為建立SOPC系統(tǒng)設(shè)計(jì),提供標(biāo)準(zhǔn)化的圖形設(shè)計(jì)環(huán)境。其由CPU、存儲(chǔ)器接口、標(biāo)準(zhǔn)外圍設(shè)備和用戶自定義的外圍設(shè)備組成)環(huán)境下,其定制邏輯的結(jié)構(gòu)框圖如圖4所示。
[!--empirenews.page--]
自定制的Avalon外設(shè)按照對(duì)總線操作的方式可分為:Avalon Slave外設(shè)和Avalon Streaming Slave(流模式)外設(shè)。在SOPC Builder圖形設(shè)計(jì)界面下添加需要的內(nèi)核。通過自動(dòng)分配系統(tǒng)基地址和系統(tǒng)中斷向量,手動(dòng)分配CPU復(fù)位地址為外設(shè)Flash、CPU溢出地址為片上RAM和CPU調(diào)試斷點(diǎn)地址為JTAG調(diào)試地址,就可由系統(tǒng)報(bào)告得知系統(tǒng)是否定制成功,如圖5所示。
2.3 ADC芯片及外圍電路設(shè)計(jì)
ADC外圍電路框圖如圖6所示。
信號(hào)調(diào)理部分選用高精度、低噪聲、低輸入偏置電流、寬帶運(yùn)算場(chǎng)效應(yīng)放大器AD8ll進(jìn)行信號(hào)的放大。模擬信號(hào)處理是影響系統(tǒng)性能的重要因素之一,設(shè)計(jì)時(shí)必須考慮兩個(gè)方面:一是要保證信號(hào)質(zhì)量,提高信噪比,盡量減少畸變;二是將信號(hào)變換成適合A/D處理的幅度并提供足夠的驅(qū)動(dòng)能力。這里選用ADI公司的寬帶運(yùn)放AD811為放大器。AD8ll是一種電流反饋型的放大器,它具有10 MHz的低失真和單位增益帶寬很寬的特點(diǎn),使AD81l成為理想的高分辨率ADC緩沖器。之后針對(duì)信號(hào)進(jìn)行檔速變換。檔速變換選用ADG系列產(chǎn)品。本設(shè)計(jì)選用的是一款四路獨(dú)立選擇的單片CMOS開關(guān)芯片,其設(shè)計(jì)基于增強(qiáng)的lc2mos進(jìn)程、可以提供低功耗、高轉(zhuǎn)換速度和低阻抗性,當(dāng)信號(hào)滿足A/D變換的要求后,根據(jù)采集要求將其由單端輸入變換為差分的雙端輸出,芯片選用AD8138。AD8138具有較寬的模擬帶寬(320 MHz,一3dB,增益為1),可以將單端輸入變成差分輸出。A/D轉(zhuǎn)換的觸發(fā)則由信號(hào)放大芯片AD811采集信號(hào)和D/A轉(zhuǎn)換芯片信號(hào)進(jìn)行比較,當(dāng)有效時(shí),發(fā)出ADn_TRIG信號(hào),其中D/A轉(zhuǎn)換芯片的輸入標(biāo)準(zhǔn)信號(hào)(數(shù)字輸入端)由FPGA來(lái)提供。當(dāng)ADn_TRIG有效時(shí),F(xiàn)PGA向AD924.4發(fā)出控制命令(DIN、FORMAT、MODE、SCLK、sYNC、FSYNC信號(hào)),啟動(dòng)A/D轉(zhuǎn)換。
A/D轉(zhuǎn)換器的精密時(shí)鐘由DDS電路AD9859YSV提供。 [!--empirenews.page--]
3 軟件設(shè)計(jì)及實(shí)現(xiàn)
系統(tǒng)軟件設(shè)計(jì)包括3部分:固件程序、USB設(shè)備驅(qū)動(dòng)程序和應(yīng)用程序。整個(gè)軟件實(shí)現(xiàn)的功能包括系統(tǒng)初始化、采樣控制、數(shù)據(jù)傳輸和波形顯示。
3.1 固件程序設(shè)計(jì)
固件程序輔助硬件實(shí)現(xiàn)設(shè)備雙向交換數(shù)據(jù),以完成USB通信,其主要功能是:接收并處理USB驅(qū)動(dòng)程序的請(qǐng)求及應(yīng)用程序的控制指令,控制A/D轉(zhuǎn)換器的采樣。當(dāng)首次插入U(xiǎn)SB時(shí),F(xiàn)X2通過USB電纜會(huì)自動(dòng)枚舉且下載固件和USB描述符表;接下來(lái),F(xiàn)X2再次枚舉,這次主要通過下載的信息來(lái)定義設(shè)備。這兩個(gè)步驟叫作重枚舉。固件程序流程如圖7所示。初始化包含各個(gè)初值的設(shè)置和關(guān)鍵點(diǎn)的電平檢測(cè)。
在Cypress公司的網(wǎng)站上,可下載CY7(368013芯片的開發(fā)工具包。該開發(fā)包提供了一些開發(fā)固件程序所需的資源:Keil u Vision2集成開發(fā)環(huán)境(限制版)、Cypress C51固件框架程序以及一些例子程序。KeilCSl是一種專為8051單片機(jī)設(shè)計(jì)的高效率C語(yǔ)言編譯器,符合ANSI標(biāo)準(zhǔn),生成的程序代碼運(yùn)行速度極高,所需要的存儲(chǔ)空間極小,完全可與匯編語(yǔ)言相媲美。同時(shí),C51具有豐富的庫(kù)函數(shù),多達(dá)1O0多種功能函數(shù)。因此,采用C語(yǔ)言作為開發(fā)語(yǔ)言,以Keil uVision2作為工程開發(fā)平臺(tái),完成源代碼的編寫、仿真、調(diào)試,將在相當(dāng)程度上降低固件開發(fā)難度,提高開發(fā)效率。
3.2 USB設(shè)備驅(qū)動(dòng)設(shè)計(jì)
USB設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)是基于WDM(WindowsDriver Model,驅(qū)動(dòng)程序模型)的。WDM采用分層驅(qū)動(dòng)程序模型,分為較高級(jí)的USB設(shè)備驅(qū)動(dòng)程序和較低級(jí)的USB函數(shù)層。其中USB函數(shù)層由兩部分組成:較高級(jí)的通用串行總線模塊(us—BD)和較低級(jí)的主控制器驅(qū)動(dòng)程序模塊(HCD)。
本設(shè)計(jì)用WinDK3.O開發(fā)了Win2000下的驅(qū)動(dòng)程序,實(shí)現(xiàn)了控制傳輸、中斷傳輸和批傳輸?shù)臉?biāo)準(zhǔn)接口函數(shù)。在應(yīng)用程序開發(fā)中,可用VC++編制應(yīng)用程序。把USB設(shè)備當(dāng)成文件來(lái)操作,用Create—File得到USB句柄,用DevieeloControl來(lái)進(jìn)行控制傳輸,用ReadFile、WriteFile進(jìn)行批量傳輸。
3.3 應(yīng)用程序設(shè)計(jì)
應(yīng)用程序流程如圖8所示。用戶應(yīng)用程序是數(shù)據(jù)采集系統(tǒng)的核心,其主要功能為:開啟或關(guān)閉USB設(shè)備、檢測(cè)USB設(shè)備、設(shè)置USB數(shù)據(jù)傳輸管道、設(shè)置A/D狀態(tài)和數(shù)據(jù)采集端口、實(shí)時(shí)從USB接口采集數(shù)據(jù)、顯示并分析數(shù)據(jù)。
4 結(jié) 論
用FPGA作為采集處理部分,可以提高系統(tǒng)處理的速度,大大增強(qiáng)系統(tǒng)的靈活性和適應(yīng)性。FPGA技術(shù)和USB的組合,使得數(shù)據(jù)處理能力得到了極大的提高,且有利于系統(tǒng)升級(jí)。USB芯片采用了Cpyress公司的高性能USB2.0芯片CY7C68013,可以完全勝任大數(shù)據(jù)量的傳送。該實(shí)例還可應(yīng)用于實(shí)時(shí)數(shù)據(jù)采集、音頻及壓縮視頻數(shù)據(jù)傳輸?shù)阮I(lǐng)域。