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

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

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

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

Добавлен: 27.06.2024

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

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

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

К операциям Отношения относятся: больше ( > ) ,

больше или равно '(> = ), равно ( = ), не равно ( ф ) , меньше или равно ( < = ), меньше' ( < ) . Общин вид вы­ ражения отношения: А от. В, где А, В — логические или арифметические выражения, а от. — некоторая операция отношения. Значением выражения отношения является 1, если значения А и В соответствуют указанной опера­ цией отношения связи, и 0 в противном случае. Значения А и В рассматриваются при этом как целые двоичные числа. Если А и В имеют разную длину, то .они юстиру­ ются вправо и более короткое дополняется слева ну­ лями. Если выражение отношения стоит в правой части оператора присваивания, то результат вычисления вы­ ражения отношения (1 или 0) заносится в самый младший разряд указанной в левой части оператора переменной, а остальные ее разряды заполняются нулями.

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

Для выравнивания переменных разной длины введе­ ны операторы сдвига, которые также следует отнести к операторам присваивания, хотя они и имеют другую форму записи. Имеются две операции сдвига: сдвиг впра­ во (СДВП) и сдвиг влево (СДВЛ).

Вид оператора сдвига:

СДВП (п) А, В;

СДВЛ (/?.) А, В;

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

47

Рассмотрим пример:

■РЕГИСТР PI (1 : 10), Р2(1 : 12);

СДВ'П '(5), Р2, Р 1;

Пусть содержимое Р 2 в момент выполнения оператора было рав­ но 1401Г1010101. Тогда в результате выполнения сдвига в Р1 ока­ жется число 0001101110.

Для удобства записи программ в языке введен опе­

ратор группового присваивания:

...,

 

 

 

 

 

 

ЗАНОС (А[, А% ...,

Аи, — В\,

Въ‘

Вп)\

 

 

 

 

Здесь А и Аъ ..., Аи,

В ь Вг,

• ■

В „ — названия пере­

менных. Оператор работает следующим

образом:

пере­

PZ

 

менные,

перечисленные в

левой

части

равенства

 

 

(Ai........ Ah), рассматри­

 

 

ваются как один регистр.

 

 

При этом старшим (ле­

 

 

вым) разрядом его явля­

 

 

ется

старший

разряд

А и

 

 

а

младшим — младший

 

 

разряд

Ah. Аналогичным

 

 

образом

склеиваются

Вi,

 

 

В2, ..., Вп. Два получен­

 

 

ных таким образом «сверх­

 

 

регистра»

а и р

юстиру­

 

 

ются

по младшим разря­

 

 

дам, после чего выполня­

 

 

ется

присваивание

а = р .

 

 

Среди Вi могут быть кон­

 

 

станты.

В этом

случае в

 

 

а для

записи

константы

 

 

отводится

нужное

число

 

 

разрядов в том месте, где

 

 

она находится.

 

 

 

 

 

Рассмотрим

пример:

 

 

 

 

ЗАНОС

 

(AI,

А2

 

 

(8: 10) = А З

(12: 13),

6В);

 

 

 

Пусть

А1 — 4-разряднын

 

 

регистр и содержимое 12 и 13

 

 

разрядов АЗ равно 10. После

 

 

выполнения

оператора

а =

 

 

=0010110

 

(т. е. А1 =0010,

А2

Рис. 2-8.

 

(8 : 10) =

110).

 

 

 

 

48


Для управления передачами информации между ре­ гистрами в ЦВМ обычно используются сигналы приема в регистр и установки пуля, которые одинаковым обра­ зом заходят на входные комбинационные схемы всех разрядов данного регистра. Сигналы эти являются одно­ разрядными и поэтому не могут быть непосредственно использованы в выражениях. Для пояснения рассмо­ трим схему рис. 2-8. В регистр Р1 производится передача из регистра Р2 по команде ПРИЕМ. Пусть содержимое Р2 равно 0111. Тогда в результате выполнения оператора Р1=Р2*ТП содержимое Р1 окажется равным 0001, а не 0111. Для описания таких схем в языке введена воз­ можность «размножения» одноразрядных переменных и двоичных констант в выражениях на заданное число разрядов. Это записывается следующим образом: ‘А (п), где А — название переменной (или одноразрядная дво­ ичная константа), а п — количество разрядов. Тогда рас­ сматриваемая схема описывается так: Р1 = Р 2*Т П (4)‘; в результате выполнения этого оператора в Р1 засыла­ ется значение 0111.

2-7. ОПЕРАТОРЫ УПРАВЛЕНИЯ

С помощью операторов присваивания может быть описана логическая схема любого цифрового устройст­ ва. Однако для сокращения программы в тех случаях, когда не требуется детального описания логической схе­

мы

(например, для функционального моделирования),

в

языке введены операторы управления. Кроме

того,

операторы управления

необходимы

для описания

ми­

кропрограмм.

что любой

оператор программы

 

Выше говорилось,

может иметь метку; метка никак не влияет на выполне­ ние оператора при моделировании и не связана со струк­ турой части схемы, описываемой данным оператором Нормально при моделировании операторы выполняются последовательно, в порядке записи их в программе. Опе­ раторы управления позволяют изменить этот естествен­ ный порядок выполнения программы.

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

ИДИ А;

всегда передает управление оператору с меткой А (т. е. начинает выполняться последовательность операторов, начиная с оператора, имеющего метку А).

4— 504

49



Оператор

ИДИ (арифм. выраж.) Аь А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