基于FPGA的IRIG-B編碼器的設計

發(fā)布時(shí)間:2010-8-20 14:33    發(fā)布者:lavida
關(guān)鍵詞: FPGA , IRIG-B , 編碼器
我國靶場(chǎng)測量、工業(yè)控制、電力系統測量與保護、計算、通信、氣象等測試設備均采用國際標準IRIG-B格式的時(shí)間碼(簡(jiǎn)稱(chēng)B碼)作為時(shí)間同步標準。B碼是一種串行的時(shí)間格式,分為直流碼(DC碼)和交流碼(AC碼)兩種,其格式和碼元定時(shí)在文獻中有詳細描述。本文介紹一種基于FPGA并執行IRIG-B標準的AC/DC編碼技術(shù),與基于MCU或者DSP和數字邏輯電路實(shí)現的編碼方法相比,該技術(shù)可以大大降低系統的設計難度,降低成本,提高B碼的精確性和系統靈活性。  

在此,組合GPS引擎和FPGA,得到B碼的編碼輸出,直接采用GPS引擎的100 pps信號觸發(fā)輸出B碼的每個(gè)碼元,利用從100 pps中恢復的1 pps信號提供B碼的時(shí)間參考點(diǎn)。DC編碼和AC數字調制均由純硬件邏輯通過(guò)查找表實(shí)現,它能使每個(gè)碼元的上升沿都非常精準,都可以作為百分秒的時(shí)間參考點(diǎn),而計時(shí)鏈的預進(jìn)位功能則保證了絕對時(shí)間的精確,不僅可以滿(mǎn)足實(shí)時(shí)系統對時(shí)間同步,還可以實(shí)現多節點(diǎn)的數據采集嚴格同步,為分析和度量異步發(fā)生的事件提供有方的支持。  

1 IRIG-B編碼格式  

IRIG標準規定的B格式碼如圖1所示,每秒鐘發(fā)1次,每次100個(gè)碼元,包含1個(gè)同步參考點(diǎn)(Pr脈沖的上升沿)和10個(gè)索引標記。碼元寬度為10 ms,用高電平寬度為8 ms的脈沖表示索引標記,用寬度為5 ms的脈沖表示邏輯1,用寬度為2:ms的脈沖表示邏輯0。  


  
如圖1所示,交流碼的載波是1 kHz正弦信號,幅度變化峰一峰值范圍為0.5~10 V。調制比為U1/U0=1/6~1/2,即邏輯1是5個(gè)幅度為U1的1 kHz正弦信號,邏輯0是2個(gè)幅度為U1的1 kHz正弦信號,索引標記是8個(gè)幅度為U1的1 kHz正弦信號,其他時(shí)間是幅度為U0的1 kHz正弦信號。  

2 系統方案  

2.1 系統原理框圖  

設計授時(shí)系統需要一個(gè)精準時(shí)基。在此利用精密授時(shí)型GPS引擎M12T作為系統時(shí)基,利用AlteraFPGA檢測M12T輸出的百分秒(100 pps)同步信號和經(jīng)串口輸出的絕對時(shí)間信號,編碼后輸出到DC/AC接口模塊,再輸出到物理鏈路,系統結構圖如圖2所示。  


  
上述系統首先實(shí)現了B碼直流編碼,而后在直流碼的基礎上實(shí)現交流調制,以得到交流碼,同時(shí)提供恢復每秒脈沖數輸出和隔離RS 232串行口輸出且符合Motorola格式的時(shí)間碼,以及數碼管的時(shí)間顯示。時(shí)間顯示部分用FPGA實(shí)現比較簡(jiǎn)單,下文不再詳述。  

2.2 GPS授時(shí)模塊M12T  

M12接收器是Motorola公司優(yōu)秀ONCORE家族中的新成員,廣泛用于各類(lèi)定位、導航、授時(shí)設備中,擁有全GPS行業(yè)內最快的初次定位時(shí)間和重捕獲衛星的時(shí)間。M12T是針對GPS授時(shí)推出的定時(shí)精度更高的增強型產(chǎn)品。M12T具有12個(gè)并行通道,可同時(shí)跟蹤12顆衛星,重捕獲時(shí)間小于1.0 s。當擁有當前天歷、位置、時(shí)間和星歷數據時(shí),首次定位時(shí)間TTFF2.3 FPGA和DAC  

FPGA采用Altera CycloneⅡEPC2C5T144,該芯片有4 608個(gè)LE,26個(gè)M4K,兩個(gè)模擬鎖相環(huán)。DAC采用單通道、單電源、自帶基準的MAX5712。MAX5712是微型引腳,12 b解析度,片上精密輸出放大器提供滿(mǎn)擺幅輸出。MAX5712用兼容SPITM/QSPITM/MICROWIRETM和DSP標準接口的3線(xiàn)串行接口。所有輸入都兼容于CMOS邏輯,并經(jīng)過(guò)施密特觸發(fā)器緩沖,允許直接接光電耦合器。MAX5712含有上電復位(POR)電路,確保上電時(shí)DAC處于零電壓輸出狀態(tài)。  

3 時(shí)鐘模塊實(shí)現  

3.1 基準時(shí)刻和索引脈沖的提取  

要保證B碼每個(gè)碼元的上升沿時(shí)刻準確,需要100 pps的精確時(shí)基和pps的參考點(diǎn)。一般的做法是用pps作為基準,每個(gè)碼元的起點(diǎn)由前兩個(gè)秒脈沖的間隔等分得到。這種方法使用上一時(shí)刻來(lái)預測下一秒,每秒脈沖有抖動(dòng)時(shí)會(huì )導致最后一個(gè)碼元寬度不足或超過(guò)10 ms,這將無(wú)法利用B碼來(lái)實(shí)現時(shí)間同步和數據等間隔同步的采集。本文直接使用M12T產(chǎn)生的100 pps信號作為每個(gè)碼元的起始時(shí)刻,然后再從100 pps信號中恢復出1 pps。由于B碼參考標記Pr=1 pps的上升沿,所以這種方法既保證Pr的準確性,又保證各個(gè)碼元和索引標記時(shí)刻的準確性。在有等間隔同步數據采樣要求的場(chǎng)合,可使用每個(gè)B碼碼元的上升沿校準本地時(shí)基,確保采樣同步和時(shí)間同步。  

M12T輸出的100 pps信號(以下稱(chēng)PPM12)如圖3所示,每個(gè)脈沖的上升沿時(shí)刻準確,周期10 ms,在pps的參考點(diǎn),脈沖寬度為6~8 ms,其他時(shí)刻2~4 ms,脈沖寬度不是關(guān)注的重點(diǎn)。  


  
B碼的每個(gè)碼元恰好與上述100 pps信號對應。首先在FPGA中構建一個(gè)模100的碼元計數器MMH和一個(gè)高電平脈沖寬度檢測器,通過(guò)下面的方法和步驟可以恢復pps。  

(1)在PPM12信號的上升沿復位寬度檢測器,高電平計時(shí),在下降沿停止并輸出Tb;  

(2)在PPM12下降沿檢查T(mén)b,當6 msbif MMH=99 then MMH=0  

else MMH=MMH+1  

(3)在PPM12信號的上升沿檢查MMH,如果MMH=0,則當前脈沖的上升沿是參考點(diǎn)Pr,觸發(fā)輸出8 ms高電平脈沖作為pps信號,重復步驟(1)~(3),在PPM12信號上升沿檢查MMH;如果MMH的個(gè)位為9或者M(jìn)MH=0,則當前脈沖標記為索引脈沖,即輸出8 ms高電平。  

3.2 絕對時(shí)間獲取  

通過(guò)在FPGA上構建一個(gè)UART與M12T互連。為了簡(jiǎn)化FPGA對M12T的配置和輸出時(shí)間的獲取,將UART分成兩部分設計,即發(fā)送模塊txmit和接收模塊rcvr。發(fā)送模塊用一個(gè)M4K設計一個(gè)512×8 FIFO,在系統復位后的若干個(gè)時(shí)鐘,利用一個(gè)狀態(tài)機將M12T的配置數據寫(xiě)入FIFO;然后通過(guò)txmit模塊配置M12T,配置結束后,UART模塊將M12T的時(shí)間碼轉發(fā)到外部RS 232接口,同時(shí)可以轉發(fā)外部接口的配置數據到M12T。接收模塊采用寄存器模式,只接收M12T發(fā)來(lái)的絕對時(shí)間信息,這樣后面的編碼模塊可以直接使用這些時(shí)間信息。做法如下:設計一個(gè)接收計數器rx_count,每接收一個(gè)字節計數器自加,并根據rx_count決定是否保存時(shí)間碼。由于M12T每秒中發(fā)送一幀,故在檢測到pps時(shí)復位該計數器。  

if pps上升沿then rx_count=0  

else接收到數據and rx_count  


  
M12T在每個(gè)1 pps的上升沿過(guò)后送出當前時(shí)間,而FPGA通過(guò)UART接收到時(shí)間時(shí),B碼當前幀已經(jīng)啟動(dòng),據此形成的B碼要等下一個(gè)pps參考點(diǎn)之后才可以發(fā)送,所以對接收的時(shí)間要進(jìn)行預進(jìn)位處理。  

本文在FPGA預處理部分設計了一個(gè)RTC計時(shí)鏈,在每個(gè)1 pps的上升沿,計時(shí)鏈向上進(jìn)位,編碼模塊從RTC計時(shí)鏈取絕對時(shí)間。從UART接收到新的時(shí)間后,如果該時(shí)間與計時(shí)鏈的值有差異,則將通過(guò)計時(shí)鏈的同步置數接口修正計時(shí)鏈的值。同時(shí)計時(shí)鏈負責把M12T的二進(jìn)制時(shí)間轉換成壓縮的BCD碼,還要根據當前接收到的年月日,計算當天是全年中的第幾天,即IRIG-B碼中的Day字段,而且在預加1 s和轉換時(shí)間格式時(shí),要注意閏年和月大和月小對Day字段的影響。  

4 IRIG-B編碼模塊實(shí)現  

4.1 IRIG-B DC編碼模塊  

分析B碼可以發(fā)現,秒的最低位出現在MMH=1處,分的最低位出現在MMH=10處,小時(shí)的最低位出現在MMH=20處,依次類(lèi)推。按照圖1,容易得出時(shí)間寄存器輸出時(shí)刻和碼元計數器MMH之間的關(guān)系。由于碼元周期固定為10 ms,可以這樣實(shí)現編碼,定義一個(gè)模10的計數器MML和邏輯向量CMP(9 down to0)來(lái)表征一個(gè)碼元在10 ms的狀態(tài)。MML每ms加1,同時(shí)根據MML的值,選擇CMP的一位更新輸出狀態(tài),步驟如下:  

(1)構建模10計數器MML,以及一個(gè)1 ms定時(shí)器;  

(2)在PPM12信號的上升沿復位MML和1 ms定時(shí)器;  

(3)1 ms定時(shí)器溢出時(shí),MML加1;  

(4)根據MML和CMP輸出編碼信號IRIG_B_OUT,即IRIG_B_OUT=CMP(MML);  

(5)在PPM12的上升沿根據第3.1節所得碼元計數器MMH重新加載CMP  

算法VHDL描述如下:  


  
在上述VHDL編碼的實(shí)現中,MSCLK為1 mS計數脈沖,同步于PPM12信號的上升沿。CMP的輸出值由函數IRIG_B根據輸入參數決定,若為0,則輸出“0000000011”,對應2 ms;若為1則輸出“0000011111”,對應5 ms,在索引脈沖和參考點(diǎn)Pr處,CMP取值“0011111111”,對應8 ms。而最終的編碼輸出IRIG_B_OUT在每個(gè)1 ms脈沖的上升沿,根據CMP(MML)的值決定為高或為低。  

4.2 IRIG-B AC編碼模塊  

4.2.1 數字調制原理  

按照奈奎斯特抽樣定理,只要抽樣頻率高于2倍信號的最高頻率,則整個(gè)連續信號就能完全用它的抽樣值來(lái)代表。使用抽樣值構成的序列經(jīng)DAC和低通濾波后即可恢復原來(lái)的連續信號。  

若對頻率為f的正弦波抽樣N次(N>2f),并在T=1/f內通過(guò)DAC等間隔輸出N次抽樣值,則低通濾波后可恢復原始正弦信號。各個(gè)采樣點(diǎn)值為:  

Ck=Asin(ωkt)=Asin[ωk(T/N)] (1)  

式中:ω=2πf;f為信號頻率。則式(1)變?yōu)椋?nbsp; 

Ck=Asin[2πfk(T/N)]=Asin(2kπ/N) (2)  

4.2.2 正弦查找表  

這里給出利用查找表實(shí)現交流數字調制的方法。在獲得IRIG-B的直流編碼后,將該信號導入到數字調制模塊,即可獲得交流編碼。對正弦信號進(jìn)行100次等間隔抽樣,對式(2)使用實(shí)際的增益和直流偏移,可得式(3)。據此獲得查找表。  

Ck=Acsin(2πk/N)+A0 (3)  

式中:N=100為采樣率;k=0,1,2,…,N-1;Ck對應第k次抽樣獲得的值;A0為保證輸出信號為單極性而設置的初始直流偏移;Ac為考慮調制比和DAC滿(mǎn)幅度碼值的系數。  

由于交流信號頻率為1 kHz,周期為T(mén)=1 ms,若在1 ms內將上述抽樣值等間隔輸出到DAC,即可獲得1 kHz的調制信號。  

本文使用MAX5712和單電源rail-rail運放AD8601構成濾波器。在MAX5712滿(mǎn)幅輸出時(shí),C=4 095(12 bit DAC),選擇調制比為1:5。綜合考慮,在最大輸出時(shí),不能使DAC輸出到達運放的上軌,最低輸出時(shí),DAC輸出應高于運放的下軌,所以選取A0=C/2+200=2 248。對應邏輯0,Ac=461;對應邏輯1,Ac=1 844。根據上述原則計算出的正弦查找表如表1所示。  


  
實(shí)際使用時(shí),應根據使用DAC的解析度、運放的動(dòng)態(tài)范圍以及采樣率及調制比確定上式中的參數。  

4.2.3 DAC接口  

實(shí)際使用時(shí)應根據DAC的不同,在FPGA中構建不同的數字接口。MAX5712需要在FPGA實(shí)現一個(gè)SPI接口,結構如圖4所示。接口控制部分提供一個(gè)16 b寫(xiě)端口,可以接收數據。在寫(xiě)使能wren為高時(shí),接口上的數據寫(xiě)入內部并行保持寄存器。在LDAC脈沖的上升沿,并行寄存器THR的內容寫(xiě)入移位寄存器,同時(shí)啟動(dòng)時(shí)鐘邏輯。在輸出時(shí)鐘作用下,數據從Dout輸出到DAC,在SPI_CS的后沿,DAC啟動(dòng)轉換輸出與當前編碼相匹配的模擬量。  


  
4.2.4 交流調制方法  

把按照第4.2.1節方法生成的正弦查找表生成Altera mif文件,再例化一個(gè)M4K ROM,使用上述文件作為ROM的初始化文件。建立一個(gè)周期為10μs的定時(shí)器和一個(gè)地址計數器。地址計數器和定時(shí)器在B碼直流信號的變化沿復位,定時(shí)器溢出后啟動(dòng)地址計數器;蛘甙堰壿0對應的查找表放在ROM的上半部,如果把邏輯1對應的查找表放在ROM的下半部,且輸入的直流B碼信號作為地址的高位,則此時(shí)刻對應的ROM輸出即為DAC的調制輸出,ROM查找表VHDL的代碼實(shí)現如下:  


  
其中:B為來(lái)自編碼器中IRIG-B的直流編碼;AQC為地址計數器;ddata為輸出到DAC的數字調制輸出。由于查找表是按照對正弦信號做100次等間隔采樣形成的,交流載波為1 kHz。所以AQC每隔10μs自加1,順序輸出100個(gè)編碼值,在B碼的每個(gè)變化邊沿復位。  

按上述方法設計的數字調制模塊,用示波器測得輸出波形如圖5所示。  

圖5中,通道1(從上至下第一個(gè)信號)為M12T輸出的100 pps信號PPMl2;通道2(從上至下第三個(gè)信號)為IRIG-B的直流編碼輸出信號;通道3(從上至下第二個(gè)脈沖)為從PPM12信號中恢復的每秒脈沖數信號;通道4(最下面的波形)為IRlG-B編碼的交流輸出波形。圖5中示波器的觸發(fā)點(diǎn)即為B碼參考點(diǎn)Pr。  

4.3 IRIG-B編碼輸出  

4.3.1 直流碼輸出  

為了保證輸出信號的邊沿和抗干擾,將第4.1節得到的TTL電平B碼信號和秒脈沖經(jīng)高速光耦隔離,輸出電路如圖6所示。  


  
圖6中,輸入信號IRIG_B為第4.1節所述FPGA編碼模塊輸出的直流編碼信號;pps為FPGA從M12T的100 pps信號中恢復的秒脈沖信號;D350和D351實(shí)現了TTL/RS485的電平轉換。  

4.3.2 模擬調制電壓輸出  

IRIG-B編碼的交流碼輸出電路如圖6所示。將第4.2.3節所述數字調制信號通過(guò)DAC接口輸出到MAX5712上進(jìn)行D/A轉換,經(jīng)過(guò)AD8601濾除高次諧波后,再用電容耦合到由晶體管Q301構成的電壓放大器中,然后經(jīng)600:600的隔離變壓器輸出。  

5 結 語(yǔ)  

利用FPGA和M12T授時(shí)型GPS內核構成的IRIG-B編碼模塊采用M12T的100 pps信號觸發(fā)IRIG-B編碼器,使得編碼輸出的每個(gè)碼元上升沿均與GPS模塊嚴格一致,每個(gè)碼元間隔嚴格相等,而且每個(gè)碼元的上升沿均可作為同步參考點(diǎn)。利用FPGA的并發(fā)處理能力,使得系統實(shí)時(shí)性好。本文介紹的基于查找表的B碼編碼方法和通過(guò)查找表的數字調制方法具有占用資源小,設計簡(jiǎn)單,調制輸出高次諧波小,信號邊沿穩定等特點(diǎn)。  

經(jīng)過(guò)軟件仿真和系統測試,本文實(shí)現的B碼編碼器中DC碼參考點(diǎn)Pr和M12T GPS模塊的pps參考點(diǎn)的時(shí)間誤差小于20 ns,與絕對時(shí)間參考點(diǎn)之間的誤差小于40 ns,AC碼與DC碼之間的延遲為100 ns。利用上述方法實(shí)現的模塊已經(jīng)成功地應用在我公司的通信管理機和同步時(shí)間服務(wù)器中,現場(chǎng)運行結果穩定、準確、可靠。
本文地址:http://selenalain.com/thread-22812-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页