Подрасполагающийся ADC

В этом примере показано, как смоделировать 6-битный Подрасполагающийся ADC с конвейеризацией и вторым этапом с коррекцией ошибок.

Подрасположение ADCs обычно быстрее, чем дельта сигмы и последовательное приближение ADCs, но обеспечивают меньше разрешения. Типичные частоты дискретизации находятся в 10M область значений выборки/секунда, и типичное разрешение составляет 8 - 16 битов. Дополнительные этапы и/или биты на этап дают к более высоким разрешениям.

Модель

Подрасполагающийся ADC является двумя преобразователями данных этапа. Конвертер первой стадии является 3-битным ADC Flash. Это управляет 3-битным идеальным DAC, который в свою очередь управляет вторым этапом. Второй конвертер этапа является 4-битным ADC флэш-памяти. Дополнительный бит корректирует ошибки в первом ADC и улучшает точность преобразования. Частотой дискретизации ADC является 100 МГц, и задан в коллбэке инициализации модели переменной MATLAB® переменные N1 Fs. Additional MATLAB®, N2, и NBits определяют номер битов для первой стадии, второго этапа и полного конвертера соответственно.

Модель основана на следующем примере по Аналоговым устройствам: Архитектуры ADC V: Конвейерное Подрасположение ADCs.

Первый ADC служит крупным конвертером на 3 бита. Ошибка квантования из-за первого ADC самостоятельно квантуется вторым ADC. Чтобы сгенерировать этот сигнал ошибки, 3-битный DAC преобразует крупный ADC выход в аналоговый сигнал, который вычтен против исходного аналогового входа. Различием является сигнал остатка. Сигнал остатка усилен и преобразовал назад в цифровой сигнал вторым ADC. ADC на 3 бита выход (MSBs) и 4-битный ADC выход (LSBs) конкатенирован, чтобы сформировать полный ADC без знака на 6 битов выход.

model = 'subranging_adc_ac';
load_system(model);
sc = get_param([model '/Spectrum Analyzer'], 'ScopeConfiguration');
sc.DistortionMeasurements.Algorithm = 'Harmonic';
open_system(model);

Динамическое тестирование

Эта модель использует один из двух тестовых источников. Используйте синусоиду для динамического тестирования, e.g. ENoB, ОСШ и SFDR. Используйте сигнал пандуса для статического тестирования, e.g. недостающие коды и кванторы нелинейности.

Чтобы определить ОСШ, ENOB и другие динамические характеристики подрасполагающегося ADC, используют блок ADC AC Measurement из Mixed-Signal Blockset™. Выберите правильное положение переключателя, чтобы использовать Sine wave в качестве входного источника. Установите время остановки симуляции с помощью кнопки на маске блока ADC AC Measurement и установите его тип измерения Искажения, установлен в Harmonic.

set_param([model '/Source Select'],'sw','1');
set_param([model '/ADC AC Measurement'], 'InputFrequency', '10e6');
open_system([model '/Time Scope']);
open_system([model '/Spectrum Analyzer']);
sim(model);

Добавьте другую синусоиду во вход, чтобы протестировать искажение интермодуляции. Наблюдайте и измерьте результаты с помощью блока ADC AC Measurement с его набором типа измерения Искажения к Intermodulation.

set_param([model '/Source Select'],'sw','0');
set_param([model '/ADC AC Measurement'], 'DistortionMeasurement', 'Intermodulation');
sc.DistortionMeasurements.Algorithm = 'Intermodulation';
set_param([model '/ADC AC Measurement'], 'InputFrequency', '[9, 11] * 1e6');
sim(model);

Пропавшие без вести анализа кода

Этот пример использует блок гистограммы, чтобы построить частоту вхождения каждого ADC код выхода. Не прокомментируйте гистограмму путем щелчка правой кнопкой по нему и выбора Uncomment из меню. Используйте блок Ramp в качестве входного источника путем установки входного переключателя на соответствующее положение.

close_system(model, 0);
model = 'subranging_adc_dc';
load_system(model);
set_param([model '/MSB ADC'],'OffsetError','0');
set_param([model '/MSB ADC'],'GainError','0');
set_param([model '/Source Select'],'sw','1');
open_system(model);

Установите время симуляции на 1.28e-4 s, затем закомментируйте блок ADC AC Measurement и Спектр Анализатор. Чтобы собрать количественные данные, чтобы пойти с гистограммой, не прокомментируйте блок ADC DC Measurement.

set_param(model, 'StopTime', '1.28e-4');
open_system([model '/ADC Output Histogram']);
sim(model);

Можно наблюдать, как второй этап корректирует ошибки сначала путем добавления ошибки Смещения и ошибки Усиления во вкладке ухудшений ADC MSB. Любая часть LSB, введенного как форма усиления или ошибки смещения, приводит к неустойчивости или недостающему коду в ADC гистограмма выхода. Что-либо кроме плоской гистограммы с пилообразным входом показывает некоторую сумму неидеального поведения ADC в форме интегральной нелинейности, дифференциальной нелинейности или недостающих кодов.

Полные погрешности max(abs(Offset error + Gain error, Offset error)) максимум из 0,5 LSB в MSB ADC корректируются дополнительным битом ADC LSB. Большие ошибки в ADC MSB и любые ошибки в ADC LSB влияют на выход.

set_param([model '/MSB ADC'], 'OffsetError', '0.2');
set_param([model '/MSB ADC'], 'GainError', '0.2');
sim(model);

Просмотрите результаты блока ADC DC Measurement путем нажатия кнопки результатов измерения Графика в маске блока.

Испытательный стенд ADC

Проверьте, что результаты ваших тестов должны только к свойствам ADC, а не входных сигналов или выходной обработки с Испытательным стендом ADC. Соедините вводы и выводы конвертера к вводам и выводам Испытательного стенда ADC и запустите симуляцию. Результаты теста обнаружатся на маске блока, если вы запускаете симуляцию.

close_system(model, 0);
model = 'subranging_adc_testbench';
open_system(model);

Copyright 2021 The MathWorks, Inc. Все права защищены.

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

| | |

Похожие темы