The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> RF Simulators >> PSD from envelope following analysis
https://designers-guide.org/forum/YaBB.pl?num=1264078706

Message started by aaron_do on Jan 21st, 2010, 4:58am

Title: PSD from envelope following analysis
Post by aaron_do on Jan 21st, 2010, 4:58am

Hi all,


I ran an envelope following analysis on a MSK signal and it showed a peak voltage of 0.316V. Since this is  a constant envelope signal, I expect the power of the signal to be about 0.316^2/100 = 1mW. However, when I plotted the PSD and integrate over the entire bandwidth, I get a power of about 1.7mW.
Actually, since this is a modulated signal, I actually expect the signal to be even smaller. It should be approximately 0.316^2/(50*PAPR) I think. Can someone please shed some light on where i've made my mistake?


thanks,
Aaron

Title: Re: PSD from envelope following analysis
Post by aaron_do on Jan 21st, 2010, 6:24am

by the way, when I ran the envelope following analysis on a simple PA, the PSD showed no change in shape from input to output. I don't think the PA is that linear so is there something I should know about the simulation setup which i'm not doing?

thanks,
Aaron


Title: Re: PSD from envelope following analysis
Post by pancho_hideboo on Jan 21st, 2010, 7:04am


aaron_do wrote on Jan 21st, 2010, 4:58am:
I ran an envelope following analysis on a MSK signal and it showed a peak voltage of 0.316V.
Since this is  a constant envelope signal, I expect the power of the signal to be about 0.316^2/100 = 1mW.
However, when I plotted the PSD and integrate over the entire bandwidth, I get a power of about 1.7mW.
I assume that you are using Cadence Spectre and Post Processing of Cadence.
Is it right ?
Always describe vendor's name which you use as simulator and post processing.

When I have spare time, I will confirm power using Post Processing Environment of Cadence.
If results of Cadence Post Processing are not correct as you say, I will confirm power using RF golden standard Post Processing such as Agilent ADS for results of Cadence Spectre.


aaron_do wrote on Jan 21st, 2010, 4:58am:
Actually, since this is a modulated signal, I actually expect the signal to be even smaller.
It should be approximately 0.316^2/(50*PAPR) I think.
It is slightly different.

Assume vRF(t)=Real[Venv(t)*exp(j*ω*t)], Venv(t)=I(t)+j*Q(t)

Instantaneous RF Power delivered to Load Rload is pRF(t)=vRF(t)2/Rload
Instantaneous Envelope Power delivered to Load Rload is penv(t)=|Venv(t)|2/(2*Rload)

PEP(Peak Envelope Power)=Max[|Venv(t)|]2/(2*Rload)

Averaged RF Power=Average[pRF(t)]=RMS[vRF(t)]2/Rload
Here there are two options for averaging, Averaging regarding Carrier and Averaging regarding Envelope.
If RF signal is repeated burst wave, frame averaging can be also defined.

RMS[vRF(t)]2=|Venv(t)|2/2 for Averaging regarding Carrier not Envelope.

RF Power averaged regarding Carrier is =|Venv(t)|2/(2*Rload)
This is no more than Instantaneous Envelope Power delivered to Load Rload, penv(t).

RMS[vRF(t)]2=RMS[|Venv(t)|]2/2 for Averaging regarding Envelope.

RF Power averaged regarding Envelope is =RMS[|Venv(t)|]2/(2*Rload)

PAPR=PEP/RMS[|Venv(t)|]2/(2*Rload)

So Average[pRF(t)] which is averaged regarding Envelope is
Average[pRF(t)]=RMS[|Venv(t)|]2/(2*Rload)=PEP/PAPR=Max[|Venv(t)|]2/(2*Rload*PAPR)

In your case, it is "0.3162/(2*50*PAPR)" not "0.3162/(50*PAPR)".


aaron_do wrote on Jan 21st, 2010, 6:24am:
by the way, when I ran the envelope following analysis on a simple PA,
the PSD showed no change in shape from input to output.
I don't think the PA is that linear so is there something I should know about the simulation setup which i'm not doing?
There is no specification for ACPR in "IEEE 802.15.4 standard".
But a specification for spurious emission exists in "IEEE 802.15.4 standard".

For ZigBee Application, we are not permitted to consume much current in PA, so clear ACPR degradation can be observed.
Although I have not confirmed it by using Cadence Spectre in detail, generally clear ACPR degradation can be observed even if you use Cadence Spectre.

For detail analysis purpose, I'm using Agilent GoldenGate and ADSsim with including noise effects.

Title: Re: PSD from envelope following analysis
Post by aaron_do on Jan 21st, 2010, 8:25pm

I think I may be running the simulation wrongly. This is my first time using envelope following analysis so I may have made a beginner's mistake. Here are my settings:

engine: Shooting
Fund Frequency = 2.45G
stop time = 500u
number of harmonics = 1
Accuracy Defaults: moderate

Also, when I plot the power versus time of the zeroth harmonic (at the supply), it is not much greater than the power versus time of the first harmonic (at the load). I don't think the PA is that efficient so i'm definately doing something wrong. Any help is appreciated.

thanks,
Aaron

Title: Re: PSD from envelope following analysis
Post by pancho_hideboo on Jan 22nd, 2010, 1:04am


aaron_do wrote on Jan 21st, 2010, 4:58am:
I ran an envelope following analysis on a MSK signal and it showed a peak voltage of 0.316V.
Since this is  a constant envelope signal, I expect the power of the signal to be about 0.316^2/100 = 1mW.
However, when I plotted the PSD and integrate over the entire bandwidth, I get a power of about 1.7mW.
I can get almost 0dBm as an integration of psdbb().
So there is no problem regarding an implementation of psdbb() in Cadence ADE Post Processing.

In Agilent ADS(RFDE) Post Processing Environment, generally I use following three functions for evaluation of Channel Power.
http://edocs.soco.agilent.com/display/ads2009/spec+power%28%29
http://edocs.soco.agilent.com/display/ads2009/channel+power+vi%28%29
http://edocs.soco.agilent.com/display/ads2009/channel+power+vr%28%29
http://edocs.soco.agilent.com/display/ads2009/peak+to+avg+pwr%28%29#peaktoavgpwr%28%29-1107415

In the following, I use "spec_power()" to evaluate ACPR.
http://www.designers-guide.org/Forum/YaBB.pl?num=1190971685/7#7

Attached figure is an input MSK signal for DUT such as Power Amplifier.
Power evaluated as an integration of psdbb() is 0.97mWatt(=-0.15dBm).
So PAPR=0.15dB

I confirmed four windows, "Blackman", "Rectangular", "Hamming" and "Hanning".
There is no difference between them.

"test_aaron.ocn"
Quote:
ocnWaveformTool( 'wavescan )

awvSetOptionValue( 'displayGrids t )
awvSetOptionValue( "cursorPrecision" 9 )
awvSetOptionValue( "displayAxesBy125" t )

date = getCurrentTime()
M_PI = acos( -1.0 )
M_TWO_PI = 2.0 * acos( -1.0 )
j = complex( 0.0, 1.0 )

psf_dir = "~/AHO/simulation/test_ZigBee_RF_Signal/spectre/schematic/psf"
openResults( psf_dir )

Rload = 50.0 ; [Ohm]

tstart = 0.0
tstop = 0.3m
delta_f = 1.0/(tstop-tstart)
fn = 20M
binw = 0.01M
if( binw < delta_f then binw=delta_f )
num_bin = floor( binw/delta_f + 0.5 )
winsz = floor( log10(2*fn/(num_bin*delta_f)) / log10(2) + 0.5 )
winsz = 2 ** winsz
ndata = num_bin * winsz
win_name = "Blackman"
;win_name = "Rectangular"
;win_name = "Hamming"
;win_name = "Hanning"
fmin = -5M
fmax = 5M
; Calculated Power Spectral Density Parameters:
fprintf( stderr, "Tstart for Time Interval = %g[usec]\n", tstart/1.0u )
fprintf( stderr, "Tstop for Time Interval = %g[usec]\n", tstop/1.0u )
fprintf( stderr, "Nyquist half-bandwidth = %g[MHz]\n", fn/1.0M )
fprintf( stderr, "Frequency bin width = %g[MHz]\n", binw/1.0M )
fprintf( stderr, "Max. plotting frequency = %g[MHz]\n", fmax/1.0M )
fprintf( stderr, "Min. plotting frequency = %g[MHz]\n", fmin/1.0M )

fprintf( stderr, "Number of Samples = %d\n", ndata )
fprintf( stderr, "Window Name = %s\n", win_name )
fprintf( stderr, "Window Size = %d\n", winsz )
fprintf( stderr, "Number of Bins = %d\n", num_bin )

RFsig = v( "/RFsig", ?result "envlp_td" )
RFsig_1st_Env = harmonic( v( "/RFsig", ?result "envlp_fd" ), 1 )

Inst_Env_Pwr = mag(RFsig_1st_Env)**2 / (2*Rload)

RFsig_1st = psdbb( real(RFsig_1st_Env), imag(RFsig_1st_Env),
                  tstart, tstop, ndata,
                  ?windowName win_name, ?windowSize winsz,
                  ?detrending "None" )

RFsig_1st_PSD = RFsig_1st / (2*Rload)


wid = newWindow()
addTitle( strcat("Test of psdbb(), ", date) )
bid = currentSubwindow(1)
addSubwindowTitle( "RF Signal with Carrier" )
plot( RFsig, ?expr '( "RFsig" ) )
xLimit(list(0.0, 5u))
;awvSetXAxisLabel( wid, "time", ?subwindow bid )
awvSetYAxisLabel( wid, 1, "RFsig", ?subwindow bid )

addSubwindow()
bid = currentSubwindow(2)
addSubwindowTitle( "Isig and Qsig" )
plot( real(RFsig_1st_Env) ?expr '( "Isig" ) )
plot( imag(RFsig_1st_Env) ?expr '( "Qsig" ) )
xLimit(list(0.0, 5u))
awvSetYAxisLabel( wid, 1, "Isig , Qsig", ?subwindow bid )

addSubwindow()
bid = currentSubwindow(3)
addSubwindowTitle( "Envelope Power" )
plot( dBm(Inst_Env_Pwr) ?expr '( "Inst_Env_Pwr" ) )
xLimit(list(0.0, 5u))
awvSetYAxisLabel( wid, 1, "Envelope Power", ?subwindow bid )

addSubwindow()
bid = currentSubwindow(4)
addSubwindowTitle( "Power Spectrum Density" )
plot( dBm(RFsig_1st_PSD) ?expr '( "RFsig_1st_PSD" ) )
xLimit(list(fmin, fmax))
awvSetXAxisLabel( wid, "freq [Hz]", ?subwindow bid )
awvSetYAxisLabel( wid, 1, "PSD [dBm/Hz]", ?subwindow bid )


f1 = -fn
f2 = fn
Pwr = integ( RFsig_1st_PSD, f1, f2 )
fprintf( stderr, "Power = %.2fmWatt(=%.2fdBm)\n",Pwr/1m, dBm(Pwr) )

/*
\i load "test_aaron.ocn"
\e Tstart for Time Interval = 0[usec]
\e Tstop for Time Interval = 300[usec]
\e Nyquist half-bandwidth = 20[MHz]
\e Frequency bin width = 0.01[MHz]
\e Max. plotting frequency = 5[MHz]
\e Min. plotting frequency = -5[MHz]
\e Number of Samples = 12288
\e Window Name = Blackman
\e Window Size = 4096
\e Number of Bins = 3
\e Power = 0.97mWatt(=-0.15dBm)
*/



Title: Re: PSD from envelope following analysis
Post by pancho_hideboo on Jan 22nd, 2010, 1:40am


aaron_do wrote on Jan 21st, 2010, 8:25pm:
Here are my settings:
engine: Shooting
Fund Frequency = 2.45G
stop time = 500u
number of harmonics = 1
Accuracy Defaults: moderate
See my settings for Envelope Analysis of Cadence Spectre in the following.
http://www.designers-guide.org/Forum/YaBB.pl?num=1262000981
Also again see http://www.designers-guide.org/Forum/YaBB.pl?num=1263961579/2#2


aaron_do wrote on Jan 21st, 2010, 8:25pm:
Also, when I plot the power versus time of the zeroth harmonic (at the supply),
it is not much greater than the power versus time of the first harmonic (at the load).
I don't think the PA is that efficient so i'm definately doing something wrong.
If you have other RF simulators such as Agilent RFDE(ADSsim), Agilent GoldenGate, Mentor eldoRF,
try to use these actually well used envelope analysis.
I'm using Agilent GoldenGate and ADSsim with including noise effects as reference of Envelope Analysis.


aaron_do wrote on Jan 21st, 2010, 8:25pm:
Any help is appreciated.
Informations you provided are too few, so I can't give any useful suggestions.
It seems your Envelope Analysis of Cadence Spectre can converge without failure.

Most probably you might have some mistakes in treating results of Envelope Analysis of Cadence Spectre.

Do you correctly treat results of Envelope Analysis of Cadence Spectre ?
For example, do you correctly understand "envlp_td" and "envlp_fd" ?

You had better set "strobeperiod" if you use Envelope Analysis of Cadence Spectre to evaluate ACPR.

Title: Re: PSD from envelope following analysis
Post by aaron_do on Jan 22nd, 2010, 5:41am


Quote:
Do you correctly treat results of Envelope Analysis of Cadence Spectre ?
For example, do you correctly understand "envlp_td" and "envlp_fd" ?


this seems to be what i'm missing. I'll go back and do some more reading to see if I can figure out my misunderstanding...btw thanks for showing your plots


thanks,
Aaron

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.