安徽四創(chuàng)電子股份有限公司 陳 偉 王 宇 余飛俠 范曉東
基于Smartfusion2的IRIG-B碼編碼器設(shè)計與實現(xiàn)
安徽四創(chuàng)電子股份有限公司 陳 偉 王 宇 余飛俠 范曉東
旨在設(shè)計一種基于Smartfusion2的IRIG-B碼編碼器。該設(shè)備采用Smartfusion2作為主控制器并在其內(nèi)部配置了Cortex-M3微處理器系統(tǒng)MSS,采用雙模授時機(jī)(GPS/BD)作為標(biāo)準(zhǔn)時鐘源。利用雙模授時機(jī)送出的1PPS以及時間信息觸發(fā)Cortex-M3微處理器系統(tǒng)MSS的編碼程序,利用雙模授時機(jī)送出的1PPS和10MHz及來自MSS的IRIG-B碼流觸發(fā)FPGA調(diào)制程序,從而完成DC碼的編碼。MSS節(jié)省了FPGA資源,提高調(diào)制效率,F(xiàn)PGA保證了B碼信號邊沿的精準(zhǔn)。通過現(xiàn)場運行以及示波器觀測,該系統(tǒng)運行穩(wěn)定、授時準(zhǔn)確,達(dá)到了預(yù)期要求。
Smartfusion2;FPGA;Cortex-M3;IRIG-B
我國工業(yè)控制、通信、氣象、航天、電力系統(tǒng)測量與保護(hù)等領(lǐng)域的測試設(shè)備均采用國際標(biāo)準(zhǔn)IRIG-B時間碼[1](簡稱B碼)作為時統(tǒng)設(shè)備的時間同步標(biāo)準(zhǔn)。B碼具有世界通用、接口標(biāo)準(zhǔn)化、適用于遠(yuǎn)距離傳輸?shù)忍攸c。目前國內(nèi)的IRIG-B編碼大都以FPGA為核心控制器,資源消耗量大、編碼精度低、工作效率和穩(wěn)定性差。因此,需要更高效的控制器,有效的編碼算法實現(xiàn)即插即用、授時精度高及運行穩(wěn)定的新型編碼器。鑒于SmartFusion2[2-3]是Microsemi的最新65nm工藝的片上系統(tǒng)產(chǎn)品,即是基于Flash架構(gòu)FPGA發(fā)展而來,內(nèi)部集成166 MHz的ARM Cortex-M3的硬核處理器,且不占用FPGA的邏輯資源,為用戶提供高安全性、高可靠性及超低功耗等性能。本方案正是采用SmartFusion2作為編碼器核心控制器,將FPGA和微處理器Cortex-M3優(yōu)勢相結(jié)合,實現(xiàn)高精度授時和高可靠性的時統(tǒng)設(shè)備IRIG-B碼編碼器。本方案正是采用SmartFusion2作為編碼器核心控制器,將FPGA和微處理器Cortex-M3優(yōu)勢相結(jié)合,實現(xiàn)高精度授時和高可靠性的時統(tǒng)設(shè)備IRIG-B碼編碼器。
B碼是一種串行的時間格式碼[4-9],用于各系統(tǒng)時間同步,IRIG-B碼的幀周期為1秒,由100個碼元組成,每個碼元10ms,碼元寬度有8ms、5ms和2ms三種,分別代表碼元P(位置識別標(biāo)志或基準(zhǔn)碼元)、二進(jìn)制的1以及二進(jìn)制的0,如圖1所示。為了便于傳輸和提取B碼中的信息,每10個碼元中有一個位置識別標(biāo)識,分別稱為P1、P2、…、P9、P0。幀參考標(biāo)志是由位置識別標(biāo)志P0和相鄰的基準(zhǔn)碼元Pr組成的,Pr的前沿即是每幀的準(zhǔn)秒時刻,也就是從該準(zhǔn)秒時刻起,按秒、分、時、天等時間信息進(jìn)行編碼,最終形成IRIG-B碼,如圖2所示。
IRIG-B碼信號編碼器的整體硬件電路設(shè)計框架如圖3所示,這里的SmartFusion2在其內(nèi)部配置了FPGA和Cortex-M3硬核處理器。
圖1 IRIG-B碼碼元圖
圖2 IRIG-B碼信號波形
圖3 硬件電路設(shè)計框架
本設(shè)計中時鐘源采用的是經(jīng)過馴服的雙模授時機(jī)(GPS/BD),其可以輸出標(biāo)準(zhǔn)UTC(世界協(xié)調(diào)時)時間信息和同步1PPS(秒脈沖)及與其同源的10MHz時鐘。首先,作為標(biāo)準(zhǔn)時鐘源將UTC(世界協(xié)調(diào)時)時間信息和1PPS(秒脈沖)送入SmartFusion2,這里SmartFusion2采用Microsemi公司的M2S010芯片。接著,在SmartFusion2里,先經(jīng)過Cortex-M3微處理器系統(tǒng)MSS進(jìn)行編碼程序,根據(jù)IRIG-B碼標(biāo)準(zhǔn)格式,將UTC(世界協(xié)調(diào)時)時間信息轉(zhuǎn)換成標(biāo)準(zhǔn)二進(jìn)制碼流并發(fā)送給FPGA編碼模塊;接著,F(xiàn)PGA編碼模塊對輸入的二進(jìn)制碼流進(jìn)行編碼輸出。
此處電源模塊,以滿足各芯片對供電電壓的需求,分別需要電壓為+5V、+3.3V,這里采用電源轉(zhuǎn)換芯片LT1963ES8以完成+6.5V到+5V的轉(zhuǎn)換,集成電路LT1963EST-3.3以完成+5V到+3.3V的轉(zhuǎn)換。
IRIG-B碼信號編碼器的軟件設(shè)計主要是基于FPGA+Cortex-M3微處理器系統(tǒng)MSS而完成,如圖4所示,其中,Cortex-M3微處理器系統(tǒng)MSS主要根據(jù)輸入的1PPS,負(fù)責(zé)將時間信息轉(zhuǎn)換成標(biāo)準(zhǔn)二進(jìn)制碼流的編碼程序設(shè)計,F(xiàn)PGA主要負(fù)責(zé)Cortex-M3微處理器系統(tǒng)MSS的構(gòu)建、IRIG-B碼碼流編碼輸出程序設(shè)計等。
3.1 IRIG-B碼編碼方法簡述
根據(jù)IRIG-B碼波形,在本設(shè)計中每1ms視為1bit,有脈寬為高電平1,否則為低電平0,則IRIG-B碼中三種碼元“P”、“1”和“0”分別用二進(jìn)制表示為1111111100、1111100000和1100000000,則一幀IRIG-B(DC)碼為100碼元即為1000bit二進(jìn)制碼流。
MSS將輸入的一幀標(biāo)準(zhǔn)UTC(世界協(xié)調(diào)時)時間信息進(jìn)行解算,得到秒、分、時、日、月、年等時間信息,并根據(jù)IRIG-B碼標(biāo)準(zhǔn)格式,將上述時間信息轉(zhuǎn)換成相應(yīng)的碼元,并進(jìn)行充實得到100碼元;再將該碼元“P”、“1”及“0”等,擴(kuò)充轉(zhuǎn)換為1000bit時間碼流并存入大小為16bit的整形數(shù)組EncodeBuf[64]中;當(dāng)1PPS脈沖到來時,將EncodeBuf[64]同步發(fā)送給FPGA編碼模塊;FPGA編碼模塊根據(jù)1PPS同步將收到的時間信息碼流EncodeBuf[64]存入到雙端口RAM中;同時由同源的1PPS和10MHz產(chǎn)生同源的1KHz時鐘,根據(jù)此1KHz時鐘,雙端口RAM輪流將內(nèi)存中時間碼流以1bit字長,輸出1000bit,即輸出與輸入1PPS同步的IRIG-B碼波形,F(xiàn)PGA程序如圖5、6所示。
圖5 IRIG-B碼編碼核的FPGA程序
3.2 MSS程序設(shè)計簡述
MSS里完成的程序設(shè)計,主要有以下幾個方面:(1)對Cortex-M3微處理器系統(tǒng)MSS進(jìn)行初始化。配置一個GPIO端口作為中斷引腳,映射來自時鐘源的1PPS(秒脈沖)中斷;配置一個APB總線主模塊,以輸出已轉(zhuǎn)換好的時間碼流EncodeBuf[64];配置一個UART模塊,接收來自時鐘源的標(biāo)準(zhǔn)UTC(世界協(xié)調(diào)時)時間信息。(2)讀取時鐘源的標(biāo)準(zhǔn)UTC時間信息并進(jìn)行解算,得到秒、分、時、日、月、年等時間信息,并根據(jù)IRIG-B碼標(biāo)準(zhǔn)格式,將上述時間信息轉(zhuǎn)換成相應(yīng)的碼元,并進(jìn)行充實得到一幀100碼元;再將該碼元“P”、“1”及“0”等,擴(kuò)充轉(zhuǎn)換為1000bit二進(jìn)制時間碼流并存入大小為16bit的整形數(shù)組EncodeBuf[64]中。(3)當(dāng)1PPS中斷到來時,將上述時間碼流EncodeBuf[64]發(fā)送給FPGA編碼模塊。
3.3 FPGA程序設(shè)計簡述
在FPGA里完成的程序設(shè)計主要有以下幾個方面:
(1)設(shè)計鎖相環(huán)PLL、復(fù)位電路,給FPGA程序里相應(yīng)模塊提供參考時鐘與復(fù)位,并根據(jù)同源的1PPS(秒脈沖)和10MHz時鐘,得到同源的1KHz時鐘用于IRIG-B碼流輸出時鐘,如圖7所示。
(2)構(gòu)建Cortex-M3微處理器系統(tǒng)MSS,包括CPU、GPIO模塊、UART模塊、APB總線等,如圖8所示。
圖4 總體軟件設(shè)計程序
圖6 IRIG-B碼編碼核的FPGA內(nèi)部程序
圖7 時鐘模塊的FPGA程序
圖8 Cortex-M3微處理器系統(tǒng)MSS的FPGA程序
(3)定制碼流接收模塊,通過APB總線,以100MHz時鐘,每成功讀取大小為16bit的二進(jìn)制碼流,即刻將其輸出,并使RE輸出腳使能,如圖9所示。
圖9 碼流接收模塊的FPGA程序
(4)定制雙端口RAM模塊,F(xiàn)PGA程序采用了乒乓操作,即寫RAM1操作的同時,進(jìn)行讀RAM2操作,而寫RAM2操作的同時,進(jìn)行讀RAM1操作,如此循環(huán)操作,如圖10所示,RAM寫時鐘為100MHz,寫字長為16bit,而RAM讀時鐘為1KHz,其與1PPS同源,讀字長為1bit,其中,RAM控制程序通過1PPS來控制RAM1、RAM2的讀寫切換及IRIG-B碼波形輸出,通過100MHz控制RAM寫地址,通過1KHz控制RAM讀地址。
圖10 RAM讀寫模塊的FPGA程序
基于SmartFusion2芯片方案設(shè)計中FPGA部分采用Libero SoC v11.0設(shè)計軟件,用Verilog HDL語言實現(xiàn)設(shè)計,Cortex-M3微處理器系統(tǒng)MSS部分采用Microsemi SoftConsole IDE v3.4編程軟件設(shè)計,利用雙模授時機(jī)(GPS/BD)作為時鐘源,其可輸出經(jīng)過馴服的標(biāo)準(zhǔn)UTC(世界協(xié)調(diào)時)時間信息和同步1PPS(秒脈沖)及與其同源的10MHz時鐘。根據(jù)本設(shè)計方案,接入時鐘源信號,系統(tǒng)上電,測試結(jié)果如下:
圖11 實驗測試結(jié)果
用示波器監(jiān)測1PPS輸入端和IRIG-B碼波形輸出端口,從圖11所示可看出,每1PPS對應(yīng)一幀IRIG-B碼數(shù)據(jù)。
圖12 實驗測試結(jié)果
根據(jù)IRIG-B碼標(biāo)準(zhǔn)波形,如圖2所示,將圖12中任一幀IRIG-B波形展開,可得到幀參考標(biāo)志P0Pr,準(zhǔn)秒時刻及對應(yīng)的10個位置識別標(biāo)志,及各碼元格式符合標(biāo)準(zhǔn)。用示波器上升沿觸發(fā)方式捕捉1PPS上升沿,可獲得如圖13所示波形,可看出,輸出的IRIG-B碼準(zhǔn)秒時刻與輸入的1PPS誤差優(yōu)于20ns,則本設(shè)計的編碼誤差優(yōu)于20ns,因此該B碼信號編碼器的設(shè)計完全符合標(biāo)準(zhǔn)要求。
圖13 實驗測試結(jié)果
本文分析了目前IRIG-B碼編碼技術(shù)實現(xiàn)的現(xiàn)狀及存在的問題,介紹了IRIG-B碼解碼的基本原理,提出基于FPGA和Cortex-M3設(shè)計實現(xiàn)的IRIG-B碼編碼器,并結(jié)合某型雙模授時機(jī)進(jìn)行了監(jiān)測。監(jiān)測結(jié)果表明,新的IRIG-B碼編碼器完全滿足時統(tǒng)設(shè)備授時的需求,明顯提高了IRIG-B碼的授時精度、提升了IRIG-B碼編碼效率、加強了系統(tǒng)運行的可靠性。
[1]IRIG Standard 200-98 IRIG Serial Time Code Formats(Format B)[S].
[2]ARM Cortex-M3 Processor and Microcontroller Subsystem in Smartfusion2 SoC FPGA Devices User’s Guide.SmartFusion2_CortexM3_UM.pdf[EB/OL].www.microsemi.com/soc/support/search/default.a(chǎn)spx.2012-12-03.
[3]Smartfusion2 SoC FPGA Fabric Architecture User’s Guide.SmartFusion2_Fabric_UM.pdf[EB/OL].www.microsemi.com/soc/support/search/default.a(chǎn)spx.2012-12-03.
[4]馮勝民,陳娟花等.基于FPGA的IRIG-B碼產(chǎn)生器設(shè)計與實現(xiàn)[J].電子測量技術(shù),2015,38(5):67-71.
[5]張建春,任記達(dá).基于FPGA的IRIG-B碼調(diào)制解調(diào)實現(xiàn)[J].現(xiàn)代導(dǎo)航,2012,8(4):305-308.
[6]龐吉耀.基于FPGA的IRIG-B碼編碼器實現(xiàn)[J].現(xiàn)代電子技術(shù),2009(24):113-117.
[7]吳煒,周燁,黃子強.FPGA實現(xiàn)IRIG-B(DC)碼編碼和解碼的設(shè)計[J].電子設(shè)計工程,2010,18(12):162-164.
[8]朱敏,雷斌.基于FPGA的IRIG-B碼編解碼的設(shè)計與實現(xiàn)[J].新特器件應(yīng)用,2010(11):15-18.
[9]顧陽陽,付道文.基于FPGA的IRIG-B碼編解器設(shè)計[J].電子科技,2015,28(5):39-42.
Design and Implementation of IRIG-B signal encoder based on Smartfusion2
Chen Wei Wang Yu Yu Feixia Fan Xiaodong
(Anhui Suncreate Electronics Co.,Ltd.,Hefei 230031)
A IRIG-B signal encoder based on Smartfusion2 is designed.This device selects Smartfusion2 as the controller which confi gure Cortex-M3 processor and Microcontroller Subsystem in Smartfusion2 (MSS),and selects GPS/BD as standard time source.The encoding procedure in MSS is triggered by 1PPS and time info from GPS/BD timing,then IRIG-B code stream obtained.The modulating procedure in FPGA is triggered by 1PPS and 10MHz from GPS/BD timing and IRIG-B code stream from MSS,then DC code obtained.MSS achieve save FPGA resources and improve modulate efficiency,F(xiàn)PGA make the rising edge of B-format code be accurate.The system run stability and the expected timing goals are achieved perfectly,which are proved by the fi eld application and oscilloscope.
Smartfusion2;FPGA;Cortex-M3;IRIG-B
陳偉(1987—),女,安徽合肥人,碩士研究生,安徽四創(chuàng)電子股份有限公司工程師。
國家電子信息產(chǎn)業(yè)發(fā)展基金項目,項目編號:工信部財[2013]472號。