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

Этот пример показывает, как смоделировать трехступенчатый кольцевой генератор с использованием моделей, заданных обыкновенными дифференциальными уравнениями (ОДУ).

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

Первые два примера в последовательности, Logic Timing Simulation и Digital Timing Using Fixed Step Sampling, содержат фоновую информацию об этом примере. Прочитайте их сначала последовательно, если вы еще не сделали этого.

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

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

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

Модель непрерывного времени с использованием экспоненциального распада

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

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

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

Запустите модель на основе ОДУ с однополюсной характеристикой подъёма/падения.

sim('OdeWaveform');

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

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

Установите строение для четвертого порядка ответа Бесселя-Томпсона на подъем/падение.

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');

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

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

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

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

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

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

sim('OdeWaveform');

Похожие темы