2、信道特性:多径效应、码间干扰(ISI)、信道模型与仿真归纳总结
2.1 多径效应:信号为什么会"分身"
发射机到接收机之间,很少有干净的一条直线。城市里的高楼、室内的墙壁、甚至移动的车辆,都会让信号反射、散射、绕射。结果就是——接收端收到的不是单个信号,而是多个副本的叠加。
每个副本的到达时间不同,幅度也不同。这种现象,就是多径效应。我记得第一次在实际系统中看到多径效应,是在一个室内定位项目里。测距误差动不动就十几米,根本没法用。后来才发现,是反射路径干扰了直射路径的检测。
多径效应的几个关键特征:
- 时延扩展:最早和最晚到达路径的时间差。用 τmax 表示。
- 频率选择性衰落:当时延扩展大于符号周期时,不同频率分量衰落不同。
- 相干带宽:Bc ≈ 1 / τmax。信号带宽超过它,就会产生失真。
2.2 码间干扰(ISI):符号之间的"打架"
多径会导致什么?说白了,就是前一个符号的延迟副本,和后一个符号的主路径叠加在一起。符号之间互相干扰,就是码间干扰,简称ISI。
为什么会这样?因为多径时延扩展 τmax 超过了符号周期 T。前一个符号还没收完,后一个符号就到了。接收端在采样时,取到的是多个符号的混合值。
我曾在调试一个接收机时,眼图几乎是闭合的。误码率怎么都降不下来。查了两天,最后发现是多径时延刚好等于符号周期的0.8倍,ISI严重到直接把眼图"堵死"了。换了个均衡算法,问题才解决。
衡量ISI严重程度有几个常用指标:
- 时延扩展 / 符号周期:τrms / T。比值越大,ISI越严重。
- 眼图张开度:眼图垂直方向的开度,反映噪声容限。
- 误码率(BER):最直接的衡量指标。
2.3 信道模型:如何用数学描述现实
做仿真不能只靠"感觉"。我们需要数学模型来描述信道。常见的信道模型有以下几种:
| 模型 | 适用场景 | 核心特点 | 关键参数 |
|---|---|---|---|
| AWGN | 理想信道、卫星链路 | 仅加性高斯噪声,无多径 | SNR |
| 瑞利衰落 | 城市环境、无直射路径 | 包络服从瑞利分布,相位均匀 | 多径时延、多普勒频移 |
| 莱斯衰落 | 有直射路径的郊区、微蜂窝 | 包络服从莱斯分布,有主径 | K因子(直射/散射功率比) |
| 多径信道(抽头延迟线) | 宽带通信、OFDM系统 | 多个可分辨路径,频率选择性 | 抽头数、时延谱、功率谱 |
我个人习惯用瑞利模型来仿真城市环境。如果场景中有明显的视距路径,比如 rooftop 基站对地面终端,就换莱斯模型,K因子设在 6-10 dB 之间。
多径信道模型的核心结构是抽头延迟线(TDL):
h(t) = Σ αᵢ · δ(t - τᵢ)
每个抽头对应一条可分辨路径,αᵢ 是复衰落系数,τᵢ 是时延。
2.4 信道仿真:把理论跑起来
光讲理论不过瘾,得动手。下面是一个简单的多径信道冲激响应仿真片段:
# 多径信道冲激响应仿真(Python风格)
import numpy as np
# 定义路径参数:时延(us)和衰减系数
tau = [0.0, 0.8, 2.1, 3.5] # 时延,单位 us
alpha = [0.9, 0.5, 0.3, 0.15] # 幅度衰减
# 构建离散冲激响应(采样率 10 MHz)
fs = 10e6
Ts = 1 / fs
h_len = 50
h = np.zeros(h_len)
for i in range(len(tau)):
idx = int(round(tau[i] * 1e-6 / Ts))
if idx < h_len:
h[idx] = alpha[i]
# 查看时延扩展
tau_max = max(tau) - min(tau)
print(f"最大时延扩展: {tau_max:.2f} us")
这个例子只有4条路径,但已经能看出ISI的基础成因。你想想看,如果符号周期是1us,而时延扩展是3.5us——那一个符号会"拖尾"到后面3-4个符号上,ISI就不可避免地产生了。
我建议你在仿真时先用简单模型跑通链路,再逐步增加路径数。不要一上来就搞12条路径,调试起来你会崩溃的。