久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的IRIG-B編碼器的設計

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

作者: 時間:2012-08-27 來源:網絡 收藏

if pps上升沿then rx_count=0

else接收到數據and rx_count

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

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

4 編碼模塊實現

4.1 DC編碼模塊

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

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

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

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

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

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

算法VHDL描述如下:

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



關鍵詞: IRIG-B FPGA 編碼器

評論


相關推薦

技術專區(qū)

關閉