Московский государственный университет путей сообщения
Опубликован: 06.09.2012 | Доступ: свободный | Студентов: 1232 / 168 | Оценка: 5.00 / 5.00 | Длительность: 35:22:00
Специальности: Разработчик аппаратуры
Лекция 5:

Машинные модели логических схем и управление процессом моделирования

< Лекция 4 || Лекция 5: 12 || Лекция 6 >

Управление процессом моделирования

Как уже отмечалось, во многих случаях алгоритм моделирования можно представить следующим образом. После подачи входного воздействия на модель ДУ поочерёдно вычисляются значения на выходах всех элементов по значениям на их входах. Такая процедура называется итерацией. В результате вычислений значения некоторых сигналов могут измениться. В этом случае необходимо выполнить вторую итерацию (т.е. вычислить значения на выходах всех элементов по новым значениям на их входах), затем третью итерацию и так далее до тех пор, пока все сигналы не примут установившиеся значения. В этом случае процесс моделирования (на одном входном наборе) сходится естественным образом. Возможен и другой результат моделирования – значения сигналов на некоторых линиях периодически изменяются. В этом случае говорят, что моделирование не сходится из-за генерации модели ДУ. Такая ситуация может быть, например, в ДУ, содержащем контур обратной связи с нечетным числом инверсий.

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

Событийное моделирование


\text{Событийное интепретативное моделирование(схема, входные воздействия)}\\
\{\\
\text{\quad Чтение описания схемы;}\\
\text{\quad  Чтение входных воздействий;}\\
\text{\quad  FOR для каждого моделируемого входного набора }\\
\text{\quad  \{}\\
\text{\qquad  \{}\\
\text{\quad \qquad Обработка нового входного набора;}\\
\text{\quad \qquad  Формирование новых событий, связанных с изменившимися входами;}\\
\text{\quad \qquad  Постановка элементов, имеющих события на входах, в очередь будущих событий;}\\
\text{\quad \qquad  WHILE есть элементы в очереди событий }\\
\text{\quad \qquad  \{}\\
\text{\qquad \qquad  Моделирование очередного элемента из очереди;}\\
\text{\qquad \qquad  IF значение выходов элемента изменились }\\
\text{\qquad \qquad  THEN Постановка всех элементов – последователей в очередь}\\
 \text{\qquad \qquad \qquad  будущих событий в соответствии с величиной задержки моделируемого элемента;}\\
\text{\qquad \quad  \}}\\
\text{\qquad  \}}\\
\text{\quad \}}\\
\}\\

Как отмечалось выше, в зависимости от очередности обработки логических элементов различают сквозные и событийные методы логического моделирования. При сквозном методе на каждой итерации каждый логический элемент моделируется заново вне зависимости от того, произошли изменения сигналов на его входах или нет. В событийном методе логический элемент моделируется только в том случае, если на его входах произошло событие – изменилось значение сигнала хотя бы на одном из его входов. Для элементов памяти событием является также изменение его состояния (изменение переменной внутреннего состояния). Обычно в процессе моделирования на каждой итерации активны (имеют изменения на входах) только несколько процентов элементов (3-5%), поэтому событийный метод гораздо быстрее сквозного.

В дальнейшем мы будем, в основном, рассматривать событийные интерпретативные методы логического моделирования. При этом будет использоваться, как правило, модель номинальной задержки, при которой каждому логическому элементу присваивается своя целочисленная задержка в некоторых условных единицах, определяемых масштабом модельного времени. Следует отметить, что события происходят в определенные моменты времени, поэтому необходим механизм моделирования временной очередности событий. В приведенном выше листинге "Событийное моделирование" представлен укрупненный алгоритм событийного интерпретативного логического моделирования [ 1.2 ] .

При этом центральное место занимает понятие очереди будущих событий (ОБС) [ 2.3 ] , [ 2.7 ] . Каждое событие в ОБС содержит номер элемента i и соответствующее значение сигнала v(i). Это событие при моделировании привязывается в соответствии с задержкой \Delta_i выхода i-го элемента к моменту времени t+\Delta_i , где t — текущее модельное время. Значения сигналов при этом для текущего момента времени хранятся в массиве SV. Вновь вычисленные значения элементов записываются в ОБС с учетом задержки \Delta_i.

Для упорядочения событий в ОБС используют различные способы моделирования временного механизма. Один из них использует при программной реализации структуру связанных списков, как это показано на рис.5.2 .

Список событий.

Рис. 5.2. Список событий.

Здесь каждому моменту времени соответствует свой список ОБС. Времена t_i < t_j < t_k упорядочены и связаны списком. Занесение нового события с использованием этого способа требуют поиска нужного t_j путём просмотра соответствующих указателей. Если моменты времени, для которых ОБС не пусты, идут достаточно плотно, то эффективней другой способ моделирования временного механизма, который показан на рис.5.3 .

Колесо времени

Рис. 5.3. Колесо времени

При этом для хранения указателей ОБС используется массив,

"завязанный в кольцо". Каждый элемент массива соответствует моменту модельного времени. Включение нового элемента при этом не требует поиска. Так, например, если в текущий момент времени Т моделируется элемент i, имеющий задержку t_i, то событие (i, v(i)) нужно занести в ОБС, для которого указатель содержится в элементе массива t+\Delta_i . С другой стороны этот способ не эффективен, если интервалы времени между событиями достаточно велики. Элементы массива при этом будут иметь в основном нулевые указатели, а сам массив может иметь чрезмерно большой размер. Наличие временного механизма позволяет при моделировании подавать тестовые наборы через соответствующие интервалы модельного времени. Для этого перед началом моделирования все изменения входных воздействий заносятся в ОБС, соответствующие временам изменения. Поэтому в процессе моделирования изменения входов обрабатываются наравне с другими событиями и в процессе моделирования нет необходимости ждать, пока значения сигналов стабилизируются на всех линиях.

В листинге "Алгоритм логического моделирования" представлен укрупненный алгоритм логического моделирования на основе временного механизма в виде очереди будущих событий. Этот алгоритм отражает движение по очереди будущих событий.

В каждый (не пустой) момент времени события обрабатываются по алгоритму, представленному в листинге "Алгоритм логического моделирования" [44] (который реализует соответствующий шаг алгоритма рис.2.24).

Отметим, что представленный в листинге "Двухпроходной алгоритм обработки событий" алгоритм является двухпроходным. На первом проходе здесь переписываются события (i,v_i^\prime), связанные с моментом времени Т очереди будущих событий в буфер – множество "Активные_элементы". Во время второго прохода выполняется собственно моделирование элементов j – последователей элемента i и постановка в очередь будущих событий в соответствии с задержкой d(j) элемента j.

Алгоритм логического моделирования


\text{WHILE (очередь событий не пуста)}\\
\{\\
\text{\quad T=следующий по очереди момент времени (имеющий события);}\\
\text{\quad Обработка событий текущего момента времени Т;}\\
\}\\

Подобная (двухпроходная) стратегия позволяет в том случае, когда некоторый элемент i активизируется более одного раза, выполнять моделирование, вызванное этим событием, только один раз. Следует отметить, что в приведенном алгоритме (i, vi’) являются скорее кандидатами в события. Поэтому при обработке множества "Активные_элементы" выполняется сравнение с текущим значением v(i).

Двухпроходной алгоритм обработки событий


\text{Обработка событий текущего момента времени Т()}\\
\{\\
\text{\quad Активные\_элементы=}\varnothing; /* \text{множество активных элементов, */}\\
\text{\quad FOR каждого события (i, }v_i^\prime, \text{ связанного с Т /* имеющих события на входах */}\\
\text{\quad}\{\\
\text{\qquad IF }v_i^\prime\not = v(i)\text{ THEN }\\
\text{\qquad \{ /*если это действительно событие*/}\\
\text{\qquad\quad} v(i)=v_i^\prime; \text{ /* перепись нового значения */}\\
\text{\qquad\quad FOR каждого элемента j – последователя обрабатываемого элемента i}\\
\text{\qquad\quad} \{}\\
\text{\qquad\qquad Изменение значений входов j; /* перепись с выхода i*/}\\
\text{\qquad\qquad Пополнение множества Активные\_элементы элементом j;}\\
\text{\qquad\quad} \}\\
\text{\qquad\quad FOR каждого элемента }j\in\text{ Активные\_элементы}\\
\text{\qquad\quad} \{\\
\text{\qquad\qquad} v_j^\prime = \text{ моделирование элемента (j);}\\
\text{\qquad\qquad постановка события }(j,v_j^\prime) \text{ в ОБС в момент времени T+d(j);}\\
\text{\qquad\quad} \}\\
\text{\qquad} \}\\
\text{\quad}  \}\\
\}\\

Улучшенный двухпроходной алгоритм обработки событий


\text{Обработка событий текущего момента времени Т()}\\
\{\\
\text{\quad Активные\_элементы=}\varnothing; /* \text{множество активных элементов, */}\\
\text{\quad FOR каждого события (i, }v_i^\prime, \text{ связанного с Т /* имеющих события на входах */}\\
\text{\quad}\{\\
\text{\qquad} v(i)=v_i^\prime; \text{/* перепись нового значения */}\\
\text{\qquad IF }v_i^\prime\not = v(i)\text{ THEN }\\
\text{\qquad FOR каждого элемента j – последователя обрабатываемого элемента i}\\
\text{\qquad} \{}\\
\text{\qquad\quad Изменение значений входов j; /* перепись с выхода i*/}\\
\text{\qquad\quad Пополнение множества Активные\_элементы элементом j;}\\
\text{\qquad} \}\\
\text{\quad} \}\\
\text{\quad FOR каждого элемента }j\in\text{ Активные\_элементы}\\
\text{\quad} \{\\
\text{\qquad} v_j^\prime = \text{ моделирование элемента (j);}\\
\text{\qquad IF }v_i^\prime \not =lsv(j)\text{\quad THEN}\\
\text{\qquad} \{\\
\text{\qquad\quad постановка события }(j,v_j^\prime) \text{ в ОБС в момент времени T+d(j);}\\
\text{\qquad\quad} lsv(j)=v_i^\prime;\\
\text{\qquad} \}\\
\text{\quad} \}\\
\}\\

В следующем алгоритме [ 2.3 ] , представленном выше, заносятся в ОБС только "истинные события", при которых происходит изменение сигнала. В [ 2.3 ] показано, что данный алгоритм является более эффективным. Преимущество двухпроходного алгоритма заключается в том, что он позволяет избежать повторных вычислений (моделирования одного и того же логического элемента) в случае наличия кратных событий, когда на входах имеет место изменение нескольких сигналов. Однако проведенный статистический анализ [ 2.3 ] показал, что кратные события в процессе моделирования случаются достаточно редко. Поэтому кроме двухпроходного были разработаны также однопроходные алгоритмы логического моделирования [ 2.3 ] . Один из таких алгоритмов [ 2.3 ] представлен в листинге "Однопроходной алгоритм обработки событий".

Несмотря на свою привлекательность (простоту и эффективность) этот алгоритм имеет недостаток. На рис.5.4 показана суть проблемы обработки кратного события. Здесь на входе элемента И имеет место одновременное изменение двух сигналов a и b. Если эти события обрабатываются в последовательности (b,0), (a,1), то выход элемента y не изменяется и, следовательно, не ставится в очередь будущих событий для последующей обработки.

Однопроходной алгоритм обработки событий


\text{Обработка событий текущего момента времени Т()}\\
\{\\
\text{\quad FOR каждого события (i, }v_i^\prime, \text{ связанного с Т /* имеющих события на входах */}\\
\text{\quad}\{\\
\text{\qquad} v(i)=v_i^\prime; \text{/* перепись нового значения */}\\
\text{\qquad FOR каждого элемента j – последователя обрабатываемого элемента i}\\
\text{\qquad} \{}\\
\text{\qquad\quad Изменение значений входов j; /* перепись с выхода i*/}\\
\text{\qquad\quad} v_j^\prime = \text{ моделирование элемента (j);}\\
\text{\qquad\quad IF }v_i^\prime \not =lsv(j)\text{\quad THEN}\\
\text{\qquad\quad} \{\\
\text{\qquad\qquad постановка события }(j,v_j^\prime) \text{ в ОБС в момент времени T+d(j);}\\
\text{\qquad\qquad} lsv(j)=v_i^\prime;\\
\text{\qquad\quad} \}\\
\text{\qquad} \}\\
\text{\quad} \}\\
\}\\
Пример некорректного моделирования

Рис. 5.4. Пример некорректного моделирования

Но если событие (a,1) обрабатывается первым, то результат (y,1) будет поставлен в момент времени T=4 очереди событий. Далее обработка события (b,0) вызывает событие (y,0), которое также будет отнесено к моменту времени Т=4. Таким образом, мы имеем "импульс нулевой протяженности", что не соответствует реальному поведению схемы. Алгоритм, приведенный ниже, позволяет избежать подобных ситуаций.

Улучшенный однопроходной алгоритм обработки событий


\text{Обработка событий текущего момента времени Т()}\\
\{\\
\text{\quad FOR каждого события (i, }v_i^\prime, \text{ связанного с Т /* имеющих события на входах */}\\
\text{\quad}\{\\
\text{\qquad} v(i)=v_i^\prime; \text{/* перепись нового значения */}\\
\text{\qquad FOR каждого элемента j – последователя обрабатываемого элемента i}\\
\text{\qquad} \{}\\
\text{\qquad\quad Изменение значений входов j; /* перепись с выхода i*/}\\
\text{\qquad\quad} v_j^\prime = \text{ моделирование элемента (j);}\\
\text{\qquad\quad IF }v_i^\prime \not =lsv(j)\text{\quad THEN}\\
\text{\qquad\quad} \{\\
\text{\qquad\qquad}T^\prime =T+d(j);\\
\text{\qquad\qquad IF }T^\prime =lst(j);\\
\text{\qquad\qquad THEN Устранение события (j, lsv(j)) с момента }T^\prime\text{ очереди;}\\
\text{\qquad\qquad постановка события }(j,v_j^\prime) \text{ в ОБС в момент времени T+d(j);}\\
\text{\qquad\qquad} lsv(j)=v_i^\prime;\\
\text{\qquad\qquad}lst(j)=T^\prime;\\
\text{\qquad\quad} \}\\
\text{\qquad} \}\\
\text{\quad} \}\\
\}\\

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

Ключевые термины:

Компилятивная модель схемы – представляется компьютерной программой, моделирующей данную схему.

Интерпретативная модель схемы – представляется системой связанных таблиц.

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

Очередь будущих событий – упорядоченные в модельном времени события (изменения сигналов на линиях схемы).

Краткие итоги

В лекции рассмотрены машинные модели цифровых схем и управление процессом логического моделирования..

В разделе 5.1 описаны машинные модели схем, которые используются в логическом моделировании, к которым относятся:

  1. компилятивная модель, изложенная в разделе 5.1.1;
  2. интерпретативная модель в виде связанных таблиц, которая представлена в 5.12.

В разделе 5.2 изложены основные алгоритмы логического событийного моделирования на основе очереди будущих событий, к которым относятся однопроходной и двухпроходной алгоритм обработки событий.

Вопросы и упражнения

  1. Какие используются машинные модели схемы?
  2. Опишите компилятивную модель схемы.
  3. Что составляет интерпретативную модель схемы.
  4. Чем отличается сквозное моделирование от событийного?
  5. Опишите основной алгоритм событийного логического моделирования.
  6. Что такое очередь будущих событий?
  7. Какие вы знаете способы моделирования временного механизма?
  8. Опишите двухпроходной алгоритм логического моделирования на основе продвижения по очереди будущих событий.
  9. Какие недостатки имеет этот алгоритм?
  10. Опишите улучшенный двухпроходной алгоритм логического моделирования.
  11. Опишите однопроходной алгоритм событийного логического моделирования.
< Лекция 4 || Лекция 5: 12 || Лекция 6 >
Дмитрий Медведевских
Дмитрий Медведевских

Добрый день  можно поинтересоваться где брать литературу предложенную в курсе ?Большинство книг я не могу найти  в известных источниках