Hi all, I have been trying to verify the variance (total power) of a random normal distributed noise source. The noise source model has been modified from the noise_src in ahdlLib but with $rdist_normal() rather than $random()/`MAXINT V(vout) <+ amp*$rdist_normal(seed,0,1); where amp is exactly one sigma in normal distribution case. In this example I give amp = 100u and the resulting output random signal is shown below: I used to dump this signal to MATLAB and do the FFT & PSD calculations based on the script described in this website: "Power Spectral Density Estimates Using FFT" www.mathworks.com/.../power-spectral-density-estimates-using-fft.html Take nfft = 65536, sampling time = 1/1GHz. The resulting integral of the overall spectrum is EXACTLY equal to sigma^2 = (100u)^2. The PSD setup in VIVA Calculator and the result are shown as follows: Then I apply iinteg to the PSD and take square root, and the integrated value at the final data point (0.5*sampling frequency) is expected to be sigma=100u. However, the outcome seems to be smaller than what is expected. ( (82u-100u)/100u ~ -18% error) There is still a constant -18% error no matter what sigma value I give. I also ran transient noise simulation with the resistor model given in analogLib to verify that 4kTR*NoiseFmax = sigma^2. Again, there is a -18% gap between VIVA calculator PSD function and MATLAB PSD. If I extract the PSD data from VIVA calculator and do integration in MATLAB , the result is identical to that done in VIVA calculator. (-18% sigma) Based on the trials given above, I suspect the algorithm of PSD function in VIVA calculator is not what I expect to be. Can someone help me clarify this problem? Thanks a lot :) Version Information virtuoso 6.1.7-64b spectre 16.1.0 32b
↧