基于FPGA的IRIG-B碼解碼器設計
摘要 針對基于單片機的IRIG—B碼解碼器解碼精度低、工作穩定性差等問(wèn)題,提出了一種基于FPGA的IRIG—B碼解碼器設計。在實(shí)現過(guò)程中著(zhù)重分析了輸入 IRIG—B碼信號的毛刺問(wèn)題,并采用三級D觸發(fā)器后接或門(mén)的方法,徹底消除毛刺對本系統穩定性的影響。通過(guò)仿真驗證了本系統具有解碼精度高、工作穩定性強、易于實(shí)現等優(yōu)點(diǎn)。
本文引用地址:http://dyxdggzs.com/article/201609/303567.htm關(guān)鍵詞 IRIG—B碼;解碼;毛刺
美國靶場(chǎng)司令委員會(huì )(Range Commanders Council,RCC)下屬機構靶場(chǎng)間儀器組(Inter—Range Instrumen—tation Croup,IRIG)為保證靶場(chǎng)試驗中各參試設備協(xié)同工作,制定了一種時(shí)間標準IRIG—B碼(簡(jiǎn)稱(chēng)B碼),由靶場(chǎng)時(shí)統站發(fā)送該碼,各設備接收此信號后再結合其測量數據,從而達到測量數據的時(shí)間同步。我國靶場(chǎng)測量、控制、計算、通信、氣象等測試設備,均采用IRIG—B碼作為時(shí)間同步標準,其特點(diǎn)是可靠性高、接口標準、通用規范及使用靈活方便。
1 B碼簡(jiǎn)介
IRIG—B碼為一種串行的時(shí)間格式,其中每個(gè)脈沖稱(chēng)為碼元。IRIG—B碼的幀速率為1 fip·s-1,一幀數據由100個(gè)碼元組成,分為第0、1、2、…、99個(gè)碼元,每個(gè)碼元長(cháng)度為10 ms。時(shí)間格式中秒、分、時(shí)均用BcD碼表示,低位在前,高位在后。第1、2、3、4、6、7、8碼元屬于“秒”信息,共占用7個(gè)碼元;第10、11、 12、13、15、16、17碼元屬于“分”信息,共占用7個(gè)碼元;第20、21、22、23、25、26碼元屬于“時(shí)”信息,共占用6個(gè)碼元;第30、 31、32、33、35、36、37、38、40、41碼元屬于“天”信息,共占用10個(gè)碼元。
IRIG—B碼由位置識別標志、參考碼元、碼字和索引標志4種碼元組成。
B碼的位置識別標志脈寬為8 ms,每幀B碼中有10個(gè)位置識別標志碼元:P1、P2、…、P10。每10個(gè)碼元有一個(gè)位置識別碼,位置識別標志的重復率為碼元速率的10%。

參考碼元Pr脈寬也為8 ms,作用是識別幀的起始時(shí)刻,“準時(shí)”參考點(diǎn)為參考碼元的前沿。

B碼的二進(jìn)制“1”和“0”的脈寬分別為5 ms和2 ms,是用于傳遞秒、分、時(shí)等重要信息的碼元。


索引標志碼元脈寬為2 ms,位于“秒”、“分”、“時(shí)”、“天”信息的十位和個(gè)位之間。

圖6為本文B碼的一幀數據示意圖,后續實(shí)驗就是對此幀數據進(jìn)行解碼,此幀數據代表的時(shí)間信息為:110天8時(shí)7分21秒。

2 FPGA解碼
FPGA解碼首先需要對碼元進(jìn)行識別,對脈沖計數,以脈沖下降沿作為計數結束。采用有限狀態(tài)機對第0、1、2、…、99碼元進(jìn)行有序地解碼,首先判斷出參考碼元,再根據5 ms和2 ms碼元的位置提取出正確的時(shí)間信息。由于不同的系統可能采用不同解碼時(shí)鐘,為使系統有更好的重用性,需要對時(shí)鐘頻率進(jìn)行歸一化。
2.1 消除毛刺
在組合電路、反饋電路和計數器中都可能產(chǎn)生毛刺信號,往往一個(gè)毛刺信號會(huì )影響整個(gè)電子系統的穩定性。由于D觸發(fā)器對毛刺信號不敏感,通常的處理方法是通過(guò) D觸發(fā)器對輸入信號進(jìn)行“過(guò)濾”,但這種方法有效的條件是毛刺不出現在D觸發(fā)器時(shí)鐘的上升沿,且持續時(shí)間不能維持1個(gè)時(shí)鐘周期,如圖7所示,否則,將會(huì )放大毛刺信號,對整個(gè)電子系統造成更不利影響。

若在P碼元的5 ms處出現一個(gè)毛刺,而不作有效地毛刺處理,將會(huì )出現碼元誤判,甚至會(huì )導致整幀數據錯誤,影響各系統時(shí)間同步。輸入信號經(jīng)過(guò)圖8所示的處理后,不利于系統的毛刺將被“剔除”,從而增強系統的穩定性。

當輸入信號處于低電平時(shí)出現毛刺,圖8的處理方法將會(huì )放大毛刺,但對于整個(gè)系統是沒(méi)有影響的,因為本系統采用高電平計數的方式識別碼元,當脈寬很窄時(shí),便認為是毛刺干擾,舍去,比上升沿識別碼元更簡(jiǎn)單且更具抗干擾性。這種毛刺處理方法,雖然引入了額外的組合電路,但根據輸入信號的特點(diǎn),是不會(huì )產(chǎn)生毛刺的。
2.2 對脈沖寬度進(jìn)行計數和碼元識別
本文采用的歸一化時(shí)鐘為1 MHz,脈寬2 ms、5 ms、8 ms的計數分別為2 000、5 000、8 000,由于脈寬不可能精確到某個(gè)值,所以需要放寬計數判別各個(gè)碼元。計數在1500~2 500表示2 ms脈寬,計數在4 500~5 500表示5 ms脈寬,計數在7 500~8 500表示8 ms脈寬。輸入信號i_DATA處于高電平時(shí),開(kāi)始計數,當時(shí)鐘i_cLK采集到i_DATA的下降沿時(shí),即停止計數,并以w_UP_DOWN信號作為脈沖結束標志。
2.3 提取“秒”、“分”等信息的狀態(tài)機
評論