基于LabVIEW和ARM嵌入式數(shù)據(jù)采集與遠程傳輸控制系統(tǒng)
b)Control_register:控制寄存器。內(nèi)部模塊有序工作的核心,具體的控制定義見表2。本文引用地址:http://2s4d.com/article/152253.htm
c)Config_6620:配置AD6620。此模塊在Conf 6620位有效時接收由ARM傳來的AD6620配置信息,完成DDC濾波器和控制寄存器配置。它除了本身使用ARM地址總線的3位ARM ADD[3:1]作為FPGA內(nèi)部模塊選擇之外,還用了ARM ADD[6:4]作為AD6620的外部接口寄存器地址。Rdy in信號用于指示寫入操作成功,ARM檢測到此信號有效后,進行下一次的寫操作。
d)PII:鎖相環(huán)。Cyclone EP1C6Q240中有2個鎖相環(huán)模塊,設計中使用了其中的一個將20 MHz的時鐘倍頻至50 MHz,供AD9244,AD6620以及FPGA內(nèi)部使用。
e)Ad_to_sram:AD6620輸出數(shù)據(jù)寫入SRAM時序產(chǎn)生模塊。AD6620工作在單通道模式時典型輸出時序見圖。
此模塊主要完成的功能有:用2個數(shù)據(jù)鎖存器在DV與IQ信號的控制下鎖存I路和Q路數(shù)據(jù),產(chǎn)生寫SRAM所需的地址。由于AD6620抽取率較高的緣故,輸出數(shù)據(jù)率一般較低,在模塊中使用了狀態(tài)機在2次有效數(shù)據(jù)期間產(chǎn)生寫SRAM的時序。此外,當寫地址到達設定值時,模塊產(chǎn)生寫溢出中斷,提示ARM改變控制寄存器內(nèi)容,讀取數(shù)據(jù)。
a)Read_add_gen:讀地址產(chǎn)生。在Fetch_sram位的控制下,產(chǎn)生讀SRAM時的地址,當讀地址到達設定值時,產(chǎn)生讀溢出中斷,提示ARM改變控制寄存器內(nèi)容,進行下一步操作。
b)Control_logic:控制邏輯。模塊在Start_daq有效時選擇由Ad_to_sram模塊產(chǎn)生的寫SRAM的地址、數(shù)據(jù)與控制總線與SRAM相接,而在Fetch_sram有效時選擇讀SRAM的地址、數(shù)據(jù)與控制總線與SRAM相接。與DMA讀取有關的請求與響應信號也在此模塊中處理。
3.3 嵌入式Linux驅(qū)動程序設計
驅(qū)動程序是硬件與應用程序的接口。針對設計任務與硬件特點,在驅(qū)動程序中設計了以下函數(shù):
a) AD6620_read:申請DMA緩存,睡眠等待寫溢出中斷到來,DMA傳輸完成后,將數(shù)據(jù)從內(nèi)核空間傳送至用戶空間,釋放DMA緩存。
b) AD6620_ioctl:核心是一個switch選擇結(jié)構(gòu),根據(jù)應用程序中用戶命令,完成初始化DMA,寫控制寄存器或者配置AD6620的工作。
c)AD6620 open:主要完成DMA通道參數(shù)設置,初始化IO端口和信號量。
d) AD6620 release:完成與AD6620_open相反的工作,主要是一些清理和釋放申請資源的工作。
函數(shù)編寫好后,通過下面的file_operations結(jié)構(gòu)體聯(lián)系起來:
e) AD6620 init:初始化函數(shù),完成驅(qū)動程序注冊、中斷與中斷處理函數(shù)注冊、創(chuàng)建設備文件節(jié)點等。其中的驅(qū)動程序注冊的核心就是上面的file_operations結(jié)構(gòu)體。
驅(qū)動程序編寫好后,用戶就可以在應用程序中調(diào)用這些函數(shù),實現(xiàn)通過一組標準化的調(diào)用來操作底層硬件。
3.4 客戶端應用程序
客戶端應用程序為了保證數(shù)據(jù)與控制信息的可靠傳輸,采用的是基于TCP協(xié)議的Socket網(wǎng)絡編程。本次設計客戶端運行在ARM上,采用的是Linux下的C編程;而服務器端運行在遠程主機上,利用LabVIEW的圖形化語言實現(xiàn)。具體客戶端的通信與控制流程圖見圖4??梢钥闯???蛻舳耸且蕾囉谧x取由遠程主機發(fā)送的控制字符來完成實時控制,實現(xiàn)與服務器端的交互操作的。因此,無論是客戶端還是服務器端,在每一次發(fā)送數(shù)據(jù)與控制信息時,都會發(fā)送一個控制字符,接收端就是依靠識別此字符來完成相應的操作。表3中給出了控制字符與所執(zhí)行操作之間的對應關系。
3.5 LabVIEW服務器程序設計
服務器端的完整程序見圖5。服務器在指定的端口上偵聽,等待遠程客戶端的連接。程序的核心是兩個循環(huán)框,上面的循環(huán)框完成發(fā)送數(shù)據(jù)和控制信息的任務,主要包括傳送AD6620濾波器設計與控制寄存器配置文件、實時改變AD6620可動態(tài)配置寄存器內(nèi)容、開始數(shù)據(jù)采集以及停止系統(tǒng)控制等模塊。
評論