Анализ простого ADC с ухудшениями

В этом примере показано, как реализовать основной ADC с помощью блока Zero-Order Hold в качестве сэмплера. Этот простой ADC подсвечивает некоторые типичные ухудшения, введенные в аналого-цифровые конвертеры, такие как апертурное дрожание, нелинейность, квантование и насыщение. В этом примере показано, как измерить эффекты таких ухудшений с помощью блока Spectrum Analyzer и блока ADC AC Measurement из Mixed-Signal Blockset™. Чтобы лучше аппроксимировать реальную эффективность, можно индивидуально включить ухудшения в модели.

model = 'MSADCImpairments';
open_system(model)

Чтобы наблюдать поведение идеального ADC, обойдите ухудшения с помощью переключателей. Установите источник Sine wave генерировать два тона как входной сигнал.

set_param([model '/Aperture Jitter'],'sw','1');
set_param([model '/Non Linearity'],'sw','0');
set_param([model '/Quantization and Saturation'],'sw','0');
set_param([model '/Sine Wave'],'Frequency', '2*pi*[47 53]*1e6');

Симулируйте модель и наблюдайте ожидаемый чистый выходной спектр ADC.

sim(model);

Эффект апертурного дрожания

Установите первый переключатель на вниз положение. Блок Variable Delay задерживает выборку выборкой сигнала суммой на ее входе td. Блок Noise Source генерирует универсальную случайную переменную, которая является lowpass, отфильтрованным Формой блок спектра шума дрожания, прежде чем это прибудет во вход td к Переменной Задержке. Используйте имеющее форму универсальное шумовое распределение, чтобы представлять дрожание. Заметьте, что в этой модели, часы ADC заданы в идеальном нулевом порядке, содержат блок, и это равно 1/фс, где Фс является переменной MATLAB®, заданной в коллбэке инициализации модели и равной 1.024 GHz.

set_param([model '/Aperture Jitter'],'sw','0');

Как ожидалось спектр ухудшается из-за присутствия дрожания.

sim(model);

Эффект нелинейности

Установите второй переключатель на положение. Это включает нелинейность ADC. Масштабированная гиперболическая функция тангенса обеспечивает нелинейность. Ее масштабный коэффициент, альфа, определяет сумму нелинейности, tanh применяется к сигналу. По умолчанию альфой является 0.01.

set_param([model '/Non Linearity'],'sw','1');

Спектр ухудшается из-за нелинейности, когда гармоники высшего порядка сгенерированы.

sim(model);

Эффект квантования и насыщения

Установите третий переключатель на положение, разрешающее квантование ADC и трудное насыщение.

set_param([model '/Quantization and Saturation'],'sw','1');

Спектр ухудшается из-за эффектов квантования. Уровень шума повышает, как замечено в спектре.

sim(model);

Измерения AC ADC

Используйте блок ADC AC Measurement в Mixed-Signal Blockset™, чтобы измерить шумовой уровень ADC и вычислить эффективное количество битов (ENOB).

Используйте один синусоидальный тон, как введено для ADC, чтобы измерить другие метрики.

bdclose(model);
model = 'MSADCImpairments_AC';
open_system(model);

Ftest = 33/round(2*pi*2^8)*Fs;
set_param([model '/Sine Wave'],'Frequency', '2*pi*Ftest');

scopecfg = get_param([model '/Spectrum Scope'], 'ScopeConfiguration');
scopecfg.DistortionMeasurements.Algorithm = 'Harmonic';
scopecfg.FFTLength = '512';
scopecfg.WindowLength = '512';

sim(model);

Блок Aperture Jitter Measurement из Mixed-Signal Blockset™ измеряет среднее дрожание, введенное на сигнале быть приблизительно равным 1 PS.

Кроме того, используйте спектр анализатор, чтобы измериться:

  • Выведите точку пересечения третьего порядка (OIP3)

  • Сигнал к шумовому отношению (ОСШ)

  • Общее гармоническое искажение (THD)

Увеличьте факторную альфу, чтобы увеличить нелинейность ADC и сделать эффекты из нелинейности более очевидными сверх уровня шума. Это только в демонстрационных целях.

alpha = 0.8;

Используйте два тональных тестовых сигнала, как введено для ADC для измерений интермодуляции.

set_param([model '/Sine Wave'],'Frequency', '2*pi*[50e6 75e6]');

Чтобы включить измерения искажения в спектре анализатор, нажмите на Distortion Measurement как в рисунке ниже и выберите Intermodulation как тип Искажения.

scopecfg.DistortionMeasurements.Algorithm = 'Intermodulation';
scopecfg.FFTLength = '4096';
scopecfg.WindowLength = '4096';

sim(model);

Осциллограф допускает измерение третьих продуктов порядка, смежных с входными сигналами, и решает, что выход отослал точку пересечения третьего порядка.

Смотрите также

| |

Похожие темы