<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的IRIG-B碼解碼器設(shè)計(jì)

          基于FPGA的IRIG-B碼解碼器設(shè)計(jì)

          作者: 時(shí)間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

          摘要 針對基于單片機(jī)的IRIG—B碼精度低、工作穩(wěn)定性差等問題,提出了一種基于FPGA的IRIG—B碼器設(shè)計(jì)。在實(shí)現(xiàn)過程中著重分析了輸入 IRIG—B碼信號的問題,并采用三級D觸發(fā)器后接或門的方法,徹底消除對本系統(tǒng)穩(wěn)定性的影響。通過仿真驗(yàn)證了本系統(tǒng)具有解碼精度高、工作穩(wěn)定性強(qiáng)、易于實(shí)現(xiàn)等優(yōu)點(diǎn)。

          本文引用地址:http://www.ex-cimer.com/article/201609/303567.htm

          關(guān)鍵詞 IRIG—B碼;解碼;

          美國靶場司令委員會(huì)(Range Commanders Council,RCC)下屬機(jī)構(gòu)靶場間儀器組(Inter—Range Instrumen—tation Croup,IRIG)為保證靶場試驗(yàn)中各參試設(shè)備協(xié)同工作,制定了一種時(shí)間標(biāo)準(zhǔn)IRIG—B碼(簡稱B碼),由靶場時(shí)統(tǒng)站發(fā)送該碼,各設(shè)備接收此信號后再結(jié)合其測量數(shù)據(jù),從而達(dá)到測量數(shù)據(jù)的時(shí)間同步。我國靶場測量、控制、計(jì)算、通信、氣象等測試設(shè)備,均采用IRIG—B碼作為時(shí)間同步標(biāo)準(zhǔn),其特點(diǎn)是可靠性高、接口標(biāo)準(zhǔn)、通用規(guī)范及使用靈活方便。

          1 B碼簡介

          IRIG—B碼為一種串行的時(shí)間格式,其中每個(gè)脈沖稱為碼元。IRIG—B碼的幀速率為1 fip·s-1,一幀數(shù)據(jù)由100個(gè)碼元組成,分為第0、1、2、…、99個(gè)碼元,每個(gè)碼元長度為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碼由位置識(shí)別標(biāo)志、參考碼元、碼字和索引標(biāo)志4種碼元組成。

          B碼的位置識(shí)別標(biāo)志脈寬為8 ms,每幀B碼中有10個(gè)位置識(shí)別標(biāo)志碼元:P1、P2、…、P10。每10個(gè)碼元有一個(gè)位置識(shí)別碼,位置識(shí)別標(biāo)志的重復(fù)率為碼元速率的10%。

          a.jpg

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

          b.jpg

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

          c.jpg

          d.jpg

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

          e.jpg

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

          f.jpg

          2 FPGA解碼

          FPGA解碼首先需要對碼元進(jìn)行識(shí)別,對脈沖計(jì)數(shù),以脈沖下降沿作為計(jì)數(shù)結(jié)束。采用有限狀態(tài)機(jī)對第0、1、2、…、99碼元進(jìn)行有序地解碼,首先判斷出參考碼元,再根據(jù)5 ms和2 ms碼元的位置提取出正確的時(shí)間信息。由于不同的系統(tǒng)可能采用不同解碼時(shí)鐘,為使系統(tǒng)有更好的重用性,需要對時(shí)鐘頻率進(jìn)行歸一化。

          2.1 消除毛刺

          在組合電路、反饋電路和計(jì)數(shù)器中都可能產(chǎn)生毛刺信號,往往一個(gè)毛刺信號會(huì)影響整個(gè)電子系統(tǒng)的穩(wěn)定性。由于D觸發(fā)器對毛刺信號不敏感,通常的處理方法是通過 D觸發(fā)器對輸入信號進(jìn)行“過濾”,但這種方法有效的條件是毛刺不出現(xiàn)在D觸發(fā)器時(shí)鐘的上升沿,且持續(xù)時(shí)間不能維持1個(gè)時(shí)鐘周期,如圖7所示,否則,將會(huì)放大毛刺信號,對整個(gè)電子系統(tǒng)造成更不利影響。

          g.jpg

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

          h.jpg

          當(dāng)輸入信號處于低電平時(shí)出現(xiàn)毛刺,圖8的處理方法將會(huì)放大毛刺,但對于整個(gè)系統(tǒng)是沒有影響的,因?yàn)楸鞠到y(tǒng)采用高電平計(jì)數(shù)的方式識(shí)別碼元,當(dāng)脈寬很窄時(shí),便認(rèn)為是毛刺干擾,舍去,比上升沿識(shí)別碼元更簡單且更具抗干擾性。這種毛刺處理方法,雖然引入了額外的組合電路,但根據(jù)輸入信號的特點(diǎn),是不會(huì)產(chǎn)生毛刺的。

          2.2 對脈沖寬度進(jìn)行計(jì)數(shù)和碼元識(shí)別

          本文采用的歸一化時(shí)鐘為1 MHz,脈寬2 ms、5 ms、8 ms的計(jì)數(shù)分別為2 000、5 000、8 000,由于脈寬不可能精確到某個(gè)值,所以需要放寬計(jì)數(shù)判別各個(gè)碼元。計(jì)數(shù)在1500~2 500表示2 ms脈寬,計(jì)數(shù)在4 500~5 500表示5 ms脈寬,計(jì)數(shù)在7 500~8 500表示8 ms脈寬。輸入信號i_DATA處于高電平時(shí),開始計(jì)數(shù),當(dāng)時(shí)鐘i_cLK采集到i_DATA的下降沿時(shí),即停止計(jì)數(shù),并以w_UP_DOWN信號作為脈沖結(jié)束標(biāo)志。

          2.3 提取“秒”、“分”等信息的狀態(tài)機(jī)


          上一頁 1 2 下一頁

          關(guān)鍵詞: IRIG―B碼 解碼 毛刺

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();