Простейшая микро-ЭВМ

         

ДАННЫЕ И ПРОГРАММЫ


Содержание этой главы носит в основном справочный характер. В ней приведены лишь основ­ные понятия и самые общие сведения о работе микро-ЭВМ, без которых неподготовленному читателю будет трудно проследить работу основных ее узлов, описанию которых посвящены после­дующие главы книги. Читатель, знакомый с основами построе­ния ЭВМ и программирования, может сразу перейти к следую­щей главе.

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

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

Под двоичной системой счисления подразумевается позицион­ная весомозначная система с основанием 2 и с цифрами 0,1. Термин "позиционная весомозначная" означает, что в зависи­мости от положения цифры в числе ей приписываются разные значения, или вес. В наиболее распространенных системах счис­ления этот вес равен степени основания, показатель которой ра-вен n — 1, где п — номер разряда, отсчитываемый справа налево. Системы счисления получают наименование в зависимости от основания.
Так, в десятичной системе счисления основанием является 10, в двоичной — 2, в восьмеричной — 8, в шестнадца-теричной — 16 и т. п. При этом количество используемых цифр для представления чисел равно основанию системы счисления. В двоичной системе используются всего две цифры: 0 и 1. В де­сятичной системе используются 10 цифр от 0 до 9, в восьмерич­ной — восемь цифр, т. е. первые восемь цифр десятичной систе­мы (от 0 до 7). В шестнадцатеричной системе счисления исполь­зуются все цифры десятичной системы, а в качестве недостаю­щих шести цифр используются первые шесть букв латинского алфавита: А, В, С, D, Е, F. Примеры записи десятичных чисел от 0 до 16 и от 248 до 255 в двоичной, восьмеричной и шестнад­цатеричной системах счислений приведены в табл. 3.1. Десятич­ное число 255 является наибольшим представимым в двоичной системе счисления при условии использования всего восьми разрядов для записи чисел. Для представления чисел, больших 255, необходимо в двоичной системе счисления использовать большее число разрядов.

Чтобы отличить число, записанное в той или иной системе счисления, от числа, записанного в другой системе счисления, в конце записи обычно ставят соответствующие используемому основанию цифры или буквы (иногда в виде индексов, напри­мер 3810). Для десятичной системы счисления часто использу­ется буква D, для двоичной — В, для восьмеричной — Q, для шестнадцатеричной — Н. Например:

216 D = 11011000 В = 330 Q = D8 Н.

Как следует из табл. 3.1, наиболее громоздким из рассмотрен­ных представлений, в особенности для больших чисел, является двоичное представление, а наиболее компактным — шестнадца-теричное представление, не совсем удобное для восприятия. Чтобы воспользоваться числовыми результатами в шестнадца­теричной системе счисления, необходимо перевести их в более привычную десятичную форму. Способы перевода чисел из одной системы счисления в другую неоднократно описывались в литературе и здесь рассматриваться не будут.



Таблица 3.1

Представление чисел

Десятичное



Двоичное

Восьмеричное

Шестнадцате-ричное

0

00000000

000

00

1

00000001

001

01

2

00000010

002

02

3

00000011

003

03

4

00000100

004

04

5

00000101

005

05

6

00000110

006

06

7

00000111

007

07

8

00001000

010

08

9

00001001

011

09

10

00001010

012

ОА

11

00001011

013



12

00001100

014

ОС

13

00001101

015

OD

14

00001110

016

ОЕ

15

00001111

017

OF

16

00010000

020

10

248

11111000

370

F8

 
249

11111001

371

F9

 
250

11111010

372

FA

 
251

11111101

373

FB

 
252

11111100

374

FC

 
253

11111101

375

FD

 
254

11111110

376

FE

 
255

11111111

377

FF

 
Необходимое для выполнения программы на ЭВМ двоичное представление данных и команд для пользователя неудобно именно своей громоздкостью. Написание программы непосред­ственно в двоичных кодах утомительно и нередко приводит к ошибкам. Шестнадцатеричное представление компактно, но

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

Весьма распространенным способом представления данных и команд является их восьмеричное представление. Оно до­вольно компактно и легко переводимо в двоичную форму. Для этого достаточно запомнить двоичные коды трех первых двоичных разрядов (см. табл. 3.1). Перевод двоичного числа в восьмеричное производится следующим образом. Двоичный код разбивается справа налево на триады, каждая триада считается самостоятельным двоичным кодом трехразрядного чис­ла и заменяется соответствующей цифрой от 0 до 7. Перевод восьмеричного кода в двоичный производится аналогичным образом: каждая цифра от 0 до 7 заменяется соответствую­щим двоичным кодом.



Пусть, например, требуется записать восьмеричный код восьмиразрядного двоичного числа 10110101 В. Разбитый на триады двоичный код будет 10 НО 101 В. После замены каж­дой триады двоичным кодом получим 265 Q. Двоичное представ­ление восьмеричного числа 312Q получается также просто: 11 001 010 В или 11001010 В.

Представление двоичных чисел в табл. 3.1 в виде восьмираз­рядных кодов приведено не случайно. Наименьшей единицей информации, которая может быть представлена в ЭВМ, явля­ется двоичный разряд или бит. Бит может иметь два значения: О или 1, а соответствующий ему электрический сигнал — два уровня напряжения. Группа из восьми двоичных разрядов на­зывается байтом. Более крупными единицами информации являются килобит (1024 = 210 бит, или двоичных разрядов), килобайт (1024 = 210 байт) и мегабайт (1048576 =220 байт). Иногда выделяют группу из четырех двоичных разрядов, назы­ваемую ниблом. Этим понятием пользуются при рассмотрении процессов выполнения арифметических операций в двоично-десятичных кодах.

Остановимся теперь на определении понятия машинной команды как элемента записи машинной программы.

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

В качестве формального языка для описания данных и про­грамм их обработки на микро-ЭВМ используются не только машинный язык, но и специальные языки программирования, такие как, например, БЕЙСИК. Программа на таком языке, называемом иногда языком высокого уровня, не может непо­средственно восприниматься микропроцессором. В совершен­ных ЭВМ специальная программа, называемая интерпретатором или компилятором, преобразует программу на языке высоко­го уровня в эквивалентную ей программу на языке машины.



Программа, написанная на языке Ассемблер, переводится пользователем в машинные восьмеричные коды с помощью таблицы кодов (табл. 4.1 — 4,3) и вводится вместе с данными также в восьмеричных кодах в ПМ-ЭВМ с клавиатуры и разме­шается в оперативном запоминающем устройстве, в котором выделяется специальная область, где пользователь может раз­местить свою программу.

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

Программа для ПМ-ЭВМ представляет собой последователь­ность указанных кодов, из которых левый код — адрес ячей­ки памяти, а правый — команда или данные.

Предположим, что соответствующие программе и исходным данным найденные коды введены в ПМ-ЭВМ, На чем основаны процессы преобразования всей этой информации в машине?



ДРУГИЕ ВОЗМОЖНОСТИ ПМ-ЭВМ


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

Отечественной промышленностью выпускается широкая но­менклатура периферийных программируемых микросхем, со-гласуемых с МП типа КР580ВМ80А.

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

Количественный рост МП-системы ведет и к ее архитектур­ному усложнению. Возникает необходимость каким-либо обра­зом стандартизовать связи микро-ЭВМ. Известно много стан­дартов внутрисистемных шин МП-систем. Для МП серии КР580ИК80А наиболее известны шины MULTIBUS и 8=100, позволяющие объединять в систему периферийные, процессор­ные блоки и блоки памяти различных изготовителей.

Большая МП-система требует специального математического обеспечения (МО). Если при написании и отладке программ емкостью до 1 Кбайт можно с успехом обойтись программиро­ванием в кодах, то программы большего размера пишутся обыч­но на языках различных уровней, в том числе и на специализи­рованных языках высокого уровня.
Для перевода таких программ на машинный язык необходимы программы-интерпрета­торы, а для отладки — программы редактирования и отладки. Чтобы весь комплекс программ мог успешно функционировать, необходимо использовать какую-либо операционную систему (ОС). Все это доводит общую емкость МО до нескольких сотен килобайт и требует для хранения специальных накопителей. Поэтому не имеет смысла, как говорят, "с нуля" проектировать большую МП-систему. Гораздо разумнее использовать уже имею­щийся опыт, взяв в качестве образца готовую промышленную систему.

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

Рассмотрим коротко характеристики некоторых програм­мируемых микросхем, находящих широкое применение в МП-системах.

Микросхема программируемого последовательного интерфей­са типа КР580ВВ51А является универсальным синхронно-асин­хронным приемопередатчиком (УСАПП), предназначенным для осуществления связи в последовательном формате между МП-системой и внешним абонентом. Микросхема используется как периферийное устройство, программируемое центральным про­цессором МП-системы почти для любого стандартного протоко­ла последовательной передачи данных. Микросхема принимает данные от МП-no шине данных в параллельном формате и преоб­разует их в непрерывный поток последовательных данных для передачи абоненту. Микросхема может одновременно с этим принимать последовательные данные, преобразовывать их в параллельный формат и передавать микропроцессору.


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

Микросхема типа КР580ВИ53 представляет программируе­мый таймер/счетчик, предназначенный для работы в качестве периферийного устройства МП-системы. Микросхема состоит из трех независимых 16-битовых счетчиков с максимальной частотой счета 2 МГц. Каждый счетчик микросхемы может ра­ботать в одном из шести запрограммированных режимов. С по­мощью микросхемы таймера/счетчика решается одна из наибо­лее часто встречающихся в МП-системах задач — генерирование точных программно задаваемых временных задержек взамен организации холостых программных циклов. Пользователь подключает соответствующим образом микросхему, загружает один из счетчиков нужным числом, после чего в результате по­дачи команды счетчик отсчитывает заданную задержку и выра­батывает сигнал прерывания для МП-системы. Микросхема может выполнять функции не только генератора задержки, но и программируемого генератора заданной частоты, счетчика со­бытий, датчика реального времени и др.

Микросхема типа КР580ВВ55А представляет собой програм­мируемый периферийный интерфейс, предназначенный для прие­ма в МП-систему и выдачи из нее информации в параллельном коде, функции микросхемы в системе задаются программно, поэтому, как правило, не требуется подключать какие-либо до­полнительные логические схемы. Предназначенные для ввода и вывода внешней информации 24 ножки микросхемы могут быть индивидуально запрограммированы группами по 12 и исполь­зованы в трех различных режимах работы. В первом из них (Режим 0) в каждой группе из 12 ножек часть может быть запрограммирована на ввод, а часть — на вывод.


Во втором ре­жиме ( Режим 1) группа программируется так, что 8 ножек слу­жат для ввода или вывода, а 3 ножки из оставшихся 4 предназ­начены для сигналов квитирования (запрос — подтверждение) и прерывания. В третьем режиме (Режим 2) из 8 ножек орга­низуется 8-разрядная двунаправленная шина, а 5 ножек (с за-емом из другой группы) предназначены для сигналов квитиро­вания и прерывания.

Микросхема типа КР580ВТ57 представляет собой четырех-канальный программируемый контроллер прямого доступа к памяти (ПДП), предназначенный для организации высокоско­ростного обмена данными между периферийными устройствами и памятью МП-системы, построенной на базе микропроцессора КР580ВМ80А. Функция микросхемы заключена в основном в

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

ПРИЛОЖЕНИЯ

 

Система команд микропроцессора КР580ИК80А

ПРИЛОЖЕНИЕ1

Мнемокод команды

Описание команды

Длина команды байт

, Изменяемые флаги

Число тактов

INRr

Увеличение содержимого регистра г на еди-

1

Z,S,P,AC

5

 

ницу

 

 

 

INRM

Увеличение на единицу содержимого ячейки

1

Z,S,P,AC

10

 

памяти по адресу, указанному в регистрах Н

 

 

 

 

и L

 

 

 

DCRr

Уменьшение содержимого регистра г на еди-

1

Z,S,P, AC2

5

 

ницу

 

 

 

DCRM

Уменьшение на единицу содержимого ячейки

1

Z, S,P, AC2

10

 

памяти по адресу, указанному в регистрах Н

 

 

 

 

иЬ

 

 

 

MOVrl,r2

Пересылка данных из регистра г 2 в регистр rl

1

-

5

MOV M, г

Пересылка данных из регистра г в ячейку па-

1

-

7

 

мяти по адресу, указанному в регистрах Н и L

 

 

 

MOV г, М

Пересылка данных в регистр г из ячейки памя-

1

-

7

 

ти по адресу, указанному в регистрах Н и L

 

 

 

ADDr

Суммирование содержимого регистра г и со-

1

Z,S,P,C,AC

4

 

держимого аккумулятора

 

 

 

ADDM

Суммирование содержимого ячейки памяти

1

Z,S,P,C, AC

7

 

по адресу, указанному в регистрах Н и L,

 

 

 

 

с содержимым аккумулятора

 

 

 

ADCr

Сложение с учетом переноса содержимого ре-

1

Z,S,P, C, AC

4

 

гистра г и содержимого аккумулятора

 

 

 

ADCM

Сложение с учетом переноса содержимого

1

Z,S,P,C,AC

7

 

ячейки памяти по адресу, указанному в ре-

 

 

 




Продолжение прилож. 1

Мнемокод команды

Длина Описание команды команды, Изменяемые флаги байт

Число тактов

 

ги страх Н и L, с содержимым аккумулятора

 

SUB r

Вычитание содержимого регистра г из содер- 1 Z,S,P, С , АС

4

 

жимого аккумулятора

 

SUBM

Вычитание из содержимого аккумулятора 1 Z, S, Р, С , АС

7

 

содержимого ячейки памяти по адресу, ука-

 

 

занному в регистрах Н и L

 

SBBr

Вычитание с заемом содержимого регистра г 1 Z, S, Р, С , АС

4

 

из содержимого аккумулятора

 

SBBM

Вычитание с заемом из содержимого аккуму- 1 Z,S,P,C , AC

7

 

лятора содержимого ячейки памяти по адресу,

 

 

указанному в регистрах Н и L

 

ANA г

Поразрядное И над содержимым регистра г 1 Z , S, Р, С = 0, АС = 0

4

 

и аккумулятора

 

ANAM

Поразрядное И над содержимым аккумуля- 1 Z , S, Р, С = 0, АС = 0

7

 

тора и ячейки памяти по адресу, указанному

 

 

в регистрах Н и L

 

XRAr

Поразрядное ИСКЛЮЧАЮЩЕЕ ИЛИ над со- 1 Z, S, Р, С = 0, АС = 0

4

 

держимым регистра г и аккумулятора

 

XRAM

Поразрядное ИСКЛЮЧАЮЩЕЕ ИЛИ над со- 1 Z, S, Р, С = 0, АС = 0

7

 

держимым аккумулятора и ячейки памяти

 

 

по адресу, указанному в регистрах Н и L

 

ORAr

Поразрядное ИЛИ над содержимым регист- 1 Z,S,P,C = 0, AC = 0

4

 

pa r и аккумулятора

 

ORAM

Поразрядное ИЛИ над содержимым аккуму- 1 Z, S, Р, С = 0, АС = 0

7

 

лятора и ячейки памяти по адресу, указанно-

 

 

му в регистрах Н и L

 

CMP г

Сравнение содержимого регистра г и аккуму- 1 (Z, S, P, С, АС)3

4

 

лятора

 

CMPM

Сравнение содержимого аккумулятора и ячей- 1 (Z, S, P, С, АС)3

7

 

ки памяти по адресу, указанному в регист-

 

 

рах Н и L

 

INXrp

Увеличение на единицу содержимого пары ре- 1 -

5

 

гистров гр (В, D, Н, SP)

 

DCXrp

Уменьшение на единицу содержимого пары 1 -

5

 

регистров гр (В, D, H, SP)

 

DADrp

Сложение содержимого пары регистров тр 1 С

10

 

(В, D, H, SP) с содержимым пары регистров

 

 

Н и L и хранение результата в Н и L

 

POPrp

Выдача данных из стека в пару регистров гр 1 (Z, S, P, С, АС)6

10

 

(В, D, H) или в аккумулятор и регистр при-

 

 

знаков PSW

 

PUSH rp

Занесение в стек содержимого пары регист- 1 -

11

 

ров гр (В, D, H) или содержимого аккумуля-

 

 

тора и регистра признаков PSW

 

STAXrp

Запись содержимого аккумулятора в ячейку 1 -

7

 

памяти, косвенно адресуемую парой регист-

 

 

ров гр (В, D)

 

LDAX rp

Запись в аккумулятор содержимого ячейки 1

7

 

памяти, косвенно адресуемой парой регист-

 

 

ров гр (В, D)

 

RNZ

Возврат из подпрограммы при отсутствии 1 -

5/11

 

нуля (флаг нуля в состоянии 0)

 

RZ

Возврат из подпрограммы при наличии нуля 1 -

5/11

 

(флаг нуля в состоянии 1)

 

RNC

Возврат из подпрограммы при отсутствии 1 -

5/11

 

переноса (флаг переноса в состоянии 0)

 

RC

Возврат из подпрограммы при наличии пе- 1 -

5/11

 

реноса (флаг переноса в состоянии 1)

 




Продолжение прилож. 1

Мнемокод команды

Описание команды

Длина команды, Изменяемые флаги байт

Число тактов

 
RPO

Возврат из подпрограммы при отсутствии

1

5/11

 
 

четности (флаг четности в состоянии 0)

 

 

 
RPE

Возврат из подпрограммы при наличии чет-

1

 

 
 

ности (флаг четности в состоянии 1)

 

 

 
RP

Возврат из подпрограммы при положительном

1

5/11

 
 

результате (флаг знака в состоянии 0)

 

 

 
RM

Возврат из подпрограммы при отрицательном

1

5/11

 
 

результате (флаг знака в состоянии 1)

 

 

 
RET

Безусловный возврат из подпрограммы

1 С4

5/11

 
RLC

Циклический сдвиг содержимого аккумуля-

1 С4

 

 
 

тора влево

1 С4

 

 
RRC

Циклический сдвиг содержимого аккумуля-

1 С

 

 
 

тора вправо

 

 

 
RAL

Циклический сдвиг содержимого аккумуля-

1 С4

 

 
 

тора влево, включая флаг переноса

1 С4

 

 
RAR

Циклический сдвиг содержимого аккумуля-

1 С4

 

 
 

тора вправо, включая флаг переноса

 

 

 
XCHG

Обмен данными между парами регистров Н,

1

4

 
 

L HD.E

 

 

 
XTHL

Обмен данными между двумя верхними ячей-

1

18

 
 

ками стека и парой регистров Н, L (сначала

 

 

 
 

самая верхняя обменивается с L , затем сле-

 

 

 
 

дующая с Н)

 

 

 
SPHL

Передача в указатель стека содержимого ре-

1

 

 
 

гистров Н и L

 

 

 
PCHL

Передача в счетчик команд содержимого пары 1 -

5

 

регистров Н и L с последующим выполнением

 

 

программы с адреса, равного новому содер-

 

 

жимому счетчика команд (по существу коман-

 

 

да перехода)

 

HLT

Останов программы 1 -

7

NOP

Отсутствие операции 1 -

4

DI

Запрет на прерывание программы 1 -

4

EI

Разрешение прервать программу 1 -

4

DAA

Перевод двоичного представления содержимо- 1 —  

4

 

го аккумулятора в двоично-десятичный код

 

СМА

Поразрядное инвертирование содержимого 1 -

4

 

аккумулятора

 

STC

Установка флага переноса С в единицу 1 С = 1

4

CMC

Инвертирование значения флага переноса 1 С=С

4

RSTA

Повторный запуск программы с адреса 1 -

11

 

8А10 = (ОА08)

 

ADI<B2>

Сложение содержимого байта В2 с содержи- 2 Z,S,P, С, АС

7

 

мым аккумулятора

 

ACI <В2>

Сложение с учетом переноса содержимого 2 Z,S, P, С, АС

7

 

байта В2 с содержимым аккумулятора

 

SUI <В2>

Вычитание содержимого байта В2 из содер- 2 Z, S, Р, С1 , АС2

7

 

жимого аккумулятора

 

SBI <В2>

Вычитание с заемом содержимого байта В2 2 Z, S, Р, С1 , АС2

7

ANI <В2>

из содержимого аккумулятора Поразрядное И над содержимым байта В2 и 2 Z , S, Р, С = 0, АС = 0

7

 

содержимым аккумулятора

 

XRI <B2>

Поразрядное ИСКЛЮЧАЮЩЕЕ ИЛИ над со- 2 Z, S, Р, С = 0, АС =0

7

 

держимым байта В2 и содержимым аккуму-

 

 

лятора

 




Продолжение прилож. 1

Мнемокод команды

Описание команды

Длина команды, байт

Изменяемые флаги

Число тактов

ORI<B2>

Поразрядное ИЛИ над содержимым байта В2

2

Z,S,P, C = 0, AС=0

7

 

и содержимым аккумулятора

 

 

 

CPI <В2>

Сравнение содержимого байта В2 с содержи-

2

(Z, S, Р,С, АС)3

7

 

мым аккумулятора

 

 

 

IN <B2>

Ввод данных в аккумулятор из порта ввода,

2

-

10

 

определяемого адресом в байте В2

 

 

 

OUT<B2>

Вывод данных из аккумулятора в порт вы-

2

-

10

 

вода, определяемый адресом в байте В2

 

 

 

MVI r <B2>

Занесение содержимого байта В2 в регистр г

2

-

7

MVI M <B2>

Запись содержимого байта В2 в ячейку памя-

2

-

7

JNZ<B2><B3>

ти по адресу, указанному в регистрах Н и L

Переход в программе к выполнению команды по адресу в В2, ВЗ при отсутствии нуля (флаг нуля в состоянии 0)

3

-

10

JZ<B2><B3>

Переход в программе к выполнению команды по адресу в В2, ВЗ при наличии нуля (флаг ну­ля в состоянии 1)

3

-

10

JNC<B2><B3> JC<B2><B3>

Переход в программе к выполнению команды по адресу в В2, ВЗ при отсутствии переноса (флаг переноса в состоянии 0) Переход в программе к выполнению команды по адресу в В2, ВЗ при наличии переноса (флаг переноса в состоянии 1)

3 3

-

10 10

JPO<B2><B3>

Переход в программе к выполнению команды по адресу в В2, ВЗ при наличии нечетности (флаг четности в состоянии 0)

3

-

10

JPE<B2><B3>

Переход в программе к выполнению команды

3



10

 

по адресу в В2, ВЗ при наличии четности (флаг четности в состоянии 1)

 

 

 

JP<B2><B3>

Переход в программе к выполнению команды по адресу в В2, ВЗ при положительном резуль­тате (флаг знака в состоянии 0)

3

 

10

JM<B2><B3>

Переход в программе к выполнению команды по адресу в В2, ВЗ при отрицательном резуль­тате (флаг знака в состоянии 1)

3

 

10

JMP<B2><B3>

Безусловный переход к команде по адресу в В2, ВЗ

3



10

.       с

CNZ<B2><B3>

Вызов подпрограммы при отсутствии нуля (флаг нуля в состоянии 0)

3

 

11/175

с

CZ<B2><B3>

Вызов подпрограммы при наличии нуля (флаг нуля в состоянии 1)

• 3

~

11/175

с

CNC<B2><B3>

Вызов подпрограммы при отсутствии перенос, (флаг переноса в состоянии 0)

i3



И/175

CC<B2><B3>

Вызов подпрограммы при наличии переноса (флаг переноса в состоянии 1)

3



И/175

CPO<B2><B3>

Вызов подпрограммы при наличии нечетности (флаг четности в состоянии 0)

3



11/175

CPE<B2><B3>

Вызов подпрограммы при наличии четности (флаг четности в состоянии 1)

3



И/175

CP<B2><B3>

Вызов подпрограммы при наличии положи­тельного результата (флаг знака в состоя­нии 0)

3

 

И/175

CM<B2><B3>

Вызов подпрограммы при наличии отрица­тельного результата (флаг знака в состоя­нии 1)

3

 

И/175




Продолжение прилож. 1

Мнемокод команды

Длина Описание команды команды, Изменяемые флаги байт

Число тактов

CALL<B2><B3>

Вызов подпрограммы из памяти по адресу, 3 -

17

 

указанному в байтах В2, ВЗ

 

LXIrp<B2><B3>

Занесение содержимого двух байтов В2, ВЗ 3 -

10

 

в пару регистров гр (В, D, Н, SP)

 

STA<B2><B3>

Запись содержимого аккумулятора в ячейку 3 -

13

 

памяти по адресу в В2, ВЗ

 

LDA<B2><B3>

Запись в аккумулятор содержимого ячейки 3 —  

13

 

памяти по адресу в В2, ВЗ

 

SHLD<B2><B3>

Занесение содержимого регистров Н и L в па- 3 -

16

 

мять: содержимое L пересылается в ячейку

 

 

по адресу в В 2, ВЗ; содержимое регистра Н -

 

 

в ячейку, адрес которой на единицу больше

 

LHLD<B2><B3>

Загрузка в регистры Н и L содержимого ячеек 3 -

16

 

памяти: в L пересылаются данные из ячейки па-

 

 

мяти по адресу в В2, ВЗ; в Н — из ячейки, ад-

 

 

рес которой на единицу больше

 

Примечания [14]:

1.  Флаг устанавливается при наличии заема в старший разряд, в противном случае сбрасывается.

2.  Флаг устанавливается при наличии заема из старших четырех разрядов в младшие, в противном случае сбрасывается.

3.  Флаг нуля Z устанавливается, если содержимое регистра или байта данных совпадает с содержимым аккумулятора; флаги знака и переноса S и С устанавливаются, если содержимое регистра или байта данных больше содержимого аккуму­лятора; флаг вспомогательного переноса АС устанавливается, если содержимое младших четырех разрядов регистра или байта данных больше содержимого соответствующих разрядов аккумулятора; флаг четности Р устанавливается, если байт разности между содержимым аккумулятора и содержимым регистра или байта данных содержит четное число единиц.

4. Состояние флага равно значению выдвигаемого из аккумулятора двоичного разряда.



5.  Большее значение ( за косой чертой) указывает на число тактов при выполнении условий, меньшее — при невыпол­нении.

6.  По команде POP PSW флаги устанавливаются в соответствии со значением разрядов слова, хранящегося в стеке; при выдаче данных из стека в другие регистры флаги не меняются.

Приложение 2. СХЕМА ПМ-ЭВМ



Приложение 3. Таблица элементов, используемых в схеме ПМ-ЭВМ

Обозначение микросхемы

Тип микросхемы

Выводы микросхем

Питание

+ 5 В общее

D1

КР580ИК80А

Данные в тексте

D2

КР580ГФ24

Данные в тексте

D3-D7, D31

К155ЛН1

14 7

D8

К155ЛА1

14 7

D9, DIG, D23

К589АП16

16 8

Dll, D24

К155ИД4

14 7

D12, D13

КР541РУ2

18 9

D14, D15

КР556РТ4

16 8

D16-D22, D29

К155ТМ7

5 12

D25

К155ЛА2

14 7

D26

К155ЛЕ1

14 7

D27, D28

К155ЛАЗ

14 7

D30

К155ТМ2

14 7

Примечания:

KB - 9 МГц

С1 - 0,15 мкФ

R1-R6 - 1 кОм

R7 — R30 — в зависимости от типа VI — V24

R31-R34- 5,1 кОм

V1-V24 - АЛ102А, АЛ102Г, АЛ112А-М



ФУНКЦИОНАЛЬНАЯ СХЕМА МИКРОПРОЦЕССОРА


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

Как уже говорилось, под регистром подразумевается спе­циальное запоминающее устройство, состоящее из элементов (триггеров) с двумя устойчивыми состояниями. Число элемен­тов (восемь) соответствует одному байту. Большинство ре­гистров микропроцессора 8-разрядные и лишь некоторые 16-разрядные. Все регистры разбиты на группы и отличаются различным функциональным назначением.

Основными блоками МП (рис. 4.4) являются: блок регист­ров общего назначения со схемой выборки регистров, регистр команд с дешифратором команд и формирователем машинных циклов, арифметическо-логическое устройство (АЛУ) с ре­гистром А (аккумулятором), выполняющее арифметические и логические операции, регистр временного хранения данных W и Z (РВХД), флаговый регистр, устройство управления и син­хронизации, буферы шины данных (БШД) и адреса (БША), буфер аккумулятора (БА), схема приращения и уменьшения (СПИУ).

Рис. 4.4. Схема ЦПЭ на базе микропроцессора КР580ИК80А:

СГ - сигналы генератора тактовых импульсов; СС — сигнапы синхронизации

Доступными программисту являются следующие регистры: шесть 8-разрядных регистров, адресуемых по одному или пара­ми (регистры В, С, D, E, H, L); один 8-разрядный регистр А, называемый аккумулятором; один 16-разрядный регистр, называемый указателем стека; один 16-разрядный регистр, на­зываемый счетчиком команд, или программным счетчиком.

В некоторых специальных случаях могут быть доступными данные следующих двух регистров: регистра команд (8-разряд­ного) ; флагового регистра (5-разрядного).

Программно недоступными пользователю являются регист­ры W и Z. Они используются для временного хранения данных при выполнении команд микропроцессором.


Регистры общего назначения. Эти регистры раз­мерностью в один байт обозначаются В, С, D, E, H, L. Они ис­пользуются для хранения данных и промежуточных результатов вычислений, выполняемых с помощью арифметическо-логиче-ского устройства. При обработке 16-разрядных слов возможно обращение к парам регистров (В, С); (D, E); (H, L).

Аккумулятор — специальный однобайтовый регистр, обозначаемый А. При выполнении арифметических и логиче­ских операций служит источником одного из операндов и ме­стом запоминания результата выполнения операции. Аккумуля­тор является основным операционным звеном арифметическо-логического устройства. Он служит также местом хранения дан­ных и результатов операций, выполняемых в АЛУ.

Регистр команд — однобайтовый регистр, в котором хранится код выполняемой команды. Этот регистр непосредст­венно пользователю недоступен. Это означает, что не существует команды, которая бы явным образом могла изменить его со­держимое. После выполнения очередной команды в регистр команд автоматически записывается код следующей команды из ячейки оперативной памяти, адрес которой содержится в счет­чике команд.

Счетчик команд — двухбайтовый (16-разрядный) ре­гистр, обозначаемый PC, или программный счетчик. Этот регистр хранит адрес следующей команды, которая должна быть выполнена вслед за предыдущей. Счетчик команд автоматически получает приращение хранимого в нем адреса в зависимости от того, какую по длительности команду (в один, два или три бай­та) микропроцессор считывает из памяти, указывая всегда на 1-й байт следующей команды. На содержимое этого регистра пользователь может повлиять только с помощью команд, изме­няющих последовательное выполнение программы (например, команд безусловного перехода), а также с помощью некоторых специальных команд.

Указатель стека-двухбайтовый (16-разрядный) ре­гистр, обозначаемый SP. Этот регистр хранит адрес очередной ячейки стека. Стеком называется особым образом организован­ный участок оперативной памяти, выделяемый программистом для временного хранения содержимого внутренних регистров МП со специальным режимом доступа.


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

Флаговый регистр- регистр, содержащий 5 двоич­ных разрядов, называемых флагами, по числу хранимых в нем специальных признаков результатов некоторых операций. Иногда он называется регистром признаков или флаговым ре­гистром битов условий. Значение флага указывает на резуль­тат выполнения какой-либо операции. Микропроцессор КР580ИК80А содержит флаговый регистр, состоящий из сле­дующих флагов: флага нуля (Z - zero), флага переноса (С -carry), флага знака (S - sign), флага четности (Р -parity), флага дополнительного переноса (АС - auxiliary carry). Флаги всегда устанавливаются или сбрасываются автоматически после вы­полнения очередной команды, влияющей на флаги, в зависи­мости от результата операции. При этом флаг считается уста­новленным, если флаговый разряд принимает значение 1, и сброшенным, если значение разряда 0. Состояния флагов использу­ются в командах условного перехода. Результаты выполнения арифметических и логических операций над содержимым акку­мулятора, регистров общего назначения или содержимым ячеек памяти оказывают влияние на флаги следующим образом.

Флаг нуля устанавливается в состояние 1, если после выпол­нения какой-либо команды получен нулевой результат, и сбра­сывается в 0 в случае ненулевого результата.



Флаг переноса устанавливается в 1, если в результате опера­ций сложения и сдвига появляется единица переноса из старшего разряда байта данных, а также если появляется заем из стар­шего разряда после выполнения операций вычитания или сравне­ния, в противном случае флаг сбрасывается в 0.

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

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

Флаг дополнительного переноса устанавливается в 1, если в результате выполнения команды появляется сигнал переноса из третьего разряда в четвертый в байте данных результата. Если такого переноса нет, флаг дополнительного переноса сбрасывается в 0. Сигнал этого флага используется во многих схемах вычислений, однако он особенно необходим при сложе­нии чисел в двоично-десятичной форме.

Перейдем теперь к рассмотрению того, как микропроцессор выполняет команды.



ГРУППА АРИФМЕТИЧЕСКИХ КОМАНД


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

Команда ADD r. Эта команда выполняет сложение содержимо­го регистра-источника S с содержимым аккумулятора А. Резуль­тат сложения помещается в аккумулятор. Чтобы получить кон­кретную команду, необходимо в формате команды вместо сим­волов S проставить код регистра-источника из табл. 4.4. Напри­мер, команда 10 000 001 производит сложение содержимого регистра С с содержимым аккумулятора А. Двоичный код этой команды 10 000 001 В; в восьмеричной системе это число пред­ставляется кодом 201Q. Это представление является восьмерич­ным кодом команды ADD С, выполняющей указанное выше сложение (см. список команд в приложении 1). Размещение команды ADD г в байте приведено на рис. 4.9,д.

Команда SUB r. Команда выполняет вычитание содержимого регистра-источника S из содержимого аккумулятора. Результат заносится в аккумулятор (рис. 4.9,6). Например, команда 10 010 ОН В выполняет вычитание содержимого регистра Е из содержимого регистра А и помещает результат в аккумулятор. Код этой команды SUB Е — 223 Q.



ГРУППА КОМАНД ПЕРЕХОДОВ


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

Команда JMP <В2> <ВЗ> — трехбайтовая команда передает управление команде по адресу, содержащемуся в третьем и втором байтах текущей команды. Это осуществляется путем записи содержимого третьего и второго байтов команды в счетчик команд (рис. 4.11,а). Как уже отмечалось в § 4.3, счетчик команд представляет собой 16-разрядный регистр, содержащий адрес, по которому можно обратиться для считывания очеред­ного байта команды. Восьмеричный код этой команды - 303 Q.

Команды CALL и RET — команды безусловного перехода. Первая из них передает управление подпрограмме, прекращая выполнение основной программы; вторая передает управле­ние главной программе, возвращаясь к ее выполнению (рис. 4.11,£, в). Первая команда — трехбайтовая. Восемь стар­ших разрядов адреса следующей команды пересылаются в ячей­ку памяти, адрес которой на единицу меньше содержимого ука­зателя стека. Восемь младших разрядов адреса следующей команды пересылаются в ячейку памяти, адрес которой на две единицы меньше содержимого указателя стека. Содержимое указателя стека уменьшается на две единицы. Управление пере­дается команде, адрес которой размещается в третьем и втором байтах команды CALL

Рис. 4.11. Примеры размещения некоторых команд переходов в байтах

Команда RET — однобайтовая. Ее восьмеричный код — 311Q (код предыдущей команды CALL — 315Q). В процессе выполне­ния этой команды содержимое указателя стека получает прира­щение на две единицы.
Содержимое ячейки памяти по адресу, хранящемуся в указателе стека, пересылается в счетчик команд на место младших восьми разрядов. Содержимое ячейки памяти по адресу, на единицу большему, чем содержимое указателя стека, пересылается в счетчик команд на место старших восьми разрядов. Таким образом, возвращение к главной программе происходит всегда путем обращения к байту команды, непо­средственно следующему за байтом, используемым командой CALL

 

4.6.5. ГРУППА КОМАНД УПРАВЛЕНИЯ И РАБОТЫ СО СТЕКОМ

Команды этой группы предназна­чены для управления работой микропроцессора, устройствами ввода/вывода и стеком. Команды этой группы не оказывают влияния на флаги. Рассмотрим в качестве примера работу неко­торых команд из этой группы.

Команда XTHL — однобайтовая команда с восьмеричным номером 343Q. Является примером наиболее длинных по вре­мени исполнения команд - занимает 18 машинных тактов.

В процессе выполнения команды содержимое регистра L меня­ется на содержимое ячейки памяти по адресу, содержащемуся в указателе стека, и наоборот. Содержимое регистра Н меня­ется на содержимое ячейки памяти по адресу, на единицу боль­шему, чем содержимое указателя стека, и наоборот (рис. 4.12,я). На это уходит пять машинных циклов.

Команды IN <B2>, OUT <B2> . Эти команды предназначены для ввода данных от входного порта в аккумулятор и вывода данных из аккумулятора в выходной порт соответственно. Первая команда имеет восьмеричный код 333 Q, вторая — 323 Q. Обе команды — двухбайтовые. Второй байт обеих команд отве­ден под адрес соответствующего входного и выходного портов. В результате выполнения первой команды данные от входного порта по двунаправленной шине данных передаются в аккумуля­тор. В результате выполнения второй команды данные выводят­ся по той же шине данных из аккумулятора в выходной порт (рис. 4.12,6, в).



Рис. 4.12. Примеры размещения некоторых команд управления в байтах

На этом закончим рассмотрение примеров размещения в бай­тах команд описанных выше групп и перейдем к вопросу о том, как составляется программа решения на ПМ-ЭВМ задачи с ис­пользованием приведенного в приложении 1 списка команд.


ГРУППА ЛОГИЧЕСКИХ КОМАНД


Команды этой группы предна­значены для выполнения логических, или булевых, операций над данными, .содержащимися в регистрах, ячейках памяти, а также над флагами условий. К этим операциям относятся операции: логического сложения (ИЛИ), логического умноже­ния (И), суммирования по модулю 2, сравнения, сдвига, до­полнения до 1 и до 2. Как и команды предыдущей группы, все логические команды оказывают влияние на флаги.

Команда ANA г выполняет параллельно поразрядное логиче­ское И над содержимым регистра-источника и аккумулятора. Результат операции заносится в аккумулятор (рис. 4.10,а). Например, команда 10 100 100 В выполняет операцию логиче­ского умножения поразрядно над содержимым регистра Н и А и заносит результат в аккумулятор. Двоичный код 10 100 100 В соответствует восьмеричному коду 244Q коман­ды ANA H.

Рис. 4.10. Примеры размещения некоторых логических команд в байтах

Команда ANI < В2 > является двухбайтовой и также выполняет поразрядную операцию логического И, но над содержимым вто­рого байта команды и аккумулятора. Команда имеет восьмерич­ный код-3460 (рис. 4.10,6). Результат операции заносится в аккумулятор.

Команда ORAr аналогична команде ANA r, но в отличие от нее выполняет операцию поразрядного логического ИЛИ. Результат операции заносится в аккумулятор (рис. 4.10,в).

 



И ОБЛАСТИ ИХ ПРИМЕНЕНИЯ


Понятие микро-ЭВМ отнюдь не означает, что пользователь имеет дело с упрощенным вариантом обычной ЭВМ, обладающим весьма ограниченными возможно­стями В истории создания вычислительных машин десятилетие с 70-х по 80-е годы сыграло важную роль. Благодаря успехам микроэлектронной технологии появилась возможность конст­руировать вычислительные машины небольших габаритов, с ма­лым потреблением электроэнергии и в достаточной мере "про­изводительные". Вычислительные возможности современных микро-ЭВМ не уступают возможностям средних ЭВМ начала 70-х годов. Если понятие ЭВМ неразрывно связано с понятием вычислительного центра, крупного предприятия или сложной технической системы, то микро-ЭВМ - это массовое изделие, доступное не только небольшим производственным коллекти­вам но и отдельным лицам вследствие невысокой стоимости, малой материалоемкости, низкого энергопотребления, высокой надежности. Микро-ЭВМ может быть использована для управле­ния производством, а также отдельной, в ряде случаев сложной технической системы, как элемент оборудования рабочего места конструктора-исследователя или научного работника, в быту и во многих других сферах.

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

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


Кроме МП, предназначенных для обработки дискретной ин­формации, существуют аналоговые микропроцессоры (АМП), предназначенные для обработки аналоговой информации. В их структуру включены аналого-цифровые (аналого-дискретные) и цифро-аналоговые (дискретно-аналоговые) преобразователи, т. е. устройства, преобразующие аналоговый сигнал (например, непрерывно меняющееся входное напряжение) в цифровой (набор напряжений двух фиксированных уровней, представляю­щих двоичный код) и обратно. Обработка аналоговой информа­ции, преобразованной в дискретную, производится в АМП, как и в обычном микропроцессоре. Кроме однокристальных микропроцессоров существуют однокристальные микро-ЭВМ (ОМ-ЭВМ), представляющие собой микросхему, объединяю­щую в своем составе все основные устройства, необходимые для ее функционирования.

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

Одноплатная микро-ЭВМ, ОМ-ЭВМ и "голая микро-ЭВМ" могут быть использованы в составе управляющих систем или измерительных комплексов. Примерами ОМ-ЭВМ являются однокристальные восьмиразрядные микро-ЭВМ серии К 1816, однокристальные четырехразрядные микро-ЭВМ серий К 1820 и К 1814. К одноплатным машинам относится, например, мик­ро-ЭВМ "Истра", а к многоплатным — микро-ЭВМ "Электрони­ка 60", ЕС-1840, "Квант" и др.



По способу реализации системы команд микро-ЭВМ раз­деляются на два типа. В микро-ЭВМ первого типа система команд является постоянной (фиксированной), а в микро-ЭВМ второго типа - изменяемой (программируемой на уровне мик­рокоманд). Более простыми, дешевыми и распространенными являются машины первого типа.

К наиболее распространенным микро-ЭВМ, выпускаемым оте­чественной промышленностью, относятся персональные (ПЭВМ) и профессиональные персональные (ППЭВМ) машины семей­ства "Электроника", а также машины: ЕС 1840, "Искра 1030", "Нейрон И9.66", "Агат", "Корвет", СМ-1810 и др.

Семейство микро-ЭВМ "Электроника" - это ряд универ­сальных программно-совместимых машин различной произво­дительности. Наиболее производительные машины этого ряда сравнимы по параметрам с развитыми мини-ЭВМ. Семейство микро-ЭВМ "Электроника" - это ряд машин, ориентиро­ванных на использование в управлении технологическими про­цессами, для сбора и обработки данных, для обработки сообще­ний и управляющей информации в системах связи и контрольно-измерительных системах. Отдельные модели ряда могут быть встроены в соответствующие подсистемы управления и кон­троля Модели "Электроника" - это микро-ЭВМ универсально­го применения, которые с успехом могут быть использованы в системах автоматизированного управления. Одним из важней­ших достоинств этой серии является программная совмести­мость с отечественными мини-ЭВМ СМ-3, СМ-4, а также с зару­бежными мини-машинами семейства PDP-11, что позволяет ис­пользовать разработанное ранее программное обеспечение. Машины "Электроника 85" и "Электроника БК-0010" относят­ся к классу персональных компьютеров.

Предназначенная в основном для тех же целей микро-ЭВМ СМ-1810 является машиной, программно-совместимой с мик­ро-ЭВМ, построенными на базе микропроцессора 8080 фирмы Intel.

Кроме перечисленных микро-ЭВМ отечественной промыш­ленностью выпускается большой ассортимент диалоговых вы­числительных комплексов, например ДВК-1 - ДВК-3, с высо­кой производительностью, что позволяет использовать программное обеспечение этой машины, а также программное обеспечение мини-ЭВМ "Электроника 100/25".


Операцион­ ная система вычислительного комплекса ДВК допускает использование языков БЕЙСИК, ФОРТРАН, ПАСКАЛЬ, КО­БОЛ, ПЛ/1, что предоставляет большие возможности для программирования.

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

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

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

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


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



И ОБРАБОТКА ДАННЫХ


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

В качестве примера системы сбора и обработки данных рассмотрим конструирование на базе ПМ-ЭВМ счетчика слу­чайных событий. Введем в ПМ-ЭВМ программу

014 000 006                                                     MVI В, OOO.Q

014001 000

014002016                                                     MVIC, OOOQ

014 003 000

014 004 026                                                     MVI D, OOOQ

014 005 000

014006315                                   Ml:            CALL SKL

014 007 177

014 010000

014 Oil 170                                                     MOV А, В

014012074                                                     INR A

014 013 047                                                     DAA

014014323                                                     OUT, OOOQ

014 015 000

014 016 107                                                     MOV В, А

014017171                                                     MOV А, С

014020316                                                     ACI, 0000

014021 000

014 022 047                                                     DAA

014023323                                                     OUT. 0010

014024  001

014025  117                                                     MOVC, A

014026  172                                                     MOV A, D

014027316                                                     ACI, OOOQ

014030000

014031 047                                                     DAA

014032323                                                     OUT, 002Q

014 033 002

014034127                                                     MOVD. A

014035303                                                     JMP, Ml

014 036 006

014037014

После ввода программы нажмем кнопки СБРОС и П. В пор­тах 002, 001, 000 индицируются соответственно 006Q - код первой команды программы и 014Q OOOQ — ее адрес в памяти. Теперь будем нажимать любую кнопку клавиатуры (кроме кнопки СБРОС) - в портах 002, 001, 000 индицируется коли­чество нажатий кнопки, выраженное в двоично-десятичном коде, начиная с 000 001D и кончая 999 999D. Для обнуления счетчика достаточно нажать кнопки СБРОС и П. Таким образом, чисто программным путем нами реализована простейшая си­стема сбора и обработки информации, регистрирующая нажа­тия кнопок, подсчитывающая эти нажатия и выдающая на инди­кацию в двоично-десятичной форме число, равное количеству нажатий.

 

 



ИНСТРУКЦИЯ ПО РАБОТЕ НА МИКРО-ЭВМ


1. После включения микро-ЭВМ на индикаторах портов 002Q и 001Q высветится адрес младшей ячейки ОЗУ 00001100В и 00000000 В соответственно, а на индикаторах порта OOOQ высветится содержимое этой ячейки.

2.   Для того чтобы посмотреть содержимое произвольной ячейки ОЗУ, необходимо:

а)   набрать с помощью кнопок 0 — 7 на индикаторах порта OOOQ старший байт адреса этой ячейки и нажатием на кнопку СБ переслать его на индикаторы порта 002Q;

б)   набрать с помощью кнопок 0 — 1 на индикаторах порта OOOQ младший байт адреса этой ячейки и нажатием на кнопку МБ переслать его на индикаторы порта 001Q. После этого на ин­дикаторах порта OOOQ высветится содержимое необходимой ячейки.

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

а)  выполнить п. 2 Инструкции;

б)   набрать с помощью кнопок 0 — 7 необходимый код на индикаторах порта OOOQ. Этот код также попадет в регистр С;

в)   нажать кнопку И, что вызовет запись кода в ячейку па­мяти и одновременно индикацию адреса и содержимого сле­дующей ячейки.

4. Для того чтобы запустить программу, нужно:

а)  записать ее в память (см. пп. 1, 2, 3 Инструкции) ;

б)    набрать с помощью кнопок 0 — 7 старший байт адреса команды, с которой должно начаться выполнение программы на индикаторах порта OOOQ, и нажатием на кнопку СБ пере­слать его на индикаторы порта 002Q;

в)   набрать с помощью кнопок 0 — 7 младший байт адреса команды, с которой должно начаться выполнение программы на индикаторах порта OOOQ, и нажатием на кнопку МБ пере­слать его на индикаторы порта 001Q;

г)  запустить программу нажатием на кнопку 77.

5.  Для того чтобы прервать выполнение программы, необхо­димо нажать на кнопку СБРОС.



ЭТАПЫ СБОРКИ И ПРОВЕРКИ УЗЛОВ


Читатель ознакомился с прин­ципами работы микропроцессорной системы на базе МП типа КР580ИК80А, системой команд микропроцессора и схемой ПМ-ЭВМ, построенной на базе данного микропроцессора. Те­перь ему предстоит собрать микро-ЭВМ и, используя простей­шие средства отладки, довести ее до рабочего состояния.

Для сборки необходима плата, на которой будут распола­гаться микросхемы и другие элементы ПМ-ЭВМ. Плата изго­товляется из стеклотекстолита или гетинакса толщиной 1,5 — 2,0 мм размером примерно 210x240 мм. В зависимости от имеющихся возможностей монтаж платы может быть выпол­нен по-разному.

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

Выводы деталей в соответствии с принципиальной схемой соединяются проводами путем пайки припоем ПОС-60 с жидким канифольным флюсом маломощным низковольтным паяльни­ком, корпус которого подсоединен к заземлению через рези­стор сопротивлением несколько сотен килоом. Для монтажа можно использовать, например, провод МГТФ-0,05, зачищен­ный с концов на 5 мм с помощью кусачек, в которых сделаны специальные выемки глубиной около 0,5 мм.

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


От качества пайки существенным образом зависит надеж­ность работы будущей ПМ-ЭВМ. Использование специально разработанной печатной платы облегчает последующие монтаж, отладку и повышает надежность работы устройства. Для ПМ-ЭВМ может быть использована как односторонняя, так и двухсторонняя плата. Если плата односторонняя, придется часть монтажа выполнить навесными проводниками. В двух­сторонней плате, если сквозные отверстия, предназначенные для соединения печатных проводников с разных сторон платы, не металлизированы, в них необходимо вставить кусочки про­вода и пропаять с обеих сторон. Если нужно произвести изме­нения в плате с печатным монтажом, лишние соединения ликви­дируются, для чего дважды разрезается печатный проводник острым ножом на расстоянии 1-2 мм и середина удаляется. Новые соединения можно сделать навесными проводниками. Монтаж каждого из блоков: микропроцессорного, памяти и устройств ввода/вывода - можно выполнить на отдельных платах, что в какой-то мере облегчает отладку. В конструкции, выполненной авторами, ПМ-ЭВМ размещена на плате с двухсто­ронним печатным монтажом. На торцевой стороне платы име­ются два разъема. Через один разъем подключаются клавиатура и источники питания, а через другой выведены внутренние шины МП системы, что позволяет подключать различные расши­ряющие блоки.

Отладку ПМ-ЭВМ можно производить поэтапно по мере сбор­ки В первую очередь необходимо собрать блок процессора (микросхемы D1-D7, D9, D10, D27, D28, D30, D31), причем для микросхемы D1 (микропроцессор) крайне желательно поставить панельку. Проверьте правильность монтажа, выньте микропроцессор из панельки и подайте питание. Проверьте тестером наличие питающих напряжений на выводах микросхем. При наличии осциллографа проверьте работу тактового генера­тора - на выводах 10 к 11 микросхемы D2 должны наблюдаться тактовые импульсы Ф2 и Ф1. Выключите питание и вставьте микропроцессор в панельку, подключите резисторы по 300 510 Ом между общим проводом и линиями шины данных DB7 — DBO.


Тем самым имитируется считывание команды NOP (код OOOQ). Поставьте переключатель К18 в положение АВТОМАТ, подайте питание и проверьте с помощью осцилло-графа наличие импульсов на линиях шины адреса АВ11 — АВО и АВ15-АВ12. Длительность импульсов (длительность уровня логического нуля или логической единицы) на линии АВО должна составить четыре тактовых интервала (машинный цикл команды NOP), т. е. 4 мкс. Длительность импульсов на следую­щих линиях шины адреса последовательно удваивается. Если на какой-либо линии нет импульсов, проверьте последовательнс прохождение сигнала от вывода МП до соответствующей линии. Если сигнала нет и на выводе МП, то можно предположить либо замыкание данной сигнальной линии на какой-либо постоянный уровень, либо неисправность МП по данному выводу. Если им­пульсов нет ни на одной из линий шины адреса и на соответст­вующих выводах МП, то, скорее всего, неисправен МП. Но к тогда прежде чем забраковать МП, сначала проверьте напряже­ния и сигналы на всех его выводах. Желательно проверить МП. вставив его в панельку заведомо исправной МП-системы. Если сигнал исчезает по пути от МП к адресной шине, нетрудно ло­кализовать неисправность, которая может быть вызвана сле­дующими причинами: ошибками в логической схеме, ошибками в монтаже, случайными замыканиями или обрывами проводя­щих линий, неисправностью соответствующих микросхем. Прежде чем выпаивать неисправнук микросхему, убедитесь еще раз, что других причин неисправности нет, так как замена микросхемы, особенно в печатной плате, — процесс весьмг трудоемкий. Если микросхема заведомо неисправна, проще всего ее извлечь, перекусив кусачками ножки. Затем уже можно извлечь по отдельности остатки каждой ножки с помощью пин­цета и паяльника и прочистить отверстия с помощью заострен­ной спички или высверлить тонким сверлом. Извлечь микро­схему без повреждения значительно сложнее. Для этого необхо­димо иметь либо паяльник с многими жалами или широким жалом, либо паяльник с отсосом.



После проверки шины адреса проверьте с помощью осцилло­графа выдачу сигнала R (чтение) на выводе 11 микросхемы D27 и сигнала RW (обращение к памяти) на выводе 3 микросхемы D28. Если сигналов нет, проверьте наличие сигналов DBIN на выводах 10 к 13 микросхемы D27, MR на выводе 12 микросхе­мы D27, STSTB на ножках 4 и 13 микросхемы D29 и соответст­вующего машинному циклу чтения команды управляющего слова (его код 242Q) на шине данных DBO-DB7, т. е. на вы­водах 3, 6, 10, 13 микросхемы D9 и 2, 3, 6, 7 микросхемы D29 соответственно. Если какого-либо сигнала нет, проверьте по цепочке логических схем последовательно, придя к выводам шины данных, DBIN и SYNC микропроцессора на выводах 10, 9, 8, 7, 3, 4, 5, 6, 17, 19 соответственно. Проверьте функцио­нирование кнопки СБРОС. При ее нажатии МП не выдает ни­каких сигналов, при отпускании вновь появляются описанные выше сигналы.

Поставьте переключатель К18 в положение ШАГ, нажмите и отпустите кнопку СБРОС. Проверьте тестером или логиче­ским пробником состояние шины адреса, на которой должен быть адрес 000Q 000Q, наличие сигналов R, DBIN и RW, а также наличие кода 000Q на шине данных МП. Нажимайте кнопку К17. При каждом нажатии кнопки на шине адреса должен по­являться адрес, на единицу больший предыдущего, а состояние остальных контролируемых линий не должно изменяться. Если этого не происходит, проверьте исправность схемы шагового режима (микросхемы D3I.3, D31.4, D30).

После проверки микропроцессорного блока снимите питаю­щие напряжения, отключите резисторы, временно подпаянные к шине данных, и соберите блок памяти, состоящий из микро­схем D8, D11-D15, пока не подпаивая микросхемы ОЗУ (D12, D13). Подключите питание, поставьте переключатель К18 в по­ложение ШАГ, нажмите и отпустите кнопку СБРОС. Начинается исполнение программы монитора в шаговом режиме по машин­ным циклам. Проследите с помощью тестера, проверяя коды на шине данных, исполнение команд монитора, начиная с коман­ды JMP по адресу 000Q 000Q и кончая командой IN по адресу 000Q 203Q.


Если команды исполняются в соответствии с про­граммой и в соответствующих местах программы вырабаты­ ваются сигналы R, W. IN и OUT, то можно приступить к следую­щему этапу изготовления и отладки ПМ-ЭВМ; если же нет, тс необходимо проверять: цепь прохождения кода считываемой команды до выводов шины данных МП, правильность дешиф­рации адреса по сигналам выборки памяти на выводах 8 микро­схем D12, D13 и выводах 14 микросхем D14, D15, правиль­ность выдачи управляющего слова по сочетанию на выходах микросхемы D29, наличие сигнала WR на выходе МП при ис­полнении машинных циклов записи в память и вывода.

Проверив работу микропроцессорного блока совместно с ПЗУ в шаговом режиме, отключите питание и соберите осталь­ную часть схемы ПМ-ЭВМ, впаяв в том числе и микросхемы ОЗУ. Подайте питание, поставьте переключатель К18 в положе­ние АВТОМАТ, нажмите и отпустите кнопку СБРОС. Если схема собрана правильно и все вновь включенные элементы исправны, то на индикаторах портов 001 и 000 высветится адрес начальной ячейки оперативной памяти 014Q OOOQ, а индикаторы порта 002 высветят содержимое этой ячейки. Проверьте работу кла­виатуры, ее цифровой и функциональной частей. Если работа соответствует описанию, приведенному в гл. 7, то дальнейшие проверки будут чисто программными, например проверка ОЗУ. Если клавиатура функционирует неправильно, в целях проверки содержимого ПЗУ выясните, не работает ли клавиша просмотра памяти И. Переведите ПМ-ЭВМ в шаговый режим, нажмите и отпустите кнопку СБРОС и при последовательном исполнении команд монитора проследите прохождение всех сигналов. На каждом шаге порт 002 будет отображать информацию на шине данных, в то время как порты 001 и 000 будут отображать ин­формацию, выдаваемую по командам OUT в соответствующие порты. В шаговом режиме затруднительно проверить правиль­ность функционирования программы-монитора в той части, где анализируются коды нажатых клавиш, так как имеющееся в ней обращение к подпрограмме временной задержки зани­мает сотни машинных циклов и мало у кого хватит терпения дойти до конца.Если неисправность не удалось обнаружить и устранить, то необходимо собрать несложное устройство — статический аппаратный эмулятор, описываемый в § 8.2. Можно и начать с его сборки, прежде чем приступать к сборке и отлад­ке ПМ-ЭВМ, и тем сберечь немало времени. В заключение еще раз напомним, что в процессе отладки микросхемы следует вставлять и вынимать только при выключенном питании и после каждой переделки, включив питание, следует прежде всего проверить, подается ли оно на все микросхемы.



КАК МИКРОПРОЦЕССОР ВЫПОЛНЯЕТ КОМАНДУ?


В ПМ-ЭВМ используется микро­процессор КР580ИК80А, структурная схема которого приведе­на на рис. 4.4. Микропроцессор содержит 16-разрядную шину адреса и 8-разрядную шину данных, способную к передаче сообщений в двух возможных направлениях. Единовременно передаваемая порция информации соответствует одному байту (8 двоичных разрядов). В самом общем случае возможны сле­дующие передачи сообщений: 1) пересылка байта данных от устройства ввода; 2) пересылка байта данных к устройству вывода; 3) считывание байта данных из памяти или запись в память; 4) генерирование в шину данных специального байта, называемого управляющим словом и предназначенного для установления правильного схемного соединения.

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

Таким образом, выполнение каждой считанной ЦПЭ команды программы пользователя осуществляется в строго определен­ной последовательности, задаваемой кодом команды. При этом выполнение отдельных микроопераций синхронизируется во времени сигналами Ф1 и Ф2 тактового генератора. Одним из важнейших понятий всего процесса выполнения команд про­граммы является понятие машинного цикла.

В микропроцессоре КР580ИК80А процесс выполнения каж­дой команды можно разбить на ряд основных операций. Время, отведенное на выполнение операции обращения к памяти или к устройству вывода, составляет машинный цикл.
Таким обра­зом, процесс выполнения команды состоит из стольких машин­ных циклов, сколько обращений к памяти или к устройствам ввода/вывода требуется для ее исполнения. Машинный цикл в свою очередь состоит из нескольких машинных тактов.

Каждая команда в зависимости от ее вида может занимать от одного до пяти машинных циклов. Микропроцессор КР580ИК80А имеет 10 типов машинных циклов, перечисленных в табл. 6.2, а каждый машинный цикл может состоять из 3 — 5 машинных тактов. Под машинным тактом подразумевается интервал времени, соответствующий одному периоду тактовых импульсов, подаваемых от синхрогенератора.



Рис. 4.5. Временная диаграмма для команды, требующей четыре машин­ных цикла

Для организации машинных циклов требуется формирование строго синхронизированной во времени последовательности управляющих сигналов, обеспечивающих правильные пути про­хождения данных в строго определенные моменты времени, и выполнение требуемых микроопераций. Как уже отмечалось, исходными данными для этого являются результаты дешифри­рования операционного кода команды. Выполнение команды всегда начинается с цикла обращения к памяти, в результате которого производится считывание кода, интерпретируемого МП как код операции. Будем обозначать машинные циклы од­ной команды символами Cl, C2 и т. д., а машинные такты од­ного цикла — символами Tl, T2 и т. д. Таким образом, машин­ный цикл С1 — это всегда цикл выборки команды. Его длитель­ность обычно — четыре или пять тактов. Последующие циклы С2 — С5 состоят обычно из трех тактов. Для простых операций, таких как арифметические, команды занимают четыре или пять тактов. Команды более сложных операций требуют для выполне­ния до 18 машинных тактов.

В качестве примера рассмотрим команду LDA (ЗАГРУЗИТЬ данные в аккумулятор), требующую для реализации четыре машинных цикла. На рис. 4.5 приведена временная диаграмма команды LDA. Эта команда переписывает в аккумулятор дан­ные, содержащиеся в определенной ячейке памяти.



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

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

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

В четвертом машинном цикле происходит окончательное вы­полнение команды: аккумулятор загружается данными из па­мяти по адресу, записанному в регистрах W и Z.

В первом такте четвертого машинного цикла содержимое регистров W и Z передается через буфер в шину адреса. Во вто­ром такте предоставляется время для ответа памяти. Наконец, в третьем такте содержимое шины данных пересылается через буфер в аккумулятор. Выполнение команды полностью завер­шено за 13 машинных тактов.

Перейдем теперь к рассмотрению системы команд микро­процессора КР580ИК80А и особенностей их работы.



КАКУЮ МИКРО-ЭВМ МЫ БУДЕМ НАЗЫВАТЬ "ПРОСТЕЙШЕЙ"?


 

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

Под простейшей микро-ЭВМ (далее ПМ-ЭВМ) будем подра­зумевать микро-ЭВМ на одной или нескольких платах, построен­ную на базе микропроцессора КР580ИК80А (КР580ВМ80А), с минимальным (определяемым ниже) объемом ОЗУ и ПЗУ и с простейшими устройствами ввода/вывода в виде клавиатуры (К), включающей 16 клавиш и 24 светоизлучающих диода (светодиода СД). На рис. 2.4 ПМ-ЭВМ обведена красной штри­ховой линией. На этом же рисунке указаны некоторые возмож­ности функционального расширения ПМ-ЭВМ.

Микро-ЭВМ может быть оснащена алфавитно-цифровой кла­виатурой (АЦК), семисегментными светоизлучающими индика­торами (ССИ), специальным цветным дисплеем (ЦД) или дисплеем на базе бытового телевизора (БТ), внешними запоми­нающими устройствами — кассетным магнитофоном (кассетным-накопителем на магнитной ленте КНМЛ или накопителем на гиб­ких магнитных дисках НГМД), печатающим устройством — принтером (ПР) и некоторыми другими устройствами. Подклю­чение перечисленных дополнительных внешних устройств потре­бует разработки специальных согласующих схем, не показанных на схеме ПМ-ЭВМ (см. гл. 10).

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

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



КАЛЬКУЛЯТОР


Первая идея, которая приходит в голову читателю, получившему в руки ПМ-ЭВМ, т. е. вычисли­тельную машину, — использовать ее для вычислений. Лишь по­том, приобретая некоторый опыт, он поймет, что вычисления — весьма малый клочок обширного поля возможных применений микро-ЭВМ.

Система команд микропроцессора КР580ИК80А, использо­ванного в ПМ-ЭВМ, позволяет непосредственно выполнять ло­гические операции и операции сложения и вычитания над двоич­ными и двоично-кодированными десятичными числами, имею­щими формат один или два байта. Тем не менее, используя тот факт, что микро-ЭВМ — программируемое устройство, имеющее память, можно реализовать практически неограниченное мно­жество различных операций (арифметических, логических, функциональных и т. д.) над исходными данными, представлен­ными в произвольно заданном формате. Эти операции обычно оформлены в виде стандартных программ и составляют основу ядра программно-математического обеспечения микро-ЭВМ. Запрограммировав самостоятельно ряд вычислительных задач большей или меньшей сложности, читатель вскоре вынужден будет обратиться к уже имеющимся библиотекам стандартных программ и пакетам прикладных программ, поскольку он убе­дится, какой колоссальный объем интеллектуального коллек­тивного труда уже вложен в них и что никто в одиночку не в состоянии пройти заново весь этот путь и разработать пол­ностью математическое обеспечение ЭВМ.

Для начала введем в память ПМ-ЭВМ программу:

014000076                                 MVIA, 002Q

014001 002

014 002 306                                     ADI, 003Q

014003 003

014 004 323                                     OUT, OOOQ

014005 000

014 006 166                                     HLT

Программа выполняет сложение двоичного числа (в данном случае 002Q), помещенного в ячейку ОЗУ по адресу 014Qt)01Q, с числом (в данном случае 003Q), помещенным в ячейку ОЗУ по адресу 014Q 003Q, и выводит результат (в данном случае 005Q) в порт 000.
Для того чтобы эти действия были исполне­ны, достаточно после ввода программы нажать кнопку СБРОС, а затем кнопку П — на индикаторах порта 000 высветится двоич­ное число 00000101, эквивалентом которого является восьме­ричное число 005 Q. Чтобы сложить другие числа в диапазоне от OOOQ до 377Q, их надо поместить по указанным выше адре­сам, не меняя остальной части программы, и снова нажать кноп­ки СБРОС и П. Для вычитания числа, помещенного по адресу 014Q 003Q, из числа, помещенного по адресу 014Q 001Q, до­статочно поменять команду ADI (код операции 306Q) на коман­ду SUI (код операции 326Q). Чтобы производить операции над десятичными числами, их надо представить в двоично-кодиро­ванном виде, так чтобы каждый байт изображал двухразрядное десятичное число от 0 до 99:

десятичное        двоично-кодированное восьмеричное десятичное

00           0000 0000                                000

01           0000 0001                                001

02           0000 0010                                002

97           10010111                                227

98           1001 1000                                230

99           1001 1001                                231

В приведенной выше программе для сложения, например, чисел 25 и 47 после команды сложения необходимо поставить команду десятичной коррекции результата сложения DAA:

014000076                                   MVIA.25D

014001 045

014002306                                   ADI.47D

014 003 107

014 004 047                                   DAA

014005323                                   OUT, OOOQ

014 006 OOU

014 007 166                                   HLT

В результате порт 000 после исполнения программы индици­рует число 0111 0010В = 162Q=72D.

Для того чтобы проследить исполнение операции десятичной коррекции, введем в ПМ-ЭВМ следующую программу:

014000257                                                    XRA, A

014001 306                                   Ml:            ADI,001Q



014 002 001

014 003 047                                                     DAA

014 004 006                                                     MVI B, 040Q

014005 040

014006315                                   M2:            CALL DL

014007 277

014 010 000

014011005                                                     OCR В

014012302                                                     JNZ, M2

014013 006

014 014 014

014015323                                                     OUT, 002Q

014016 002

014017303                                                     JMP, Ml

014020  001

014021  014

Программа производит примерно каждые 0,5 с суммирование содержимого аккумулятора с единицей (инкремент), выполняет операцию десятичной коррекции и выводит результат в порт 002. Операция десятичной коррекции дает правильный результат только после операции сложения. Поэтому для выполнения вычитания одного двоично-кодированного десятичного числа из другого необходимо либо заменить вьиитание прибавлением к уменьшаемому вычитаемого, представленного в дополнитель­ном коде, а затем уже производить десятичную коррекцию результата, либо применить эквивалентные этому искусствен­ные приемы. Для примера введем в ПМ-ЭВМ программу вычи­тания содержимого ячейки 014Q 005Q (здесь 28) из содержи­мого ячейки 014Q 007Q (здесь 75) :

014000076                                   MVIA, 99D

014001 231

014002306                                   ADI, 01D

014 003 001

014004336                                   SBI, 28D

014005 050

014 006 306                                   ADI, 75D

014 007 165

014 010 047                                   DAA

014011323                                   OUT, OOOQ 014 012000

014013166                                   HLT

В данной программе вычитание числа 28D из числа 99D + ID эквивалентно формированию в аккумуляторе вычитаемого в дополнительном коде. Поэтому прибавление уменьшаемого (здесь 75 D) с последующей десятичной коррекцией дает пра­вильный результат (47 D), индицируемый портом 000.



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

014 000 021                                                  LXID, ALPHA

014 001 000

014002015

014003041                                                  LXIH, BETA

014 004 000

014 005 016

014 006 016                                                 MVI С, 8Н

014007 010

014010257                                                 XRAA

014011032                                 Ml:            LDAX D

014012216                                                 ADCM

014 013 000                                                 NOP

014014022                                                 STAXD

014015043                                                  INXH

014016023                                                  INXD

014017015                                                  OCR С

014020302                                                 JNZ, Ml

014021 Oil

014 022014

014 023 166                                                  HLT

С помощью этой программы двоичное 64-разрядное число, содержащееся в последовательных ячейках ЗУ, начиная (млад­шие разряды) с ячейки с символическим адресом ALPHA (здесь 015Q OOOQ), складывается с 64-разрядным числом, содержа­щимся в последовательных ячейках ЗУ, начиная с ячейки с сим­волическим адресом BETA (здесь 016Q OOOQ), и результат по­мещается в ячейки ЗУ, начиная с ячейки с адресом ALPHA. Заменив команду NOP по адресу 014Q 013Q командой десятич­ной коррекции, получим программу сложения двух 16-разряд­ных десятичных чисел, находящихся в ячейках памяти, начиная с ячеек соответственно ALPHA и BETA.

Для вычитания десятичных 16-разрядных чисел, когда умень­шаемое располагается в ЗУ, начиная с ячейки ALPHA, а вычитаемое - начиная с ячейки BETA, получим такую программу:

014 000 021                                                  LXI D, ALPHA



010 001 000

000 102 015

000 003 041                                                  LXIH, BETA

000 004 000

014005 016

014 006 016                                                  MVIC, 8H

014 007 010

014 010 067                                                  STC

014011076                                 Ml:            MVI A, 99D

014 012231

014013316                                                  АС1,0

014014 000

014015226                                                  SUBM

014 016 353                                                  XCHG

014017206                                                  ADDM

014 020 047                                                 DAA

014021167                                                  MOVM,A

014 022 353                                                  XCHG

014 023 023                                                  INX D

014024043                                                  INXH

014025015                                                  DCRC

014026302                                                  JNZ, Ml

014027011

014030014

014031166                                                  HLT

Результат вычитания помещается в ячейки ЗУ, начиная с ALPHA. В процессе работы с помещенными выше программами мы смогли убедиться в больших неудобствах ввода десятичной информации с помощью восьмеричной клавиатуры, поскольку каждую пару десятичных цифр нужно предварительно перевести в восьмеричный код. Можно написать специальную программу ввода десятичных цифр, использовав тот факт, что при нажатии определенных клавиш вырабатываются не только коды чисел от 0 до 7, но и коды чисел от 8 до 15. Действительно, введя в ПМ-ЭВМ следующую программу:

014 000 315                                 Ml:            CALL, SKL

014001 177

014 002 000

014 003 323                                                  OUT, OOOQ

014 004 000

014005303                                                  JMP, Ml

014 006 000



014007 014

нажимая разные кнопки и наблюдая индикацию порта 000, убедимся, что при обращении к клавиатуре с помощью команды CALL SKL в аккумулятор помещаются коды в соответствии с табл. 7.7. В частности, кнопке С Б соответствует код 0000 1000, т. е. код числа 08 D, а кнопке МБ — код 0000 1001, т. е. код чис­ла 09D. Следовательно, незначительно изменив текст программы-монитора в части анализа введенного числа, можно вводить и размещать в памяти ПМ-ЭВМ информацию непосредственно в десятичном виде. Предоставим читателю возможность самому составить такую программу и разместить ее в ОЗУ или в допол­нительных микросхемах ПЗУ.

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

Рассмотрим следующую программу, переводящую пятираз­рядное целое десятичное число в диапазоне от 00000 до 65535, вводимое с клавиатуры ПМ-ЭВМ (для цифры 8 используется кнопка СБ, а для цифры 9 — кнопка МБ), в 16-разрядное дво­ичное число, содержащееся в регистровой паре Н:

014000041                                                     LXI H, OOOQ OOOQ

014001 000

014 002 000

014003016                                                     MVIC, 0050

014 004 005

014005315                                   Ml:            CALL SKL

014006 177

014 007 000

014010376                                                     CPI, 012Q

014 Oil 012

014012322                                                    JNC, Ml

014013  005

014014  014

014015345                                                    PUSHH

014016321                                                     POPD

014 017051                                                     DADH

014 020051                                                     DADH



014 021031                                                     DADD

014 022051                                                     DADH

014 023 137                                                    MOVE, A

014 024 026                                                    MVI D, OOOQ

014 025 000

014 026031                                                     DADD

014 027015                                                     OCR С

014 030302                                                    JNZ,M1

014 031 005

014 032014

014 033 174                                                    MOV A, H

014 034323                                                     OUT, 001Q

014 035 001

014036175                                                     MOV A, L

014037323                                                     OUT, OOOQ

014 040000

014041 166                                                     HLT

Программа обращается к ПП опроса клавиатуры SKL и при нажатии любой кнопки анализирует введенный код. Если код соответствует цифрам от 0 до 9, содержащееся в регистровой паре Н число (команды с адреса 014Q 017Q по 014Q 022Q) умножается на 10 и к нему прибавляется вновь введенное чис­ло. Программа с помощью счетчика, организованного на ре­гистре С, отсчитывает пять таких циклов, поэтому вводимое число обязательно должно быть пятиразрядным (например, 00512). Команды с адреса 014Q 033Q используются в демон­страционных целях для вывода преобразованного в двоичный код числа в порты 001 и 000. Если программа должна исполь­зоваться в качестве ПП, то по адресу 014Q 033Q должна быть записана команда RET.

Введите программу в ПМ-ЭВМ, нажмите кнопки СБРОС и П, затем введите десятичное число 10 000, последовательно нажи­мая кнопки 1, О, О, О, О. В портах 001 и 000 высветится число 0010 0111 0001 0000, являющееся двоичным эквивалентом де­сятичного числа 10 000. Проверьте правильность работы про­граммы, вводя другие десятичные числа, например 00512, 01024, 02048, 04096, 08192, 16384, 32768, 65535: Какие двоич­ные числа должны индицироваться портами 001 и 000?



Рассмотрим теперь программу преобразования целого двоич­ного 16-разрядного числа, содержащегося в регистровой паре D, в двоично-кодированное десятичное число, каждый разряд ко­торого помещается, начиная с младшего, в последовательные ячейки ОЗУ, начиная с ячейки, символический адрес которой ED (машинный адрес 015Q OOOQ):

014000041                                                LXI H, ED

014001  000

014002 015

014003016                                                MVIC,005Q

014 004 005

014005066                                Ml:           MVI M, OOOQ

014 006 000

014007043                                                INXH

014010015                                                 OCR С

014011302                                                JNZ,M1

014012005

014013 014

014014053                                                 DCXH

014015001                                                  LXI В. 33003600

014 016 360

014017 330

014020315                                                  CALLCF

014 021 060

014022014

014023001                                                  LXI В, 374Q030Q

014024030

014025 374

014026315                                                 CALLCF

014027 060

014 030014

014031001                                                  LXI В, 377Q234Q

014 032 234

014 033 377

014034315                                                  CALLCF

014 035 060

014036 014

014037001                                                  LXI B, 377Q366Q

014040366

014 041 377

014042315                                                  CALLCF

014 043 060

014 044 014

014 045 163                                                  MOVM, E

014 046 166                                                  HLT

014 047 021                                                  LXI D (число)

014050377

014051 377

014052166                                                  HLT

014060345                                 CF:            PUSH H



014 061 353                                                  XCHG

014062011                                                  DAD В

014063322                                                 JNC, M2

014 064 074

014065 014

014 066 353                                                 XCHG

014067341                                                  POPH

014 070 064                                                  INK M

014071303                                                  JMP, CF

014072060

014073 014

014 074 171                                 M2:            MOV А С

014 075 057                                                 CMA

014 076 137                                                  MOVE, A

014077170                                                 MOV А, В

014100057                                                 CMA

014 101 127                                                 MOVD, A

014 102023                                                  INXD

014103031                                                  DADD

014104353                                                  XCHG

014105341                                                  POPH

014 106 053                                                  OCX H

014107311                                                  RET

Программа построена на принципе последовательного исчер­пывания: каждый десятичный разряд, начиная с десятков тысяч, определяется путем подсчета количества суммирований с преоб­разуемым числом двоичного числа, соответствующего дополне­нию до 10 000, затем до 1000, затем до 100, затем до 10, каждый раз до появления переноса. Вычисленные значения засылаются в ячейки соответственно ED + 4, ED + 3, ED + 2, ED + 1. В остат­ке остаются единицы, засылаемые в ячейку памяти ED.

Если программа должна использоваться в качестве ПП, то по адресу 014Q 046Q должна быть записана команда RET. В данном примере для загрузки регистровой пары D использо­вана небольшая программа, начинающаяся с адреса 014Q 047Q.



Введите программу в ПМ-ЭВМ, нажмите кнопку СБРОС, на­берите число 047 и нажмите кнопки МБ и П. Регистровая пара D загружена максимальным двоичным числом (во всех разрядах единицы). Теперь нажмите кнопки СБРОС и П, затем нажмите кнопку СБРОС, наберите число 015 и нажмите кнопку СБ. Порт 002 будет индицировать число 0000 0101, т. е. двоично-де­сятичный код числа 05. Нажмите кнопку И - порт 002 будет индицировать 0000 ООН, т. е. 03. Последовательным нажатием кнопки И получим соответственно 05, 05, 06. Это означает, что в ячейках ОЗУ хранится число 65 535, являющееся десятичным эквивалентом максимального 16-разрядного двоичного числа. Загружайте в ячейки 014Q 050Q и 014Q 051Q различные числа. Повторяя описанную выше процедуру, можно убедиться, что преобразование осуществляется правильно.

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

9.2. ПРОГРАММИРУЕМОЕ УПРАВЛЯЮЩЕЕ УСТРОЙСТВО

Устройства цифровой автомати­ки являются областью наиболее массового применения микро­процессоров. В качестве примера конструирования управляю-

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

014 000 006                                                        MVI В, 006Q

014 001 006

014 002 041                                                  LXI Н, (адр. кода)

014 003 040

014 004 014

014005315                                 Ml:           CALL SKL

014006 177

014 007 000

014010276                                                  СМРМ

014011 302                                                  JNZ ,M3



014012026

014013 014

014014043                                                  INXH

014015005                                                  DCRB

014016302                                                  JNZ, Ml

014017005

014020014

014021076                                 M2:           MVI A, 001Q

014 022 001

014 023 323                                                        OUT, OOOQ

014 024 000

014025166                                                  HLT

014026074                                 M3:           INRA

014027323                                                  OUT, 001Q

014 030 001

014031315                                                  CALLDL

014 032 277

014 033 000

014 034 303                                                  JMP, M3

014 035 026

014036014

014040001                                 КОД:         123481

014041 002

014 042 003

014 043 004

014 044 010

014 045 001

Здесь с помощью команды MVI В организован счетчик коли­чества цифр в наборе кодового замка. Командой CALL SKL непрерывно опрашивается клавиатура, при нажатии одной из кнопок полученный код сравнивается с кодом, хранящимся в ячейках памяти. Если коды не совпадают, происходит пере­ход по метке МЗ к части программы, предназначенной для подачи сигнала тревоги (в порт 001 выводится инкрементируе-мое через каждый 0,01 с содержимое аккумулятора). Если коды совпадают, программа возвращается к опросу клавиатуры (мет­ка Ml) и ожидает нового нажатия кнопки, при котором проис­ходит сравнение полученного кода с содержимым следующей ячейки памяти, и т. д. до тех пор, пока количество нажатий не будет равно запрограммированному командой MVI В. Тогда в порт 000 будет выведено число 001Q, т. е. загорится свето­диодный индикатор, соответствующий младшему разряду. Сигнал с младшего разряда порта 000 может быть использован для управления электромагнитом, отпирающим замок.

Введем программу в ПМ-ЭВМ, нажмем кнопки СБРОС и П, а затем поочередно кнопки 1, 2, 3, 4, СБ, 1, соответствующие кодовой комбинации замка (кнопка СБ соответствует циф­ре 8, а кнопка МБ - цифре 9).


При нажатии последней кнопки на индикаторах порта 000 появится число 001Q. Для возврата к исходному состоянию необходимо снова нажать кнопки СБРОС и П. Теперь при наборе кода сделайте ошибку - тотчас в порте 001 начинают мигать светодиодные индикаторы, а если между выходом порта 001 (вывод 16 микросхемы D18) и источ­ником + 5 В через резистор 200 Ом подключить наушник или репродуктор, послышится тревожное гудение, прекратить которое можно, только нажав кнопку СБРОС.

Вводя разные числа в ячейку ОЗУ по адресу 014Q 001Q, можно изменять количество цифр в кодовой комбинации, а вводя различные числа в ячейки ОЗУ, начиная с 014Q 040Q -задавать различные кодовые комбинации. Таким образом, не используя никакого добавочного оборудования, мы промоде­лировали работу кодового замка. Для реализации кодового замка, как говорят, "в железе" необходимо вынести в набор­ное поле замка кнопки, параллельные кнопкам клавиатуры 0-7, СБ, МБ, СБРОС, П. Последние две кнопки необходимы, чтобы при неправильном наборе вернуться к исходному со­стоянию. Кроме того, нужно организовать управление меха­низмом замка, а для того чтобы после случайного прекраще­ния питания замок правильно функционировал, программу вместе с кодовой комбинацией необходимо хранить в ПЗУ.

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



КЛАВИАТУРА И ИНДИКАЦИЯ


Устройства ввода/вывода необ­ходимы для связи микро-ЭВМ с внешним миром. Без такой свя­зи ее работа была бы бессмысленной. Устройства ввода/вывода бывают самые различные по конструкции и особенностям рабо­ты. Отличительной особенностью всех этих устройств является их способность перекодировать информацию из той формы, в которой она представляется в микро-ЭВМ, в форму, необхо­димую для связи с какими-либо приборами (для устройства вывода), и осуществлять обратный процесс для устройства ввода. Схема индикации и клавиатура микро-ЭВМ подключа­ются к линиям DBO-DJB7 шины данных, линиям ABO — AB7 шины адреса и линиям IN и OUT шины управления (рис. 7.5, 7.6). Схема индикации выполнена на базе трех байтовых (8-разрядных) портов вывода (микросхемы D16-D21), а схе­ма клавиатуры — на базе одного 4-разрядного порта ввода (микросхемы D23).

Каждый из портов вывода схемы индикации выполнен из двух микросхем К155ТМ7. Эта микросхема представляет собой четыре D-триггера с прямыми и инверсными выходами (см. гл. 4). Входы триггеров подключены к линиям шины данных. Каждый выход D-триггера микросхемы К155ТМ7 имеет нагру­зочную способность, равную 10, т. е. к нему можно подсоеди­нить 10 стандартных ТТЛ-входов, а это значит, что при низком уровне на выходе (напряжение меньше или равно 0,4 В) в него может втекать ток до 16 мА. Это позволяет подключать свето-Диоды для индикации состояний триггеров непосредственно к их выходам (рис. 7.7). Сопротивление включается последо­вательно с светодиодом для того, чтобы ограничить ток до 5-10 мА. Для индикации можно использовать любые диоды с рабочим током 5 — 15 мА, например АЛ102А, АЛ102Г, АЛ112А-М. Светодиоды подключены к инверсным выходам триггеров, поэтому они зажигаются, если в соответствующий триггер записывается 1, и гаснут, если записывается 0.

В схему индикации и клавиатуры входит микросхема К155ИД4 (D24). Эта микросхема представляет собой два дешифратора-мультиплексора (см. гл. 5), объединенные в один дешифратор трехразрядного двоичного кода в код "один из восьми".
Это достигается соединением входов 1 и 75, а также входов 2 и 14 микросхемы. На вход 13 подается первый раз­ряд кода, на вход 3 - второй, а на объединенные входы 1и 15 -третий разряд двоичного кода, предназначенного для преобра­зования в код "один из восьми". Объединенные входы 2 и 14 служат для запрещения работы дешифратора. При этом на них должен быть подан высокий уровень. Такой режим работы мик­росхемы К155ТД4 представлен в табл. 7.2.



Рис. 7.5. Схема индикации



Рис. 7.5. Схема индикации (продолжение)

Микросхема К155ИД4 (D24) вместе с микросхемой К155ЛА2 (D25) составляет схему дешифрации адреса для выбора внешних устройств ввода и вывода. Эта схема функ­ционирует следующим образом. Входы 13, 3 и 1/15 микросхемы D24 подсоединены к линиям ABO, AB1, АВ2 шины адреса, а вхо­ды микросхемы D25  — подсоединены к инвертированным ли­ниям шины адреса АВЗ, АВ4, АВ5, АВ6, АВ7. Поэтому когда во время выполнения команд IN или OUT на линиях шины адреса появляется адрес внешнего устройства (см. гл. 6), на одном из выходов микросхемы U24 появляется низкий уро­вень. Соответствие выполняемой команды IN или OUT тем вы­ходам D24, на которых появляется низкий уровень, приведено в табл. 7.3.



Рис. 7.6. Схема клавиатуры

 Рис. 7.7. Схема подключения све-тодиода к выходу порта вывода

Таблица

7.2

 

 

 

 

 

 

 

 

 

Входы

Выходы

2/14

1/15

3

13

9

10

11

12

7

6

5

4

Н

X

X

X

Н

Н

Н

Н

Н

Н

Н

Н

Т

L

L

L

L

Н

Н

Н

Н

Н

Н

Н

Т

L

L

Н

Н

L

Н

Н

Н

Н

Н

Н

т

L

Н

L

Н

Н

L

Н

Н



Н

Н

I,

L

Н

Н

Н

Н

Н

L

Н

Н

Н

Н

т,

Н

L

L

Н

Н

Н

Н

L

Н

Н

Н

т,

Н

L

Н

Н

Н

Н

Н

Н

L

Н

Н

т,

Н

Н

L

Н

Н

Н

Н

Н

Н

L

Н

L

Н

Н

Н

Н

Н

Н

Н

Н

Н

Н

L

Таблица

7.3

 

 

 

 

 

 

 

 

 

Команда

Код на линиях шины адреса во время выполне­ния команды

Вывод микро­схемы D24 с низким уровнем

АВ7

АВ6

АВ5

АВ4

АВЗ АВ2

АВ1

АВО

 

 

 

IN 000Q или 1 1 OUT 000 Q

1 1

1

0

0

0

9

IN 001 Q или 1 1 OUT 001Q

1 1

1

0

0

1

10

IN 002 Qили 1 1 OUT 002 Q

1 1

1

0

1

0

11

IN 003 Q или 1 1 OUT 003 Q

1 1

1

0

1

1

12

IN 004 Q или 1 1 OUT 004 Q

1 1

1

1

0

0

7

IN 005 Q или 1 1 OUT 005 Q

1 1

1

1

0

1

6

IN 00бQили 1 1 OUT 006 Q

Г 1

1

1

1

0

5

IN 007Qили 1 1 OUT 00 7 Q

1 1

1

1

1

1

4




Таблица 7.4

Команда

Микросхемы, состав­ ляющие порт ввода или вывода

Функция порта ввода или вывода

OUT 000 Q

D16, D17

Индикация одного байта

OUT 001 Q

D18, D19

То же

OUT 002 Q

D20, D21

То же

OUT003Q

D22

Вывод четырех битов для обслуживания кла­виатуры

IN 003 Q

D23

Ввод четырех битов для обслуживания клавиа­туры

Заметим, что если выполнить команду IN или OUT с отлич­ным от перечисленных в табл. 7.3 адресом внешнего устройства, то ни на одном из выходов микросхемы D24 не появится низко­го уровня. Из восьми возможных адресов для портов ввода и вывода в схеме индикации и клавиатуры используются три адреса 000 Q, 001Q и 002 Q, которые присвоены портам вывода, служащим для индикации, и один адрес 003 Q, который присвоен одновременно 4-битовым портам ввода и вывода, обслуживаю­щим клавиатуру (табл. 7.4).

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

При выпрлнении одной из команд OUT, перечисленных в табл. 7.4, во время ее третьего цикла на шинах данных, адреса и управления вырабатываются сигналы, изображенные на рис. 7.8.

При этом вырабатывается сигнал на соответствующем выходе дешифратора D24 (см. табл. 7.3). Сигнал с выхода дешифра­тора подается вместе с сигналом OUT на входы микросхемы К155ЛЕ1 (D26) и формирует на ее выходе положительный импульс. Этот импульс, поступая на управляющие входы 4, 13 D-триггеров одного из портов, своим фронтом (переход из 0 в 1) переписывает код с шины данных в триггеры, а своим срезом фиксирует его там. Таким образом, 8 бит кода, содержащегося в аккумуляторе перед выполнением команды OUT, высвечиваются на индикаторах порта 000Q, 001Q или 002Q.


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



Рис. 7.8. Временная диаграмма работы порта вывода

Этот порт совместно с портом ввода (с тем же адресом 003Q), реализованным на микросхеме К589АШ6 (D23), пред­назначен для подключения к микро-ЭВМ клавиатуры (см. рис. 7.6). Кнопки клавиатуры включены между выходами микросхемы D22 и входами D23. Входы D23 через сопротив­ление 5 кОм соединены с напряжением питания. Это сделано для того, чтобы поддерживать на каждом входе D23 высокий уровень, если ни одна кнопка, связанная с этим входом, не нажата. Значения сопротивлений (5 кОм) выбраны с тем расче­том, чтобы не перегружать выходы D22, если какая-нибудь кнопка нажата.

Схема клавиатуры работает следующим образом. Специаль­ная программа SKL (см. § 7.4) записывает в порт с адресом 003 Q такие коды, у которых в одном из четырех разрядов О, а в остальных разрядах 1, причем 0 появляется последовательно в разрядах О, 1, 2 и 3 и соответственно на выходах 16,15, 10 и 9 микросхемы D22. После того как код записан и на одном из выходов 16, 15, 10 или 9 установился низкий уровень, эта про­грамма производит командой IN 003 Q ввод в аккумулятор кода, который в этот момент присутствует на входах 4, 7, 9 и 12 микросхемы D23. Ввод в аккумулятор происходит во вре­мя третьего цикла команды IN (рис. 7.9). Адрес внешнего уст­ройства 003 Q вызывает появление низкого уровня на выхо­де 12 микросхемы D24. Этот низкий уровень, попадая на вход 1 микросхемы D23, разрешает ее работу, но ее выходы 3, 6, 10 и 13 остаются в состоянии высокого сопротивления. По сигналу IN эти выходы открываются и в четыре младших разряда акку­мулятора микропроцессора переписываются состояния вхо­дов 4, 7, 9 и 12. Если ни одна из кнопок, соединенных с тем вы­ходом D22, на котором присутствует низкий уровень, не нажата, то все четыре младших разряда аккумулятора равны 1, если одна из кнопок нажата, то соответствующий разряд будет ра­вен 0.По тому коду, который был записан в порт с адресом 003 Q, и тому коду, который был считан из порта 003 Q, можно определить, какая из кнопок нажата. Как это делается, описано в следующем параграфе.



Рис. 7.9. Временная диаграмма работы порта ввода




014055303                                             JMP, M2

014 056 006

014057 014

014 060 077                                 TAB:

014 061 006

014062133

014063  117

014064  146

014 065 155

014 066 175

014 067 007

014070177

014071 157

014 072 000

014 073 000

014 074 060



Рис. 10.3. Схема гашения индикаторов

Программа, построенная на базе предыдущей, выводит на дисплей, образованный 16 семисегментными индикаторами, движущийся текст (в данном примере цифры от 0 до 9 и два пробела), хранимый в ОЗУ, начиная с ячейки 014Q 060Q. Конец текста помечается символом, не использованным для обозначе­ния букв и цифр (в данном примере символ II, его код 060Q). Он хранится в ячейке 014Q 051Q и сравнивается с символом текста, выводимым на крайний левый индикатор дисплея. Как только опознан символ конца текста, программа возвра­щается к началу текста. Время цикла сканирования задается числом в ячейке 014Q 025Q, а время, на которое текст останав­ливается, — числом в ячейке 014Q 005Q.

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

Во избежание перегорания индикаторов при непредусмот­ренном прекращении сканирования схему, изображенную на рис. 10.2, следует дополнить устройством гашения индикато­ров, построенным на основе одновибратора (рис. 10.3). Устрой­ство отключает индикацию через заданный цепочкой RC интер­вал времени после подачи импульса выборки порта 002. Таким образом, индикаторы непрерывно (для глаза наблюдателя) горят только при периодической выдаче информации в порт 002.

Рассмотренная схема индикации весьма универсальна и обладает гЪраздо более широкими возможностями для обеспе­чения диалогового режима работы ПМ-ЭВМ по сравнению с про­стой двоичной индикацией.

 



КОНСТРУКТИВНОЕ ОФОРМЛЕНИЕ ПМ-ЭВМ


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

Как отмечалось в гл. 2, ПМ-ЭВМ состоит из центрального блока и устройств ввода/вывода. В качестве устройства ввода в ПМ-ЭВМ используется клавиатура, а устройства вывода -совокупность светодиодов. Центральный блок машины, как следует из рис. 2.4, состоит из центрального процессорного эле­мента, оперативного (ОЗУ) и постоянного (ПЗУ) запоминаю­щих устройств и портов ввода и вывода. Работа всех перечислен­ных блоков синхронизируется сигналами от синхрогенератора, входящего в состав МБ.

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


Рис. 4.1. Внешний вид ПМ-ЭВМ (а) и шестнадцатеричной клавишной па­нели ввода информации (б)


Внешний вид ПМ-ЭВМ при таком конструктивном оформле­нии приведен на рис. 4.1,д. На рис. 4.1,6 указаны основные органы клавиатуры. В более простом варианте конструкции машины светодиоды также размещаются на плате, а клавиатура оформля­ется в виде отдельной выносной панели, соединенной с машиной с помощью жгута. Разъемное подсоединение К к машине может быть рекомендовано лишь при наличии хорошего разъема, обеспечивающего надежное соединение контактов. Если такого разъема нет, жгут лучше подсоединить наглухо путем пайки.
В этом случае вся машина "укладывается" в размеры средней толщины папки для бумаг.

Клавиатура содержит 16 кнопок, из которых кнопки К1- К8 служат для ввода данных, кнопки К9 — К11 — для управления вводом данных, а кнопка К12 — для управления запуском про­граммы. Кнопки К13-К16 не задействованы. Кроме того, имеются еще две управляющие кнопки и один переключатель. Кнопка К17 предназначена для пошагового выполнения про­граммы. При ее нажатии происходит выполнение одного машин­ного цикла (см. § 4.4). Переключатель К18 предназначен для выбора режима работы ПМ-ЭВМ. Он имеет два положения: "шаг" и "автомат". В положении "автомат" переключатель замкнут и происходит автоматическое выполнение программы. В положении "шаг" программу можно пропустить в пошаговом режиме путем многократного нажатия кнопки "машинный цикл" К17. Кнопка К19 ("сброс") предназначена для обнуле­ния счетчика команд (см. § 4.3) .

Светодиоды компонуются в три группы по восемь штук в каждой. Они отображают состояния трех портов вывода. Схемы подключения светодиодов и клавиатуры описываются в § 7.3.

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



МИКРОПРОЦЕССОР КРКА


В предыдущих главах уже приво­дились некоторые данные о микропроцессоре КР580ИК80А. В этой главе будет продолжено описание этого микропроцессора в основном с точки зрения электронных или, как говорят, аппаратурных особенностей его устройства и работы. Микропро­цессор КР580ИК80А представляет собой центральный процес­сорный элемент, выполненный по и-МОП технологии в виде одной микросхемы. Микросхема упакована в прямоугольный пластмассовый корпус с двухрядным расположением выводов. Серия КР580 является развитием серии К580 и содержит не­сколько больших интегральных схем, на базе которых можно эффективно реализовывать различные микропроцессорные си­стемы. Микросхема КР580ИК80А содержит 5000 транзисторов и имеет 40 выводов.

Приведем некоторые типовые характеристики микропро­цессора.

Диапазон рабочих температур, °С...............   От -10 до+70

Максимальная тактовая частота, МГц.............   2,5

Напряжение источников питания, В:

U1.......-.........................   +12±0,6

U2...............................   +5 ±0,25

Uз................................   -5 ±0,25

Потребляемая мощность, мВт.................   1500

Быстродействие (количество операций типа регистр-ре­гистр в секунду).........................   625 000

 Рис. 6.1. Микропроцессор КР580ИК80А

Каждый выход микро­процессора обеспечивает I0вых не более 1,8 мА и I1вых не более 0,1 мА, т. е. может быть нагружен од­ним стандартным ТТЛ-входом серии К155. Напря­жения питания необходимо подавать или одновремен­но, или в последовательно­сти U1, U2, Uз и снимать в обратной последователь­ности. Микропроцессор КР580ИК80А относится к универсальным микропро­цессорам, он имеет воз­можность работать в самых разнообразных режимах. Тот или иной режим может не использоваться в каж­дой конкретной конструк­ции микро-ЭВМ. Условное графическое изображение микропроцессора приво­дится на рис. 6.1, а функ­ции выводов — в табл. 6.1.


Таблица 6.1

Обозначение вывода

Функциональное назначение вывода

АО-А15 DO-D7

Выходы, линии шины адреса Двунаправленные линии шины данных

               Сигналы управления шинами

DBIN

Выход, признак того, что шина данных находится в состоянии приема информации

WR HOLD

Выход, признак того, что шина данных находится в состоянии передачи информации Вход, переводит шины данных и адреса в состояние высокого сопротивления

HLDA

Выход, признак того, что шины данных и адреса находятся в состоянии высокого сопротивления

READY

Вход, переводит микропроцессор в состояние ожидания

WAIT

Выход, признак того, что микропроцессор нахо­дится в состоянии ожидания

Обозначение вывода

Функциональное назначение вывода

SYNC

Выход, признак того, что по шине данных пере­дается управляющее слово микропроцессор

INTERRUPT INTE

Сигналы управления прерываниями

Вход, запрос прерывания работы микропроцессора Выход, соответствует состоянию внутреннего триг­гера, управляющего прерыванием микропроцессора

Ф1,Ф2

Сигналы синхронизации

Входы для тактовых импульсов

RESET

Сигнал начального запуска

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

 

6.2. СИНХРОНИЗАЦИЯ

 

Как уже известно из § 4.3, каждая команда выполняется микропроцессором не мгновен­но, а как последовательность машинных циклов. Микропроцес­сор КР580ИК80А имеет 10 типов машинных циклов (табл. 6.2), и все его команды состоят из комбинаций только этих циклов.

В состав команды может входить от одного до пяти циклов. Каждый машинный цикл также не является неделимой опера­цией, а состоит из машинных тактов. В состав машинного цикла микропроцессора КР580ИК80А может входить от трех до пяти машинных тактов. Машинный такт не является таким же закон­ченным процессом, как машинный цикл, большинство сигналов микропроцессора вырабатываются в одном такте и снимаются в другом.


Поэтому для машинных тактов нельзя привести такую же классификацию, как для машинных циклов. Как и в гл. 4, в тексте и на рисунках будем обозначать такты одного цикла Tl, T2, ... и т. д., циклы одной команды С1,С2,... и т. д.

Для того чтобы сформировать интервал времени, соответст­вующий одному машинному такту, на входы микропроцессора Ф1 и Ф2 подаются тактовые импульсы (синхроимпульсы). Длительность машинного такта равняется одному периоду син­хроимпульсов. Все внутренние операции микропроцессора и формирование внешних сигналов происходят в моменты вре­мени, определяемые синхроимпульсами.

 



Рис. 6.2. Тактовые импульсы Таблица 6.2

 

 

Управляющее слово, состоящее из разрядов ши­ны данных DO — D7

Тип цикла

DO

Dl

D2

D3

D4

D5

D6

D7

ВЫБОРКА КОМАНДЫ

L

H

L

L

L

H

L

H

ЧТЕНИЕ ИЗ ПАМЯТИ

L

H

L

L

L

L

L

H

ЗАПИСЬ В ПАМЯТЬ

L

L

L

L

L

L

L

L

ЧТЕНИЕ ИЗ СТЕКА

L

H

H

L

L

L

L

H

ЗАПИСЬ В СТЕК

L

L

H

L

L

L

L

L

ВВОД С ВНЕШНЕГО УСТРОЙСТВА

L

H

L

L

L

L

H

L

ВЫВОД НА ВНЕШНЕЕ УСТРОЙСТВО

L

L

L

L

H

L

L

L

ПРЕРЫВАНИЕ

H

H

L

L

L

H

L

L

ОСТАНОВ

L

H

L

H

L

L

L

H

ПРЕРЫВАНИЕ ВО ВРЕМЯ ОСТАНОВА

H

H

L

H

L

H

L

L

К уровням напряжения, частоте, фронтам и фазе синхроим­пульсов предъявляются особые требования (рис. 6.2). Входы Ф1 и Ф2 не являются ТТЛ-входами. Это единственное исключе­ние для микропроцессора КР580ИК80А. Для Ф1 и Ф2 напряже­ние сигнала низкого уровня должно быть в пределах от -0,3 до 0,8 В, а напряжение сигнала высокого уровня - в пределах от 10 до 12 В. Частота синхроимпульсов должна быть не более 2,5 МГц, переход с одного уровня напряжения на другой дол­жен иметь длительность 20-30 не. На рис. 6.2,я приводится вре­менная диаграмма сигналов Ф1 и Ф2, которая может быть полу­чена с помощью микросхемы тактового генератора КР580ГФ24, который выпускается специально для микропроцессора КР580ИК80А (см.§ 6.4). Из этой диаграммы видно, что если условно разбить период синхроимпульсов на девять интервалов, то сигнал Ф1 будет иметь высокий уровень в первых двух интер­валах и низкий уровень во всех остальных, а сигнал Ф2 будет иметь высокий уровень в интервалах с третьего по седьмой и низкий уровень во всех остальных.

Сигналы Ф1 и Ф2 могут иметь и более простую временную диаграмму (рис. 6.2,6). Если не пользоваться для их генерации микросхемой КР580ГФ24, то получить такую диаграмму проще, чем стандартную. Требования к уровням, фронтам и частоте остаются такими же, как и для стандартной временной диа­граммы.



МИКРОСХЕМЫ, СОДЕРЖАЩИЕ ЭЛЕМЕНТЫ ПАМЯТИ


Микросхема К155ТМ2 (рис. 5.27, табл. 5.18). Эта микросхема содержит два D-трштера. Поясним работу D-триггеров микросхемы К155ТМ2, поль­зуясь табл. 5.18. Каждый D-триггер этой микросхемы имеет вход предустановки S и сброса R. Из таблицы видно, что при подаче низкого уровня на вход S на прямом выходе триггера Q появится высокий уровень, а на инверсном выходе Q - низкий Уровень. Низкий уровень на входе R устанавливает выходы триггера в противоположные состояния. Если низкий уровень присутствует хотя бы на одном из входов S или R, то сигналы на входах С и D никак не влияют на состояние триггера. Если сигнал низкого уровня подавать одновременно на входы S и R, то на обоих выходах (прямом и инверсном) установится высокий уровень; если эти сигналы одновременно снять, то триггер может установиться в любое состояние, поэтому такой ситуации необходимо избегать.


Рис. 5.27. Микросхема К155ТМ2

Таблица 5.18

Входы

Выходы

S

R

С

D

Q

Q

L

Н

X

X

Н

L

Н

L

X

X

L

H

L

L

X

X

Н

H

Н

Н

L

X

Qs

Qs

Н

Н

Н

X

Qs

Qs

Н

Н

1

X

Qs

Qs

Н

Н

t

Н

Н

L

Н

Н

t

L

L

H


Рис. 5.28. Временная диаграмма работы микросхемы К155ТМ2

Буквой Qs в табл. 5.18 обозначено состояние триггера, кото­рое было до подачи указанных управляющих сигналов. Из табл. 5.18 видно, что низкий уровень, высокий уровень, а также переход от высокого к низкому уровню на входе С никак не влияют на состояние триггера. Только переход от низкого уров­ня к высокому устанавливает на выходе триггера тот уровень, который в данный момент присутствует на входе D, а на инверс­ном выходе устанавливает инверсный уровень. На рис. 5.28 приведена временная диаграмма, иллюстрирующая работу D-триггера микросхемы К155ТМ2.

Таблица 5.19

Входы

Выходы

С

D

Q

0

L

X

qs

Qs

Н

Н

Н

L

Н

L

L

Н


  

Рис. 5.29. Микросхема К155ТМ7



Рис. 5.30. Времен­ная диаграмма ра­боты микросхемы К155ТМ7

Микросхема К155ТМ7 (рис. 5.29, табл. 5.19). Эта микросхе­ма содержит четыре D-триггера.

Каждый триггер имеет вход D, выходы Q и Q и управляющий вход С, но управляющие входы всех триггеров не подключены к отдельным выводам микросхемы, а соединены попарно и под­ключены к выводам 4 и 13. Поэтому триггерами этой микро­схемы нельзя управлять по отдельности. Из табл. 5.19 видно, что если на управляющем входе С низкий уровень, то уровень сигнала на выходе триггера Q остается неизменным, а если вы­сокий уровень, то уровень сигнала на выходе триггера повторяет уровень на входе D. Временная диаграмма, поясняющая работу триггера, приведена на рис. 5.30. Триггер такого типа часто назы­вают "защелкой", так как с его помощью можно в любой мо­мент зафиксировать уровень какого-либо сигнала.

Микросхема КР541РУ2 (рис. 5.31). Эта микросхема является оперативным запоминающим устройством емкостью 4 Кбит с организацией 1024x4 бита. Это значит, что внутри микросхемы содержится 1024 запоминающие ячейки, каждая из которых со­стоит из четырех двоичных разрядов. Для адресации ячеек памя­ти внутри микросхемы имеется 10 адресных входов АО — А9. Каждой комбинации сигналов на этих входах соответствует одна ячейка. Для передачи информации в ячейки памяти при записи и из ячеек памяти при считывании имеются выводы QO — Q3. При записи информации эти выводы работают как вхо­ды, а при считывании — как выходы с открытым коллектором. Вход WE управляет режимом записи и считывания: при высо­ком уровне на этом входе микросхема работает в режиме счи­тывания, при низком — в режиме записи. Вход CS управляет работой выводов QO — Q3. При высоком уровне на этом входе информация не может быть считана или записана. В режиме считывания низкий уровень на входе CS разрешает работу вы­водов QO — Q3 как выходов, а в режиме записи — как входов. Временные диаграммы работы микросхемы в режиме записи считывания приведены на рис. 5.32.



Микросхема КР556РТ4 (рис. 5.33). Эта микросхема явля­ ется постоянным запоминающим устройством емкостью 1 Кбит с организацией 256x4 бита, т. е. внутри микросхемы содержится 256 ячеек памяти, каждая из которых состоит из четырех разря­дов. Информация, записанная в ПЗУ, не стирается при выключе­нии напряжения питания. Для записи информации в ПЗУ исполь­зуется специальное устройство, называемое программатором. Схема программатора для микросхемы К556РЕ4 (старое назва­ние микросхемы КР556РТ4) и режим записи информации не приводятся в этой книге.

Микросхема КР556РТ4 имеет восемь входов АО-А7 для адресации ячеек памяти, четыре выхода с открытым коллекто­ром QO — Q3 для считывания содержимого ячейки и два управляющих входа CSO и CS1. Считывание информации может про­исходить только тогда, когда на обоих входах CSO и CS1 низкий уровень (рис. 5.34).



Рис. 5.31. Микросхема КР541РУ2



Рис. 5.33. Микросхема КР556РТ4



Рис. 5.32. Временная диаграмма работы микросхемы КР541РУ2



Рис. 5.34. Временная диаграмма работы микросхемы КР556РТ4 при считывании

 



МОЖНО ЛИ САМОМУ ПОСТРОИТЬ ЭВМ?


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

Итак, построение простейшей микро-ЭВМ оказывается сейчас возможным и не очень сложным делом. По крайней мере оно не сложнее постройки любительских конструкций в области радио, телевидения или звукозаписи.

"А можно ли построить самому не простейшую, а более слож­ную микро-ЭВМ?" — спросит заинтересованный читатель.

Простейший вариант микро-ЭВМ допускает возможность усложнения и усовершенствования конструкции путем замены или установки дополнительных микросхем или новых допол­нительных плат с микросхемами. Можно повысить быстродейст­вие микро-ЭВМ, увеличить объем памяти или заставить ее вы­полнять новые, не предусмотренные первоначальной конструк­цией функции. К существенному расширению возможностей простейшей микро-ЭВМ приведет, например, включение в ее состав перепрограммируемой памяти, т. е. постоянной памяти, сохраняющей информацию при выключении питания и про­граммируемой пользователем, с возможностью стирания инфор­мации и повторного программирования. Поскольку более слож­ная микро-ЭВМ, как мы увидим из дальнейшего изложения (см. § 2.3), отличается от простейшей, кроме всего прочего, развитой периферией, можно заняться совершенствованием ее внешних устройств. Однако внешние устройства самому по­строить довольно сложно. Вряд ли, например, кто-нибудь захо­чет взяться за конструирование хорошего печатающего устрой­ства. Изготовление подобного устройства под силу лишь про­мышленности. Вот подсоединить к простейшей микро-ЭВМ имеющиеся внешние устройства можно, в том числе некоторые бытовые приборы, такие как домашний телевизор или кассет­ный магнитофон. О том, как это сделать, вы узнаете в гл. 10.



НАКОПИТЕЛЬ НА БАЗЕ БЫТОВОГО МАГНИТОФОНА


Сохранение программ на про­стом бытовом магнитофоне не только эффективно, но и необ­ходимо для записи более длинных программ без использования дорогих цифровых магнитофонов, а также взамен записи на перфоленту. Дешевые бытовые магнитофоны имеют ограни­ченную полосу пропускания, высокий уровень шумов и непо­стоянную скорость протяжки. В отличие от принятой в цифро­вых магнитофонах схемы, где записываемый сигнал с помощью специального устройства модулируется разными частотами для логического 0 и логической 1, в описываемом здесь мето­де записи требования, предъявляемые к каналу передачи дан­ных, минимальны. Вместо передачи уровней, соответствующих логическому 0 и логической 1, данные передаются в виде пачек импульсов заданной частоты (тона) с разным количеством импульсов в пачке. Основная частота должна лежать в пределах полосы пропускания магнитофона. Каждый бит передаваемой информации представляется в виде импульсной пачки, за кото­рой следует пауза. Первая треть периода передачи бита всегда занята импульсами, во второй трети либо импульсы продолжа­ются, либо наступает пауза, что означает соответственно логиче­скую 1 или логический 0, последняя треть периода — всегда пауза (рис. 10.4). Таким образом, значение бита данных за­дается отношением длины импульсной пачки к длине паузы. (Известны и другие системы записи, например основанные на количестве импульсов в пачке.) Для изучения методов форми­рования таких импульсных пачек введем в ПМ-ЭВМ следующую учебную программу:

014000016                                             MVIC, 252Q

014001 252

014002006                                 Ml: MVIB, 011Q

014003 Oil

014004257                                 М2: XRA A

014 005 323                                             OUT, OOOQ

014 006 000

014007315                                             CALL IMP

014010060

014011 014

014012171                                             MOV А, С

014013037                                             RAR


014014117                                             MOV С, А

014015322                                             JNC, МЗ

014 016 026

014017014

014 020 257                                             XRA A

014 021 323                                             OUT, OOOQ

014 022 000

014 023 303                                             JMP, M4

014 024 032

014025 014

014026076                                 МЗ: MVI A, 377Q

014027377

014 030 323                                             OUT, OOOQ

014031 000

014032315                                 М4: CALL, IMP

014 033 060

014 034 014

014035257 .                                        XRA A

014 036 057                                             СМА

014 037 323                                                 OUT, OOOQ

014 040 000

014041315                                             CALL, IMP

014 042 060

014043 014

014044171                                             MOV А, С

014 045 323                                             OUT, 002Q

014 046 002

014 047 005                                             DCR В

014050302                                             JNZ,M2

014 051 004

014052014

014 053 166                                             HLT

014 060 026                                 IMP: MVI D, 010Q

014061 010

014062257                                             XRA A

014063323                                 M5: OUT, 001Q

014 064 001

014 065 036                                                  MVI E, 040Q

014 066 040

014067315                                 M6: CALL DL

014 070 277

014071 000

014072035                                             DCRE

014073302                                             JNZ.M6

014 074 067

014075 014

014076074                                             INK A

014 077 025                                             OCR D

014100302                                             JNZ,M5

014 101 063

014 102 014

014103311                                              RET





Рис. 10.4. Диаграмма передачи одного двоичного разряда

Программа, начиная с младшего разряда, преобразует байт информации, хранящийся в регистре С, в последовательность посылок, наблюдаемую в портах 000 и 001. Индикаторы порта 000 погашены в тех частях периода передачи каждого бита, когда должна выдаваться импульсная пачка, и горят, когда она не должна выдаваться, т. е. логическому 0 соответствует после­довательность: не горит — горит — горит, а логической 1 — не горит — не горит — горит. Импульсы с заданной частотой следо­вания появляются в младшем разряде порта 001, а в целом индикаторы порта 001 подсчитывают эти импульсы. Частота следования импульсов — примерно 2 Гц. Порт 002 позволяет наблюдать преобразуемое число, каждый разряд которого последовательно анализируется программой путем сдвига в раз­ряд переноса. В ячейке 014Q 003Q хранится параметр, заноси­мый в регистр В, задающий количество преобразуемых разря­дов числа. Здесь этот параметр равен девяти, так как кроме восьми информационных пачек для обозначения конца переда­чи числа передается импульсная пачка, соответствующая нулю. Подпрограмма формирования импульсной пачки имеет метку IMP. Количество импульсов в пачке равно половине числа, хра­нящегося в ячейке 014Q 061Q, которое обязательно должно быть четным. Длительность импульса в пачке определяется за­держкой, задаваемой числом в ячейке 014Q 066Q. В учебной программе длительность импульса для наблюдаемости задана равной произведению этого числа на задержку, определяемую ПП DL. Для использования ГШ в качестве рабочей необходимо из ПП IMP изъять обращение к ПП DL, из основного текста изъять команду вывода в порт 002 (адреса с 014Q 044Q по 014Q 046Q), а вместо команды HLT ввести команду RET. Чтобы сформировать сигнал, который можно подавать непо­средственно на вход записи магнитофона, используем схему, представленную на рис. 10.5. Эта схема позволяет регулиро­вать уровень записи и ликвидирует постоянную составляющую сигнала.





Рис. 10.5. Схема формирователя сигнала для записи на магнитофон

Зададимся приемлемой для записи и воспроизведения на бы­товом магнитофоне частотой импульсов в пачках, равной 2 кГц. Тогда легко подсчитать число, заносимое в регистр Е. Действи­тельно, программный цикл от команды DCR Е до команды JNZ занимает 15 тактов. В ПМ-ЭВМ тактовая частота равна 1 МГц. Следовательно, чтобы получить задержку, равную поло­вине периода повторения импульсов 1/(2000-2) = 250 мкс, необходимо задать 250/15 ~ 16 программных циклов. В ре­гистр Е надо занести 020Q = 16. Если количество импульсов в пачке равно четырем (как задано в нашей программе), ско­рость передачи информации составит 2000/(4-3) ~ 167 бит/с.



Рис. 10.6. Формирование выходного сигнала с магнитофона

Для ввода информации с бытового магнитофона необходимо из полученного сигнала сформировать нормальные логические посылки на ТТЛ-уровнях, причем воспроизведению импульсной пачки должен соответствовать уровень логической 1, а паузе -уровень логического 0 (рис. 10.6). Количество импульсов в пачке не принимается во внимание. Такую схему легко реали­зовать на операционных усилителях или на обычных транзисто­рах. Формирователь может быть подключен к одному из входов порта 003, например выводу 4 микросхемы D23. В этом случае дальнейшие операции имеют чисто логический характер, легко реализуемый программным путем. Введем в ПМ-ЭВМ следую­щую демонстрационную программу, которую потом можно преобразовать в рабочую ПП ввода информации с бытового магнитофона:

014 000 006                                 MAG: MVI В, 010Q

014001 010

014 002 026                                                 MVI D, OOOQ

014 003 000

014004315                                 Ml: CALL IMP

014005 120

014 006 014

014007332                                             JC.M1

014010004

014011 014

014012315                                             CALL IMP

014013 120

014014014

014015332                                             JC.M1



014 016 004

014017014

014020315                                 M2: CALL IMP

014021 120

014022014

014023322                                             JNC, M2

014 024 020

014025014

014026315                                             CALL IMP

014027 120

014030014

014031 322                                             JNC, M2

014032020

014033 014

014034025                                  M3: OCR D

014035315                                              CALL IMP

014 036 120

014037014

014040332                                              JC, M3

014041 034

014042014

014043315                                              CALL IMP

014 044 120

014045014

014046332                                              JC, M3

014 047 034

014 050 014

014051024                                  M4: INR D

014052315                                              CALL IMP

014053  120

014054  014

014055322                                              JNC.M4

014056 051

014057014

014060315                                              CALL IMP

014061 120

014 062014

014 063 322                                              JNC, M4

014064051

014065 014

014 066 172                                              MOV A, D

014067.027                                              RAL

014070171                                              MOV А, С

014071037                                              RAR

014072117                                              MOVC, A

014 073 026                                              MVI D, OOOQ

014 074 000

014075005                                              OCR В

014076302                                              JNZ,M3

014077034

014 100014

014 101 171                                              MOV А, С

014 102 323                                              OUT, OOOQ

014 103 000

014104257                                              XRAA

014 105 117                                              MOVC, A



014106303                                              JMP.MAG

014 107000

014 110014

014120036                                  IMP: MVIE, 377Q

014 121 377

014122035                                  M5: DCR E

014123302                                              JNZ, M5

014 124 122

014 125 014

014126333                                              IN,003Q

014 127 003

014130037                                                RAR

014 131 311                                                RET

Программа поразрядно формирует в регистре С число, после­ довательно вводимое через младший разряд порта 003 с по­мощью ПП IMP, которая производит опрос порта в заданном темпе. В основной части программы в регистре D подсчитыва­ются опросы и формируется знаковый разряд числа в зависи­мости от соотношения длительности пачки и паузы: если пачка длиннее паузы — в знаковом разряде 1, если короче — в знако­вом разряде 0. Биты знакового разряда последовательно зано­сятся в регистр С. Темп опроса задается числом по адресу 014Q 121Q, заносимым в регистр Е. В данном случае задержка равна 15-256 = 3840 мкс, а частота опроса соответственно равна 1/0,003840 ~ 260 Гц. Следовательно, при длине импульсной пачки до 0,5 с в регистре D накопится число, не большее 130, что гарантирует отсутствие переполнения регистра.

Перед вводом программы в ПМ-ЭВМ подключим к выводу 4 микросхемы D23 вывод 16 микросхемы D16 второй ПМ-ЭВМ, в которую введена описанная выше программа вывода, на­строенная на длительность импульсной пачки не более 0,5 с. Вместо второй ПМ-ЭВМ можно подключить приведенный на рис. 10.6 формирователь и магнитофон, на ленту которого пред­варительно записаны с ПМ-ЭВМ импульсные последовательно­сти для одиночных байтов, но тогда мы сталкиваемся с пробле­мами отладки всего тракта: ПМ-ЭВМ — выходной формирова­тель — магнитофон в режиме записи, а затем магнитофон в ре­жиме воспроизведения — входной формирователь — ПМ-ЭВМ. В то же время при непосредственной связи между двумя ПМ-ЭВМ отпадают проблемы согласования уровней и при этом могут быть заданы любые временные характеристики сигналов.



Настроим программу вывода передающей ПМ-ЭВМ на выда­ чу одного байта информации из регистра С, т. е. используем программу в том виде, как она приведена в тексте. Для вывода байта необходимо нажать кнопки СБРОС и П. Если до этого в принимающей ПМ-ЭВМ были также нажаты кнопки СБРОС и П, через 3 — 4 с на индикаторах ее порта 000 можно будет на­блюдать код числа, идентичный коду, хранящемуся в регист­ре С передающей ПМ-ЭВМ. Чтобы снова передать байт инфор­мации, нужно снова нажать кнопки СБРОС и П. Меняя содер­жимое регистра С передающей ПМ-ЭВМ, можно проверить пра­вильность передачи для любых кодов. После такой проверки можно произвести проверку правильности передачи массива информации. Для этого в память передающей ПМ-ЭВМ нужно дополнительно ввести управляющую программу и внести в ос­новную программу указанные выше изменения. Управляющая программа имеет вид

014110041                                   ММ1: LXI H, ADM

014 111 000

014 112 015

014113116                                   ММ2: MOV C.M

014114315                                               CALL M1

014 115 002

014 116 014

014117054                                                INR L

014120302                                               JNZ,MM2

014 121 113

014 122014

014 123 166                                                  HLT

Здесь ADM = ADMHQ ADMLQ - символический адрес начала массива чисел, заносимый в регистровую пару H; Ml - метка начала программы вывода информации. Максимальная длина передаваемого массива - 256 байт, если он начинается с адреса ADMHQ OOOQ и кончается адресом ADMHQ 377Q.

Для проверки правильности передачи необходимо нажать кнопки СБРОС и П принимающей ПМ-ЭВМ, нажать кнопку СБРОС, набрать адрес начала управляющей программы (метка ММ1) и нажать кнопку П передающей ПМ-ЭВМ. На индикаторах порта 000 принимающей ПМ-ЭВМ будут последовательно появ­ляться коды передаваемого массива. Коды массива могут быть занесены в ОЗУ принимающей ПМ-ЭВМ.


Для этого вместо команды MOV С, А по адресу 014Q 105Q необходимо занести команду RET и ввести дополнительно управляющую программу вида

014  041                                   МА1: LXIH,ADM

014 141 000

О14 143 161                                   МА2: MOVM,C

014 144 315                                               CALL MAG

014 145 000

014 146 014

014 147 054                                                iVrS » л

014 150 302                                                JNZ, MA2

014 151 143

014 152 014

014 153 166                                                HLT

Теперь для запуска программы принимающей ПМ-ЭВМ необ­ходимо после нажатия кнопки СБРОС набрать адрес начала управляющей программы (метка МА1), а затем нажать кнопку П. Принимаемые коды по-прежнему наблюдаются на инди­каторах порта 000, но после окончания передачи правильность принятого массива легко проверить, считывая его последова­тельно на индикаторах порта 002 принимающей ПМ-ЭВМ с по­мощью клавиатуры. После такой проверки можно уже отла­дить передачу информации с рабочей скоростью порядка 150 бит/с, затем включить между передающей и принимающей ПМ-ЭВМ выходные и входные формирователи, снова прове­рить передачу и лишь после этого включать магнитофон.



ОБЩАЯ ФУНКЦИОНАЛЬНАЯ СХЕМА ПМ-ЭВМ


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

Управление работой ПМ-ЭВМ осуществляется двумя блока­ми: схемой пошагового выполнения программы и схемой си­стемного контроллера. Первая схема полезна для анализа испол­нения вводимых команд программы. Системный контроллер необходим для организации трактов передачи информации при реализации основных режимов работы микропроцессора. Ис­пользуемый в ПМ-ЭВМ микропроцессор КР580ИК80А имеет шины адреса и данных, а также некоторые управляющие сигна­лы. Сигналы шины управления формируются системным кон­троллером вне микропроцессора из управляющих сигналов МП. К ним относятся: ЧТЕНИЕ, ЗАПИСЬ, ВЫВОД НА ВНЕШНЕЕ УСТРОЙСТВО, ВВОД С ВНЕШНЕГО УСТРОЙСТВА (см. § 6.3).

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

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



Рис. 4.3. Схема основных функциональных узлов ПМ-ЭВМ и связей между ними:

ДАЗУ, ДАУВВ - дешифраторы адреса ЗУ и УВВ; ДБШД - двунаправленный буфер ШД; КЛ - клавиатура; СД - све-тодиоды; СК — системный контроллер; СПИП — схема пошагового исполнения программы; 0, 1,2,3 — порты вывода; 3' - порт ввода

Для организации правильной адресации к устройствам па­мяти и к устройствам ввода/вывода в схеме ПМ-ЭВМ исполь­зуются еще два блока, не указанных на рис. 4.2: дешифратор адреса запоминающих устройств и дешифратор адреса устройств ввод а/выв од а. С учетом этих и всех остальных перечисленных выше дополнительных блоков общая функциональная схема ПМ-ЭВМ принимает вид, представленный на рис. 4.3. На этой схеме двойными линиями указаны шины передачи адреса (крас­ными) и данных (зелеными), а сигналы управления — тонкими линиями. Расположение блоков в точности соответствует рас­положению их схем на общей электрической принципиальной схеме ПМ-ЭВМ, приведенной в приложении 2. На рис. 4.3 пока­заны лишь основные связи (например, отсутствуют связи по питанию).

Работа всех приведенных на рис. 4.3 блоков в отдельности описывается в гл. 6 и 7. Перейдем к рассмотрению функцио­нальной схемы микропроцессора и организации его работы.



ОБЩИЕ ПОЛОЖЕНИЯ


Выше была рассмотрена шинная архитектура, на основе которой строятся все современные микро-ЭВМ. Составные части или блоки микро-ЭВМ подключа­ются к шинам адреса, данных и управления. Эти шины служат для передачи информации от одного блока к другому, причем в определенный момент времени передатчиком может быть лишь один из блоков. В гл. 6 было рассмотрено устройство микропроцессорного блока, который хотя и является "серд­цем" микро-ЭВМ, но не может самостоятельно работать без блока памяти и устройств ввода/вывода. Поэтому в данной главе рассматриваются функционирование и подключение к микропроцессорному блоку блока памяти (§ 7.2), устройств вывода — светодиодов и устройств ввода — кла­виатуры (§ 7.3). Далее, в § 7.4, приводится полный текст программы-монитора, которая управляет работой микро-ЭВМ, в том случае, когда она не решает какую-либо задачу и позво­ляет пользователю с помощью кнопок клавиатуры и индика­торов вводить, отлаживать и запускать свои программы.



ОБЩИЕ ВОПРОСЫ


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

 Рис. 5.1. Внешний вид микросхемы в корпусе с двухрядным расположе­нием выводов

Интегральная микросхема - микроэлектронное изделие, вы­полняющее определенную функцию преобразования и обработ­ки сигнала и имеющее высокую плотность упаковки электриче­ски соединенных элементов. Полупроводниковый кристалл, в объеме и на поверхности которого созданы элементы, состав­ляющие микросхему, обычно помещается в корпус. Корпуса микросхем бывают самых разнообразных форм и изготовля­ются из керамики, пластмассы, металла и т. д. В ПМ-ЭВМ будут использоваться микросхемы в прямоугольных пластмассовых корпусах (рис. 5.1) с двухрядным расположением выводов. Принято обозначать выводы микросхем арабскими цифрами и буквами русского и латинского алфавитов. При этом для корпусов всех типов используется общее соглашение по обо­значению номеров выводов, практически не имеющее исклю­чений. У вывода номер один ставится маркирующая точка, которая называется ключом. Начиная от этой точки номера выводов будут возрастать при обходе их против часовой стрел­ки. На условных графических изображениях микросхем эти номера выводов проставляются над линиями, изображающими выводы. Принято также присваивать выводам буквенные обо­значения в соответствии с названиями выполняемых выводамифункций. Существуют две системы буквенных обозначений: отечественная (буквами русского алфавита) и международная (буквами латинского алфавита). В этой книге будет применять­ся международная система, так как она широко используется во многих отечественных и переводных книгах по электронике и микро-ЭВМ. Выводы будут обозначаться в тексте буквами или номерами (если не принято данный вывод обозначать буквой) при описании микросхем и номерами — при описании электрон­ных схем, чтобы избежать двусмысленности этих описаний.



ОПЕРАЦИИ


Рассмотренные в предыдущем параграфе логические операции и описываемые ниже арифмети­ческие операции реализуются в арифметическо-логическом устройстве (АЛУ) микропроцессора, на котором построена ПМ-ЭВМ. Операции выполняются над 8-разрядными двоичными числами, причем старший (левый) разряд может использовать­ся для представления знака числа (значение 0 указывает на положительное число, а 1 — на отрицательное).

Сложение двоичных чисел производится по тем же прави­лам, что и сложение десятичных чисел, за исключением того, что перенос в следующий разряд осуществляется при сумме в данном разряде, равной 2, а не 10. Пусть, например, требуется сложить два числа:

00011 010B = 26D

+     00001 100 В = 12D

00 100 110B=38D.

При сложении крайних правых четырех разрядов имели место все четыре возможные комбинации сложения одноразрядных чисел: 0+0=0, 1 + 0 = 1, 0+1 = 1, 1+1=0. В четвертом разряде сумма равна 2D, или 10 В. Следовательно, необходим перенос единицы из четвертого разряда в пятый. Тогда в пятом разряде опять же 1 + 1 = 0 и после переноса единицы в шестой разряд сумма в шестом разряде будет 1 + 0+0=1.

Нетрудно заметить, что реализация этих операций может быть выполнена с помощью всего двух логических элементов: суммы по модулю 2, или ИСКЛЮЧАЮЩЕГО ИЛИ, реализую­щего функцию f9, соответствующую выходу суммы S, и эле­мента И, реализующего функцию f5, соответствующую выходу переноса в следующий разряд С (рис. 3.3,с). Эта схема сложения одноразрядных чисел без учета входного переноса из предыду­щего разряда называется полусумматором.

Рис. 3.3. Одноразрядные суммирующие схемы: а - полусумматор; б - полный сумматор

Чтобы реализовать сложение с учетом переноса из предыду­щего разряда, необходимо использовать два полусумматора, соединив их так, как показано на рис. 3.3,6. Эта схема носит название полного сумматора, или одноразрядного сумматора. Для сложения двух 8-разрядных двоичных чисел потребуется 8 одноразрядных сумматоров, соединенных таким образом, чтобы сигнал переноса передавался в каждый следующий раз­ряд на вход Св соответствующего полного сумматора.
Сигнал переноса из самого старшего разряда запоминается в специаль­ном триггере, называемом триггером флага переноса, для ука­зания переполнения, имевшего место при сложении.

Поскольку, как указывалось выше, старший разряд может отводиться под знак числа, с помощью 8-разрядной суммирую­щей схемы можно оперировать как с любыми целыми положи­тельными числами в диапазоне от 00 000 000 В = OD до 11 111 111 В = 25 5 D, так и с целыми положительными и отрица­тельными числами в диапазоне от 01 111 111 В = 127D до 10 000 000 В = -128D (в этом случае единица в старшем разряде указывает на отрицательное число, а нуль - на положитель­ное).

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

воспользоваться все той же схемой 8-разрядного сумматора. Пусть, например, требуется выполнить вычитание: 38 D — 26 D. Перейдем к дополнительному коду для числа — 26. Инвертируя код числа 26D и прибавляя единицу в младшем разряде, полу­чаем:

00 011 010 — прямой код 11 100 101 — обратный код

+

1

11 100 110 — дополнительный код. Теперь выполним сложение:

00100 110В + 11 100 110В

100001 100 В =12D.

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



Для выполнения операций умножения и деления специальных команд в микропроцессоре КР580ИК80А не предусмотрено. Поэтому эти операции в ПМ-ЭВМ выполняются программным путем с использованием операций сложения, сложения с допол­нительным кодом числа (вычитания) и сдвига (см. § 9.1).

Арифметические операции можно производить также над десятичными числами, закодированными так называемыми двоично-десятичными кодами (двоично-кодированное представ­ление десятичного числа). При таком представлении чисел каж­дая десятичная цифра кодируется четырехразрядным двоичным кодом (кодом прямого замещения, или кодом 8421). После сложения двух двоично-кодированных чисел для получения правильного результата необходимо выполнить коррекцию ре­зультата этой операции. Для этого используется блок десятич­ной коррекции. Он осуществляет требуемую коррекцию ре­зультата путем исполнения специальной команды "десятичной коррекции" DAA (см. список команд в приложении 1), кото­рую необходимо выполнить после команды сложения.



ОСНОВНЫЕ БЛОКИ МИКРО-ЭВМ


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

Основным назначением внешнего блока является преобразо­вание дискретной информации. Общий вид простейшего пре­образователя информации представлен на рис. 2.1,д. На его входы поступает исходная информация, а на выходах появля­ется информация, преобразованная в соответствии с законом, реализуемом в преобразователе.

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

Рис. 2.1. Преобразователи информации: а - простейший; б – управляемый

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


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

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



Рис. 2.2. Микро-ЭВМ как преобразователь

2 Чтобы преобразование выполнялось по мере решения зада­чи автоматически, программа решения задачи должна быть вве­дена в машину до начала ее работы над задачей и должна хра­ниться там в течение всего времени вычислений. Кроме того, должна быть предусмотрена возможность хранения тех проме­жуточных результатов вычислений, от которых зависит на­стройка преобразователя (работа машины). С учетом этих заме­чаний схема преобразования информации с помощью машины приобретает вид, указанный на рис. 2.2,д. А наш внешний блок кроме отмеченного раньше центрального блока (ЦБ) должен содержать устройство ввода (УВ) для ввода данных и програм­мы и устройство вывода (УБЫВ) для выдачи результатов вычис­лений (рис. 2.2,6). В чем же состоит работа центрального блока и какие устройства в него входят?



ОСНОВНЫЕ ЛОГИЧЕСКИЕ ОПЕРАЦИИ


Любое преобразование кодов в машине основано на выполнении над ними логических опера­ций. К логическим относятся операции над наборами двоичных (принимающих только значения 0 и 1) аргументов, в результате выполнения которых получают единственное значение: 0 или 1. Логические операции могут быть описаны с помощью специаль­ных функций, принимающих 0 и 1 на наборах двоичных пере­менных и называемых булевыми функциями. Число всевозможных булевых функций от п переменных равно 2 и, следова­тельно, растет очень быстро с ростом п. Для двух переменных число всех булевых функций равно 16, а для одной перемен­ной — 4. Функции одной и двух переменных играют важную роль в теории переключательных схем (схем, реализующих логические преобразования дискретных сигналов).

Таблица 3.2

Значение

аргумен­та

Значения функций

 

X

f1

f2

f3

f4

0

0

1

0

1

1

0

1

1

0

Множество всех булевых функций от и переменных может быть описано конечной таблицей, число строк которой рав­но 2", а число столбцов — 22 . Например, все четыре булевы функции от одной переменной могут быть описаны табл. 3.2.

Первые две функции не требуют для своей реализации спе­циальных аппаратурных затрат, так как первая f1 (носящая название "константа 0") соответствует разрыву цепи передачи сигнала, а вторая f2 ("константа 1") — постоянному соедине­нию. Третья функция f3 носит название "функции повторе­ния" (имеется в виду повторение значения аргумента), а по­следняя f4 — "функции отрицания", или "функции инверсии".

В электрических цепях элемент, называемый буфером и слу­жащий для развязки цепей и согласования нагрузок, может реализовывать функцию f3, а так называемый инвертирую­щий буфер — функцию инверсии f4. Функцию f3 могут выпол­нить два последовательно включенных инвертора, т. е. элемен­ты, реализующие функцию инверсии сигнала f4.
Это свойство инвертора использовано в схеме буфера шины адреса ПМ-ЭВМ (см. §6.3).



Рис. 3.1. Схемные обозначения буфера (а) и инвертора (б)

Рис. 3.2. Схемные обозначения:

а — элемента И; б — элемента ИЛИ; в - элемента И-НЕ; г -элемента И ЛИ-НЕ; д — элемента ИСКЛЮЧАЮЩЕЕ ИЛИ



Схемное обозначение буфера приведено на рис. 3.1,а, а ин­вертора — на рис. 3.1,6. Инвертор является весьма распростра­ненным элементом логических схем, поскольку входит в со­став других логических элементов, реализующих более слож­ные булевы функции. На схеме рис. 3.1 приведены по два схем­ных обозначения буфера и инвертора. Первое обозначение ис­пользуется в основном в англоязычной литературе, второе — в отечественной и рекомендовано ГОСТ.

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

Функция f5 носит название функции логического умноже­ния (конъюнкции), или функции И. Она реализуется с по­мощью логического элемента, называемого схемой И. Графическое обозначение этого элемента приведено на рис. 3.2,а. К особенностям работы элемента И относится то, что сигнал на его выходе, соответствующий логической единице, появля­ется только в том случае, если аналогичные сигналы присутст­вуют одновременно на его двух входах. Если же хотя бы на одном входе элемента И сигнал нулевой, выход также прини­мает значение 0. Понятие функции (схемы) И естественным образом расширяется на п переменных (входов).

Функция f6 носит название функции логического сложения (дизъюнкции), или функции ИЛИ. Она реализуется с помощью логического элемента, называемого схемой ИЛИ. Графическое обозначение элемента ИЛИ приведено на рис. 3.2,6. В отличие от схемы И на выходе элемента ИЛИ единичный сигнал появля­ется при наличии аналогичного сигнала на любом входе. И толь­ко если на обоих входах элемента ИЛИ присутствуют нулевые сигналы, на его выходе формируется тоже нулевой сигнал.Аналогичным образом вводится понятие и-входового элемен­та ИЛИ.