基于解码转发(DF)协作中继与1/4码率卷积码的通信系统仿真
项目简介
本项目是一个基于MATLAB的无线通信系统仿真平台,专注于研究和验证
解码转发(Decode and Forward, DF)协作通信协议的性能。系统采用了低码率的
1/4卷积码作为信道编码方案,通过蒙特卡洛仿真方法,在瑞利衰落信道(Rayleigh Fading Channel)环境下,对比分析了“单中继协作传输”与“源-目的直传”两种模式的误码率(BER)和帧误率(FER)性能。
功能特性
- 协作通信协议:实现了标准的解码转发(DF)协议,中继节点对接收信号进行解调、维特比译码、重编码后再转发。
- 强纠错编码:采用码率为1/4的卷积编码方案(Constraint Length = 3),提供强大的抗噪声和抗衰落能力。
- 分集接收技术:在目的节点实现了最大比合并(Maximal Ratio Combining, MRC),有效利用来自源节点和中继节点的信号分集增益。
- 信道模型:模拟了准静态平坦瑞利衰落信道和加性高斯白噪声(AWGN)环境,并包含基于几何距离的路径损耗模型。
- 性能评估:自动计算不同信噪比(SNR)下的BER和FER,并支持仿真结果的可视化对比。
系统要求
- MATLAB R2016a 或更高版本
- MATLAB Communications Toolbox(通信工具箱)
使用方法
- 确保MATLAB环境已安装并配置好通信工具箱。
- 将包含主函数的脚本文件保存到MATLAB工作路径中。
- 直接运行
main 函数即可开始仿真。 - 仿真过程中控制台会实时打印当前信噪比下的误码率统计信息。
- 仿真结束后系统将自动统计耗时,并生成性能对比曲线图。
代码实现逻辑详解 (main.m)
该仿真脚本通过双层循环(外层SNR循环,内层帧数循环)实现蒙特卡洛仿真。以下是代码的具体实现流程:
1. 参数设置与初始化
- 基础参数:设定每帧信息比特长度为500,每种SNR条件下仿真2000帧,SNR扫描范围为0dB至12dB。
- 信道编码参数:定义了一个码率为1/4的卷积码。
* 约束长度(Constraint Length):3
* 生成多项式(八进制):[7, 5, 7, 5]。通过四个多项式输出实现1/4码率,对应二进制为 [111, 101, 111, 101]。
* 定义了源节点(Source)、中继节点(Relay)和目的节点(Destination)的相对距离。
* 假设源到目的距离为1.0,中继位于正中间(距离源和目的各0.5)。
* 路径损耗指数设为3,信道增益根据距离的倒数立方计算。
2. 主仿真循环
在每一个信噪比点(Eb/N0)下,执行以下步骤:
- 噪声功率计算:根据BPSK调制(M=2)和码率(1/4)计算符号信噪比(Es/N0),进而推导出由于复高斯白噪声引起的噪声方差。
#### A. 信号发送端
- 数据生成:每帧生成500个随机二进制比特,并附加尾比特(Tail Bits)以确保卷积码编码器归零。
- 编码与调制:使用定义的Trellis结构进行卷积编码,随后进行BPSK调制(0映射为1,1映射为-1)。
#### B. 信道传输
- 信道系数生成:分别为源-目的(S-D)、源-中继(S-R)、中继-目的(R-D)三条链路生成独立的瑞利衰落系数(复高斯随机变量)。假设在一帧数据传输时间内信道保持不变(准静态)。
- 噪声叠加:为每条链路生成相应的复高斯白噪声。
#### C. 直传模式处理 (Direct Transmission)
- 接收与均衡:目的节点接收来自源节点的信号。
- 软解调:计算接收信号与信道系数共轭的乘积实部,作为软判决度量(Soft Metric)。
- 译码:使用维特比算法(
vitdec)进行译码,模式为unquant(未量化输入)和term(终止状态),恢复原始比特并统计直传误码。
#### D. 协作模式处理 (DF Protocol)
代码通过两个阶段模拟协作传输:
- 阶段一(Source -> Relay):
* 中继接收源节点信号,利用S-R信道系数进行软解调。
*
中继处理:中继进行维特比译码(Decode)。
注意:代码实现的是标准DF协议,即主要模拟中继的再生能力,中继解码后直接重编码(Re-encode),不进行CRC校验丢弃,这意味着中继的解码错误可能会传播到目的节点。
* 中继对重编码后的比特进行BPSK调制。
- 阶段二(Relay -> Destination):
* 目的节点接收中继转发的信号(经过R-D信道衰落)。
*
最大比合并(MRC):目的节点将阶段一接收到的直传信号(S-D链路)与阶段二接收到的转发信号(R-D链路)进行加权合并。权重为各自链路信道系数的共轭。
*
联合译码:将合并后的信号实部输入维特比译码器进行解码,并统计协作误码。
3. 数据统计与可视化
- 误码率计算:累计所有帧的错误比特数和错误帧数,计算BER和FER。
- 结果输出:实时打印控制台日志。
- 绘图:代码末尾包含绘图逻辑(虽然提供的片段主要集中在仿真核心),旨在绘制直传与协作模式的BER性能曲线,以及特定帧的接收信号星座图。
关键算法与技术细节
- 1/4码率卷积码:通过配置
poly2trellis函数的生成多项式向量长度为4,实现了低码率编码。相比常用的1/2码率,该方案牺牲了带宽效率以换取更高的编码增益,特别适用于信道条件恶劣的无线环境。 - 维特比译码 (Viterbi Decoding):代码使用了MATLAB内置的
vitdec函数。关键参数'unquant'表明输入使用的是模拟软信息(Soft Decision),而非硬判决比特,这通常能比硬判决译码带来2-3dB的性能增益。 - MRC合并逻辑:代码中通过
y_combined = conj(H_sd) .* y_sd + conj(H_rd) .* y_rd 实现了MRC。这在数学上等效于最大化接收信噪比,因为它根据信道的幅度平方对各支路信号进行了加权。 - 误差传播 (Error Propagation):本实现的DF协议未包含中继节点的ACK/NACK机制。如果中继解码错误,它会通过重编码发送错误的波形,这真实地反映了简单DF协议在低信噪比下可能遇到的误差传播问题。