Turbo码编解码仿真系统:Log-MAP与SOVA算法性能对比
项目介绍
本项目是一个基于MATLAB开发的完整Turbo码通信链路仿真系统。其核心目标是通过数学建模与仿真,深入对比两种主流的软输入软输出(SISO)译码算法:Log-MAP(对数极大后验概率)算法与SOVA(软输出维特比算法)。系统涵盖了从信源产生、RSC编码、交织并行级联、AWGN信道传输到迭代译码及性能评估的全过程,旨在验证Turbo码在接近香农极限下的纠错性能及不同算法的复杂开销。
功能特性
- 双算法实现:完整实现了Log-MAP和SOVA两种迭代译码核心算法,支持直接对比两者的误码率(BER)与运行效率。
- 端到端仿真:集成了信源生成、BPSK调制、加性高斯白噪声(AWGN)信道模拟以及多轮迭代译码。
- 自定义配置:用户可以灵活调整信息帧长度、信噪比范围(Eb/No)、最大迭代步数及终止仿真所需的最小错误数。
- 可视化分析:自动生成BER随信噪比变化的性能曲线,以及在特定信噪比下算法随迭代次数增加的收敛过程图。
- 运行效率统计:代码内置计时功能,实时反馈两种算法的总耗时,直观反映计算复杂度差异。
系统要求
- 软件环境:MATLAB R2016b 及以上版本。
- 硬件要求:建议主频2.0GHz以上,内存4GB以上(由于迭代译码计算量较大,较高配置可缩短仿真周期)。
逻辑实现方案
仿真系统遵循以下标准流程进行逻辑构建:
- 参数初始化
设置信息帧长(默认1024比特)、多项式系数[7, 5]、仿真信噪比步进及迭代次数(默认6次)。生成随机交织器序列,用于Turbo编码过程中的比特置乱。
- Turbo编码器
采用标准并联累加结构(PCCC)。输入比特流分为两路:
- 第一路进入第一个递归系统卷积码(RSC1)产生校验位。
- 第二路经过交织器置乱后,进入第二个递归系统卷积码(RSC2)产生另一组校验位。
最终输出包含系统位、校验位1和校验位2,形成码率约为1/3的编码流。
- 信道传输
采用BPSK调制方案,将逻辑比特映射至电平信号。仿真过程中向信号添加符合指定信噪比分布的加性高斯白噪声。
- 迭代译码过程
这是系统的核心部分,针对Log-MAP和SOVA分别执行以下循环:
- 分量译码器1:接收系统位和校验位1的信息,结合上一轮传递的先验信息(初值为0),产生外信息。
- 交织与传递:将外信息经过交织后作为分量译码器2的先验信息。
- 分量译码器2:接收交织后的系统位和校验位2的信息,产生新的外信息。
- 解交织与反馈:外信息解交织后反馈给译码器1,作为下一轮迭代的先验参考。
- 硬判决:每轮迭代结束后计算对数似然比(LLR)之和并进行判决,统计误码数。
关键函数与算法细节说明
RSC编码函数
实现了基于移位寄存器的递归卷积编码。利用反馈项和前馈项多项式对输入比特进行模2加运算,输出校验比特并更新状态寄存器。该函数保证了编码器的无限冲激响应(IIR)特性,是提高Turbo码增益的关键。
Log-MAP SISO译码函数
在对数域完成最大后验概率运算。主要步骤包括:
- Gamma计算:结合信道观测值和先验信息,计算各时间点所有分支的度量值。
- Alpha前向递推:计算从起始状态到达当前状态的累积概率得分。
- Beta后向递推:计算从终止状态回溯到当前状态的累积概率得分。
- 纠正项处理:利用Max-Star运算(包含对数修正项)来逼近真实的MAP概率分布,从而比纯Max-Log-MAP具有更好的误码率性能。
SOVA SISO译码函数
基于极大似然准则的软输出算法。通过维特比算法寻找最佳路径,并记录幸存路径与竞争路径之间的路径度量差值(Delta)。在回溯过程中,利用这些度量差值来修正输出比特的可靠度(软信息),虽然性能略逊于MAP类算法,但搜索效率更高。
状态转移工具函数
根据给定的多项式预先构建格型图(Trellis),包括前向状态转移表、后向状态转移表和对应的输出比特映射。该表格在译码初始化阶段生成,极大提升了后续迭代过程中的查找速度。
Max-Star运算函数
专门用于Log-MAP算法中的核心计算,实现了log(exp(a)+exp(b)) = max(a,b) + log(1+exp(-|a-b|))。通过引入对数修正项,在避免指数爆炸的同时,保留了高精度的概率融合结果。
使用方法
- 打开MATLAB软件,进入本项目所在的文件夹。
- 在命令行窗口直接输入主程序名并回车。
- 仿真开始后,控制台会实时显示当前Eb/No点的计算进度及两个算法的即时误码率。
- 仿真结束后,系统会自动弹出性能曲线图,对比Log-MAP与SOVA在不同信噪比下的增益差距以及迭代收敛速度。
- 检查控制台输出的耗时统计,评估算法的计算复杂度比率。