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