В этом примере показано, как использовать блок Variable Pulse Delay, чтобы создать точные модели синхронизации логических схем.
Этот пример является первым из трех примеров, которые используют три кольцевых модели генератора этапа, чтобы исследовать область значений опций для симуляции аналоговых применений цифровых схем. Задержки каждого этапа определяют выходную частоту кольцевого генератора, делая точное моделирование этих задержек важным для симуляции схемы. Этот первый пример показывает, как произвести цифровые формы волны с точной синхронизацией при помощи переменного шага дискретная выборка.
Вторые и третьи примеры и показывают, как произвести аналоговые формы волны с точной формой и синхронизацией. Цифровая Синхронизация Используя Фиксированный пример Выборки Шага показывает, как смоделировать три кольцевых генератора этапа с помощью комбинации фиксированного шага и переменного шага дискретные шаги расчета. Цифровая Синхронизация Используя Решения Обыкновенных дифференциальных уравнений показывает моделирование трех кольцевых моделей использования генератора этапа, заданных обыкновенными дифференциальными уравнениями (ODE). Необходимо изучить этот пример прежде, чем изучить другие два.
Задержки этой модели введены Переменными Импульсными блоками Задержки из библиотеки Utilities Mixed-Signal Blockset™ с задержкой, заданной отдельным входом с блоком. Начальные выходные значения для Переменных Импульсных блоков Задержки собираются гарантировать колебание. Начальные выходные значения для двух из блоков сохранены в значении, равном нулю, в то время как начальный выход для третьего блока установлен в один.
Осциллограф сконфигурирован, чтобы отобразить выборки как точечную диаграмму без рендеринга между выборками. Различные шаги расчета делают различные предположения о значении сигналов между выборками, такими как:
Нулевой порядок содержит (ZOH) — значение сигналов принято, чтобы равняться значению новой выборки.
Задержка первого порядка (FOH) — значение сигналов принимается линейно зависимым от одной выборки до следующего.
Найквист ограничил — сигнал принят, чтобы иметь нулевое спектральное содержимое выше частоты, равной одной половине фиксированной частоты дискретизации.
Ряд Тейлора — Для каждого главного демонстрационного шага, решатель ОДУ производит полином, который аппроксимирует значение сигналов по тому временному интервалу.
Блок осциллографа основывает свой рендеринг на этих предположениях. Необходимо фокусироваться на самих выборках и изучить явным образом предположения, что различные шаги расчета делают.
Выборки, отображенные на осциллографе, показывают одну выборку для каждого события переключения логики. Эти выборки сгенерированы Переменными Импульсными блоками Задержки. Каждый раз, когда блок Variable Pulse Delay получает выборку, он генерирует новое событие, за один раз равняются шагу расчета плюс значение в порте задержки входа.
Как обозначено расцветкой шага расчета, выходной шаг расчета для инверторов Фиксируется На Мелком шаге (FIM). Это означает, что каждый инвертор производит выходное демонстрационное значение для каждого главного шага расчета в модели, независимо используется ли тот шаг расчета во входном порту логического элемента.
Это поведение FIM типично для большинства логических блоков; однако необходимо обратить особое внимание на распространение шага расчета в триггируемых подсистемах, таких как D-триггеры. Если триггер ввел, использует фиксированный шаг дискретный шаг расчета, то любой вход, который не синхронен с тем шагом расчета, не может быть обработан правильно. Триггируемая подсистема может быть обеспечена, чтобы действовать в режиме FIM путем инициирования его с переменным шагом дискретный триггер тот, который был бы произведен блоком Variable Pulse Delay или Логическим Решением.
Поскольку модель не содержит дифференциальных уравнений, решатель является Переменным Дискретным Шагом.
Задержка на каскад установлена в 100
PS, приводящий к половине периода точно 300
PS и период 600
PS, как продемонстрировано в симуляции выход.
Загрузите модель синхронизации логики и обновите модель, чтобы отобразить шаги расчета.
open_system('LogicTiming'); set_param(gcs,'SimulationCommand','update');
Запустите модель синхронизации логики.
%%. sim('LogicTiming');