Модели триггеров. Динамическое управление записью, страница 6

Для моделирования всех однотипных элементов используется одна и та же подпрограмма. В нашем примере модель AND2 для двухвходовой схемы 2И будет вызвана дважды, сначала для обработки элемента DD2, а затем - элемента DD3.

Метод обработки всех элементов схемы и в неизменном порядке нельзя назвать эффективным. Допустим, что в текущий момент времени переключается только вход INP1 мультиплексора (рис.5,а), а входы INP2 и ADR сохраняют свои старые значения. Это означает, что элементы DD1 и DD3 не изменят своих состояний. Спрашивается, зачем их моделировать, если в результате мы не получим ничего нового?

Отсюда следует вывод, что если находить и обрабатывать только те элементы, на входах которых обнаружены переключения (события), то можно существенно повысить эффективность моделирования. Тем более что таких элементов совсем не много (по различным оценкам менее 2…10% от общего объёма схемы).

Вот для этих целей и нужна левая часть таблицы цепей, а точнее её первый столбец. В нём задаются ссылки на таблицу элементов, по которым моделятор находит элементы-приёмники данного сигнала. Например, чтобы узнать, на какие элементы «работает» вход ADR, достаточно заглянуть в левый столбец и по ссылкам 1, 3 найти в таблице элементов имена приёмников DD1 и DD3.

Аналогичным образом для сигнала F2 по ссылке 4 находится его элемент-приёмник DD4. Но ведь сигнал F2 формируется выходом элемента DD2. Следовательно, указатель 4 описывает в действительности электрическое соединение между выходом DD2 и входом DD4.

Вернёмся к ранее рассмотренной ситуации, когда в текущем цикле работы моделятора переключается только сигнал INP1. В таблице цепей (столбец 1) сообщается, что этот сигнал воздействует только на один элемент.

Следовательно, моделятору надо найти и промоделировать один единственный элемент-приёмник (последователь) этого сигнала. По ссылке 2 в таблице элементов выясняется имя искомого элемента – DD2. А дальше всё происходит по уже известным нам правилам. Получив новое (будущее) значение выходного сигнала F2, моделятор сравнит его с текущим значением и выяснит, распространится ли переходной процесс на элемент DD4.

Выход элемента DD4 подключён к внешней цепи OUT1, то есть вообще не имеет последователей (значение указателя равно nil - никакой). Таким образом, переключения в схеме закончатся, как только будут достигнуты её внешние выходы. Более подробно рассмотренная технология моделирования обсуждается в лекции 11.

Мы рассмотрели один из простейших способов табличного описания моделируемой схемы. В действительности использование указателей гораздо шире, чем это показано на рис.6. Чтобы сделать работу со структурами данных более эффективной, в описание добавляют ещё две таблицы: таблицу входных и таблицу выходных соединений (рис.7). Для простых схем подобные нагромождения могут показаться «архитектурными излишествами», однако для сложных схем они вполне оправданы.


Рис.7. Улучшение структуры данных с помощью дополнительных
таблиц входных и выходных соединений

Иногда информация о самих элементах (выполняемая функция, задержки, имена контактов) представляется в виде отдельной таблицы, и на неё задаются соответствующие ссылки. Предлагаем Вам самостоятельно выполнить эту работу, несколько модифицировав описание, показанное на рис.7.

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

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