Expected Output: 07_conversions

This document shows the expected console output and example figures from all examples in python/src/adctoolbox/examples/07_conversions/.

Summary

All examples in 07_conversions demonstrate unit conversions and metric calculations:

  1. exp_c01: Aliasing and Nyquist zone calculations

  2. exp_c02: Comprehensive unit conversions (9 conversion categories with round-trip validation)

  3. exp_c03: ADC figure of merit calculations (Walden FOM, Schreier FOM, performance limits)

  4. exp_c04: Signal/noise amplitude to SNR conversions

  5. exp_c05: Noise spectral density (NSD) and SNR conversions

Total Examples: 5

exp_c01_aliasing_nyquist_zones.py

Description: Demonstrate aliasing and Nyquist zone calculations.

[Aliasing] Fs = 1100.0 MHz, Fin_target = 123.0 MHz -> F_aliased = 123.0 MHz
[Aliasing 500 frequencies] [Input = 0.0 - 3300.0 MHz] [Output = 0.00 - 548.90 MHz]

[Save fig] -> [D:\ADCToolbox\python\src\adctoolbox\examples\07_conversions\output\exp_c01_aliasing.png]
Aliasing within Nyquist zones

Frequency aliasing visualization across multiple Nyquist zones

exp_c02_unit_conversions.py

Description: Comprehensive unit conversion utilities for ADC testing.

[Unit Conversions for ADC Testing]

[1a. dB -> Magnitude -> dB]
  [dB =  -80] -> [mag = 0.000100] -> [dB = -80.00]
  [dB =  -70] -> [mag = 0.000316] -> [dB = -70.00]
  [dB =  -60] -> [mag = 0.001000] -> [dB = -60.00]
  [dB =  -40] -> [mag = 0.010000] -> [dB = -40.00]
  [dB =  -20] -> [mag = 0.100000] -> [dB = -20.00]

[1b. Magnitude -> dB -> Magnitude]
  [mag = 0.000100] -> [dB = -80.00] -> [mag = 0.000100]
  [mag = 0.001000] -> [dB = -60.00] -> [mag = 0.001000]
  [mag = 0.010000] -> [dB = -40.00] -> [mag = 0.010000]
  [mag = 0.100000] -> [dB = -20.00] -> [mag = 0.100000]
  [mag = 1.000000] -> [dB =   0.00] -> [mag = 1.000000]

[2a. dB -> Power -> dB]
  [dB =   0] -> [power =      1.0x] -> [dB =   0.00]
  [dB =  10] -> [power =     10.0x] -> [dB =  10.00]
  [dB =  20] -> [power =    100.0x] -> [dB =  20.00]
  [dB =  30] -> [power =   1000.0x] -> [dB =  30.00]
  [dB =  40] -> [power =  10000.0x] -> [dB =  40.00]

[2b. Power -> dB -> Power]
  [power =     1x] -> [dB =   0.00] -> [power =      1.0x]
  [power =    10x] -> [dB =  10.00] -> [power =     10.0x]
  [power =   100x] -> [dB =  20.00] -> [power =    100.0x]
  [power =  1000x] -> [dB =  30.00] -> [power =   1000.0x]
  [power = 10000x] -> [dB =  40.00] -> [power =  10000.0x]

[3a. dBm -> Vrms -> dBm (50 ohm)]
  [dBm =  -20] -> [Vrms =   22.36 mV] -> [dBm = -20.00]
  [dBm =  -10] -> [Vrms =   70.71 mV] -> [dBm = -10.00]
  [dBm =    0] -> [Vrms =  223.61 mV] -> [dBm =   0.00]
  [dBm =   10] -> [Vrms =  707.11 mV] -> [dBm =  10.00]
  [dBm =   20] -> [Vrms = 2236.07 mV] -> [dBm =  20.00]

[3b. Vrms -> dBm -> Vrms (50 ohm)]
  [Vrms =    1.0 mV] -> [dBm = -46.99] -> [Vrms =    1.00 mV]
  [Vrms =   10.0 mV] -> [dBm = -26.99] -> [Vrms =   10.00 mV]
  [Vrms =  100.0 mV] -> [dBm =  -6.99] -> [Vrms =  100.00 mV]
  [Vrms =  316.0 mV] -> [dBm =   3.00] -> [Vrms =  316.00 mV]
  [Vrms = 1000.0 mV] -> [dBm =  13.01] -> [Vrms = 1000.00 mV]

[4a. dBm -> mW -> dBm]
  [dBm =  -10] -> [mW =     0.10] -> [dBm = -10.00]
  [dBm =    0] -> [mW =     1.00] -> [dBm =   0.00]
  [dBm =   10] -> [mW =    10.00] -> [dBm =  10.00]
  [dBm =   20] -> [mW =   100.00] -> [dBm =  20.00]
  [dBm =   30] -> [mW =  1000.00] -> [dBm =  30.00]

[4b. mW -> dBm -> mW]
  [mW =     0.1] -> [dBm = -10.00] -> [mW =     0.10]
  [mW =     1.0] -> [dBm =   0.00] -> [mW =     1.00]
  [mW =    10.0] -> [dBm =  10.00] -> [mW =    10.00]
  [mW =   100.0] -> [dBm =  20.00] -> [mW =   100.00]
  [mW =  1000.0] -> [dBm =  30.00] -> [mW =  1000.00]

[5. Sine Wave Amplitude -> Power (50 ohm)]
  [Amplitude = 0.100 V] -> [Power =   0.100 mW] = [-10.00 dBm]
  [Amplitude = 0.316 V] -> [Power =   0.999 mW] = [ -0.01 dBm]
  [Amplitude = 0.500 V] -> [Power =   2.500 mW] = [  3.98 dBm]
  [Amplitude = 1.000 V] -> [Power =  10.000 mW] = [ 10.00 dBm]
  [Amplitude = 2.000 V] -> [Power =  40.000 mW] = [ 16.02 dBm]

[6a. Voltage -> LSB -> Voltage (12-bit ADC, VFS=1V)]
  [V =  100.0 uV] -> [LSB =   0.41] -> [V =  100.0 uV]
  [V =  250.0 uV] -> [LSB =   1.02] -> [V =  250.0 uV]
  [V =  500.0 uV] -> [LSB =   2.05] -> [V =  500.0 uV]
  [V = 1000.0 uV] -> [LSB =   4.10] -> [V = 1000.0 uV]
  [V = 2000.0 uV] -> [LSB =   8.19] -> [V = 2000.0 uV]

[6b. LSB -> Voltage -> LSB (12-bit ADC, VFS=1V)]
  [LSB =   0.50] -> [V =  122.1 uV] -> [LSB =   0.50]
  [LSB =   1.00] -> [V =  244.1 uV] -> [LSB =   1.00]
  [LSB =   2.00] -> [V =  488.3 uV] -> [LSB =   2.00]
  [LSB =   5.00] -> [V = 1220.7 uV] -> [LSB =   5.00]
  [LSB =  10.00] -> [V = 2441.4 uV] -> [LSB =  10.00]

[7a. Frequency -> Bin -> Frequency (Fs=100MHz, N=8192)]
  [Freq =   1.0 MHz] -> [Bin =   82] -> [Freq =  1.00 MHz]
  [Freq =   5.0 MHz] -> [Bin =  410] -> [Freq =  5.00 MHz]
  [Freq =  10.0 MHz] -> [Bin =  819] -> [Freq = 10.00 MHz]
  [Freq =  20.0 MHz] -> [Bin = 1638] -> [Freq = 20.00 MHz]
  [Freq =  40.0 MHz] -> [Bin = 3277] -> [Freq = 40.00 MHz]

[7b. Bin -> Frequency -> Bin (Fs=100MHz, N=8192) - Edge cases]
  [Bin =    1] -> [Freq =  0.012 MHz] -> [Bin =    1]
  [Bin =    2] -> [Freq =  0.024 MHz] -> [Bin =    2]
  [Bin =    3] -> [Freq =  0.037 MHz] -> [Bin =    3]
  [Bin = 4095] -> [Freq = 49.988 MHz] -> [Bin = 4095]
  [Bin = 4096] -> [Freq = 50.000 MHz] -> [Bin = 4096]

[8a. SNDR -> ENOB -> SNDR]
  [SNDR =  50.00 dB] -> [ENOB =   8.01 bit] -> [SNDR =  50.00 dB]
  [SNDR =  60.00 dB] -> [ENOB =   9.67 bit] -> [SNDR =  60.00 dB]
  [SNDR =  70.00 dB] -> [ENOB =  11.34 bit] -> [SNDR =  70.00 dB]
  [SNDR =  80.00 dB] -> [ENOB =  13.00 bit] -> [SNDR =  80.00 dB]
  [SNDR =  90.00 dB] -> [ENOB =  14.66 bit] -> [SNDR =  90.00 dB]

[8b. ENOB -> SNDR -> ENOB]
  [ENOB =   8.00 bit] -> [SNDR =  49.92 dB] -> [ENOB =   8.00 bit]
  [ENOB =  10.00 bit] -> [SNDR =  61.96 dB] -> [ENOB =  10.00 bit]
  [ENOB =  12.00 bit] -> [SNDR =  74.00 dB] -> [ENOB =  12.00 bit]
  [ENOB =  14.00 bit] -> [SNDR =  86.04 dB] -> [ENOB =  14.00 bit]
  [ENOB =  16.00 bit] -> [SNDR =  98.08 dB] -> [ENOB =  16.00 bit]

[9a. SNDR -> NSD -> SNDR (Fs=800MHz, OSR=1)]
  [SNDR =  60.0 dB] -> [NSD = -146.02 dBFS/Hz] -> [SNDR = 60.00 dB]
  [SNDR =  70.0 dB] -> [NSD = -156.02 dBFS/Hz] -> [SNDR = 70.00 dB]
  [SNDR =  80.0 dB] -> [NSD = -166.02 dBFS/Hz] -> [SNDR = 80.00 dB]
  [SNDR =  90.0 dB] -> [NSD = -176.02 dBFS/Hz] -> [SNDR = 90.00 dB]
  [SNDR = 100.0 dB] -> [NSD = -186.02 dBFS/Hz] -> [SNDR = 100.00 dB]

[9b. NSD -> SNDR -> NSD (Fs=800MHz, OSR=1)]
  [NSD = -170 dBFS/Hz] -> [SNDR =  83.98 dB] -> [NSD = -170.00 dBFS/Hz]
  [NSD = -165 dBFS/Hz] -> [SNDR =  78.98 dB] -> [NSD = -165.00 dBFS/Hz]
  [NSD = -160 dBFS/Hz] -> [SNDR =  73.98 dB] -> [NSD = -160.00 dBFS/Hz]
  [NSD = -155 dBFS/Hz] -> [SNDR =  68.98 dB] -> [NSD = -155.00 dBFS/Hz]
  [NSD = -150 dBFS/Hz] -> [SNDR =  63.98 dB] -> [NSD = -150.00 dBFS/Hz]

[Example complete]

exp_c03_calculate_fom.py

Description: Calculate ADC figures of merit (Walden FOM, Schreier FOM, jitter-limited SNR, thermal noise-limited SNR).

[Figure saved] -> D:\ADCToolbox\python\src\adctoolbox\examples\07_conversions\output\exp_c03_calculate_fom.png

======================================================================
ADC Figure of Merit (FOM) Summary
======================================================================

[1. Walden FOM] (Lower is better)
    Formula: Power / (2^ENOB * Fs)
    Example: 10.0 mW, 100 MHz, 10-bit
    FOM = 97.66 fJ/conv-step

[2. Schreier FOM] (Higher is better)
    Formula: SNDR + 10*log10(BW / Power)
    Example: 10.0 mW, 1 MHz BW, 80 dB SNDR
    FOM = 160.0 dB

[3. Jitter-Limited SNR]
    Formula: SNR = -20*log10(2*pi*fin*tj)
    Example: 100 MHz input, 1 fs RMS jitter
    Max SNR = 124.0 dB (20.31-bit ENOB)

[4. Thermal Noise (kT/C) Limited SNR]
    Formula: SNR = 10*log10(P_signal / P_noise)
    Example: 1 pF cap, 1 V full-scale
    Max SNR = 74.8 dB (12.13-bit ENOB)
======================================================================

exp_c04_amplitudes_to_snr.py

Description: Convert signal/noise amplitudes to SNR metrics.

[Figure saved] -> D:\ADCToolbox\python\src\adctoolbox\examples\07_conversions\output\exp_c04_snr_calculations.png

======================================================================
Summary: SNR = 20*log10(A_RMS / noise_RMS) = 20*log10(A/sqrt(2) / sigma)
======================================================================
Signal Amplitude: A = 0.5 V, FSR = 1.0 V

ADC Quantization Noise:
   6-bit: Q-noise= 4510.5 uV, SNR=37.88 dB (Theory=37.88 dB)
   8-bit: Q-noise= 1127.6 uV, SNR=49.93 dB (Theory=49.92 dB)
  10-bit: Q-noise=  281.9 uV, SNR=61.97 dB (Theory=61.96 dB)
  12-bit: Q-noise=   70.5 uV, SNR=74.01 dB (Theory=74.00 dB)
  14-bit: Q-noise=   17.6 uV, SNR=86.05 dB (Theory=86.04 dB)
======================================================================

exp_c05_convert_nsd_snr.py

Description: Convert between NSD and SNR metrics.

[Figure saved] -> D:\ADCToolbox\python\src\adctoolbox\examples\07_conversions\output\exp_c05_nsd_snr_conversions.png

[SNR -> NSD -> SNR Round-trip]
  [SNR = 85.30 dB] -> [NSD = -121.22 dBFS/Hz] -> [SNR = 85.30 dB]