4、MAC层协议:TDMA、FDMA、CDMA、CSMA/CA在航空中的应用、Link16的时隙分配机制

各位同学,今天我们聊聊MAC层协议。说白了,就是解决「谁先说话」的问题。

航空通信里,信道资源极其宝贵。你想想看,一架飞机在天上,几百公里范围内可能同时有几十架飞机、地面站、卫星都在抢着发数据。谁先发?谁后发?发多久?这就是MAC层要干的事。

我做了十几年航空电子系统,见过不少因为MAC层设计不合理导致的通信事故。嗯,今天我把四种主流协议掰开揉碎讲给你听。

4.1 TDMA:时分多址

TDMA的原理很简单——把时间切成小片,每人分一片。就像开会时轮流发言,你讲30秒,我讲30秒,谁也别抢。

在航空领域,TDMA用得最多的地方就是Link16。我后面会专门讲它的时隙分配机制,这里先提一句:Link16把一天分成112.5个时元,每个时元又分成98304个时隙。每个时隙只有7.8125毫秒。够短吧?

核心优势:确定性延迟。你什么时候能发数据,是算得出来的。这对飞行安全至关重要。

我在参与某型预警机数据链项目时,遇到过一个问题:TDMA的时隙一旦分配好,想改就很麻烦。所以设计时一定要留足余量。

4.2 FDMA:频分多址

FDMA就是「各占各的道」。把整个频段切成多个子频段,每个用户占一个。就像高速公路上的不同车道,互不干扰。

航空通信里,VHF语音通信就是典型的FDMA。118-137MHz的航空频段,每个频道间隔25kHz(现在逐步改为8.33kHz)。

协议 典型应用 特点
TDMA Link16、卫星通信 时间分割,确定性延迟
FDMA VHF语音、卫星转发器 频率分割,无碰撞
CDMA GPS、卫星通信 码字分割,抗干扰强
CSMA/CA WiFi、ADS-B 竞争接入,简单灵活

个人经验:FDMA的缺点是频谱利用率低。你想想看,一个频道分配给一架飞机,它不说话时频道就空着。所以现代航空数据链很少单独用FDMA,基本都是TDMA+FDMA混合使用。

4.3 CDMA:码分多址

CDMA就有点意思了。所有用户在同一时间、同一频率上发数据,但每个用户用不同的编码序列。接收端用对应的码字才能解出数据。

这就像在一个大房间里,所有人同时说不同语言。你只听懂中文,那就只提取中文信息,其他语言对你来说就是背景噪音。

航空领域,GPS系统就是CDMA的典型应用。每颗GPS卫星用不同的伪随机码(PRN码)来区分。我记得有一次在测试GPS抗干扰性能时,发现CDMA对窄带干扰有天然的抑制能力——因为干扰信号跟扩频码不相关,会被扩频增益「稀释」掉。

注意:CDMA有个「远近效应」问题。离基站近的信号会淹没远处的信号。这在航空场景中尤其要小心——两架飞机距离相差几十公里,信号强度可能差好几个数量级。

4.4 CSMA/CA:载波侦听多路访问/冲突避免

CSMA/CA是「先听再说」。发数据前先听一下信道有没有人在用,没人用就发。如果检测到信道忙,就随机等一会儿再试。

这个协议在航空中最有名的应用是ADS-B(广播式自动相关监视)。飞机每隔一定时间广播自己的位置、速度等信息,所有飞机都在同一个频率(1090MHz)上发。

你可能会问:那不会撞车吗?

会的。ADS-B的碰撞概率其实不低,尤其是在繁忙空域。但好在它用了随机退避机制,而且广播时间很短(约120微秒),所以整体上还能工作。

我曾经在模拟环境中测试过,当飞机数量超过200架时,ADS-B的报文接收成功率会明显下降。嗯,这就是CSMA/CA的先天不足——没有确定性保障。

4.5 Link16的时隙分配机制

这部分是重点。Link16作为北约标准的战术数据链,它的时隙分配机制非常精巧。

先看基本结构:

  • 时元(Epoch):12.8分钟,一天112.5个时元
  • 时帧(Frame):每个时元分64个时帧,每个时帧12秒
  • 时隙(Slot):每个时帧分1536个时隙,每个时隙7.8125毫秒

算一下:64 × 1536 = 98304个时隙/时元。够精细吧?

Link16的时隙分配有三种方式:

  1. 固定分配:给特定用户分配固定的时隙,保证最低通信速率。比如预警机每10个时隙发一次数据。
  2. 竞争接入:多个用户共享一组时隙,谁抢到谁用。适合突发性数据。
  3. 时隙再分配:网络管理站可以动态调整时隙分配,适应战场变化。

关键点:Link16的时隙分配是「时隙-频率-网号」三维的。同一个时隙,不同频率、不同网号可以同时传输,互不干扰。这就是TDMA+FDMA+CDMA的混合体。

我记得在某次联合演习中,我们测试了Link16的时隙再分配功能。当一架飞机突然加入网络时,网络管理站能在2秒内重新分配时隙,保证新节点正常通信。这个响应速度在当时是很惊艳的。

最后说一个避坑指南:

我曾经犯过的错:在设计时隙分配方案时,没有考虑「时隙抖动」。Link16的时隙虽然固定,但不同节点的时钟漂移会导致时隙边界偏移。一定要留保护间隔,否则相邻时隙的数据会互相干扰。这个教训花了我两周时间才排查出来。

好了,MAC层协议就讲到这里。下一章我们聊聊数据链路层的差错控制——航空通信里,一个比特都不能错。