基于Chase算法的TPC乘积码编译码仿真系统
项目介绍
本项目是一个基于MATLAB开发的乘积码(Turbo Product Codes, TPC)编译码性能仿真平台。系统采用扩展BCH码作为分量码,通过二维结构构造乘积码,并实现了核心的Chase-II软判决译码算法。该系统能够模拟完整的通信链路,包括信息生成、TPC编码、BPSK调制、AWGN信道模拟、迭代Chase-II译码及误码率(BER)统计分析,旨在评估不同信噪比条件下乘积码的纠错性能。
功能特性
- 分量码构造:支持标准BCH码(如(15,11))并自动通过叠加偶校验位转化为扩展BCH码(如(16,11))。
- 二维乘积编码:实现行列交替编码,构造具有强纠错能力的二维码块。
- Chase-II软判决译码:核心译码器通过识别最不可靠位、生成测试序列、硬判决修正及竞争码字搜索,输出软信息(LLR)。
- 迭代译码机制:支持行列外信息的往复迭代,动态调整迭代因子(Alpha)以优化收敛性能。
- 性能可视化:自动生成Eb/No与BER的性能曲线图。
系统逻辑实现
1. 参数初始化与配置
系统首先定义分量码参数(n=15, k=11),并计算扩展后的总码长(16x16)和总信息位(11x11)。仿真配置包括Eb/No范围(2dB至5.5dB)、迭代次数(4次)、Chase测试位个数(p=3)以及错误停止阈值。
2. 编码流程
- 数据准备:生成随机的$k times k$信息矩阵。
- 行编码:对信息位矩阵的每一行进行BCH编码并增加偶校验位,生成$k times n$的中间矩阵。
- 列编码:对行编码后的矩阵(包括每一列)再次进行BCH编码及扩展,最终形成$n times n$的正方形TPC码块。
3. 信道传输
- 调制:将0/1码字映射为BPSK符号(1/-1)。
- 加噪:根据当前Eb/No和码率计算噪声标准差,向信号注入高斯白噪声。
4. 迭代Chase-II译码逻辑
译码过程在预设的迭代次数内循环执行,分为以下核心步骤:
- 软输入更新:每一轮迭代的软输入由原始接收信号和加权的上一轮外信息组成。
- 分量码译码:
*
寻找最不可靠位:在接收序列中找到绝对值最小(即距离判决门限最近)的$p$个位置。
*
测试序列生成:对这$p$个位置进行0/1组合,生成$2^p$个测试模式。
*
硬判决与纠错:对每个测试模式进行标准BCH硬判决译码,并重新计算校验位,形成候选码字集。
*
欧氏距离计算:计算接收向量与每个候选码字之间的欧氏距离。
*
最佳码字决策:选择距离最小的码字作为当前硬判决输出。
* 搜索每一个比特位的竞争码字(即在当前位与最佳码字相反且距离最近的码字)。
* 若存在竞争码字,基于两者距离差计算该位的LLR外信息;若不存在,则使用预设的可靠度系数进行估算。
- 循环迭代:先进行行译码并更新软值,随后进行列译码并更新软值,完成一次完全迭代。
5. 性能统计
每一帧解码后,提取左上角的$k times k$信息位,与原始数据对比计算误码数。当错误统计达到阈值或完成最大帧数后,计算并输出该信噪比下的BER。
关键函数与算法细节分析
Chase-II 译码核心 (chase_decode_core)
这是系统的核心算法实现。它不依赖于简单的硬判决,而是利用了信道的软信息。通过对最不稳定的$p$个比特进行扰动,算法能在硬判决译码器的帮助下探索最佳码字周围的多个候选点。通过比较候选码字的欧氏距离,算法能有效地逼近最大似然译码性能。
外信息计算与更新指标
代码中使用了Alpha向量 [0.0, 0.2, 0.3, 0.5, 0.7, 0.9, 1.0, 1.0] 作为迭代因子。这种动态加权策略能防止在迭代初期因外信息不可靠导致系统发散,随着迭代次数增加,外信息的权重逐渐提升。
扩展BCH处理 (extended_bch_encode)
系统在标准BCH编码基础上通过计算 mod(sum(c), 2) 手动添加偶校验位。这不仅提升了分量码的最小汉明距离,也使得Chase算法在寻找竞争码字时具有更高的准确度。
鲁棒性处理
在译码核心逻辑中,针对BCH硬判决译码可能失败的情况(如错误数超过纠错能力),系统设计了异常处理机制(try-catch),确保仿真流程不会中断,此时直接将当前的测试序列作为候选码字处理。
使用方法
- 确保安装了MATLAB环境以及Communications Toolbox(通信工具箱)。
- 将主程序代码放入MATLAB编辑器。
- 根据需要调整EbNo_dB范围或迭代次数等参数。
- 直接运行函数,程序将实时输出每个信噪比下的工作进度和BER数值。
- 运行结束后,系统将自动弹出仿真性能曲线图。
系统要求
- 软件环境:MATLAB R2018b 或更高版本。
- 必备工具箱:Communications Toolbox (用于执行bchgenpoly, bchenco, bchdeco等底层函数)。
- 硬件要求:建议8GB RAM以上,计算时间随信噪比降低及迭代次数增加而增长。