Симуляция логического времени

В этом примере показано, как использовать блок Variable Pulse Delay для создания точных временных моделей логических схем.

Этот пример является первым из трех примеров, которые используют модель трехступенчатого кольцевого генератора, чтобы исследовать область значений опций для симуляции аналоговых применений цифровых схем. Задержки на каждом этапе определяют выходную частоту генератора звонка, делая точное моделирование этих задержек существенным для симуляции схемы. Этот первый пример показывает, как создать цифровые формы волны с точной синхронизацией при помощи дискретной выборки с переменным шагом.

Второй и третий примеры показывают, как создать аналоговые формы волны с точной формой и временем. Пример Digital Timing Using Fixed Step Sampling показывает, как смоделировать трехступенчатый кольцевой осциллятор с помощью комбинации дискретных шагов фиксированного шага и переменного шага. Цифровая синхронизация с использованием решений обыкновенных дифференциальных уравнений показывает моделирование трехступенчатого кольцевого генератора с использованием моделей, заданных обыкновенными дифференциальными уравнениями (ОДУ). Вы должны изучить этот пример перед изучением двух других.

Задержки в этой модели вводятся блоками Variable Pulse Delay из библиотеки Utilities Mixed-Signal Blockset™ с задержкой, заданной отдельным входом в блок. Начальные выходные значения для блоков Переменной Импульсной Задержки установлены, чтобы гарантировать колебание. Начальные значения выхода для двух блоков сохраняются на значение , равное нулю, в то время как начальные выходы для третьего блока установлены на единицу.

Осциллограф сконфигурирован, чтобы отображать выборки как график рассеяния, без визуализации между выборками. Различные шаги расчета делают различные допущения о значении сигналов между выборками, такие как:

  • Удержание нулевого порядка (ZOH) - значение сигналов принято равным значению самой последней выборки.

  • Задержка первого порядка (FOH) - значения сигналов изменяется линейно от одного образца к следующему.

  • Nyquist limited - Сигнал принимается с нулевым спектральным содержимым выше частоты, равной половине фиксированной частоты дискретизации.

  • Ряд Тейлора - Для каждого шага основной выборки решатель ОДУ производит полином, который аппроксимирует значение сигналов за тот временной интервал.

Блок осциллографа основывает свое отображение на этих допущениях. Вы должны сосредоточиться на самих выборках и четко понять допущения, которые делают различные шаги расчета.

Выборки, отображенные на осциллографе, показывают одну выборку для каждого события логического переключения. Эти выборки генерируются блоками Переменной Импульсной Задержки. Каждый раз, когда блок Variable Pulse Delay получает выборку, он генерирует новое событие в момент времени, равный шаг расчета плюс значение в задержку входа порту.

Как указан шаг расчета расцветки, шаг расчета выхода для инверторов является Fixed In Мелкого шага (FIM). Это означает, что каждый инвертор создает выход значение выборки для каждого основного шага расчета в модели, независимо от того, используется ли этот шаг расчета в вход порту затвора.

Это поведение FIM типично для большинства логических блоков; однако вы должны уделить особое внимание распространению шага расчета в триггируемых подсистемах, таких как D-триггеры. Если вход триггера использует фиксированный дискретный шаг расчета шага, то любой вход, который не синхронен с этим шагом расчета, может быть неправильно обработан. Триггируемая подсистема может быть вынуждена работать в режиме FIM путем запуска его с помощью дискретного триггера переменного шага, такого как произведенный блоком Переменная Задержка Импульса или Логическим Решением.

Поскольку модель не содержит никаких дифференциальных уравнений, решатель является Переменным Шагом Дискретным.

Задержка этапа установлена на 100 ps, что приводит к половине периода точного 300 ps и период 600 ps, как показано в выходных данных симуляции.

Загрузите логическую модель синхронизации и обновите модель, чтобы отобразить шаги расчета.

open_system('LogicTiming');
set_param(gcs,'SimulationCommand','update');

Запустите логическую модель синхронизации.

%%.
sim('LogicTiming');

См. также

Похожие темы