微波EDA网,见证研发工程师的成长!
首页 > 微波射频 > 射频工程师文库 > 基于FPGA的IRIG-B编码器实现

基于FPGA的IRIG-B编码器实现

时间:02-19 来源: 点击:

测器,高电平计时,在下降沿停止并输出Tb;

(2)在PPM12下降沿检查Tb,当6 ms<Tb<8 ms时,令MMH=1,否则执行下面的操作:

if MMH=99 then MMH=O
else MMH=MMH+1

(3)在PPMl2信号的上升沿检查MMH,如果MMH=0,则当前脉冲的上升沿是参考点Pr,触发输出8 ms高电平脉冲作为pps信号,重复步骤(1)~(3),在PPM12信号上升沿检查MMH;如果MMH的个位为9或者MMH=0,则当前脉冲标记为索引脉冲,即输出8 ms高电平。

3.2 绝对时间获取

通过在FPGA上构建一个UART与M12T互连。为了简化FPGA对M12T的配置和输出时间的获取,将UART分成两部分设计,即发送模块txmit和接收模块rcvr。发送模块用一个M4K设计一个512×8 FIFO,在系统复位后的若干个时钟,利用一个状态机将M12T的配置数据写入FIFO;然后通过txmit模块配置M12T,配置结束后,UART模块将M12T的时间码转发到外部RS 232接口,同时可以转发外部接口的配置数据到M12T。接收模块采用寄存器模式,只接收M12T发来的绝对时间信息,这样后面的编码模块可以直接使用这些时间信息。做法如下:设计一个接收计数器rx_ count,每接收一个字节计数器自加,并根据rx_count决定是否保存时间码。由于M12T每秒中发送一帧,故在检测到pps时复位该计数器。

\

M12T在每个1 pps的上升沿过后送出当前时间,而FPGA通过UART接收到时间时,B码当前帧已经启动,据此形成的B码要等下一个pps参考点之后才可以发送,所以对接收的时间要进行预进位处理。

本文在FPGA预处理部分设计了一个RTC计时链,在每个1 pps的上升沿.计时链向上进位,编码模块从RTC计时链取绝对时间。从UART接收到新的时间后,如果该时间与计时链的值有差异,则将通过计时链的同步置数接口修正计时链的值。同时计时链负责把M12T的二进制时间转换成压缩的BCD码,还要根据当前接收到的年月日,计算当天是全年中的第几天,即IRIG-B码中的Day字段,而且在预加1 S和转换时间格式时,要注意闰年和月大和月小对Day字段的影响。

4 IRIG-B编码模块实现

4.1 IRIG-B 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",对应5ms。在索引脉冲和参考点Pr处,CMP取值"0011111111",对应8 ms。而最终的编码输出IRIG_B_0UT在每个1 ms脉冲的上升沿,根据CMP(MML)的值决定为高或为低。

4.2 IRIG-B AC编码模块

4.2.1 数字调制原理

按照奈奎斯特抽样定理,只要抽样频率高于2倍信号的最高频率,则整个连续信号就能完全用它的抽样值来代表。使用抽样值构成的序列经DAC和低通滤波后即可恢复原来的连续信号。

若对频率为f的正弦波抽样N次(N>2f),并在T=1/f内通过DAC等间隔输出N次抽样值,则低通滤波后可恢复原始正弦信号。各个采样点值为:

\

4.2.2 正弦查找表

这里给出利用查找表实现交流数字调制的方法。在获得IRIG-B的直流编码后,将该信号导入到数字调制模块,即可获得交流编码。对正弦信号进行100次等间隔抽样,对式(2)使用实际的增益和直流偏移,可得式(3)。据此获得查找表。

\

式中:N=100为采样率;k=O,1,2,…,N-1;Ck对应第k次抽样获得的值;A0为保证输出信号为单极性而设置的初始直流偏移;Ac为考虑调制比和DAC满幅度码值的系数。

由于交流信号频率为1 kHz,周期为T=1 ms,若在1 ms内将上述抽样值等间隔输出到DAC,即可获得1 kHz的调制信号。

本文使用MAX5712和单电源rail-rail运放AD8601构成滤波器。在MAX5712满幅输出时,C=4 095(12 bit DAC),选择调制比为

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top