基于FPGA與ARM的遙測(cè)數(shù)據(jù)網(wǎng)絡(luò)化采集
當(dāng)用戶程序讀FPGA設(shè)備時(shí),數(shù)據(jù)還未準(zhǔn)備好,此時(shí)驅(qū)動(dòng)程序應(yīng)該阻塞該進(jìn)程,將其置入睡眠狀態(tài)直到條件滿足。此時(shí)需要初始化一個(gè)等待隊(duì)列頭,對(duì)讀進(jìn)程的休眠和喚醒時(shí)使用:
3.2.2 驅(qū)動(dòng)程序控制接口Ioctl
Ioctl用來(lái)設(shè)置FPGA中幀同步器和模擬源的參數(shù),部分設(shè)置命令如表1所示。本文引用地址:http://m.butianyuan.cn/article/190977.htm
flag為一個(gè)標(biāo)志位,當(dāng)flag被中斷函數(shù)設(shè)置為1時(shí)表示設(shè)備中有數(shù)據(jù),此時(shí)讀進(jìn)程可被換醒。
3.2.4 用戶程序及測(cè)試
設(shè)備驅(qū)動(dòng)實(shí)現(xiàn)后,需編寫相應(yīng)的用戶程序來(lái)進(jìn)行測(cè)試驅(qū)動(dòng)程序和實(shí)現(xiàn)數(shù)據(jù)的網(wǎng)絡(luò)轉(zhuǎn)發(fā)。在用戶程序中,讀/寫FPGA設(shè)備使用與普通文件一樣的操作函數(shù)。移植Linux時(shí)配置好網(wǎng)卡的地址,然后使用Socket編程實(shí)現(xiàn)數(shù)據(jù)的TCP/IP轉(zhuǎn)發(fā),用遙測(cè)軟件接收到的數(shù)據(jù)測(cè)試如圖7所示。
通過(guò)測(cè)試可以看到,同步碼FDB18450被正確識(shí)別,IRIG-B解碼為當(dāng)前時(shí)間。
4 結(jié)語(yǔ)
在此,基于FPGA與ARM進(jìn)行遙測(cè)數(shù)據(jù)的幀同步遙測(cè)數(shù)據(jù)的網(wǎng)絡(luò)轉(zhuǎn)發(fā),充分地利用了FPGA與ARM各自的特點(diǎn),它可使FPGA+ARM在數(shù)據(jù)接收處理中得到廣泛應(yīng)用。
評(píng)論