Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

SNR, SINAD, THD and ENOB measurement of an ADC using Spectre

Status
Not open for further replies.

vijay_nag

Advanced Member level 4
Joined
Apr 26, 2005
Messages
107
Helped
8
Reputation
16
Reaction score
4
Trophy points
1,298
Location
india
Activity points
2,089
sinad measurement

Hi,

I am trying to measure the above mentioned dynamic specs of an ADC in Spectre. My ADC is a pipelined, 8-bit and operating at 80MSPS. What i am doing is giving a sinusoidal input of 9MHz and sampling frequency of 60MHz. The input frequency i decided using fin/fs=Mc/M formula. I am using transient simulations with strobestart=1/60MHz and strobestop=128/60MHz and strobe period=1/60MHz. Transient simulations are being run for 128/60MHz. After the simulation i am using the dft function in the calculator for plotting the results. I am entering the following values from=1.667nS(1/60MHz) to=2.1334uS (128/60MHz) ,number of samples=128 and window type as rectangular. This method is explained in the IEEE Std 1241-2000 (which is a standard meant for testing ADCs) and also in this link https://www.designers-guide.org/Forum/YaBB.pl?num=1118555245 . In the result i do not get any noise floor. Am i doing anything wrong?
I also tried to see posts on similar topic in this board. But the answers were not satisfactory.

Regards,
Vijay
 

spectre transient noise

You are basically making a mistake here. The main noise contribution comes from the quantization noise which is at about 60 MHz. Some extra noise is aded due to device non-liniarities etc.... By sampling with Nyquist Criterion or nearly to that, you are not allowing the noise flour to appear in your calculations. To see your noise flour to some better degree of accuracy I would suggest you to take 50 samples per clock cycle. So it comes about 128*50=6400 samples or more in your circuit. If you are performing a consevative analysis in your Spectre transient simulations, there is no loss in this sampling process. Otherwise I cant assure you about the accuracy of results due to sampling data loses.

Hope it helps you.
 

enob adc

Hi
if you want to measure sinad you must have noise in transient analysis.
But I don't know it is possible in cadence.
regards
 

sinad matlab

you should choose anathor sampling frequency.
for example, fs=64MHz.

as to your said,fin/fs=Mc/M. however, Mc must be integer.right? you should check it. I found your choose is wrong.:)

if it's still wrong, you can upload the results image. let us discuss it.
 

spectre enob

If you do non-coherent sampling, you will see that the quantization noise actually adds up to the harmonics.
The formula fin/fs = Mc/M, which should have Mc as an integer and M a power of 2 to use the radix algorithm. 128/60 will not give you integer cycles, if i am not wrong. Rather look it in terms of 1/9 MHz. This should solve the problem.

I really do not understand the quantization noise being present only at a certain frequency as pointed by kishore. Since, it is correlated noise, it should be white. And also there is no need to worry about the KT/C noise and other device noises. You are doing a 8-bit ADC, which I assume has 3 bits resolution in two stages and the final stage kind of resolves the remaining bits. So, a high gain in the first stage will take care of device noises. In the later versions of Cadence (mmsim simulator), I have a transient noise option, which can be checked. I do not know whether you have that option

What you should be worrying is whether your sampling is coherent or not ? If you have any other problem, use Hanning window, which is reliable for non-coherent sampling.
 

sinad vs snr

@Vamsi

Your point seems good. Actually incrasing the sampling rate should also avoid the effects of windowing and coherent sampling effects AFAIK. What do you think about it??

@Nag

You seems to be not using the dB scale on the Y-axis if you are not at all able to look the noise flour. Try to use db20 scale for the y-axis. Often the noise is so low that you will not be able to look at it on the amplitude scale.
 

enob measurement

hr_rezaee said:
Hi
if you want to measure sinad you must have noise in transient analysis.
But I don't know it is possible in cadence.
regards

hi

is including noise must for measuring these specs?

-vijay
 

sinad

Hi
to measure real SNR you must have noise except quantization noise.
regards
 

spectre snr

it doesn't include the noise of MOS and kT/C noise in transient simulation, so these effect can't be demonstrated
 

measure enob simulate

In the later versions of Cadence (mmsim simulator), I have a transient noise option, which can be checked. I do not know whether you have that option
Hi
so what is this?
regards
 

sinad snr

hi,

after doing some study i have finally used this approach. following are the steps.
1. run a transient analysis to record 2048 points.
2. generate the stair output of the ADC using the digital outputs.
3. divide this by 2^N where N is the number of bits of the ADC output.
4. using dft function in the calculator generate the frequency plot.

please suggest whether this approach is correct. i am going to use this plot to measure the dynamic specs. but i have a doubt. does the dft use the rms value to generate the plot. because all the specs are w.r.t. rms values.

regards,
vijay
 

relation enob sinad

You forgot to post how many cycles you simulated for the input sinusoid. Are you not running out of memory for such a large number of transition steps???

Assuming that you simulated for two or three cycles that should be a pretty good number AFAIK. DFT gives amplitude of the components. When you plot it is called Amplitude plot and phase plot if you want to a hard rule and dont want to go into the mathematical details.
 

thd measurement

gunturikishore said:
You forgot to post how many cycles you simulated for the input sinusoid. Are you not running out of memory for such a large number of transition steps???

Assuming that you simulated for two or three cycles that should be a pretty good number AFAIK. DFT gives amplitude of the components. When you plot it is called Amplitude plot and phase plot if you want to a hard rule and dont want to go into the mathematical details.

hi gunturikishore,

i am simulating for 307 cycles for the input with total number of records=2048. fin=9.21MHz and fsample=61.44MHz and the ADC is 8 bit. for now i am simulating using an ideal ADC so it is not taking much memory. i wanted to confirm my testbench and measurement before going ahead with the actual ADC.
i am getting the dft plot. but now i want to measure the dynamic specifications from it. can you tell me how do i go ahead?

regards,
vijay
 

how to get enob for adc in matlab

Hi,

I made the following program to tell you how much erroneous your results can be if you wont understand the coherent sampling problem in DSP. I made it for SCILAB which is an open source tool equivalent to MATLAB.

You execute the following program in any tool available to you in MATLAB or SCILAB and try to estimate the possible resulting error for you.

Coherent sampling is very very important in such calculations. Otherwise I am sure you will get error in your calculations.

clear();
t= 0:0.01:1-0.01;
s1 = sin(2*%pi*10*t);
F1 = fft(s1);
F2 = abs(F1);
plot2d3(F2); //use stem in MATLAB instead of plot2d3 function

t1 = 0: 0.01: 1; //Try upto 1+0.01 also
s2 = sin(2*%pi*10*t1);
F3 = fft(s2);
F4 = abs(F3);
scf(); //Use window(2) in MATLAB instead of scf()
plot2d3(F4); //Use stem in Matlab instead of plot2d3 function

Added after 22 minutes:

Please ensure that your clock frequency is exact integral multiple of input frequency. Also take samples equivalent to clock or multiples of clock. For example in 10MHz input and 60MHz clock, take either 60 samples or 120 samples. Dont take something in between this number.

Added after 18 minutes:

sorry for the goof up....with your fractional numbers I forgot and thought not meeting the criterion of coherent sampling. But I checked just now. Don't get surprised if you don't get any noise floor also. Also with ideal ADC you will never get any.
 

matlab sinad

hi,

before doing dft on the digital outputs i generate a stair wave, normalize it i.e., divide by 2^N. how do i normalize the signed output of the ADC? my ADC is 8 bit value and 1 bit sign.

regards,
vijay
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top