DSPRelated.com
Forums

Adding noise given by Noise Factor

Started by Peter Mairhofer February 11, 2016
On 2016-02-11 12:11, Eric Jacobsen wrote:
> [...] > I suspect you're modelling an amplifier since you're interested in > IP3, and if it's an LNA then there's a slight conceptual difference in > how to treat it compare to other devices/functions, like a filter or > something. For something like a filter or mixer, the Noise Figure > is pretty easy to sort out as the ratio you've indicated, > SNRout/SNRin, but that's because typically there is already > significant thermal noise that is already there at the input.
As indicated in a different post, it is not am amplifier/LNA alone but the whole receiver. Since it is an integrated receiver I cannot separate the different stages and hence Frii's equation does not hold. Yes, the LNA may be the largest noise contributor but not by much. Noise contributions of different sources are pretty similar in my case.
> In typical receiver systems, the majority of the thermal noise comes > from the LNA (that's actually its job, kinda), so if you're modelling > an LNA, then you'll have the situation that you mentioned, where the > input may be pristine but the output will have a finite SNR. In > this case I find it easier to think of it as a noise source and use > the usual GkTB process to model the appropriate output noise level.
It's a very un-typical system: It is not a conventional wireless receiver where I have weak input signals or blockers; I can decide which signal level I want at the receiver input. Hence I can freely trade noise versus linearity and pick the input signal level that makes implementation the easiest. Also, the biggest reason I need the LNA in the first place is impedance matching rather than low noise contribution (due to strong input signal). Peter
On Thu, 11 Feb 2016 14:14:04 -0800, Peter Mairhofer <63832452@gmx.net>
wrote:

>On 2016-02-11 12:11, Eric Jacobsen wrote: >> [...] >> I suspect you're modelling an amplifier since you're interested in >> IP3, and if it's an LNA then there's a slight conceptual difference in >> how to treat it compare to other devices/functions, like a filter or >> something. For something like a filter or mixer, the Noise Figure >> is pretty easy to sort out as the ratio you've indicated, >> SNRout/SNRin, but that's because typically there is already >> significant thermal noise that is already there at the input. > >As indicated in a different post, it is not am amplifier/LNA alone but >the whole receiver. Since it is an integrated receiver I cannot separate >the different stages and hence Frii's equation does not hold. Yes, the >LNA may be the largest noise contributor but not by much. Noise >contributions of different sources are pretty similar in my case. > >> In typical receiver systems, the majority of the thermal noise comes >> from the LNA (that's actually its job, kinda), so if you're modelling >> an LNA, then you'll have the situation that you mentioned, where the >> input may be pristine but the output will have a finite SNR. In >> this case I find it easier to think of it as a noise source and use >> the usual GkTB process to model the appropriate output noise level. > >It's a very un-typical system: It is not a conventional wireless >receiver where I have weak input signals or blockers; I can decide which >signal level I want at the receiver input. Hence I can freely trade >noise versus linearity and pick the input signal level that makes >implementation the easiest. Also, the biggest reason I need the LNA in >the first place is impedance matching rather than low noise contribution >(due to strong input signal). > >Peter
It sounds like an important part of the tradeoff is whether you can get an accurate enough model without breaking it up and modelling the functions separately, e.g., LNA, mixer, filter, etc. That's more work, but also probably a lot more accurate. How accurate it needs to be is up to you. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
Peter Mairhofer  <63832452@gmx.net> wrote:

>One question though:
>fs = 800e6; >BW = fs/2; >N = 2^16;
>x0 = randn(N,1);
>NF = 10; % 10 dB >nf = 10^(NF/10); > >Rs = 50; >kT = 300*1.38e-23; > >% signal after the antenna (the -174dBc/Hz noise) >xn = x0 + sqrt(4*kT*BW*Rs)*randn(size(xn)); > >% add noise according to NF >sigma2 = (nf-1)*4*kT*BW*Rs; >yn = xn + sqrt(sigma2)*randn(size(xn)); > >% calculate SNR >SNR1 = 20*log10(norm(x0-yn)/norm(x0)) > >This example gives -84.8450 dB. >Now I could use the well known equation for sensitivity to obtain the >SNR level (-30 converts dBm to volts): > >SNR2 = -174 - 30 - 10*log10(var(x0)/(2*Rs)) + 10*log10(BW) + NF > >which gives -87.9918 dB - off by 3dB from the first method. Turns out >results match when I double the BW in this equation: > >SNR3 = -174 - 30 - 10*log10(var(x0)/100) + 10*log10(2*BW) + NF > >-84.9951 dB > > >Why?
Great question. I will look into this shortly. Steve
On Thu, 11 Feb 2016 14:04:30 -0800, Peter Mairhofer wrote:

> On 2016-02-11 12:39, Tim Wescott wrote: >> On Thu, 11 Feb 2016 01:36:45 -0800, Peter Mairhofer wrote: >> [...] >> Using a Taylor-series expansion may get you _A_ system that has a 3rd- >> order intercept point that matches, for the test you're using, but most >> system nonlinearities aren't just f(x) = x + A*x^3. For instance, a >> front end that hard limits at some voltage has a 3rd-order intercept >> point, but it'll respond to three signals significantly differently >> (worse) than the one you're proposing. I'm pretty sure that MOST real >> systems will be worse -- go dig for white papers to be sure. > > I know it's just a rough approximation if I assume the system is weakly > nonlinear, the nonlinearity is memory less and the third-order term > dominates. > > I need an easy model. I may add 2nd order term but this is (hopefully) > significantly lower. P1dB compression point may be a better measure but > I would not know how to model it. So I would use IIP3 as a first order > estimate and add 10-20dB margin. If you have something special in mind > please let me know. > > Thanks Peter
I don't. I know how to measure 3rd-order intercept, but no clue of the right way to model it at the system level. -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
Tim Wescott  <seemywebsite@myfooter.really> wrote:

>On Thu, 11 Feb 2016 14:04:30 -0800, Peter Mairhofer wrote:
>> I would not know how to model it.
>I don't. I know how to measure 3rd-order intercept, but no clue of the >right way to model it at the system level.
The RAPP model is popular. Vout = Vin / ( (1 + abs(Vin)^2p) ^ (1/2p)) There is one free parameter p, which you would like to be around 3 or better, whereas a poorly-designed amplifier might have a p as low as 2 or even 1.5. Steve
On 2016-02-11 15:06, Eric Jacobsen wrote:
> [...] > It sounds like an important part of the tradeoff is whether you can > get an accurate enough model without breaking it up and modelling the > functions separately, e.g., LNA, mixer, filter, etc. That's more > work, but also probably a lot more accurate. How accurate it needs > to be is up to you.
I agree. On the other hand I think that's not feasible. In "classical" RF you can separate these stages. A modern integrated radio uses a passive mixer in current mode which is driven by an LNTA and followed by a TIA (which acts as baseband filter). All the impedances are "arbitrary" (not 50 Ohm or so) and interact wildly because they do not decoupled; the passive mixer translates impedances in both directions. Knowing linearity of the mixer itself tells me nothing about the overall linearity (except it's possibly not higher). To my knowledge, there is no easy model for this; I think the best option is to do a circuit level simulation on overall NF and IIP3 and plug it into the system level simulation. Peter
On Fri, 12 Feb 2016 10:14:44 -0800, Peter Mairhofer <63832452@gmx.net>
wrote:

>On 2016-02-11 15:06, Eric Jacobsen wrote: >> [...] >> It sounds like an important part of the tradeoff is whether you can >> get an accurate enough model without breaking it up and modelling the >> functions separately, e.g., LNA, mixer, filter, etc. That's more >> work, but also probably a lot more accurate. How accurate it needs >> to be is up to you. > >I agree. On the other hand I think that's not feasible. In "classical" >RF you can separate these stages. A modern integrated radio uses a >passive mixer in current mode which is driven by an LNTA and followed by >a TIA (which acts as baseband filter). All the impedances are >"arbitrary" (not 50 Ohm or so) and interact wildly because they do not >decoupled; the passive mixer translates impedances in both directions. >Knowing linearity of the mixer itself tells me nothing about the overall >linearity (except it's possibly not higher). To my knowledge, there is >no easy model for this; I think the best option is to do a circuit level >simulation on overall NF and IIP3 and plug it into the system level >simulation. > >Peter
Ah, I'm beginning to see the issue and your overall problem. You may be right on the circuit level sim, assuming it has sufficient accuracy. Sounds like a reasonable approach. Good luck with it! Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com
On 2016-02-11 15:14, Steve Pope wrote:
> Peter Mairhofer <63832452@gmx.net> wrote: > >> One question though: > >> fs = 800e6; >> BW = fs/2; >> N = 2^16; > >> x0 = randn(N,1); > >> NF = 10; % 10 dB >> nf = 10^(NF/10); >> >> Rs = 50; >> kT = 300*1.38e-23; >> >> % signal after the antenna (the -174dBc/Hz noise) >> xn = x0 + sqrt(4*kT*BW*Rs)*randn(size(xn)); >> >> % add noise according to NF >> sigma2 = (nf-1)*4*kT*BW*Rs; >> yn = xn + sqrt(sigma2)*randn(size(xn)); >> >> % calculate SNR >> SNR1 = 20*log10(norm(x0-yn)/norm(x0)) >> >> This example gives -84.8450 dB. >> Now I could use the well known equation for sensitivity to obtain the >> SNR level (-30 converts dBm to volts): >> >> SNR2 = -174 - 30 - 10*log10(var(x0)/(2*Rs)) + 10*log10(BW) + NF >> >> which gives -87.9918 dB - off by 3dB from the first method. Turns out >> results match when I double the BW in this equation: >> >> SNR3 = -174 - 30 - 10*log10(var(x0)/100) + 10*log10(2*BW) + NF >> >> -84.9951 dB >> >> >> Why? > > Great question. > > I will look into this shortly.
Thanks. The variance of the discrete-time samples is just 1/2 of the variance of the continuous time noise. So something with single-sideband vs. doube sideband. If I suppose that the continuous-time version is correct, i.e.: SNR3 = 10*log10(kT) - 10*log10(Vi_squared/(2R)) + 10*log10(BW) + NF then I would understand if the variance of the discrete-time version would need to be *doubled* (because of folding). But it is *halfed* which confuses me. Peter
Peter Mairhofer  <63832452@gmx.net> wrote:

>> Peter Mairhofer <63832452@gmx.net> wrote:
>>> Why?
>> Great question.
>> I will look into this shortly.
>The variance of the discrete-time samples is just 1/2 of the variance of >the continuous time noise. So something with single-sideband vs. doube >sideband.
That could be the source of the 3 dB discrepancy - perhaps the textbook formula you used may assume a complex noise signal and so the total noise needs to be 3 dB greater (than that of a real noise signal) to equivalently impair a signal of interest which is purely real. (Although this seems a bit wonky to me.) If I do something like the following in Matlab: x = randn(1,2^16); [ b , a ] = butter(3, 0.25 / 1.15 , 'low'); y = filter(b,a,x); level1 = norm(x) / sqrt(length(x)) level2 = norm(y) / sqrt(length(y)) (using the fact that the noise bandwidth of a 3-pole Butterworth LPF is 1.15 times its 3 dB bandwidht) I get the expected result of level2 = 0.5 * level1 , that is, one-quarter of the noise power makes it through the filter, whose noise bandwidth is 0.25 * Fs/2. This makes clear (to me, anyway) that treating the thermal noise as uniform from DC to Fs/2 gives the correct noise density. Steve
On Sun, 14 Feb 2016 17:16:01 -0800, Peter Mairhofer <63832452@gmx.net>
wrote:

>On 2016-02-11 15:14, Steve Pope wrote: >> Peter Mairhofer <63832452@gmx.net> wrote: >> >>> One question though: >> >>> fs = 800e6; >>> BW = fs/2; >>> N = 2^16; >> >>> x0 = randn(N,1); >> >>> NF = 10; % 10 dB >>> nf = 10^(NF/10); >>> >>> Rs = 50; >>> kT = 300*1.38e-23; >>> >>> % signal after the antenna (the -174dBc/Hz noise) >>> xn = x0 + sqrt(4*kT*BW*Rs)*randn(size(xn)); >>> >>> % add noise according to NF >>> sigma2 = (nf-1)*4*kT*BW*Rs; >>> yn = xn + sqrt(sigma2)*randn(size(xn)); >>> >>> % calculate SNR >>> SNR1 = 20*log10(norm(x0-yn)/norm(x0)) >>> >>> This example gives -84.8450 dB. >>> Now I could use the well known equation for sensitivity to obtain the >>> SNR level (-30 converts dBm to volts): >>> >>> SNR2 = -174 - 30 - 10*log10(var(x0)/(2*Rs)) + 10*log10(BW) + NF >>> >>> which gives -87.9918 dB - off by 3dB from the first method. Turns out >>> results match when I double the BW in this equation: >>> >>> SNR3 = -174 - 30 - 10*log10(var(x0)/100) + 10*log10(2*BW) + NF >>> >>> -84.9951 dB >>> >>> >>> Why? >> >> Great question. >> >> I will look into this shortly. > >Thanks. > >The variance of the discrete-time samples is just 1/2 of the variance of >the continuous time noise. So something with single-sideband vs. doube >sideband. > >If I suppose that the continuous-time version is correct, i.e.: > >SNR3 = 10*log10(kT) - 10*log10(Vi_squared/(2R)) + 10*log10(BW) + NF > >then I would understand if the variance of the discrete-time version >would need to be *doubled* (because of folding). But it is *halfed* >which confuses me. > >Peter
There are a frustratingly large number of potential sources of factors-of-two errors in SNR calibration. Sometimes for a sanity check, if the signal characeteristics allow, a spectral plot of the signal in noise might provide an easy graphical estimation of (S+N)/N, which can be adjusted to estimate SNR. If the results of this match your computed estimate, or are off by the same 3dB, it can sometimes save a lot of head-scratching. Eric Jacobsen Anchor Hill Communications http://www.anchorhill.com