基于FPGA的IRIG-B編碼器的設計
2.2 GPS授時模塊M12T
M12接收器是Motorola公司優秀ONCORE家族中的新成員,廣泛用于各類定位、導航、授時設備中,擁有全GPS行業內最快的初次定位時間和重捕獲衛星的時間。M12T是針對GPS授時推出的定時精度更高的增強型產品。M12T具有12個并行通道,可同時跟蹤12顆衛星,重捕獲時間小于1.0 s。當擁有當前天歷、位置、時間和星歷數據時,首次定位時間TTFF15 s。在位置保持狀態時,定時精度(1 pps或100 pps)小于12 ns。
2.3 FPGA和DAC
FPGA采用Altera CycloneⅡEPC2C5T144,該芯片有4 608個LE,26個M4K,兩個模擬鎖相環。DAC采用單通道、單電源、自帶基準的MAX5712。MAX5712是微型引腳,12 b解析度,片上精密輸出放大器提供滿擺幅輸出。MAX5712用兼容SPITM/QSPITM/MICROWIRETM和DSP標準接口的3線串行接口。所有輸入都兼容于CMOS邏輯,并經過施密特觸發器緩沖,允許直接接光電耦合器。MAX5712含有上電復位(POR)電路,確保上電時DAC處于零電壓輸出狀態。
3 時鐘模塊實現
3.1 基準時刻和索引脈沖的提取
要保證B碼每個碼元的上升沿時刻準確,需要100 pps的精確時基和pps的參考點。一般的做法是用pps作為基準,每個碼元的起點由前兩個秒脈沖的間隔等分得到。這種方法使用上一時刻來預測下一秒,每秒脈沖有抖動時會導致最后一個碼元寬度不足或超過10 ms,這將無法利用B碼來實現時間同步和數據等間隔同步的采集。本文直接使用M12T產生的100 pps信號作為每個碼元的起始時刻,然后再從100 pps信號中恢復出1 pps。由于B碼參考標記Pr=1 pps的上升沿,所以這種方法既保證Pr的準確性,又保證各個碼元和索引標記時刻的準確性。在有等間隔同步數據采樣要求的場合,可使用每個B碼碼元的上升沿校準本地時基,確保采樣同步和時間同步。
M12T輸出的100 pps信號(以下稱PPM12)如圖3所示,每個脈沖的上升沿時刻準確,周期10 ms,在pps的參考點,脈沖寬度為6~8 ms,其他時刻2~4 ms,脈沖寬度不是關注的重點。
B碼的每個碼元恰好與上述100 pps信號對應。首先在FPGA中構建一個模100的碼元計數器MMH和一個高電平脈沖寬度檢測器,通過下面的方法和步驟可以恢復pps。
(1)在PPM12信號的上升沿復位寬度檢測器,高電平計時,在下降沿停止并輸出Tb;
(2)在PPM12下降沿檢查Tb,當6 msb8 ms時,令MMH=1,否則執行下面的操作:
if MMH=99 then MMH=0
else MMH=MMH+1
(3)在PPM12信號的上升沿檢查MMH,如果MMH=0,則當前脈沖的上升沿是參考點Pr,觸發輸出8 ms高電平脈沖作為pps信號,重復步驟(1)~(3),在PPM12信號上升沿檢查MMH;如果MMH的個位為9或者MMH=0,則當前脈沖標記為索引脈沖,即輸出8 ms高電平。
3.2 絕對時間獲取
通過在FPGA上構建一個UART與M12T互連。為了簡化FPGA對M12T的配置和輸出時間的獲取,將UART分成兩部分設計,即發送模塊txmit和接收模塊rcvr。發送模塊用一個M4K設計一個512×8 FIFO,在系統復位后的若干個時鐘,利用一個狀態機將M12T的配置數據寫入FIFO;然后通過txmit模塊配置M12T,配置結束后,UART模塊將M12T的時間碼轉發到外部RS 232接口,同時可以轉發外部接口的配置數據到M12T。接收模塊采用寄存器模式,只接收M12T發來的絕對時間信息,這樣后面的編碼模塊可以直接使用這些時間信息。做法如下:設計一個接收計數器rx_count,每接收一個字節計數器自加,并根據rx_count決定是否保存時間碼。由于M12T每秒中發送一幀,故在檢測到pps時復位該計數器。
評論