MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 星座图重排与Chase合并HARQ性能对比仿真系统

星座图重排与Chase合并HARQ性能对比仿真系统

资 源 简 介

本项目旨在构建一个完整的无线通信链路仿真平台,深入研究并比较两种混合自动重传请求(HARQ)机制的性能差异:基于星座图重排(Constellation Rearrangement, CoRe)的HARQ方案与传统的Chase合并(Chase Combining, CC)方案。在高阶调制(如16QAM、64QAM)中,星座点的几何分布导致不同比特位的受保护程度(可靠性)不同。本项目利用MATLAB实现CoRe策略,通过在每次重传时使用预定义的、互补的星座图映射规则,确保数据比特在多次传输中能够遍历高可靠性和低可靠性的映射位置,从而平均化比特错误概率,优化解调后的对数似然比(LLR)。作为对比,项目同时实现了Chase合并方案,即重传完全相同的数据包,并在接收端进行最大比合并(MRC)以提高信噪比。仿真链路涵盖了随机信号产生、卷积编码或Turbo编码、QAM调制、星座映射变换、AWGN及瑞利衰落信道模型、软解调、HARQ缓冲与合并处理、以及信道解码等关键模块。系统将通过蒙特卡洛方法进行大量帧的迭代仿真,统计并计算在不同信噪比(SNR)环境下的误比特率(BER)、误块率(BLER)以及有效吞吐量,最终以图形化方式直观展示星座图重排策略相比于Chase合并技术在克服高阶调制非均匀性方面的性能增益。

详 情 说 明

星座图重排 HARQ 与 Chase 合并性能对比仿真系统

项目介绍

本项目构建了一个完整的无线通信链路仿真平台,专注于研究和对比在高阶调制(16QAM)环境下,两种混合自动重传请求(HARQ)机制的性能差异:

  1. 星座图重排 (Constellation Rearrangement, CoRe)
  2. Chase 合并 (Chase Combining, CC)

在 16QAM 等高阶调制中,由于星座点的几何分布特性,不同的比特位具有不同的错误保护能力(高可靠性与低可靠性位置)。本项目利用 MATLAB 对链路进行蒙特卡洛仿真,验证了 CoRe 策略通过在重传时改变比特到星座点的映射规则,平均化比特错误概率,从而相比传统的 Chase 合并技术获得显著的性能增益。

功能特性

  • 完整的通信链路仿真:涵盖随机信号生成、CRC校验、信道编码、调制、AWGN信道、软解调、HARQ合并、信道译码及误码统计。
  • 高阶调制支持:系统基于 16QAM 调制方案,模拟了非均匀星座点保护特性的环境。
  • 双 HARQ 策略对比
* Chase Combining (CC):重传完全相同的符号,接收端进行最大比合并(LLR 累加)。 * CoRe HARQ:重传时轮询使用预定义的 4 种不同星座映射表,优化 LLR 可靠性。
  • 信道编码:采用码率为 1/2 的卷积编码(K=7),配合 Viterbi 译码器。
  • 多维性能评估:通过统计误比特率 (BER)、误块率 (BLER) 和系统有效吞吐量 (Throughput) 来全方位评估系统性能。
  • 可视化展示:自动生成 BER、BLER 和吞吐量随 SNR 变化的对比曲线图。

系统要求

  • MATLAB R2016b 或更高版本
  • Communications Toolbox(通信工具箱)- 用于 CRC 生成、卷积编解码及 trellis 结构定义。

使用方法

  1. 启动 MATLAB 并将工作目录切换到项目文件夹。
  2. 在命令行窗口输入 main 或点击运行按钮执行主函数。
  3. 程序将依次仿真预设的 SNR 点(0dB 至 16dB),并在控制台实时输出每个信噪比下的 CC 和 CoRe 的统计结果。
  4. 仿真结束后,系统将弹出一个绘图窗口,分别展示 BER、BLER 和吞吐量的对比曲线。

代码分析与实现细节

本项目的核心逻辑封装在 main.m 文件中,以下是基于实际代码内容的详细分析:

1. 系统参数配置

系统首先初始化关键参数:
  • 调制方式:16QAM (M=16),每符号携带 4 比特。
  • 信道编码:使用 poly2trellis(7, [171 133]) 定义的卷积码,回溯长度设为 35。
  • 数据结构:每帧数据包包含 500 个信息比特,使用 LTE CRC24A 多项式进行校验。
  • 仿真规模:每个 SNR 点仿真 1000 帧,最大 HARQ 传输次数设为 4 次。

2. 星座映射生成 (generate_core_mappings)

该功能模块负责预生成 4 种互补的星座映射表。
  • 首先构建基准的 Gray 码星座图,确保不同比特位的平均功率归一化。
  • 为 Chase 合并生成固定的映射表(策略 1)。
  • 为 CoRe 生成变化的映射表,通过循环移位或逻辑变换改变比特在星座点中的映射位置,使得在多次传输中,原始数据比特能轮流映射到高保护位和低保护位。

3. 主仿真循环

代码采用双层循环结构:外层遍历 SNR 范围,内层进行 1000 次蒙特卡洛帧迭代。

#### 发射机公共链路

  • 信源:生成随机二进制序列。
  • CRC 附加:通过 comm.CRCGenerator 添加 24 位校验码。
  • 编码:使用 convenc 进行卷积编码。
  • 补零:为了匹配 16QAM 的符号边界(4比特/符号),对编码后的比特流进行必要的补零操作。
#### 分支一:Chase Combining (CC) 流程
  • 在最大传输次数内循环。
  • 映射:始终使用第一张映射表。
  • 信道:添加高斯白噪声(根据 SNR 计算 sigma)。
  • 合并:接收端计算当前帧的 LLR,并直接累加到 llr_buffer_cc 缓冲区中。
  • 译码与校验:对累加后的 LLR 进行 Viterbi 译码 (vitdec),并进行 CRC 校验。如果校验通过则提前终止重传(ACK),否则继续重传直到达到最大次数。
#### 分支二:Constellation Rearrangement (CoRe) 流程
  • 在最大传输次数内循环。
  • 映射:根据传输次数 tx_cnt 动态选择映射表(索引为 mod(tx_cnt - 1, 4) + 1),实现星座图重排。
  • 信道:添加独立的高斯白噪声。
  • 软解调:根据当前传输使用的特定映射表计算 LLR。这是 CoRe 的核心,解调器必须知道当前次传输使用的是哪种重排规则。
  • 合并:将新计算的 LLR 累加到 llr_buffer_core。由于映射规则的互补性,累加后的 LLR 质量优于单纯的能量累加。
  • 译码与校验:同 CC 流程,使用 Viterbi 译码和 CRC 校验判断是否成功。

4. 性能指标计算

  • 误比特率 (BER):统计解码后的信息位与原始发送位的差异,除以总传输信息位。当数据包最终校验失败时,代码逻辑仍会计算该错误包的误比特数。
  • 误块率 (BLER):统计最终校验失败的数据包数量除以总仿真包数。
  • 吞吐量 (Throughput):计算公式为 Packet_Length / Average_Transmissions。代码通过统计总的传输次数(含重传)来计算平均每包所需的传输次数,从而得出归一化的吞吐量指标。

5. 结果可视化

利用 subplot 生成三个子图:
  1. BER 对比:展示 CoRe 相比 CC 在误码率上的下降趋势。
  2. BLER 对比:展示 CoRe 在减少丢包率方面的优势。
  3. 吞吐量对比:直观反映在不同 SNR 下,CoRe 如何通过减少重传次数来提高系统有效速率。