Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Ландау И.Я. Применение ЦВМ для проектирования ЦВМ

.pdf
Скачиваний:
7
Добавлен:
23.10.2023
Размер:
7.98 Mб
Скачать

Оператор

ИДИ (арифм. выраж.) Аь А2, . . Anj

передает управление оператору с меткой А*, где i равно целой части значения арифметического выражения.

Оператор условной передачи управления

ЕСЛИ (лог.

выр./выр.

отнош.) A l, А2;

передает управление

оператору

с меткой А 1, если зна­

чение логического выражения не равно 0 (значение вы­ ражения отношения равно 1), и оператору с меткой А2 в противном случае. С помощью этих операторов можно передавать управление только внутри одного блока про­ граммы.

Оператор параллельного пуска ПУСК At, А2> . . А„;

имитирует одновременную работу блоков (подпрограмм) с названиями Аь А2, ..., Ап. При моделировании, естест­ венно, блоки выполняются последовательно, однако ра­ бота их занимает один и тот же такт модельного време­ ни. Блоки выполняются в порядке записи их названий; после выполнения последнего блока управление переда­ ется к следующему за ПУСК оператору.

Оператор задержанного пуска ЧЕРЕЗ (В/я) А,, А2, ..., А,;

производит запуск блоков Аь А2......... А,• (аналогично оператору ПУСК) по истечении интервала времени, ве­ личина которого определяется текущим значением пере­ менной В или десятичной константой я. Управление пе­ редается сразу же следующему за ЧЕРЕЗ оператору.

Оператор приостанова

-ЖДАТЬ (логич. выраж./выраж. отнош./я);

выполнение всех следующих за ЖДАТЬ операторов про­ изводится после того, как значение логического выраже­ ния станет не равно 0 (значение выражения отношения станет равно 1, пройдет интервал времени я). Появление оператора ЖДАТЬ в одном из блоков не означает окон­ чания такта моделирования, а вызывает только приоста­ новку выполнения данного блока и передачу управле­ ния к запустившей его программе. Выполнение прерван­ ного блока (начиная со следующего за ЖДАТЬ опера-

50

тора) заканчивается после того, как удовлетворится указанное в операторе условие; Если условия для про­ должения работы нескольких прерванных (или задер­ жанных) блоков создаются одновременно, то выполнение их производится в той последовательности, в которой были" расположены соответствующие операторы ЖДАТЬ, ЧЕРЕЗ.

Оператор задержки

ЗАДЕРЖКА (А/п) Соператор присваивания^»;

означает, что по истечении интервала времени, величина которого определяется текущим-значением переменной А (десятичной константой /г), выполняется оператор при­ сваивания. Нормальный порядок выполнения программы не нарушается.

Оператор блокировки

БЛОКИРОВКА (В/п) А,, А2, ..., А,.;

запрещает использование значений переменных Ai, А2, ...

..., А,- до истечения интервала времени, заданного пе­ ременной В (десятичной константой п). Попытка ис­ пользовать их в этом интервале фиксируется как ошибка.

Операторы БЛОКИРОВКА и ЗАДЕРЖКА позволя­ ют учесть при моделировании время срабатывания запо­ минающих элементов и задержки распространения сиг­ налов.

2-8. СТРУКТУРА МОДЕЛИ И ОРГАНИЗАЦИЯ ПРОЦЕССА МОДЕЛИРОВАНИЯ

Как уже говорилось, описание устройства состоит из главной программы и блоков. Главная программа на­ чинается строкой

ПРОГРАММА А;

здесь А — идентификатор, который является названием программы. Каждый блок начинается строкой

БЛОК А;

где А — название блока. Выход из блока отмечается оператором

ВОЗВРАТ;

4*

51

Если блок имеет несколько выходов (т. е. внутри бло­ ка имеются несколько ветвей), то каждый выход должен быть отмечен оператором ВОЗВРАТ. После последнего оператора блока ставится оператор

КОНЕЦ;

который отмечает окончание текста блока.

В начале главной программы, непосредственно за оператором ПРОГРАММА, располагаются операторы описания, описывающие переменные главной программы и блоков. Блоки не содержат описаний типа. Таким об­ разом, область действия переменных — вся программа.

Название оператора (метка) считается локализован­ ным в том месте программы (блоке или главной про­ грамме), где оно было определено. Названия блоков также являются метками, которые считаются определен­ ными во всей программе.

В любом месте программы (между любой парой опе­ раторов) может располагаться комментарий. Коммента­ рий— произвольная последовательность любых символов языка (кроме символа «;»), начинающаяся с символа «>!<» или со слова КОММЕНТАРИЙ и заканчивающаяся символом «;». Комментарий используется для удобства чтения программы и никакого эффекта на моделирова­ ние не оказывает.

Описание устройства может состоять из нескольких отдельно написанных программ, каждая из которых описывает один из блоков устройства. Эти программы могут использоваться как по отдельности — для модели­ рования работы отдельных блоков, так и совместно — для моделирования работы устройства в целом. В по­ следнем случае одна из программ является основной (та, с выполнения которой начинается процесс модели­ рования), а остальные — подпрограммами. Для этого в подпрограмме должны быть определены с помощью оператора СВЯЗИ те переменные (формальные параме­ тры), через которые осуществляется связь (передача информации) данной подпрограммы с основной про­ граммой:

СВЯЗИ Аъ Аь ..., А„;

Названия подпрограмм, к которым обращается дан­ ная основная программа, должны быть указаны в ней с помощью оператора ВЫЗВАТЬ:

ВЫЗВАТЬ АРИФ (РР, PI, Р2), ЗУ (РК, РА, КРА);

53

Здесь АРИФ и ЗУ — названия подпрограмм. После названия подпрограммы в скобках идет список факти­ ческих параметров, которые по числу, порядку следова­ ния и разрядности переменных должны соответствовать формальным параметрам, описанным в . операторе СВЯЗИ соответствующей подпрограммы. Фактические параметры должны быть ранее описаны в основной программе в операторах РЕГИСТР или СУБРЕГИСТР. Если для связи с некоторой подпрограммой используют­ ся не все ее формальные параметры, то в списке факти­ ческих параметров для сохранения соответствия на ме­ ста неиспользуемых формальных! параметров ставится идентификатор ПУСТО:

ВЫЗВАТЬ АРИФ (РК, ПУСТО, АРГ);

ПУСТО является резервированным словом и не мо­ жет употребляться в качестве названия переменной или метки. Списки формальных и фактических параметров должны совпадать по началу, и должно выполняться (в пределах списка фактических параметров), их соот­ ветствие, однако длина списка фактических параметров может быть меньше, чем формальных.

Операторы СВЯЗИ и ВЫЗВАТЬ относятся к опера­ торам описания типа и должны быть расположены вме­ сте с ними.

Любая подпрограмма может в свою очередь вызы­ вать другие подпрограммы, т. е. являться основной по отношению к ним, однако подпрограмма не может вызы­ вать основную (по отношению к ней) программу. Назва­ ния подпрограмм, перечисленные в операторе ВЫЗ­ ВАТЬ данной программы, определены в ней как метки (иаоавне с названиями блоков).

Оператор управления может передавать управление только по меткам, локализованным внутри того участка программы (блок, главная программа), где расположен этот оператор. Таким образом, оператор управления не должен передавать управления по меткам, являющим­ ся названиями блоков или подпрограмм.

Операторы ПУСК, ЧЕРЕЗ, расположенные в неко­ торой программе, могут передавать управление только к блокам этой программы и подпрограммам, определен­ ным в ней оператором ВЫЗВАТЬ. Нельзя передавать управления ИЗ основной программы непосредственно

53

какому-либо блоку подпрограммы. Запрещаются рекур­ сивные обращения из блока к главной программе.

При объединении нескольких программ все они ис­ пользуют общий счетчик времени. Действие операторов ЗАДЕРЖКА, БЛОКИРОВКА в любой из программ рас­ пространяются на все остальные. Оператор ЖДАТЬ в подпрограмме выполняется так же, как в блоке, т. е. вызывает приостанов данной подпрограммы, ее блоков и вызванных ею подпрограмм, но не влияет на осталь­ ные программы. Оператор ЖДАТЬ в самой старшей основной программе останавливает процесс моделирова­ ния до тех пор, пока не выполнится указанное в опера­ торе условие. Происходит только увеличение счетчика времени и завершение (если надо) ранее приостановлен­ ных или задержанных блоков н подпрограмм.

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

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

впамяти модели; тест может быть описан как отдельный блок модели и, наконец, необходимая информация мо­ жет вводиться в регистры и память модели в процессе моделирования с перфокарт.

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

либо группу разрядов (для регистров), либо группу адресов ячеек (для памяти), в которые вводится новое значение. Значения записываются как целые восьмерич­ ные константы. Например, запись

PI (1 : 12) 4732, ОП(173 : 175) 345261, 520100, 171240;

означает,

что в 1 — 12-й разряды

регистра Р1 надо зане­

сти 4732

(остальные

разряды

Р1 не изменяются) и

в 173— 175-ю ячейки

памяти ОП

занести числа 345261,

520100 и

171240 соответственно.

Если разрядность кон-

54

c'i'a«ты меньше, чем указывается граничной парой, в ле­ вые разряды заносятся нули. Вывод результатов модели­ рования производится оператором

ПЕЧАТЬ (Аь А2, ..., Ап), где Аь А& ..., Ап — названия переменных. Значения

этих переменных печатаются в виде целых чисел с ука­ занием названия. Для вывода содержимого ячеек Памя­

ти в списке указывается элемент П( а:| 5),

где П —

название запоминающего

устройства,

а а и

[3 — началь­

ный и конечный адреса

выводимой

группы

 

ячеек.

Для оперативного управления процессом моделиро­ вания вводится специальный регистр ПУЛЬТ, который отображает пульт управления моделируемого устрой­ ства. ПУЛЬТ не требует описания и не может использо­ ваться в левой части операторов присваивания. В конце каждого такта моделирования ib ПУЛЬТ заносится со­

держимое одного из клавишных регистров пульта управ­ ления той машины, на которой производится моделиро­ вание.

В некоторых операторах указывается величина ин­ тервалов времени. В языке ие оговорена единица изме­ рения времени, поэтому автор программы может выби­ рать ее произвольно (однако во всех совместно рабо­ тающих программах эта единица должна быть одна и та же). Кроме таких явно определенных временных интервалов имеется неявный интервал — такт моделиро­ вания. Показания внутренних часов модели — счетчика модельного времени — увеличиваются на один такт пос­ ле выполнения всех операторов главной программы; ве­ личина такта (число содержащихся в,такте единиц вре­ мени) может задаваться в начале моделирования. Кроме того, показания часов могут изменяться внутри такта с помощью оператора ВРЕМЯ. При каждом изменении счетчика времени производится продвижение всех задер­ жек, проверка (и, если нужно, выполнение) приостанов­ ленных блоков и блокировок.

Для пояснения основных конструкций языка ФОРОС рассмотрим несколько примеров. Блок СДВИГ описывает схему рис. 2-5 на уровне базовых элементов И, ИЛИ, триггер. Для выполнения пра­ вил образования идентификаторов к номерам цепей рис. 2-5 добав­ лена буква С !(т. е. цепь 1- именуется С1, цепь 2—С2 и т. д.).

БЛОК СДВИГ;

*БЛОК СДВИГ ДАЕТ ОПИСАНИЕ КОЛЬЦЕВОГО СДВИ-

*ГОВОГО РЕГИСТРА НА УРОВНЕ БАЗОВЫХ ЭЛЕМЕНТОВ;

Т1=С1/Т1 * ГАШ1;

С1=С4/С5;

55

С4 = А * СДВПР;

С5=С10 4= СДВЛЕВ;

В= С11/В * ГАШ2;

С11=Т1 * ПРИЕМ; Т2 = С2/Т2 * ГАШ1;

С2=С6/С7;

С6=В * СДВПР;

С7=А * СДВЛЕВ;

С10=С12/С10*ГАШ 2;

С12=Т2 * ПРИЕМ;

ТЗ = СЗ/ТЗ * ГАШ1;

СЗ = С8/С9;

С8=С10 * СДВПР;

С9 = В * СДВЛЕВ;

А=С13/А * ГАШ2;

С13=ТЗ * ПРИЕМ; ВОЗВРАТ; КОНЕЦ;

Блок

СДВИГ1 дает функциональное описание той

же схемы

без учета

временной последовательности управляющих

сигналов

(РАДИ, ГАШ2 и т. д.). При этом мы не рассматриваем

структуру

схемы '(наличие двух регистров: Т1, ТЗ, Т5 и Т2, Т4, Тб и передачи между «ими), а интересуемся только результатом выполнения опе­

рации.

 

 

БЛОК СДВИГ Ь;

ОПИСАНИЕ СХЕМЫ

РИС. 2-5.

* ФУНКЦИОНАЛЬНОЕ

* РЕГИСТР Р.1 ОБРАЗОВАН ТРИГГЕРАМИ Т1, ТЗ, Т5;

ЕСЛИ (С Д В П Р = 1) ПР,

ЛВ;

 

ПР :ЗАНОС (P I= P 1 (3 ), PI (1 : 2));

 

ВОЗВРАТ;

ЛВ1, КН;

 

ЛВ : ЕСЛИ :(СДВЛЕ'В = 1)

 

ЛВ1 : ЗАНОС (Р1'=Р1 (2 : 3), PI (1));

 

КН : ВОЗВРАТ;

 

 

КОНЕЦ;

 

 

В программе УМН дано функциональное описание устройства

умножения (рис. 2-9).

 

 

ПРОГРАММА УМН;

 

 

РЕГИСТР PI (1 : 36), Р2( 1

: 36), С М (1:36), СДВ,

СЛ;

СВЯЗИ PI, Р2, СМ, СДВ, СЛ;

 

ЖДАТЬ (СЛ);

 

 

С М =СМ +Р1 * ■ Р 2(36)‘;

 

 

ЖДАТЬ (СДВ);

 

 

ЗАНОС (Р2 = СМ (36), Р2

(2 :3 5 ));

 

СДВП (1) ОМ, СМ;

 

 

КОНЕЦ;

 

 

Программа УМН при моделировании используется как под^ программа; при каждом обращении к ней (ПУСК УМН) после появления последовательности сигналов СЛ, СДВ выполняется один такт умножения. В программе УМН учитывается способ реа­ лизации умножения. Если интерес представляет только результат умножения 1(старшие разряды произведения в СМ, младшие — в Р2), программа выглядит так:

ПРОГРАММА УМН1;

РЕГИСТР Р1>(1 : 36), Р2(1 : 36), СМ(1 : 36), П(1 : 72);

СВЯЗИ PI, Р2, СМ;

56

П=Р1 X Р2;

ЗАНОС (СМ, Р 2= П ); КОНЕЦ;

Из приведенных примеров видно, что схема, описанная на уров­ не детальной логики, может оказаться неранжироваиной (СДВИГ)

Рис. 2-9. Блок-схема реализации умножения.

PI — регистр множимого; Р2 — регистр множителя; СМ — сумматор (по 36 раз­ рядов). По команде СЛ производится умножение множимого на младший раз­ ряд множителя и прибавление произведения к содержимому сумматора; по команде СДВ содержимое СМ н Р2 сдвигается на один разряд вправо, причем младшие разряды произведения заносятся в Р2.

и, следовательно, при моделировании потребуется несколько итера­ ций, тогда как описания на более высоком уровне (СДВИГ1, УМН, УМН1) обязательно должны быть ранжированы, поскольку повтор­ ные итерации здесь недопустимы (они приведут к получению не­ верного результата).

Система моделирования состоит из четырех основ­ ных частей: транслятора с языка ФОРОС, архивариуса, компоновщика и программы моделирования; программы написаны для ЦВМ БЭСМ-4.

Транслятор переводит описание схемы с входного языка во внутреннюю кодировку программы моделиро-

57

вання. При этом производится синтаксический контроль описания и печатаются сведения о замеченных ошиб­ ках.

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

Рис. 2-10. Блок-схема транслятора с языка ФОРОС,

5?

ца подпрограмм (ТП). В ТР заносятся названия и длина всех переменных и значения всех констант, используе­ мых в программе (кроме констант, величина которых не превышает 212). В ТМ заносятся ссылки на подпро­ граммы, а в ТП — названия их и фактические параме­ тры. Каждый оператор исходной программы во вну­ тренней кодировке занимает целое число машинных слов, причем в первом слове указываются номер опера­ тора, его тип и количество занятых им слов.

Трансляция производится в два прохода: при первом проходе выполняется синтаксический контроль и перевод во внутреннюю кодировку, при втором определяются истинные значения 'внутренних меток.

Рис. 2-11. Блок-схема блока «Трансляция оператора».

59

Соседние файлы в папке книги из ГПНТБ