记录自己的研究生课题
本项目是一个数字预失真(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.
DPD_train_and_compute.m- DPD训练和计算主程序,包含DTC PMPM、DPA AMAM/AMPM、IQ DPD等处理流程DPD_LUT_multicycle_average.m- DPD查找表多周期平均处理NMSE_compute.m- 归一化均方误差(NMSE)计算
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- 一对一映射处理
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_v2.m- 逻辑分析仪数据处理(版本2)logic_analyzer_data_signed_binary.m- 逻辑分析仪数据有符号二进制处理logic_analyzer_hex_data_write.m- 逻辑分析仪十六进制数据写入genSPIsgl_toLogicAnalyzr_130pt258pt_vrySPIWrt.m- SPI信号到逻辑分析仪数据生成(130/258点)
coef.mat- 系数数据文件IQ.mat- IQ数据文件
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- 窗口生成函数
动态延迟响应(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模型重建
广义记忆多项式(Generalized Memory Polynomial)模型实现。
GMP_model_opt.m- GMP模型优化GMP_tb.m- GMP测试平台
GMP_enhanced.m- 增强型GMP模型实现
MP_model.m- 记忆多项式(Memory Polynomial)模型实现
正交最小均方(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_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算法实现。
ORMP_mb_train.m- 多频带ORMP训练ORMP_ASIC_plan.m- ORMP ASIC方案ORMP_basicfunction.m- ORMP基本函数multiband_DPD_cal.m- 多频带DPD计算
SPI_test.m- SPI测试脚本
图形用户界面测试相关文件。
Example_test.m- 示例测试random_3D.m- 随机3D图形测试
毕业论文研究、分析和数据处理的脚本。
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_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_coef.m- FIR滤波器系数生成
data.xlsx- 数据表格数据记录.txt- 数据记录文本文件通用性测试数据记录.xlsx- 通用性测试数据记录
根目录下的主要顶层文件及其函数调用关系:
功能: 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联合处理
功能: 对DPD查找表进行多周期平均处理
调用关系:
DPD_LUT_multicycle_average.m
└── CORDIC() # IQ到幅度/相位转换
└── rad_check() # 相位范围检查
功能: 生成RF测试信号并处理DPA/DTC测试结果
调用关系:
RF_test_signal_generate_and_DPA_DTC_results_process.m
├── CORDIC() # IQ到幅度/相位转换
│ └── rad_check() # 相位范围检查
├── logic_analyzer_data_v2() # 逻辑分析仪数据输出
└── one_to_one() # 一对一映射处理
功能: 生成单音或双音测试信号
调用关系:
single_two_tone_signal.m
├── rad_check() # 相位范围检查
└── logic_analyzer_data_v2() # 逻辑分析仪数据输出
功能: 实现CORDIC算法,将IQ信号转换为幅度和相位
调用关系:
CORDIC.m
└── rad_check() # 相位范围检查
输入: I, Q (同相和正交分量)
输出: AM (幅度), PM (相位)
功能: 计算归一化均方误差(Normalized Mean Square Error)
调用关系: 无(独立函数)
输入: reference (参考信号), test (测试信号)
输出: res_NMSE_db (NMSE dB值), res_NMSE_per (NMSE百分比)
功能: 检查并修正相位值到指定范围(默认-π到π)
调用关系: 无(基础工具函数)
输入: PM (相位), up (上限,可选,默认2π)
输出: PM (修正后的相位)
功能: 将AM/PM数据格式化为逻辑分析仪可读格式并写入文件
调用关系: 无(独立输出函数)
输入: AM (幅度), PM (相位), road_POD2 (路径), fname_POD2 (文件名), oft_star/oft_end (偏移量)
输出: 文本文件
功能: 实现输入到输出的一对一映射查找表
调用关系: 无(独立函数)
输入: 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/等子目录中的函数)
正交递归匹配追踪算法,用于稀疏信号恢复和DPD系数计算。
广义记忆多项式模型,扩展了传统记忆多项式模型,包含交叉项。
动态延迟响应模型,用于描述功率放大器的动态特性。
记忆多项式模型,经典的DPD模型。
正交最小均方算法,用于模型训练和优化。
- 数据准备: 准备输入信号(SQdist)和输出信号(DIST)数据
- 模型训练: 使用相应的训练脚本(如
ORMP_ASIC_train.m)进行模型训练 - 性能评估: 使用
NMSE_compute.m等工具评估模型性能 - 硬件实现: 参考
ASIC_plan/目录下的实现方案
- 大部分脚本需要MATLAB环境运行
- 部分脚本包含硬编码路径,使用时需要根据实际情况修改
.asv文件是MATLAB自动保存的备份文件- 数据文件路径可能需要根据实际环境调整
研究生课题项目