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

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

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

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

Добавлен: 27.06.2024

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

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

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

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

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

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

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

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

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

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

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