The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> RF Simulators >> simulate noise figure for heterodyne receiver
https://designers-guide.org/forum/YaBB.pl?num=1208883935

Message started by Ian on Apr 22nd, 2008, 10:05am

Title: simulate noise figure for heterodyne receiver
Post by Ian on Apr 22nd, 2008, 10:05am

I'm simulating the noise figure of two mixers together for a heterodyne receiver, i.e., with two large LO signals. My first attempt by using PSS+Pnoise, gives me a NF above 100dB. It's  way too much! Please advise the right way to simulate mixers with two large LO signals. Thanks.  

The frequencies are: flo1=1.1GHz, frf=1GHz, flo2=90MHz.

The main settings are as follows:

---- Simulation Definations
pss  pss  fund=10M  harms=0  errpreset=moderate  annotate=status
+    outputtype=freq
pnoise  pnoise  start=1K  stop=1M  maxsideband=120
+       oprobe=PORT_IF  iprobe=PORT_RF  refsideband=-1  annotate=status

------ Port Definitions
PORT_LO2 (net0140 0) port r=50 num=4 type=sine freq=flo2 ampl=vlo2 \
       fundname="flo2"
PORT_LO (net081 0) port r=50 num=3 type=sine freq=flo ampl=vlo \
       fundname="flo"
PORT_IF (Vloadp Vloadn) port r=50 num=2 type=dc
PORT_RF (net086 0) port r=50 num=1 type=sine freq=frf ampl=vrf \
       fundname="frf"

Title: Re: simulate noise figure for heterodyne receiver
Post by ACWWong on Apr 22nd, 2008, 2:21pm

looks like your pnoise reference sideband is wrong. the output log at the start of the pnoise normally prints at what frequency the input port (PORT_RF) has been swept to get the output. In your case it won't be around 1GHz which is what you want...

There are a couple of other things I would recommend
1) PORT_RF should be dc not sine if you are not looking for noise figure in the presence of a large input RF tone.
2) making flo1 and flo2 integer related by a higher common divisor will speed up simulation. (e.g, 1.1G & 100M or 1.08G & 90M etc.)
3) Then do pxf to get the gain correct. In doing so you can see the correct refsideband giving the gain for use in the pnoise simulation
For further details you should consult the spectreRF user guide.



Title: Re: simulate noise figure for heterodyne receiver
Post by Ian on Apr 22nd, 2008, 11:31pm

Thanks, Wong.


ACWWong wrote on Apr 22nd, 2008, 2:21pm:
looks like your pnoise reference sideband is wrong. the output log at the start of the pnoise normally prints at what frequency the input port (PORT_RF) has been swept to get the output. In your case it won't be around 1GHz which is what you want...


Indeed, the input frequency in the log is 99MHz to 99.999MHz (i.e., for 1K - 1MHz IF), which is the input frequency of the second mixer.


Quote:
There are a couple of other things I would recommend
1) PORT_RF should be dc not sine if you are not looking for noise figure in the presence of a large input RF tone.

I did experiments on both cases, either dc or sine, for one single mixer. They agrees with each other perfectly (though the RF tone is not really a large signal).
But yes, for dc PORT_RF, the simulation could probably be faster. For LO frequencies (also RF frequency) with common divisor (e.g., 100MHz), dc PORT_RF wins sine PORT_RF by about 10s (i.e.,  49.43s vs 59.95s).


Quote:
2) making flo1 and flo2 integer related by a higher common divisor will speed up simulation. (e.g, 1.1G & 100M or 1.08G & 90M etc.)

Good point. My first few attempts really took long time for 'random' LO frequencies.


Quote:
3) Then do pxf to get the gain correct. In doing so you can see the correct refsideband giving the gain for use in the pnoise simulation
For further details you should consult the spectreRF user guide.

Good point. I'll check on this.


Title: Re: simulate noise figure for heterodyne receiver
Post by pancho_hideboo on Apr 23rd, 2008, 12:16am


Ian wrote on Apr 22nd, 2008, 10:05am:
pss  pss  fund=10M  harms=0  errpreset=moderate  annotate=status
+    outputtype=freq

You forget to set "maxacfreq" in PSS.
For example, you have to set maxacfreq=6G.


Ian wrote on Apr 22nd, 2008, 10:05am:
pnoise  pnoise  start=1K  stop=1M maxsideband=120
+       oprobe=PORT_IF  iprobe=PORT_RF  refsideband=-1 annotate=status

"maxsideband=120" is too small. Your fund is 10MHz and flo1=1100MHz, for example, you must set maxsideband more than 5*flo1/fund=550.
So you should set maxsideband=550.


Ian wrote on Apr 22nd, 2008, 11:31pm:

ACWWong wrote on Apr 22nd, 2008, 2:21pm:
looks like your pnoise reference sideband is wrong. the output log at the start of the pnoise normally prints at what frequency the input port (PORT_RF) has been swept to get the output. In your case it won't be around 1GHz which is what you want...

Indeed, the input frequency in the log is 99MHz to 99.999MHz (i.e., for 1K - 1MHz IF), which is the input frequency of the second mixer.

You are wrong. If you want to evaluate SSB-NF and conversion gain, you have to choose the input frequency of the first mixer.
If you want to evaluate only DSB-NF and not conversion gain, you can set any value as refsideband.
Try to use "select from list" in refsideband setting of Pnoise setting.
In your case, you have to set refsideband=-101, where first mixer is LSB and second mixer is USB.

1000=abs(10-101*Fund)  <--- refsideband=-101, First Mixer In=1000MHz, Second Mixer In=100MHz, Out_freq=10MHz, Fund=10MHz
1020=abs(10+101*Fund) <--- refsideband=101, First Mixer In=1020MHz, Second Mixer In=80MHz, Out_freq=10MHz, Fund=10MHz


Ian wrote on Apr 22nd, 2008, 11:31pm:

ACWWong wrote on Apr 22nd, 2008, 2:21pm:
There are a couple of other things I would recommend
1) PORT_RF should be dc not sine if you are not looking for noise figure in the presence of a large input RF tone.

I did experiments on both cases, either dc or sine, for one single mixer. They agrees with each other perfectly (though the RF tone is not really a large signal).
But yes, for dc PORT_RF, the simulation could probably be faster. For LO frequencies (also RF frequency) with common divisor (e.g., 100MHz), dc PORT_RF wins sine PORT_RF by about 10s (i.e.,  49.43s vs 59.95s).

You should not use unnecessary tones in RF analysis especially in multitone HB-analysis.
It could result in not only slowness in simulation but also wrong results. Also it could not be converged in simulation.

Again see http://www.designers-guide.org/Forum/YaBB.pl?num=1184111670


Ian wrote on Apr 22nd, 2008, 11:31pm:

ACWWong wrote on Apr 22nd, 2008, 2:21pm:
2) making flo1 and flo2 integer related by a higher common divisor will speed up simulation. (e.g, 1.1G & 100M or 1.08G & 90M etc.

Good point. My first few attempts really took long time for 'random' LO frequencies.

You can also invoke multitone HB analysis such as QPSS. Rather I will use multitone HB analysis for such receiver.
I will not use PSS(Shooting and HB) for double super receiver, indeed I will not use SpectreRF itself for RF design.

In QPSS, you must not set flo1 and flo2 with integer relation.

Also see http://www.designers-guide.org/Forum/YaBB.pl?num=1162399761

Title: Re: simulate noise figure for heterodyne receiver
Post by Ian on Apr 25th, 2008, 4:07am

pancho_hideboo, you're right on the 'maxsideband' parameter, I adjusted the setting and got reasonable results.

Minor comment on the following:

pancho_hideboo wrote on Apr 23rd, 2008, 12:16am:

Quote:
You forget to set "maxacfreq" in PSS.
For example, you have to set maxacfreq=6G.

I think, the default value of  'maxacfreq' is 40*fundamental (i.e., 44GHz in my case). That should be fine.

Title: Re: simulate noise figure for heterodyne receiver
Post by pancho_hideboo on Apr 25th, 2008, 4:35am


Ian wrote on Apr 25th, 2008, 4:07am:
pancho_hideboo, you're right on the 'maxsideband' parameter, I adjusted the setting and got reasonable results.

No. Serious problem is your wrong value of refsideband, if you see SSB-NF.


Ian wrote on Apr 25th, 2008, 4:07am:
Minor comment on the following:

pancho_hideboo wrote on Apr 23rd, 2008, 12:16am:

Quote:
You forget to set "maxacfreq" in PSS.
For example, you have to set maxacfreq=6G.

I think, the default value of  'maxacfreq' is 40*fundamental (i.e., 44GHz in my case). That should be fine.

No, you are wrong. It seems you always don't understand your fundamental frequency.
Your fundamental frequency is 10MHz like following. So the default value of  'maxacfreq' is 40*fundamental=400MHz.
It is too low.


Ian wrote on Apr 22nd, 2008, 10:05am:
pss  pss  fund=10M  harms=0  errpreset=moderate  annotate=status
+    outputtype=freq


You should always set "maxacfreq" obviously.

Title: Re: simulate noise figure for heterodyne receiver
Post by Ian on Apr 26th, 2008, 2:17am

pancho_hideboo, I've realized I did mix up on a few things in my previous post. I have another problem related to pnoise accuracy for a single down-converter operating at 10GHz. The following is what I've got from the output log:

Quote:
Cadence (R) Virtuoso (R) Spectre (R) Circuit Simulator
Version 6.2.0.420 -- 11 Jun 2007
****************************************************
Periodic Steady-State Analysis `pss': fund = 10 GHz
****************************************************
Trying `homotopy = gmin' for initial conditions.
***********************************************************
Periodic Noise Analysis `pnoise': freq = (1 kHz -> 100 MHz)
***********************************************************
Input frequency range = (9.9 GHz -> 10 GHz).
Using the operating-point information generated by PSS analysis `pss'.

Warning from spectre at freq = 1 kHz during PNoise analysis `pnoise'.
   WARNING (SPECTRE-12012): Relative residual of linear system is significantly above tolerance. Results may be inaccurate. To get more accuracy, you can set maxacfreq (PSS option) to a value greater than 40*fundamental (default value). Or set the solver method in your Periodic small signal analysis option to "std" (standard).


I didn't see this warning message when the mixer works at 1GHz. I followed the tip in the warning message, the major settings are as follows:

Quote:
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
   tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \
   digits=5 cols=80 pivrel=1e-3 ckptclock=1800 \
   sensfile="../psf/sens.output" checklimitdest=psf

pss  pss  fund=10G  harms=0  errpreset=moderate  maxacfreq=500G
+    annotate=status
pnoise  pnoise  start=1K  stop=100M  dec=10  maxsideband=50
+       oprobe=PORT_IF  iprobe=PORT_RF  refsideband=-1  solver=std
+       annotate=status


I also tried set 'errpreset=conservative' or 'errpreset=liberal', still suffer from the same warning.

Title: Re: simulate noise figure for heterodyne receiver
Post by pancho_hideboo on Apr 26th, 2008, 4:39am


Ian wrote on Apr 26th, 2008, 2:17am:
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
   tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \
   digits=5 cols=80 pivrel=1e-3 ckptclock=1800 \
   sensfile="../psf/sens.output" checklimitdest=psf

pss  pss  fund=10G  harms=0  errpreset=moderate  maxacfreq=500G
+    annotate=status
pnoise  pnoise  start=1K  stop=100M  dec=10  maxsideband=50
+       oprobe=PORT_IF  iprobe=PORT_RF  refsideband=-1  solver=std
+       annotate=status

I also tried set 'errpreset=conservative' or 'errpreset=liberal', still suffer from the same warning.

Is the above true netlist which you were using when you got warning ?
Often you show fake netlist.

"solver=std" in Pnoise is truely activated ?

From practical point of view, I don't think noise folding from 500GHz is needed.
Also in your conditions, timestep is very small.
You had better change analysis method from Shooting-PSS to HB-PSS.

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