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