sapphire
|
Hi,
I am trying to simulate the thermal noise of a simple RC filter. The resistor is 1K ohm and the capacitor is 1pF. So the noise BW is slightly more than 200MHz. In the transient noise setup, I choose Fmax=2GHz. I simulated for 1ms, with the strobe period=1m/1024.
For 1pF, the KT/C noise should be 64uV. From the fft spectrum, we can integrate the noise spectrum from DC to the nyquist rate, which should be equal to 64uV in theory. However, what I got is 81uV.
Then, I exported the data to matlab, and from there I calculated that the noise is 58uV, which is closer. But it's still not matching the estimate. My question is what may cause this difference and how to setup the simulationa and calculation correctly?
Sapphire
Attached is an ocean script that was used to calculate the cadence fft
Ttot=1m fres=1/Ttot fin=5000 sbin=round(fin/fres) N=1024
fft=dft(VT("/vout"),0,Ttot,N,"Rectangular",1,1)
signal=abs(value(fft,fres*sbin,?histoDisplay nil ,?noOfHistoBins 1))**2
totpow=0 bin=1 while( (bin<=N/2) totpow=totpow+abs(value(fft,fres*bin,?histoDisplay nil ,?noOfHistoBins 1 ))**2 bin=bin+1 )
thermal_noise=sqrt(totpow-signal)
printf("thermal noise voltage=%f \n" thermal_noise)
|