Skip to content

di-hua-o/--DPD-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

--DPD-

记录自己的研究生课题

项目简介 (Project Overview)

本项目是一个数字预失真(Digital Pre-Distortion, DPD)研究项目,用于功率放大器(PA)的线性化。项目实现了多种DPD算法,包括ORMP(正交递归匹配追踪)、GMP(广义记忆多项式)、DDR、MP(记忆多项式)等,并包含ASIC硬件实现方案和相关测试工具。

This project is a Digital Pre-Distortion (DPD) research project for Power Amplifier (PA) linearization. It implements various DPD algorithms including ORMP (Orthogonal Recursive Matching Pursuit), GMP (Generalized Memory Polynomial), DDR, MP (Memory Polynomial), etc., along with ASIC hardware implementation plans and related testing tools.

文件结构 (File Structure)

根目录文件 (Root Directory Files)

核心算法文件 (Core Algorithm Files)

  • DPD_train_and_compute.m - DPD训练和计算主程序,包含DTC PMPM、DPA AMAM/AMPM、IQ DPD等处理流程
  • DPD_LUT_multicycle_average.m - DPD查找表多周期平均处理
  • NMSE_compute.m - 归一化均方误差(NMSE)计算

信号处理工具 (Signal Processing Utilities)

  • CORDIC.m - CORDIC算法实现,用于IQ到幅度/相位转换
  • CORDIC_function_test.m - CORDIC功能测试
  • fft_wtself.m - 自加权FFT实现
  • upsample.m - 上采样处理
  • oversample_start_pick.m - 过采样起始点选择
  • oversample_start_pick_0.m - 过采样起始点选择(版本0)
  • rad_check.m - 相位范围检查(-π到π)
  • rad_check_negpi_to_pospi.m - 相位范围检查(-π到π)
  • demod_mean.m - 解调均值计算
  • one_to_one.m - 一对一映射处理

数据生成与处理 (Data Generation & Processing)

  • single_two_tone_signal.m - 单双音信号生成
  • RF_test_signal_generate_and_DPA_DTC_results_process.m - RF测试信号生成及DPA/DTC结果处理
  • memory_effect_figure_plot.m - 记忆效应图形绘制
  • ICICM_plot.m - ICICM图形绘制

逻辑分析仪数据处理 (Logic Analyzer Data Processing)

  • logic_analyzer_data_v2.m - 逻辑分析仪数据处理(版本2)
  • logic_analyzer_data_signed_binary.m - 逻辑分析仪数据有符号二进制处理
  • logic_analyzer_hex_data_write.m - 逻辑分析仪十六进制数据写入
  • genSPIsgl_toLogicAnalyzr_130pt258pt_vrySPIWrt.m - SPI信号到逻辑分析仪数据生成(130/258点)

数据文件 (Data Files)

  • coef.mat - 系数数据文件
  • IQ.mat - IQ数据文件

ASIC_plan/ - ASIC实现方案

ASIC硬件实现相关的训练、计算和优化脚本。

  • ORMP_ASIC_train.m - ORMP ASIC训练主函数
  • ORMP_ASIC_train_v2.m - ORMP ASIC训练(版本2)
  • ORMP_ASIC_train_tb.m - ORMP ASIC训练测试平台
  • ORMP_ASIC_train_tb.asv - 自动保存文件
  • ORMP_ASIC_compute.m - ORMP ASIC计算
  • ORMP_ASIC_opt_iterative.m - ORMP ASIC迭代优化
  • ORMP_ASIC_pre_coef_cal.m - ORMP ASIC预系数计算
  • ORMP_ASIC_pre_coef_cal_v2.m - ORMP ASIC预系数计算(版本2)
  • ORMP_ASIC_tb.m - ORMP ASIC测试平台
  • Win_gen.m - 窗口生成函数

DDR/ - DDR模型

动态延迟响应(Dynamic Delay Response)模型实现。

  • DDR_model.m - DDR模型主函数
  • DDR_model_caculate.m - DDR模型计算
  • DDR_model_caculate_tb.m - DDR模型计算测试平台
  • DDR_model_optimize.m - DDR模型优化
  • DDR_model_optimize_tb.m - DDR模型优化测试平台
  • DDR_model_recreate.m - DDR模型重建

GMP/ - 广义记忆多项式模型

广义记忆多项式(Generalized Memory Polynomial)模型实现。

  • GMP_model_opt.m - GMP模型优化
  • GMP_tb.m - GMP测试平台

GMPE/ - 增强型GMP模型

  • GMP_enhanced.m - 增强型GMP模型实现

MP/ - 记忆多项式模型

  • MP_model.m - 记忆多项式(Memory Polynomial)模型实现

OLMP/ - 正交最小均方算法

正交最小均方(Orthogonal Least Mean Squares)相关算法实现。

核心算法文件

  • OLMP_tb.m - OLMP测试平台
  • OLMP_tb.asv - 自动保存文件
  • OLMP_train_PA.m - OLMP PA训练
  • OLMP_rebuild.m - OLMP重建
  • OLMP_rebuild_simplified.m - OLMP简化重建
  • OLMP_simplified.m - OLMP简化版本
  • OLMP_iterative_training_final_opt.m - OLMP迭代训练最终优化
  • OLMP_basic_function_sort.m - OLMP基本函数排序

优化与分析工具

  • model_opt_iterative.m - 模型迭代优化
  • model_purify.m - 模型净化
  • OLMP_relevance_analysis.m - OLMP相关性分析
  • coverage_analysis.m / coverage_analysis.asv - 覆盖分析

ORMP相关

  • ORMP_ASIC_coef_order.m / ORMP_ASIC_coef_order.asv - ORMP ASIC系数排序
  • ORMP_NM_cal.m - ORMP N/M计算

辅助工具

  • CS_OMP.m - 压缩感知OMP算法
  • my_ls.m - 最小二乘求解
  • NMSE_compute.m - NMSE计算
  • evm_compute.m - EVM(误差向量幅度)计算
  • judgement.m - 判断函数
  • Annealing_algorithm.m - 退火算法
  • weight_annealing_step_initial_random.m - 权重退火步长初始随机化
  • notebook.m / notebook.asv - 笔记/实验记录

ORMP_multiband/ - 多频带ORMP

多频带ORMP算法实现。

  • ORMP_mb_train.m - 多频带ORMP训练
  • ORMP_ASIC_plan.m - ORMP ASIC方案
  • ORMP_basicfunction.m - ORMP基本函数
  • multiband_DPD_cal.m - 多频带DPD计算

SPI/ - SPI通信测试

  • SPI_test.m - SPI测试脚本

gui_test/ - GUI测试

图形用户界面测试相关文件。

  • Example_test.m - 示例测试
  • random_3D.m - 随机3D图形测试

thesis/ - 毕业论文相关

毕业论文研究、分析和数据处理的脚本。

模型比较与分析

  • DPD_model_comparation.m - DPD模型比较(MP、GMP、DDR、BAPs等)
  • test_train.m / test_train.asv - 训练测试脚本
  • opt_analysis.m - 优化分析
  • greedy_search_analysis.m - 贪婪搜索分析
  • coverage_analysis.m / coverage_analysis.asv - 覆盖分析

ORMP ASIC实现

  • ORMP_ASIC_train_v3.m - ORMP ASIC训练(版本3)
  • ORMP_ASIC_train_v4.m - ORMP ASIC训练(版本4)
  • ORMP_ASIC_train_c.m - ORMP ASIC训练(C版本)
  • ORMP_ASIC_tb.m - ORMP ASIC测试平台
  • ORMP_ASIC_pre_coef_cal_v3.m - ORMP ASIC预系数计算(版本3)
  • ORMP_ASIC_pre_coef_cal_v4.m - ORMP ASIC预系数计算(版本4)
  • ORMP_ASIC_data_write.m - ORMP ASIC数据写入

性能分析

  • order_depth_compare.m - 阶数深度比较
  • order_growth_times.m - 阶数增长倍数
  • depth_growth_times.m - 深度增长倍数
  • efficiency_threshold.m / efficiency_threshold.asv - 效率阈值
  • threshold_compute.m - 阈值计算
  • threshold_function.m - 阈值函数

计算复杂度分析

  • flops_com.m - 浮点运算次数计算
  • GMP_flops.m - GMP浮点运算次数
  • DDR_flops.m - DDR浮点运算次数
  • mult_tb.m - 乘法测试平台

数据处理工具

  • data_cut.m - 数据切割
  • delta_error.m - 增量误差计算
  • quantify.m - 量化处理
  • decbin_N.m - 十进制转N位二进制(有符号)
  • decbin_N_nosign.m - 十进制转N位二进制(无符号)
  • IQ_data_write.m - IQ数据写入
  • SPI_data_write.m - SPI数据写入

FIR滤波器

  • FIR_coef.m - FIR滤波器系数生成

数据文件

  • data.xlsx - 数据表格
  • 数据记录.txt - 数据记录文本文件
  • 通用性测试数据记录.xlsx - 通用性测试数据记录

顶层文件调用关系 (Top-Level File Call Structure)

根目录下的主要顶层文件及其函数调用关系:

1. DPD_train_and_compute.m - DPD训练和计算主程序

功能: DPD系统的主入口,包含完整的DPD训练和计算流程

调用关系:

DPD_train_and_compute.m
├── AMPM_LUT()              # AM/PM查找表插值(外部函数,可能在其他目录)
├── CORDIC()                # IQ到幅度/相位转换
│   └── rad_check()         # 相位范围检查
├── rad_check()             # 相位范围检查(-π到π)
├── logic_analyzer_data_v2() # 逻辑分析仪数据输出
├── gen_constellation()     # 星座图生成(外部函数)
├── NMSE_compute()          # 归一化均方误差计算
├── DPD_train()             # DPD训练(外部函数)
├── PRED_test()             # DPD预测测试(外部函数)
└── static_DPD_PMPM_DPD_AMAM_AMPM_DPD_IQ_v2() # 静态DPD计算(外部函数)

主要流程:

  • DTC PMPM DPD处理
  • DPA AMAM/AMPM DPD处理
  • IQ DPD训练
  • IQ DPD + AMAM/AMPM DPD + PMPM DPD联合处理

2. DPD_LUT_multicycle_average.m - DPD查找表多周期平均

功能: 对DPD查找表进行多周期平均处理

调用关系:

DPD_LUT_multicycle_average.m
└── CORDIC()                # IQ到幅度/相位转换
    └── rad_check()         # 相位范围检查

3. RF_test_signal_generate_and_DPA_DTC_results_process.m - RF测试信号生成及结果处理

功能: 生成RF测试信号并处理DPA/DTC测试结果

调用关系:

RF_test_signal_generate_and_DPA_DTC_results_process.m
├── CORDIC()                # IQ到幅度/相位转换
│   └── rad_check()         # 相位范围检查
├── logic_analyzer_data_v2() # 逻辑分析仪数据输出
└── one_to_one()            # 一对一映射处理

4. single_two_tone_signal.m - 单双音信号生成

功能: 生成单音或双音测试信号

调用关系:

single_two_tone_signal.m
├── rad_check()             # 相位范围检查
└── logic_analyzer_data_v2() # 逻辑分析仪数据输出

5. CORDIC.m - CORDIC算法实现

功能: 实现CORDIC算法,将IQ信号转换为幅度和相位

调用关系:

CORDIC.m
└── rad_check()             # 相位范围检查

输入: I, Q (同相和正交分量)
输出: AM (幅度), PM (相位)


6. NMSE_compute.m - NMSE计算函数

功能: 计算归一化均方误差(Normalized Mean Square Error)

调用关系: 无(独立函数)

输入: reference (参考信号), test (测试信号)
输出: res_NMSE_db (NMSE dB值), res_NMSE_per (NMSE百分比)


7. rad_check.m - 相位范围检查

功能: 检查并修正相位值到指定范围(默认-π到π)

调用关系: 无(基础工具函数)

输入: PM (相位), up (上限,可选,默认2π)
输出: PM (修正后的相位)


8. logic_analyzer_data_v2.m - 逻辑分析仪数据输出

功能: 将AM/PM数据格式化为逻辑分析仪可读格式并写入文件

调用关系: 无(独立输出函数)

输入: AM (幅度), PM (相位), road_POD2 (路径), fname_POD2 (文件名), oft_star/oft_end (偏移量)
输出: 文本文件


9. one_to_one.m - 一对一映射

功能: 实现输入到输出的一对一映射查找表

调用关系: 无(独立函数)

输入: SQdist (理想输入), DIST (实际输出)
输出: PRED (预测输出)


调用关系总结图

根目录顶层文件调用层次:

Level 1 (主程序):
├── DPD_train_and_compute.m (主入口)
├── DPD_LUT_multicycle_average.m
├── RF_test_signal_generate_and_DPA_DTC_results_process.m
└── single_two_tone_signal.m

Level 2 (核心工具函数):
├── CORDIC.m
│   └── rad_check.m
├── NMSE_compute.m
├── logic_analyzer_data_v2.m
└── one_to_one.m

Level 3 (基础工具):
└── rad_check.m (被多个函数调用)

注意:

  • AMPM_LUT, DPD_train, PRED_test, gen_constellation, static_DPD_PMPM_DPD_AMAM_AMPM_DPD_IQ_v2 等函数可能在子目录中定义,或为外部函数
  • 部分函数调用关系可能跨越目录边界(如调用OLMP/ASIC_plan/等子目录中的函数)

主要算法说明 (Main Algorithms)

1. ORMP (Orthogonal Recursive Matching Pursuit)

正交递归匹配追踪算法,用于稀疏信号恢复和DPD系数计算。

2. GMP (Generalized Memory Polynomial)

广义记忆多项式模型,扩展了传统记忆多项式模型,包含交叉项。

3. DDR (Dynamic Delay Response)

动态延迟响应模型,用于描述功率放大器的动态特性。

4. MP (Memory Polynomial)

记忆多项式模型,经典的DPD模型。

5. OLMP (Orthogonal Least Mean Squares)

正交最小均方算法,用于模型训练和优化。


使用说明 (Usage)

  1. 数据准备: 准备输入信号(SQdist)和输出信号(DIST)数据
  2. 模型训练: 使用相应的训练脚本(如ORMP_ASIC_train.m)进行模型训练
  3. 性能评估: 使用NMSE_compute.m等工具评估模型性能
  4. 硬件实现: 参考ASIC_plan/目录下的实现方案

注意事项 (Notes)

  • 大部分脚本需要MATLAB环境运行
  • 部分脚本包含硬编码路径,使用时需要根据实际情况修改
  • .asv文件是MATLAB自动保存的备份文件
  • 数据文件路径可能需要根据实际环境调整

作者 (Author)

研究生课题项目

About

记录自己的研究生课题

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages