空时块码-卷积码级联系统仿真项目
项目介绍
本项目实现了一个基于2×2 MIMO-OFDMA架构的无线通信仿真系统。该系统通过级联空时块码(STBC)与卷积码,结合交织技术和OFDM调制,旨在对抗多径衰落信道下的突发错误并提高通信链路的可靠性。系统模拟了完整的信号传输链路,包含了从比特生成到接收端最优译码的全过程,并重点对比了不同信道估计技术对系统误码率(BER)性能的影响。
功能特性
- 多天线配置:采用2发射天线与2接收天线(2Tx-2Rx)的典型MIMO架构。
- 级联纠错编码:集成 (2,1,3) 卷积码与随机交织器,有效应对衰落信道。
- 分集技术:利用 Alamouti 空时块码实现发射分集,增强信号的鲁棒性。
- OFDMA调制:支持多子载波映射、导频插入及循环前缀(CP)处理,有效抵御符号间干扰(ISI)。
- 复杂信道模型:内置标准 SUI-3 信道模型,模拟真实的多径时延与功率分布。
- 高性能译码:接收端采用 Log-MAP 算法进行软判决译码,达到极高的信息恢复精度。
系统要求
- 运行环境:MATLAB R2016a 或更高版本。
- 依赖工具箱:通信系统工具箱(Communication Toolbox)。
使用方法
- 打开 MATLAB 软件。
- 将仿真主程序及相关辅助功能逻辑置于同一工作目录下。
- 在命令行窗口直接运行仿真主程序。
- 程序将自动进行不同 SNR 条件下的循环计算,并最终输出理想信道估计与 LS 信道估计下的误码率对比曲线图。
详细实现逻辑与功能说明
主程序按照以下流程循环执行仿真工作:
1. 信号发射端处理
- 信息生成:根据子载波数量生成原始随机比特序列。
- 卷积码编码:使用 (2,1,3) 多项式 [7, 5] 对原始比特进行 1/2 码率的卷积编码。
- 交织处理:对编码后的比特流进行随机交织,打乱错误分布以对抗衰落带来的突发错误。
- QPSK调制:将交织比特映射为 QPSK 符号。
- STBC编码:按照 Alamouti 结构,将每两个连续符号映射为 2x2 的空时矩阵输出。
- OFDMA成帧:
- 将数据符号填充至有效子载波范围内(共400个子载波)。
- 每隔8个子载波插入一个已知导频符号。
- 通过 512 点 IFFT 将频域信号转为时域信号。
- 在每个 OFDM 符号前添加长度为 64 的循环前缀(CP)。
2. 信道模拟
- SUI-3 信道生成:构建包含 3 条路径的衰落信道,各路径具有特定的时延(0, 0.4, 0.9μs)和功率(0, -5, -10dB)。
- MIMO 传输:信号通过 2x2 的 MIMO 环境,每个收发对之间均为独立的瑞利衰落路径。
- 加性噪声:根据设定的信噪比(SNR)向接收信号添加高斯白噪声。
3. 接收端处理
- OFDM解调:去除 CP 并进行 512 点 FFT 运算,将接收信号恢复至频域。
- 信道估计:
-
理想估计:利用已知的信道冲击响应进行 FFT 变换得到完美的信道频率响应。
-
LS 估计:在导频位置利用最小二乘法(LS)计算估计值,并通过线性插值补全数据子载波位置的信道参数。
- 结合估计的信道矩阵,对接收信道进行线性合并。
- 计算各比特的对数似然比(LLR),将复数空间信息转化为软判决比特信息。
- 对 LLR 序列进行去交织处理以恢复原始逻辑顺序。
- 调用卷积码 MAP 译码器进行 SISO(软入软出)译码。
关键算法与实现细节
1. Alamouti 合并算法
系统在接收端通过合并多径接收信号,利用空间正交性提取发射符号的估计值。算法考虑了 2x2 架构下的所有四个信道链路(h11, h12, h21, h22),极大地提高了分集增益。
2. 对数似然比(LLR)计算
在解调阶段,系统不仅仅进行硬判决,而是根据接收信号的能量、信道增益以及噪声方差(sigma^2)计算每个比特的 LLR。这为后续的 MAP 译码器提供了可靠的软输入信息。
3. Log-MAP 译码器
译码部分采用了数值稳定的 Log-MAP 算法:
- 分支度量(Gamma)计算:通过输入比特序列与格形图输出对比得出。
- 状态度量递归(Alpha & Beta):分别进行正向与反向遍历,利用
log_sum_exp 函数防止计算过程中的数值溢出。 - 后验概率输出:结合 Alpha、Beta 和 Gamma 计算最终的软输出电平,并通过符号判定恢复原始比特。
4. SUI-3 相关信道建模
项目实现了专门针对固定宽带无线接入的 SUI-3 信道及其采样。通过将多径延迟映射到采样点(Tap),精确模拟了频率选择性衰落对 OFDMA 系统各子载波的不同影响。