国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的IRIG-B(DC)碼的解碼方案的設(shè)計與實現(xiàn)

2012-06-15 01:32王麗敏胡永輝侯雷劉軍良
時間頻率學(xué)報 2012年4期
關(guān)鍵詞:碼元狀態(tài)機(jī)解碼

王麗敏,胡永輝,侯雷,劉軍良,3

?

基于FPGA的IRIG-B(DC)碼的解碼方案的設(shè)計與實現(xiàn)

王麗敏1,2,胡永輝1,3,侯雷1,3,劉軍良1,2,3

(1. 中國科學(xué)院國家授時中心,西安 710600;2. 中國科學(xué)院研究生院,北京 100039;3. 中國科學(xué)院精密導(dǎo)航定位與定時技術(shù)重點實驗室,西安 710600)

IRIG-B碼是國際上通用的時間碼格式,廣泛應(yīng)用于各種系統(tǒng)的時間同步。針對IRIG-B(DC)碼的調(diào)制特性,介紹一種基于FPGA的B碼解調(diào)方案。重點描述了如何在同步時序中準(zhǔn)確提取秒同步信號并解調(diào)B碼中包含的時間信息。整個方案中采用Verilog HDL語言進(jìn)行設(shè)計,已成功實現(xiàn),并給出了驗證結(jié)果。

IRIG-B(DC)碼;現(xiàn)場可編程門陣列;同步;解調(diào)

0 引言

在靶場,我們把為常規(guī)武器試驗、導(dǎo)彈試驗、航天器發(fā)射、測控系統(tǒng)提供標(biāo)準(zhǔn)時間信號和標(biāo)準(zhǔn)頻率信號的一整套電子設(shè)備稱為時間統(tǒng)一系統(tǒng),簡稱“時統(tǒng)”[1]。時統(tǒng)設(shè)備是向各個設(shè)備提供標(biāo)準(zhǔn)時間信號和標(biāo)準(zhǔn)頻率信號的設(shè)備。

時統(tǒng)設(shè)備送給用戶的是標(biāo)準(zhǔn)格式的時間編碼信號,我們可以將時間統(tǒng)一系統(tǒng)產(chǎn)生的編碼信號轉(zhuǎn)化為B碼信號,用B碼進(jìn)行傳輸,在其他用戶端通過IRIG-B碼解碼器來獲得各種時間和頻率信號[2]。IRIG-B碼解碼器又稱為IRIG-B碼解碼終端,它是用戶設(shè)備的有機(jī)組成部分,能否實現(xiàn)系統(tǒng)的時間統(tǒng)一,IRIG-B時間碼接口終端是重要的一環(huán)[3]。

1 IRIG-B時間碼簡介

IRIG(inter range instrumentation group)是美國RCC(Range Commanders Council)所屬的負(fù)責(zé)制訂靶場標(biāo)準(zhǔn)等工作的機(jī)構(gòu)。靶場時統(tǒng)和通信系統(tǒng)的標(biāo)準(zhǔn)化工作是IRIG所屬的TCG(tele-communication group)負(fù)責(zé)的,它所制訂的標(biāo)準(zhǔn)時間格式有兩大類:一類是并行時間碼格式,另一類是串行時間碼格式。

IRIG-B碼是一種串行格式的時間碼,分為直流碼(DC)和交流碼(AC)2種。B(DC)碼的幀周期為1s,碼元速率為每秒100脈沖,從秒準(zhǔn)時點起,按秒、分、時、天等時間信息進(jìn)行編碼,如圖1所示。B碼中每個脈沖稱為碼元,每個碼元的準(zhǔn)時參考點是該脈沖的前沿。B碼的信息采用脈寬調(diào)制的方式表示,碼元寬度有3種,即2、5和8ms,如圖2所示。為了便于提取B碼中的信息,每10個碼元中有一個位置識別標(biāo)志,其寬度為8 ms,位置識別標(biāo)志分別稱為P1,P2,…,P9,P0。參考標(biāo)志是由位置識別標(biāo)志P0和相鄰的參考碼元PR組成的,參考碼元PR的寬度也為8ms,而且PR的前沿即該幀B碼的準(zhǔn)秒時刻,因此可以說參考碼元PR是B碼中最重要的碼元。B碼中表示時間信息的碼元共有30個,這些碼元稱為碼字。表示二進(jìn)制“1”的碼字寬度為5 ms,表示二進(jìn)制“0”的碼字寬度為2 ms。

圖1 IRIG-B(DC)碼波形示意圖

圖2 B碼碼元類型

2 FPGA解碼及其算法

與傳統(tǒng)使用單片機(jī)及其外圍電路進(jìn)行B碼解調(diào)相比,使用FPGA(現(xiàn)場可編程門陣列),具有運行速度快,效率高和內(nèi)部時延小的優(yōu)點,并且FPGA有大量軟核,可以方便地進(jìn)行二次開發(fā)。因此,使用FPGA來實現(xiàn)B碼的同步解碼具有很大的優(yōu)勢[4]。

采用FPGA進(jìn)行B(DC)碼的解碼最終是要同步提取出1 PPS和8421BCD格式的時間信息[4],其關(guān)鍵是碼元的識別與提取。整個方案采用Verilog HDL語言進(jìn)行設(shè)計,其解碼過程示意于圖3。

圖3 B碼解調(diào)過程示意圖

2.1 碼元識別

2.1.1 脈寬計數(shù)

B碼是脈寬調(diào)制的串行格式的時間碼,因而對碼元的識別最直接的方式是對碼元時寬計數(shù),再根據(jù)計數(shù)值判斷相應(yīng)碼元的值“0”、“1”和標(biāo)志位。本方案采用1 kHz的時鐘對碼元的持續(xù)高電平計數(shù),并在低電平時對計數(shù)值清零。由于輸入的B碼信號與時鐘可能存在同步誤差,所以對于碼元寬度的計數(shù)值不能采用固定的計數(shù)值。對于寬度為2 ms的碼元,計數(shù)值為1,或2,或3時,判斷碼元的值為二進(jìn)制數(shù)“0”;寬度為5 ms的碼元,當(dāng)計數(shù)值為4,或5,或6時,判斷碼元的值為二進(jìn)制數(shù)“1”;寬度為8 ms的碼元,當(dāng)計數(shù)值為7,或8,或9時,判斷碼元為參考標(biāo)志。

2.1.2 碼元賦值

碼元的賦值是在脈寬計數(shù)完成之后,碼元的下降沿處完成的。定義一個2位的寄存器用來存儲碼元的值,值為0的碼元存儲為“00”,值為1的碼元存儲為“01”,位置識別標(biāo)志分別為碼元P1,P2,…,P9,P0,它們的值存儲為“10”。

用Verilog HDL設(shè)計的可綜合模塊,必須避免使用異步時序邏輯,這是因為許多綜合器不支持異步時序邏輯的綜合,而且用異步時序邏輯確實很難控制由組合邏輯和延遲所產(chǎn)生的冒險和競爭[5]。

為了滿足以上FPGA的同步時序設(shè)計原則,首先同步提取出B碼中碼元上升沿和下降沿處的窄脈沖,碼元的上升沿窄脈沖在之后的碼元計數(shù)時會用到。這樣在設(shè)計中可以采用這些窄脈沖作為使能條件,而始終采用時鐘的上升沿作為唯一確定的觸發(fā)條件,即保證了同步時序的設(shè)計原則。碼元邊沿窄脈沖如圖4所示。

注:clk表示10 MHz的計數(shù)時鐘,bdc_in表示輸入的B(DC)碼信號,rst表示復(fù)位信號,ena_d表示碼元下降沿窄脈沖,ena_u表示碼元上升沿窄脈沖。

為了得到碼元的上升沿窄脈沖,將輸入的B碼信號延遲一個計數(shù)時鐘,并與其取反信號進(jìn)行相與操作即可得到碼元上升沿的窄脈沖ena_u;同時,將B碼輸入信號延遲取反之后與原輸入信號進(jìn)行相與即可得到碼元下降沿的窄脈沖ena_d。其產(chǎn)生原理如圖5所示。

圖5 上升沿、下降沿窄脈沖產(chǎn)生原理

2.2 秒信號1PPS的同步提取

要獲得1 PPS信號,首先要判斷出B碼中每一幀的秒準(zhǔn)時點。

在圖1中可以看到,連續(xù)2個P碼元的第2個P碼元的前沿即為秒的幀頭。對幀頭的定位設(shè)計了一個三段式狀態(tài)機(jī)。所謂三段式狀態(tài)機(jī),就是使用3個always模塊,其中一個always模塊采用同步時序的方式,描述狀態(tài)轉(zhuǎn)移,第2個always模塊采用組合邏輯的方式,判斷狀態(tài)轉(zhuǎn)移,狀態(tài)轉(zhuǎn)移條件,描述狀態(tài)轉(zhuǎn)移規(guī)律,第3個always模塊使用同步時序電路描述每個狀態(tài)的輸出。這種三段式結(jié)構(gòu)的優(yōu)勢是使?fàn)顟B(tài)機(jī)做到了同步寄存器輸出,消除了組合邏輯輸出的不穩(wěn)定與毛刺的隱患,而且更利于時序路徑分組。一般來說在FPGA/CPLD等可編程邏輯器件上采用這種結(jié)構(gòu)會使得綜合與布局布線的效果更佳[6]。

在這個狀態(tài)機(jī)中,設(shè)計了3個狀態(tài):IDLE,STATE 1和STATE 2,其中初接始狀態(tài)是IDLE,STATE 1表示接收到一個P碼元,STATE 2表示連續(xù)接收到2個P碼元,圖6是狀態(tài)示意圖。

狀態(tài)機(jī)的初始狀態(tài)是IDLE,當(dāng)接收到P碼元時,狀態(tài)轉(zhuǎn)移到STATE 1,否則保持IDLE狀態(tài)不變;當(dāng)處于STATE 1狀態(tài)時,若接收到P碼元,則狀態(tài)轉(zhuǎn)移到STATE 2,否則狀態(tài)回到IDLE;當(dāng)轉(zhuǎn)到狀態(tài)STATE 2時,接收到任何碼元,狀態(tài)都跳轉(zhuǎn)到IDLE。

在進(jìn)入狀態(tài)STATE 2時,狀態(tài)機(jī)產(chǎn)生一個高電平信號,此后整個解碼工作將在高電平持續(xù)期間進(jìn)行。對高電平持續(xù)期間,設(shè)計了一個碼元計數(shù)器,這個計數(shù)器在每個碼元的上升沿實現(xiàn)加1操作,當(dāng)加到99個碼元的時候?qū)⒏唠娖叫盘柷辶?,同時產(chǎn)生一個1PPS的控制脈沖pps_pulse。這個脈沖相當(dāng)于一個門限信號,與下一個碼元的上升沿窄脈沖進(jìn)行與操作可以準(zhǔn)確地得到B碼地秒準(zhǔn)時點1 PPS信號。如圖7所示。

圖6 狀態(tài)機(jī)示意圖

圖7 1 PPS的產(chǎn)生原理

2.3 時間信息的獲取

由之前對B碼的介紹可知,B碼的每一幀中1~41個碼元用來表示秒、分、時、天個位、天十位、天百位的時間信息,所以定義一個41位的寄存器Memory[41:1]來存儲1~29碼元的值,同時定義9個4位的寄存器分別用來存儲秒個位(second_l),秒十位(second_h),分個位(minute_l),分十位(minute_h),時個位(hour_l),時十位(hour_h),天個位(day),天十位(m_day)和天百位(h_day)的信息。

B碼的編碼采用的是8421BCD格式,因而在進(jìn)行B碼的解調(diào)時,當(dāng)獲得二進(jìn)制表示的每個碼元值時,只需要將碼元值的最低位“0”或“1”,存到寄存器中,便可進(jìn)行8421BCD與二進(jìn)制的轉(zhuǎn)換。

當(dāng)碼元計數(shù)器的值為99時,對之前定義的秒、分、時、天個位、天十位、天百位寄存器賦值,Verilog HDL語句實現(xiàn)如下:

Second_l<=Memory[1]×1'd1+Memory[2]×2'd2+Memory[3]×3'd4+Memory[4]×4'd8;

Second_h<=Memory[6]×1'd1+Memory[7]×2'd2+Memory[8]×3'd4;

Minute_l<=Memory[10]×1'd1+Memory[11]×2'd2+Memory[12]×3'd4+Memory[13]×4'd8;

Minute_h<=Memory[15]×1'd1+Memory[16]×2'd2+Memory[17]×3'd4;

Hour_l <=Memory[20]×1'd1+Memory[21]×2'd2+Memory[22]×3'd4+Memory[23]×4'd8;

Hour_h<=Memory[25]×1'd1+Memory[26]×2'd2;

Day<=Memory[30]×1'd1+Memory[31]×2'd2+Memory[32]×3'd4+Memory[33]×4'd8;

M_day<=Memory[35]×1'd1+Memory[36]×2'd2+Memory[37]×3'd4+Memory[38]×4'd8;

H_day<=Memory[40]×1'd1+Memory[41]×2'd2;

其中,1'd1、2'd2、3'd4和4'd8分別代表二進(jìn)制形式轉(zhuǎn)化為8421BCD格式時,對應(yīng)位相乘的加權(quán)值,即十進(jìn)制的1、2、4和8。

3 實驗結(jié)果與分析

整個方案采用Verilog HDL語言編寫代碼,并在Altera公司的cycloneii系列型號為EP2C20Q240C8的芯片中成功實現(xiàn),圖8是FPGA解碼模塊方框圖。

圖8 FPGA解碼模塊圖

使用Altera的QUARTUSⅡ進(jìn)行Verilog HDL語言的設(shè)計與編譯,并用Modelsim進(jìn)行仿真,結(jié)果如圖9所示。如圖中豎線所示,在參考碼元上升沿處準(zhǔn)確同步提取了1PPS信號,且顯示解調(diào)的時間為 115d 21 h 18 min 59 s與輸入的時間一致,其中second_l,second_h,minute_l,minute_h,hour_l,hour_h,day,m_day,h_day分別代表秒個位,秒十位,分個位,分十位,時個位,時十位,天個位,天十位,天百位。解調(diào)的時間可以通過接口電路在七段數(shù)碼管上正確顯示,證明了本方案的可行性。

圖9 解碼結(jié)果圖

4 結(jié)語

以上介紹了一種基于FPGA的IRIG-B(DC)碼的解碼方案,本方案在altera公司的cycloneii系列型號為EP2C20Q240C8的芯片中實現(xiàn),占用芯片資源非常少,不到5%,完全可以在同一塊芯片上完成后續(xù)B(AC)碼的解調(diào),這在很大程度上節(jié)約了芯片資源。此外,與傳統(tǒng)利用單片機(jī)實現(xiàn)相比,大大減小了電路設(shè)計的復(fù)雜度,增加了設(shè)計的靈活性。在整個解碼中,采用Verilog HDL代碼實現(xiàn),具有方法簡單、易讀和可重用性強(qiáng)的特點。設(shè)計完全在同步時序中完成,避免了異步時序可能導(dǎo)致的競爭與冒險,因而在時間同步系統(tǒng)中應(yīng)用前景廣闊。

[1] 劉凱. 時間統(tǒng)一技術(shù)研究及應(yīng)用[D].西安: 西安電子科技大學(xué), 2010.

[2] 吳坤, 張君. 基于 GPS 的靶場時統(tǒng)系統(tǒng)技術(shù)研究[J].國防技術(shù)基礎(chǔ), 2009, 3: 57-59.

[3] 童寶潤. 時間統(tǒng)一系統(tǒng)[M]. 北京: 國防工業(yè)出版社, 2000.

[4] 陳曦, 劉方. 基于FPGA的IRIG-B(DC)碼的解碼方案[J]. 儀器儀表用戶, 2009, 16(3): 94-96.

[5] 夏宇聞. Verilog數(shù)字系統(tǒng)設(shè)計教程[M]. 2版. 北京: 航空航天大學(xué)出版社, 2008.

[6] 吳繼華, 王誠. 設(shè)計與驗證: Verilog HDL[M]. 北京: 人民郵電出版社, 2006.

Design and implementation of IRIG-B(DC) codedemodulation based on FPGA

WANG Li-min1,3, HU Yong-hui1,2, HOU Lei1,2, LIU Jun-liang1,2,3

(1. National Time Service Centre, Chinese Academy of Sciences, Xi′an 710600, China;2. Graduate University of Chinese Academy of Sciences, Beijing 100039, China;3. Key Laboratory of Precision Navigation and Timing Technology, National Time Service Center,Chinese Academy of Sciences, Xi′an 710600, China)

IRIG-B code is an universal format of time code in the world and is widely used in timing systems.According to the characteristics of IRIG-B code modulation, a decoding plan based on FPGA is introduced with emphases on how to extract the synchronous second signal accurately from the synchronous timing sequency and how to get the time information included in the B code. The whole project is designed by using Verilog HDL and has been implemented successfully with the results shown.

IRIG-B(DC) code; FPGA; synchronization; demodulation

TN76

A

1674-0637(2012)04-0228-07

2011-12-28

中國科學(xué)院“西部之光”人才培養(yǎng)計劃重點資助項目(Y001YR1601)

王麗敏,女,碩士研究生,主要從事時間統(tǒng)一系統(tǒng)技術(shù)研究。

猜你喜歡
碼元狀態(tài)機(jī)解碼
《解碼萬噸站》
LFM-BPSK復(fù)合調(diào)制參數(shù)快速估計及碼元恢復(fù)
解碼eUCP2.0
基于有限狀態(tài)機(jī)的交會對接飛行任務(wù)規(guī)劃方法
NAD C368解碼/放大器一體機(jī)
Quad(國都)Vena解碼/放大器一體機(jī)
基于極大似然準(zhǔn)則的短猝發(fā)信號盲解調(diào)
基于FPGA的IRIG-B碼解碼器設(shè)計
一種碼元同步時鐘信號的提取方法及單片機(jī)實現(xiàn)
FPGA設(shè)計中狀態(tài)機(jī)安全性研究