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