新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的IRIG-B編碼器的設(shè)計(jì)

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

作者: 時(shí)間:2012-08-27 來(lái)源:網(wǎng)絡(luò) 收藏

if pps上升沿then rx_count=0

else接收到數(shù)據(jù)and rx_count

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

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

4 編碼模塊實(shí)現(xiàn)

4.1 DC編碼模塊

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

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

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

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

(4)根據(jù)MML和CMP輸出編碼信號(hào)IRIG_B_OUT,即IRIG_B_OUT=CMP(MML);

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

算法VHDL描述如下:

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



關(guān)鍵詞: IRIG-B FPGA 編碼器

評(píng)論


相關(guān)推薦

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

關(guān)閉