GSM都老成这样了,还有人愿意关心它底层怎么干活,我是真的挺高兴。很多刚入行的朋友一打开3GPP 45.002就被各种帧、时隙、突发脉冲绕晕,觉得GSM空口又老又复杂。可你如果做过网络优化、写过协议栈,或者用SDR看过空口波形,就会承认:GSM这套基于TDMA的时间管理体系,设计得非常精巧,而且至今还是理解LTE/NR空口的基础。
这篇我就把TDMA时隙、突发脉冲、逻辑信道映射这三件事串起来讲透。不需要你是通信专业出身,只要知道手机打电话要“占用一个信道”,我就能带你一步步看懂GSM是怎么把时间切成片、把片组织成帧、再在帧里调度各种逻辑信道的。搞懂这些之后,你再去看LTE的RB调度、NR的时隙格式,都会有“原来如此”的通透感。
1. 先搞懂GSM的时间坐标:从超高帧到时隙的层层拆解
1.1 为什么GSM要把时间拆得这么碎
GSM用的是FDMA/TDMA混合多址。FDMA好理解,900MHz频段被切成124个200kHz的载频,每个载频就是一条“车道”。但一条车道不能只跑一辆车,那太浪费了。于是GSM在每条车道上又按时间切成8份,让8个用户轮流使用同一段频率,这就是TDMA。
你可以把载频想象成一条单车道,8个用户是8辆要依次通过的车。每个用户一次只能在这个车道上跑一小段固定时间,跑完就得下去换下一辆。GSM里这个“一小段时间”就是时隙,一个TDMA帧里有8个时隙,每个时隙持续约577微秒。8个时隙轮完,再回到用户1,这就组成了一个TDMA帧。
时间被拆碎之后,好处非常明显:一是频率利用率上去了,一个载频能同时服务8个用户;二是手机不需要一直发射,只在属于自己的时隙里工作,其他时间可以睡觉,这直接决定了GSM手机的待机功耗;三是上下行天然错开,不用像对讲机那样又收又发还要切换。这些优势直到5G时代都在沿用,只是切片方式和子载波间隔变了。
1.2 五层时间结构的数值关系
GSM的时间体系不是只有“帧”和“时隙”两级,往上数还有复帧、超帧、超高帧,一共五层。我第一次看到这张层级表的时候有点懵,觉得搞这么多层不是自找麻烦吗?后来才明白,每层解决不同问题:复帧用于区分逻辑信道,超帧和超高帧用于加密与跳频序列计算。
| 层级 | 组成 | 时长 | 主要用途 |
|---|---|---|---|
| 超高帧 | 2048个超帧 | 约3小时28分54秒 | 加密序列周期、跳频序列周期 |
| 超帧 | 1326个TDMA帧(=26个51复帧)=51个26复帧 | 6.12秒 | 帧号分层基础 |
| 51帧复帧 | 51个TDMA帧 | 235.38ms | 控制信道复用 |
| 26帧复帧 | 26个TDMA帧 | 120ms | 业务信道复用 |
| TDMA帧 | 8个时隙 | 4.615ms | 时隙调度最小单位 |
| 时隙 | 156.25bit | 约577us | 一个突发脉冲的时长 |
这里有个细节:TDMA帧长不是随便定的,精确值是120/26毫秒。为什么会是这个数?因为GSM的符号速率是270.833kbps,比特周期是48/13微秒,156.25个比特乘以48/13微秒,正好是600/13微秒,再乘8就是120/26毫秒。所有时间都是围着符号速率转的,没有一个数是拍脑袋出来的。
每个TDMA帧都有一个全局编号,叫FN(Frame Number),范围从0到2715647,循环一圈正好是超高帧的时长。FN的计算和分解也很重要,公式是:
FN = (T1 × 51 × 26) + (T2 × 51) + T3
其中T1范围0到2047,T2范围0到25,T3范围0到50。反过来拆解就是:
- T1 = FN 整除 1326
- T2 = (FN mod 1326) 整除 51
- T3 = FN mod 51
为什么搞这么复杂的编号?因为FN是GSM一切调度的基础。手机在哪个时隙听哪个逻辑信道、跳频下一跳跳到哪个频率、加密密钥流算到哪一位,全都要用到FN。超高帧设到3小时28分,主要是为了让加密序列足够长,避免短期内重复,这也是防止重放攻击的基本设计。
我举个例子帮你练练手。假设FN = 1234567:
- T1 = 1234567 / 1326,商的整数部分是931
- 余数是61
- 所以T2 = 61 / 51 = 1,T3 = 61 mod 51 = 10
T3等于10意味着什么?先记住这个数,后面讲到51帧复帧的FCCH位置时,你会发现自己已经能判断“手机此刻收到的是什么突发”了。
1.3 一个时隙里到底塞了多少东西
一个时隙持续约577微秒,里面不是随便堆数据,而是按照“突发脉冲”的格式组织的。常用术语叫Burst,本质上就是在一个时隙内发送的一段射频波形。
最常见的普通突发脉冲NB(Normal Burst),结构是:尾比特3bit、数据57bit、偷帧标志1bit、训练序列26bit、偷帧标志1bit、数据57bit、尾比特3bit,最后还有8.25bit的保护间隔。把有效部分加起来,3+57+1+26+1+57+3=148bit,再加保护间隔8.25bit,正好是156.25bit,落满整个时隙。
保护间隔为什么是8.25bit而不是整数?因为GSM允许不同手机距离基站远近不同,上行信号到达时间会有偏差。保护间隔就是给这点时间偏差预留的缓冲带。如果你把时隙当成一条限时跑道,那保护间隔就是跑道尽头的缓冲草皮,不让刹车不及的车冲出去撞到下一辆车。
训练序列在突发正中间,26bit,接收机用它对这颗突发的信道冲激响应做估计。GSM信号在无线环境里会被多径折腾得面目全非,接收机必须借助已知的训练序列反推信道发生了什么,再做均衡。这块后面单独展开。
2. 突发脉冲家族:每一种都是干不同活的工具
2.1 五种突发脉冲速查
GSM并没有让所有场景都用同一种突发脉冲,而是针对不同任务设计了五种。我一开始也疑惑,为什么不能一个格式走天下?后来看懂了每种突发的用途,才明白这里面的门道。
| 类型 | 英文缩写 | 主要用途 | 结构特点 |
|---|---|---|---|
| 普通突发 | NB | 业务数据、BCCH、CCCH、SDCCH等绝大多数信道 | 尾部、数据、训练序列、数据、尾部、保护间隔 |
| 频率校正突发 | FB(FCCH) | 频率校正、时隙定位 | 承载全0,等效一个67.7kHz单音 |
| 同步突发 | SB(SCH) | 时间同步、读取帧号和BSIC | 64bit扩展训练序列,携带压缩帧号 |
| 接入突发 | AB | 手机首次上行接入(RACH) | 长训练序列,保护间隔长达68.25bit |
| 空闲突发 | DB | 填充空闲时隙 | 结构同NB,内容为固定伪随机序列 |
这个表建议你存一下。做空口解析时,拿到一个突发先看它落在哪类信道上,再套对应格式去解,基本不会出错。
2.2 NB的偷帧标志到底是怎么“偷”的
很多资料提到FACCH(快速随路控制信道)时会说,它“抢占”了业务信道。怎么抢占?靠的就是普通突发脉冲里的偷帧标志(Stealing Flag),每个数据块两侧各1bit。
正常情况下,TCH上的两个57bit数据块装的是语音帧。当系统需要在这条业务信道上紧急传信令(比如切换命令)时,它把数据块内容整个换成控制信令,同时把偷帧标志置为1。接收端一看到偷帧标志是1,就知道这4个连续突发不是语音,而是FACCH信令,于是绕过语音解码器,直接按信令处理。
这个设计非常巧妙:GSM没有为切换信令单独划分专用时隙,而是让控制信令在关键时刻“借用”语音突发来做快速传输。代价是这20毫秒的语音帧会丢失,但相比掉话,丢一帧语音完全可接受。语音编码器本身也有纠错和丢帧补偿,基本不影响听感。理解了偷帧标志,你再看“FACCH占用TCH”这种表述就会恍然大悟。
2.3 接入突发AB的“长保护期”设计
五种突发里最特殊的是接入突发AB,它在随机接入信道RACH上使用。手机第一次接入时,基站还不知道手机离自己多远,更不知道上行信号要提前多少发送。如果这时还用普通突发那8.25bit的保护间隔,手机离基站太远,突发的尾巴就会迟到,直接怼进下一个时隙里。
所以AB的保护间隔被设计成68.25bit,将近普通突发的8倍。相当于基站给这个“未知距离”的接入请求留出了很大一段缓冲。基站收到AB之后,通过测量这个突发的到达时间,能估算出手机和基站之间的传播时延,然后算出定时提前量TA,再通过后续信令告诉手机以后该提前多少发送。
这个TA值的计算很有意思。GSM一个比特持续约3.69微秒,电磁波一个比特能跑约1107米。但TA算的是往返时延,信号从手机到基站再回来,所以每个TA单位实际对应约550米。TA范围0到63,对应的最大小区半径就是35公里左右。
2.4 训练序列和信道估计
我会在排障部分再提一次训练序列,因为很多人在这里栽过跟头。GSM的接收机要正常工作,必须知道当前无线信道的冲激响应是什么样的。信道会让信号产生幅度衰减、相位旋转、多径扩展,这些都会破坏发送的符号序列。
接收机怎么做?它拿本地已知的26bit训练序列和接收信号里对应位置的样本做相关运算,就能估计出信道对训练序列的扭曲程度,进而推导出整个信道响应。这就是为什么训练序列放在突发正中间:信道响应随时间变化,放在中间让前后数据段离训练序列都不太远,估计精度更均匀。
GSM一共定义了8组训练序列码,编号0到7。同一个小区的两个不同时隙如果使用相同训练序列,接收机区分起来会非常困难。所以网络规划时,通常会让相邻小区使用不同的训练序列码,就像同一栋楼里每户门锁不同一样,避免“钥匙乱配”。
3. 逻辑信道映射实战:把看不见的“频道”画出来
3.1 逻辑信道分类:控制面与业务面
时隙和突发是物理层的概念,但手机真正“业务”起来,还需要在既定时隙上承载各种各样的消息。这些消息按照功能被划分为逻辑信道。逻辑信道不是物理频率,也不是固定时隙,而是一个抽象概念:它在某个特定时隙上,按某种规律周期出现。
逻辑信道大致分三类。广播信道BCH:FCCH频率校正、SCH同步、BCCH广播控制,负责让手机“找到网络、知道网络参数”。公共控制信道CCCH:RACH随机接入、AGCH允许接入、PCH寻呼,负责手机和网络之间的首次对话。专用控制信道DCCH:SDCCH独立专用控制、SACCH慢速随路控制、FACCH快速随路控制,负责通话建立和维持中的信令。最后还有业务信道TCH,承载语音或用户数据,TCH/F是22.8kbps编码速率,TCH/H减半。
物理层只认时隙和帧号,逻辑信道只认消息类型。中间怎么对应?靠的就是复帧映射规则。这是GSM空口最核心也是最容易乱的地方。
3.2 51帧复帧:控制信道的自我修养
控制信道需要的块很多,FCCH、SCH、BCCH、CCCH、SDCCH都要复用。GSM选用51帧作为一个周期,组成51帧复帧。为什么非要是51?因为51等于3×17,而TDMA帧号T3的范围正好是0到50,51帧可以让各控制信道在一个周期内各就各位,同时和另一个26帧周期错开。
BCCH载波上的TS0最典型的排布是这样的(以最常见的非组合CCCH配置为例):
FN mod 51: 0 1 2~5 6~9 10 11 12~15 16~19 20 ... 信道: FCCH SCH BCCH CCCH FCCH SCH BCCH CCCH FCCH ...FCCH每隔10帧出现一次,固定在T3等于0、10、20、30、40的位置。它全部发送0,GMSK调制之后等效为一个偏离载频67.7kHz的单音信号。手机在搜索小区时,就是在候选频点上找这个“单音”,找到了就说明这里有GSM小区,也顺便校准了接收频偏。
SCH紧跟FCCH之后,固定在T3等于1、11、21、31、41的位置。SCH上除了有更长的训练序列,还携带了BSIC基站识别码和压缩编码的TDMA帧号。手机拿到这个帧号,就知道当前在51帧复帧的第几帧,接下来就能按映射表逐帧读取后续信道了。
BCCH和CCCH按块分配。所谓“块”,是4个连续TDMA帧的同一个时隙组成的序列。GSM编码后的一个无线块需要4个普通突发来承载,所以逻辑信道的消息在物理层是按“4帧一组”的节奏走的。
| 帧位置(FN mod 51) | 块编号 | 承载内容 |
|---|---|---|
| 2~5 | 系统消息块0 | BCCH系统消息 |
| 6~9 | 公共控制块0 | PCH或AGCH |
| 12~15 | 系统消息块1 | BCCH系统消息 |
| 16~19 | 公共控制块1 | PCH或AGCH |
| 22~25 | 系统消息块2 | BCCH系统消息 |
| 26~29 | 公共控制块2 | PCH或AGCH |
| 32~35 | 系统消息块3 | BCCH系统消息 |
| 36~39 | 公共控制块3 | PCH或AGCH |
| 42~49 | 公共控制块4~5 | PCH或AGCH |
| 50 | 空闲帧 | 不承载用户数据 |
需要提醒的是,这张表是“典型配置示意”。真实网络里,CCCH_CONF和SDCCH配置会导致块分配不一样,有的小区会把SDCCH也塞进TS0。做协议分析时一定要先读BCCH里的系统消息,别拿一张表套所有小区。
3.3 26帧复帧:业务信道的SACCH节奏
业务信道TCH用的是26帧复帧,而不是51帧。26帧里,24帧留给TCH数据,1帧给SACCH,1帧空闲。
帧号(0~25): 0 1 ... 11 12 13 ... 24 25 用途: TCH TCH ... TCH SACCH TCH ... TCH 空闲SACCH在每26帧的第13帧(从0编号是12)出现一次。由于一个26帧复帧持续120ms,4个复帧就是480ms。也就是说,手机每480ms通过SACCH上报一次测量报告,包括上下行接收电平、信号质量、TA值、功率控制信息等。你如果做路测,看到测量报告以480ms为周期刷新,就是这个原因。
TCH为什么需要SACCH?因为语音数据一直在跑,控制信令也需要一个低速“伴行通道”来传输功率控制、时间提前、测量报告。FACCH则相反,平时不出现,一旦出现就通过偷帧标志把TCH的突发抢过来,用高优先级传切换等紧急信令。
还有一个容易被忽略的点:26帧复帧里的空闲帧不是浪费。手机可以利用这3.7毫秒左右的时间去测量邻小区的BCCH载频,为切换做准备。这就像上课45分钟里那3分钟课间,看着是休息,实际是让你准备下一节课的东西。
3.4 帧号就是“调度表”:解映射的核心
前面说的映射关系,本质就是一句话:给定FN和时隙号TN,能算出这个时隙此刻承载的是哪个逻辑信道。手机在任一时隙上执行哪项任务,完全跟着FN走。
举刚才那个计算例子。FN = 1234567时,我们算出T3 = 10。如果手机此时正锁定在BCCH载波的TS0上,那么它知道:T3=10时隙是FCCH,于是它把这个时隙当作频率校正突发处理,不做BCCH数据解析。如果T3=2,它收到的是BCCH块的第一帧;如果T3=6,它收到的是CCCH块的第一帧。这就是“解映射”。
业务信道同理。如果一个用户被分配在TN=3,那么对于26帧复帧,如果FN mod 26 = 12,这个时隙传输的是SACCH;如果FN mod 26 = 25,这个时隙空闲;其余都承载TCH数据或FACCH。设备告警里常见的“SACCH复帧失步”,本质上就是接收端的FN计数和网络侧对不上了,导致把SACCH帧误当TCH帧解码。
所以你在协议栈日志里看到一堆“Block Type”和“FN”字段时,不要慌。先拿FN取模,算出T3和T2,再看时隙号,你就能判断这段日志是BCCH系统消息、寻呼消息还是业务数据。很多现网问题排查,都是从这个“静态核对”开始的。
4. 从开机到通话:时隙与信道的完整生命周期
4.1 搜网:靠FCCH找到“时间起点”
手机开机第一步是搜网。它会把自己支持的频段扫一遍,测量每个频点的接收电平,挑一些信号强的频点进行FCCH搜索。
FCCH的识别手段很有辨识度:一段持续约577微秒的未调制单音。手机把接收信号和本地预期的67.7kHz单音做相关,一旦相关峰出现,就说明这个频点上存在GSM小区,并且还拿到了时隙边界。再加上FCCH每隔10帧出现一次,手机连续找到两个FCCH,就能确认51帧复帧的起点,时间对表就完成了。
找到FCCH后,下一帧就是SCH。手机在SCH上解出BSIC和当前TDMA帧号。有了帧号,手机才真正进入“计时状态”。之后它会去读BCCH系统消息,里面写着小区位置区码、CCCH配置、控制信道参数、网络色码等。读完这些,手机知道自己属于哪个位置区,接下来该监听寻呼还是发起位置更新,就有谱了。
我自己看SDR软件抓GSM信号时,特别喜欢观察这个阶段。先看频谱上有条细线,再解出SCH里的帧号,然后BCCH的数据一块一块吐出来,整个过程像给一台老式机械手表上好了发条,一秒秒走了起来。
4.2 随机接入:第一次“对表”
手机要发起了,第一步是通过RACH向网络发出接入请求。RACH用的是接入突发AB,保护间隔很长,因为手机此刻不知道TA。基站收到AB后,算出信号到达时间和理想时隙边界的偏差,这个偏差换算成TA,就放在后续的指派消息里回给手机。
基站在AGCH上给手机分配一个专用控制信道,通常是SDCCH。手机收到Immediate Assignment后,调整自己的发送时间,开始在SDCCH上建立信令连接。这一步等于是网络给手机发了一块“新表”,告诉它从现在开始,上行要在这个时间点提前多少发送。
| 阶段 | 信道 | 方向 | 主要消息 |
|---|---|---|---|
| 随机接入 | RACH | 手机→基站 | Channel Request |
| 资源指派 | AGCH | 基站→手机 | Immediate Assignment |
| 信令连接 | SDCCH | 双向 | CM Service Request、鉴权、加密、Setup |
| 业务指配 | SDCCH/FACCH | 基站→手机 | Assignment Command |
| 业务传输 | TCH+SACCH | 双向 | 语音/数据 + 测量报告 |
| 切换执行 | FACCH+TCH | 双向 | Handover Command、Handover Complete |
随机接入为什么用AB而不是NB?因为这时候手机距离基站多远还是未知数。你想一下,如果手机离基站30公里,信号单程时延就需要约100微秒,往返就是200微秒。普通突发只有约30微秒的缓冲时间,根本不够用。接入突发那68.25bit保护间隔折合约252微秒,才能容纳下几十公里级别的时间偏差。
4.3 信令与业务切换:SDCCH到TCH
SDCCH是信令专用通道,相当于业务开始前的前台接待。手机在SDCCH上完成鉴权、加密、呼叫建立等一大串信令交互。直到核心网确认这次呼叫可以转接业务时,基站下发Assignment Command,让手机从SDCCH跳到TCH上。
这个切换环节有个容易混淆的点:Assignment(指配)和Handover(切换)的区别。指配是同一小区内从控制信道切换到业务信道,切换是不同小区之间转移。它们用的信道重配置机制不一样,但都会通过FACCH或SDCCH传递命令。做信令分析时,看到Assignment Command不要条件反射认为是切换。
手机跳到TCH之后,语音数据开始流动。这时SDCCH被释放,SACCH开始伴随TCH工作,测量报告开始以480ms的周期上报。一个全速率语音用户占据一个时隙,编码后速率22.8kbps,这就是GSM单时隙全速率语音的由来。
4.4 通话中的时间管理:SACCH、FACCH、TA更新
通话建立不等于万事大吉。手机一直在移动,距离基站的远近在不断变化,原有的TA值会慢慢不准。SACCH上会周期性地携带TA调整命令,基站根据上行信号的到达时间实时更新TA,让手机的上行突发始终准确落在基站的时间窗口里。
测量报告也在SACCH上往返。手机每480ms上报一次邻区电平和本小区质量,网络根据这些数据决定是否触发切换。如果某个邻区信号已经比服务小区强很多,网络会下发切换命令。这个切换命令通过FACCH快速传递,因为它要优先于语音数据,实在等不了SACCH的慢节奏。
FACCH为什么能快?因为它直接抢TCH的突发,不需要等专用时隙。代价是抢走的突发对应的语音帧丢了,但一次切换造成的语音损伤,比线质量恶化带来的持续损伤要小得多。GSM这种“关键时刻牺牲一点语音、保住连接”的思路,算是最早的QoS优先级实践。
5. 常见问题与排查技巧实录
5.1 帧号解错了,BCCH全乱
我自己调试GSM接收机时,最典型的故障就是BCCH系统消息解出来全是乱码。查了物理层发现,FCCH和SCH都正常,但BCCH数据乱得一塌糊涂。后来把FN的解析逻辑从头捋了一遍,发现是T3的恢复算错了一位。
BCCH块从T3等于2开始,而不是0或1。如果你的解调器没把FCCH和SCH占用的帧剔除,直接把后面的4帧当成BCCH块,那拿到的就不是真正的BCCH数据。这个错位问题在写协议栈时特别容易犯。排查方法是打印出每帧的FN mod 51,手动标出FCCH、SCH、BCCH、CCCH的位置,和标准映射表逐帧比对。帧号对上了,BCCH自然就解开了。
现场环境更常见的是协议分析仪抓到乱码,往往不是物理层错位,而是跳频开启时没有把MAIO和HSN算进去。跳频时,物理载波在每帧改变,但逻辑信道映射与时隙绑定、与频点无关。分析仪如果按固定频点解数据,碰到跳频小区就会疯掉。记住一个原则:GSM的逻辑信道只认时隙和FN,不认频率。
5.2 TA一直偏大甚至掉话
路测时经常遇到一种情况:手机占用了一个小区,上行质量差,TA值异常大然后掉话。拿到数据先算一下,TA=30意味着信号单程距离大概16.5公里,如果这个小区是覆盖半径3公里的市区基站,那这些远点用户很可能根本不是从这个基站收到信号的,而是通过直放站、拉远站或反射信号通过远方小区过来的。
排查思路是先看TA统计分布。正常情况下,TA应该随位置平滑变化。如果TA在某条道路上突然跳变,或者统计分布出现长尾巴,先查直放站和光纤拉远有没有参数配置错误。还有一些老站点在扩容时把天线方位角改大了,覆盖方向溢出,也会导致TA普遍偏大。
顺便提醒一下做覆盖优化的人:TA统计要按载频和时隙拆开看。如果同一个小区只有一个时隙的TA普遍偏高,可能是那个时隙被配置成GPRS/EDGE数据业务,手机发射功率大、突发占用率高,恰好把覆盖远端的异常暴露出来了。这不是物理层故障,但会让你误判成“覆盖过远”。
5.3 训练序列同频干扰为什么这么难查
GSM网络里同频干扰一直是个老大难。无线网络优化里最常见的操作之一就是给相邻小区分配不同的BSIC和训练序列码(TSC)。但只改BSIC不换TSC,或者两个方向相反的相邻扇区用了不同TSC但物理频率同频,都会造成干扰。
训练序列在信号解调里充当“参考模板”。如果相邻小区用了同样的TSC,手机在解调本小区突发时,会把对方的突发也当成自己能相关上的信号,信道估计被污染,均衡器输出一堆错码。这种干扰最烦人的地方是,电平显示正常,C/I却不达标。因为干扰不是白噪声,而是和信号高度相关的“假信号”。
排查这类问题,先看干扰小区在频点、时隙、训练序列三个维度上的重合度。三个都一样的,基本就是同频同色码干扰;只有频点相同、TSC不同的,问题多半出在邻区列表没优化。无线侧定位到具体小区之后,改TSC或换频点,比单纯压功率有效得多。
5.4 用SDR和频谱仪看GSM时,时间窗要会设
如果你用软件无线电设备抓GSM信号,新手最容易犯的错是采样率随便设,FFT窗口设得太大,结果在频谱上根本看不到时隙突发的轮廓。GSM的符号速率约270.833kbps,建议采样率设为符号速率的整数倍,比如4倍就是约1.0833MHz。采样率太低,突发之间的保护间隔会被平滑掉;太高,数据量爆炸,处理也慢。
看时域波形时,把时间窗放在几毫秒级别,就能看到8个突发的起落。每个突发约577微秒,中间有明显的小幅凹陷,那个凹陷就是保护间隔。想看到FCCH单音,把频谱中心频率对准载频后,在频偏约67.7kHz处找一根稳定的细谱线。找到了,就说明这颗突发的频率校正逻辑是通的。
更进阶一点的技巧:用FCCH触发捕捉。许多示波器和软件接收机支持电平触发,你把触发电平设在信号包络一半的位置,持续捕获几十毫秒。这样你可以一次性抓到多个51帧复帧,方便后续对FCCH和SCH位置做离线验证。实测下来这个办法比盲抓稳定得多,尤其是室外信号衰落剧烈的时候。
5.5 复帧关系搞混导致的定位错乱
还有一个高频错误是51帧复帧和26帧复帧的关系没捋清。一个超帧是1326个TDMA帧,它等于26个51帧复帧,同时也等于51个26帧复帧。这个关系很好验证:26×51=1326,反过来51×26也等于1326。但是在做信道映射时,这两个复帧是并行叠在一个TDMA帧流里的,不是前后衔接的。
很多小白以为“先发完51帧控制信道,再发26帧业务信道”,实际上完全不是。TDMA帧就是TDMA帧,帧号连续累加;同一个帧号,它在51帧复帧周期里有一个位置,在26帧复帧周期里有另一个位置。控制信道和业务信道跑在同一个帧流的不同时隙上,互不干扰。FCCH在51帧复帧的0、10、20、30、40帧出现,SACCH则在26帧复帧的第12帧出现,两个周期共存,各自取模。
排障时最容易出现的判断错误是:拿26取模去定位FCCH,或者拿51取模去定位SACCH。结果必然是找不到突发。我在现场看很多新人的排查记录,就栽在这种低级但隐蔽的问题上。建议你遇到任何“信道怎么也解不对”的情况,先把两个取模结果都列出来,再决定该用哪个判断。
最后再分享一个我个人的习惯。我在抓GSM信号做分析时,从来不会一上来就奔着复杂的业务信道去。先把FCCH、SCH、BCCH这三板斧练扎实,确认自己能稳定还原51帧复帧的节奏,再去看SDCCH和TCH。只要帧号计数不飘,逻辑信道映射就是一张查表的事。GSM这套时间管理看明白了,后面理解LTE的帧结构、NR的时隙格式,真的会轻松不少。