《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 一種新型高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
一種新型高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
摘要: 介紹了一種基于USB2.0接口的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)。該采集系統(tǒng)能夠?qū)⒗走_(dá)接收機(jī)送來(lái)的信號(hào)進(jìn)行高速的采集,然后通過(guò)USB接口,將采集到的數(shù)據(jù)送到計(jì)算機(jī),經(jīng)由上層軟件對(duì)數(shù)據(jù)進(jìn)行處理分析。
Abstract:
Key words :

 引言

  在雷達(dá)接收機(jī)的測(cè)試和維護(hù)中,經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行采集,然后將采集到的數(shù)據(jù)送入計(jì)算機(jī)進(jìn)行分析處理。鑒于對(duì)數(shù)據(jù)實(shí)時(shí)采集的需求,對(duì)采集系統(tǒng)提出三方面的要求:第一,接口簡(jiǎn)單靈活且有較高的數(shù)據(jù)傳輸率;第二,采集的數(shù)據(jù)能夠快速處理并能方便提取原始數(shù)據(jù);第三,數(shù)據(jù)采集裝置具備多路數(shù)據(jù)采集能力。對(duì)于一些特殊應(yīng)用,甚至需要整個(gè)數(shù)據(jù)采集系統(tǒng)能夠方便攜帶。

  傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)大多通過(guò)PCI總線完成數(shù)據(jù)的傳輸,但PCI總線存在嚴(yán)重缺陷:受限于計(jì)算機(jī)插槽數(shù)量和中斷資源;不便于連接與安裝;易受機(jī)箱內(nèi)電磁環(huán)境的影響。這些問(wèn)題遏制了基于PCI總線的數(shù)據(jù)采集系統(tǒng)的進(jìn)一步開(kāi)發(fā)和應(yīng)用。因此,需要一種更為簡(jiǎn)便通用的方式來(lái)完成采集系統(tǒng)和計(jì)算機(jī)的數(shù)據(jù)的交互。

  考慮到現(xiàn)代計(jì)算機(jī)上大都配備了USB接口,且USB支持即插即用,安裝方便,易于擴(kuò)展,USB2.0能夠達(dá)到480Mb/s的理論傳輸速度,非常適合在高速數(shù)據(jù)采集系統(tǒng)中應(yīng)用。因此,通過(guò)USB接口來(lái)完成數(shù)據(jù)傳輸是一個(gè)很好的替代方案。出于上述考慮,筆者設(shè)計(jì)了一個(gè)基于USB2.0接口的高速數(shù)據(jù)采集系統(tǒng),通過(guò)實(shí)際測(cè)試,該系統(tǒng)可以很好的完成數(shù)據(jù)采集的功能。

數(shù)據(jù)采集系統(tǒng)電路設(shè)計(jì)

  高速數(shù)據(jù)采集系統(tǒng)框圖如圖1所示。系統(tǒng)整體的設(shè)計(jì)思路如下:計(jì)算機(jī)將采集指令(包括數(shù)據(jù)格式,數(shù)據(jù)長(zhǎng)度,FPGA控制指令等)送給USB控制芯片,USB控制芯片通過(guò)固件程序?qū)χ噶钸M(jìn)行簡(jiǎn)單的格式判定,然后將判定后正確的指令送給FPGA,F(xiàn)PGA對(duì)指令進(jìn)行譯碼,獲得需要采集的數(shù)據(jù)的長(zhǎng)度,以及采集的地址和控制信號(hào),控制RAM來(lái)完成數(shù)據(jù)的采集存儲(chǔ)。雷達(dá)接收機(jī)送過(guò)來(lái)的數(shù)據(jù)和時(shí)鐘信號(hào)經(jīng)過(guò)長(zhǎng)線接收器組以后,由差分信號(hào)變?yōu)槠胀ǖ臄?shù)字信號(hào),時(shí)鐘信號(hào)送入FPGA,經(jīng)過(guò)處理后,用來(lái)控制數(shù)據(jù)的采集時(shí)刻,數(shù)據(jù)先存入RAM,待完成所需數(shù)目的采集以后,再通過(guò)USB控制芯片送給計(jì)算機(jī),完成數(shù)據(jù)的后期處理和顯示。


圖1 高速數(shù)據(jù)采集系統(tǒng)框圖

  圖2為FPGA與USB控制芯片的連接圖,電路中FPGA選用EP1C3T144C8,USB控制芯片選用Cypress 公司的CY7C68013。USB_Ready 為USB芯片狀態(tài)標(biāo)志,低電平有效;FPGA_Ready為FPGA芯片狀態(tài)標(biāo)志,低電平有效;USB_Clk為USB向FPGA傳送指令的指令時(shí)鐘,USB_Data 為USB傳送給FPGA的控制指令;FD[15:0]為USB 與FPGA交互的數(shù)據(jù)。


圖2 FPGA與USB控制芯片的電路連接圖

  FPGA與USB芯片之間的通信流程如下:

1、FPGA發(fā)送FPGA_Ready信號(hào)給USB控制芯片,表示FPGA準(zhǔn)備好;

  2、USB控制芯片發(fā)送USB_Ready信號(hào)給FPGA,表示在USB_Ready為低電平期間將有控制指令傳送;

  3、USB控制芯片由Send_CLK發(fā)送時(shí)鐘信號(hào),同時(shí)由Send_DATA發(fā)送控制指令給FPGA,控制指令在時(shí)鐘信號(hào)上升沿有效;

  4、FPGA收到控制指令,執(zhí)行相應(yīng)動(dòng)作。FPGA發(fā)送各種控制時(shí)序信號(hào)和RAM地址,把I路、Q路數(shù)據(jù)存在RAM里,而后將數(shù)據(jù)讀到FPGA,再通過(guò)FD[15:0]以字的形式傳給USB控制芯片的從屬FIFO端點(diǎn)EP8緩沖區(qū),由PC機(jī)讀取。

數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)

  系統(tǒng)軟件主要分為FPGA 模塊設(shè)計(jì)程序,USB 固件程序,以及上層應(yīng)用軟件程序。

  FPGA模塊編程

  系統(tǒng)采用Altera 公司的Cyclone系列的FPGA芯片,采用Verilog HDL 作為開(kāi)發(fā)語(yǔ)言,開(kāi)發(fā)環(huán)境采用Quartus II 5.0。

  在系統(tǒng)的FPGA軟件設(shè)計(jì)過(guò)程中,根據(jù)功能的需要,將整個(gè)系統(tǒng)分為了三個(gè)大的模塊來(lái)設(shè)計(jì),分別為:時(shí)鐘、控制指令輸出模塊,數(shù)據(jù)采集、存儲(chǔ)模塊,USB數(shù)據(jù)傳輸模塊。時(shí)鐘、控制指令輸出模塊對(duì)輸入的時(shí)鐘進(jìn)行整形,形成數(shù)據(jù)采集時(shí)鐘,同時(shí),輸出22位控制電平信號(hào);數(shù)據(jù)采集、存儲(chǔ)模塊對(duì)輸入的數(shù)據(jù)進(jìn)行采集并存儲(chǔ)在存儲(chǔ)器里;USB數(shù)據(jù)傳輸模塊讀取存儲(chǔ)器里的數(shù)據(jù)并把數(shù)據(jù)輸出至USB的FIFO里。

       USB 固件程序

  固件程序即為寫(xiě)入U(xiǎn)SB單片機(jī)中的程序,它是設(shè)備運(yùn)行的控制中樞.Cypress公司提供了固件架構(gòu),用戶可以利用這一架構(gòu)簡(jiǎn)化固件開(kāi)發(fā)。固件設(shè)計(jì)架構(gòu)是由Keil C51編譯器與其整合開(kāi)發(fā)工具編寫(xiě)和構(gòu)建的.在程序開(kāi)始時(shí),固件架構(gòu)會(huì)執(zhí)行下列步驟:

  1) 設(shè)置所有內(nèi)部狀態(tài)變量的初始值。

  2) 調(diào)用用戶的初始設(shè)置函數(shù)TD_Init( ),待返回后,固件架構(gòu)就會(huì)將USB接口設(shè)置為未配置的狀態(tài)。

  3) 在1s的時(shí)間間隔內(nèi),開(kāi)始重新進(jìn)行設(shè)備列舉,直到設(shè)置封包收到端點(diǎn)0為止。

  4) 當(dāng)SETUP封包被檢測(cè)到后,固件架構(gòu)就會(huì)啟動(dòng)工作分配器,而這個(gè)工作分配器就會(huì)按順序重復(fù)地執(zhí)行下面的工作:

A: 調(diào)用用戶函數(shù)TD_Poll( )。
B: 是否決定標(biāo)準(zhǔn)設(shè)備請(qǐng)求是未定(或等待決定)的。如果已決定,它將會(huì)分析所收到的命令請(qǐng)求,并且加以響應(yīng)。
C: 是否決定USB核心已經(jīng)報(bào)告了USB中止(Suspend)事件。如果已決定,它會(huì)調(diào)用用戶函數(shù)TD_Suspend()。
若取得成功的返回,則測(cè)試回復(fù)(Resume)事件。反之,如果未檢測(cè)到,將會(huì)把微處理器放人中止模式中。當(dāng)回復(fù)事件被檢測(cè)到時(shí),將調(diào)用用戶函數(shù)TD_Resume( ),并且連續(xù)地跳回至步驟C。
D: 若從TD_Suspend()函數(shù)中未收到成功的返回,再連續(xù)地跳至步驟C。
實(shí)際上Cypress公司提供的這個(gè)固件框架已經(jīng)能夠使USB芯片正常的工作,但是,它并不能滿足本系統(tǒng)的需要。需要添加自己的控制代碼來(lái)控制USB芯片,使之能夠完成需要的工作。

  框架程序中為提供了兩個(gè)函數(shù)TD_Init( ),TD_Poll( ),根據(jù)上面的分析發(fā)現(xiàn),這兩個(gè)函數(shù)分別完成了系統(tǒng)的初始化工作和系統(tǒng)的用戶期望工作。在此采集系統(tǒng)中,只需要修改這兩個(gè)函數(shù),添加自己的功能函數(shù),即可完成系統(tǒng)需要的功能。

  在TD_Init( )中,需要添加自己的代碼來(lái)完成系統(tǒng)的初始化,因?yàn)橄到y(tǒng)采用了2端點(diǎn)和6端點(diǎn)的批量讀寫(xiě)功能,所以,將2端點(diǎn)配置單緩沖區(qū)512字節(jié),兩倍緩沖區(qū),作為In端點(diǎn),將6端點(diǎn)配置為單緩沖區(qū)512字節(jié),兩倍緩沖區(qū),作為Out端點(diǎn),配置系統(tǒng)為異步Slave FIFO 模式。

  在TD_Poll( )中,通過(guò)檢測(cè)2端點(diǎn)和6端點(diǎn)緩沖區(qū)數(shù)據(jù)的狀態(tài),來(lái)及時(shí)的讀取這兩個(gè)緩沖區(qū)中的數(shù)據(jù),然后調(diào)用自己定義的函數(shù)DecodeInst( ), ImplementInst( )來(lái)完成對(duì)于控制指令的譯碼和執(zhí)行工作。

驅(qū)動(dòng)程序

  基于EZ-USB FX2的二次枚舉的特性,需要編制兩個(gè)驅(qū)動(dòng)程序:一個(gè)驅(qū)動(dòng)程序loader.sys,它將在主機(jī)上編寫(xiě)好的固件程序在主機(jī)系統(tǒng)啟動(dòng)時(shí)下載至FX2的RAM中;另一個(gè)驅(qū)動(dòng)程序USBBULK.sys為實(shí)際安裝的驅(qū)動(dòng)程序。另外,為實(shí)現(xiàn)在系統(tǒng)啟動(dòng)時(shí),自動(dòng)安裝兩次驅(qū)動(dòng)程序,還需編寫(xiě)自己的ezloader.inf文件實(shí)現(xiàn)。loader.sys需要自己編寫(xiě)生成,USBBULK.sys可使用CYPRESS公司的通用驅(qū)動(dòng)程序。

  用戶程序

  用戶程序是系統(tǒng)與用戶的接口,它通過(guò)通用驅(qū)動(dòng)程序完成對(duì)外設(shè)的控制和通信。在編寫(xiě)用戶程序時(shí),首先要建立與外設(shè)的連接,然后才能實(shí)施數(shù)據(jù)的傳輸。啟動(dòng)采樣后,為了保證不丟失數(shù)據(jù),用戶程序應(yīng)建立一個(gè)新的工作線程專門獲取外設(shè)傳來(lái)的數(shù)據(jù)。程序中主要用到兩個(gè)API函數(shù):CreateFile()和DeviceIoControl()。CreateFile()取得設(shè)備句后,DeviceIoControl()根據(jù)該句柄完成數(shù)據(jù)傳輸。

  系統(tǒng)通過(guò)DeviceIoControl()完成的工作如下:

  數(shù)據(jù)批量讀,數(shù)據(jù)批量寫(xiě)。

結(jié)語(yǔ)

  為了驗(yàn)證本系統(tǒng)采集數(shù)據(jù)的準(zhǔn)確性,利用信號(hào)源產(chǎn)生的正弦波信號(hào)對(duì)系統(tǒng)進(jìn)行驗(yàn)證。測(cè)試結(jié)果如圖3所示。


圖3 測(cè)試結(jié)果

  通過(guò)實(shí)際測(cè)量,該系統(tǒng)測(cè)量數(shù)據(jù)與實(shí)際情況完全符合,單通道采樣速率最高可達(dá)到10Mbps。

  整個(gè)采集系統(tǒng)由USB2.0數(shù)據(jù)傳輸、FPGA、邏輯電路、和計(jì)算機(jī)等組成,通過(guò)對(duì)該系統(tǒng)的硬件電路設(shè)計(jì)和軟件編程分析,以及實(shí)際測(cè)量結(jié)果的比較,證明了該系統(tǒng)的可行性。由于采用高速USB2.0接口,本系統(tǒng)具有即插即用、高速采集等特點(diǎn),具有很好的擴(kuò)展性。該采集系統(tǒng)已經(jīng)在雷達(dá)接收機(jī)的測(cè)試系統(tǒng)中得到應(yīng)用。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。