基于Simulink逻辑的QPSK全功能同步仿真系统
项目介绍
本项目是一个基于MATLAB开发的数字通信仿真平台,核心在于构建了一个完整的四相相移键控(QPSK)通信链路。与传统的基于矩阵运算的MATLAB代码不同,本项目采用了"逐样点处理"(Sample-by-Sample)的编程范式,旨在底层代码层面模拟Simulink或FPGA流水线的实时处理逻辑。
该系统不仅实现了基础的调制解调功能,更重点攻克了数字接收机中最复杂的同步问题。系统内建了完整的信道损伤模型(包括分数倍采样时延、载波频率偏差、相位偏差及高斯白噪声),并集成了经典的同步算法(Gardner算法进行定时恢复、Costas环进行载波同步),能够直观地展示信号从失真到锁定的全过程。
核心功能特性
- 全流程通信链路:涵盖信源生成、符号映射、脉冲成型、信道传输、匹配滤波、同步处理及解调判决。
- 硬件级仿真逻辑:接收机采用循环结构逐个处理样点,模拟真实的硬件数据流接收过程。
- 高精度定时恢复:采用Farrow结构的Cubic(三次)插值滤波器配合Gardner误差检测器(TED),实现非整数倍采样点的精确恢复。
- 闭环载波同步:利用Costas环(科斯塔斯环)算法,在存在频偏和相偏的情况下能够自动锁定并在QPSK星座图中恢复信号。
- 信道损伤模拟:内置Sinc插值分数延迟、旋转矢量频偏叠加及AWGN噪声生成模块。
- 多维性能可视化:提供时域波形、同步前后的星座图对比、眼图以及环路收敛曲线。
系统要求
- MATLAB R2016b 或更高版本
- Signal Processing Toolbox(用于滤波器设计和信号处理函数)
使用方法
直接运行主脚本即可启动仿真。程序会自动初始化参数、生成数据、执行逐点同步循环,并在最后弹出图形化窗口展示以下结果:
- I/Q接收信号时域波形。
- 同步前的星座图(呈现旋转的圆环状)。
- 同步后解调的星座图(收敛至四个标准点)。
- 同步后的眼图(展示清晰的眼张开度)。
- 频率估计收敛曲线(展示环路跟踪频偏的过程)。
---
详细功能与算法实现分析
本项目的代码逻辑严格按照数字通信系统的信号流向进行设计,以下是具体模块的实现细节:
1. 发射机设计
- 参数配置:系统设定符号率为10 kBd,每符号采样数(Sps)为8,总采样率为80 kHz。
- 信源与映射:生成随机二进制比特流,经过串并转换后进行格雷码(Gray)映射。代码中包含了详细的逻辑校正,将二进制的00, 01, 11, 10分别映射到QPSK星座图的四个象限(例如00对应1+1j),并进行能量归一化。
- 脉冲成型:使用滚降系数为0.5的根升余弦(RRC)滤波器对上采样后的符号进行滤波,带宽限制了信号频谱并消除了码间干扰。
2. 信道模型 (损伤与噪声)
为了测试同步算法的鲁棒性,信道模块引入了三种具体的损伤:
- 分数倍时延:通过Sinc函数插值滤波器,引入非整数采样周期的延迟(通过
TimeDelay参数设定,如1.3个采样点),模拟真实的传输延迟。 - 载波偏差:在时域信号上叠加复指数旋转矢量,模拟100Hz的频率偏差(
FreqOffset)和$pi/4$的初始相位偏差。 - 加性噪声:使用
awgn函数添加高斯白噪声,信噪比(SNR)设定为20dB,以验证在含噪环境下的性能。
3. 接收机设计 (逐点同步核心)
接收机是本项目的核心,采用了一个主循环来模拟实时数据流:
- 匹配滤波:首先通过与发射端一致的RRC滤波器进行卷积,最大化输出信噪比。
- 数据缓冲:使用FIFO缓冲区存储最新的输入样点,为插值滤波器提供历史数据。
#### A. 定时恢复 (Timing Recovery)
- 插值模块:实现了一个基于Farrow结构的Cubic(三次)插值器。它根据定时NCO计算出的分数间隔(
Mu),在当前采样点之间计算出最佳采样时刻的信号值。 - 误差检测 (Gardner TED):代码实现了经典的Gardner算法。该算法利用三个采样点——当前符号点、前一个符号点以及两者中间的过渡点——来计算定时误差。公式逻辑为:
Error = real(mid) * (real(curr) - real(prev)) + imag(mid) * (imag(curr) - imag(prev))
- 环路滤波:误差通过比例积分(PI)控制器平滑后,反馈控制NCO(数控振荡器)的累加步长和插值索引,从而调整采样时刻,实现位同步。
#### B. 载波恢复 (Carrier Recovery)
- 去旋转:对定时恢复输出的插值样点,乘以一个反向旋转矢量(基于当前的相位估计由Costas环提供),以消除频偏和相偏。
- 鉴相器 (Costas Loop):采用适用于QPSK的鉴相算法
AngleErr = Q * sign(I) - I * sign(Q)。该算法对相位误差敏感,且对此调制方式具有相位模糊性(项目未包含去模糊逻辑,仅展示锁定效果)。 - 环路更新:计算出的相位误差通过PI控制器更新相位累加器和频率估计值,实现对输入信号频率和相位的跟踪锁定。
4. 性能评估与可视化
仿真结束后,代码会对数据进行后处理和绘图:
- 同步数据截取:代码自动切除前500个符号的数据,排除环路锁定前的瞬态过程,确保统计结果的准确性。
- 眼图生成:利用Gardner同步后输出的2倍速采样数据重构眼图轨迹,直观展示码间干扰的消除情况。
- 收敛验证:绘制频率估计值的历史曲线,并用虚线标示实际设置的频偏值(100Hz),验证Costas环是否准确锁定了载波频率。