Turbo均衡算法仿真系统 (MATLAB)
项目介绍
本项目是一款基于MATLAB开发的高级通信物理层仿真系统,旨在实现并验证Turbo均衡技术在强多径衰落信道下的性能。系统严格遵循迭代信号处理理论,通过均衡器与译码器之间软信息的循环交互,有效对抗符号间干扰(ISI)。该仿真环境完美复现了发送端编码调制、具有严重频率选择性衰落的多径信道、以及接收端基于BCJR算法的迭代检测过程。
功能特性
- 高性能均衡算法:实现了基于Log-MAP域的BCJR(Bahl-Cocke-Jelinek-Raviv)软输入软输出均衡算法,能够有效处理有限状态马尔可夫过程。
- 系统级链路仿真:涵盖了随机位生成、卷积编码、交织、BPSK调制、ISI信道建模、加性高斯白噪声(AWGN)注入及迭代接收的完整过程。
- 动态性能分析:支持多信噪比点运行,自动统计并生成不同迭代次数下的误码率(BER)变化曲线。
- 数学精度:采用Jacobian对数近似(Max-Star)技术,在对数域完成概率运算,保证了计算的数值稳定性和理论准确性。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 工具箱要求:Communications Toolbox(用于卷积编码相关函数)。
实现逻辑与仿真流程
系统通过一个嵌套循环结构运行:外层循环遍历不同的信噪比(SNR)值,内层循环执行指定次数的Turbo迭代。
1. 发送端处理
- 信源生成:产生指定长度(2048位)的随机二进制序列。
- 卷积编码:采用约束长度为3,生成多项式为[7 5]八进制的1/2码率卷积码。
- 随机交织:利用随机置换索引对编码后的比特进行交织,通过打乱原始顺序来对抗信道突发错误。
- BPSK映射:将二进制比特0映射为-1,1映射为1。
2. 物理信道模型
- 强多径环境:采用经典的Proakis B信道冲激响应[0.407, 0.815, 0.407]模拟严重的频率选择性衰落。
- 能量归一化:对信道系数进行归一化处理,确保信号功率的一致性。
- 噪声注入:根据设定的Eb/N0计算噪声方差,并向通过ISI信道后的信号添加高斯白噪声。
3. 接收端迭代处理 (核心环节)
- 初始状态:首轮迭代时,均衡器的先验信息初始化为零。
- 软输入软输出均衡:均衡器接收观测信号和先验信息,利用BCJR算法计算总对数似然比(LLR)。随后提取出外信息,并经过解交织后传送给译码器。
- 软输入软输出译码:译码器接收解交织后的信息作为先验,再次利用BCJR算法针对卷积码格图进行运算。
- 反馈闭环:译码器产生的针对编码比特的外信息通过交织处理后,作为下一轮迭代中均衡器的先验输入,实现知识的“精炼”。
- 硬判决:在每轮迭代结束后,对译码器的总信息进行判决计算当前的误码率。
关键算法说明
SISO均衡处理函数
该功能模块通过Log-MAP算法对ISI信道的格图进行前向(Alpha)和后向(Beta)递归运算。它首先根据信道冲激响应构建状态转移表,并为每个时刻的分支计算度量值。均衡器不仅利用当前的接收信号,还充分融合了来自译码器的反馈先验。
SISO译码处理函数
该模块专门针对(2,1,3)卷积码进行软信息提取。它分别计算信息位和校验位的LLR,并重点输出用于迭代更新的外信息。通过剥离输入先验,确保反馈给均衡器的是新增加的有用概率信息,避免正反馈导致的收敛错误。
Max-Star数学运算
所有概率运算均在对数域通过该函数完成。它利用log(exp(a) + exp(b)) = max(a, b) + log(1 + exp(-|a-b|))的关系式,避免了直接在概率域进行乘除法带来的数值溢出问题,极大提升了仿真系统的鲁棒性。
使用方法
- 打开MATLAB,将当前工作路径设置为系统文件所在目录。
- 直接运行仿真脚本。
- 系统将会在命令行窗口实时显示当前正在处理的信噪比进度。
- 仿真结束后,会自动弹出误码率曲线图,并以表格形式在终端输出不同SNR及不同迭代次数下的详细BER统计数据。