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