ADS-B信号的构成
ADS-B信号以1090 MHz为中心频率进行广播,数据帧分为两种类型:
短帧(Short Frame): 长度为56比特。
长帧(Long Frame): 长度为112比特。
每帧包含同步头、数据位和校验码。具体结构如下:
前导脉冲(Preamble):用于同步,总时长为8微秒,共16bit。
数据部分:包含实际的ADS-B消息。
校验码(CRC):用于验证数据完整性。
2. 解调步骤
前导脉冲(Preamble)解调,总共16bit,对应16个向量模值,不计算时间,使用粗检测。
前导码[0-10]bit 对应的值如下所示:
* 0 --------------
* 1 -
* 2 ---------------
* 3 --
* 4 -
* 5 --
* 6 -
* 7 ---------------
* 8 --
* 9 ----------------
1. 初步检测判断
if (!(m[j] > m[j+1] &&
m[j+1] < m[j+2] &&
m[j+2] > m[j+3] &&
m[j+3] < m[j] &&
m[j+4] < m[j] &&
m[j+5] < m[j] &&
m[j+6] < m[j] &&
m[j+7] > m[j+8] &&
m[j+8] < m[j+9] &&
m[j+9] > m[j+6]))
2. 低电平时的平均值比高电平时要小
high = (m[j]+m[j+2]+m[j+7]+m[j+9])/6;
if (m[j+4] >= high ||
m[j+5] >= high)
11-14bit低电平,也做相应检测
if (m[j+11] >= high ||
m[j+12] >= high ||
m[j+13] >= high ||
m[j+14] >= high)
数据解码:(PPM)
数据位总共56/112bit, 每位用两个值表示,
先0.5us脉冲,后0.5us 低电平,表示1,
先0.5us低电平,后0.5us脉冲,表示0
具体解码代码,可以参看github dump1090工程。