基于FPGA與ARM的遙測數(shù)據(jù)網(wǎng)絡(luò)化采集
2.1 幀同步模塊
幀同步器根據(jù)幀同步碼組的相關(guān)性和周期性,經(jīng)過相關(guān)運算將同步碼從PCM串行流中識別出來,原理框圖如圖4所示。本文引用地址:http://butianyuan.cn/article/190977.htm
PCM數(shù)據(jù)按時鐘進行串/并轉(zhuǎn)換,與本地幀同步碼進行同或運算后再與上屏蔽位,由全加網(wǎng)絡(luò)將相關(guān)運算結(jié)果按位相加統(tǒng)計結(jié)果中1的個數(shù),大于門限值則表示可能接收到了幀同步碼。
為避免虛警和漏檢,使幀同步器穩(wěn)定可靠工作,采用搜索、校核、鎖定三態(tài)邏輯。
系統(tǒng)開始時處于搜索態(tài),符合相關(guān)器輸出,由搜索態(tài)轉(zhuǎn)入校核態(tài)。在預(yù)期檢測窗口內(nèi)沒有幀碼,從校核返回到搜索態(tài)。連續(xù)通過校核數(shù)α,進入鎖定態(tài)。為避免幀同步碼的漏檢,連續(xù)漏檢超過保護幀數(shù)β,幀同步才返回搜索態(tài),否則保持在鎖定態(tài),幀脈沖由本地產(chǎn)生。
2.2 IRIG—B碼解調(diào)
IRIG時間序列碼是一種串行碼,共有3種碼元,如圖5所示。
P碼元是位置碼元,連續(xù)2個P碼為一幀的開始,第1個P碼元定義為P0,第2個P碼元為秒脈沖pps,上升沿為該秒的準時刻,時間信息以BCD碼依次分布在其后的碼元中。解調(diào)時先進行pps的提取,再進行秒、分、時、天的信息提取,其流程如圖6所示。
時鐘頻率為1 MHz,用計數(shù)器對輸入信號的脈寬進行計數(shù)。8 ms,5 ms,2 ms脈寬計數(shù)為8 000,5 000,2 000。輸入B碼的脈寬會混有干擾,晶振時鐘也存在一定的誤差,計數(shù)器的計時判別應(yīng)浮動一個范圍,設(shè)置門限為脈寬的85%~115%,當滿足一定范圍的數(shù)值時,分別輸出P碼,0碼,1碼信號。
FPGA中的時碼產(chǎn)生“天:時:分:秒:毫秒:微秒”信息。解調(diào)出B碼時,FPGA更新內(nèi)部時間,B碼中不含毫秒與微秒信息,由FPGA根據(jù)秒脈沖信息的準時刻來生成。
3 FPGA驅(qū)動程序開發(fā)
在Linux中,所有的硬件設(shè)備都像常規(guī)文件一樣進行打開、關(guān)閉和讀/寫。把FPGA當作字符設(shè)備進行設(shè)計,驅(qū)動由設(shè)備加載與卸載,以及文件操作file_operation結(jié)構(gòu)體中成員函數(shù)組成。
3.1 加載與卸栽設(shè)備驅(qū)動
FPGA設(shè)備驅(qū)動程序初始化流程為動態(tài)獲得主設(shè)備號、字符設(shè)備注冊和申請中斷;卸載流程為注銷設(shè)備,釋放設(shè)備編號。
定義一個設(shè)備結(jié)構(gòu)體來表示FPGA,如下:
評論