
GSM 这套体制能被叫成“时间管理大师”不是因为它会排日程表而是因为它把无线电频谱的使用精确到了比特级一个载频 200kHz 的带宽要同时喂饱几个甚至十几个用户光靠“分频”是不够的必须再把时间切成极细的片。TDMA 时隙、突发脉冲、逻辑信道映射这几样东西就是 GSM 管理时间的核心手段。这篇文章我想用做工程的习惯把这条链从头到尾拆开配合可以直接照做的查表方法和现场判断经验帮你把“时隙”从概念变成脑子里可以随时调用的画面。这篇内容适合三类人刚接触 GSM 空口的通信专业学生、日常优化无线网络的网优工程师以及那些想搞明白“手机上那个信号格背后到底在干嘛”的技术爱好者。我会把原理、字段、映射规则和对到实际信令里的方法放在一起讲尽量让每个环节都能落地。1. 为什么 GSM 非得把时间切成片一个载频养活多个用户的基本逻辑1.1 频率不够分只能“分时”凑GSM 系统最早设计时每个载频只占 200kHz 带宽一个 900MHz 频段全部可用带宽也就几十兆赫兹能分出的载频数量非常有限。如果每个用户独占一个载频一个基站小区撑死只能同时服务几十个人根本不够用。于是 GSM 采用了 FDMA 和 TDMA 的组合方案先把频谱切成一个个 200kHz 的载频再把每个载频在时间上切成一个个时隙不同用户在不同时间点使用同一个载频。这个思路不难理解就像火车轨道只有一条但可以通过时刻表让多趟列车共用轨道。频率是“轨道”TDMA 时隙就是“发车时刻”。多个用户错开时间互不干扰。1.2 8 个时隙组成一帧4.615 毫秒转一圈GSM 规定一个 TDMA 帧包含 8 个时隙编号为 TS0 到 TS7。每个时隙约 0.577 毫秒一帧总共约 4.615 毫秒。手机通话时不是一直占着载频发送语音而是每隔一帧在自己分配到的那个时隙里发送一个突发脉冲其余 7 个时隙的时间可以用于测量邻区、切换发射频率等。这里有个容易理解的类比你去食堂打饭如果每个人打饭要 5 分钟8 个人一起挤在窗口前就乱套了。但如果你规定一号窗口 8:00-8:05 给张三8:05-8:10 给李四大家按时间表来秩序就建立起来了。GSM 的 8 个时隙就是这张“窗口时间表”。1.3 时间管理必须有“对表机制”定时提前为什么存在直接把时间切好就够了吗不够。因为手机离基站的距离不一样无线电波在空中传播需要时间。如果两台手机都按同一个时间点发送离基站近的那台信号先到远的那台信号后到后到的信号就可能撞进下一个时隙把别人的数据压坏。GSM 的解法是“定时提前”Timing Advance简称 TA。基站会测量手机上行信号到达的时间偏移然后通过信令告诉手机“你提前一点发。”提前多少呢以 bit 为单位计算一个 bit 约 3.69 微秒对应传播距离大约 554 米。所以 TA1 时手机大约提前 3.69 微秒发送TA10 时手机就提前约 5.5 公里对应的传播时间发送。这个机制是不是很像会议主持人要求远程发言的人在轮到自己的时候稍微提前开麦如果你等到主持人点到你了才开麦声音传到会场已经晚了半拍。GSM 要的就是让每个用户的突发脉冲“分毫不差”地落到基站接收窗口中间这就是时隙真正能工作的前提。2. 从帧到复帧再到超帧先看懂 GSM 的时间刻度表2.1 最小单位不是“秒”而是“bit 和时隙”要理解 GSM 的时间管理建议先建立一张层级表bit 是最小信息单位大约 3.69 微秒一个156.25 个 bit 组成一个时隙约 0.577 毫秒8 个时隙组成一个 TDMA 帧约 4.615 毫秒。GSM 的空中接口速率为 270.833 kbit/s所以每个时隙承载 156.25 bit 的时长。之所以有 0.25 这个小尾巴是因为要留一部分时间做保护间隔避免相邻时隙的信号在时间上相互叠加。这个 0.25 bit 的“零头”也解释了为什么突发脉冲实际内容往往只有 148 bit 左右剩下的 8.25 bit 是空的保护区间。2.2 框架为什么要分 26 帧和 51 帧两种如果所有信道都按 8 个时隙一帧循环控制信令和业务数据就会挤成一团。GSM 把成帧结构再往上扩展了两层业务复帧由 26 个 TDMA 帧组成时长 120 毫秒主要用于承载语音业务信道并留出专门位置承载随路信令SACCH。控制复帧由 51 个 TDMA 帧组成时长约 235.4 毫秒主要用于承载广播控制和公共控制信道。为什么偏偏选 26 和 51一个关键原因是这两个数互质。互质意味着业务复帧和控制复帧在时间轴上会错开排列不会出现“业务信道总在某个位置撞到控制信道”的尴尬局面。24 个 TCH 突发加 1 个 SACCH 突发加 1 个空闲帧刚好凑成 120 毫秒和 20 毫秒一个语音编码块的节奏能良好配合。2.3 超帧、超高帧与帧号 FN26 个业务复帧组成一个超帧51 个控制复帧也组成一个超帧两者时间长度相同都是 1326 个 TDMA 帧约 6.12 秒。再往上2048 个超帧组成一个超高帧帧号 FN 从 0 到 2715647 循环。这个庞大的帧号就是 GSM 全网统一的“大时钟”加密、跳频、测量上报都依赖它。在工程里FN 最常见的用途有两个一是加密算法需要根据 FN 和时间戳计算出加密序列二是跳频时系统用 FN 和 HSN跳频序列号确定下一个突发跳到哪个载频上。所以看到空口信令里带着一串帧号不要嫌它烦它是定位问题的关键线索。时间单位组成关系时长bit1 bit ≈ 3.69 μs微小时间片时隙156.25 bit约 0.577 msTDMA 帧8 个时隙约 4.615 ms业务复帧26 个 TDMA 帧120 ms控制复帧51 个 TDMA 帧约 235.4 ms超帧51 个业务复帧或 26 个控制复帧约 6.12 s超高帧2048 个超帧约 3 小时 28 分3. 突发脉冲每个时隙里到底塞了什么3.1 普通突发穿衣最多的“标准包裹”普通突发NB是 GSM 里最常见的突发类型语音业务、多数控制信道都使用它。一个普通突发长这样3 bit 尾比特57 bit 信息1 bit 偷帧标志26 bit 训练序列1 bit 偷帧标志57 bit 信息3 bit 尾比特最后还有 8.25 bit 保护间隔。这个结构里训练序列是重中之重。26 bit 的已知序列放在中间接收端拿它做信道估计从而判断无线环境里有多径反射、信号被扭曲成什么样再通过均衡器把信号“掰直”。训练序列放在正中间是有讲究的一个突发的前后半段都可能受到多径干扰把已知序列放在中间能让均衡器同时照顾到前后两段数据。偷帧标志只有 1 bit但作用很大。话音信道上如果突然要传紧急信令比如切换命令GSM 会把偷帧标志置为 1接收方一看就知道“这一突发里不是正常语音而是信令”于是转去处理快速随路控制信道FACCH的内容。这就是为什么平时看统计 FACCH 占用率可以间接判断切换频繁程度。3.2 频率校正突发和同步突发开机后最先见到的两种突发手机上电后第一步是搜网。它怎么知道哪个载频是基站广播的 BCCH 载频靠的就是频率校正突发FB。FB 的结构是 142 bit 全 0 序列经过 GMSK 调制后在频谱上会形成一条非常明显的单音信号。扫频时找到这条“亮线”就知道这里是 BCCH 载频中心。随后手机需要读取同步突发SBSB 里有一段 64 bit 的扩展训练序列用来帮助手机锁定符号同步同时还能携带当前帧号和基站识别码 BSIC。FCCH 帮你找到了“停车场入口”SCH 告诉你“当前是几点、这是哪个停车场”两者配合完成初步同步。3.3 接入突发第一次说话人人都得留足安全距离手机第一次接入网络时还不知道定时提前量所以 RACH 信道使用接入突发AB。AB 的保护间隔在五种突发里最长达到 68.25 bit。为什么因为手机可能离基站 30 公里远信号来回传播需要时间如果保护间隔不够长第一次发送的突发就可能撞进后面的时隙。这段“安全距离”就是给未知传输时延留的余量。拿生活类比新手司机倒车入库时如果车位两边都没有参考物你会本能地留出更大的前后距离。等熟悉了车感之后再一点点贴近。手机也是这样第一次接入用长保护间隔接入成功后进入正式通话才改用短保护间隔的普通突发。3.4 五种突发脉冲对比突发类型核心特征保护间隔主要用途普通突发 NB两个 57 bit 信息块 26 bit 训练序列8.25 bitTCH、BCCH、SDCCH、SACCH、FACCH 等多数信道频率校正突发 FB142 bit 全 08.25 bitFCCH形成单音供手机扫频同步突发 SB64 bit 扩展训练序列 39 bit 信息8.25 bitSCH携带帧号和 BSIC接入突发 AB41 bit 同步序列 36 bit 信息68.25 bitRACH 随机接入伪突发 DB固定填充内容8.25 bit空闲时隙填充4. 逻辑信道映射把快递包裹按地址送进对应的房间4.1 先分清逻辑信道有哪些逻辑信道是“数字通信里的快递面单”它描述的是一种语义角色不管它最终落在哪个物理时隙上。GSM 的逻辑信道大致分四类广播信道FCCH、SCH、BCCH负责频率同步、时间同步和系统消息广播。公共控制信道RACH上行随机接入、AGCH下行接入允许、PCH下行寻呼。专用控制信道SDCCH独立专用控制信道传信令、SACCH慢速随路控制信道传测量报告和 TA、FACCH快速随路控制信道借用 TCH 资源。业务信道TCH/F全速率语音、TCH/H半速率语音。这些逻辑信道不像互联网端口那样“随时随地在听”它们必须被一位一位地安排进 TDMA 帧的时隙里这就是映射。4.2 51 复帧控制信道的时间表以最常见的 TS0 组合BCCH CCCH为例控制信道按 51 个 TDMA 帧循环安排。每隔 10 帧会出现一次 FCCH 和 SCH然后是 4 帧 BCCH再是 4 帧 CCCH第 50 帧空闲。所以在 51 复帧里FCCH 和 SCH 各出现 5 次BCCH 和 CCCH 各有 20 帧。手机开机搜网时之所以能较快锁定小区就是因为 FCCH 在 51 复帧里出现得足够频繁大约每 47 毫秒左右就能遇到一次频率校正突发。BCCH 的系统消息块需要 4 帧才能构成一个完整消息所以一个 BCCH 消息块周期性重复手机连续读几次就能拼出系统信息。这里给你一个工程上的实用做法如果拿到空口日志想快速判断某个下行突发是不是 BCCH可以取它的帧号 FN 对 51 取余数再查所在位置。FN mod 51信道用途0FCCH1SCH2-5BCCH6-9CCCH (PCH/AGCH)每 10 帧循环一次重复上述结构50空闲帧4.3 26 复帧业务信道的时间表业务信道不按 51 帧走而是按 26 帧循环。在一个业务复帧里第 0 到第 11 帧用于 TCH第 12 帧用于 SACCH第 13 到第 24 帧用于 TCH第 25 帧空闲。这样算下来一个 TCH 全速率信道在一个 26 复帧周期里能拿到 24 个突发刚好支撑一路语音的传输。SACCH 的位置在第 12 帧这一点对理解测量报告周期特别关键。SACCH 的一个完整消息块需要 4 个突发分布在连续 4 个业务复帧里所以测量报告大概每 480 毫秒上报一次。你在网优平台上看到的无线测量数据本质上就是手机每隔约半秒上报一次的电平和质量统计。4.4 组合信道TS0 为什么这么忙一个载频只有 8 个时隙GSM 不可能给每个逻辑信道都分配独立时隙所以它把多种逻辑信道“塞”在同一个时隙上这叫组合信道配置。最常见的是 BCCH CCCH 组合占 TS0如果要提高寻呼容量TS0 也可以变成 BCCH CCCH SDCCH/4 的组合要扩充信令承载能力再用 TS1 配 SDCCH/8。这样的设计会让工程现场看配置时感到眼花缭乱。我的经验是只要盯住一点小区第一块载频的 TS0 几乎总是承载控制信道绝对不能用来做业务信道。后面加的载频则可以根据话务模型把时隙配成纯 TCH或继续配一些 SDCCH。4.5 为什么业务复帧和控制复帧“互质”这么重要26 和 51 互质让业务复帧里的 SACCH、空闲帧和控制复帧里的 FCCH、BCCH 能以一个自然周期错开减少信道间互锁等待。这个设计比单用一种复帧更优雅如果都用 51 帧业务信道的 SACCH 位置和控制信道的 BCCH 位置就可能长期“打架”。5. 实战图解给你一个帧号怎么算出它在哪个逻辑信道5.1 用 Python 快速定位 TS0 控制信道这一节我们直接来点能“抄作业”的东西。下面这段代码可以在拿到帧号 FN 后快速判断该帧落在 TS0 的哪个逻辑信道上def identify_ts0_channel(fn): n fn % 51 # 51 复帧按 10 帧一组循环 block n % 10 if n 50: return IDLE elif block 0: return FCCH elif block 1: return SCH elif 2 block 5: return BCCH elif 6 block 9: return CCCH/PCH-AGCH else: return UNKNOWN实际使用时要注意这个判断只适用于 TS0 配置为 BCCH CCCH 组合的情况。如果 TS0 还叠加了 SDCCH/4那么部分帧会被拨给 SDCCH直接套这段代码会把 SDCCH 帧误判成空闲帧。真机分析时最好先看系统消息里的信道组合指示。5.2 用 26 复帧定位业务时隙测试手机如果占用了某个 TCH 时隙你想知道当前突发是语音还是 SACCH可以按 26 复帧取模def identify_tch_channel(fn): n fn % 26 if n 12: return SACCH elif n 25: return IDLE else: return TCH这个例子比较理想化真实网络还涉及跳频但逻辑是一样的先把帧号和时间关系对齐再看落在哪个位置。5.3 从开机到通话一条完整的时间线走读为了把前面的概念串起来我们假设一部手机在 LAC 里做一次位置更新阶段逻辑信道方向突发类型关键信息开机扫频FCCH下行FB找到 BCCH 载频锁定频率帧同步SCH下行SB获得帧号和 BSIC读系统消息BCCH下行NB获取 LAI、控制信道参数发起接入RACH上行AB随机接入请求接入允许AGCH下行NB立即指配指定 SDCCH信令交互SDCCH双向NB位置更新请求/接受随路控制SACCH双向NB携带 TA 和测量报告释放SDCCH/SACCH双向NB信道释放这张表你完全可以打印出来贴工位上。看空口信令的时候先判断当前阶段处于哪一步再去看对应的逻辑信道类型思路会清晰很多。5.4 测量报告和 TA 调整的“半秒节奏”通话中手机每个 SACCH 周期约 480 毫秒都会上报一次测量报告内容包括服务小区电平、质量、邻区电平等。基站也会在下行 SACCH 上给手机调整 TA 和功率控制命令。这就是为什么 SACCH 被称为“慢速随路控制”它不是实时每一帧都在发而是每 480 毫秒集中处理一次。在工程里如果发现某小区上行干扰严重你可以去统计 SACCH 上收到多少错误的测量报告如果发现某用户经常出现 TA 特别大但信号又不太差的情况要怀疑是不是存在直放站或拉远设备导致的时间延迟异常。5.5 抓空口日志时的核对技巧实际做外场测试时我们用测试手机抓到的内部日志里会直接标出物理信道类型但偶尔也会遇到只给时隙号和帧号的情况。这时候手动计算 FN mod 51 或 mod 26 就很实用。再分享一个看频谱的小技巧用频谱仪扫描 BCCH 载频时你会看到在载频中心频率偏置约 67.7kHz 的位置有一条稳定亮线那就是 FCCH。如果一条亮线都没有说明该载频可能不是 BCCH 载频如果有但间隔不规则要怀疑小区覆盖存在同频干扰或设备故障。6. 时间管理翻车现场时隙配置、TA 超限与信道拥塞6.1 一个载频为什么只能承载这么点用户很多人初学时会困惑一个载频有 8 个时隙为什么小区容量听起来才几十人因为 TS0 很可能被控制信道占用剩下 7 个时隙如果全配 TCH/F一个载频最多同时服务 7 个全速率语音用户。如果开启半速率一个时隙可以掰成两路理论容量能翻倍但语音质量会有所下降。这意味着扩容不是简单“加个载频”就完事。每加一个载频要决定新增时隙是纯业务信道还是要分摊一部分 SDCCH/CCCH 负荷。否则可能出现一种反直觉现象TCH 还有空闲SDCCH 却拥塞到手机无法完成寻呼响应。6.2 TA 超限和上行干扰时间错位造成的怪问题TA 最大 63对应半径约 35 公里。如果网优里看到一个用户 TA 接近上限但发射功率已经调满多半是覆盖过远或存在塔下黑、直放站放大延迟等。TA 异常会导致上行突发到达基站的时间不准确即使频率没错也会发生时隙间干扰。这不像同频干扰那样表现为频谱抬升而是表现为上行误码率升高、随机接入成功率下降。排查这类问题的一个实用思路是分时隙统计。如果某个上行时隙失败率明显高于其他时隙先把该时隙的业务量、占用用户 TA 分布拉出来看大概率能找到元凶。6.3 SDCCH 拥塞、PCH 溢出和 TCH 拥塞现象完全不一样SDCCH 拥塞位置更新成功率下降、呼叫建立中“立即指配”成功率低。PCH 溢出被叫寻呼无响应比例上升主叫侧听到回铃音很久但被叫不震铃。TCH 拥塞业务信道分配失败用户听到忙音。这三类问题处理方式差异很大但追根溯源都在时隙规划上。控制信道时隙给少了SDCCH 和 CCCH 就会先出问题业务时隙给少了TCH 就会拥塞。扩容前先做话务模型测算比事后反复调参数靠谱得多。6.4 跳频场景下别被“载频号”骗了GSM 开启跳频后同一个时隙可能每个 TDMA 帧都跳到不同载频上。此时你抓到的某个突发物理载频是变化的但时隙位置固定。分析时如果只看载频号容易误判应该结合 FN、MAIO 和 HSN 推算当前帧实际使用的载频或者直接依赖路测软件已经解出的信道类型。BCCH 载频上的控制信道一般是不参与跳频的这也是为什么 FCCH、SCH、BCCH 相对稳定容易在频谱上找到。6.5 给学习者的建议怎么把这些概念变成自己的我的建议是不要死记硬背 51 帧和 26 帧的每一格而是先记住三个定位点FCCH 在 51 复帧每个 10 帧周期的开头、SACCH 在 26 复帧第 12 帧、TS0 几乎一定是控制信道。把这三点刻在脑子里任何一张空口日志拿出来你都能快速找到切入位置。如果手头有条件可以用一台老款测试手机、一个频谱仪对着真实的 GSM 小区抓一段时间的数据再去回放日志看时序。没有条件的话也可以用网上能找到的公开 GSM 空口样例数据练手重点锻炼“看到一个帧号立刻想到它应该落在哪类信道上”的反应速度。我自己刚接触 GSM 那阵也是被一堆复帧结构搞得晕头转向后来发现最有效的方法是拿真实日志一段一段标出来标注完十来个 51 复帧周期自然就熟。技术这东西看十遍不如动手对一遍GSM 的时间管理再复杂也经不住你拿真实数据反复拆。