ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

GSM时间管理从TDMA时隙到逻辑信道映射的完整指南

2026/10/5 6:11:41 拓冰建站 浏览量
GSM时间管理从TDMA时隙到逻辑信道映射的完整指南 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帧都有一个全局编号叫FNFrame Number范围从0到2715647循环一圈正好是超高帧的时长。FN的计算和分解也很重要公式是FN (T1 × 51 × 26) (T2 × 51) T3其中T1范围0到2047T2范围0到25T3范围0到50。反过来拆解就是T1 FN 整除 1326T2 (FN mod 1326) 整除 51T3 FN mod 51为什么搞这么复杂的编号因为FN是GSM一切调度的基础。手机在哪个时隙听哪个逻辑信道、跳频下一跳跳到哪个频率、加密密钥流算到哪一位全都要用到FN。超高帧设到3小时28分主要是为了让加密序列足够长避免短期内重复这也是防止重放攻击的基本设计。我举个例子帮你练练手。假设FN 1234567T1 1234567 / 1326商的整数部分是931余数是61所以T2 61 / 51 1T3 61 mod 51 10T3等于10意味着什么先记住这个数后面讲到51帧复帧的FCCH位置时你会发现自己已经能判断“手机此刻收到的是什么突发”了。1.3 一个时隙里到底塞了多少东西一个时隙持续约577微秒里面不是随便堆数据而是按照“突发脉冲”的格式组织的。常用术语叫Burst本质上就是在一个时隙内发送的一段射频波形。最常见的普通突发脉冲NBNormal Burst结构是尾比特3bit、数据57bit、偷帧标志1bit、训练序列26bit、偷帧标志1bit、数据57bit、尾比特3bit最后还有8.25bit的保护间隔。把有效部分加起来3571261573148bit再加保护间隔8.25bit正好是156.25bit落满整个时隙。保护间隔为什么是8.25bit而不是整数因为GSM允许不同手机距离基站远近不同上行信号到达时间会有偏差。保护间隔就是给这点时间偏差预留的缓冲带。如果你把时隙当成一条限时跑道那保护间隔就是跑道尽头的缓冲草皮不让刹车不及的车冲出去撞到下一辆车。训练序列在突发正中间26bit接收机用它对这颗突发的信道冲激响应做估计。GSM信号在无线环境里会被多径折腾得面目全非接收机必须借助已知的训练序列反推信道发生了什么再做均衡。这块后面单独展开。2. 突发脉冲家族每一种都是干不同活的工具2.1 五种突发脉冲速查GSM并没有让所有场景都用同一种突发脉冲而是针对不同任务设计了五种。我一开始也疑惑为什么不能一个格式走天下后来看懂了每种突发的用途才明白这里面的门道。类型英文缩写主要用途结构特点普通突发NB业务数据、BCCH、CCCH、SDCCH等绝大多数信道尾部、数据、训练序列、数据、尾部、保护间隔频率校正突发FBFCCH频率校正、时隙定位承载全0等效一个67.7kHz单音同步突发SBSCH时间同步、读取帧号和BSIC64bit扩展训练序列携带压缩帧号接入突发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 逻辑信道分类控制面与业务面时隙和突发是物理层的概念但手机真正“业务”起来还需要在既定时隙上承载各种各样的消息。这些消息按照功能被划分为逻辑信道。逻辑信道不是物理频率也不是固定时隙而是一个抽象概念它在某个特定时隙上按某种规律周期出现。逻辑信道大致分三类。广播信道BCHFCCH频率校正、SCH同步、BCCH广播控制负责让手机“找到网络、知道网络参数”。公共控制信道CCCHRACH随机接入、AGCH允许接入、PCH寻呼负责手机和网络之间的首次对话。专用控制信道DCCHSDCCH独立专用控制、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到5051帧可以让各控制信道在一个周期内各就各位同时和另一个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的位置。它全部发送0GMSK调制之后等效为一个偏离载频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系统消息块0BCCH系统消息6~9公共控制块0PCH或AGCH12~15系统消息块1BCCH系统消息16~19公共控制块1PCH或AGCH22~25系统消息块2BCCH系统消息26~29公共控制块2PCH或AGCH32~35系统消息块3BCCH系统消息36~39公共控制块3PCH或AGCH42~49公共控制块4~5PCH或AGCH50空闲帧不承载用户数据需要提醒的是这张表是“典型配置示意”。真实网络里CCCH_CONF和SDCCH配置会导致块分配不一样有的小区会把SDCCH也塞进TS0。做协议分析时一定要先读BCCH里的系统消息别拿一张表套所有小区。3.3 26帧复帧业务信道的SACCH节奏业务信道TCH用的是26帧复帧而不是51帧。26帧里24帧留给TCH数据1帧给SACCH1帧空闲。帧号(0~25): 0 1 ... 11 12 13 ... 24 25 用途: TCH TCH ... TCH SACCH TCH ... TCH 空闲SACCH在每26帧的第13帧从0编号是12出现一次。由于一个26帧复帧持续120ms4个复帧就是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上那么它知道T310时隙是FCCH于是它把这个时隙当作频率校正突发处理不做BCCH数据解析。如果T32它收到的是BCCH块的第一帧如果T36它收到的是CCCH块的第一帧。这就是“解映射”。业务信道同理。如果一个用户被分配在TN3那么对于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业务传输TCHSACCH双向语音/数据 测量报告切换执行FACCHTCH双向Handover Command、Handover Complete随机接入为什么用AB而不是NB因为这时候手机距离基站多远还是未知数。你想一下如果手机离基站30公里信号单程时延就需要约100微秒往返就是200微秒。普通突发只有约30微秒的缓冲时间根本不够用。接入突发那68.25bit保护间隔折合约252微秒才能容纳下几十公里级别的时间偏差。4.3 信令与业务切换SDCCH到TCHSDCCH是信令专用通道相当于业务开始前的前台接待。手机在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值异常大然后掉话。拿到数据先算一下TA30意味着信号单程距离大概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×511326反过来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的时隙格式真的会轻松不少。