基于LabVIEW和ARM嵌入式數(shù)據(jù)采集與遠(yuǎn)程傳輸控制系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
基于嵌入式網(wǎng)絡(luò)的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)具有不受地理環(huán)境、氣候、時(shí)間的影響,小型便攜,使用靈活方便,交互操作性好,傳輸速率高,可靠性高,功耗低和移動(dòng)性好等優(yōu)點(diǎn)。目前常用的嵌入式CPU中,ARM由于性價(jià)比在同類產(chǎn)品中比較突出,目前用得越來越多,尤其是結(jié)合開源的嵌入式Linux操作系統(tǒng)以后,更是得到越來越多設(shè)計(jì)者的青睞。LabVIW作為一種功能強(qiáng)大,簡(jiǎn)單易用和設(shè)計(jì)靈活的圖形化編程語言,已經(jīng)廣泛地被工業(yè)界、學(xué)術(shù)界和研究實(shí)驗(yàn)室所接受,越來越多地應(yīng)用在虛擬儀器、測(cè)試測(cè)量、數(shù)據(jù)分析、信號(hào)處理以及遠(yuǎn)程控制中。本設(shè)計(jì)中,遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)采用基于ARM和嵌入式Linux的方案來實(shí)現(xiàn)。采用高性能的ARM嵌入式微處理器Samsung S3C2440作為系統(tǒng)的核心,結(jié)合數(shù)據(jù)采集、下變頻、存儲(chǔ)模塊,實(shí)現(xiàn)了數(shù)據(jù)高速實(shí)時(shí)采集。同時(shí),利用處理器外部配備的以太網(wǎng)控制器CS8900完成與主機(jī)上運(yùn)行的LabVIEW服務(wù)器通信,實(shí)現(xiàn)數(shù)據(jù)的傳輸與系統(tǒng)的遠(yuǎn)程控制。
1 系統(tǒng)整體結(jié)構(gòu)
采用SamsungS3C2440作為前端數(shù)據(jù)采集系統(tǒng)的核心控制器件。系統(tǒng)的整體設(shè)計(jì)任務(wù)分為信號(hào)采集與下變頻、數(shù)據(jù)存儲(chǔ)與傳輸、信號(hào)顯示與處理分析等。整體設(shè)計(jì)方案構(gòu)架見圖1。信號(hào)采集部分采用ADI公司的AD9244完成,AD9244是一款14 bit,40/65 MSPS的高性能ADC。為了滿足AD9244差分輸入的要求,在信號(hào)的輸入端配合了AD8138低失真單端轉(zhuǎn)差分ADC驅(qū)動(dòng)芯片。信號(hào)采集完成后,送至ADC6620正交數(shù)字下變頻器(Digital Down Conversion,DDC)處理,經(jīng)過抽取和濾波后的I,Q兩路正交信號(hào)在其輸出的數(shù)據(jù)有效以及I/Q指示信號(hào)的配合下,由FPGA產(chǎn)生靜態(tài)隨機(jī)存取存儲(chǔ)器(static Random Access Memory,SRAM)存儲(chǔ)時(shí)序并存儲(chǔ)至64 K×16 bit的SRAM中。
在FPGA中主要完成SRAM讀寫時(shí)序產(chǎn)生、SRAM讀寫地址生成、數(shù)據(jù)通道選擇等工作,F(xiàn)PGA中的邏輯在一個(gè)16 bit的控制字寄存器的控制下有序地工作。當(dāng)SRAM中存儲(chǔ)一定量的數(shù)據(jù)后產(chǎn)生中斷信號(hào),提示ARM將數(shù)據(jù)取走。為了提高系統(tǒng)的速度,ARM采用直接數(shù)據(jù)存儲(chǔ)(Direct Memory Address,DMA)方式讀取數(shù)據(jù)。之后運(yùn)行在ARM上的客戶端程序?qū)?shù)據(jù)通過網(wǎng)絡(luò)發(fā)送給遠(yuǎn)程主機(jī)。遠(yuǎn)程主機(jī)上的LabVIEW服務(wù)器程序?qū)κ盏降臄?shù)據(jù)進(jìn)行顯示、頻譜分析、存儲(chǔ)回放等處理,同時(shí)遠(yuǎn)程主機(jī)的控制信號(hào)以及為下變頻器ADC6620設(shè)計(jì)的濾波器文件也可以通過網(wǎng)絡(luò)發(fā)送給客戶端,實(shí)現(xiàn)遠(yuǎn)程控制。
2 現(xiàn)場(chǎng)數(shù)據(jù)采集系統(tǒng)的硬件設(shè)計(jì)
2.1 ADC設(shè)計(jì)
外部模擬信號(hào)從SMA(Sub Miniature-A)接口輸入,隔離直流后進(jìn)入AD8138 ADC驅(qū)動(dòng)芯片,AD8138將單路輸入信號(hào)變成兩路差分信號(hào),送至AD9244轉(zhuǎn)換。AD9244中幾個(gè)重要引腳的含義及接法:
a)CML(Common Mode Reference):串聯(lián)一個(gè)0.1μF的電容后接地。
b)DCS(Duty Cycle Stabilizer):接+5 V電源時(shí)表示轉(zhuǎn)換時(shí)鐘為50%占空比,接地表示轉(zhuǎn)換時(shí)鐘的上升沿與下降沿均由外界控制。本設(shè)計(jì)中DCS接+5 V電源。
c)SENSE(Internal Reference Control):接地時(shí)將輸入信號(hào)峰峰值的范圍限制為1 V,接VREF時(shí)將輸入信號(hào)峰峰值的范圍限制為2 V。本設(shè)計(jì)中SENSE接VREF。
d)DFS(Data Format Select):接+5 V電源時(shí)輸出數(shù)據(jù)格式為補(bǔ)碼,接地時(shí)為直接二進(jìn)制碼輸出。由于ADC6620將其輸入數(shù)據(jù)解釋成補(bǔ)碼,本設(shè)計(jì)中DFS接+5 V電源。[!--empirenews.page--]
2.2 ADC6620設(shè)計(jì)
AD6620的任務(wù)是將高速數(shù)據(jù)流變成當(dāng)前可實(shí)時(shí)處理的中低速數(shù)據(jù)流。在本設(shè)計(jì)中,AD6620數(shù)據(jù)輸入端代表指數(shù)含義的3位(EXP0~EXP2)接地,且工作在單輸入通道模式下(A/B=3.3 V),以模式0接收來自于ARM的配置信息(MODE=GND),采用并行方式輸出數(shù)據(jù)(PAR/SER=3.3 V)。
2.3 其它設(shè)計(jì)
本設(shè)計(jì)所采用的ARM開發(fā)板是由廣州友善之臂公司所生產(chǎn)的QQ2440V3,其上有一個(gè)44針的系統(tǒng)總線接口,它與FPGA連接起來完成數(shù)據(jù)與控制信息的傳輸。FPGA與SRAM的設(shè)計(jì)比較簡(jiǎn)單,這里不再贅述。
3 數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)
為完成系統(tǒng)任務(wù),需要實(shí)現(xiàn)幾個(gè)方面的軟件設(shè)計(jì):
a)正交數(shù)字下變頻器AD6620濾波器以及控制寄存器設(shè)計(jì)。
b)在FPGA上實(shí)現(xiàn)系統(tǒng)控制、SRAM讀寫地址生成、數(shù)據(jù)通道選擇等功能的Verilog HDL程序。
c)ARM上基于嵌入式Linux操作系統(tǒng)的數(shù)據(jù)采集硬件驅(qū)動(dòng)程序。
d)ARM上客戶端應(yīng)用程序。
e)遠(yuǎn)程主機(jī)上基于LabVIEW的服務(wù)器以及顯示、頻譜分析、存儲(chǔ)與回放程序。
3.1 AD6620濾波器及控制寄存器設(shè)計(jì)
AD公司專門針對(duì)AD6620芯片推出了濾波器設(shè)計(jì)軟件fltrdsn以及監(jiān)視控制軟件AD6620,但該軟件是基于計(jì)算機(jī)并口與AD6620芯片連接的,不適應(yīng)設(shè)計(jì)中遠(yuǎn)程數(shù)據(jù)傳輸與控制、多客戶端的任務(wù)要求??梢岳迷撥浖⒃O(shè)計(jì)成功的濾波器以及配置文件保存下來,利用LabVIEW的文件處理功能自動(dòng)將信息提取出來,通過網(wǎng)絡(luò)遠(yuǎn)程配置AD6620。
3.2 FPGA邏輯設(shè)計(jì)
FPGA內(nèi)部邏輯電路結(jié)構(gòu)見圖2??紤]到后續(xù)設(shè)計(jì)的需要,F(xiàn)PGA內(nèi)部使用ARM地址總線的低3位來選擇當(dāng)前操作的模塊,具體的地址與內(nèi)部模塊對(duì)應(yīng)關(guān)系見表1。
圖2中各模塊功能進(jìn)一步說明如下:
a)Input_db_part:雙向數(shù)據(jù)總線分離。配合由Control_register送來的控制信號(hào),在Conf_6620有效時(shí)將數(shù)據(jù)總線上的數(shù)據(jù)送至Config_6620模塊,完成AD6620配置,在Fetch_sram信號(hào)有效時(shí)將讀SRAM得到的數(shù)據(jù)傳送至ARM數(shù)據(jù)總線。 [!--empirenews.page--]
b)Control_register:控制寄存器。內(nèi)部模塊有序工作的核心,具體的控制定義見表2。
c)Config_6620:配置AD6620。此模塊在Conf 6620位有效時(shí)接收由ARM傳來的AD6620配置信息,完成DDC濾波器和控制寄存器配置。它除了本身使用ARM地址總線的3位ARM ADD[3:1]作為FPGA內(nèi)部模塊選擇之外,還用了ARM ADD[6:4]作為AD6620的外部接口寄存器地址。Rdy in信號(hào)用于指示寫入操作成功,ARM檢測(cè)到此信號(hào)有效后,進(jìn)行下一次的寫操作。
d)PII:鎖相環(huán)。Cyclone EP1C6Q240中有2個(gè)鎖相環(huán)模塊,設(shè)計(jì)中使用了其中的一個(gè)將20 MHz的時(shí)鐘倍頻至50 MHz,供AD9244,AD6620以及FPGA內(nèi)部使用。
e)Ad_to_sram:AD6620輸出數(shù)據(jù)寫入SRAM時(shí)序產(chǎn)生模塊。AD6620工作在單通道模式時(shí)典型輸出時(shí)序見圖。
此模塊主要完成的功能有:用2個(gè)數(shù)據(jù)鎖存器在DV與IQ信號(hào)的控制下鎖存I路和Q路數(shù)據(jù),產(chǎn)生寫SRAM所需的地址。由于AD6620抽取率較高的緣故,輸出數(shù)據(jù)率一般較低,在模塊中使用了狀態(tài)機(jī)在2次有效數(shù)據(jù)期間產(chǎn)生寫SRAM的時(shí)序。此外,當(dāng)寫地址到達(dá)設(shè)定值時(shí),模塊產(chǎn)生寫溢出中斷,提示ARM改變控制寄存器內(nèi)容,讀取數(shù)據(jù)。
a)Read_add_gen:讀地址產(chǎn)生。在Fetch_sram位的控制下,產(chǎn)生讀SRAM時(shí)的地址,當(dāng)讀地址到達(dá)設(shè)定值時(shí),產(chǎn)生讀溢出中斷,提示ARM改變控制寄存器內(nèi)容,進(jìn)行下一步操作。
b)Control_logic:控制邏輯。模塊在Start_daq有效時(shí)選擇由Ad_to_sram模塊產(chǎn)生的寫SRAM的地址、數(shù)據(jù)與控制總線與SRAM相接,而在Fetch_sram有效時(shí)選擇讀SRAM的地址、數(shù)據(jù)與控制總線與SRAM相接。與DMA讀取有關(guān)的請(qǐng)求與響應(yīng)信號(hào)也在此模塊中處理。
3.3 嵌入式Linux驅(qū)動(dòng)程序設(shè)計(jì)
驅(qū)動(dòng)程序是硬件與應(yīng)用程序的接口。針對(duì)設(shè)計(jì)任務(wù)與硬件特點(diǎn),在驅(qū)動(dòng)程序中設(shè)計(jì)了以下函數(shù):
a) AD6620_read:申請(qǐng)DMA緩存,睡眠等待寫溢出中斷到來,DMA傳輸完成后,將數(shù)據(jù)從內(nèi)核空間傳送至用戶空間,釋放DMA緩存。
b) AD6620_ioctl:核心是一個(gè)switch選擇結(jié)構(gòu),根據(jù)應(yīng)用程序中用戶命令,完成初始化DMA,寫控制寄存器或者配置AD6620的工作。
c)AD6620 open:主要完成DMA通道參數(shù)設(shè)置,初始化IO端口和信號(hào)量。
d) AD6620 release:完成與AD6620_open相反的工作,主要是一些清理和釋放申請(qǐng)資源的工作。
函數(shù)編寫好后,通過下面的file_operations結(jié)構(gòu)體聯(lián)系起來:
e) AD6620 init:初始化函數(shù),完成驅(qū)動(dòng)程序注冊(cè)、中斷與中斷處理函數(shù)注冊(cè)、創(chuàng)建設(shè)備文件節(jié)點(diǎn)等。其中的驅(qū)動(dòng)程序注冊(cè)的核心就是上面的file_operations結(jié)構(gòu)體。
驅(qū)動(dòng)程序編寫好后,用戶就可以在應(yīng)用程序中調(diào)用這些函數(shù),實(shí)現(xiàn)通過一組標(biāo)準(zhǔn)化的調(diào)用來操作底層硬件。
3.4 客戶端應(yīng)用程序
客戶端應(yīng)用程序?yàn)榱吮WC數(shù)據(jù)與控制信息的可靠傳輸,采用的是基于TCP協(xié)議的Socket網(wǎng)絡(luò)編程。本次設(shè)計(jì)客戶端運(yùn)行在ARM上,采用的是Linux下的C編程;而服務(wù)器端運(yùn)行在遠(yuǎn)程主機(jī)上,利用LabVIEW的圖形化語言實(shí)現(xiàn)。具體客戶端的通信與控制流程圖見圖4。可以看出??蛻舳耸且蕾囉谧x取由遠(yuǎn)程主機(jī)發(fā)送的控制字符來完成實(shí)時(shí)控制,實(shí)現(xiàn)與服務(wù)器端的交互操作的。因此,無論是客戶端還是服務(wù)器端,在每一次發(fā)送數(shù)據(jù)與控制信息時(shí),都會(huì)發(fā)送一個(gè)控制字符,接收端就是依靠識(shí)別此字符來完成相應(yīng)的操作。表3中給出了控制字符與所執(zhí)行操作之間的對(duì)應(yīng)關(guān)系。
3.5 LabVIEW服務(wù)器程序設(shè)計(jì)
服務(wù)器端的完整程序見圖5。服務(wù)器在指定的端口上偵聽,等待遠(yuǎn)程客戶端的連接。程序的核心是兩個(gè)循環(huán)框,上面的循環(huán)框完成發(fā)送數(shù)據(jù)和控制信息的任務(wù),主要包括傳送AD6620濾波器設(shè)計(jì)與控制寄存器配置文件、實(shí)時(shí)改變AD6620可動(dòng)態(tài)配置寄存器內(nèi)容、開始數(shù)據(jù)采集以及停止系統(tǒng)控制等模塊。 [!--empirenews.page--]
數(shù)據(jù)與控制信息內(nèi)容放在LabVIEW事件框圖中,當(dāng)用戶單擊前面板上的控制按鈕時(shí),相應(yīng)的信息被發(fā)送,這樣就避免了系統(tǒng)無休止地查詢,節(jié)約了系統(tǒng)資源。下面的循環(huán)框完成讀SRAM數(shù)據(jù)接收、分離IQ信號(hào)、頻譜分析與顯示等,當(dāng)用戶使得存儲(chǔ)文件路徑不為空時(shí),可以將此時(shí)數(shù)據(jù)顯示控件上的數(shù)據(jù)保存下來;而當(dāng)回放文件路徑不為空時(shí),用戶可以回放之前保存的歷史數(shù)據(jù)。頻譜顯示控件有線性與對(duì)數(shù)顯示兩種格式,它受前面板上的一個(gè)系統(tǒng)復(fù)選框的控制。
4 設(shè)計(jì)結(jié)果驗(yàn)證
采用了3組實(shí)驗(yàn)來驗(yàn)證設(shè)計(jì)的正確性。實(shí)驗(yàn)條件:現(xiàn)場(chǎng)數(shù)據(jù)采集系統(tǒng)IP地址192.168.1.230,遠(yuǎn)程主機(jī)IP地址192.168.1.1,二者位于同一個(gè)局域網(wǎng)內(nèi)。系統(tǒng)工作主頻50 MHz,AD6620濾波器為低通濾波器,通帶截止頻率10 kHz,阻帶截止頻率15 kHz,通帶內(nèi)衰減0 dB,阻帶衰減-60 dB,三級(jí)濾波器的抽取系數(shù)分別為10,25,2。
第1組實(shí)驗(yàn)的輸入信號(hào)為單頻信號(hào),頻率1.005 MHz,幅度250 mV,AD6620中NCO頻率字設(shè)定為1 MHz。實(shí)驗(yàn)恢復(fù)的I路信號(hào)及其頻譜分析見圖6(a)。從實(shí)驗(yàn)結(jié)果來看,系統(tǒng)采集數(shù)據(jù)頻率準(zhǔn)確,較好地恢復(fù)了信號(hào)。第2組實(shí)驗(yàn)的輸入信號(hào)為調(diào)幅信號(hào),載波頻率1 MHz,幅度250 mV,單音調(diào)制信號(hào)頻率為3 kHz,調(diào)制深度30%。AD6620中NCO頻率字設(shè)定為1 MHz。實(shí)驗(yàn)恢復(fù)的信號(hào)與頻譜分析見圖6(b)。這時(shí)從頻譜圖上可以清晰地看出差頻之后,在零頻周圍300 Hz處有1根清晰的譜線。第3組實(shí)驗(yàn)的輸入信號(hào)為單頻信號(hào),頻率1.018 MHz,幅度250 mV,AD6620中NCO頻率字設(shè)定為1 MHz。實(shí)驗(yàn)恢復(fù)的I路信號(hào)與頻譜分析見圖6(c)。此時(shí)由于信號(hào)處于濾波器通帶之外,衰減很大,不能恢復(fù)信號(hào)。I路信號(hào)顯示圖中類似于“毛刺”的信號(hào)是由于電路底噪聲在AD6620中運(yùn)算所產(chǎn)生。綜合3組實(shí)驗(yàn)的結(jié)果,本次設(shè)計(jì)較好地完成了設(shè)計(jì)任務(wù)。
5 結(jié)論
數(shù)據(jù)采集與網(wǎng)絡(luò)遠(yuǎn)程傳輸系統(tǒng)是一個(gè)高集成,特別講究軟硬件間相互配合的綜合系統(tǒng),強(qiáng)調(diào)的是協(xié)調(diào)、穩(wěn)定、高速、精準(zhǔn)地完成各項(xiàng)數(shù)據(jù)采樣工作。本設(shè)計(jì)中,在合理設(shè)計(jì)硬件的基礎(chǔ)上,分別對(duì)FPGA,ARM以及遠(yuǎn)程主機(jī)上的服務(wù)器程序精心設(shè)計(jì),解決了以往系統(tǒng)在大量數(shù)據(jù)采集、傳輸、儲(chǔ)存、讀寫和處理時(shí)的速度以及靈活性問題。利用LabVIEW功能強(qiáng)大、簡(jiǎn)單易用,設(shè)計(jì)靈活的圖形化編程語言,很容易地實(shí)現(xiàn)了對(duì)遠(yuǎn)程數(shù)據(jù)采集終端的配置與控制。