The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Sep 11th, 2024, 2:19am
Pages: 1
Send Topic Print
DNL of 9 bit ADC in Spectre (Read 13123 times)
Mischivis
New Member
*
Offline



Posts: 4

DNL of 9 bit ADC in Spectre
Mar 17th, 2011, 11:06am
 
I have a question concerning how to get the DNL plot of my 9 bit ADC.
I have a ramp input that goes to fullscale.  The output is a plot of all the codes from 0 to 511 with time on the X-axis.  Each step of the output is 1 LSB (1V).  My question is how do you get the DNL from this plot?  Every reference material I see concerning the DNL of an ADC has the input voltage on the X-axis.  So what I need, I guess, is each step of the output as a function of the input voltage instead of time.
Because if I take the DNL of the plot of the output versus time, it is 0 because each step is exactly 1 LSB!
Back to top
 
 
View Profile   IP Logged
sheldon
Community Fellow
*****
Offline



Posts: 751

Re: DNL of 9 bit ADC in Spectre
Reply #1 - Mar 17th, 2011, 4:37pm
 
Mischivis,

  Use an ideal ADC to generate the ideal digital codes for the ramp,
plot the two results together, then set the x-axis to the ideal digital
codes.

                                                                Best Regards,

                                                                    Sheldon
Back to top
 
 
View Profile   IP Logged
sheldon
Community Fellow
*****
Offline



Posts: 751

Re: DNL of 9 bit ADC in Spectre
Reply #2 - Mar 17th, 2011, 5:30pm
 
Mischivis,

 Sorry, the nuclear power plants melting down have got me a little
distracted. Some corrections:

1)   Connect an ideal ADC and DAC in series
     I usually just edit the ahdlLib 8 bit ideal components to create
     whatever ideal components I need.

2)  Set the DAC lsb =1V, so the full scale range in your case will
    be 511
    This setup will generate an analog waveform, a staircase, with
    values proportional to the digital codes.

Another option would to use a slow ramp, 0s --> 511s, then you could
directly plot the dnl vs. time.

                                                                    Best Regards,

                                                                        Sheldon
Back to top
 
 
View Profile   IP Logged
Mischivis
New Member
*
Offline



Posts: 4

Re: DNL of 9 bit ADC in Spectre
Reply #3 - Mar 17th, 2011, 7:35pm
 
I am doing exactly as you describe.  I have a ramp going into my ADC.  The output of the ADC feeds an ideal DAC which generates a staircase waveform going from 0 to 511 in time.  Each step is exactly 1.  Every reference I see showing the staircase of an ADC shows
the code versus the analog input voltage.  And then you can find
the DNL by measuring the different widths of analog voltage.  However, my waveform shows the code versus time!  How do I map
back to analog input voltage so I can take the DNL/INL?
Back to top
 
 
View Profile   IP Logged
RobG
Community Fellow
*****
Offline



Posts: 570
Bozeman, MT
Re: DNL of 9 bit ADC in Spectre
Reply #4 - Mar 21st, 2011, 4:28pm
 
I'm not sure, but I think the answer you are looking for is to measure the amount time each code is present. Ideally (if you have 512 levels) each level should be present for 1/512 of the total time. If the ADC has some DNL error the amount of time each code is present will be proportional to the DNL+1.

I think I had a clever way of doing this with a ramp input using the cadence calculator, but I can't remember it! Perhaps I just sampled the digital output and exported it to Matlab. From there you do a histogram of the codes and compare it to the ideal histogram.
Back to top
 
 
View Profile   IP Logged
RobG
Community Fellow
*****
Offline



Posts: 570
Bozeman, MT
Re: DNL of 9 bit ADC in Spectre
Reply #5 - Mar 21st, 2011, 4:49pm
 
Mischivis wrote on Mar 17th, 2011, 7:35pm:
I am doing exactly as you describe.  I have a ramp going into my ADC.  The output of the ADC feeds an ideal DAC which generates a staircase waveform going from 0 to 511 in time.  Each step is exactly 1.  Every reference I see showing the staircase of an ADC shows
the code versus the analog input voltage.  And then you can find
the DNL by measuring the different widths of analog voltage.  However, my waveform shows the code versus time!  How do I map
back to analog input voltage so I can take the DNL/INL?


Oh, if you just want code vs input voltage (using the cadence calculator -- not matlab) you should re-ask the question with a better title on the simulator board http://www.designers-guide.org/Forum/YaBB.pl?board=circuit. There may be a way to plot one output vs. another, but I have never been able to find it. Let me know if you find a way.

I'd just print the Digout vs time and whiteout the time values and pencil in the input voltage values Wink.

I see the calculator in IC6 has a "DNL" function but I don't know how it works. I can't even figure out how to export the data with this new calculator.

Back to top
 
 
View Profile   IP Logged
sheldon
Community Fellow
*****
Offline



Posts: 751

Re: DNL of 9 bit ADC in Spectre
Reply #6 - Mar 22nd, 2011, 5:19am
 
Rob,

 The ability to change the X-axis has been in Virtuoso for a long time,
look at the x-axis properties and change the variables. As for sending
data to the calculator in IC61, hover the mouse over the data you
want to plot and click the right mouse button [RMB]. While holding the
RMB down select calculator from the menu.

                                                              Best Regards,

                                                                Sheldon
Back to top
 
 
View Profile   IP Logged
sheldon
Community Fellow
*****
Offline



Posts: 751

Re: DNL of 9 bit ADC in Spectre
Reply #7 - Mar 22nd, 2011, 5:24am
 
Mischivis,

You specify 5141 or 61

As I remember in 5141 (it has been a while)
1) Open the X-axis options menu from the pull-down menus
2) Change the x-axis variable to the DAC output

In 61
1) Select the x-axis
2) Edit the x-axis properties, RMB --> properties
3) Change the x-axis variable from time to the output of the DAC

                                                                 Best Regards,

                                                                    Sheldon
Back to top
 
 
View Profile   IP Logged
RobG
Community Fellow
*****
Offline



Posts: 570
Bozeman, MT
Re: DNL of 9 bit ADC in Spectre
Reply #8 - Mar 22nd, 2011, 6:22am
 
sheldon wrote on Mar 22nd, 2011, 5:19am:
Rob,

 The ability to change the X-axis has been in Virtuoso for a long time,
look at the x-axis properties and change the variables.

Thanks, but did you have to point out that "long time" part  ;D I actually think I figured it out and then forgot it now that you mention it.

Quote:
As for sending
data to the calculator in IC61, hover the mouse over the data you
want to plot and click the right mouse button [RMB]. While holding the
RMB down select calculator from the menu.

Not sure what you are describing, but I want to send the data to an external file and process it with Matlab. I think it was the "printvs" command that used to do it.  I'm sure it is something simple... I just haven't had enough time to search it out. Maybe the OP needs to know too.

Wanna give a quick primer on what the dnl function does?

Rob

Back to top
 
 
View Profile   IP Logged
sheldon
Community Fellow
*****
Offline



Posts: 751

Re: DNL of 9 bit ADC in Spectre
Reply #9 - Mar 22nd, 2011, 9:35am
 
Rob,

  Actually one of the AEs in our office wrote a manual that covers all
the calculator function and he has been waiting for me to review it before publishing it. There is a nice dnl example in the manual. Guess
I need to get busy.

                                                            Best Regards,

                                                              Sheldon
Back to top
 
 
View Profile   IP Logged
loose-electron
Senior Fellow
******
Offline

Best Design Tool =
Capable Designers

Posts: 1638
San Diego California
Re: DNL of 9 bit ADC in Spectre
Reply #10 - Mar 24th, 2011, 6:43am
 
you can also pull the time domain data over into Matlab or even Excel and deal with it.
Back to top
 
 

Jerry Twomey
www.effectiveelectrons.com
Read My Electronic Design Column Here
Contract IC-PCB-System Design - Analog, Mixed Signal, RF & Medical
View Profile WWW   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.