基于MATLAB的QPSK调制与解调通信系统实现
项目介绍
本项目是一个基于MATLAB开发的数字通信系统仿真程序,专注于正交相移键控(QPSK)技术的完整链路建模。系统模拟了从二进制比特流输入到射频信号传输,再到接收端相干解调并恢复原始数据的全过程。通过该仿真,用户可以直观地观察信号在时域、频域及空间域(星座图)的变化,并深入分析加性高斯白噪声(AWGN)对系统误码率(BER)性能的影响。该系统适用于通信原理学习、数字信号处理算法验证以及无线链路设计的初步评估。
功能特性
- 全链路仿真:涵盖了信源产生、串并转换、双极性映射、载波调制、AWGN信道模拟、相干解调、低通滤波、抽样判决及并串转换恢复。
- 可视化分析:支持多维度结果展示,包括已调信号波形、信号功率谱密度、I/Q基带波形、接收端信号星座图、比特流对比以及理论与仿真的误码率曲线对比。
- 参数化配置:允许灵活设置采样频率、载波频率、比特率、仿真数据量及信噪比范围。
- 性能评估:自动计算并在图表中呈现理论误码率与实际仿真误码率的随信噪比(Eb/No)变化的动态关系。
使用方法
- 确保计算机已安装MATLAB环境以及信号处理工具箱(Signal Processing Toolbox)。
- 打开MATLAB软件,将当前工作目录切换至主程序所在文件夹。
- 在命令行窗口输入主函数名称并回车运行。
- 程序运行结束后,将自动弹出仿真结果图表,并在命令行输出特定信噪比下的误码率统计结果。
系统要求
- MATLAB R2016b 或更高版本。
- Signal Processing Toolbox(用于滤波器设计及频谱分析)。
- Communications Toolbox(用于信道加噪及误码率统计)。
实现逻辑与细节说明
1. 信号产生与预处理
系统首先生成指定长度的随机二进制比特流(0和1)。通过串并转换逻辑,将原始比特序列拆分为同相支路(I路)和正交支路(Q路)。随后进行双极性不归零(NRZ)编码,将逻辑0映射为电平-1,逻辑1映射为电平1,为后续的乘积调制提供基带信号。
2. QPSK脉冲调制
在每个符号周期内,程序将I路和Q路基带电平分别与正交的余弦和正弦载波相乘。调制公式严格遵循 $s(t) = I(t)cos(2pi f_ct) - Q(t)sin(2pi f_ct)$。生成的已调信号在连续的时间轴上构建,确保了相位的连续性。
3. 信道建模
系统模拟了最典型的加性高斯白噪声(AWGN)信道。通过调整信号功率与噪声功率的比值,模拟不同传输条件下的信号质量。程序分别针对展示用途和误码率分析用途进行了两次信道仿真,前者使用固定信噪比,后者在指定范围内循环变化。
4. 相干解调算法
接收端采用相干解调技术。将接收到的受干扰信号分别与本地产生的相干余弦载波和负正弦载波相乘,从而在频域上将信号频谱搬移回基带。
5. 滤波与判决
- 低通滤波:使用5阶巴特沃斯(Butterworth)低通滤波器滤除调制产生的高频分量,截止频率设定为符号率的1.5倍。
- 抽样判决:在每个符号周期的中间位置进行抽样。为了抵消滤波器引入的群时延,代码中设置了特定的抽样点偏移(+5个采样点)。
- 判决标准:根据抽样点的正负号判定原始比特,大于0判定为逻辑1,小于或等于0判定为逻辑0。
6. 性能度量
系统通过对比原始比特与解调恢复比特,计算在不同相位信噪比(Eb/No)下的误码率。同时对照理论公式 $frac{1}{2}text{erfc}(sqrt{10^{Eb/No/10}})$ 绘制曲线,以验证仿真算法的准确性。
关键算法与函数分析
- 双极性映射算法:采用 $2 times bits - 1$ 的线性转换,实现了逻辑电平向信号幅度的物理映射。
- butter & filter:用于设计具有优良通带特性的无限冲击响应(IIR)滤波器,是相干解调中恢复基带信号的核心环节。
- periodogram:利用周期图法估算已调信号的功率谱,通过矩形窗口处理展示QPSK信号的频谱形状特性。
- awgn:该函数处理信道噪声注入,支持“measured”模式以根据信号实际功率自动调整噪声水平。
- biterr:用于对比两个矢量并统计不一致元素的比例,精确计算系统误码率。
- semilogy:在半对数坐标系下绘制误码率曲线,便于观察长尾部分的性能差异。