Передискретизация интерполяции DAC

В этом примере показано, как смоделировать 12-битную интерполяцию избыточной дискретизации DAC.

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

Модель

Интерполирующий ЦАП передискретизации имеет три основных функциональных блока. Первый блок является блоком фильтра интерполяции конечной импульсной характеристики из DSP System Toolbox™ чтобы увеличить частоту дискретизации из входной частоты выборки Fs к частоте дискретизации M * Fs. Второй блок является блоком MATLAB Function, который обрабатывает распаковку выхода блока конечной импульсной характеристики. Блок MATLAB Function имеет синхроимпульс, который позволяет ему иметь дрожание. Это дает преимущество по сравнению с блоком Unbuffer из DSP System Toolbox™. Третий блок является ЦАП Mixed-Signal Blockset™, работающим на M * Fs.

Параметры DAC получены из AD9773 таблицы данных.

Параметры переменной рабочей области:

  • Fin = 66.176 кГц является частотой входного сигнала.

  • Fs = 1.125 МГц является входной частотой выборки.

  • M = 8 является коэффициентом/отношением oversample.

  • N = 12 - количество бит DAC.

  • Ref = 1.2 - ссылка (динамическая выходная область значений) DAC.

Частота выборки DAC определяется коэффициентом перенапряжения и частотой входной выборки:

$$F_{s_{DAC}} = M \cdot F_s = 9 MHz$$

Для простоты Ошибка Смещения и Ошибка Усиления были оставлены на 0 %FS в этой модели.

model = 'InterpolatingDAC';
open_system(model);

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

Для определения ОСШ, ENOB и других динамических характеристик интерполирующего DAC используйте блок DAC AC Measurement из Mixed-Signal Blockset™.

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

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

Статическая проверка

Чтобы определить ошибку смещения, ошибку усиления, INL и DNL используют блок DAC DC Measurement. Установите значение ошибки смещения двоичного взвешенного DAC -0.02 %FS (-0.8192 LSB) и установите его ошибку Gain равной 1.0 %FS (40.96 LSB).

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

На значке блока выводятся сводные данные измерений. Откройте маску блока и нажмите кнопку Plot, чтобы просмотреть полные INL и DNL графики.

sim(model);
mask = Simulink.Mask.get([model '/DAC DC Measurement']);
button = mask.getDialogControl('PlotBtn');
eval(regexprep(button.Callback, 'gcb',['"' model '/DAC DC Measurement"']));