В этом примере показано, как смоделировать 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 и запустите симуляцию. Результаты теста обнаружатся на маске блока, если вы запускаете симуляцию.
close_system(model, 0);
model = 'subranging_adc_testbench';
open_system(model);
Copyright 2021 The MathWorks, Inc. Все права защищены.
Flash ADC | ADC Testbench | ADC AC Measurement | ADC DC Measurement