4. 训练序列设计:PN序列、CAZAC序列,长度与功率选择原则

训练序列这玩意儿,说简单也简单,说深了真能折腾人。我早年做单载波均衡时,选错序列类型,结果整个系统误码率直接下不去——嗯,那时候才意识到,序列设计不是随便填个伪随机数就行的。

说白了,训练序列主要用来做信道估计、同步和均衡器系数预训练。通信系统里常见两大类:PN序列和CAZAC序列。别急,咱们一个一个拆开看。

4.1 PN序列:工程里最皮实的选手

PN序列(Pseudo-Noise),我最常用的是m序列和Gold序列。m序列自相关性能好,只有一个主峰,这点在扩频系统里特别香。但m序列数量有限,比如7阶m序列才6条,多用户场景不够用。

我记得有一次做多用户上行信道估计,用户数一多m序列不够分,只好上了Gold序列。Gold序列由两个优选对m序列模2加生成,数量翻了几倍,互相关也还行。但代价是自相关性能稍微差一点——工程嘛,就是权衡。

小经验:如果系统里只有单用户或少数用户,优先选m序列,硬件资源省很多。用户数超过16个时,我开始考虑Gold或Walsh序列。

4.2 CAZAC序列:恒包络的稳定担当

CAZAC序列全称是恒包络零自相关序列,代表选手是Zadoff-Chu序列。这玩意儿在LTE/NR的PSS、SRS里是标配,为啥?因为它时域恒包络,峰均比(PAPR)低,功放效率高;自相关是完美的冲激函数,互相关也接近零。

我自己做个实验,同样长度64,ZC序列的自相关旁瓣比m序列低了将近10dB。这个差距在低信噪比下就是生死线。

% MATLAB 生成 Zadoff-Chu 序列(根索引 u=1,长度 N=63 质数)
N = 63;
u = 1;
n = 0:N-1;
zc_seq = exp(-1j * pi * u * n .* (n+1) / N);
% 检查恒包络:abs(zc_seq) 应全为 1
disp(['PAPR = ', num2str(max(abs(zc_seq).^2)/mean(abs(zc_seq).^2))]);
注意:ZC序列的长度必须为质数才能保持完美自相关。我曾经图省事用了非质数长度,结果自相关旁瓣多了几个零点几,均衡器收敛都变慢了。

4.3 长度选择原则:既不能长到浪费,也不能短到失效

长度L的选择,我总结三个硬约束:

  • 信道时延扩展约束:L必须不小于信道最大多径时延(以采样点计),否则循环前缀或保护间隔都盖不住。
  • 频率选择性约束:在OFDM系统里,L越长意味着频域采样越密,信道估计越准。但长度受限于资源块(RB)大小。
  • 开销约束:训练序列占用的时频资源不能超过总开销的10%,否则有效数据吞吐掉得厉害。

我通常在工程设计里按这个思路选:先估算信道最大时延扩展,比如城市环境5μs,采样率30.72MHz,对应约154采样点,那么L取128或256都行。再算一算开销,若一个子帧里放2个训练符号,开销约5%,能接受。

场景典型信道时延推荐L序列类型
室内小蜂窝0.1~0.5 μs16 ~ 32m序列 / ZC
城市宏站1~5 μs64 ~ 256ZC / Gold
郊区/山区5~20 μs256 ~ 1024ZC(质数长度)

4.4 功率选择原则:别让训练序列吃掉动态范围

功率这块,很多新人上来就把训练序列功率开到最大,觉得信噪比越高越好。其实不是。训练序列功率太大会导致数据符号的功率被压缩,整体系统的峰均比恶化,功放更容易饱和。

我自己有个原则:训练序列的功率与数据符号的平均功率保持同一量级,差值控制在0~3dB以内。当然,LTE/NR标准里SRS和PSS的功率是单独配置的,可以比数据高2~3dB,但那是因为它们不用同时发射。

另外,若使用CAZAC序列,恒包络可以让功放一直工作在最佳效率点。而PN序列有包络波动,功率回退(backoff)得更多。这一点在功率预算紧张的物联网场景里尤为重要。

4.5 序列选择流程图(知识体系)

训练序列选择流程 开始:确定系统参数 低PAPR要求? 选 CAZAC(ZC序列) 选 PN(m/Gold) 长度L ≥ 信道时延点数 功率:与数据符号同量级(±3dB) 序列设计完成 注意 ZC序列长度需为质数 PN序列需考虑互相关

4.6 实践避坑:我踩过的几个雷

  • PN序列的直流分量:有些m序列初相设置不对,会产生直流分量,导致时域同步误判。我习惯把初相全置1,生成后检查均值是否接近零。
  • ZC序列的根索引选择:不同根索引的ZC序列互相关不相同。我一般避开两个相邻根,比如u=1和u=N-1互相关最小,但u=1和u=2互相关就大一点。曾经因为用了相邻根,多用户干扰直接让SINR掉了3dB。
  • 功率分配过猛:有次为了提升信道估计精度,我把训练序列功率比数据高了6dB,结果功放饱和导致星座图扭曲,均衡器怎么调都调不过来——只能降功率重测。从那以后,我记住:功放动态范围是王道。
总结一下:训练序列选型不外乎看PAPR、自相关、互相关和长度约束。CAZAC适合对PAPR敏感的系统(如OFDM上行),PN适合扩频或简单单载波场景。长度以覆盖信道时延为底线,功率以不牺牲数据动态为上限。照着这个套路走,基本不会翻车。