基于Turbo码的信道编译码性能仿真系统
项目介绍
本项目是一个基于MATLAB开发的通信系统仿真平台,专注于分析Turbo码在加性高斯白噪声(AWGN)信道下的误码率(BER)性能。系统完整实现了从信源产生、递归系统卷积码(RSC)编码、交织、BPSK调制到信道传输,以及接收端的Log-MAP迭代译码全过程。该仿真系统能够量化信噪比(Eb/No)和迭代次数对译码质量的影响,是研究纠错编码理论及其算法实现的典型工具。
功能特性
- 标准Turbo编码结构:采用1/3码率结构,包含一个系统位和两个由递归系统卷积码生成的校验位。
- Log-MAP译码算法:在对数域实现BCJR算法,通过雅可比对数(Jacobian Logarithm)修正,在保证译码性能的同时避免了传统MAP算法中的浮点溢出问题。
- 多迭代统计:支持在同一仿真过程中提取不同迭代次数下的误码率数据(如1、2、4、6次迭代),以便直观对比迭代增益。
- 动态仿真终止机制:设置了目标错误数和最大仿真帧数双重控制,在保证统计精度的同时也兼顾了低信噪比下的仿真速度。
- 结果可视化:自动生成半对数坐标下的信噪比-误码率曲线图,清晰展现Turbo码的“瀑布区”性能。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 基础组件:无需外部工具箱,核心算法均采用原生MATLAB函数实现。
系统实现逻辑
- 参数配置:系统预设帧长为400比特,信噪比范围设定在0至2.5dB之间。仿真采用8状态RSC编码器,生成多项式使用标准配置。
- 状态表初始化:在仿真开始前,系统通过生成多项式逻辑自动计算所有可能的状态转移,生成状态转移矩阵、输出位图及输入位查找表,为后续编解码提供基础。
- 编码流程:
* 第一路RSC直接对原始信息序列进行编码,产生系统位和第一位校验。
* 通过随机交织器打乱信息序列顺序。
* 第二路RSC对交织后的序列进行编码,提取其校验位。
- 信道模拟:将编码后的0/1序列映射为BPSK符号,并在指定的信噪比下叠加高斯白噪声。
- 迭代译码:
* 两个Log-MAP译码器串联工作,并通过交织/解交织器交换外信息(Extrinsic Information)。
* 每个译码器计算分支度量(Gamma)、前向度量(Alpha)以及后向度量(Beta)。
* 在每一轮迭代结束后,计算对数似然比(LLR)并进行硬判决,统计当前迭代次数下的错误比特数。
- 数据处理:当所有信噪比点计算完成后,系统计算平均误码率并绘制多特征曲线。
关键环节分析
- 状态转移生成:通过移位寄存器反馈与向前多项式的异或逻辑,精准刻画8状态编码器的运行轨迹,这是实现RSC编码的核心。
- Log-MAP核心实现:全代码在对数域进行计算,利用 Jacobian 修正公式(max_star函数)处理 alpha 和 beta 的递归融合,既保留了最大后验概率算法的精确性,又优化了计算稳定性。
- 归一化处理:在 alpha 和 beta 的递推过程中实施动态归一化,有效防止了深度迭代过程中的数值溢出风险。
- 外信息传递机制:译码器之间仅交换外信息而非全信息,确保了迭代过程的收敛性和译码增益,体现了Turbo码的核心思想。
使用方法- 启动MATLAB并进入程序所在目录。
- 运行主仿真脚本。
- 命令行窗口会实时显示当前信噪比、迭代次数以及对应的误码统计信息。
- 仿真完成后,系统将自动弹出误码率性能曲线图,用户可根据图形分析不同参数配置下的性能差异。