В этом примере показано, как смоделировать 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 определяется коэффициентом перенапряжения и частотой входной выборки:
Для простоты Ошибка Смещения и Ошибка Усиления были оставлены на 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"']));