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.

Problem with measuring dynamic figure of SAR ADC ?

Status
Not open for further replies.

Electric_Shock

Junior Member level 2
Joined
Nov 9, 2017
Messages
20
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
223
Screenshot_1.png
fft.png
zoomed.png

I design a SAR ADC and using ideal DAC (written in Verilog-A) to convert back to analog signal. I used 1kHz sine wave input, the sampling rate is 100kS/s. But the DFT of output looks so weird (in picture) which does not look like in some papers I read. Did I simulate in wrong way ? Please help me.
 

You don't tell us what those signals are. I can guess the top one is the sampling clock, but I have no idea what the others are, other than the one you actually labelled 'recovered signal'.

But several things jump out to me: the recovered signal looks like it's got a little bit of clipping. or limiting. I assume (just guessing) that your last plot is the fft of the recovered signal, which looks like it has all the odd harmonics. Perhaps that's due to the clipping. Also, if you haven't filtered the recovered signal, the artifacts of sampling will also show up in your fft.
 

Hi,

I´m not very familiar with designing an ADC.

1) you should condiser to use an analog reconstruction filter at the output to smooth the stairs.
2) the ADC resolution is low, thus you get that big stairs.
3) the visible unsymmetry (causing THD) in your output may come from high DNL.
This may be caused by:
* digital code feedback (check DNL when multiple ouputs are switching: at codes 31/32, 63/64, 127/128 ...
* bad GND wiring
* unstable voltage reference
* Ringing of signals (reference, amplifier...)
* or bad timing...

Klaus
 

1. Uses dB instead of Volts.
2. You have mentioned about 100kHz sampling frequency, while DFT is performed up to 1MHz. Why?
3. Ensure input signal not to be a harmonic of sampling frequency
 

Any fourier components above fs/2 are meaningless. Below it you see regular harmonics of 1 kHz input signal, no spurious signal or noise, may be due to insufficient magnitude resolution. As already mentioned, a log (dB) magnitude scaling would give a better view of ADC dynamic.

I also don't understand the "ideal DAC" purpose. Why not analyze the digital ADC output code directly?
 

No, I used 1kHz sine wave input, sampling rate 100kHz. The FFT is 4096 point with rectangular windows
 

Hi,

With a sample rate of 100kHz the FFT can show frequencies up to 50kHz only. This is independent of the counts of the FFT.
The limit is always f_sample/2.

Your picture shows higher frequencies, thus there's something wrong.

Klaus
 

Screenshot_2.png
Here is the my setting of fft calculator in virtuoso. The sampling rate 100kHz here is the sampling rate of my ADC, the testing input is 1kHz sine wave. I wonder whether I should copy the data and do FFT in matlab.
 

Hi,

I never worked with this.

There are two values: "From" and "To".
They are set to "1m" to "2m".
Maybe this is the time setup. Then the shown window size could be 2ms - 1ms = 1ms
Now if one takes 4096 samples within 1ms this means a sampling frequency of 4096/1ms which is 4.096 MHz.
This could explain the output frequency range to be >1MHz.

On the other side I expect it to be 2.048 MHz ... but it shows only maybe 1.024 MHz...

I recommend to read the tool´s documentation.

Klaus
 

Ah. I see. I've just checked it. It actually 2.048Mhz when I set Y-axis to linear scale (in the picture is loga scale). Maybe I am confusing between the sampling rate of ADC(100 kHz or 100 kS/s) and the sampling rate of FFT(4096/1ms). Thank you very much.
 

Hi,

Maybe I am confusing between the sampling rate of ADC(100 kHz or 100 kS/s) and the sampling rate of FFT(4096/1ms). Thank you very much.
You need to set both to the same value.

If you want a window size of 4096 dots with 100kSmpls/s then it should be 4096/100.0001/s = 40.96ms
You just have to set the correct values.

Klaus
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top