基于MATLAB的高性能Turbo码编解码仿真实验平台
项目介绍
本项目是一个全功能的MATLAB仿真环境,致力于评估和研究Turbo码在AWGN(加性高斯白噪声)信道下的纠错性能。系统构建了一个符合业界标准的并行级联卷积码(PCCC)框架,涵盖了从信源生成、符号编码、删余处理、信号调制到信道模拟,以及核心的迭代译码的全流程仿真。通过该平台,用户能深入观察Turbo码在不同信噪比下的误比特率(BER)表现,尤其是其著名的“瀑布区”性能特性。
功能特性
- 灵活的码率配置:系统支持1/3原始码率以及通过删余逻辑实现的1/2码率,能够模拟不同带宽效率下的通信需求。
- 高精度译码算法:核心译码器实现了完整的SISO(软输入软输出)架构,支持Log-MAP(对数域最大后验概率)算法以及计算复杂度更低的Max-Log-MAP算法,兼顾了译码精度与运算效率。
- 动态迭代机制:支持自定义迭代次数(默认最大6次),并能实时统计并对比不同迭代轮次对纠错增益的提升。
- 严谨的统计评估:仿真流程引入了最小错误数跳出机制和最大帧数限制,确保在统计意义上误码率计算的准确性。
- 可视化分析:自动生成多曲线对比图,直观展现随着信噪比提升和迭代次数增加时系统性能的演进。
系统逻辑流程
系统仿真遵循标准的数字通信链路模型,具体步骤如下:
- 参数初始化:配置信息帧长(1024比特)、寄存器个数、生成多项式(反馈13,前向15)、信噪比范围及译码算法类型。
- 交织器设计:生成伪随机交织序列及其对应的解交织映射表,用于打破连贯错误。
- Turbo编码:
- 信息位通过分量码1产生校验位1。
- 信息位经过随机交织后,通过分量码2产生校验位2。
- 根据删余标志位,将系统位与校验位进行复用拼接。
- 信道传输:
- 采用BPSK调制(0映射为1,1映射为-1)。
- 计算对应码率下的噪声方差,向信号注入AWGN噪声。
- 软解调与处理:计算接收信号的对数似然比(LLR),并根据删余模式进行去删余处理,在缺失位置补0以进行软信息恢复。
- 迭代译码核心循环:
- 译码器1接收系统位与分量码1的校验位,计算外信息。
- 将外信息交织后作为译码器2的先验信息。
- 译码器2接收交织后的系统位与分量码2的校验位,计算新的外信息。
- 将外信息解交织后反馈回译码器1,循环往复。
- 判决与统计:在每次迭代后进行硬判决,统计误比特数。
关键算法与实现细节
- 分量码结构:采用递归正规卷积码(RSC),约束长度为4。实现中利用了MATLAB自带的规范化格图描述,确保编码状态转移的严谨性。
- 删余逻辑实现:
- 在1/2码率模式下,系统交替保留分量码1和分量码2产生的校验位(例如保留P1的奇数位和P2的偶数位),从而在不改变基本编码算法的前提下提高码率。
- SISO译码器核心(Alpha-Beta-Gamma递推):
-
Gamma(分支度量):基于接收到的软信息计算状态转移的似然度。
-
Alpha(前向递推):从初始状态出发,遍历格图计算到达各状态的累积概率。
-
Beta(后向递推):从结束状态出发,反向计算从各状态到达终点的累积概率。
-
归一化处理:在Alpha和Beta的递推过程中,通过减去最大值的方法有效地防止了浮点数溢出,保证了算法的稳定性。
- 对于Log-MAP,使用 $max(a, b) + log(1 + exp(-|a-b|))$ 修正项来逼近精确的指数算和。
- 对于Max-Log-MAP,则简化为纯粹的 $max(a, b)$ 运算,大幅降低了硬件实现的复杂度。
使用方法
- 确保计算机安装有MATLAB环境(建议包含Communications Toolbox以支持格图相关函数)。
- 打开仿真主脚本,根据需要修改仿真参数(如
params.K 调整帧长,params.algorithm 切换算法类型)。 - 直接运行脚本,MATLAB命令行窗口将实时显示当前信噪比、仿真进度以及误码率数据。
- 仿真结束后,系统将自动弹出BER性能分析曲线图。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 核心工具箱:Communications Toolbox(用于
poly2trellis, convenc 等函数的调用)。 - 硬件环境:建议具备 8GB 以上内存,由于Turbo迭代译码计算量大,多核CPU将有助于缩短仿真时间。