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

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

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

Модель

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

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

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

model = 'subranging_adc';
load_system(model);

set_param(model, 'StopTime', '0.001');
set_param([model '/ADC AC Measurement'], 'Commented', 'off');
set_param([model '/ADC DC Measurement'], 'Commented', 'on');
set_param([model '/Subsystem/Buffer'], 'N', '0.001 * 2 * Fs')
set_param([model '/Time Scope'], 'TimeSpan', '1e-6');
set_param([model '/Time Scope'], 'TimeSpanOverrunAction', 'Scroll');

open_system(model);

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

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

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

set_param([model '/Source Select'],'sw','1');
set_param([model '/Sine Wave'], 'Frequency', '2 * pi * 10e6');
set_param([model '/Sine Wave'], 'Amplitude', '0.5');
set_param([model '/Sine Wave'], 'Bias', '0.5');

open_system([model '/Time Scope']);
open_system([model '/Spectrum Analyzer']);
sim(model);

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

set_param([model '/Sine Wave'], 'Frequency', '2 * pi * [10, 12] * 1e6');
set_param([model '/Sine Wave'], 'Amplitude', '0.25');
set_param([model '/Sine Wave'], 'Bias', '0.25');

sim(model);

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

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

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

set_param([model '/Source Select'],'sw','0');
set_param(model, 'StopTime', '1.28e-5');
set_param([model '/Subsystem/Buffer'], 'N', '1.28e-5 * 2 * Fs')
set_param([model '/ADC AC Measurement'], 'Commented', 'on');
set_param([model '/ADC DC Measurement'], 'Commented', 'off');
w = warning('off', 'msblks:msblksMessages:ADCDataTruncated');
set_param([model '/Time Scope'], 'TimeSpan', '1.28e-5');
set_param([model '/Time Scope'], 'TimeSpanOverrunAction', 'Wrap');

close_system([model '/Spectrum Analyzer']);
open_system([model '/ADC Output Histogram']);
sim(model);

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

Ошибки до 1 LSB в ADC MSB корректируются дополнительным битом ADC LSB. Большие ошибки влияют на выход.

set_param([model '/MSB ADC'],'OffsetError','0.5');
set_param([model '/MSB ADC'],'GainError','0.3');

sim(model);

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

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

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

model = 'subranging_adc_testbench';
open_system(model);
warning(w.state, 'msblks:msblksMessages:ADCDataTruncated');

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

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

| | |

Похожие темы