4. 数据帧的成帧与同步
水下声通信链路具有传播时延大、多径严重、多普勒频移明显、信噪比低且随时间起伏的特点。接收端要正确解析一帧数据,首先必须回答两个问题:帧从哪里开始、到哪里结束(成帧与帧定界),以及接收端采样时钟与发送端符号节拍如何对齐(位同步与帧同步)。本节围绕这两条主线展开,并给出同步丢失后的恢复策略。
一、帧定界方法:从“数长度”到“找标志”
帧定界解决的是比特流中帧边界的识别问题。常见方法有四类,适用场景差异明显:
- 字符计数法:帧头用一个计数字段声明帧长。实现简单,但计数字段一旦出错,后续所有帧边界全部错位,缺乏自恢复能力,水下高误码环境下很少单独使用。
- 首尾定界符法:用特殊比特模式(如 01111110)标识帧首尾,配合比特填充避免载荷中出现相同模式。它具备一定的重同步能力,但填充/去填充增加处理开销。
- 长度字段 + 帧头校验:帧头包含长度与帧头 CRC,接收端先校验帧头再按长度截取。这是水下协议中最常用的折中方案,配合前导码可快速定位候选帧头。
- 物理层前导码定界:利用已知前导序列的相关峰确定帧起点,属于“信号层定界”,对低信噪比更稳健,通常与帧头校验联合使用。
工程上常见的组合是:前导码(检测帧到达)→ 同步字(确认帧起点)→ 帧头(长度+校验)→ 载荷 → CRC。下面这张图给出了一帧的典型结构与各字段承担的同步职责:
二、前导码与同步字设计
前导码的核心指标是相关旁瓣低、抗多普勒能力强、长度可控。常用序列包括 m 序列、Gold 序列、Zadoff-Chu(ZC)序列以及线性调频(LFM)信号。设计时需权衡三点:
- 长度与处理增益:相关增益约为 10·log₁₀(N) dB。例如 N=256 时约 24 dB,可在低信噪比下检测;但前导码过长会降低有效吞吐,水下常取 128~512 个符号。
- 多普勒容忍度:多普勒会使相关峰展宽、偏移。ZC 序列对频偏较敏感,LFM 对多普勒有天然容忍性,工程上常采用“LFM 前导 + 同步字”的组合。
- 虚警控制:检测门限通常设为噪声相关均值的若干倍(如 6~10 倍标准差),并采用“双峰确认”——前导峰与同步字峰间隔落在预期窗口内才判定为有效帧。
同步字一般取 16~32 比特的伪随机模式,要求自相关尖锐、互相关低,且与载荷编码后的比特模式尽量不相似,以降低误同步概率。一个可参考的示例参数为:前导码 256 符号 LFM、同步字 24 比特 Gold 序列、帧头 32 比特(含 12 位长度字段与 16 位 CRC)、载荷 512~2048 比特、帧尾 CRC-16。上述数值为教学示例,实际取值需结合带宽、符号率与信道条件确定。
三、位同步与帧同步算法
位同步解决的是“每个符号在什么时刻采样”。水下接收机常用两类方法:
- 早迟门(Early-Late Gate):在符号周期的早、迟两个时刻分别采样,比较能量差,误差信号驱动采样相位调整。实现简单,适合中等信噪比。
- Gardner 算法:每符号两个采样点,利用相邻符号的定时误差检测,对载波相位不敏感,适合水下多普勒引起的缓慢定时漂移。
帧同步则是在位同步基础上确定帧边界。典型做法是对同步字做滑动相关,当相关值超过门限且与前一前导峰的时间间隔落在 [T_min, T_max] 窗口内时,锁定帧起点。锁定后进入跟踪状态,用帧头 CRC 与帧尾 CRC 双重校验确认同步是否正确。
下面用一段伪代码说明“前导检测 + 同步字确认 + 帧头校验”的判定逻辑(示例参数,非实测结果):
threshold = 8 * noise_std # 检测门限,示例值
peak = sliding_correlate(rx, preamble)
if peak > threshold:
t0 = peak.position
sync_val = correlate(rx[t0+len(preamble) : t0+len(preamble)+24], sync_word)
if sync_val > sync_threshold and in_window(t0, last_frame_time):
header = demod(rx, t0 + len(preamble) + 24, 32)
if header_crc_ok(header):
frame_len = header.length
payload = demod(rx, ..., frame_len)
if frame_crc_ok(payload):
accept_frame(payload) # 同步确认
else:
enter_resync() # 载荷校验失败,触发重同步
else:
enter_resync() # 帧头校验失败,丢弃候选帧
四、同步丢失的恢复策略
水下信道中同步丢失是常态而非异常,常见诱因包括:强多径导致相关峰分裂、多普勒使定时漂移超出跟踪范围、突发噪声抬高虚警、长静默后时钟漂移累积。恢复策略应分层设计:
- 短时失锁(跟踪环失锁):保持帧计数与定时估计,扩大早迟门搜索范围,用下一帧前导码重新捕获,通常 1~2 帧内恢复。
- 帧同步丢失(连续 CRC 失败):连续 N 帧(如 N=3)帧头或帧尾校验失败,判定为帧同步丢失,清空当前帧状态,回到“搜索前导码”状态,重新执行捕获流程。
- 长时间失步(时钟漂移):启用保护间隔与更长的前导码,或周期性插入“重同步帧”,以已知序列重新校准采样时钟与帧边界。
- 虚警抑制:对候选帧执行“双峰确认 + 帧头 CRC + 帧尾 CRC”三级校验,任一级失败即丢弃,避免错误帧进入上层协议。
综上,成帧与同步是一个“检测—确认—跟踪—恢复”的闭环:帧定界方法决定边界识别的鲁棒性,前导码与同步字决定捕获灵敏度与虚警水平,位/帧同步算法决定跟踪精度,而失步恢复策略决定系统在恶劣信道下的持续可用性。四者需联合设计,任何一环的短板都会在长时通信中暴露为吞吐下降或帧丢失。