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