ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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