基于Log-MAP与SOVA算法的Turbo码编解码仿真系统 README
项目介绍
本项目是一个专门用于研究和评估Turbo码性能的MATLAB仿真平台。系统核心聚焦于两种主流的译码算法:Log-MAP(对数域最大后验概率)算法与SOVA(软输出维特比)算法。通过模拟完整的通信链路(包含编码、调制、信道传输、迭代译码及性能统计),本项目深入揭示了Turbo码在加性高斯白噪声(AWGN)信道下的纠错能力、迭代收敛特性以及不同译码算法在计算精度与复杂度之间的权衡。
功能特性
- 双算法驱动引擎:集成了高精度的Log-MAP译码器和低复杂度的SOVA译码器,支持对比两者的误码率(BER)性能。
- 灵活的编码结构:采用标准并行级联卷积码(PCCC)结构,使用两个递归系统卷积(RSC)编码器,默认码率为1/3。
- 迭代过程可视化:系统不仅提供最终的性能曲线,还能记录并展示每一次迭代后的误码情况,直观呈现Turbo码的“瀑布区”效应。
- 自动化仿真流程:支持自动遍历指定的信噪比(Eb/No)范围,并在达到目标错误比特数或最大帧数后自动收敛。
- 参数化配置:允许用户自定义帧长度、生成多项式、迭代次数以及SOVA更新窗口大小。
系统逻辑与实现细节
系统的主控程序严格遵循以下仿真流程:
- 参数初始化
系统配置格型递归编码器的生成多项式(默认为 [5, 7] 八进制),设定每一帧的位数为512位,并定义信噪比扫描范围(0至2.5 dB)。
- 编码阶段
*
原始数据生成:产生等概率分布的随机二进制序列。
*
随机交织:利用随机排列向量对原始比特进行位置置换,以打破错误图样的相关性。
*
RSC编码:原始数据经过第一个递归卷积编码器产生第一组校验位;交织后的数据经过第二个相同的编码器产生第二组校验位。
*
序列组装:将系统位、第一组校验位和第二组校验位合并,形成1/3码率的待传输序列。
- 信道传输
*
调制:采用二进制相移键控(BPSK)调制,将0映射为1,1映射为-1。
*
加噪:根据当前信噪比计算对应的噪声标准差,在信号中叠加强度明确的AWGN背景噪声。
- 迭代译码阶段
*
信道值处理:计算信道可靠性因子,将接收到的连续信号值转化为译码器所需的固有信息(Intrinsic Information)。
*
Log-MAP译码路径:在对数域中通过前向递归(Alpha)、后向递归(Beta)及分支度量(Gamma)计算,利用MAX星运算精确修正概率值,不断交换外外信息(Extrinsic Information)。
*
SOVA译码路径:执行标准的维特比前向路径搜索,记录各状态的度量差值;在回溯过程中利用软信息更新窗口,根据幸存路径与竞争路径的度量差异估计比特可靠性。
*
交互迭代:两个分量译码器互为先验,通过交织与去交织操作,在多次迭代中逐步提升硬判决的准确性。
- 结果统计与绘图
* 统计各SNR点下不同算法、不同迭代次数的误码率。
* 绘制BER-Eb/No曲线图,展示Log-MAP与SOVA在首末次迭代的性能差异。
* 绘制收敛特性图,分析算法随迭代次数增加而性能提升的趋势。
关键函数与算法分析
- 格图构造算法:负责将多项式转换为状态转移表。它计算每个状态在输入0或1时的次态、产生的校验位,并预先存储格图结构,为译码器的遍历提供拓扑依据。
- RSC编码器内核:实现反馈电路逻辑,确保编码器生成的序列具有无穷冲击响应特性。
- Log-MAP核心算子:实现了Max-Star运算,通过 $max(a, b) + log(1 + exp(-|a-b|))$ 的方式,在对数域中完美保留了MAP算法的纠错精度,同时避免了直接乘法导致的数值溢出。
- SOVA软信息估计:在查找最优路径时记录竞争路径的信息。通过“路径度量差”来度量判决的可靠性,实现了一种计算开销较小但性能逼近MAP的准最优算法。其内部包含一个更新窗口(Window),用于平衡反馈时延与性能。
- 数据辅助工具:包含二进制向量与十进制索引之间的快速转换功能,用于加速状态搜索。
使用方法
- 启动MATLAB环境。
- 确保脚本内包含主函数及所有子函数(RSC编码、译码器、格图构造等)。
- 在主循环前修改仿真参数,例如:
* 修改
frame_length 调整数据帧大小。
* 修改
max_iterations 调整最大迭代次数。
* 修改
ebno_db 定义更宽或更细致的信噪比范围。
- 直接运行程序,系统将在任务栏打印实时仿真进度(包含当前SNR、仿真帧数及两种算法的实时BER)。
- 仿真结束后,程序将自动弹出两个图表窗口,直观展示实验结果。
系统要求
- MATLAB R2016a 或更高版本。
- 无需额外的工具箱支持(代码完全基于MATLAB基础语言编写,具有良好的兼容性)。