基于MATLAB的软件无线电(SDR)全链路通信系统仿真平台
项目简介
本项目是一个深度定制的软件无线电(SDR)系统仿真框架,旨在基于MATLAB完整复现从数字基带发射、信道损伤模拟到数字接收解调的整个通信链路过程。该平台不仅模拟了传统的通信模块,重点在于接收端实现了复杂的闭环处理算法,包括基于Gardner算法的位同步、基于DD-PLL的载波同步以及LMS自适应均衡,能够有效应对多径衰落、频率偏差和定时误差等恶劣信道条件。
通过蒙特卡洛仿真,本项目能够评估系统在不同信噪比(SNR)下的误码率(BER)性能,并计算误差矢量幅度(EVM),为SDR算法的硬件FPGA实现提供理论验证与参数参考。
功能特性
- 全链路仿真架构:涵盖信源、编码、调制、成型、上变频、信道、下变频、同步、均衡、解调及译码的全过程。
- 高阶数字调制:支持M-QAM调制(默认配置为16-QAM),具备可配置的符号过采样倍数。
- 信道编码方案:采用(2,1,7)卷积编码及维特比(Viterbi)译码,增强系统的抗噪性能。
- 复杂的信道损伤模拟:
* 频率选择性多径衰落(双径模型)。
* 载波频率偏差与初始相位偏差。
* 分数倍符号定时偏差(通过重采样模拟)。
* 加性高斯白噪声(AWGN)。
*
AGC:自动增益控制,稳定输入信号功率。
*
位同步:基于Farrow插值结构的Gardner定时恢复算法。
*
载波同步:基于判决引导(DD-PLL)的载波相位与频率跟踪。
*
自适应均衡:基于LMS(最小均方)算法的自适应线性均衡器,用于消除码间串扰(ISI)。
系统要求
- MATLAB R2018a 及以上版本(推荐)。
- 通信工具箱 (Communications Toolbox)。
- DSP系统工具箱 (DSP System Toolbox)。
使用方法
直接运行 main.m 文件即可启动仿真。
程序将自动执行以下步骤:
- 根据设定的SNR范围(默认为0-20dB)进行循环仿真。
- 在控制台输出当前的SNR、误码率(BER)及EVM数据。
- 仿真结束后调用可视化函数(需确保
visualize_results函数存在),展示波形或统计图表。
详细功能与算法实现
本项目代码 main.m 包含主控制流程及三个核心子函数:发射机、信道模型、接收机。以下是各部分的详细实现逻辑:
1. 发射机 (Transmitter)
由
run_transmitter 函数实现:
- 信源生成:生成随机二进制比特流。
- 信道编码:使用多项式为 [171, 133] 的卷积编码器对数据进行保护。
- 符号映射:将编码后的比特流重组并映射为 QAM 符号(如16-QAM)。
- 脉冲成型:经过上采样后,通过根升余弦(RRC)滤波器进行波形平滑,限制带宽。
- 数字上变频 (DUC):将基带复信号与复载波相乘,提取实部作为射频传输信号。
2. 信道模型 (Channel Model)
由
run_channel 函数实现:
- 多径效应:构建了一个简单的双径信道,包含直达路径和一条具有特定衰减与相位旋转的延迟路径(延迟2个采样点)。
- 载波偏差:在时域信号上施加线性的频率偏差(模拟本振频偏)和固定的相位偏差。
- 定时误差:利用线性插值技术,在信号中引入非整数倍采样点的定时延迟(Time Offset)。
- 噪声叠加:根据预设的SNR向信号中添加高斯白噪声。
3. 接收机 (Receiver)
由
run_receiver 函数实现,这是系统的核心部分,包含逐样本处理的闭环同步机制:
- 数字下变频 (DDC) 与 滤波:使用本地载波将射频信号搬移回基带,并立即通过匹配滤波器(RRC)滤除高频分量并最大化信噪比。
- 自动增益控制 (AGC):计算信号平均功率并进行归一化,确保后续环路在稳定的幅度下工作。
- 联合同步与均衡循环:接收机采用逐样本处理方式,在一个
while 循环中同时完成位同步、载波同步和均衡:
*
插值 (Interpolation):利用 Farrow 结构(三次 Lagrange 插值)根据当前的定时误差通过插值获取最佳采样点。
*
Gardner 定时恢复:通过计算相邻三个采样点的误差(中间样点与前后样点差值的乘积),估计定时误差并更新分数间隔(fractional interval),驱动数控振荡器(NCO)调整采样时刻。
*
载波去旋转 (Derotation):利用载波环路累积的相位值对输入符号进行反向旋转。
*
LMS 自适应均衡:信号进入11抽头的线性均衡器,消除多径效应引起的码间串扰。
*
判决 (Slicer):对均衡后的输出进行硬判决,得到估计的星座点。
*
误差反馈与环路更新:
* 计算判决误差。
*
DD-PLL:利用判决误差的虚部驱动二阶PLL,更新相位和频率累加器。
*
LMS Update:利用误差信号通过LMS算法迭代更新均衡器权值。
* 待环路收敛后(代码中跳过前500个符号),截取有效数据进行QAM解调。
* 将解调出的硬判决比特送入 Viterbi 译码器进行纠错译码。
4. 性能评估逻辑
- 考虑到卷积码的回溯深度(TraceBack)和同步环路的收敛过程,代码在计算BER时会自动对齐发射数据与接收数据,移除头部无效数据和拖尾延迟数据。
- 计算 EVM(误差矢量幅度)以量化接收信号星座点的聚类质量。