ДРУГИЕ ВОЗМОЖНОСТИ ПМ-ЭВМ
В этой главе мы рассмотрели расширение возможностей ПМ-ЭВМ в части клавиатуры и индикации, памяти, внешнего накопителя и ТВ-дисплея. Обслуживание всех этих устройств осуществлялось программным путем, без значительного усложнения схемы самой ПМ-ЭВМ и ее устройств ввода/вывода. Программное обслуживание внешних устройств со стороны центрального процессора требует больших затрат машинного времени за счет исполнения основной программы и снижает производительность вычислительной системы. Использование прерываний, прямого доступа к памяти (ПДП) и программируемых периферийных микросхем позволяет повысить производительность и гибкость вычислительной системы. Периферийные программируемые микросхемы являются специализированными периферийными процессорами, берущими на себя часть задач центрального процессора. При этом техническая сложность системы зачастую не возрастает или даже уменьшается.
Отечественной промышленностью выпускается широкая номенклатура периферийных программируемых микросхем, со-гласуемых с МП типа КР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, ВЗ; в Н — из ячейки, ад- |
|
|
рес которой на единицу больше |
|
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А-М