FPGA實(shí)現IRIG-B(DC)碼編碼和解碼的設計
FPGA完成這個(gè)時(shí)刻的B碼編碼后,會(huì )立即不斷地搜索下一個(gè)pps_in的上升沿,GPS模塊每秒都會(huì )觸發(fā)pps_in的上升沿,一旦發(fā)現pps_in上升沿,馬上進(jìn)入下一秒的編碼。這樣編程的好處是B碼大致上可以與1 pps同步,延遲少且方便測試。FPGA對IRIG-B碼秒信號的編碼仿真波形如圖4所示。
如上圖所示,第1行信號是40 MHz的晶振時(shí)鐘;第2行信號是輸入信號pps_in;第3行信號是復位信號,低電平有效;第4行信號是分頻后的時(shí)鐘信號5 MHz;第5行是輸入秒信號,此時(shí)秒信號sec bcd[7..0]為8位二進(jìn)制數10001000;最后一行信號是B碼的編碼信號。當pps_in上升沿到來(lái)時(shí),FPGA對B碼在5 MHz時(shí)鐘的上升沿處立即產(chǎn)生高電平,首先是B碼輸出位置識別標志Pr(高電平8 ms,低電平2 ms),接著(zhù)8位二進(jìn)制的秒信號從低位至高位輸出,實(shí)現計數器計數編碼,放大波形可以知道,此時(shí)B碼與pps_in有100 ns的滯后,100ns的延遲對時(shí)序同步影響很小,可以忽略不計。然后FPGA根據狀態(tài)機的狀態(tài)運行,直到下一個(gè)pps_in上升沿來(lái)臨。
3 IRIG-B碼解碼
解碼部分的設計采用兩個(gè)時(shí)鐘來(lái)處理,晶振的時(shí)鐘為40 MHz,通過(guò)分頻,可以得到一個(gè)是10 kHz的時(shí)鐘,和一個(gè)10 MHz的時(shí)鐘。先采用10 kHz的時(shí)鐘,當連續監測到2個(gè)脈寬為8 ms的位置標示信號時(shí),啟動(dòng)1個(gè)計時(shí)器,當計時(shí)器計時(shí)到990 ms時(shí),產(chǎn)生1個(gè)使能信號EN,這個(gè)信號是傳遞給高頻時(shí)鐘的監測使能信號。接著(zhù)計時(shí)器清零,等待下一次監測到連續2個(gè)脈寬為8 ms的信號出現時(shí),計時(shí)器重新開(kāi)始計時(shí)。
如果只采用高頻時(shí)鐘的話(huà),要監測2個(gè)脈寬為8 ms的信號與計時(shí)將會(huì )非常浪費邏輯資源。所以在前一部分的監測與計時(shí)用低頻時(shí)鐘進(jìn)行;在準時(shí)對應的上升沿來(lái)臨前2 ms為高頻時(shí)鐘部分提供1個(gè)使能信號;高頻時(shí)鐘處理部分接收到此使能信號EN后再監測B碼的PR的上升沿,當監測到PR為高電平后,發(fā)出1個(gè)脈沖1 pps。經(jīng)過(guò)這樣的處理,就能精確的提取出1 pps信號以及與1 pps精確同步的10 MHz脈沖信號。1 pps對時(shí)信號的提取如圖5所示。
評論