💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现
💥1 概述
数字预失真(DPD)是一种基带信号处理技术,用于校正射频功率放大器(pa)固有的损伤。这些损伤导致带外发射或光谱再生和带内失真,这与误码率(BER)的增加有关。作为LTE/4G发射机的特点,具有高峰均比的宽带信号特别容易受到这些有害影响。在本文中,我们举例说明了一个建模和模拟PAs和dpd的工作流。本文所示的模型基于两篇技术论文[1]和[2]。我们从PA测量开始。从测量中,我们推导出基于内存多项式的静态DPD设计。这样的多项式校正了PA中的非线性和记忆效应。出于仿真目的,我们构建了一个系统级模型来评估DPD的有效性。由于任何PAs特性都会随时间和操作条件而变化,因此我们将静态DPD设计扩展为自适应设计。我们评估了两种自适应DPD设计,一种基于(最小均方)LMS算法,另一种使用递归预测误差方法(RPEM)算法。
详细讲解见第4部分。
📚2 运行结果
部分代码:
%% Test data used to derive coefs load meas_pa; pa_in = pa_in; pa_out = pa_out; toss = 500; % ignore initial data that could have transients pad = 600; % room to play at the end of the data set. traininglen = 20e4; % Arbitrary subset of pa_in data used to derive coefs if traininglen > (length(pa_in)-pad-toss) error('Pick smaller subset for traininglen'); end %% PA and DPD model parameters memorylen_pa = 3; %M degree_pa = 3; %K degree_pd = 5; memorylen_pd = 5; coef_pd=complex(zeros(degree_pd*memorylen_pd,1)); coef_pa=complex(zeros(degree_pa*memorylen_pa,1)); %% Compute input scaling factor with overrange % and scale raw input accordingly u = pa_in(toss+1:(traininglen+pad)); % select data and transpose umax_inv = 1/(max(abs(u))); umax_inv = 1; u = u*umax_inv; v = pa_out(toss+1:(traininglen+pad)); % select data % Normalize output data to the maximum data. Needed % to make numeric algorithms work. Note that this step might cause problems % if there is outlying data OR if one does not account for this scaling. vmax_inv = 1/(max(abs(v))); %vmax_inv = 1; v = v*vmax_inv; % In general there is no point in deriving the PA model since we % are not implementing it. Sometimes you may only have PA % measurements however and from those you wish to simulate the PA % in the time domain. You can in that case derive a PA model % but keep in mind it may not be an excellent model if you're % PA is predominantly IIR in nature. This is true since the % memory polynomial assumes an FIR model. An FIR filter is great for % equalizing the effects of an IIR filter but not necessarily great at % modeling it. What we have found experimentially is that if you have % an IIR-dominant PA, then you can model the passband quite effectively with this technique % but the stopband may suffer particularly when there is significant % dynamic range, i.e. a lot of attenuation in the stop band. if 0 offset = 0; up = u(1:end-offset); vp = v(1+offset:end); % Compute PA model coefficients. coef_pa = fit_memory_poly_model(up, vp, traininglen, memorylen_pa, degree_pa); figure;plot([1:length(coef_pa)],real(coef_pa),'r+-',[1:length(coef_pa)],imag(coef_pa),'b+-');grid title('PA coefficients'); end if 1 % Compute DPD Algorithm Coefficients using reversed I/O's % Adding delay to the output variable (v) was crucial in using this memory % polynomial based derivation of the DPD. We delay the output % to compensate for the delay inherent in the PA. % You must take your PA's particular delay into account. The input and output % are reversed for the DPD derivation. v is now the input and u is the output. By setting % vp = v(1+offset:end) we are compensating for the delay in the PA. % Essentially we are making it appear that the output responds to the % input "offset" samples earlier, non-causal ish. % You can create this effective negative delay in the DPD coefficient % derivation using this "offset" varible. It is not % necessary to get the offset value perfect. There is a range of acceptable % values for offset. You simply need to capture the energy within the M taps you're % alloted. One informal offset calibration procedure is to observe the derived % DPD coefficients as you change "offset" by 1. You should see the DPD coeffs % shift by 1 as well. If you notice an uncorrelated change in the DPD coefficients % then you're offset value needs correction. In some cases you may also % need to make M larger if you're PA has multiple poles you're trying to % compensate for. Ideally, place the largest tap in the center of your % pipeline. So if M = 5, place the largest tap at 3 using "offset" as the % tuning parameter. This gives you some slop on both sides in case the % PA delay were to change a little.
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Morgan, Ma, Kim, Zierdt, and Pastalan. “A Generalized Memory Polynomial Model for Digital
Predistortion of RF Power Amplifiers”. IEEE Trans. on Signal Processing, Vol. 54, No. 10, Oct.
2006
[2]Li Gan and Emad Abd-Elrady. “Digital Predistortion of Memory Polynomial Systems Using
Direct and Indirect Learning Architectures”. Institute of Signal Processing and Speech
Communication, Graz University of Technology.
[3]Saleh, A.A.M., "Frequency-independent and frequency-dependent nonlinear models of TWT
amplifiers," IEEE Trans. Communications, vol. COM-29, pp.1715-1720, November 1981