После ввода внешнего описания ДУ в компьютер, оно транслируется во внутреннее представление устройства, которое непосредственно используется в процессе
В компилятивном методе моделирования описание схемы транслируется в последовательность операторов языка программирования или машинных инструкций. Например, синхронная последовательностная схема, представленная на рис.5.1 может быть транслирована в следующую программу, представленную ниже в листинге "Компилятивная модель".
Алгоритм компилятивного моделирования [39] приведен в виде псевдокода в листинге "Компилятивное моделирование". Следует обратить внимание на то, что при этом необходимо предварительно ранжировать схему по уровням. Основным преимуществом компилятивного метода моделирования является его высокое быстродействие. К недостаткам следует отнести то, что модель при изменении схемы (в процессе проектирования) каждый раз должна компилироваться заново. Здесь, как правило, используется сквозное (а не
(рис 5.1) Схема для компилятивной модели
Компилятивная модель
$$ LDA B\\ AND Q\\ INV \\ STA E\\ OR A\\ STA F\\ STA Q\\ $$Кроме этого, необходимо предварительно выполнить обрыв обратных связей для последовательностных схем (для этого разработаны соответствующие алгоритмы). Но основной проблемой этого метода является учет временных задержек логических элементов. Поэтому данный метод, в основном, применяется при моделировании комбинационных и синхронных последовательностных схем. При этом, как правило, проверяется только логика, а не временные соотношения.
В интерпретативном методе моделирования
Компилятивное моделирование
$$ Компилятивное моделирование (схема, входные воздействия)\\ \{\\ Чтение внешнего описания схемы;\\ Разрыв обратных связей (если это необходимо для схем с памятью);\\ Упорядочивание элементов по уровням;\\ Генерация компилятивного кода;\\ Чтение начального значения для каждого линии схемы;\\ FOR каждого нового входного набора}\\ \{\\ \text{\quad FOR каждого уровня схемы}\\ \text{ \quad \{}\\ \text{ \qquad FOR каждого логического элемента в уровне}\\ \text{ \qquad \{}\\ \text{ \qquad Выполнение компилятивного кода логического элемента;}\\ \text{ \qquad \}}\\ \text{ \quad \}}\\ \text{ \quad IF вновь вычисленные значения выходов и\\ псевдовыходов обратных связей совпадают с предыдущими}\\ \text{ \quad THEN вывод результатов моделирования;}\\ \text{ \quad ELSE присваивание псевдовходам вновь \\ вычисленных значений псевдовыходов обратных связей}\\ \}\\ \}$$| $$N$$ | $$R\_EL$$ | $$CONT$$ | $$FLAG$$ | $$NAME\_EL$$ | $$R\_TYPES$$ | $$R\_LINKS$$ | |
| $$0$$ | $$0$$ | $$-1$$ | $$1$$ | $$c0$$ | $$0$$ | $$0$$ | |
| $$1$$ | $$1$$ | $$-1$$ | $$1$$ | $$c1$$ | $$0$$ | $$1$$ | |
| $$2$$ | $$2$$ | $$-1$$ | $$1$$ | $$cu$$ | $$0$$ | $$2$$ | |
| $$3$$ | $$3$$ | $$15$$ | $$1$$ | $$G0$$ | $$1$$ | $$3$$ | |
| $$4$$ | $$4$$ | $$37$$ | $$1$$ | $$G1$$ | $$1$$ | $$4$$ | |
| $$5$$ | $$5$$ | $$40$$ | $$1$$ | $$G2$$ | $$1$$ | $$5$$ | |
| $$6$$ | $$6$$ | $$25$$ | $$1$$ | $$G3$$ | $$1$$ | $$6$$ | |
| $$7$$ | $$7$$ | $$16$$ | $$1$$ | $$YG17$$ | $$2$$ | $$7$$ | |
| $$8$$ | $$8$$ | $$34$$ | $$1$$ | $$G5$$ | $$3$$ | $$8$$ | |
| $$9$$ | $$8$$ | $$30$$ | $$2$$ | $$G6$$ | $$3$$ | $$10$$ | |
| $$10$$ | $$9$$ | $$20$$ | $$1$$ | $$G7$$ | $$3$$ | $$12$$ | |
| $$11$$ | $$9$$ | $$17$$ | $$2$$ | $$G14$$ | $$4$$ | $$14$$ | |
| $$12$$ | $$10$$ | $$38$$ | $$1$$ | $$G17$$ | $$4$$ | $$16$$ | |
| $$13$$ | $$10$$ | $$39$$ | $$2$$ | $$G8$$ | $$5$$ | $$18$$ | |
| $$14$$ | $$11$$ | $$19$$ | $$1$$ | $$G15$$ | $$6$$ | $$21$$ | |
| $$15$$ | $$11$$ | $$3$$ | $$2$$ | $$G16$$ | $$6$$ | $$24$$ | |
| $$16$$ | $$12$$ | $$7$$ | $$1$$ | $$G9$$ | $$7$$ | $$27$$ | |
| $$17$$ | $$12$$ | $$32$$ | $$2$$ | $$G10$$ | $$8$$ | $$30$$ | |
| $$18$$ | $$13$$ | $$23$$ | $$1$$ | $$G11$$ | $$8$$ | $$33$$ | |
| $$19$$ | $$13$$ | $$31$$ | $$2$$ | $$G12$$ | $$8$$ | $$36$$ | |
| $$20$$ | $$13$$ | $$10$$ | $$2$$ | $$G13$$ | $$8$$ | $$39$$ | |
| $$21$$ | $$14$$ | $$29$$ | $$1$$ | ||||
| $$22$$ | $$14$$ | $$41$$ | $$2$$ | ||||
| $$23$$ | $$14$$ | $$26$$ | $$2$$ | ||||
| $$24$$ | $$15$$ | $$28$$ | $$1$$ | ||||
| $$25$$ | $$15$$ | $$6$$ | $$2$$ | ||||
| $$26$$ | $$15$$ | $$18$$ | $$2$$ | ||||
| $$27$$ | $$16$$ | $$35$$ | $$1$$ | ||||
| $$28$$ | $$16$$ | $$24$$ | $$2$$ | ||||
| $$29$$ | $$16$$ | $$21$$ | $$2$$ | ||||
| $$30$$ | $$17$$ | $$9$$ | $$1$$ | ||||
| $$31$$ | $$17$$ | $$14$$ | $$2$$ | $$TYPES$$ | |||
| $$32$$ | $$17$$ | $$33$$ | $$2$$ | $$N$$ | $$N\_IN$$ | $$N\_OUT$$ | $$ID$$ |
| $$33$$ | $$18$$ | $$11$$ | $$1$$ | $$0$$ | $$0$$ | $$1$$ | $$0$$ |
| $$34$$ | $$18$$ | $$8$$ | $$2$$ | $$1$$ | $$0$$ | $$1$$ | $$0$$ |
| $$35$$ | $$18$$ | $$27$$ | $$2$$ | $$2$$ | $$1$$ | $$0$$ | $$0$$ |
| $$36$$ | $$19$$ | $$22$$ | $$1$$ | $$3$$ | $$1$$ | $$1$$ | $$29$$ |
| $$37$$ | $$19$$ | $$4$$ | $$2$$ | $$4$$ | $$1$$ | $$1$$ | $$1$$ |
| $$38$$ | $$19$$ | $$12$$ | $$2$$ | $$5$$ | $$2$$ | $$1$$ | $$4$$ |
| $$39$$ | $$20$$ | $$13$$ | $$1$$ | $$6$$ | $$2$$ | $$1$$ | $$5$$ |
| $$40$$ | $$20$$ | $$5$$ | $$2$$ | $$7$$ | $$2$$ | $$1$$ | $$2$$ |
| $$41$$ | $$20$$ | $$36$$ | $$2$$ | $$8$$ | $$2$$ | $$1$$ | $$3$$ |
В таблице $$TYPES$$ каждая строка содержит справочную информацию об элементе данного типа: число входов ($$N\_IN$$), число выходов ($$N\_OUT$$), число портов ($$N\_PORT$$), число
Таблица $$LINKS$$ содержит информацию о контактах схемы. Каждая строка этой таблицы соответствует контакту некоторого элемента. Более того, в ней каждому элементу отведена своя зона контактов, начинающаяся со строки, указанной в $$R\_LINKS$$ таблицы элементов. В начале зоны идут выходные контакты, а затем входные. Входы схемы представляются как элементы, имеющие только выходные контакты, а выходы схемы имеют только входные контакты. Столбец $$R\_EL$$ содержит ссылку на таблицу элементов. В столбце $$FLAG$$ поразрядно записываются различные признаки, необходимые в процессе моделирования и генерации тестов. Столбец $$SV$$ содержит кодированные значения сигналов в
Как уже отмечалось, во многих случаях алгоритм моделирования можно представить следующим образом. После подачи входного воздействия на модель ДУ поочерёдно вычисляются значения на выходах всех элементов по значениям на их входах. Такая процедура называется итерацией. В результате вычислений значения некоторых сигналов могут измениться. В этом случае необходимо выполнить вторую итерацию (т.е. вычислить значения на выходах всех элементов по новым значениям на их входах), затем третью итерацию и так далее до тех пор, пока все сигналы не примут установившиеся значения. В этом случае процесс моделирования (на одном входном наборе) сходится естественным образом. Возможен и другой результат моделирования – значения сигналов на некоторых линиях периодически изменяются. В этом случае говорят, что моделирование не сходится из-за генерации модели ДУ. Такая ситуация может быть, например, в ДУ, содержащем контур обратной связи с нечетным числом инверсий.
Поэтому для сходимости процесса необходимо иметь критерий окончания моделирования. Обычно задают два критерия: совпадение результатов моделирования на соседних итерациях или достижение некоторого предельного числа итераций $$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 \}}\\ \}\\$$Как отмечалось выше, в зависимости от очередности обработки логических элементов различают сквозные и событийные методы
В дальнейшем мы будем, в основном, рассматривать событийные интерпретативные методы
При этом центральное место занимает понятие
Для упорядочения событий в ОБС используют различные способы моделирования временного механизма. Один из них использует при программной реализации структуру связанных списков, как это показано на рис.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 $$. С другой стороны этот способ не эффективен, если интервалы времени между событиями
достаточно велики. Элементы массива при этом будут иметь в основном нулевые указатели, а сам массив может иметь чрезмерно большой размер. Наличие временного
механизма позволяет при моделировании подавать
В листинге "Алгоритм
В каждый (не пустой) момент времени события обрабатываются по алгоритму, представленному в листинге "Алгоритм
Отметим, что представленный в листинге "Двухпроходной алгоритм обработки событий" алгоритм является двухпроходным. На первом проходе здесь переписываются события
$$(i,v_i^\prime)$$, связанные с моментом времени $$Т$$
Алгоритм логического моделирования
$$ \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} \}\\ \}\\ $$В следующем алгоритме , представленном выше, заносятся в ОБС только "истинные события",
при которых происходит изменение сигнала. В показано, что данный алгоритм является более эффективным. Преимущество двухпроходного
алгоритма заключается в том, что он позволяет избежать повторных вычислений (моделирования одного и того же логического элемента) в случае наличия кратных событий,
когда на входах имеет место изменение нескольких сигналов. Однако проведенный статистический анализ показал, что кратные события в
процессе моделирования случаются достаточно редко. Поэтому кроме двухпроходного были разработаны также однопроходные алгоритмы
Несмотря на свою привлекательность (простоту и эффективность) этот алгоритм имеет недостаток. На рис.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 описаны машинные модели схем, которые используются в логическом моделировании, к которым относятся:
В разделе 5.2 изложены основные алгоритмы логического
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.