1.6. Методы логического моделирования

В отношении асинхронных моделей возможны два метода моделирования – пошаговый (инкрементный) и событийный.

В пошаговом методе время дискретизируется, и вычисления по выражениям модели выполняются в дискретные моменты времени t0, t1, t2,… и т. д. Шаг дискретизации ограничен сверху значением допустимой погрешности определения задержек и потому оказывается довольно малым, а время анализа – значительным.

Для сокращения времени анализа используют событийный метод. В этом методе событием называют изменение любой переменной модели. Событийное моделирование основано на следующем правиле: обращение к модели логического элемента происходит только в том случае, если на входах этого элемента произошло событие. В сложных логических схемах на каждом такте синхронизации обычно происходит переключение всего лишь 2… 3 % логических элементов, и соответственно в событийном методе в несколько раз уменьшаются вычислительные затраты по сравнению с пошаговым моделированием.

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

Применение этих методов к моделированию логических схем удобно проиллюстрировать на примере схемы триггера (см. рис. 1.4). В табл. 1.3 представлены значения переменных модели в исходном состоянии и после каждой итерации в соответствии с методом простых итераций. В исходном состоянии задают начальные (можно произвольные) значения промежуточных и выходных переменных, в данном примере это значения переменных В, Q, Р, А, соответствующие предыдущему состоянию триггера. Новое состояние триггера должно соответствовать указанным в таблице изменившимся значениям входных сигналов R, S и С. Вычисления заканчиваются, если на очередной итерации изменений переменных нет, что и наблюдается в данном примере на четвертой итерации.

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

Таблица 1.3 Логическая модель триггера

Итерация

R

S

C

B

Q

P

A

Предыдущее состояние

0

0

0

1

1

0

1

Исходные значения (итерация 0)

0

1

1

1

1

0

1

Итерация 1

0

1

1

1*

1

0

0*

Итерация 2

0

1

1

1

1

1*

0

Итерация 3

0

1

1

1

0*

1

0

Итерация 4

0

1

1

1

0

1*

0

Ранжирование заключается в присвоении элементам и переменным моде-

качении рангов в соответствии со следующими правилами:

1) в схеме создаются все контуры обратной связи, что приводит к появлению дополнительных входов схемы (псевдовходов);

2) все внешние переменные (в том числе псевдовходах) получают ранг 0;

3) элемент и его выходные переменные получают ранг k, если у элемента все входы проранжированы и старший среди рангов входов равен k 1.

Так, если в схеме (см. рис. 1.4) разорвать имеющийся контур обратной связи в цепи переменной Q и обозначить переменную на псевдовходе Q1, то ранги переменных оказываются следующими: R, S, С, Q1 имеют ранг О, А и В – ранг 1, Р – ранг 2 и Q –ранг З. В соответствии с этим переупорядочивают уравнения в модели триггера:

А = not (S and С ); В = not (R and С); Р = not (A and Q); Q = not (В and Р).

Теперь уже на первой итерации (по Зейделю) получаем требуемый результат. Если оборвать контур обратной связи в цепи переменной Р, то решение в данном примере может быть получено после второй итерации, но это все равно быстрее, чем при использовании метода простой итерации.

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

Для триггера (см. рис. 1.3) применение событийности в рамках метода простых итераций приводит к сокращению объема вычислений: вместо 16-кратных обращений к моделям элементов, как это следует из табл. 1.3, происходит лишь пятикратное обращение. В табл. 1.3 звездочками помечены значения переменных, вычисляемые в событийным методе. Так, например, на итерации 0 имеют место изменения переменных S и поэтому на следующей итерации обращения происходят только к моделям элементов с  выходами  А и В.