MATLAB实现GMR1标准TCH3信道1/2咬尾卷积码编解码系统
项目介绍
本项目是一个用于卫星移动通信GMR1标准的TCH3信道前向纠错(FEC)仿真系统。其核心实现在于咬尾卷积码(Tail-Biting Convolutional Code, TBCC)的编解码逻辑。该系统特别针对短帧传输设计,通过消除传统卷积码所需的归零比特(Zero-padding),在保持纠错性能的同时最大化频带利用率。系统提供了从随机源数据生成、编码、调制、信道模拟到译码及误码统计的完整链路仿真。
功能特性
- 符合GMR1标准:严格遵循GMR1 TCH3信道定义的编码参数,包括约束长度K=5和特定的生成多项式。
- 咬尾编码技术:实现了一种无需添加尾比特的编码方式,使编码效率严格等于1/2。
- 高性能译码算法:采用Wrap-Around Viterbi Algorithm (WAVA),通过双轮迭代策略高效解决咬尾卷积码的起始状态未知问题。
- 软判决处理:译码器采用软判决度量(点积运算),能够充分利用信道输出的概率信息。
- 自动化仿真分析:系统支持自动扫频(Eb/No),统计误码率(BER)并实时绘制性能曲线。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 工具箱需求:基础MATLAB功能即可运行,无需额外的通信工具箱(代码中手动实现了网格构造算法)。
系统实现逻辑
系统主函数按照以下步骤执行仿真流程:
- 参数初始化:定义信息长度为100比特,约束长度为5,状态数为16。设置仿真信噪比范围(0-6 dB)以及最大迭代帧数和错误停止门限。
- 网格图构建:在仿真开始前,系统预先计算并生成状态转移表和输出查找表,以提升后续编解码过程的效率。
- 噪声建模:根据当前的Eb/No值计算高斯白噪声的标准差,考虑到1/2码率和BPSK调制的映射关系。
- 仿真循环:
- 数据生成:产生随机二进制序列。
- 咬尾编码:利用序列末尾比特初始化寄存器状态。
- 调制与信道:执行BPSK映射并叠加AWGN噪声。
- 迭代译码:执行双轮维特比搜索,确定最大似然路径。
- 性能评估:累计误码比特数和总传输比特数。
- 数据可视化:仿真结束后,自动生成半对数坐标下的BER-Eb/No性能曲线。
关键算法与函数细节分析
网格表生成逻辑
该部分负责计算卷积码的内部结构。它遍历16个所有可能的状态,模拟输入0和1后的寄存器位移情况。根据GMR1的标准多项式(G1=1+X^3+X^4,G2=1+X+X^3+X^4)计算每个状态转换对应的输出比特。生成的结果被存储在矩阵中,供后续译码器快速检索。
咬尾编码实现
与标准卷积码将寄存器初值设为全0不同,本系统的编码逻辑实现了咬尾特性。它提取输入信息序列的最后4个比特(K-1)作为编码寄存器的初始值。这样做的目的是保证编码器在处理完整个序列后,其最终状态与初始状态完全一致,从而在网格图中形成一个闭环,消除对尾比特的需求。
Wrap-Around 维特比译码 (WAVA)
针对咬尾码起始状态不确定的特点,系统采用了WAVA算法。
其核心逻辑在于执行两次网格搜索:
- 第一轮搜索:从全0度量(或等概率分布)开始,贯穿整个长度为100的序列。这一轮的主要目的是为了让路径度量在序列结束时收敛到合理的分布,从而反映出真实的起始/结束状态概率。
- 第二轮搜索:将第一轮结束时的路径度量作为本轮的初始度量。在这一轮中,系统精准地记录路径记忆。
- 回溯处理:由于咬尾特性要求首尾状态一致,译码器在第二轮结束时寻找度量值最大的状态作为回溯起点。通过回溯路径记忆矩阵,反推得到最可能的原始信息序列。
软判决度量
在译码过程中,分支度量的计算采用了接收信号与标准BPSK星座点(1和-1)的点积(内积)。这种方法相比硬判决能提供约2-3dB的编码增益,在卫星通信的弱信号环境下具有更好的抗干扰性能。
使用方法
- 打开MATLAB软件。
- 将项目相关的脚本文件置于当前工作路径。
- 在命令行窗口直接调用主函数。
- 观察命令行输出的实时各信噪比下的误码率结果。
- 待仿真结束后,系统会自动弹出包含BER曲线的图形窗口。