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

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

model = 'MSADCImpairments';
open_system(model)

Чтобы наблюдать поведение идеального АЦП, обойдите нарушения с помощью переключателей. Установите источник 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');

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

sim(model);

Эффект диафрагмы апертуры

Установите первый переключатель в нижнее положение. Блок Переменная Задержка задерживает дискретизацию сигнала на величину на его входе td. Блок Noise Source генерирует равномерную случайную переменную, которая фильтруется нижними частотами блоком Shape the jitter noise spectrum, прежде чем она придет к входу td в Переменную Задержку. Используйте сформированное равномерное шумовое распределение, чтобы представлять дрожание. Заметьте, что в этой модели часы АЦП заданы в идеальном блоке удержания нулевого порядка, и он равен 1/Fs, где Fs является переменной MATLAB ®, заданной в коллбэке инициализации модели и равной 1.024 ГГц.

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

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

sim(model);

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

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

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

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

sim(model);

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

Установите третий переключатель в положение вверх, разрешающее квантование АЦП и жесткое насыщение.

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

Спектр деградирует из-за эффектов квантования. Шумовой пол поднимается, как видно в спектре.

sim(model);

Измерения переменного тока АЦП

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

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

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)

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

alpha = 0.8;

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

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);

Возможности позволяют измерению продуктов третьего порядка рядом с входными сигналами и определяет выход ссылку точки пересечения точку третьего порядка.

См. также

| |

Похожие темы