賈磊,崔永俊*,楊兵,王晉偉
(1.中北大學電子測試技術國家重點實驗室,太原030051;2.中北大學儀器科學與動態測試教育部重點實驗室,太原030051)
基于FPGA的IRIG-B(AC)時間碼解碼器的設計*
賈磊1,2,崔永俊1,2*,楊兵1,2,王晉偉1,2
(1.中北大學電子測試技術國家重點實驗室,太原030051;2.中北大學儀器科學與動態測試教育部重點實驗室,太原030051)
為了解決IRIG-B(AC)碼解碼精度低的問題,提高解調系統的穩定性,提出了一種利用高性能FPGA實現解調IRIG-B(AC)碼的解碼器。通過調用FPGA的IP核生成乘法器與FIR低通濾波器,將B(AC)碼中的交流分量濾除掉,然后根據其幅值進行解調。該解碼器能夠快速準確地解調出IRIG-B(AC)碼的時間信息,并輸出與此時間信息對應的秒脈沖,通過輸出端口將解調出的時間信息傳輸到上位機顯示。通過大量試驗證明該解碼器準確度高、穩定性強,能夠滿足各種應用場所對IRIG-B(AC)碼授時的要求。
IRIG-B碼;解碼;濾波;A/D轉換;秒脈沖
IRIG時間編碼序列,是由美國靶場間儀器組IRIG (Inter Range Instrumentation Group)提出來的,被廣泛應用于時間信息傳輸系統中[1-2]。常規的IRIG-B碼解碼設備采用自動控制增益電路、比較器以及過零檢測電路實現解調,由于信號經過比較器和過零檢測電路時易受干擾影響產生抖動和零點漂移,從而造成輸出的時間信息出現抖動,降低了傳統解碼設備的精度。
針對以上問題,設計了一種基于FPGA的IRIG-B (AC)碼解碼器,該設計以FPGA為控制核心,通過LTC1068-200濾波芯片和ADS8365模數轉換芯片對交流碼進行采集,并將其轉換為數字量,供FPGA內部解碼模塊分析與解調,通過程序的輸出模塊將解調出IRIG-B碼的時間信息與秒脈沖輸出。該解碼器體具有體積小、精度高、兼容性強等特點,能夠滿足多種場合對IRIG-B(AC)碼授時的要求。
IRIG-B碼通常采用串行時間碼格式,時幀速率為1幀/s,每一幀由100個碼元組成,每個碼元的周期為10 ms[3];IRIG-B碼分直流、交流兩種,未經幅度調制的為IRIG-B(DC)碼(直流),經過幅度調制的為IRIG-B (AC)碼(交流)[4]。IRIG-B碼中每一個脈沖信號代表一個碼元,時間信息用碼元使用二進制來表示,占空比為1∶4的碼元表示‘0',占空比為4∶1的碼元表示‘1',占空比為1∶1的碼元表示位置標識位‘P'[5]。
IRIG-B(AC)碼標準載波(通常為1 kHz的正弦波)幅度調制而成,標準的調制比為3∶1,且使其過零點與碼元的上升沿對齊[6]。B(AC)碼的高幅值對應B(DC)碼的高電平,B(AC)碼的低幅值對應B (DC)碼的低電平,如圖1所示。

圖1 IRIG-B(AC)碼格式
本解碼器采用FPGA作為控制核心實現IRIG-B (AC)碼的解調。硬件電路主要包括:接收電路、濾波電路、模數轉換電路、FPGA控制電路以及輸出電路。
本解碼器在解調IRIG-B(AC)碼時,首先通過接收電路接收B(AC)碼信號,此信號通過濾波電路將噪聲濾除掉,模數轉換電路將噪聲去除后的信號轉換為數字信號,FPGA接收到數字信號之后首先對其進行數字解調,FPGA內部對其處理時相乘與其載波同頻同相的波形,之后再濾波得到IRIG-B (DC)碼,然后根據直流碼碼元的占空比對碼元進行賦值,根據碼元的位置與賦值解調出其包涵的時間信息和秒脈沖,通過輸出電路送入上位機。系統的整體設計框架如圖2所示。

圖2 系統硬件結構圖
系統硬件以FPGA為核心,采用模塊設計的思路,結構明確,功能強大,主要包含濾波模塊和AD轉換模塊等。FPGA采用XILINX公司的XC3S400,利用LTC1068芯片及外圍電路構成低通濾波器,通過ADS8365芯片對采集的交流信號進行模數轉換,解碼后的時間信息通過MAX232D芯片上傳到上位機。
3.1濾波模塊
為了確保IRIG-B(AC)碼的解碼精度,本設計在模數轉換模塊之前添加濾波電路,根據輸入信號的特征,采用的濾波芯片是LTC1068,利用FliterCAD軟件生成濾波芯片的外圍電路,電路連接圖如圖3所示。

圖3 濾波器外圍電路圖
本設計中輸入的交流信號頻率為1 kHz,IRIG-B (AC)碼用于遠距離傳輸,在傳輸過程中易受其它信號的干擾引入噪聲,為此,設定低通濾波電路的截止頻率為1.5 kHz,阻帶衰減為40 dB,有效的去除了噪聲。通過使用高精度濾波電路,減小了溫漂,提高了信噪比,保證了交流采集電路的精度和可靠性。
3.2AD轉換模塊
本設計中的模數轉換模塊采用美國德州儀器的低功耗、高性能ADS8365模數轉換芯片,具有6個獨立的16 bit并行接口通道,本設計采用直接地址模式,通過控制地址信號端選擇采樣通道。
在本設計中,IRIG-B(AC)碼的電壓范圍是±10 V,ADS8365芯片的模擬輸入電壓范圍是0~5 V(以2.5 V為基準),為了使輸入信號與ADS8365的輸入電壓相匹配,在ADS8365前添加閉環調理電路,如圖4所示,兩片OPA227UA組成差分輸出電路,將單端輸入信號的電壓降低至0~5 V范圍內,滿足ADS8365對輸入信號電壓的要求。

圖4 雙極性輸入電壓轉換電路
交流B碼經過硬件電路處理后傳輸給FPGA,FPGA程序采用模塊化設計思路。調用FPGA內部乘法器和IP內核生成濾波器,濾波器對交流B碼進行解調,得到模糊直流B碼,通過門限檢測模塊后使其變清晰,再按直流B碼對其處理。脈寬檢測模塊通過對脈沖寬度的判斷完成碼元的賦值,幀頭檢測模塊完成對B碼中秒脈沖的提取,時間序列提取模塊通過碼元距離幀頭的位置按二進制將碼元的賦值轉換為8421BCD格式的時間信息,通過輸出模塊傳遞到上位機。
4.1IRIG-B(AC)碼解調
IRIG-B(AC)碼是由B(直流)碼以1 kHz的正弦波為載波調制成的,對交流碼的解調關鍵是獲得其過零點和幅度信息。數學推導過程如下:

式(1)表示IRIG-B(AC)碼,式(2)表示AC碼與其載波相乘,通過式(2)可以得出,經過乘法器相乘之后,數字信號變為一個由直流分量和交流分量相耦合的信號,再經過數字濾波器濾除掉交流分量,信號就由交流(AC)B碼變為直流(DC)B碼。
使用SIMULINK軟件進行仿真,數字解調的過程如圖5所示。

圖5 交流B碼轉換為直流B碼的仿真示意圖
經過低通濾波器得到直流分量,但是低通濾波器不可能完全將信號中的交流分量去除,因此,需要添加閾值檢測模塊,將模糊的直流B碼還原為精確的直流B碼。為了提高檢測精度,閾值需要設置為一個動態值,判斷每一個碼元寬度的閾值需要根據上一個碼元的最大值確定,因此將閾值設為上一個碼元的2/3,當檢測到數字信號大于閾值時,輸出為1,反之為0。脈寬檢測模塊根據閾值檢測模塊的輸出值確定脈沖寬度,根據脈沖寬度判斷碼元的賦值。
嚴格來說,從閾值檢測模塊輸出的直流B碼不是標準的直流B碼,因此對脈沖寬度的判斷采用近似比較。設計中采用的晶振為40 MHz,當脈寬計數模塊檢測到信號上升沿時,計數器開始工作,下降沿時停止工作。計數結果cnt送入寄存器中進行順序比較,如果cnt大于7 500且小于85 000,該碼元為0;如果cnt的值大于195 000且小于205 000,該碼元為1;如果cnt的值大于315 000且小于325 000,;該碼元為P碼。
4.2IRIG-B(DC)碼解調
FPGA解調B碼主要是提取B碼中包含的時間信息和秒脈沖。要提取B碼的秒脈沖信號,首先要判斷B碼的幀頭[7],通過幀頭的判斷確定其它碼元的位置[8]。當檢測到兩個標志位相連接后開始計數,當計數到99時,產生一個持續的高電平,將此高電平和下一個碼元相與,得到秒脈沖信號。不同幀位碼元的賦值表示某刻時間的具體信息,時間信息解調模塊按照B碼協議將其轉換為8421BCD格式,并通過MAX490芯片轉換為差分形式輸出。
在一秒的中間時刻,時間信息解調完成,在下一秒的秒脈沖上升沿出現時輸出,因此需要對時間信息進行加一處理。其解調過程如圖6所示。

圖6 IRIG-B(DC)碼解調流程圖
為了驗證IRIG-B(AC)解碼器的可靠性與可行性,進行了大量的B碼解調試驗。使用某型號的B碼產生器作為B碼源,該產生器自帶20 m外置天線可以接收GPS與北斗信號,并以此為基準產生IRIGB(AC)碼。采用C語言編寫的上位機軟件,通過RS232串口將時間信息送到上位機,不但可以顯示該時刻的時間也可以將信息保存并打印。當前時間是2015年3月6日下午2點16分25秒,對應的顯示控件上顯示的時間總共是65 d 14 h 16 min 25 s,如圖7右側所示。
檢驗授時精度的主要標準是檢驗授時儀器產生的秒脈沖的上升沿與基準脈沖上升沿的間隔,間隔越小精度越高。解碼器通過BNC端口輸出秒脈沖,基準脈沖則取自于衛星同步時鐘,將兩個脈沖同時接入安捷倫的53132A通用計數器的兩個輸入端測量上升沿的時間間隔,53132A通用計數器的精度可以達到100 ps,完全滿足試驗要求。檢測脈沖的時間間隔如圖8所示。

圖7 解調時間顯示

圖8 脈沖的時間間隔測量結果
由圖8可見兩個秒脈沖的間距為45.432 62 μs,測量結果時取前50個計數結果的值求平均值得出。解碼脈沖與基準脈沖相比延遲45.4 μs,控制在50 μs內,滿足設計要求。解碼的秒脈沖延時是固定的,在FPGA內部程序添加計數模塊,使得秒脈沖和下一秒的基準脈沖對齊,可以進一步提高授時精度。
本文介紹了采用FPGA芯片實現的IRIG-B (AC)碼解碼器的設計,通過調用FPGA內部的IP核以及采用模塊化設計實現對交流B碼的解調功能,可以精確地提取時間信息和秒脈沖信號。解碼器結構簡單、成本低、功耗小、解碼精度高,可以與多種授時儀器協同工作。滿足國軍標GJB3947A要求,具有廣闊的應用前景。
[1]王智平,佟剛,曹永剛,等.FPGA在IRIG-B碼源設計中的應用[J].微計算機信息,2009,12(2):167-168.
[2]唐博,李錦明,李士照,等.基于FPGA的高階FIR濾波器強抗干擾數據采集系統[J].電子技術應用,2009,12(2):89-92.
[3]雒俊鵬.基于FPGA的IRIG-B(DC)碼產生電路設計[J].電子設計工程,2012,38(9):146-148.
[4]吳衛,陳建軍,宋虎,等.基于FPGA的IRIG-B碼解碼器的實現[J].雷達與對抗,2009(3):37-40.
[5]熊立智,唐普英.基于FPGA的IRIG-B解碼電路設計與實現[J].通信技術,2010,43(8):231-232.
[6]張斌,張東來,王超.基于FPGA的IRIG-B(DC)碼同步解碼設計[J].測控技術,2008,27(2):45-47.
[7]吳煒,周燁,黃子強.FPGA實現IRIG-B(DC)碼編碼和解碼的設計[J].電子設計工程,2010,18-12:162-164.
[8]李萬山,鄭海昕.用GPS校時的IRIG-B(DC)時間碼產生器設計[J].裝備指揮技術學院學報,1999,10(1):93-96.

賈磊(1989-),男,山西呂梁人,碩士研究生,專業:儀器儀表工程,研究方向為電路與系統;

崔永俊(1973-),山西忻州人,博士生,副教授,主要研究方向為納米測試技術與儀器,704815175@qq.com。
Design of FPGA-Based IR IG-B(AC)Time Code Decoder*
JIA Lei1,2,CUI Yongjun1,2*,YANG Bing1,2,WANG Jinwei1,2
(1.Ministerial Key Laboratory for Instrument Science and Dynamic Test North University of China,Taiyuan 030051,China;2.National Key Laboratory for Electoenic Measurement Technology,North University of China,Taiyuan 030051,China)
In order to solve the IRIG-B(AC)decoding low accuracy problems and improve the stability of the demod?ulation system,a high-performance decoder is presented useing FPGA implementation demodulation IRIG-B(AC)codes.By calling the FPGA IP core generation multipliers and FIR low-pass filter,the AC components in the B(AC)code are filtered,then demodulated according to their amplitude.The decoder can demodulate time information of IRIG-B(AC)code accurately,transmit it quickly,and outputs the second pulse which is corresponding with time in?formation,through the output port to the demodulated PC display.Through extensive testing the decoder shows its accuracy,stability,and meets the requirements of various applications for IRIG-B(AC)code of timing.
IRIG-B code;decoding;filtering;A/D conversion;the second pulse
TN787
A
1005-9490(2016)02-0370-04
EEACC:6120D10.3969/j.issn.1005-9490.2016.02.025
項目來源:國家自然科學基金項目(61335008)
2015-05-26修改日期:2015-07-03