Файл: Ландау И.Я. Применение ЦВМ для проектирования ЦВМ.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 27.06.2024

Просмотров: 79

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

сти условное ранжирование очень трудно, а иногда и невозможно.

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

ПРИЕМ

ГАШ2

СДВЛЕВ

ГАШ1

Рис. 2-5. Кольцевой

сдвигающий регистр.

1 на шине СДВПР (СДВЛЕВ) определяет

направление сдвига. Триггеры Т1.

ТЗ,

TS

образуют основной регистр Р\\ Т2,

Т4, Тб — вспомогательный регистр

Р2.

Цикл сдвига состоит нз последовательности сигналов гашения Р2 (ГАШ2),

передачи нз Р1 в Р2 (ПРИЕМ), гашения Pi

(ГЛШ1) и передачи со сдвигом нз

Р2 в Р1 (СДВПР или СДВЛЕВ).

 

32

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

Еще один способ ускорения моделирования — так называемое «событийное моделирование» [Л. 10, 12] — использует то обстоятель­ ство, что в каждом такте, как правило, срабатывают лишь несколько процентов элементов схемы, поэтому можно на каждой итерации ре­ шать лишь те уравнения из (2-1), в которых изменилось значение уотя бы одной из переменных в правой части. Для этого перед мо­ делированием (при трансляции) строится специальная таблица опро­ сов вперед (ТОВ), в которой одна строка отведена для каждого

Рис. 2-6.

элемента и входных сигналов схемы. В строке некоторого элемента Ri указаны ссылки на уравнения тех элементов R ,• (адреса этих уравнений в списке), на входы которых попадает выходной сигнал элемента Ri. При моделировании по ТОВ определяются уравнения, которые надо решать на данной итерации. На первый взгляд может показаться, что событийное моделирование позволяет ускорить вы­ полнение итерации в п/р раз, где п — число элементов схемы, а р — число сработавших на данной итерации элементов. Однако на самом деле это не так, особенно если моделирование производится на уровне реальных физических элементов.

Рассмотрим,

например, трехвходовые элементы

ИЛИ — НЕ

(рис. 2-6), нагрузочная способность которых равна 4.

При этом

решать придется

не р уравнений, a k (p^.k^.'4p) и ускорение полу­

чится равным n/k. При использовании компилирующего метода ре­ шение одного уравнения займет 3 команды '(на ЦВМ типа БЭСМ-4):

Р \ =-л, V

Я = 1 ® Л .

Здесь символом

ф обозначена операция сложения

по модулю

2, а 1 — константа,

все разряды которой равны 1. При

событийном

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

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

3—504

33


мон памяти, а вызываются туда по частям с внешних накопителей-] (магнитных барабанов или дисков). Такой обмен очень замедлит* выполнение итерации, а п-ри событийном моделировании количество обращений к внешним «накопителям «может быть значительно уменьшено.

Мы рассмотрели различные способы организации мо­ делирующих программ. Самым простым является метод интерпретации; в этом случае для описания схемы тре­ буется наименьший объем оперативной памяти. Однако выполнение итерации при использовании интерпрети­ рующей программы занимает сравнительно много ма­ шинного времени. В ряде случаев значительное ускоре­ ние счета может быть получено при использовании ме­ тода компиляции, но при этом возрастает необходимый объем памяти (или приходится уменьшить максималь­ ный размер схемы). Оба метода универсальны, т. е. при­ годны для моделирования работы произвольных син­ хронных и асинхронных схем, построенных на любых физических элементах, реализующих логические функции И, ИЛИ, НЕ. В ряде случаев скорость моделирования может быть увеличена за счет предварительного ранжи­ рования уравнений (2-1); значительно сокращаются затраты машинного времени на моделирование при мно­ гопрограммном моделировании. Наконец, событийное моделирование позволяет ускорить выполнение итера­ ции для очень больших схем.

2-3. ПРИМЕНЕНИЕ МОДЕЛИРОВАНИЯ ДЛЯ ПРОВЕРКИ СХЕМ И ПОСТРОЕНИЯ ТЕСТОВ

Программы, о которых шла речь, предназначены для моделирования работы устройства на самом детальном уровне — уровне логических схем, составленных в базо­ вых элементах или в реальных физических элементах, выполняющих элементарные логические операции. Моде­ лирование на уровне логических схем необходимо преж­ де всего для проверки функционирования этих схем, по­ скольку разработка логических схем ЦВМ, как правило, выполняется вручную и, следовательно, эти схемы содер­ жат ошибки. Ошибки в логической схеме обнаружива­ ются только при наладке машины, причем устранение их может привести к переделке значительной части кон­ структорской и технологической документации.

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

34

проверки логических функций, реализуемых схемой; проверки временных соотношений; проверки надежности (отсутствие риска и гонок).

Проверка реализуемых схемой логических функций выполняется путем прогонки теста, т. е. моделирования работы схемы на некотором наборе значений входных сигналов. При этом в заданные моменты времени нужно сравнивать полученные при моделировании значения вы­ ходных сигналов с заранее вычисленными (блок 6 на рис. 2-2). Естественно, что так нельзя провести полную проверку схемы (при всех возможных начальных состоя­ ниях схемы и комбинациях входных сигналов).

Однако если моделируется работа устройства доста­ точно большого размера (типа логического блока ЦВМ), то этим методом можно проверить все выполняемые им команды, поскольку для каждого логического блока чис­ ло таких команд сравнительно невелико и для выполне­

ния команды требуется

80— 100

тактов моделирования.

Задача

облегчается еще и тем,

что

выполнение

каж­

дой команды

обычно

не

зависит

от остальных

(во

всяком

случае,

в правильно

спроектированном устрой­

стве), т. е. все команды можно моделировать по от­ дельности.

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

здесь

метод

простой итерации, при

этом может быть

распечатана

и

последовательность

работы

элементов

в каждом такте.

 

 

 

 

Проверка

надежности

произвольной схемы значи­

тельно

труднее.

Для этой

цели может быть

использо­

вано .условие 2: схема, в которой оно выполняется, сво­ бодна от риска и гонок. Выполнение условия 2 проверя­ ется в блоке подготовки итерации (рис. 2-4) сравнением значений входных сигналов каждого элемента до и после итерации (в ЛШО и ЛШ1). Однако условие 2 является достаточным, но не необходимым, т. е. схема, в которой оно не выполняется, может оказаться устойчивой и однозначной. Поэтому в случае невыполнения его окон­ чательное решение должен принимать разработчик схемы.

3*

35


Другое применение моделирования на уровне логи­ ческих схем — автоматическая проверка полноты тестов устройств и составление диагностических таблиц [Л. 8, 13]. Тест представляет собой совокупность программ (под программой здесь понимается либо некоторая по­ следовательность выполняемых устройством команд, ли­ бо некоторый набор значений входных сигналов, если проверяемое устройство является отдельной ячейкой или блоком). Тест считается полным, если он обеспечивает фиксацию любой неисправности устройства (из рассма­ триваемого класса неисправностей), т. е. если результа­ ты выполнения теста на исправном и неисправном устройствах отличаются друг от друга. Класс про­ веряемых неисправностей зависит от назначения теста и элементов устройства. Например, триггер может иметь четыре типа неисправностей: находится постоянно в состоянии 1; в состоянии 0; значение обоих (прямого и инверсного) выходов равно 1; равно 0. Ди­ одная комбинационная схема с п входами может иметь 2п неисправностей, соответствующих обрыву и коротко­ му замыканию каждого из диодов. Могут рассматри­ ваться неисправности, заключающиеся в обрывах и за­ мыканиях соединительных проводов, отказах контактов разъемов и т. д. Любая неисправность приводит к изме­ нению логических функций каких-то элементов схемы и, следовательно, к изменению некоторых уравнений из (2-1). Таким образом, неисправность превращает исход­ ную схему С в некоторую новую Ci и при моделирова-

рии прохождения полного теста в схеме

С и в схемах

Сj (/= 1 , 2, ..., р — номер неисправности)

должны быть

получены разные результаты. Если при этом результат выполнения теста для каждой из схем С; отличен от результатов для всех остальных* Cj (/= 1 , 2, ..., t— 1, г'+1, ..., р), то тест позволяет локализовать любую оди­ ночную неисправность устройства.

Для удобства использования теста строятся специ­ альные диагностические таблицы. Диагностическая та­ блица представляет собой матрицу, у которой каждый столбец соответствует одной из проверяемых данным тестом неисправностей (т. е. одной из схем Cj), а каж­ дая строка — одной из программ теста. Элемент матрицы Щк показывает результат выполнения программы I схе­ мой Ch-ciih 1, если этот результат отличается от ре­ зультата выполнения программы I исправной схемой С

36


и й/л= 0 в противном случае. Тест полон, если в каждом столбце диагностической таблицы есть хотя бы одна единица, и позволяет локализовать любую одиночную

Рис. 2-7. Блок-схема программы по­ строения диагностических таблиц.

неисправность из заданного списка, если все столбцы попарно различимы.

На рис. 2-7 изображена блок-схема программы по­ строения диагностических таблиц.

Блок 1 подготавливает моделирование очередной программы теста (устанавливает начальное состояние схемы, задает значения входных сигналов). Если тест не кончился, производится моделирование (блок 3 явля­ ется программой моделирования) и формируется оче­ редной элемент аш диагностической таблицы (блок 4). После окончания теста в схему вносится очередная не­ исправность (блок 5) и, если список неисправностей не исчерпан, повторяется прогон теста. После моделирова­ ния всех Cj печатаются полученная диагностическая та­ блица (блок 7) и указания о полноте и избыточности

73

теста (если две пли более строк таблицы совпадают, тО соответствующие программы дублируют друг друга п следует оставить в тесте лишь одну из них).

От программы моделирования, применяемой для по­ строения диагностических таблиц, требуется, очевидно, максимальное быстродействие. Действительно, даже для очень маленькой схемы, состоящей всего из 100 элемен­ тов ИЛИ — НЕ типа изображенных на рис. 2-6, диагно­ стическая таблица содержит 800 столбцов (обрыв и за­ мыкание каждого входа, постоянный 0 и 1 на выходе

•каждого элемента), т. е. прогон теста на модели надо повторить 800 раз; сам тест может быть тоже достаточ­ но сложным. С другой стороны, максимальный размер моделируемой схемы в этом случае не очень важен, поскольку составление диагностических таблиц для схе­ мы большого размера потребовало бы слишком много машинного времени. Проверка функционирования схемы предъявляет иные требования к программе моделирова­ ния: моделирование схемы возможно большего размера на сравнительно простых (коротких) тестах. Поэтому для составления диагностических таблиц целесообразно использовать методы моделирования, дающие наиболь­ шее быстродействие: программу компилирующего типа и многопрограммное моделирование, тогда как для про­ верки функционирования больше подходит программа интерпретирующего типа, позволяющая увеличить раз­ мер моделируемой схемы.

Некоторые данные о возможностях программ моде­ лирования обоих типов приведены в табл. 2-1.

Т а б л и ц а 2-1

Тип программы

Размер схемы

Машинное время/такт

моделирования

 

 

 

Компилирующая

~ 1 500

элементов

— 0,2 с

Интерпретирующая

~ 3 000

элементов

с

Предполагается, что моделируемая схема ранжируе­ ма и построена на элементах типа ИЛИ — НЕ, И — НЕ, и для моделирования используется ЦВМ БЭСМ-4 с 2 кубами памяти (8192 слова).

38


2-4. ЯЗЫКИ ФОРМАЛЬНОГО ОПИСАНИЯ ЦИФРОВЫХ УСТРОЙСТВ

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

Однако для таких задач логического проектирова­ ния, как выбор лучшего варианта структурной схемы, проверка блок-схемы машины, уровень этот оказывается слишком «мелкомасштабным». Кроме того, задачи та­ кого типа должны решаться до разработки детальной логической схемы. Таким образом, логическое проекти­ рование требует средств (язык и основанная на нем си­ стема моделирования) для описания и моделирования работы ЦВМ на различных уровнях — от структурной схемы вычислительного комплекса до детальной логиче­ ской схемы отдельного узла машины.

Описание логики машины во многом сходно с описа­ нием программы для ЦВМ, поэтому языки описания ло­ гических схем близки к универсальным языкам програм­ мирования (ФОРТРАН, АЛГОЛ); вообще говоря, эти языки могут использоваться и для описания схем. При этом описание схемы является программой на данном языке; триггеры, входные сигналы и выходные сигналы комбинационных схем описываются в программе как ло­ гические переменные; регистры—как одномерные логиче­ ские массивы (число элементов массива равно разрядно­ сти соответствующего регистра); запоминающие устрой­

ства— как матрицы (число

строк равно объему ЗУ,

число столбцов — разрядности

ячейки). Однако исполь­

зование для описания логических схем универсальных языков программирования имеет ряд существенных недо­ статков: отсутствие средств для описания динамических процессов (из-за этого нельзя моделировать временные соотношения и параллельную работу устройств ЦВМ) и

39