Цифровая синхронизация Используя решения Обыкновенных дифференциальных уравнений

В этом примере показано, как смоделировать три кольцевых использования генератора этапа модели, заданные обыкновенными дифференциальными уравнениями (ODE).

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

Первые два примера в последовательности, Симуляции Синхронизации Логики и Цифровой Синхронизации Используя Фиксированную Выборку Шага, содержат справочную информацию об этом примере. Считайте их сначала в последовательности, если вы уже не сделали так.

Эта модель использует блоки, заданные ОДУ, и зависит от сервисов решателя ОДУ. Для каждого этапа нуль, пересекающий возможности обнаружения блока Compare To Constant, используется, чтобы произвести вход насыщения для инвертора. Инвертор выход преобразован от Boolean, чтобы удвоиться, чтобы управлять блоком Transfer Function. Блок Transfer Function задает форму инвертора выходные переходы.

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

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

Непрерывная модель времени Используя экспоненциальное затухание

В этом разделе используйте однополюсный ответ, чтобы оценить кольцевой генератор выход, когда инвертор выход будет смоделирован как ответ схемы RC.

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

Выбор решателя установлен в auto, с относительной погрешностью 1e-9.

Запустите основанную на ОДУ модель с однополюсным ответом повышения/падения.

sim('OdeWaveform');

Непрерывная модель времени почти с постоянной скоростью нарастания

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

Установите настройку для четвертого порядка ответ повышения/падения Томпсона функции Бесселя.

den = getBesselDenominator(3e9);
set_param('OdeWaveform/Transfer Fcn','Denominator',mat2str(den));
set_param('OdeWaveform/Transfer Fcn1','Denominator',mat2str(den));
den = getBesselDenominator(3.1e9);
set_param('OdeWaveform/Transfer Fcn2','Denominator',mat2str(den));

Запустите модифицированную основанную на ОДУ модель. Отметьте небольшое округление начала переключающихся ребер, похожих на формы волны, произведенные в Цифровой Синхронизации Используя Фиксированный пример Выборки Шага.

sim('OdeWaveform');

Непрерывное время с решателем в автоматическом режиме

В этом разделе измените настройку решателя и наблюдайте изменение в результатах.

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

Обеспечьте настройку модели предыдущего раздела, но измените Относительную погрешность решателя от 1e-9 к auto.

set_param('OdeWaveform','RelTol','auto');

Запустите модель с автоматической установкой решателя. Наблюдайте и изменение в период колебания и в форму волны.

sim('OdeWaveform');

Похожие темы