维也纳大学 LTE-A 下行链路 MATLAB 链路级仿真系统 (精简复现版)
项目简介
本项目是一个基于 MATLAB 开发的高精度 LTE-Advanced 下行链路物理层链路级仿真平台。作为维也纳技术大学(TU Vienna)著名的开源仿真器的精简架构复现,该程序构建了一个从发射端、无线信道到接收端的完整端到端物理层通信链路。系统旨在评估 2x2 MIMO 配置下,在不同信噪比(SNR)和信道模型(如 EVA、AWGN)条件下的误块率(BLER)及网络吞吐量性能。
功能特性
- 端到端物理层仿真:涵盖比特级生成、调制、波形传输、信道衰落、解调及误码统计的全过程。
- MIMO 技术支持:默认配置 2 发射天线 x 2 接收天线(2x2 MIMO),采用闭环空间复用(CLSM)模式。
- 信道编码与纠错:集成 3GPP 标准的 Turbo 编解码方案(码率 1/3,R=1/3 Trellis)及 CRC24A 校验。
- OFDM 系统:基于 FFT/IFFT 的正交频分复用实现,包含循环前缀(CP)处理。
- 复杂信道建模:
* 支持高斯白噪声(AWGN)信道。
* 支持频率选择性衰落信道(EVA - Extended Vehicular A 模型),模拟多径效应及多普勒频移(30 km/h)。
* 基于导频(Pilot)的信道估计框架。
* 最小均方误差(MMSE)MIMO 均衡与信号检测。
* 软判决(Soft LLR)解调与译码。
- 链路自适应与评估:动态计算传输块大小(TBS),实时统计 BLER 和吞吐量(Mbps)。
系统要求
* Communications Toolbox(通信工具箱)
* DSP System Toolbox(DSP 系统工具箱)
* Signal Processing Toolbox(信号处理工具箱)
* (可选) LTE Toolbox(用于对照,但本项目核心功能主要依赖基础通信对象实现)
仿真流程与实现逻辑
本仿真程序的核心逻辑主要集中在主入口函数中,通过外层 SNR 循环和内层子帧(Subframe)循环来执行蒙特卡洛仿真。以下是根据代码实际内容的详细实现步骤:
1. 参数配置与初始化
系统首先定义仿真参数,包括 10 MHz 带宽(50 RB)、15 kHz 子载波间隔、14 个 OFDM 符号/子帧。调制方式设定为 16QAM,并初始化 Turbo 编码器和解码器对象。
2. 发射机处理链 (Transmitter)
- 资源网格构建:建立频域资源网格,维度为 [子载波 total, OFDM 符号数, 天线数]。
- 导频插入:生成参考信号(Pilots)并映射到资源网格的特定位置(模拟 CSRS)。
- 数据生成:根据可用资源元素(RE)数量计算传输块大小,生成随机比特流并添加 24位 CRC 校验。
- 信道编码:对加 CRC 后的数据进行 Turbo 编码(R=1/3)。
- 速率匹配:采用简化的速率匹配策略(截断或补零)以适配物理资源容量。
- 加扰:使用伪随机序列对比特流进行异或操作。
- 调制:将加扰后的比特映射为 QAM 符号(如 16QAM)。
- 层映射与预编码:将调制符号重塑为 2 层数据流。代码中使用标准化的单位矩阵作为预编码矩阵,模拟 2x2 空间复用。
- 资源映射:将预编码后的数据符号填充至资源网格中未被导频占用的位置。
- OFDM 调制:执行 IFFT 并添加循环前缀(CP),生成时域发射波形。
3. 无线信道传输 (Channel)
- 衰落仿真:如果配置为 EVA 模型,使用 MIMO 多径衰落信道对象处理发射波形,引入多径延迟和多普勒频移。若为 AWGN 模式则直通。
- 噪声添加:根据当前 SNR 计算噪声方差,并在接收波形上叠加复高斯白噪声。
4. 接收机处理链 (Receiver)
- OFDM 解调:去除循环前缀并执行 FFT,恢复频域资源网格。
- 信道估计:利用接收到的导频信号与已知导频序列,估计信道频率响应矩阵。
- MIMO 检测 (MMSE):
* 对每个数据 RE,提取接收信号向量和信道矩阵。
* 构建 MMSE均衡矩阵
G = inv(H'H + NoiseVar*I) * H'。
* 通过线性变换恢复发射符号。
- 软解调 (LLR 计算):计算接收符号的对数似然比(LLR)。代码中考虑了噪声方差以获取更准确的软信息。
- 软解加扰:利用加扰序列的符号特征(1 -> -1, 0 -> 1)对 LLR 进行加权翻转,实现软解加扰。
- 逆速率匹配:截取有效 LLR 序列并填入解码缓冲。
- Turbo 译码:执行迭代 Turbo 解码(默认 5 次迭代)恢复原始比特。
- CRC 校验:检测解码数据的 CRC,如果校验失败则计入误块。
5. 性能统计与可视化
- BLER 计算:统计每个 SNR 点的误块率(错误块数 / 总仿真子帧数)。
- 吞吐量计算:基于成功传输的数据量计算实际吞吐率(Mbps),公式考虑了 1ms 子帧长度。
- 绘图:
*
BLER 曲线:使用半对数坐标展示误块率随 SNR 的下降趋势。
*
吞吐量曲线:展示系统吞吐量随信道质量改善的上升趋势。
关键算法说明
- 信道模型:代码显式实现了
comm.MIMOChannel,配置了 standard EVA 功率延时谱(PathDelays, AveragePathGains)和基于速度的多普勒频移,确保了仿真环境的真实性。 - MIMO均衡:接收端没有使用内置黑盒函数,而是显示实现了各子载波级别的 MMSE 算法矩阵运算,这对理解 MIMO 信号处理流程非常关键。
- 简化处理:
*
速率匹配:代码采用了基本的缓冲对齐策略,未完整实现 3GPP 定义的 Circular Buffer 算法。
*
预编码:使用了固定的单位预编码矩阵,未包含 PMI(预编码矩阵指示)反馈选择过程。
*
解加扰:为了适配 Turbo 解码器的软输入,代码巧妙地将硬比特序列转换为符号权重应用于 LLR,避免了硬判决带来的性能损失。