网格编码调制 (TCM) 8PSK 发射端仿真系统
项目介绍
本项目是一个基于 MATLAB 开发的网格编码调制(Trellis Coded Modulation, TCM)发射端仿真模型。该系统将纠错编码与多进制调制进行有机结合,具体采用了 2/3 码率的卷积编码与 8PSK(八进制相移键控)调制。其核心目标是在不扩展信号带宽的前提下,通过增大信号序列间的欧氏距离来提升系统的抗噪声性能。该模型完整展示了从比特流产生到复数基带信号映射的整个物理层处理流程。
功能特性
- 数据生成:自动生成随机二进制信息流,并根据码率要求进行符号分组。
- 卷积编码:实现了一个 4 状态的线性卷积编码器,产生系统位与校验位。
- 集合分割映射:基于 Ungerboeck 准则的 8PSK 星座映射,优化符号间的最小欧氏距离。
- 可视化展示:实时绘制 8PSK 复数星座图以及 I/Q 分量的基带波形。
- 参数统计:统计仿真符号总数并计算输出信号的平均功率。
使用方法
- 确保计算机已安装 MATLAB 环境(推荐 R2016b 及以上版本)。
- 在 MATLAB 命令窗口中直接运行脚本。
- 运行结束后,程序将在命令行窗口输出前 5 个符号的编码细节,并弹出两张图形窗口,分别展示星座图分布和时域波形。
系统要求
- 软件环境:MATLAB
- 硬件要求:支持 MATLAB 运行的标准计算机,无需特殊工具箱支持。
实现逻辑说明
程序遵循标准的物理层发射机处理逻辑,具体步骤如下:
1. 参数初始化
系统预设输入比特数为 2000 位,符号映射阶数为 8 (8PSK)。卷积编码器码率为 2/3,意味着每输入 2 个比特会产生 3 个编码输出比特。
2. 序列生成与分组
利用伪随机过程生成原始比特序列,并将该序列每 2 个比特分为一组(Input Pairs),准备进入编码逻辑。
3. TCM 卷积编码逻辑
编码器采用 4 状态设计,其内部寄存器初始状态为 [0, 0]。
对于每一组输入比特 [x1, x2]:
- 直通路径:比特 x2 直接映射为输出 y2,比特 x1 直接映射为输出 y1(系统位)。
- 校验路径:比特 x1 进入反馈移位寄存器电路。校验位 y0 取自当前寄存器状态的末尾。
- 状态转移:根据输入比特 x1 与当前寄存器第一位的模二加结果更新状态。
4. Ungerboeck 集合分割映射
这是 TCM 的核心步骤。映射逻辑将编码后的 3 位二进制数 [y2, y1, y0] 转换为 8PSK 的相位索引。
- 程序首先将 [y2, y1, y0] 转换为十进制数值。
- 使用预定义的映射向量 [0, 4, 2, 6, 1, 5, 3, 7] 进行索引重排。这一逻辑确保了 y0 比特能将星座图划分为两个具有最大欧氏距离的子集。
- 最终将索引转换为对应的复数点:exp(j * phase_idx * pi / 4)。
5. 信号可视化与输出
- 星座图中:绘制所有生成的复数符号点,并用红色数字标注出 0 到 7 号标准 phase 对应的点位。
- 时域波形中:以阶梯图形式展示前 50 个符号的同相(I)和正交(Q)分量,体现信号相位随时间的变化。
关键函数与算法细节
- 线性反馈逻辑:编码器通过简单的加法(mod 2)和移位操作实现状态转移,这模拟了硬件电路中的触发器工作方式。
- 欧氏距离最大化:集合分割映射向量不是简单的二进制顺序映射,而是通过特定的排列,使得编码器输出之间路径度量最小的序列在星座图上拥有最大的空间间隔,从而在译码端获得编码增益。
- 基带复映射:使用欧拉公式(cos + j*sin)将相位信息转化为可在复平面表示的基带信号,为后续信道传输模拟奠定基础。