В этом примере показано, как моделировать 12-разрядный блок интерполяции избыточной дискретизации DAC.
Интерполяционные DAC с избыточной выборкой используют интерполяцию для достижения более высокого разрешения, чем на их входе. Это позволяет выполнять менее сложную фильтрацию выходного сигнала для DSP-системы, работающей на скорости, близкой к скорости Найквиста.
Интерполяционный DAC с избыточной выборкой имеет три основных функциональных блока. Первый блок является блоком FIR-интерполяционного фильтра из системы DSP Toolbox™ для увеличения частоты дискретизации из входной частоты дискретизации Fs к частоте выборки DAC M * Fs. Второй блок является функциональным блоком MATLAB, который обрабатывает разуплотнение выходного сигнала блока FIR интерполяции. Функциональный блок MATLAB имеет тактовую частоту, которая позволяет его выходному сигналу иметь дрожание. Это дает ему преимущество перед блоком Unbuffer из системного Toolbox™ DSP. Третий блок представляет собой блок смешанного сигнала Blockset™ DAC, работающий на M * Fs.
Параметры DAC взяты из таблицы AD9773.
Переменные параметры рабочей области:
Fin = 66.176 кГц - частота входного сигнала.
Fs = 1.125 МГц - частота входной выборки.
M = 8 - коэффициент избыточной выборки/отношение.
N = 12 - количество битов DAC.
Ref = 1.2 - опорный (динамический выходной диапазон) DAC.
Частота выборки ЦАП определяется коэффициентом избыточной выборки и частотой входной выборки:

Для простоты, ошибка смещения и ошибка усиления были оставлены на 0 %FS в этой модели.
model = 'InterpolatingDAC';
open_system(model);

Для определения SNR, ENOB и других динамических характеристик интерполирующего DAC используется блок измерения переменного тока DAC из Blockset™ смешанного сигнала.
Используйте Spectrum Analyzer для сравнения входных данных с низкой частотой дискретизации с выходными данными интерполяционного DAC с избыточной выборкой. Блок усиления рядом с анализатором спектра сопоставляет входную волну с амплитудой выходного сигнала ЦАП для параллельного сравнения.
open_system([model '/Spectrum Analyzer']);
sim(model);

Для определения ошибки смещения, ошибки усиления INL и DNL используется блок измерения постоянного тока DAC. Установите для ошибки смещения двоичного взвешенного DAC значение -0.02 %FS (-0.8192 LSB) и установите для него значение ошибки усиления 1.0 %FS (40,96 LSB).
bdclose(model);
model = 'InterpolatingDACDC';
open_system(model);

Сводка измерений отображается на значке блока. Откройте маску блока и нажмите кнопку «Печать» для просмотра полных графиков 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"']));
