基于MAP算法的Turbo码仿真系统
项目介绍
本项目是一个在MATLAB环境下开发的Turbo码链路仿真系统。该系统实现了高性能的纠错码仿真,核心采用了Log-MAP算法,旨在验证Turbo码在不同信噪比(Eb/No)环境下的误码率(BER)性能。通过两个1/2码率的递归系统卷积码(RSC)并行级联,系统构建了标准的1/3码率Turbo码结构,并利用迭代译码技术逐步逼近香农极限,展现了现代信道编码技术的纠错能力。
功能特性
- 完整的链路仿真:涵盖了信息生成、Turbo编码、BPSK调制、AWGN信道模拟、迭代译码以及性能统计的全过程。
- 高性能译码算法:实现了Log-MAP(对数域最大后验概率)算法,相比传统的SOVA算法具有更高的译码增益。
- 灵活的参数配置:支持自定义帧长、迭代次数、信噪比范围以及仿真停止准则。
- 递归系统卷积码(RSC):采用八进制生成多项式(5/7),支持复杂的格图状态转移逻辑。
- 随机交织技术:通过随机置换序列打破码字间的相关性,提高纠正突发错误的能力。
- 可视化分析:系统能够自动绘制BER随信噪比变化的曲线,以及固定信噪比下的迭代收敛曲线。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 硬件要求:由于Log-MAP算法涉及大量指数与对数运算及矩阵操作,建议配备主流CPU以保证仿真速度。
详细实现逻辑
仿真流程控制
系统通过嵌套循环进行仿真。外层循环遍历预设的信噪比范围,中层循环执行蒙特卡洛仿真(直到达到最大帧数或足够的错误比特数),内层循环则执行指定的迭代译码次数。
编码端逻辑
编码部分由两个相同的RSC编码器组成。原始信息序列直接送入第一个编码器产生校验位;同时,信息序列经过一个随机交织器后送入第二个编码器产生第二组校验位。最后将系统位和两组校验位拼接,形成1/3码率的输出。
信道模型
系统采用BPSK调制方案(将比特0映射为1,比特1映射为-1),随后在信号中加入加性高斯白噪声(AWGN)。噪声功率根据当前的Eb/No和码率进行动态计算。
译码端逻辑(SISO译码器)
译码是系统的核心,采用了Log-MAP算法实现双软输入软输出(SISO)结构。
- 格图预处理:计算编码器的状态转移表、输入输出比特关系以及反向格图结构。
- 前向递归:计算Alpha度量,表示从初始状态到达当前时刻各状态的对数概率。
- 后向递归:计算Beta度量,表示从终止状态回到当前时刻各状态的对数概率。
- 似然比计算:结合Alpha、Beta和分支度量Gamma,计算每个比特的对数似然比(LLR)。
- 迭代更新:两个分量译码器通过交换外信息(Extrinsic Information)进行协作。第一个译码器的输出经交织后作为第二个译码器的先验信息,第二个译码器的外信息经解交织后回传。
关键算法与函数分析
Log-MAP 核心算法
为了避免概率运算中的数值下溢并简化计算,译码过程全部在对数域完成。算法利用Jacobian对数公式(Max-Star运算)处理指数求和问题,确保了极高的运算精度。
Max-Star 运算
该运算实现了ln(exp(x) + exp(y))的精确计算。算法通过取x和y的最大值加上一个修正项(log(1+exp(-|x-y|)))来完成,这在保持精度的同时比直接指数运算更稳定。
格图状态转移
编码器使用状态寄存器记录反馈回路的状态。系统根据生成多项式(G=[1, 5/7])建立状态转移矩阵,包含当前状态在输入0或1下的次态,以及对应的输出比特。这为译码器提供了前向和后向计算的基础。
误码率统计与可视化
系统在每次迭代后都会记录当前的误码数,并计算BER。仿真结束后,会自动生成两张图纸:一张显示不同迭代次数下的性能曲线(体现迭代增益),另一张展示最高信噪比下的收敛速度,用于评估译码效率。
使用方法
- 打开MATLAB软件,将当前工作目录设置为本项目所在的文件夹。
- 在命令行窗口直接输入主入口程序名称并回车。
- 观察命令行窗口实时输出的Eb/No进度和对应迭代次数的误码率数据。
- 等待所有信噪比计算完成后,系统将自动弹出两个直观的仿真结果分析图表。