В этом примере показано, как проектировать и оценивать сегментированный DAC с использованием эталонной архитектуры и проверять DAC с помощью DAC Testbench. В этом примере используется таблица AD9775. Это коммерческий готовый 14-битный DAC от аналоговых устройств.
Откройте модель SegedDACTestbench, присоединенную к этому примеру, как вспомогательный файл. Модель состоит из сегментированного блока DAC и DAC Testbench.
model = 'SegmentedDacTestbench';
open_system(model);

Сегментированный блок DAC состоит из нескольких сегментов, проводных параллельно. Каждый из этих сегментов подается подмножеством входного слова данных. Результаты преобразований из каждого сегмента DAC суммируются для получения выходных данных для полного входного слова.
open_system([model '/Segmented DAC'], 'force');

Блок преобразования логических векторов разделяет входное слово на его биты компонентов. Внутри каждого сегмента блок селектора выбирает подмножество входного слова для этого сегмента, а другой блок преобразования логических векторов преобразует его обратно в скалярное значение для сегмента DAC для преобразования. Отдельные DAC сегментов являются блоками DAC с двоичным взвешиванием. Их параметры устанавливаются во время инициализации модели блоком сегментированного DAC. Наконец, выходы сегментов добавляются и масштабируются в соответствии с привязкой сегментированного блока DAC.
Дважды щелкните на сегментированном блоке DAC, чтобы открыть диалоговое окно «Параметры блока». Таблица в центре используется для установки параметров отдельных сегментов DAC. Влияние параметров таблицы на общую работу ЦАП обобщено в правом нижнем углу.
Устанавливается полярность ввода Unipolar, для параметра Reference (V) установлено значение 1.20 V, смещение (V) установлено в 0 V, для параметра «Время установки» установлено значение 11e-9 s, а для допуска времени установки (LSB) установлено значение 0.025 LSB на основе таблицы данных.
В таблице Настройки сегмента (Segment settings) вставьте строку с тремя строками для определения трехсегментной архитектуры DAC. Установите биты верхней и нижней строк в значение 5 и биты средней строки в 4. Это устанавливает сегмент LSB (заданный верхней строкой) и сегмент MSB (заданный нижней строкой) как 5-битный DAC, в то время как средний сегмент является 4-битным DAC. Задайте для полей Ошибка смещения (Offset error) и Ошибка усиления (Gain Error) для всех сегментов значение 0. Щелкните в любом месте строки или Shift + Щелкните несколько строк в таблице, чтобы выбрать их. Если выбрана строка, используйте кнопки в правой части таблицы, чтобы переместить ее вверх или вниз в таблице, изменяющей положение ее сегмента относительно входного слова. Сегмент верхней строки всегда преобразует LSB, а нижний сегмент - MSB. Используйте кнопки под таблицей для добавления или удаления сегментов.
Дважды щелкните блок DAC Testbench, чтобы открыть диалоговое окно «Параметры блока». Опция Измерение (Measurement) выбрана как DC. Установите начальную частоту преобразования (Гц) в значение 9e6 Гц. На вкладке Setup (Настройка) нажмите кнопку Autofill setup parameters (Параметры настройки автозаполнения), чтобы автоматически распространить параметры DAC на тестовый стенд. Установите время (а) настройки в значение 21e-9 s, чтобы гарантировать, что результаты измерения постоянного тока даже частично не основаны на переходах между кодами. На вкладке Целевая метрика (Target Metric) нажмите кнопку Автозаполнение целевой метрики (Autofill target metric), чтобы автоматически распространить целевые метрики DAC на тестовый стенд. Примените изменения. Установите рекомендуемое минимальное время остановки моделирования в качестве времени остановки модели, нажав кнопку Задать как время остановки модели.
Запустить моделирование для 36.41 мс.
bdclose(model); sim(model);
Измеренные погрешности смещения и усиления, отображаемые на пиктограмме DAC Testbench, находятся в пределах допуска ошибок (LSB) их ожидаемых значений.

Дважды щелкните блок DAC Testbench, чтобы открыть диалоговое окно «Параметры блока». Нажмите кнопку «Распечатать результаты анализа DC» для просмотра кривой передачи DAC, нелинейности конечных точек и нелинейности наилучшего вписывания.

Дважды щелкните блок DAC Testbench, чтобы открыть диалоговое окно «Параметры блока». Задайте опцию Измерение (Measurement) как AC . На вкладке «Стимул» для параметра «Начальная частота преобразования» (Гц) установлено значение 9e6 Гц, что позволяет выходному сигналу DAC рассчитываться между преобразованиями. На вкладке Setup (Настройка) нажмите кнопку Autofill setup parameters (Параметры настройки автозаполнения), чтобы автоматически распространить параметры DAC на тестовый стенд. Примените изменения. Установите рекомендуемое минимальное время остановки моделирования в качестве времени остановки модели, нажав кнопку Задать как время остановки модели.
set_param([model '/DAC Testbench'], 'MeasureOption', 'AC');
Откройте диалоговое окно Segmented DAC block parameters и задайте для записей Offset error и Gain error в таблице Segment settings значение 0 для всех сегментов. Это предотвращает влияние нарушений линейности на работу гармоник.
mask = Simulink.Mask.get([model '/Segmented DAC']); paramSegmentSettings = mask.getParameter('SegmentSettings'); ctrlSegmentSettings = paramSegmentSettings.DialogControl; ctrlSegmentSettings.setTableCell([1, 3], 'Value', '0'); ctrlSegmentSettings.setTableCell([2, 3], 'Value', '0'); ctrlSegmentSettings.setTableCell([3, 3], 'Value', '0'); ctrlSegmentSettings.setTableCell([1, 5], 'Value', '0'); ctrlSegmentSettings.setTableCell([2, 5], 'Value', '0'); ctrlSegmentSettings.setTableCell([3, 5], 'Value', '0');
Запустить моделирование для 180 мс.
set_param(model, 'StopTime', '0.18'); sim(model);
Warning: The file containing block diagram '<a href="matlab:open_system
('msbUtilities')">msbUtilities</a>' is shadowed by a file of the same name
higher on the MATLAB path. This can cause unexpected behavior. For more
information see <a href="matlab:helpview([docroot
'/toolbox/simulink/helptargets.map'], 'shadowing')">"Avoiding Problems with
Shadowed Files"</a> in the Simulink documentation.
The file containing the block diagram is:
S:\22\jadams.Brf.DacExamples\matlab\toolbox\msblks\msblks\internal\msbUtilities.slx.
The file higher on the MATLAB path is:
S:\22\jadams.Brf.DacExamples\matlab\toolbox\msblks\msblks\msbUtilities.slx
Измерения гармонических искажений отображаются на пиктограмме DAC Testbench.
![]()