新聞中心

        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參考點之后才可以發送,所以對接收的時間要進行預進位處理。

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

        4 編碼模塊實現

        4.1 DC編碼模塊

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

        (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節所得碼元計數器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 編碼器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 修武县| 甘洛县| 饶阳县| 怀远县| 屏东县| 钟祥市| 吴忠市| 泉州市| 华阴市| 锡林郭勒盟| 静乐县| 宁津县| 沂源县| 永丰县| 山东省| 金堂县| 万载县| 巴彦县| 福海县| 宕昌县| 上林县| 西平县| 巴彦淖尔市| 龙江县| 顺平县| 大姚县| 泰州市| 东城区| 襄樊市| 左权县| 济阳县| 泽普县| 吴江市| 都昌县| 达州市| 绥德县| 瑞丽市| 永平县| 通江县| 灵山县| 平利县|