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

         

ОСНОВНЫЕ СВЯЗИ И СТРУКТУРА ШИН


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

Рис. 4.2. Упрощенная архитектура ЭВМ с тремя шинами

Типовые связи в архитектуре ЭВМ с тремя шинами в общем случае будут иметь вид, представленный на рис. 4.2, если в ка­честве основных функциональных блоков машины использовать микропроцессорный блок (МБ), ОЗУ, ПЗУ и порты ввода/вы­вода. Линии шин адреса (ША) и управления (ШУ) являются однонаправленными [Здесь не рассматривается режим прямого доступа к памяти]. В них сигналы протекают в одном направ­лении — от центрального процессорного элемента ко всем остальным блокам. Шина адреса является 16-разрядной. Число линий шины управления определяется составом сигналов, фор­мируемых системным контроллером.

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

В отличие от ША и ШУ шина данных (ШД) является шиной двунаправленной.
Данные по линиям шины могут передаваться от микропроцессора к какому-нибудь устройству микро-ЭВМ либо пересылаться в МП от какого-то устройства, доступ к ко­торому обеспечивают сигналы адресной шины.

Естественно, что в каждый момент времени данные могут передаваться лишь в одном направлении, определяемом режи­мом работы микропроцессора. К основным режимам работы МП можно отнести: запись данных в память машины; чтение данных из памяти машины; пересылку данных в устройство ввода/вы­вода; чтение данных с устройства ввода/вывода; выполнение операций с содержимым внутренних регистров микропроцес­сора.

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

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

1.  Микропроцессор формирует адрес, по которому хранится код операции команды, переводя в соответствующее состояние шину адреса.

2. Код операции считывается из памяти по сформированному адресу и пересылается в микропроцессор.

3.  Команда дешифрируется (идентифицируется) микропро­цессором.

4. Микропроцессор "настраивается" на выполнение одного из перечисленных выше пяти основных режимов в соответствии с результатами дешифрирования считанного из памяти кода команды.

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

Перейдем теперь к окончательному оформлению функ­циональной схемы ПМ-ЭВМ.



ПОДГОТОВКА ПМ-ЭВМ К РАБОТЕ




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

Если предполагается эксплуатировать ПМ-ЭВМ в стационар­ных условиях класса или аудитории, то желательно конструк­тивно оформить ее в виде отдельного стенда, на котором долж­ны быть жестко закреплены все узлы и устройства с аккуратно выполненными связями между ними с помощью кабелей наи­меньшей возможной длины. При этом можно пользоваться либо лабораторными источниками питания, либо встроенными в стенд автономными. ПМ-ЭВМ потребляет (без дополнительных пери­ферийных устройств) от источника + 5 В примерно 1,3 А, от источника + 12 В примерно 30 мА и от источника -5 В примерно 30 мкА. Желательно иметь некоторый, например двукратный, запас по источникам питания, имея в виду подключение допол­нительной памяти, периферийных микросхем и устройств. В переносном варианте ПМ-ЭВМ легко размещается вместе с источниками питания в небольшом чемоданчике размерами ЗбОх 250х 80 мм и массой не более 3 кг.

После включения ПМ-ЭВМ переведите переключатель К18 в положение АВТОМАТ и нажмите кнопку СБРОС. После от­пускания кнопки СБРОС на индикаторах портов 001 и 000 высветится адрес начальной ячейки ОЗУ (014Q OOOQ), а на индикаторах порта 002 — содержимое этой ячейки. Нажимая кнопку И, убедитесь, что адрес, индицируемый портами 001 и 000, при каждом нажатии увеличивается на единицу. Снова нажмите кнопку СБРОС и убедитесь, что цифровые клавиши функционируют нормально, т. е. при каждом нажатии индици­руемое портом 002 число сдвигается на три двоичных разряда влево и освободившееся место заполняется числом, соответст­вующим нажатой клавише.
Убедитесь также, что при нажатии кнопок СБ или МБ информация, индицируемая портом 002, перемещается в порты 001 или 000 соответственно. Снова на­жмите и отпустите кнопку СБРОС и переведите переключатель К18 в положение ШАГ. Порт 002 индицирует состояние шины данных, соответствующее исполнению машинного цикла одной из команд программы-монитора от адреса OOOQ 220Q до OOOQ 251Q. При нажатии кнопки К17 МАШИННЫЙ ЦИКЛ последовательно исполняются команды между данными адре­сами. Этот процесс повторяется неограниченно долго — до тех пор, пока не будет нажата какая-либо из кнопок клавиатуры от К1 до К16, и тогда произойдет переход к подпрограмме временной задержки. Снова нажмите и отпустите кнопку СБРОС. Порт 002 индицирует код 303Q. Это код команды JMP М1, команды программы-монитора, находящейся по адресу OOOQ OOOQ. Последовательно нажимая кнопку К17 МАШИННЫЙ ЦИКЛ, можно проследить исполнение программы-монитора по машинным циклам. Просмотреть по шагам исполнение рабочей программы можно только в том случае, если она циклическая. Тогда переключатель К18 первоначально должен находиться в положении АВТОМАТ. Нажимаем и отпускаем кнопку СБРОС, вводим начальный адрес рабочей программы в соответствии с инструкцией (§ 7.4), нажимаем кнопку П и переключаем К18 в положение ШАГ. Порт 002 индицирует состояние шины дан­ных, соответствующее исполнению машинного цикла одной из команд рабочей программы. При нажатии кнопки К17 последо­вательно исполняются команды рабочей программы. Правиль­ность их исполнения проверяется по индикаторам порта 002. Не забывайте перед началом работы перевести переключатель К18 в положение АВТОМАТ и нажать кнопку СБРОС.



Появление микропроцессоров сыграло важную роль


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


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


Главы 1-4, а также приложение 1 (система команд микро-процессора  КР580ВМ80А) написаны В.Н. Захаровым, гл. 5- 7 написаны А. Л. Дудко, а гл. 8-10 - Л. Н. Буреевым. Принци­пиальная электрическая схема описываемой микро-ЭВМ (при­ложение 2) разработана А. Л. Дудко, а описываемые схемы сопряжения микро-ЭВМ с дополнительными внешними устрой­ствами (в том числе с бытовыми телевизором и магнитофо­ном) , а также схема статического аппаратного эмулятора разра­ботаны Л. Н- Буреевым. Предисловие к книге написано автора­ми совместно.
Авторы позволяют себе надеяться, что книга окажется полез­ной не только будущим конструкторам микро-ЭВМ, но и всем тем, кто стремится расширить свои знания в области примене­ния микропроцессорной техники.
Авторы выражают признательность рецензенту канд. техн. наук В. Ф. Корнюшко и редактору проф. Д. А. Поспелову за доброжелательную критику и замечания, которые способство­вали улучшению содержания и стиля книги.
Все замечания по содержанию книги, методике изложения, а также все предложения по усовершенствованию схемы и конструкции описываемой машины авторы примут с благо­дарностью. Пожелания и замечания просьба направлять по адресу: 113114, Москва, М-114, Шлюзовая наб., 10, Энергоатомиздат.
Авторы

ПРОГРАММА-МОНИТОР


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

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

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

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


Итак, первая команда монитора, расположенная по адресу 000000Q, - команда безусловного перехода JMP Ml, которая передает управление команде, расположенной по адресу 000070Q. Команда JMP Ml занимает три байта. Байты с 000 003 Q по 000 067 Q не используются. Эту область ПЗУ следует оставить незапрограммированной, так как она может понадо­биться для расширения возможностей микро-ЭВМ по работе с прерываниями. Под меткой Ml (по адресу 000070Q) находит­ся команда LXI SP, 010000Q. Эта команда загружает константу 010000Q в указатель стека (SP), чтобы он указывал на первую несуществующую ячейку ОЗУ. Тогда при первом занесении данных в стек (ячейки которого располагаются в ОЗУ) SP будет увеличен на единицу и будет указывать последнюю ячей­ку физически существующего ОЗУ, куда и поместятся данные. При дальнейших обращениях стек будет "расти" от старших адресов памяти к младшим при записи в него и "уменьшаться" при считывании. Если пользователь далее будет правильно ис­пользовать команды записи и считывания (их число должно быть одинаковым), никогда не произойдет ошибки обращения к стеку. Обратим здесь внимание на то, что восьмеричная кон­станта, записанная в ассемблерной строке под меткой Ml, при­обрела другую кодировку при записи в память в ячейки 000071Q и 000 072 Q. Чтобы понять, что произошло при пере­ходе от записи на ассемблере к реальному расположению кон­станты в памяти, запишем сначала эту константу в двоичном коде: 010000Q равняется 0001000000000000В. Если теперь разбить это 16-разрядное двоичное число на два байта, то полу­чится 00010000В и 00000000В, или в восьмеричной системе 020Q и OOOQ. Эти числа и записаны в ячейки с адресами 000 072 Q и 000071Q соответственно. Этот перевод константы от той формы, в которой она записана на ассемблере, к реаль­ному расположению в памяти будет встречаться еще во многих командах монитора.

Следующая команда LXI Н, 006 000 Q загружает пару регист­ров H-L константой 006 000Q.


Эта константа является адресом первой ячейки ОЗУ. Загрузка SP и H-L начальными значениями выполняется только один раз при входе в монитор (после сиг­нала RESET). В дальнейшем эта пара регистров будет использо­ваться для хранения адреса ячейки памяти, с которой в данный момент работает программист.

Итак, SP установлен таким образом, что поле стека будет находиться в старших адресах ОЗУ, а в H-L находится адрес первой ячейки ОЗУ. Следующие семь команд, занимающие ячейки с 000076Q по 000110Q, служат для того, чтобы вы­светить на индикаторах адрес ячейки памяти, с которой в на­стоящее время работает программист, и ее содержимое. Коман­да М2: MOV С, М (адрес 000 076 Q) переписывает данные из ячейки, адрес которой хранится в H-L (при первом проходе данного места программы это адрес первой ячейки ОЗУ), в ре­гистр С. Далее команда MOV A, H переписывает данные из регистра Н в аккумулятор, чтобы с помощью следующей команды OUT 001Q вывести ее на индикаторы с адресом 001Q. Данные переписываются в аккумулятор перед их выводом этой командой (в двух последующих аналогичных случаях применяется команда OUT OOOQ и OUT 002Q), потому что команда OUT может переслать в устройство вывода только содержимое аккумулятора. После выполнения команды OUT 001 Q на соответствующих индикаторах высветится содер­жимое регистра Н. Каждый светодиод, которому соответствует единица в каком-либо разряде регистра Н, загорится, а каждый светодиод, которому соответствует нуль в каком-либо разря-пе Н погаснет. Аналогично на светодиодах порта OOOQ высве­тится содержимое регистра L (команды MOV A, L и OUT OOOQ) и порта 002 Q - регистра С (команды МЗ: MOV А, С и OU 1 00?Q) После этого выполняется команда М4: CALL SKL, кото­рая вызывает подпрограмму SKL, обслуживающую клавиатуру. Прежде чем переходить к описанию этой подпрограммы, опишем еще одну подпрограмму DL, которая вызывается из подпро-граммы SKL.

Подпрограмма DL служит для задержки выполнения про­граммы на 10 мс.


Такие задержки часто необходимы при рабо­те с внешними устройствами, быстродействие которых значи­тельно меньше, чем у микро-ЭВМ. Поэтому эта подпрограмма, находящаяся и используемая в мониторе, написана таким обра­зом что сохраняет значение всех регистров и ячеек памяти во время своей работы. Она может быть вызвана из других про­грамм пользователя. Подпрограмма DL начинается с ячейки 000 277 Q Команды PUSH PSW и PUSH D переписывают в стек содержимое аккумулятора, регистра состояний и пары ре­гистров D-E для того, чтобы освободить эти регистры и исполь­зовать далее для своей работы, а перед выходом из подпрограм­мы восстановить их старое содержание. Затем пара регистров D-E загружается с помощью команды LXI D, 001 016Q констан­той 001016Q. Следующие пять команд образуют цикл. Коман­да N:DCX D уменьшает содержимое пары регистров D-E, вычи­тая из хранящегося в них двоичного числа единицу. Затем стар­ший байт пары D-E командой MOV A, D переписывается в акку­мулятор Далее команда ORA E выполняет поразрядно логиче­скую операцию ИЛИ над содержимым аккумулятора и регист­ра Е и результат этой операции записывается в аккумулятор, при этом если содержимое А и Е (или D и Е) не равно нулю, сбрасывается флаг признака нуля результата Z. Это приводит к тому что следующая команда JNZ N (адрес 000 307 Q) осу­ществляет переход к метке N (адрес 000304Q) и фрагмент программы от метки N до команды JNZ N (или, что то же са­мое, от адреса 000304Q до 000311Q) будет повторяться до тех пор пока в обоих регистрах D и Е не образуются нули. Следова­тельно этот фрагмент программы выполняется 001016Q раз. Обозначим буквой N с соответствующим индексом число машинных тактов определенной команды. Тогда число тактов при однократном выполнении этого фрагмента N0 =Ndcxd + + Nmova,d+Norae+Njnzn = 5 + 5 + 4+10= 19.

Так как длительность одного такта при использовании квар­цевого резонатора на частоту 9 МГц равняется 1 мкс (см. гл. 6), время выполнения этого фрагмента 19 мкс, а чтобы выполнить его 001 016Q раз, нужно 9994 мкс.


Следовательно, выполнение этой программы задерживает выполнение программы, вызвав­шей ее, примерно на 10 мс. После того как выполнено 001 016 Q циклов и содержимое D и Е равно нулю, флаг Z не устанавлива­ется командой ОКА Е и командой JNZ N не передает управление к метке N. Тогда выполняются команды POP D и POP PSW, которые восстанавливают содержимое пары регистров D-E, аккумулятора и слова состояний. Затем команда RET передает управление команде, следующей за той командой CALL DL, которая вызвала эту подпрограмму.

Рассмотрим теперь подпрограмму SKL. Эта подпрограмма обеспечивает работу клавиатуры микро-ЭВМ. Она располагается в области ПЗУ с адресами 000 177Q - 000 276Q. При ее вызове командой CALL SKL управление передается команде, распола­гаемой по адресу 000177Q. Команда SKL: MVI А, 000Q загру­жает в аккумулятор OOOQ, а следующая команда OUT 003Q записывает содержимое младших четырех битов аккумулятора, т. е. 0000В, в четыре триггера микросхем К155ТМ7 (см. микро­схему D22 на рис. 7.7). Следовательно, на выходах триггеров этой микросхемы (выводы 16, 15, 10, 9) устанавливаются ну­ли. При этом если нажать хотя бы одну из кнопок К1 — К16, то на соответствующем входе микросхемы К589АП16 (D23) установится также нуль. Далее следующая команда М5: IN 003Q переписывает в четыре младших бита аккумулятора те логиче­ские состояния, которые в момент выполнения этой команды присутствуют на входах микросхемы D23. Затем команда ANI 017Q путем выполнения логической операции И записы­вает в старшие четыре разряда аккумулятора нули, а младшие четыре разряда оставляет такими, какие они были. После этого команда CPI 017Q сравнивает содержимое аккумулятора с кон­стантой 017Q (00001111В). В результате этого сравнения в ре­гистре состояний процессора будет установлен флаг нулевого результата, если при выполнении команды М5: IN 003Q на входах микросхемы D23 (выводы 4, 7, 9, 12) были единицы, т. е. ни одна кнопка К1-К16 не была нажата. Если хотя бы одна из кнопок была нажата, то флаг нулевого результата после сравнения с 017 Q не будет установлен и следующая команда условного перехода JNZ М5 вызовет переход к метке М5.


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

Прежде чем рассматривать дальше работу подпрограммы, обратим внимание на тот факт, что при нажатии кнопок К1-К16 происходит дребезг контактов, рассмотренный в гл. 6. Там же приводилась специальная схема, позволяющая устра­нить это явление. Дребезг контактов (см. рис. 6.14) приводит к тому, что на входе D23 вместо идеального перехода из нуля в единицу при размыкании контактов кнопки и из единицы в нуль при замыкании контактов кнопки имеется серия пере­ходов. Каждый такой переход может быть воспринят как но­вое нажатие на кнопку, поэтому необходимо принять специаль­ные меры, чтобы этого не произошло. Можно было бы снаб­дить каждую кнопку электронной схемой для подавления дре­безга контактов (см. рис. 6.13), но можно воспользоваться программным методом, описываемым ниже. В подпрограмме для этого после команды JNZ M5 идет команда CALL DL, которая вызывает подпрограмму временной задержки. Выпол­нение программы задерживается на 10 мс. За это время дре­безг контактов заканчивается.

Следующий фрагмент программы "ожидает" нажатия кноп­ки и вводит код нажатой кнопки в аккумулятор. В качестве рабочих регистров будут использоваться пара D-E и аккумуля­тор, поэтому командой PUSH D содержимое пары регистров D-E сохраняется в стеке. Следующие две команды М8: MVI D, 003Q и MVI Е, 376Q загружают в регистры D и Е коды 003 Q и 376Q соответственно. Затем команда М7: MOV A, E переписывает содержимое регистра Е в аккумулятор, а команда OUT 003Q переписывает четыре младших разряда аккумулятора в триг­геры микросхемы D22.


После этого команда RLC сдвигает содержимое аккумулятора на один бит влево, а команда MOV Е, А переписывает его в регистр Е. Содержимое регистров и состояние выходов триггеров микросхемы D22 в двоичном коде в этот момент представлено в первой строке табл. 7.5.

Та б л и ц а 7.5

Номер строки, номер проход.

Содержимое регистров

Состояние выходов триггеров D22

 

D

Е

9

10

15

16

1

00 000 01 1

11

111

101

1

1

1

0

2

00 000 010

11

111

011

1

1

0

1

3

00 000 001

11

110

111

1

0

1

1

4

00 000 000

11

101

111

0

1

1

1

Далее команда IN 003Q вводит в аккумулятор состояния входов микросхемы D23, команда ANI 017Q устанавливает в старших четырех разрядах аккумулятора нули, а команда CPI 017Q сравнивает его содержимое с константой 017Q и уста­навливает флаг нуля результата, если содержимое равно 017Q. Это произойдет в том случае, если ни одна из кнопок К4, К8, К12, К16 не нажата. Рассмотрим этот вариант. Тогда следую­щая команда JNZ Мб не осуществляет условный переход (так как установлен флаг нуля) и выполняется команда OCR D, которая уменьшает содержимое регистра D на единицу. Затем содержимое регистра D пересылается в аккумулятор командой MOV A, D и сравнивается командой CPI 377Q с константой 377 Q, и поскольку равенства нет (так как в регистре D код 002Q), команда JNZ М7 осуществляет переход к команде М7: MOV А, Е и фрагмент программы от М7: MOV A, E до JNZ M7 повторяется. Этот фрагмент будет выполняться 4 раза (при условии, что ни одна кнопка не нажата). Состояния выходов триггеров микросхемы D22 и содержимое регистров D и Е после выполнения команды MOV E, А (адрес 000230Q) ука­заны в табл. 7.5 для каждого прохода.

Во время четвертого прохода содержимое регистра станет равным 377Q и команда JNZ M7 (адрес 000 246Q) не осущест­вит переход к М7, а будет выполняться следующая за ней -команда безусловного перехода JMP M8, в результате чего команды М8: MVI D, 003Q и MVI E, 376Q загрузят регистры D и Е и фрагмент от М7: MOV A, E до JNZ M7 повторится опять 4 раза.


Этот процесс будет повторяться до тех пор, пока не на­жата ни одна кнопка и на входах 4, 7, 9, 12 микросхемы D23 находятся высокие уровни, а следовательно, в аккумуляторе после выполнения команды ANI 017Q (адрес 000 233 Q) нахо­дится код 017Q. Если какая-либо кнопка нажата, то код в акку­муляторе не равен 017Q и команда JNZ Мб осуществляет переход к команде Мб: CALL DL, которая вызывает подпрограмму временной задержки для того, чтобы переждать дребезг контак­тов после нажатия кнопки. Значения кода в аккумуляторе после выполнения команды ANI 017Q в зависимости от кода на выходах триггеров микросхемы D22 и от того, какая нажата кнопка, приведены в табл. 7.6.

Таблица 7.6

 

Выход

 

Вход мик-

 

Номер строки

триггера микро- Код в ре-схемы гистре D В22,на

Нажатая кнопка

росхемы D23, на котором низкий

Код в аккуму­ляторе

 

котором

 

уровень

 

 

низкий

 

 

 

 

уровень

 

 

 

1

9 00 000 000

К1

4

00001 ПО

 

 

К5

7

00001 101

 

 

К9

9

00001 011

 

 

К13

12

00000 111

2

10 00000001

К2

4

00001 ПО

 

 

Кб

7

00 001 101

 

 

К10

9

00001 011

 

 

К14

12

00 000 1 1 1

3

15 00000010

КЗ

4

00001 110

 

 

К7

7

00 001 101

 

 

К11

9

00001 011

 

 

К15

12

00 000 1 1 1

4

16 00000011

К4

4

00001 110

 

 

К8

7

00 001 101

 

 

К12

9

00001 011

 

 

К16

12

00000 111

После выполнения подпрограммы DL команда М10: RRC сдвигает содержимое аккумулятора на один бит вправо, а са­мый младший бит при этом попадает в флаг переноса. Следую­щая команда JNC M9 осуществляет условный переход, если флаг переноса не установлен (перенос С раве« нулю). Рассмот­рим вариант, когда перенос не равен нулю (строки 2 — 4 табл. 7.5) и перехода к М9 не происходит.


Тогда следующая команда PUSH PSW сохраняет содержимое аккумулятора и сло­во состояний микропроцессора в стеке для того, чтобы можно было дальше использовать аккумулятор. Команда MOV A, D переписывает содержимое регистра D в аккумулятор, а команда ADI 004Q прибавляет к содержимому аккумулятора константу 004Q. После этого команда MOV D, А переписывает результат сложения в регистр D, а команда POP PSW восстанавливает со­держимое аккумулятора и слово состояний микропроцессора, считывая их из стека. Далее команда безусловного перехода JMP M1C осуществляет переход к команде М10: RRC, т. е. повторяет фрагмент программы, начиная с М10. Теперь ясно, что в зависимости от кода в аккумуляторе (табл. 7.6) фрагмент программы от команды JNC M9 (адрес 000 260Q) до командь: JMP M10 (адрес 000 271Q) будет выполняться нуль раз для пер­вой строки таблицы, 1 раз — для второй. 2 раза — для третьей и 3 раза — для четвертой. Это значит, что к коду в регистре (см, табл. 7.6} соответствующее число раз прибавится констан­та 004Q. Следовательно, в регистре D после выполнения коман­ды JNC M9 будет содержаться код, зависящий от нажатой кноп­ки. Все возможные коды перечислены в табл. 7.7

Таблица 7.7

Нажатая кнопка

Код в регистре D в двоичной системе

Код в регистре D в восьмеричной системе

Мнемоническое название кноп­ки

К1

00 000 000

000

0

К2

00 000 001

001

i

КЗ

00000010

002

2

К4

00000011

003

3

К5

00000 100

004

4

Кб

00 000 101

005

5

К7

00 000 110

006

6

К8

00 000 111

007

7

К9

00 001 000

010

СБ

К10

00 001 001

011

МБ

К11

00001 010

012

К

К 12

00001 011

013

П

К13

00 001 100

014

-

К14

00001 101

015

=

К15

00001 110

016

=

К16

00 001 111

ОП

=

После перехода в результате выполнения команды JNC Мс-выполняется команда М9: MOV A, D, которая переписывав-: содержимое регистра D в аккумулятор.


Затем командой POP Г восстанавливается то содержание регистра D, которое было до начала работы подпрограммы SKL. На этом работа подпро­граммы заканчивается и команда RET загружает в счетчик команд адрес команды, следующей за той, которая вызвала переход к подпрограмме. Заметим, что подпрограммы SKL и DL не портят при своей работе содержимое каких-либо регистров. Результат своей работы — код, соответствующий нажатой кнопке, — подпрограмма SKL возвращает в аккумулятор. Итак, была нажата кнопка, подпрограмма SKL выработала код, соответствующий этой кнопке, и поместила его в аккуму­лятор. Работа монитора продолжается с команды CPI 010Q (адрес 000113Q). Эта команда сравнивает содержимое акку­мулятора с константой 010Q. Это сравнение происходит путем вычитания из кода, хранящегося в аккумуляторе, кода 010Q (по правилам двоичного вычитания), хотя содержимое акку­мулятора не портится. При этом если значение двоичного числа, которое выражено кодом, содержащимся в аккумуляторе, меньше 010Q (или 8D), то по правилам двоичного вычитания происходит заем и устанавливается флаг переноса С, если боль­ше или равно 010Q - то флаг не устанавливается. Затем коман­да JNCM11 осуществляет переход к метке МП (адрес 000134Q), если код нажатой кнопки больше или равен 010Q, если нет, то выполняются команды, следующие за JNC МП. Коды, меньшие 010Q, соответствуют кнопкам К1-К8 и обра­батываются МОНИТОРОМ ПО-ОСОбому, потому что эти кнопки кодируют восьмеричные цифры от 0 до 7 (см. табл. 7.7) для ввода в микро-ЭВМ. Остальным кнопкам присвоены специаль­ные функции, которые выполняются монитором (см. ниже).

Рассмотрим, как происходит ввод восьмеричного числа в микро-ЭВМ. Напомним, что регистр С используется для вре­менного хранения введенного числа до того момента, как онс будет переписано в память по адресу, хранящемуся в паре регистров H-L. После того как была нажата одна из кнопок К1-К8, программа переходит к команде MOV В, А (адрес 000 120Q), которая переписывает код нажатой кнопки из акку­мулятора в регистр В.


Затем код, содержащийся в регистре С ( этот код был высвечен на индикаторах порта OOOQ), перепи­сывается в аккумулятор командой MOV А, С и сдвигается тремя командами RAL на три бита влево. После этого с по­мощью команды ANI 3 70Q очищаются три младших бита, а с по­мощью команды ORA В на эти места записываются новые трк разряда кода нажатой кнопки. В результате в аккумуляторе готов новый код для индикации на индикаторах порта OOOQ, Далее содержимое аккумулятора переписывается в регистр С командой MOV С5 А, а затем команда JMP M3 осуществляет переход к фрагменту программы, реализующему индикацию.

На индикаторе порта OOOQ пользователь видит следующее. Если до нажатия кнопки состояния индикаторов были ХО — Х7 (рис. 7.10,д), то после нажатия эти состояния сдвигаются на три индикатора влево (причем Х5 — XV пропадают), а на месте ХО, XI, Х2 высвечивается код вновь нажатой кнопки (рис. 7.10,6, табл. 7.8).



Рис. 7.10. Состояния индикаторов порта вывода с адресом OOOQ:

а - до нажатия какой-либо из кнопок 0-7; б - после нажатия какой-либо из кнопок 0 — 7

Следовательно, нажав три необходимые кнопки из кнопок К1-К8, пользователь может набрать на восьми индикаторах порта OOOQ любое нужное ему двоичное число длиной 1 байт.

Рассмотрим теперь, какие специальные функции и как выпол­няются монитором.

Таблица 7.8

 

Кнопка

 

Код в разрядах

 

Y2

Y1

YO

К1

0

0

0

К2

0

0

1

КЗ

0

1

0

К4

0

1

1

К5

1

0

0

Кб

1

0

1

К7

1

1

0

К8

1

1

1

Коды всех кнопок, вызывающих выполнение специальных функций, больше или равны 010Q. Поэтому команда JNC М11 (адрес 000115Q) будет осуществлять переход к команде МИ: CPI 010Q, которая сравнивает код нажатой кнопки с констан­той 010Q. Если код не равен 010Q, то команда JNZ M12 вызовет переход к Ml2, если равен, то это значит, что нажата кнопка К9 (СБ) и произойдет следующее: команда MOV H, С перепишет содержимое регистра С в регистр Н, а затем команда JMP M2 вызовет безусловный переход к М2.


Смысл этих действий в том, что байт, хранящийся в регистре С, станет старшим бай­том адреса той ячейки, с которой работает пользователь. Этот новый старший байт адреса высветится на индикаторах порта 002Q, а содержимое ячейки памяти с новым адресом, составлен­ным из нового старшего байта и старого младшего байта адреса, высветится на индикаторах порта OOOQ. Таким образом, функ­ция, выполняемая монитором при нажатии на кнопку К9 (СБ — старший байт), — это формирование старшего байта нового адре­са. Его значение может быть предварительно введено с помощью кнопок К1 - К8 (цифры 0 — 7) в регистр С и высвечено на инди­каторах порта OOOQ. На индикаторах пользователь видит следую­щее (рис. 7.11). Показания индикаторов порта OOOQ после нажа­тия СБ перемещаются на индикаторы порта 002Q (рис. 7.11,6), на индикаторах порта OOOQ после нажатия СБ высвечивается содержимое ячейки памяти с адресом, старший байт которого высвечен на индикаторах порта 002Q, а младший — порта 001Q.

Аналогичную функцию, только по формированию младшего байта адреса, выполняют кнопка К10 {МБ — младший байт) и связанный с ней фрагмент программы от команды М12: CPI 011Q до JMP M2. При нажатии на эту кнопку содержимое регистра С, высвеченное на индикаторах порта OOOQ, переписы­вается в регистр L, становясь младшим байтом адреса той ячей­ки, с которой работает пользователь, и высвечивается на инди­каторах порта 001Q (рис. 7.12). На индикаторах порта OOOQ при этом высвечивается содержимое ячейки памяти с адресом, составленным из нового младшего байта и старого старшего байта.

Следующая кнопка К11 (И — индикация содержимого ячейки памяти и его изменение) выполняет две функции: просмотр содержимого ячеек памяти и изменение содержимого на новое в случае необходимости. При нажатии на эту кнопку подпро­грамма SKL вырабатывает код 012Q, поэтому срабатывают команды условного перехода JNZ M12 и JNZ M13. После этого команда М13: CPI 012Q устанавливает флаг равенства нулю и команда JNZ M14 не осуществляет переход к М14.


Затем коман­да MOV M, С переписывает содержимое регистра С (это содер­ жимое пользователь видит на индикаторах порта OOOQ) в ячейку памяти, адрес которой содержится в паре регистров H-L (этот адрес пользователь видит на индикаторах портов 002Q и 001Q). Следующая команда INX Н увеличивает содержимое Н-Ьна еди­ницу, а затем происходит безусловный переход (команда JMP М2) на фрагмент программы, который высвечивает на индикаторах адрес и содержимое следующей по порядку возрастания двоичных адресов ячейки памяти. Теперь ясно, что если нажи­мать только кнопку К11, то можно последовательно просматри­вать содержимое ячеек памяти в порядке возрастания их адре­сов (адрес высвечивается на индикаторах порта 002Q и 001Q, а содержимое — на OOOQ) ; но если между нажатием на кнопку К11 с помощью кнопок К1-К8 ввести в регистр С и на инди­каторы порта OOOQ какое-либо двоичное число, то последую­щим нажатием на К11 можно переписать это число в текущую ячейку памяти и перейти к индикации адреса и содержимого следующей ячейки памяти.



Рис. 7.11. Состояния индикаторов портов вывода:

а - до нажатия кнопки СБ; б - после нажатия кнопки СБ

Кнопка К12 (П — пуск программы) выполняет функцию запуска программы, записанной пользователем в ОЗУ с адреса, который содержится в паре регистров H-L и высвечен на инди­каторах портов 002Q и 001Q. При нажатии этой кнопки про­грамма вырабатывает код 013Q и команды JNZ Ml2, JNZ M13, JNZ M14 осуществляют переход к М14: CPI 013Q. Эта команда устанавливает флаг равенства нулю, команда JNZ M4 не осу­ществляет переход к М4, и следующая команда PCHL загру­жает в счетчик команд содержимое пары регистров H-L, что вызывает переход к выполнению команды, расположенной по этому адресу.



Рис. 7.12. Состояния индикаторов портов вывода:

а - до нажатия кнопки МБ; б - после нажатия кнопки МБ

Кнопки К13-К16 не задействованы, и монитор не выполняет никаких функций при нажатии на них. Эти кнопки оставлены для дальнейшего расширения функций монитора.



Программа-монитор:

000000303                                                  JMPM1

000 001 070

000 002 000

000070061                                 Ml:            LXISP, 010 OOOQ

000071 000

000 072 020

000073041                                                     LXIH.0060000

000 074 000

000 075 004

000076 116                                   М2:            MOV С М

000077174                                                     MOV A, M

000100323                                                     OUT 0010

000 101 001

000102175                                                     MOVA.L

000103323                                                     OUT 0000

000 104 000

000105171                                   МЗ:            MOV А, С

000106323                                                     OUT 002Q

000 107 002

000110315                                   М4:            CALL SKL

000 111 175

000112000

000113376                                                     СР1 010Q

000 114 010

000115322                                                    JNCM11

000 116 134

000117 000

000120107                                                    MOVE, A

000121 171                                                     MOV А, С

000122027                                                     RAL

000 123 027                                                     RAL

000124027                                                     RAL

000125346                                                     ANI 370Q

000 126 370

000127260                                                     OR А В

000130117                                                    MOV С, А

000 131 303                                                     JMPM3

000 132 105

000 133 000

000134376                                   Mil:          CPI 010Q

000 135010

000136302                                                     JNZM12

000137 145

000 140 000

000 141 141                                                     MOVH, С



000142303                                                     JMPM2

000 143 076

000 144 000

000145376                                   M12:          CPI011Q

000 146 Oil

000147302                                                    JNZM13

000 150 156

000 151 000

000152151                                                     MOVL, С

000153303                                                     JMPM2

000 154 076

000 155 000

000156376                                   M13:          CPI 012Q

000 157 012

000160302                                                     JNZM14

000 161 170

000 162 000

000163161                                                     MOVM, С

000 164 043                                                     INX H

000 165 303                                                     JMPM2

000 166 076

000 167 000

000170376                                   M14:          CPI 013Q

000 171 013

000172302                                                    JNZ M4

000 173 110

000 174 000

000175351                                                     PCHL

000176000

000177076                                   SKL:           MVI A, OOOQ

000 200 000

000201323                                                     OUT003Q

000 202 003

000203333                                   M5:            IN 003Q

000 204 003

000205346                                                     ANI 017Q

000206 017

000207376                                                     CPI017Q

000210 017

000 211 302                                                     JNZM5

000 212 203

000 213 000

000214315                                                     CALLDL

000 215 277

000 216 000

000217325                                                     PUSH D

000 220 026                                   M8:            MVI D, 003Q

000 221 003

000222036                                                     MVIE, 376Q

000 223 376

000224173                                   M7:            MOV A, E



000225323                                                     OUT003Q

000 226 003

000 227 007                                                     RLC

000230137                                                     MOVE, A

000231333                                                     IN003Q

000 232 003

000233346                                                     ANI017Q

000 234 017

000235376                                                     CPI017Q

000236 017

000 237 302                                                     JNZ M6

000 240 254

000 241 000

000 242 025                                                     DCR D

000 243 172                                                     MOV A, D

000 244 376                                                    CPI 377Q

000 245 377

000 246 302                                                    JNZ M7

000 247 224

000 250 000

000251303                                                     JMPM8

000 252 220

000 253 000

000254315                                   Мб:            CALL DL

000 255 277

000 256 000

000257017                                   M10:           RRC

000 260 322                                                    JNC M9

000261 274

000 262 000

000 263 365                                                     PUSH PSW

000264172                                                    MOV A, D

000 265 306                                                     ADI 004Q

000 266 004

000 267 127                                                    MOV D, A

000270361                                                     POP PSW

000271303                                                     JMPM10

000 272 257 000 273 000

000274172                                   M9:            MOV A, D

000275321                                                     POP D

000276311                                                     RET

000 277 365                                   DL:            PUSH PSW

000 300 325                                                     PUSH D

000301021                                                     LXID, 0010160

000302016 000303 002

000 304 033                                                     OCX D

000305 172                                                    MOV A, D

000 306 263                                                    ORA E

000 307 302                                                    JNZ N

000310304 000311 000

000312321                                                     POPD

000313361                                                     POP PSW

000314311                                                     RET

Теперь можно сформулировать инструкцию по работе на микро-ЭВМ.



ПРОГРАММИРОВАНИЕ ПМ-ЭВМ


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

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

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

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

Для реализации первых двух операторов (не считая Start) можно воспользоваться двухбайтовой командой MVI г, осущест­вляющей непосредственную загрузку в какой-либо регистр данных, содержащихся во втором байте команды (в данном случае - чисел OD). Для осуществления операции S = S + N можно воспользоваться командой ADD r, выполняющей сум­мирование содержимого какого-либо регистра с содержимым аккумулятора и запись результата в аккумулятор. Для выпол­нения операции N = N + 1 в машинном языке ПМ-ЭВМ преду­смотрена специальная команда INR г, осуществляющая увели­чение на единицу содержимого какого-либо регистра. Остается еще организовать в программе цикл с использованием услов­ного оператора. Для этой цели подошла бы команда JNZ, осу­ществляющая переход в программе при отсутствии нуля в ре­зультате какой-либо предшествующей переходу операции (в на­шем случае — операции вычитания: 21 — N).


Однако этого можно и не делать, построив несколько иначе схему решения задачи. Вместо того чтобы суммировать последо­вательно увеличивающиеся числа от О D до 20 D, можно суммиро­вать последовательно уменьшающиеся числа от 20 D до OD. Тогда содержимое регистра, хранящего число N, на некотором шаге выполнения программы обратится в нуль и этот результат можно будет использовать при организации условного перехода.

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

Шаг 1. Заносим число О D в аккумулятор (А).

Шаг 2. Заносим число 20 D в какой-нибудь регистр, напри­мер в регистр D.

Шаг 3. Суммируем содержимое регистров А и D.

Шаг 4. Уменьшаем содержимое регистра Она единицу.

Шаг 5. Если содержимое регистра Вне равно нулю, осущест­вляем переход к шагу 3; в противном случае переходим к сле­дующему шагу.

Ш а г 6. Переписываем содержимое регистра А в какой-ни­будь из портов вывода, например в порт Р0оо-

Ш а г 7. Конец работы программы.

Соответствующая схема представлена йа рис. 4.13,6.

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

Для размещения всей программы нам понадобятся 12 ячеек памяти с номерами от 014QOOOQ до 014Q013Q. В первые две ячейки с номерами 014 000 и 014 001 поместим оба байта первой команды MVI A OOOQ загрузки аккумулятора (регистра А) числом OD. При этом в первую ячейку поместим восьмеричный код команды 076, а во вторую — содержимое второго байта этой команды — восьмеричный код числа OD (число 000).


В сле­дующие две ячейки с номерами 014 002 и 014 003 поместим два байта следующей команды, загружающей регистр D десятич­ным числом 20. Восьмеричный код этой операции 026 будет на­ходиться в первой ячейке, а восьмеричный код 024 десятичного числа 20 - во второй и т. д. В последнюю ячейку с номером 014 013 поместим восьмеричный код 166 команды HLT, осу­ществляющей останов программы. В табл. 4.5 приведен полный текст составленной программы вместе с комментарием. При организации цикла использована специальная метка Ml, указы­вающая на операцию, которую следует выполнить, если содер­жимое регистра D не равно нулю.



Рис. 4.13. Схемы алгоритмов для задачи сложения первых 20 чисел

Таблица 4.5

Адрес ячейки

Код операции или содержи­мого второго или третьего байта

Мет­ка

Мнемокод

Комментарий

014 000

076

 

MVI A OOOQ

Загрузка регистра А числом OD

014 001

000

 

 

Число OD

014 002

026

 

MVI D 024Q

Загрузка регистра D числом 20 D

014003

024

 

 

Число 20 D

014 004

202

Ml:

ADDD

Сложение содержи­мого регистров А и D

014005

025

 

DCRD

Уменьшение на едини­цу содержимого ре­гистра D

014 006

302

 

JNZM1

Переход к метке М 1 при отсутствии нуля

014 007

004

 

 

Метка М 1 (адрес)

014 010

014

 

 

Метка М 1 (адрес)

014 011

323

 

OUT OOOQ

Вывод данных из ре­гистра А в порт рооо

014 012

000

 

 

Номер порта

014013

166

 

HLT

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

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

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


ПРОСТОЙ ГРАФИЧЕСКИЙ ДИСПЛЕЙ


Запоминающее устройство на 256 слов по 8 бит позволяет отображать 2048 точек на экране в виде сетки 64x32 элемента. В этом случае знакогенератор не требуется, поскольку каждый бит из памяти прямо отобража­ется без преобразования. Схема такого устройства индикации дана на рис. 10.9. Каждая точка формируется из восьми сосед­них горизонтальных строчек развертки.

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

Покажем, что, не используя практически никакой дополни­тельной аппаратуры, можно реализовать вывод поля памяти объемом 256 байтов (сетка 64x32 элемента) на экран обыч­ного осциллографа. Подключим к ПМ-ЭВМ схему, показанную на рис. 10.10. Здесь порт 000 служит для параллельной выдачи содержимого ячеек памяти. Сдвиговый регистр преобразует параллельный код в последовательный. Сигнал с выхода сдви­гового регистра может быть подан непосредственно на вход Z модуляции яркости осциллографа. Порт 001 служит для вы­вода синхроимпульса строчной развертки Н, а порт 002 — для вывода синхроимпульса кадровой развертки V. Кадровая и строчная развертки могут быть сформированы с помощью простых пассивных цепей непосредственно из соответствую­щих синхроимпульсов. Выдаваемые портами 000, 001 и 002 сигналы формируются с помощью следующей программы:

014 000 176                                   Ml: MOV A, M 7 - количество тактов


014 001 323                                                OUT,OOOQ10 014 002 000

014 003 167                                                MOV M, А 7

014 004 000                                               NOP           4

014 005 054                                               INR L 5

014 006 035                                                DCRE 5

014 007 302                                               JNZ,M1 10

014 010 000

014 011 014

Итого: 48 тактов



Рис. 10.9. Схема приставки для формирования графической информации на экране ТВ

Эта часть программы выводит в порт 000 очередной байт из памяти. Команды MOV M, А и NOP вставлены, чтобы полу­чить выраженную в тактах длительность этого фрагмента про­граммы кратной восьми. В итоге получаем 48 тактов. Это зна­чит, что стоящий на выходе сдвиговый регистр должен выда­вать очередной разряд числа через каждые 6 тактов, чтобы завершить выдачу всех восьми разрядов за 48 тактов. После восьми циклов прохождения первого фрагмента программы содержимое регистра Е станет равным нулю и начнет испол­няться следующий фрагмент программы, предназначенный для выдачи синхроимпульса строчной развертки, здесь же про­исходит и загрузка регистра Е:



Рис. 10.10. Схема приставки для формирования графической информации на экране осциллографа

014012257                           XRAA                                        4

014013323                           OUT.OOOQ                                  10

014 014 000

014015323                           OUT,001Q                                  10

014016 001

014017036                           MVIE, 010Q                               7

014 020 010

014 021 000                           NOP                                            4

014 022 000                           NOP                                            4

014 023 000                           NOP                                            4

014 024 000                           NOP                                            4



014 025 000                           NOP                                            4

014 026 000                           NOP                                            4

014 027 000                           NOP                                            4

014 030 000                           NOP                                            4

014031000                           NOP                                            4

014032057                           СМА                                            4

014033323                           OUT, 001Q                                  Ю

014 034 001

014035025                           DCRD                                         5

014036302                           JNZ,M1                                       Ю

014037 000

014040014                                                                           ---------------

Итого: 56.тактов

Этот фрагмент программы имеет продолжительность 96 так­тов, т. е. вдвое больше времени выдачи одного байта из памяти. Следовательно, общая продолжительность цикла строчной развертки составляет 48-8 + 96 = 480 тактов (т. е. 480 мкс). Количество строк определяется числом 32 (040Q), загружае­мым в регистр D следующим фрагментом программы:

014041257                         XRA, А                                     4

014042323                          OUT, 002Q                                10

014 043 002

014 044 026                           MVI D, 040Q                               7

014 045 040

014046041                           LXIH, ADM                                10

014 047 000

014050015

014051315                           CALLINP                                   17

014 052 X

014053 Y

014 054 057                           СМА                                           4

014055323                           OUT, 002Q                                  10

014 056 002

014057303                           JMP, Ml                                      10

014 060 000

014061 014

Итого: 72 + время исполнения ПП ввода IMP (3840 тактов)

В этом фрагменте происходит выдача синхроимпульса кадро­вой развертки и задается адрес начала массива информации, выводимой на дисплей. Отведя на обратный ход луча время, равное четверти длительности прямого хода луча для верти­кальной развертки, получим период кадровой развертки, рав­ный 480-32 + 480-8 = 19 200 мкс. Отсюда получаем частоту кад­ровой развертки, равную примерно 50 Гц, что нас вполне удов­летворяет. В последнем фрагменте программы, длящемся 3840 мкс, предусмотрен вызов ПП ввода информации в ОЗУ с клавиатуры или внешнего устройства для изменения картин­ки на экране дисплея. Эта ПП должна иметь строго определен­ную длительность, необходимую для стабильности параметров развертки. Если в этом промежутке времени исполняются дру­гие программы неизвестной длительности, надо организовать систему с внешними прерываниями.



РЕАЛИЗАЦИЯ ДИАЛОГОВОГО РЕЖИМА


Диалоговый режим реализует

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

014000041                                 Ml: LXI H, TAB

014001  110

014002  014

014003257                                 М2: XRA А

014 004 323                                             OUT, OOOQ

014005 000

014006323                                             OUT.001Q

014007 001

014010323                                             OUT, 003Q

014011 003

014012107                                             MOV В, А

014 013 117                                             MOVC, A

014 014 057                                             CMA

014015323                                             OUT, 002Q

014 016 002

014017176                                             MOV A, M

014 020 267                                             ORA A

014021312                                             JZ,M1

014 022 000

014023014

0140243-15                                 M3: CALL DL

014025 277

014 026 000

014027075                                             DCRA

014030302                                             JNZ, M3

014031 024

014 032014

014033323                                             OUT, 002Q

014034 002

014035333                                 M4: IN, 003Q

014 036 003

014037057                                             CMA

014 040 267                                             ORA A

014041312                                             JZ.M6

014042061

014 043 014


014044171                                             MOV А, С

014045323                                             OUT, OOOQ

014 046 000

014047170                                             MOV А, В

014050323                                             OUT, 001Q

014051 001

014052333                                 M5: IN, 003Q

014 053 003

014 054 057                                             CMA

014055267                                             ORA A

014056302                                             JNZ,M5

014 057 052

014 060014

014061315                                 M6: CALLDL

014062277

014 063 000

014064171                                             MOV А, С

014 065 074                                             INR A

014 066 047                                             DAA

014067117                                             MOVC, A

014070170                                             MOV А, В

014071316                                             ACI, OOOQ

014 072 000

014073047                                             DAA

014074107                                             MOVB.A

014075376                                             CPI,005Q

014076005

014077332                                             JC, M4

014 100035

014 101 014

014102043                                             INXH

014 103 303                                             JMP, M2

014 104 003

014 105 014

014110377                                             TAB:

014 111 200

014 112300

014 113 330

014 114000

После ввода программы нажмем кнопки СБРОС и П. Порт 002 высветит число 377Q (все единицы), а индикаторы портов 001 и 000 погашены. Через неизвестный оператору интервал времени индикаторы порта 002 гаснут. В этот момент оператор должен нажать любую (кроме СБРОС) кнопку клавиатуры. В портах 001 и 000 высветится выраженное в двоично-десятич­ном коде время задержки между погасанием индикаторов пор­та 002 и нажатием кнопки.


Порт 001 индицирует десятки и еди­ницы секунд (считая слева), а порт 000 — десятые и сотые доли секунды. После отпускания кнопки через заданный интервал времени индикаторы портов 001 и 000 гаснут, а индикаторы порта 002 снова загораются, чтобы погаснуть через неизвестный интервал времени. Если ни одна кнопка не нажата после погаса­ния индикаторов порта 002, через заданный интервал времени они снова загорятся. Если кнопка нажата до погасания индикато­ров, то портами 001 и 000 индицируется нулевая задержка, т. е. не загорается ни один индикатор.

Оценки времени реакции оператора (в секундах):

0,00 — 0,09 — ошибочное значение, Вы поторопились, попро­буйте снова;

0,10 — 0,14 — исключительная, почти фантастическая реакция;

0,15 — 0,19 — очень хорошая;

0,20 — 0,24 -нормальная;

0,25 — 0,29 -посредственная;

0,30 — 0,34 — плохая;

0,35 — 5,00 - Вы, вероятно, уснули.

Программа может быть использована как для оценки, так и для тренировки реакции. Время задержки гашения индикаторов порта 002 задается количеством циклов задержки, начинающих­ся с метки МЗ. В аккумулятор при каждом замере заносятся последовательно числа из таблицы, хранящейся в ячейках памя­ти, начиная с адреса, задаваемого командой LXIH. Длина табли­цы практически неограниченная. Если в таблице помещено число OOOQ, то при его занесении в аккумулятор на очередном шаге происходит возврат к началу программы и, следовательно, к началу таблицы. Цена младшего разряда, задающего задержку числа, равна задержке, вырабатываемой ПП DL, т. е. 10 мс. После того как индикаторы порта 002 погашены (команда по адресу 014Q 033Q) и до нажатия кнопки с помощью счетчика, организованного на регистровой паре В, подсчитывается коли­чество циклов обращения к ПП DL (команды, начиная с мет­ки Мб). В счетчиках используется команда DAA, поэтому ре­зультат получается в двоично-десятичном коде. При нажатии кнопки содержимое регистровой пары В выводится в порты 001 и 000. Счетчик циклов снова задействуется после отпуска­ния кнопки, и после достижения заданного числа циклов проис­ходит возврат к метке М2 программы, при этом регистровая пара Н инкрементируется, в результате чего при следующем замере в качестве параметра задержки извлекается следующее число из таблицы.Параметры, определяющие работу програм­мы, помещаются по следующим адресам: 014Q 001Q, 014Q 002Q — адрес начала таблицы; 014Q 076Q — время, в те­чение которого индикаторы порта 002 погашены; цена млад­шего разряда — около 1 с.

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

 

 

 

 

 

 

 

10

 



РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ


1. Нестеров П. В. Микропроцессо­ры 1. Архитектура и ее оценка. М.: Высшая школа, 1984.

2. Вайда Ф., Чакань А. Микро-ЭВМ: Пер. с венгер./ Под ред. В. В. Ста-шина. М.: Энергая, 1980.

3 Шаньгин В. Ф., Костин А. Е. Микропроцессоры 2. Организация вы­числительных процессов на микро-ЭВМ. М.: Высшая школа, 1984.

4.  Горячев А. В., Шишкевич А. А. Микропроцессоры 6. Информацион­но-управляющие вычислительные системы. М.: Высшая школа, 1984.

5.   Клингман Э. Проектирование микропроцессорных систем. М.:

Мир, 1980.

6.  Вуд А. Микропроцессоры в вопросах и ответах: Пер. с англ./ Под ред. Д. А. Поспелова. М.: Энергоатомиздат, 1985.

7.   Поспелов Д. А. Логические методы анализа и синтеза схем. М.: Энергия, 1974.

8.  Трачик В. Дискретные устройства автоматики: Пер. с польск./ Под ред. Д. А. Поспелова. М.: Энергия, 1978.

9.    Коффрон Дж. Технические средства микропроцессорных систем: Практический курс: Пер. с англ. М.: Мир, 1983.

10.   Интегральные микросхемы: Справочник/ Под ред. Б. В. Тараб-рина. М.: Радио и связь, 1983.

11.   Григорьев В. Л Программное обеспечение микропроцессорных систем. М.: Энергоатомиздат, 1984.

12.  Назаров Н. А. Программатор для микросхем К556РЕ4// В помощь радиолюбителю. 1983. Вып. 83. С. 26-31.

13.  Хоровиц П., Хилл У. Искусство схемотехники: Пер. с англ./ Под ред. М. В. Гальперина. М.: Мир, 1983. Т. 1, Т 2.

14.  Алексенко А. Г., Галицын А. А., Иванников А. Д. Премирование радиоэлектронной аппаратуры на микропроцессорах: Программирование, типовые решения, методы отладки. М.: Радио и связь, 1984.

15.  Иванов Б. Н. Самодельный блок питания// В помощь радиолюби­телю. 1983. Вып. 84. С. 62-73.

16.  Васильев Н. П., Горовой В. Р. Микропроцессоры 5. Аппаратурно-программные средства отладки. М.: Высшая школа, 1984.

ОГЛАВЛЕНИЕ

Предисловие

Глава 1. ЧТО ТАКОЕ МИКРО-ЭВМ?

1.1.   Типы микро-ЭВМ и области их применения

1.2.   Можно ли самому построить ЭВМ?

Глава 2. КАКУЮ МИКРО-ЭВМ МЫ БУДЕМ СТРОИТЬ?

2.1.   Основные блоки микро-ЭВМ


2.2.   Содержимое центрального блока

2.3.   Какую микро-ЭВМ мы будем называть "про­стейшей"?

Глава 3. НЕКОТОРЫЕ ОБЩИЕ СВЕДЕНИЯ О РАБОТЕ МИК­РО-ЭВМ

3.1.   Данные и программы

3.2.   Основные логические операции

3.3.   Основные арифметические операции

Глава 4. АРХИТЕКТУРА ПМ-ЭВМ И КОМПОНЕНТОВ

4.1.   Конструктивное оформление ПМ-ЭВМ

4.2.   Основные связи и структура шин

4.3.   Общая функциональная схема ПМ-ЭВМ

4.4.   Функциональная схема микропроцессора

4.5.   Как микропроцессор выполняет команду?

4.6.   Система команд и способы адресации

4.6.1.  Группа команд пересылки данных

4.6.2.  Группа арифметических команд

4.6.3.  Группа логических команд

4.6.4.  Группа команд переходов

4.6.5.  Группа команд управления и работы со стеком

4.7.   Программирование ПМ-ЭВМ

Глава 5. ИСПОЛЬЗУЕМЫЕ МИКРОСХЕМЫ

5.1.   Общие вопросы

5.2.   ТТЛ-входы и ТТЛ-выходы

5.3.   Временные диаграммы

5.4.   Микросхемы, реализующие логические функции

5.5.   Микросхемы, содержащие элементы памяти

Глава 6. СТРУКТУРА И ФУНКЦИОНИРОВАНИЕ МИКРОПРО­ЦЕССОРНОГО БЛОКА

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

6.2.   Синхронизация

6.3.   Шины адреса, данных и управления

6.4.   Тактовый генератор и схема пошагового испол­нения программ

Глава 7. СХЕМЫ И ОСОБЕННОСТИ РАБОТЫ ОСНОВНЫХ БЛОКОВ ПМ-ЭВМ

7.1.   Общие положения

7.2.   Структура памяти

7.3.   Клавиатура и индикация

7.4.   Программа-монитор

7.5.   Инструкция по работе на микро-ЭВМ

Глава 8. СБОРКА И ОТЛАДКА ПМ-ЭВМ

8.1.   Этапы сборки и проверки узлов

8.2.   Статический аппаратный эмулятор

8.3.   Отладка в рабочем режиме

8.4.   Подготовка ПМ-ЭВМ к работе

Глава 9. РАБОТА С ПМ-ЭВМ

9.1.   Программируемый калькулятор

9.2.   Программируемое управляющее устройство

9.3.   Сбор и обработка данных

9.4.   Реализация диалогового режима

Глава 10. РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ ПМ-ЭВМ

10.1.   Клавиатура и индикация

10.2.   Внешняя память

10.3.   Накопитель на базе бытового магнитофона

10.4.   Дисплей на базе бытового телевизора или осцил­лографа



10.5.   Простой графический дисплей

10.6.   Звуковая сигнализация

10.7.   Другие возможности ПМ-ЭВМ

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

Приложение 2. Схема ПМ-ЭВМ

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

Список рекомендуемой литературы

Научно-популярное издание

БУРЕЕВ ЛЕВ НИКОЛАЕВИЧ

ДУДКО АЛЕКСЕЙ ЛЬВОВИЧ

ЗАХАРОВ ВАЛЕРИЙ НИКОЛАЕВИЧ

Простейшая микро-ЭВМ. Проектирование. Наладка. Использование

Редактор Д. А. Поспелов Редактор издательства 3. И. Михеева

Художественные редакторы Т. А. Дворецкова, Ю. В. Созанская

Технические редакторы Я. Н. Хотулева, О. Д. Кузнецова

Корректор Л. С. Тимохова

ББК 32.97 Б 91 УДК 681.31-181.48

Рецензент В. Ф. Корнюшко

 

Буреев Л. Н. и др.

В 91 Простейшая микро-ЭВМ: Проектирование. Налад­ка. Использование/ Л. Н. Буреев, А. Л. Дудко, В. Н. За­харов. — М.: Энергоатомиздат, 1989. — 216 с.: ил. — (Научно-попул. б-ка школьника).

ISBN 5-283-01482-7

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

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

2405000000- 269

Б ---------------------- 2о4-оо

051 (01)-89

ISBN 5-283-01482-7

ББК 32.97

ИБ № 1723

Набор выполнен в издательстве. Подписано в печать с оригинала-макета 18.11.88. Т-20630. Формат 84 х 108 1/32. Бумага офсет­ная № 1. Гарнитура Пресс Роман. Печать офсетная. Усл. печ. л. 11,34. Усл. кр.-отт. 45,99. Уч.-изд. л. 12,95. Тираж 160 000 экз. Заказ 99, Цена 85 к.

Энергоатомиздат, ИЗ 114, Москва, М-114, Шлюзовая наб., 10.

Предприятие малообъемной книги дважды ордена Трудового Красного Знамени Ленинградского производственного объединения «Типография имени Ивана Федорова» Союзполиграфпрома при Государственном коми­тете СССР по делам издательств, полиграфии и книжной торговли. 192007, Ленинград, ул.Боровая, 51.

OCR Pirat


ШИНЫ АДРЕСА, ДАННЫХ И УПРАВЛЕНИЯ


Шина адреса. Микропроцессор КР580ИК80А имеет 16-разрядную шину адреса А0-А15. Эта шина выполняет две функции. Первая функция состоит в пере­даче адреса ячейки памяти (стека) при обращении к памяти (стеку). С помощью 16 разрядов шины адреса можно адресо­вать 216 ячеек памяти (т. е. 64 Кбайта). Вторая функция шины адреса — это передача адреса внешнего устройства при выполне­нии команд IN и OUT. В этом случае адрес внешнего устройства появляется на линиях АО-А7 и дублируется на линиях А8-А15. Так как для передачи адреса внешнего устройства используется фактически только восемь разрядов, то можно адресовать 256 (2s) различных внешних устройств ввода/вывода.

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

Рис. 6.3. Временная анаграмма работы шины адреса

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

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


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



Рис. 6.4. Шина адреса

Для того чтобы показать, что идет процесс передачи управ­ляющего слова, используется выход микропроцессора SYNC. Временная диаграмма приводится на рис. 6.5. Из нее видно, что передача управляющего слова по шине данных начинается по фронту сигнала Ф2 в такте Т1 и заканчивается по тому же фронту сигнала Ф2 в такте Т2.



Рис. 6.5. Временная диаграмма процесса передачи управляю­щего слова

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

Для указания направления передачи информации по шине данных микропроцессор имеет два выхода: DBIN и WR. Когда информация передается в микропроцессор, то в этом машин­ном цикле на выходе DBIN появляется высокий уровень (рис. 6.6,а). Сигнал DBIN появляется по фронту сигнала Ф2 в такте Т2 и снимается по фронту Ф2 в такте ТЗ. Именно в это время внешние схемы должны поместить на шину данных код, который должен быть записан в один из внутренних регистров. Когда информация передается из микропроцессора, то в этом машинном цикле вырабатывается сигнал WR низкого уровня (рис. 6.6,6). Этот сигнал вырабатывается по фронту сигнала Ф1 в такте Т2 и снимается по фронту Ф1 в такте Т4 этого же машинного цикла (если цикл состоит более чем из трех тактов) или в такте Т1 следующего машинного цикла (если данный цикл состоит из трех тактов).


На шине данных ЕЮ — D7 немного ранее появления сигнала WR микропроцессор помещает данные и снимает их позднее снятия сигнала WR, поэтому внешние схе­мы могут использовать этот сигнал для управления записью информации.



Рис. 6.6. Временная диаграмма работы шины данных

Каждая линия шины данных имеет единичную нагрузочную способность и поэтому нуждается в буферизации. Поскольку линии шины данных двунаправленны, необходим и двунаправ­ленный буфер. Схема такого буфера, состоящая из двух микро­схем К589АП16 (D9, D10), приводится на рис. 6.7. На входы 1 микросхем D9, D10 подан низкий уровень, и поэтому они рабо­тают все время в режиме передачи информации. Направление передачи определяется уровнем буферизованного сигнала DBIN, который подключен к входам 15 микросхем D9, D10. 3аметим, что направление передачи не управляется сигналами WR и SYNC .

Если уровень сигнала DBIN высокий, то шинные формирователи передают информацию в направлении к микропроцессору (от DBO — DB7 к DO — D7), если нет — то в обратном направлении (от ЕЮ — D7 к DBO — DB7), т. е. направление передачи шинных формирователей при низком уровне сигнала DBIN соответст­вует тому, которое должно быть при выработке сигналов WR и SYNC.



Рис. 6.7. Шина данных



Рис. 6.8. Шина управления

Шина управления. Микропроцессор КР580ИК80А не обладает готовой шиной управления, как шиной адреса и шиной данных. Поэтому эта шина организуется с помощью дополнительной внешней схемы (микросхемы D27, D29), называемой иногда системным контроллером (СК), которая использует управляю­щее слово и управляющие сигналы микропроцессора (рис. 6.8). Часть разрядов управляющего слова (D4, D6, D7) фиксируется в триггерах микросхемы К155ТМ7 (D29) по срезу сигнала SYNC (рис. 6.9). Сигнал SYNC пропущен через два инвертора для увеличения нагрузочной способности (эта схема, хотя и ра­ботоспособна, не будет применяться в ПМ-ЭВМ). Позднее будет приведена схема для фиксации управляющего слова, где сигнал на управляющие входы триггеров будет вырабатываться с по­мощью микросхемы КР580ГФ24.


Сигналы шины управления вырабатываются с помощью сигналов с выходов триггеров микросхем D29 и сигналов DBIN и WR.



Рис. 6.9. Временная диаграмма работы фиксаторов управляющего слова

В ПМ-ЭВМ команды, данные и содержимое стека хранятся в едином блоке памяти, состоящем из ОЗУ и ПЗУ. Поэтому Для управления чтением из блока достаточно иметь один сиг­нал R, который будет вырабатываться при выполнении машин­ных циклов ВЫБОРКА КОМАНДЫ, ЧТЕНИЕ ИЗ ПАМЯТИ, ЧТЕНИЕ ИЗ СТЕКА. Назовем условно эту группу циклов ЧТЕНИЕ. Для управления записью в блок также достаточно иметь один сигнал W, который будет вырабатываться при вы­полнении машинных циклов ЗАПИСЬ В ПАМЯТЬ, ЗАПИСЬ В СТЕК. Эту группу назовем ЗАПИСЬ.

Для управления вводом и выводом на внешние устройства необходимы два сигнала OUT и IN, которые будут вырабаты­ваться при выполнении циклов ВЫВОД НА ВНЕШНЕЕ УСТРОЙ­СТВО и ВВОД С ВНЕШНЕГО УСТРОЙСТВА соответственно.

Формирование сигналов шины управления поясним, поль­зуясь табл. 6.3.

Таблица 6.3

Тип цикла или группы циклов

 

 

 

 

Выраба­тывае­мый

сигнал

DBIN

или WR

 

Исполь­зуемый разряд

 

 

 

 

Уровень напряжения на выхо дах триггеров D29

микросхемы

Вырабаты-

вае­мый

сигнал

шины

управ-

ления

 9

 

 

1

 16

 

10

 

ЧТЕНИЕ

DBIN

D7

Н

Н

L

L

R, RW

ЗАПИСЬ

WR

D4

L

Н

L

L

W, RW

ВЫВОД НА

ВНЕШНЕЕ

УСТРОЙСТВО

WR

 

D4 

L

L

Н

 

L

 

OUT

 

вводе

ВНЕШНЕГО

УСТРОЙ-

СТВА

DBIN

 

 

 

D6

 

 

 

L H

 

 

 

L

 

 

 

H

 

 

 

IN

 

 

 



Рис. 6.10. Временная диаграмма циклов чтения и записи с переходом в режим ожидания:

а - цикл чтения; б - цикл записи

Для формирования сигнала R естественно воспользоваться разрядом D7 управляющего слова, так как именно в этом раз­ряде имеется сигнал высокого уровня в циклах группы ЧТЕНИЕ (см. табл. 6.2), а для формирования сигналов OUT и IN — разрядами D4 и D6, потому что именно в этих разрядах сигнал имеет высокий уровень при выполнении соответствующих цик­лов и низкий уровень во всех остальных циклах.


Сложнее дело обстоит с формированием сигнала W для циклов группы

ЗАПИСЬ. Казалось, было бы естественно воспользоваться раз­рядом D1 управляющего слова, в котором передается сигнал низкого уровня для циклов группы ЗАПИСЬ. Но в этом разряде сигнал низкого уровня бывает также и в цикле ВЫВОД НА ВНЕШНЕЕ УСТРОЙСТВО, и так как в этом цикле также вырабатывается сигнал WR, то пришлось бы усложнять схему, чтобы сформировать два разных сигнала W и OUT. Поэтому для фор­мирования сигнала W используется инвертированный разряд D4. Соответствующий ему сигнал снимается с инверсного выхода триггера (вывод 7). Этот сигнал имеет высокий уровень и для циклов группы ЧТЕНИЕ и ВВОД С ВНЕШНЕГО УСТРОЙСТВА (см. табл. 6.2), но при этом не формируются сигналы W и OUT (так как не в ырабатывается сигнал WR), а формируются лишь сигналы R и IN (так как вырабатывается сигнал DBIN).

Сигнал высокого уровня RW формируется из сигнала R или W и управляет работой дешифратора адреса (см. § 7.2). В заключение опишем еще некоторые управляющие сигналы микропроцессора КР580ИК80А и их функции.

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



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

6.4. ТАКТОВЫЙ ГЕНЕРАТОР

И СХЕМА ПОШАГОВОГО ИСПОЛНЕНИЯ ПРОГРАММ

Для того чтобы получить такто­вые импульсы с необходимыми для микропроцессора КР580ИК80А параметрами (см. § 6.2, рис. 6.2), можно использовать микросхему КР580ГФ24 (рис. 6.11, табл. 6.4). Эта мик­росхема является тактовым генератором, специально сконструи­рованным для данного микропроцессора, и выполняет еще ряд дополнительных функций.

   Рис. 6.11. Тактовый генератор КР580ГФ24

Т а б л и ц а 6.4

 

Название

Назначение вывода

XTAL1 XTAL2

Выводы для подключения кварцевого резонатора

TANK

Вывод, используемый при применении кварцево­го резонатора с обертоном

OSC

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

Ф1.Ф2

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

Ф2Т

Выход для тактовых импульсов Ф2, но ТТЛ-уров­ня

SYNC

Вход для сигнала SYNC микропроцессора

STSTB

Выход для синхронизированного сигнала SYNC

-

Вход для асинхронного сигнала сброса

RESIN

RESET

Выход для синхронизированного сигнала RESET микропроцессора

RDYIN

Вход для асинхронного сигнала готовности

READY

Выход для синхронизированного сигнала READY микропроцессора



Рис. 6.12. Временные диаграммы синхронизации сигналов при помощи КР580ГФ24:

а - сигнал RESET; б - сигнал READY; в - сигнал SYNC

Опишем более подробно функции выводов тактового генера­тора. Выводы XTAL1 и XTAL2 предназначены для подключения кварцевого резонатора для стабилизации частоты генератора. При этом частота тактовых импульсов Ф1 иФ2 равняется 1/9 ча­стоты кварцевого резонатора (так, в ПМ-ЭВМ при резонаторе на частоту 9 МГц частота тактовых импульсов равна 1 МГц).


На выходах Ф1 и Ф2 вырабатываются тактовые импульсы, удовлетворяющие всем предъявляемым для микропроцессора КП580ИК80А требованиям. На выходе OSC вырабатывается синусоидальный сигнал с частотой, которую имеет кварцевый резонатор. Все оставшиеся выводы (т. е. кроме Ф1, Ф2 и OSC) работают с сигналами, имеющими ТТЛ-уровни. На выходе Ф2Т вырабатывается сигнал, идентичный Ф2, но имеющий ТТЛ-уро­вень, который может быть использован для синхронизации ка­ких-либо устройств в микро-ЭВМ.



Рис. 6.13. Схема подключения тактового генератора к микропроцессору

Три входа SYNC, RESIN, RDYIN являются входами для асинхронных сигналов. Эти сигналы могут менять свой уровень в любой момент времени. Внутри КР580ГФ24 с помощью специальных схем из этих сигналов формируются три выходных сигнала STSTB, RESET, READY, синхронизированных с такто­выми импульсами (рис. 6.12).

Тактовый генератор подключается к микропроцессору, как показано на рис. 6.13. К входу RESIN подключена кнопка СБРОС. Параллельно кнопке СБРОС подключен конденсатор С1, Если эта кнопка не нажата, то конденсатор С1 заряжен и на вход HESIN поступает высокий уровень. Следовательно, на вход RESET микропроцессора поступает низкий уровень, что позво­ляет ему нормально работать. Если нажать кнопку СБРОС, то на вход RESET поступит высокий уровень и работа микропро­цессора будет прервана (см. § 6.3). Конденсатор С1 служит для начального запуска микропроцессора после включения питания. После включения питания С1 разряжен и на вход RESIN посту­пает низкий уровень. Затем конденсатор заряжается, напряже­ние на входе RESIN экспоненциально возрастает и в какой-то момент времени достигает высокого уровня. Это приводит к выработке сигнала RESET низкого уровня, разрешающего работу микропроцессора. Вход RESIN имеет специальную схему (триггер Шмидта), которая перерабатывает медленно меняю­щийся при заряде конденсатора входной сигнал в нормальный ТТЛ-фронт.

ПМ-ЭВМ можно снабдить схемой пошагового выполнения программы (рис. 6.13), построенной на микросхеме К155ТМ2 (D30) и двух инверторах (D31.3, D31.4).


С помощью этой схемы выполнение программы приостанавливается в середине каждого машинного цикла. Состояния шины данных в этот момент мож­но наблюдать на индикаторах одного из портов вывода (см. §7.3).

Схема пошагового выполнения программы работает следую­щим образом. Если контакты выключателя К18 замкнуты, то на вход 4 триггера D30.1 подается низкий уровень. На вход 1 также подается низкий уровень с выхода WAIT через буфер, состоящий из двух инверторов. В результате этого на выходе 5 триггера имеется высокий уровень, который, поступая на вход RDYIN, обеспечивает сигнал READY высокого уровня, что по­зволяет микропроцессору работать в нормальном режиме. Для перехода в режим пошагового выполнения программы необхо­димо разомкнуть контакты выключателя К18. Тогда на вхо­де 4 триггера D30.1 будет высокий уровень, а на входе 1 — низкий уровень. Это приведет к тому, что на выходе 5 появит­ся низкий уровень и микропроцессор перейдет в режим ожида­ния. После перехода в режим ожидания на выходе WAIT и на входе 1 триггера установится высокий уровень. В этом состоя­нии схема может находиться неограниченно долго. Если теперь подать на вход 3 триггера D30.1 фронт, то на выходе 5 появит­ся высокий уровень. Микропроцессор снимет сигнал WAIT высокого уровня, закончит начатый машинный цикл и начнет выполнять следующий машинный цикл. Сигнал WAIT низкого уровня вновь установит на выходе 5 триггера низкий уровень, что приведет к переходу микропроцессора в режим ожидания в середине следующего машинного цикла.



Рис. 6.14. Явление дребезга контактов:

а - реальная временная диаграмма, дребезг контактов; б - идеальная временная диаграмма

Для подачи импульсов на вход 3 триггера D30.1 используют­ся кнопка К17 и схема для подавления дребезга контактов. Явление дребезга контактов происходит при замыкании любых механических контактов вследствие неидеальности их поверх­ности. Вместо однократного замыкания или размыкания кон­такты замыкаются и размыкаются несколько раз.Так, при нажатии на кнопку К17 на выводах 13, 10 микросхемы D30.2 сигнал имеет форму, изображенную на рис. 6.i4. Чтобы сфор­мировать сигнал, имеющий один срез, используется кнопка с двумя контактами: замыкающимся и размыкающимся при нажатии на нее. Когда один из контактов кнопки, соединен­ный с входами 10 и 13 микросхемы D30.2, замыкается, то первый из возникающих импульсов перебрасывает триггер, а остальные импульсы уже не влияют на его состояние. Таким образом, на выходе 9 формируются фронт при нажатии на кнопку К17 и срез при отпускании этой кнопки.

7



СИСТЕМА КОМАНД И СПОСОБЫ АДРЕСАЦИИ


Система команд микропроцес­сора КР580ИК80А представлена 244 кодами операций, которые могут быть расклассифицированы по разным признакам. Наибо­лее существенными для ознакомления с особенностями их ис­пользования являются следующие три признака: длина коман­ды, или число занимаемых байтов, функциональный признак, или выполняемые командой операции, и способ адресации. Полный перечень команд приведен в приложении 1. В таблице приведены символическая запись (мнемокод) команды, описа­ние выполняемых ею функций, длина в байтах, обозначения изменяемых флагов и число машинных тактов, занимаемых при ее выполнении. Из 256 возможных кодов (при восьми двоичных разрядах) не используются следующие 12 кодовых комбинаций (в восьмеричной записи): 010, 020, 030, 040, 050, 060, 070, 313, 331, 335, 355 и 375. Этим и объясняется коли­чество всех команд: 244. Команды в таблице разбиты на три группы по числу занимаемых байтов: все команды делятся на однобайтовые, двухбайтовые и трехбайтовые. При этом первый байт всегда отводится под код команды, а второй и третий байты содержат либо данные, либо адрес, по которому они находятся в памяти (рис. 4.6).

Восьмеричные коды всех однобайтовых, двухбайтовых и трехбайтовых команд приведены соответственно в табл. 4.1, 4.2 и 4.3. При этом в табл. 4.1 наряду с обычными указаны обобщенные коды, т. е. коды, содержащие кроме восьмерич­ных цифр кодовые переменные S, D и А. В табл. 4.1 если код команды содержит только цифры, это означает, что существует единственная команда с соответствующим кодом. Некоторые коды кроме цифр содержат буквы: S (первые И команд), D (третья команда) и А (последняя команда). Таким кодам соответствуют множества команд. При этом каждой команде из первых 11 команд, кроме третьей, соответствует группа конкретных команд, мнемокод которых вместо символа г (регистр) содержит обозначения конкретных регистров (В, С, D, Е, Н, L), либо символ памяти (М), либо символ аккуму­лятора (А). Соответствующий конкретный восьмеричный код команды вместо символа S должен содержать одну из цифр: О, 1, 2, 3, 4, 5, 6, 7 соответственно, т.
е. символу В в мнемо­коде соответствует цифра 0 в восьмеричном коде, символу С в мнемокоде — цифра 1 в восьмеричном коде и т. д,. . ., симво­лу М в мнемокоде — цифра 6 в восьмеричном коде и, наконец, символу А в мнемокоде — цифра 7 в восьмеричном коде. Для третьей команды в табл. 4.1 точно такая же аналогия соблюда­ется для пар символов гь г2 и D, S. Последняя команда табли­цы содержит символ А в мнемокоде и в восьмеричном коде. Она соответствует группе из восьми конкретных команд, в каж­дой из которых символ А принимает одно из значений: О, 1, ... ...,7.



Рис. 4.6. Форматы команд: однобайтовой (а), двухбайтовой (б), трехбай­товой (в)

Таблица 4.1 

Код

Команда

Код

Команда

 

 

Код

Команда

OS4

INR

r

 

051

DAD

H

 

370

RM

 

OS5

DCR

r

 

071

DAD

SP

311

RET

 

1DS

MOV

r1r2

301

POP

В

 

007

RLC

 

20S

ADD

r

 

321

POP

D

 

017

RRC

 

21S

ADC

r

 

341

POP

H

 

027

RAL

 

22S

SUB

r

 

361

POP

PSW

037

RAR

 

23S

SBB

r

 

305

PUSH

В

 

353

XCHG

24S

ANA

r

 

325

PUSH

D

 

343

XTHL

25S

XRA

r

 

345

PUSH

H

 

371

SPHL

26S

ORA

r

 

365

PUSH

PSW

351

PCHL

27S

CMP

r

 

002

STAX

В

 

166

HLT

 

003

INX

в

 

022

STAX

D

 

000

NOP

 

023

INX

D

 

012

LDAX

В

 

363

DI

 

043

INX

H

 

032

LDAX

D

 

373

El

 

063

INX

SP

300

RNZ

 

 

047

DAA

 

013

OCX

В

 

310

RZ

 

 

057

CMA

 

033

OCX

D

 

320

RNC

 

 

067

STC

 

053

OCX

H

 

330

RC

 

 

077

CMC

 

073

DCX

SP

340

RPO

 

 

3A7

RST

A

011

DAD

В

 

350

RPE

 

 

 

 

 

031

DAD

D

 

360

RP

 

 

 

 

 

Таблица 4.2 

Код

Команда

Код

Команда

306

ADI

 

<B2>

 

323

OUT

<B2>

 

316

ACI

 

<B2>

 

006

 

MVI

В

<B2>

 

326

SUI

 

<B2>

 

016

 

MVI

С

<B2>

 

336

SBI

 

<B2>

 

026

 

MVI

D

<B2>

 

346

ANI

 

<B2>

 

036

 

MVI

E

<B2)

 

356

XRI

 

<B2>

 

046

 

MVI

H

<B2>

 

366

ORI

 

<B2>

 

056

 

MVI

L

<B2>

 

376

CPI

 

<B2>

 

066

 

MVI

M

<B2>

 

333

IN

 

<B2>

 

076

 

MVI

A

<B2>

 

Таблица 4.3

 
Код

Команда

Код

Команда

 
302

JNZ

<В2><ВЗ>

344

СРО

<B2><B3>

 
312

JZ

<В2><ВЗ>

354

СРЕ

<B2><B3>

 
322

JNC

<В2><ВЗ>

364

СР

<B2><B3>

 
332

JC

<В2><ВЗ>

374

СМ

<B2><B3>

 
342

JPO

<В2><ВЗ>

315

CALL

<B2><B3>

 
352

JPE

<В2><ВЗ>

001

LXIB

<B2><B3>

 
362

JP

<В2><ВЗ>

021

LXI D

<B2><B3>

 
372

JM

<В2><ВЗ>

041

LXIH

<B2><B3>

 
303

JMP

<В2><ВЗ>

061

LXISP

<B2><B3>

 
304

CNZ

<В2><ВЗ>

062

STA

<B2><B3>

 
314

CZ

<В2><ВЗ>

072

LDA

<B2><B3>

 
324

CNC

<В2><ВЗ>

042

SHLD

<B2><B3>

 
334

СС

<В2><ВЗ>

052

LHLD

<B2><B3>

 



Как видно из табл. 4.2, микропроцессор КР580ИК80А может выполнять всего 18 двухбайтовых и 26 трехбайтовых команд, приведенных в табл. 4.3.

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

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

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

Менее экономичной, но также довольно простой является прямая адресация. В этом случае во втором и третьем байтах команды содержится полный 16-разрядный адрес памяти. Млад­шим байтом адреса является <В2>, старшим — <ВЗ) (рис. 4.7,6). Таким способом можно адресоваться к любой ячейке адресного пространства памяти.

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

Косвенная адресация отличается от регистровой лишь тем, что в регистровой паре, определяемой кодом команды, содержатся не данные, а полный 16-разрядный адрес ячейки памяти,в кото­рой имеются эти данные (рис. 4.7,г).


Старший байт адреса за­писывается в первом регистре пары, а младший байт — во вто­ром. Обычно указателем адреса при косвенной адресации явля­ются пара регистров Н, т. е. регистры Н, L, но иногда использу­ются и пары В и D.

При всевозможных пересылках данных из регистров в регист­ры или из памяти в регистры или обратно различают регистры — источники данных и регистры — приемники данных. Первые обо­значаются символом S (source — источник), вторые — симво­лом D (destination — место назначения). В регистровых парах В, С; D, Е и Н, L старшими являются первые регистры пар, т. е. регистры В, D, Н соответственно. Коды регистров общего назначения, пар регистров и флагов строго фиксированы (табл. 4.4).

В табл. 4.4 обозначение условия в мнемокоде команды в зависимости от значения флагов расшифровывается следую­щим образом: NZ — результат ненулевой; Z — результат нуле­вой; NC — нет переноса; С — есть перенос; РО - нет четности; РЕ — есть четность; Р — результат положительный (плюс) ; М -результат отрицательный (минус).



Рис. 4.7. Способы адресации: непосредственная (а), прямая (б), регист­ровая (в) и косвенная (г)

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

4.6.1. ГРУППА КОМАНД ПЕРЕСЫЛКИ ДАННЫХ

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



Команда MOV rt, r2. Эта команда предназначена для пересыл­ки данных из регистра S (источник, или г2) в регистр D (прием­ник, или rt). В качестве регистра-источника и регистра-прием­ ника может выступать любой из регистров В, С, D, H, L или аккумулятор А. Содержимое регистра-источника при этом не меняется. В регистре-приемнике просто появляется копия содержимого регистра-источника. На рис. 4.8,а приведен формат этой команды. Чтобы получить конкретную команду, необхо­димо вместо символов D и S в формате команды рис. 4.8,я проставить из табл. 4.4 коды соответствующих регистров. На­пример, команда 01 010 000 В пересылает данные из регист­ра В в регистр D (в регистре D после выполнения команды бу­дут содержаться т© же данные, что и в регистре В). В восьмерич­ной системе это число (код команды) будет представлено как 120Q (см. список команд в приложении 1).

Команда MOV М, г. Эта команда может быть получена из пре­дыдущей заменой символов D кодом М из табл. 4.4. Команда пересылает данные из регистра-источника в ячейку памяти по адресу, указанному в регистровой паре Н, L. Регистром-источ­ником может служить любой регистр В, С, D, H, L или аккуму­лятор А. После выполнения команды в ячейке памяти появится копия содержимого регистра-источника. Содержимое самого регистра не изменится. Код конкретной команды получается фиксацией кода регистра-источника (рис. 4.8,6).



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



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

Команда MOV г, М. Команда также получается из первой за­меной символов S кодом М из табл. 4.4. Команда пересылает данные из ячейки памяти по адресу, указанному в регистровой паре Н, L, в регистр-приемник, в качестве которого может использоваться любой регистр В, С, D, H, L или аккумулятор А. После выполнения команды в регистре-приемнике появляется копия содержимого ячейки памяти (рис. 4.8,в).

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

 



СОДЕРЖИМОЕ ЦЕНТРАЛЬНОГО БЛОКА


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

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

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

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



Рис. 2.3. Схема процесса решения задачи:

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

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



Рис. 2.4. Простейшая микро-ЭВМ и некоторые возможности ее расши­рения

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


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

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



СТАТИЧЕСКИЙ АППАРАТНЫЙ ЭМУЛЯТОР


Ограничив поставленную задачу проверкой правильности функционирования логических схем, обрамляющих МП, используем тот факт, что в МП-системах на базе микросхемы КР580ИК80А передача информации осу­ществляется уровнями. Следовательно, если заменить МП уст­ройством, вырабатывающим в статике такие же выходные сиг­налы, можно проверить работу всех зависящих от него узлов, т. е. правильность адресации микросхем, правильность вво­да/вывода, работу микросхем в статике, правильность комму­тации. Такой метод проверки называется тестированием ста­тическими сигналами. Устройство тестирования представляет статический аппаратный эмулятор микропроцессора (САЭ). На рис. 8.1 приведена схема САЭ. В устройстве использовано пять микросхем трех типов. САЭ осуществляет управление МП-системой точно так же, как и микропроцессор. В его со­ставе имеются переключатели А15-АО. Каждый из них одним концом соединяется с общим проводом, а другим — с согласую­щим резистором 4,7 кОм, подключенным к источнику питания + 5 В. В зависимости от положения переключателей через кабель на ножки коммутационной колодки, соответствующие адрес­ным выходам микропроцессора А15 — АО, подаются логические уровни 0 или 1, имитируя сигналы адресной шины МП. В составе САЭ имеются также переключатели D7-DO. С их помощью логические уровни 0 или 1 подаются на входы микросхем D1 nD2 типа К589АП16, представляющих двунаправленные буфер­ные усилители с высокой нагрузочной способностью. Логиче­ские уровни 0 или 1 через D1 и D2 подаются на ножки коммута­ционной колодки, соответствующие выводам D7-DO микро­процессора, имитируя выходные сигналы шины данных МП. К этим же ножкам подключены входы микросхем D3 и D4 типа К589АП26, представляющих инвертирующие двунаправ­ленные буферные усилители. Выходы D3 и D4 нагружены на светодиодные индикаторы, постоянно отображающие состоя­ние шины данных микропроцессора.

Особенностью микропроцессора КР580ИК80А является ис­пользование шины данных в начале каждого машинного цикла для выдачи управляющего слова, которое определяет один из десяти типов машинного цикла.
По этой причине прежде чем с помощью САЭ осуществлять передачу информации по шине данных между САЭ, имитирующим МП, и памятью или между САЭ и УВВ, необходимо задать соответствующий тип машин­ного цикла путем выдачи кода управляющего слова по шине Данных и стробирования его сигналом SYNC. По сигналу SYNC тактовый генератор тестируемой системы вырабатывает им­пульс STSTB, стробирующий прием и фиксацию управляющего слова системным контроллером тестируемой системы. После снятия сигнала SYNC можно передавать информацию по шине данных в соответствии с заданным управляющим словом, так как но шине управления будут выдаваться соответствую­щие управляющие сигналы. Так, если задан машинный цикл выдачи информации из процессора в память, УВВ или стек, необходимо переключателями D7-DO набрать код управляю­щего слова, перевести переключатель SYNC из положения О в положение 1 и обратно, затем переключателями D7-DO на­брать код передаваемой информации, переключателями А15-АО набрать адрес ячейки памяти или порта вывода и перевести переключатель WR из положения 0 в положение 1 и обратно. При этом по сигналу WR и на основании зафикси­рованного управляющего слова системный контроллер тести-руемой системы вырабатывает управляющий сигнал W или OUT соответственно, по которому информация, выданная САЭ по шине данных, запишется в заданную ячейку памяти или будет принята заданным портом вывода. Если задан ма­шинный цикл приема информации из памяти, УВВ или стека, необходимо переключателями D7-DO набрать код управляю­щего слова, перевести переключатель SYNC из положения О в положение 1 и обратно, затем набрать переключателями Л15 — АО адрес ячейки памяти или порта ввода и перевести переключатель DBIN из положения 0 в положение 1 и обратно. При этом в положении 1 на светодиодных индикаторах САЭ будет отображаться принимаемая информация. Аналогично предыдущему системный контроллер тестируемой системы вырабатывает управляющий сигнал R или IN, по которому информация из заданной ячейки памяти или порта ввода пере­дается по шине данных в САЭ.







Рис. 8.1. Схема САЭ

Заметим, что с целью гашения дребезга контактов к пере­ключателям DBIN, WR и SYNC подключены триггеры, построен­ные на инверторах микросхемы D5 типа К155ЛЫ1. Поскольку остальные переключатели не оснащены схемами гашения дре­безга, они должны переключаться только тогда, когда DBIN, WR и SYNC находятся в положении 0.

Во избежание конфликтной ситуации на шине данных при непредусмотренном положении переключателей при положении переключателя DBIN в 1 блокируется выдача информации с пе­реключателей D7-DO на шину данных путем подачи логиче­ской 1 на входы выборки кристалла микросхем D1 и D2, что переводит их выходы в третье состояние.

Отладка шины адреса ПМ-ЭВМ. Определим, возможна ли передача логических 0 и 1 по адресным линиям АВ15 — АВ12 и АВ11-АВО. С этой целью введем САЭ в проверяемую ПМ-ЭВМ вместо МП путем установки коммутационной колодки САЭ в панельку МП и подадим питающие напряжения на ПМ-ЭВМ.

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

Отладка шины управления ПМ-ЭВМ. При отладке шины управления ПМ-ЭВМ будем использовать управляющие пере­ключатели САЭ — DBIN, WR и SYNC. Отладка состоит из двух этапов: на первом проверяется правильность записи кода управ­ляющего слова на микросхеме D29, на втором — правильность формирования системным контроллером ПМ-ЭВМ управляю­щих сигналов. При этом переключателями А15-А0 набран код 200Q 200Q.

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



Отладка шины данных ПМ-ЭВМ. При отладке шины данных будем проверять возможность двунаправленной передачи дан­ных от МП к ОЗУ и УВВ и от ПЗУ, ОЗУ и УВВ к МП. Как и в предыдущем разделе, во избежание нежелательной выборки устройств и возникновения конфликта на и тане данных пере­ключателями А15-А0 набран код 200Q 200Q.

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

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

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

Ускоренная проверка ПМ-ЭВМ. Приведенная методика про­верки позволяет полностью и последовательно проверить в ста­тике работу всех устройств ПМ-ЭВМ. Однако часто можно огра­ничиться проверкой по разделу "Отладка схем дешифрации адреса и выработки сигналов выборки устройств", так как данная проверка является итоговой. Если обнаружены какие-либо неисправности, то необходимо провести полную проверку. Хотя вероятность нормальной работы при выбранных пара­метрах схемы весьма высока, проверка в статике не гаранти­рует работоспособность ПМ-ЭВМ в динамических условиях, так как не проверяются временные соотношения между сиг­налами в системе, не известны действительные задержки логи­ческих схем и не исключено, что к какой-нибудь сигнальной линии по ошибке подпаян конденсатор. Кроме того, нет гаран­тии, что все ячейки ОЗУ функционируют нормально. Поэтому после отладки ПМ-ЭВМ с помощью САЭ, когда нормально функционирует клавиатура, вводится и считывается информа­ция, следует произвести программные проверки, описываемые в § 8.3.


СТРУКТУРА ПАМЯТИ


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

Максимальное количество ячеек памяти (или "объем памя­ти"), к которым может обращаться при помощи своей 16-раз­рядной шины адреса микропроцессор КР580ИК80А, равно 216, или 65 536. Обычно говорят: не 65 536 ячеек, а 64 К (1 К равня­ется 1024). Для решения некоторых задач оказывается мало и такого объема памяти, но для большинства применений доста­точно использовать лишь его часть. С другой стороны, объем памяти, содержащейся в одной микросхеме, может быть мень­ше, чем максимальный объем, который может адресовать мик­ропроцессор. Эти два обстоятельства, а также и то, что в составе памяти микро-ЭВМ необходимо иметь память с разными свой­ствами (ОЗУ и ПЗУ), приводят к специальным техническим ре­шениям при конструировании памяти микро-ЭВМ.

Рассмотрим эти технические решения на примере блока па­мяти ПМ-ЭВМ. Блок памяти, состоящий из двух микросхем ОЗУ и двух ПЗУ, подключается к шинам данных, адреса и управления (рис. 7.1). В качестве ОЗУ в ПМ-ЭВМ использу­ются микросхемы статической памяти КР541РУ2 (см. гл. 4) с организацией 1024x4 бита. Поэтому для получения объема памяти 1 Кбайт (1024 байта) необходимо подключить две микросхемы, присоединив выводы данных одной микросхемы (D12) к линиям DBO-DB3 шины данных, а выводы другой (D13) — к линиям DB4 — DB7. Остальные выводы микросхем D12 и D13 подключаются к одним и тем же линиям. Таким образом составляется блок ОЗУ емкостью 1 Кбайт.

В качестве ПЗУ в ПМ-ЭВМ используются две микросхемы КР556РТ4 (D14, D15) с организацией 256x4 бит. Они включе­ны аналогично микросхемам ОЗУ, т. е. организованы в блок 25 6 байтов.




Рис. 7.1. Схема блока памяти

Теперь рассмотрим, как размещается блок ОЗУ объемом 1 Кбайт и блок ПЗУ объемом 256 байт в пространстве адресов, вырабатываемых микропроцессором. Для того чтобы осущест­вить привязку блоков ОЗУ и ПЗУ, старшие разряды адреса (линии АВ10-АВ15) подаются на схему дешифрации адреса (микросхемы D8, D11, рис. 7.1). Шесть старших разрядов адреса АВ10-АВ15 определяют, к какому килобайту памяти микропроцессора будет произведено обращение. Десять млад­ших разрядов адреса АВО-АВ9 адресуют байты памяти в пре­делах каждого килобайта. Каждому коду на АВ10-АВ15 соот­ветствует один килобайт памяти, но вследствие того, что инвер­тированные линии АВ12-АВ15 шины адреса поступают на микросхему D8, сигнал с выхода которой разрешает или запре­щает работу дешифратора D11, дешифратор D11 будет рабо­тать только при нулевых кодах на этих линиях. В зависимости от кода на линиях АВ10 — АВ15 низкий уровень будет появляться на одном из выходов 7, 6, 5 или 4 дешифратора D11 при усло­вии, что на втором управляющем входе дешифратора (вывод 1) будет высокий уровень. В табл. 7.1 дается соответствие кода на линиях АВ 10 — АВ 15 номеру вывода D11.

В табл. 7.1 приводятся адрес первого байта, адрес последнего байта и условный номер килобайта памяти, к которому происхо­дит обращение при определенном коде на линиях АВ10 — АВ15. Из пятой строки табл. 7.1 также видно, что если адрес, выраба­тываемый микропроцессором, лежит в диапазоне от 010000Q до 177 OOOQ, то ни на одном из выходов дешифратора не бу­дет низкого уровня, т. е. с помощью выходов этого дешифра­тора нельзя адресоваться к килобайтам с 4-го по 63-й.

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



Таблица 7.1

Код на линиях АВ10— АВ1 5

Номер вывода D11.на кото­ром низкий уровень напря­жения

Диапазон адресов обла­сти памяти в восьме­ричном коде

Номер адресуе­мого ки-

А15

А14

А13

А12

All

А10

 

 

от адреса

до адреса

лобайта

0

0

0

0

0

0

7

000 000

001 777

0

0

0

0

0

0

1

6

002 000

003 777

1

0

0

0

0

1

0

5

004000

005 777

2

0

0

0

0

1

1

4

006 000

007 777

3

Любой другой код

 

 

-

010 000

177777

4-63

Рис. 7.1. Схема блока памяти

Блок из микросхем ПЗУ подключен так, что он занимает самые младшие адреса, начиная с 000 000Q. Это сделано для размещения программы-монитора, которая должна начинать работать сразу после включения микро-ЭВМ, или нажатия кноп­ки СБРОС, в результате чего вырабатывается сигнал RESET, по которому микропроцессор начинает выполнять команду, расположенную по адресу 000 OOOQ (т. е. в ПЗУ). Заметим,что для адресации 256 байтов ПЗУ достаточно восьми адресных ли­ний ABO — AB7; линии АВ8, АВ9 излишни и поэтому к ПЗУ не подсоединены. В результате этого независимо от кода на ли­ниях АВ8 и АВ9 адресуется байт ПЗУ, определяемый адресом на линиях ABO — AB7. Это приводит к тому, что один и тот же байт ПЗУ можно считывать по адресам, в разрядах АВ8, АВ9 кото­рых находятся коды 00, 01, 10 или 11. Область памяти ПЗУ, состоящая из 256 байт, повторяется 4 раза в нулевом килобай­те памяти. Ясно, что это повторение не мешает работе микро­процессора.

Такая схема адресации с неиспользованием части разрядов адреса называется схемой с неполной дешифрацией адреса. При необходимости использовать весь нулевой килобайт и поме­стить в пространство его адресов еще три блока памяти по 256 байт в каждом нужно использовать для разрядов АВ8 и АВ9 полный дешифратор, устроенный так же, как для разря­дов АВ10 и АВ11. Схема с неполной дешифрацией адреса при­водит к тому, что используется не все адресное пространство, но зато требуется меньше микросхем для ее реализации, и по­этому такая схема часто применяется в простых микро-ЭВМ.



Блок из микросхем ОЗУ подключен к выходу 4 дешифрато­ра D11, и поэтому килобайт ОЗУ адресуется как 3-й килобайт в адресном пространстве микропроцессора. На рис. 7.2 при­ведена карта распределения памяти в ПМ-ЭВМ.

Этого объема памяти достаточно для нормальной работы, но его можно при необходимости увеличить. Объем исполь­зуемого ОЗУ можно увеличить до 3 Кбайт, ничего не переделы­вая в схеме дешифрации адреса, а просто подключением допол­нительных блоков ОЗУ емкостью по 1 Кбайт к выходам 6 и 5 дешифратора D11 (рис. 7.1). Можно также увеличить объем используемого ПЗУ, если построить его из микросхем боль­шей емкости, например из микросхем К573РФ1 с организацией 1024x8 бит (1 Кбайт) или микросхем КР556РТ5 емкостью 4 Кбита и с организацией 512x8 бит (0,5 Кбайта). В первом случае будет использоваться весь 0-й килобайт, а во 2-м ячей­ки ПЗУ будут повторяться во второй половине 0-го килобайта.

 

 

 

000 000

 

 

 

ПЗУ

 

000 377

 

 

000 400

 000 777

Повторяется ПЗУ

 

001 000

 001 377

Повторяется ПЗУ

 0 и К баит

001 400

 001 777

Повторятся ЛЗУ

 

002 000

 

 

 

Память

 

 

отсутствует

1-й К байт

003 777

 

 

004 000

 

 

 

Память

 

 

отсутствует

 2-й K бaйm

005 777

 

 

005 000

 

 

 

ОЗУ

3-й K бaйm

 

Область стека

 

007 777

 

 

Рис. 7.2. Карта распределения памяти

Осталось рассмотреть подключение блока памяти к линиям шины управления. Линия R (рис. 7.1) подключена к входам 13 микросхем ПЗУ и разрешает их работу во время цикла считывания байта из ПЗУ. Линия W подключена к входам 10 микросхем ОЗУ и управляет записью байта в ОЗУ. Если на ней во время цикла обращения к ОЗУ поддерживается высокий уровень, то происходит считывание, а если низкий - то запись байта. Сиг­нал RW, вырабатывающийся и сигналом R, и сигналом W, служит Для того, чтобы разрешать работу дешифратора D11 только во время низкого уровня сигналов R и W.


Это необходимо, чтобы считывание и запись в блок памяти происходили во время выра ботки сигналов R и W, которые формируются сигналами DBIN и WR микропроцессора, определяющими момент передачи ин­формации по шине данных.



Рис. 7.3. Временная диаграмма работы блока памяти при чтении



Рис. 7.4. Временная диаграмма работы блока памяти при записи

Считывание из ОЗУ микропроцессор может выполнить в цик­лах ВЫБОРКА КОМАНДУ, ЧТЕНИЕ ИЗ ПАМЯТИ, ЧТЕНИЕ ИЗ СТЕКА а считывание из ПЗУ - только в циклах ВЫБОРКА КОМАНДЫ И ЧТЕНИЕ ИЗ ПАМЯТИ. Временные диаграммы сигналов шины адреса, данных и управления приведены на рис. 7.3. Запись информации в ОЗУ микропроцессор может вы­полнить в циклах ЗАПИСЬ В ПАМЯТЬ, ЗАПИСЬ В СТЕК. Временные диаграммы записи приведены на рис. 7.4.



Таблица


Входы

Выход

1

X

X

X

X

X

X

X

0

X

1

X

X

X

X

X

X

0

X

X

1

X

X

X

X

X

0

X

X

X

1

X

X

X

X

0

X

X

X

X

1

X

X

X

0

X

X

X

X

X

1

X

X

0

X

X

X

X

X

X

1

X

0

X

X

X

X

X

X

X

1

0

0

0

0

0

0

0

0

0

1


От сигналов, подававшихся на входы элементов в более ранние моменты времени, выходные сигналы не зависят. Поэтому эти элементы относятся к классу комбинационных схем, или к классу схем, не обладаю­щих памятью.
С помощью комбинационных элементов в ЦГО микро-ЭВМ реализуются все основные логические операции над 8-разрядны­ми словами данных и 16-разрядными словами адресов. К ним относятся операции поразрядного логического умножения (по­разрядное И), сложения (поразрядное ИЛИ), инвертирования (поразрядное НЕ), сравнения. С их помощью реализуются арифметические операции (см. § 3.3). Однако многие из этих операций были бы практически невыполнимы, если бы схема обработки двоичных сигналов не содержала специальных уст­ройств для временного хранения данных.
К таким устройствам принадлежат регистры. Они состоят из элементов, число которых (или длина регистра) равно числу двоичных разрядов поступающих на них данных. Каждый эле­мент способен сохранить на своем выходе значение поступив­шего и затем пропавшего входного сигнала до тех пор, пока не возникнет необходимость сохранения вновь поступившей ин­формации. Эти элементы, называемые триггерами, относятся не к комбинационным схемам, а к схемам с памятью. Триг­гер — это схема с двумя устойчивыми состояниями: ВКЛЮЧЕ­НО, обозначаемое 1, и ВЫКЛЮЧЕНО, обозначаемое 0. Распро­страненным типом триггера является триггер с двумя входами, обозначаемыми R и S. Такой тип триггера носит название RS-триггера. Вход R (Reset — очистка) предназначен для пере­вода триггера в состояние 0, или, как говорят, для очистки триггера. При появлении сигнала на этом входе триггер перево­дится в состояние 0, если до этого он находился в состоянии 1, или остается в состоянии 0, если до этого он находился в со­стоянии 0. Вход S (Set — установка) предназначен для перевода триггера в состояние 1, или, как говорят, для установки триг­гера.
При появлении сигнала на этом входе триггер переводится в состояние 1, если до этого он находился в состоянии 0, или остается в состоянии 1, если до этого он находился в состоя­нии 1.


Сигнал, переводящий триггер в то или иное состояние, может быть как единичным (в этом случае вход называется прямым) или нулевым (вход называется инверсным). Так, например, в схеме К155ТМ2 (см. гл. 5) сигналы сброса и уста­новки имеют нулевые значения. В этой схеме триггер остается в состоянии 0 и в том случае, если значение сигнала изменится с 0 на 1. Перевести его в состояние 1 можно только подачей сигнала 0 на вход S (Set — установка). Состояние 1 триггер будет также сохранять при изменении значения сигнала на входе S на единичное.
Триггер типа RS является далеко не единственным и даже не наиболее применяемым в схемотехнике дискретных уст­ройств. Более распространенным, например, является D-триг-гер. Он имеет два входа: D и С. Вход D является информацион­ным, а С — управляющим. Сигнал со входа D переписывается в триггер только при наличии определенного сигнала на управ­ляющем входе С. Некоторые триггеры, реализованные в виде микросхем, имеют входы, соответствующие как RS-триггеру, так и D-триггеру, и могут быть использованы как триггеры любого из указанных двух типов.
Состояние триггера однозначно соответствует сигналу на выходе, который называется прямым выходом. Кроме пря­мого выхода у триггера имеется так называемый инверсный выход, значение сигнала которого всегда противоположно значению сигнала прямого выхода. Это позволяет, например, иметь на выходах регистра, состоящего из восьми триггеров, одновременно прямой и обратный коды вводимого 8-разряд­ного двоичного числа.
Поскольку все процессы преобразования сигналов в ЭВМ синхронизированы, в схемах регистров используются синхро­низируемые триггеры. В таких триггерах кроме информацион­ных входов имеется специальный вход, на который подаются сигналы синхрогенератора. Изменение состояния триггера про­исходит только во время появления тактового импульса на его синхронизирующем входе. Изменение значений информацион­ных сигналов в период пауз тактовых импульсов на состояние триггера влияния не оказывает.


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

ТЕЛЕВИЗОРА ИЛИ ОСЦИЛЛОГРАФА


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

Читатель должен строго соблюдать правила техники безопас­ности при работе с таким высоковольтным прибором, как теле­визор, особенно если он будет каким-либо образом переделы­вать его!

В телевизоре два генератора развертки отклоняют электрон­ный луч, модулированный по интенсивности. Первый переме­щает луч горизонтально и быстро возвращается. Период состав­ляв! 64 мкс (частота 15,625 кГц), причем четвертая часть перио­да занята обратным ходом луча. Вторая отклоняющая система перемещает луч вертикально с периодом 20 мс (50 Гц). Таким образом, на экране появляются 312 горизонтальных линий (строк), и если импульс обратного .вертикального хода луча формируется во время появления 313-й строки, то обеспечива­ется обьиная стандартная развертка в 625 строк.

Для алфавитно-цифрового дисплея МП-системы не требуется разрешающая способность в 625 строк, вполне достаточно 312, что упрощает схему дисплея. Устройство, управляющее телевизионным (ТВ) монитором, вырабатывает три сигнала. Фронт импульса синхронизации горизонтальной развертки Н опреде­ляет начало обратного хода луча. Минимальная длительность импульса Н зависит от ТВ монитора. Фронт импульса вертикаль­ной синхронизации V определяет начало обратного хода луча по вертикали. Модуляционный сигнал интенсивности Z в случае цифрового дисплея является двоичным, т. е. принимает только два значения. Телевизионные мониторы с цифровым управле­нием имеют три независимых входа для сигналов Н, V и Z.
Большинство ТВ-мониторов и некоторые бытовые телевизоры имеют вход для смешанного сигнала С с более жесткими ограни­чениями по длительности и положению синхроимпульсов. Сигнал на антенном входе бытового телевизора эквивалентен высоко­частотно-модулированному полному сигналу С.

Разрешающая способность экрана по горизонтали ограничена шириной полосы пропускания и электронной трубкой. Для обычного ТВ-приемника полоса пропускания не превышает 5 МГц.

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

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

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



Рис. 10.7. Схема генератора знаков



Рис. 10.8. Схема приставки для формирования буквенно-цифровых сим­волов на экране ТВ

Страница текста запоминается в специальном местном ЗУ, Символы передаются на дисплей параллельно, содержимое па­мяти передается на знакогенератор при синхронизации с дели-

телей (рис. 10.8). Процессор может модифицировать содержи­мое ЗУ текста. При этом блокируется обращение к ЗУ от дисплея.



ТТЛ-ВХОДЫ И ТТЛ-ВЫХОДЫ


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

Вывод микросхемы, на который сигнал необходимо подавать, называется входом (для ТТЛ-микросхем - ТТЛ-входом), а вывод, на котором сигнал вырабатывается самой микросхе­мой, называется выходом (для ТТЛ-микросхем - ТТЛ-выхо­дом). В этом параграфе будут подробно рассмотрены характе­ристики ТТЛ-входов и ТТЛ-выходов.

Входные и выходные уровни напряжения ТТЛ-микросхем имеют определенные значения. Высокий уровень напряжения должен лежать в пределах от +2,4 до +5 В для ТТЛ-выхода и в пределах от +2 до +5 В для ТТЛ-входа, а низкий уровень -от 0 до +0,4 В для ТТЛ-выхода и от 0 до +0,8 В для ТТЛ-входа. Между нижней границей для более высокого уровня и верх­ней границей для более низкого уровня напряжения ТТЛ-входа имеется диапазон напряжения (от 0,8 до 2 В) шириной 1,2 В. Этот диапазон предназначен для защиты микросхемы от лож­ных срабатываний при помехах амплитудой менее 1,2 В. Если бы его не было, то любая малая помеха приводила бы к тому, что напряжение сигнала попадало бы из области низких напря­жений в область высоких (или наоборот).
В этом диапазоне напряжение сигнала может находиться только в момент пере­ключения с одного уровня напряжений на другой.

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

Рис. 5.2. ТТЛ-вход и схема для снятия ха­рактеристики



Рис. 5.3. Характеристи­ка ТТЛ-входа

ТТЛ-вход является эмиттером многоэмиттерного транзисто­ра (рис. 5.2). Диод к эмиттеру подключен для того, чтобы огра­ничивать отрицательные импульсы напряжения. Если поставить эксперимент, изображенный на рис. 5.2, то можно получить входную характеристику ТТЛ-входа, т. е. зависимость тока от подаваемого напряжения (рис. 5.3). Ветви 1 соответствует ток, вытекающий в ТТЛ-вход, который в этом случае работает как р-п переход, включенный в обратном направлении, и поэтому значение тока невелико. Этот ток обозначается обычно I1вх. Ветви 2 соответствует ток, который вытекает из ТТЛ-входа, работающего как р-п переход, включенный в прямом направ­лении.


В этом случае ток ограничивается сопротивлением R. Этот ток обозначается I0вх. В диапазоне напряжений, соответст­вующем высокому уровню, I1вх должен быть не больше 0,1 мА, а в диапазоне, соответствующем низкому уровню, I0вх должен быть не больше 1,6 мА. Направления I0вх и I1вх показаны стрел­ками на рис. 5.2. Вход с такими характеристиками называется стандартным ТТЛ-входом или стандартной ТТЛ-нагрузкой.

Рис. 5.4. ТТЛ-выход



Рис. 5.5. Схема снятия характеристики ТТЛ-выхода при высоком уровне напряжения (а); характеристика (б)

ТТЛ-выходы бывают трех типов: нормальный ТТЛ-выход, выход с открытым коллектором и выход с тремя состояниями. Схема нормального ТТЛ-выхода приведена на рис. 5.4. Для того чтобы создать на выходе высокий уровень напряжения, с помощью внутренних управляющих цепей открывается верх­ний транзистор и закрывается нижний. Если поставить экспери­мент по схеме, изображенной на рис. 5.5,л, то можно снять вы­ходную характеристику ТТЛ-выхода при высоком уровне на­пряжения (рис. 5.5,6). Из этой характеристики видно, что с возрастанием вытекающего тока I1вых напряжение на выходе уменьшается. Стандартный ТТЛ-выход должен обеспечивать при I1вых, равном 1 мА, высокий уровень напряжения (не мень­ше+2,4 В).



Рис. 5.6. Схема снятия характеристики ТТЛ-выхода при низком уровне напряжения (а); характеристика (б)

Для того чтобы создать на выходе напряжения низкого уров­ня, с помощью внутренних управляющих цепей открывается нижний транзистор и закрывается верхний. Схема, с помощью которой можно снять выходную характеристику ТТЛ-выхода, и сама характеристика приведены на рис. 5.6. Из этой характе­ристики видно, что с возрастанием втекающего тока напряже­ние на ТТЛ-выходе, находящемся в состоянии низкого напряжения, увеличивается. Стандартный ТТЛ-выход должен обеспе­чивать при I0вых, Равном 16 мА, высокий уровень напряжения (не более 0,4 В). Если теперь сравнить входные и выходные токи, то видно, что к одному стандартному ТТЛ-выходу можно подключить, не перегружая его, 10 стандартных ТТЛ-входов.


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

Диод между эмиттером верхнего транзистора и коллектором нижнего транзистора включен для того, чтобы избежать откры­вания верхнего транзистора при низком уровне напряжения на выходе. При переключении выходных транзисторов в какой-то момент времени они оба оказываются открытыми и ток через них резко возрастает (в этот момент ток ограничивается толь­ко резистором К). Резкое возрастание тока может создать им­пульс помехи, распространяющейся по цепям питания. Для подавления таких помех используются развязывающие конден­саторы, которые включаются между линией питания и общим выводом в непосредственной близости от микросхемы. Развя­зывающий конденсатор должен быть один на группу не более 10 микросхем и должен иметь емкость не менее 0,002 мкФ на микросхему.

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



Рис. 5.7. Выход с открытым кол­лектором



Рис. 5.8. Соединение нескольких вы­ходов с открытым коллектором

Второй тип ТТЛ-выхода — это так называемый выход с от­крытым коллектором. Как следует из названия, выход такого типа представляет собой коллектор транзистора (рис. 5.7). Для того чтобы обеспечить нормальную работу этого выхода, его необходимо соединить через резистор с положительным полюсом источника питания. Тогда если транзистор закрыва­ется с помощью внутренних управляющих цепей, то напряже­ние на выходе больше +2,4 В, что достаточно для создания стандартного высокого ТТЛ-уровня; если же транзистор откры­вается, то напряжение на выходе падает до стандартного низкого ТТЛ-уровня. При закрытом выходном транзисторе ток I1вых течет от положительного полюса источника питания через рези­стор R, при открытом транзисторе ток I0вых течет через транзи­стор.


Резистор R рассчитывается так, чтобы обеспечить необхо­димые значения токов I0вых и I1вых.

В отличие от стандартных ТТЛ-выходов выходы с открытым коллектором можно соединять друг с другом (рис. 5.8). В этом случае высокий уровень напряжения поддерживается в точке соединения только тогда, когда закрыты транзисторы всех выходов, поэтому в этой точке реализуются логическая функ­ция И при позитивной логике и логическая функция ИЛИ при негативной логике. Такая схема часто называется "монтажное И" или "монтажное ИЛИ" в зависимости от используемой логики.

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


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

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

5.3. ВРЕМЕННЫЕ ДИАГРАММЫ

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



Рис. 5.9. Дискретный сигнал:

а - на экране осциллографа; б - условное графическое изоб -ражение

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



Приведем некоторые соглашения, которые используются при изображении сигналов на временньгх диаграммах. Высокий уро­вень изображается, как показано на рис. 5.10,я, состояние вы­сокого сопротивления - как на рис. 5.10,в, низкий уровень -как на рис. 5.10,6. Штриховые линии на этих рисунках приведе­ны только для сравнения и обычно не наносятся. На рис. 5.11 показано, как изображается переход с одного уровня на другой. Переход от низкого уровня к высокому называется фронтом, а от высокого к низкому — срезом. Иногда употребляют также термины "нарастающий и спадающий фронт", "передний и зад­ний фронт", "положительный и отрицательный фронт" и некото­рые другие. Если переход от одного уровня к другому происхо­дит не в конкретный момент времени, а может произойти в лю­бой момент времени в течение некоторого интервала времени, то это изображается как на рис. 5.12.



Рис. 5.10. Изображение уров­ней напряжения:

а — высокий; б — низкий; в — состояние высокого со­противления



Рис. 5.11. Изображение фрон­тов:

а - фронт; б - срез



Рис. 5.12. Изображение фронтов в неопределенный момент вре­мени



Рис. 5.13. Изображение зависи­мости одного сигнала от дру­гого

Изменение одного сигнала может быть причиной изменения другого сигнала. Если изменение вызывается фронтом сигнала, то это изображается как на рис. 5.13,я, если уровнем сигнала -то как на рис. 5.13,6. При этом кружок отмечает тот элемент сигнала, который вызывает изменение, а стрелка указывает на изменение зависимого сигнала. Изменение одного сигнала мо­жет быть причиной изменений нескольких сигналов, тогда это изображается, как показано на рис. 5.14, и наоборот, измене­ние некоторого сигнала может вызываться только определен­ными изменениями нескольких других сигналов (рис. 5.15).



Рис. 5.14. Изображение зависи­мости нескольких сигналов от одного



Рис. 5.15. Изображение зависи­мости одного сигнала от не­скольких других




  Рис. 5.16. Изображение неопре­деленного сигнала

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



Рис. 5.18. Изображение времен­ных интервалов



Рис. 5.17. Изображение несколь­ких сигналов, ведущих себя идентично с точки зрения пере­ходов с уровня на уровень

5.4. МИКРОСХЕМЫ, РЕАЛИЗУЮЩИЕ ЛОГИЧЕСКИЕ ФУНКЦИИ

В этом и следующем парагра­фах будут описаны микросхемы, используемые в ПМ-ЭВМ. Как правило, инженеров, имеющих дело с микросхемами, не интересует их внутреннее устройство, их интересуют только выполняемые ими функции и характеристики входов и выхо­дов. Функции микросхем будут описываться с помощью таблиц, в которых будут указываться входные и выходные комбинации сигналов низкого и высокого уровней. Сигнал низкого уровня будет обозначаться буквой L, высокого — буквой Н, фронт — стрелкой t, срез — стрелкой 4. Если сигнал никак не влияет на работу микросхемы в каком-либо режиме, он будет обозна­чаться символом X. Для описания работы микросхем будут также применяться таблицы истинности и временные диаграм­мы. Для каждой микросхемы будет приводиться ее условное графическое изображение. Номера выводов, на которые пода­ется напряжение питания, и номера общих выводов перечис­лены в приложении 3.



Puc. 5.19. Микросхема К5 89АП16



Рис. 5.20. МикросхемаК589АП16 как двунаправленный буфер




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

Если на входе CS низкий уровень, то сигналом на входе S можно управлять направлением передачи. При низком уровне на входе S сигнал передается от входа А на выход В, т. е. уровень сигнала на выходе такЬй же, как и на входе. Выход С при этом находится в отключенном состоянии. При высоком уров­не на входе S сигнал передается от входа В к выходу С, а вы­ход В находится в отключенном состоянии. Таким образом, вывод В может работать и как вход для выхода С, и как выход для входа А, и его можно использовать для организации одной линии двунаправленной шины для передачи данных. Выводы А и С можно соединять друг с другом (рис. 5.20), тогда эти вы­воды можно также использовать как одну двунаправленную линию, направлением передачи по которой, управляет вход S.

Таблица5.1

Уровень сигнала на управляющих входах сигнала


 Направление передачи

Выход в от­ключенном

CS

S

от входа

к выходу

— состоянии

Н L L

X

L Н

Нет А В

Нет В С

В, С С В


Рис. 5.21. Микро­схема К155ЛН1

Рис. 5.22. Микросхема К155ЛАЗ

Рис. 5.23. Микро­схема К155ЛА1


Микросхема К155ЛН1 (рис. 5.21). Эта микросхема содержит шесть элементов, каждый из которых имеет один вход и один выход и выполняет логическую функцию НЕ (табл. 5.2 и 5.3).

Микросхема К155ЛАЗ (рис. 5.22). Эта микросхема содер­жит четыре элемента, каждый из которых имеет два входа и один выход и выполняет функцию И — НЕ при позитивной и функцию ИЛИ — НЕ при негативной логике. На рис. 5.22 приво­дится условное графическое изображение этой микросхемы при позитивной логике. Таблица 5.4 описывает работу каждого двухвходового элемента; табл. 5.5 и табл. 5.6 — таблицы истин­ности для позитивной и негативной логик соответственно.

Таб л и ц а 5.2                                Таблица 5.3

Вход

Выход

Вход

Выход

L

Н

Н

 L

0

1

1

 0


Таб лица 5.4

Входы

Выход

L

L

Н

L

Н

Н

Н

L

Н

Н

Н

L

Та б л и ц а 5.5

Входы

Выход

0

0

1

0

1

1

1

0

1

1

1

0

Т а б л и ц а 5.6

Входы

Выход

0

0

1

0

1

0

1

0

0

1

1

0


Микросхемы К155ЛА1 и К155ЛА2. Эти микросхемы выпол­няют функции, аналогичные функциям микросхемы К155ЛАЗ, т. е. функции И-НЕ при позитивной и функции ИЛИ-НЕ при негативной логиках. Микросхема К155ЛА1 (рис. 5.23) содер­жит два четырехвходовых элемента, и поэтому выполняемая ею функция называется и обозначается 4И — НЕ (4ИЛИ- НЕ). Так как полные таблицы, описывающие работу этой микро­схемы, были бы велики, приведем их в сокращенном виде (табл. 5.7-5.9). Таблица 5.7 описывает работу одного элемента микросхемы К155ЛА1, табл. 5.8 и 5.9 - таблицы истинности при позитивной и негативной логиках соответственно.



Та б ли ца 5.7

 

Входы

Выход

L

X

X

X

H

X

L

X

X

H

X

X

L

X

H

X

X

X

L

H

H

H

H

H

L

Таблица 5.8

 

Входы

Выход

0

X

X

X

1

X

0

X

X

1

X

X

0

X

1

X

X

X

0

1

1

1

1

1

0

Таблица 5.9

 

Входы

Выход

1

X

X

X

0

X

1

X

X

0

X

X

1

X

0

X

X

X

1

0

0

0

0

0

1





Рис. 5.24. Микро­схема К155ЛА2



Рис. 5.25. Микро­схема К155ЛЕ1



Рис. 5.26. Микросхема К155ИД4

Из табл. 5. 7 видно, что если хотя бы на одном из четырех входов элемента присутствует низкий уровень, то на выходе будет высокий уровень. Только когда на всех четырех входах высокий уровень, то на выходе — низкий уровень.

Микросхема К155ЛА2 (рис. 5.24, табл. 5.10) содержит один восьмивходовый элемент, который выполняет функцию 8И — НЕ при позитивной логике (табл. 5.11) и функцию 8ИЛИ — НЕ (табл. 5.12) при негативной логике.

Микросхема К155ЛЕ1 (табл. 5.13, рис. 5.25) содержит четыре элемента, каждый из которых имеет два входа и один выход и выполняет функцию ИЛИ — НЕ при позитивной логике(табл. 5.14) или функцию И — НЕ (табл. 5.15) при негативной логике.

Таблица 5.10

 

Входы

 

Выход

L

X

X

X

X

X

X

X

Н

X

L

X

X

X

X

X

X

Н

X

X

L

X

X

X

X

X

Н

X

X

X

L

X

X

X

X

Н

X

X

X

X

L

X

X

X

Н

X

X

X

X

X

L

X

X

Н

X

X

X

X

X

X

L

X

н

X

X

X

X

X

X

X

L

н

Н

н

н

н

н

н

Н

Н

L

Таблица 5.11

Входы

Выход

0

X

X

X

X

X

X

X

1

X

0

X

X

X

X

X

X

1

X

X

0

X

X

X

X

X

1

X

X

X

0

X

X

X

X

1

X

X

X

X

0

X

X

X

1

X

X

X

X

X

0

X

X

1

X

X

X

X

X

X

0

X

1

X

X

X

X

X

X

X

0

1

1

1

1

1

1

1

1

1

0



В РАБОЧЕМ РЕЖИМЕ


Итак, ПМ-ЭВМ собрана, реаги­рует на нажатия клавиш, индикация загорается и гаснет, по-ви­димому, так, как нужно. Но это еще не значит, что ПМ-ЭВМ полностью проверена и функционирует правильно. Гарантиро­вать стопроцентную проверку вычислительной системы вообще невозможно, тем более с помощью имеющихся у читателя про­стейших средств. МП может неправильно выполнять некоторые операции и притом только для некоторых сочетаний кодов, микросхемы запоминающих устройств могут иметь неисправ­ные или ненадежные ячейки, искажающие некоторые сочетания кодов. Отдельные элементы ЭВМ могут работать в предельных режимах по нагрузке, по временным допускам, по питанию, по уровню помех и выдавать сбои при изменении внешних условий. Рано или поздно это выявится в процессе эксплуатации. Однако надлежаще проведенные испытания в начале эксплуатации по­зволят выявить значительную часть дефектов и устранить их. Первое, что необходимо сделать, - это проверить работоспо­собность ОЗУ. Простейший способ - записывать в ячейки ОЗУ с помощью клавиатуры различные коды, а затем последователь­но считывать их, проверяя совпадение. Такой метод очень трудо­емок, так как ПМ-ЭВМ имеет 1024 ячейки ОЗУ, к тому же не­которые ячейки, надежные в статике, в динамике могут выда­вать неверные коды. Приведенная ниже программа позволяет автоматически записать заданный код в произвольно заданную зону оперативной памяти. Программа записывается, начиная с ячейки ОЗУ с адресом 014Q OOOQ и занимает 24 ячейки. Зона памяти, в которую заносится код, может начинаться с ячейки 014Q 030Q. Этот адрес заносится в регистровую пару Н коман­дой LXIH. Адрес конца зоны заносится в регистровую пару D командой LXID. Устанавливаемый код задается вторым байтом команды MVIM адреса 014Q 007Q и 014Q 024Q. Проверку пра­вильности записи можно произвести вручную, последовательно просматривая память:

014000041                                 Ml: LXIH, 014Q 030Q

014001 030

014002014

014003021                                             LXI D, 017Q377Q


014 004 377

014005017

014006066                                 M2: MVIM, OOOQ

014 007 000

014010043                                             INXH

014011 174                                             MOV A, H

014012222                                             SUBD

014 013 302                                             JNZ M2

014014 006

014015  014

014016173                                             MOV A, E

014017225                                             SUBL

014 020 302                                             JNZ M2

014 021 006

014022014

014 023 066                                             MVI M, OOOQ

014 024 000

014025303                                             JMPM1

014 026 000

014027014

Путем незначительного усложнения программы можно авто­матизировать проверку правильности записи:

014 000 006                                             MVI B, OOOQ

014 001 000

014002041                                 Ml: LXI H, 014Q 055Q

014003055

014 004 014

014 005 021                                             LXI D, 020Q OOOQ

014 006 000

014 007 020

014010160                                 M2: MOV M, В

014011 170                                             MOV А, В

014012226                                             SUBM

014013302                                             JNZM4

014014  035

014015  014

014016043                                   МЗ: INX H

014017174                                               MOV A, H

014 020 222                                                SUB D

014021302                                               JNZM2

014022010

014023  014

014024  173                                                MOV A, E

014025225                                                SUB L

014026302                                                JNZ M2

014027010

014030014

014031000                                               NOP

014032303                                                JMPM1



014033  002

014034  014

014035174                                   M4: MOV A. H

014036323                                                OUT 0010

014037 001

014040175                                               MOV A, L

014041323                                                OUT OOOQ

014 042 000

014043 176                                                MOV A, M

014044323                                                OUT002Q

014045 002

014046315                                               CALLSKL

014047 177

014050000

014051303                                                JMPM3

014052016

014053 014

В данной программе проверочный код заносится по адресу 014Q 001Q. Сверка кодов производится последовательно в по­рядке возрастания адресов. При обнаружении ошибки програм­ма выводит адрес в порт 001 (старшие разряды) и в порт 000 (младшие разряды), содержимое ячейки — в порт 002 и перехо­дит в режим опроса клавиатуры. Нажатие любой кнопки за­пускает программу на проверку следующих ячеек до новой ошибки, и так далее до конца проверяемой зоны. Для более полной проверки необходимо задавать различные проверочные коды, в предельном случае — от OOOQ до 377Q. Поставив на место команды NOP по адресу 014Q 031Q команду INRB (код 004Q), получим программу автоматической проверки памяти для всех кодов. Читатель" может сам оценить, какая программа удобнее в эксплуатации. Необходимо заметить, что ячейки ОЗУ, отведенные для программы проверки, должны быть заве­домо исправными, и чем длиннее программа, тем труднее найти зону для ее размещения.

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

С помощью простейших пробных программ необходимо также проверить исполнение всей системы команд МП.Напри­мер, программа MVI A, OPERA ADI, OPERB OUT PORT1 проверяет исполнение команд MVIA, ADI и OUT.



ВНЕШНЯЯ ПАМЯТЬ


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

Непосредственно на плате ПМ-ЭВМ могут быть дополнительно установлены микросхемы памяти на 2 Кбайта. При этом не потребуется никакого дополнительного оборудования, так как для выдачи сигналов выборки микросхем ОЗУ используются ранее не задействованные выводы дешифратора К155ИД4 (микросхема D11).

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

Для формирования энергонезависимой части памяти могут быть применены микросхемы ПЗУ с однократной записью ин­формации, например типа КР556РТ4, которые уже использованы в ПМ-ЭВМ для хранения программы-монитора. Более удобными могут оказаться микросхемы ППЗУ с электрической записью и ультрафиолетовым стиранием типов К573РФ1, К573РФ2, К573РФ4, К573РФ5. Наконец, могут быть использованы микро­схемы ППЗУ с электрической записью и стиранием информации, например типов КР558РР1 и КР558РР11.

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



ЗВУКОВАЯ СИГНАЛИЗАЦИЯ


В рассмотренной в § 9.2 кон­струкции кодового замка мы уже использовали звуковую сигнализацию для подачи сигнала тревоги. Для этого наушник или репродуктор подключался через резистор 200 Ом к младшему разряду порта 001 между выводом 16 микросхемы D18 и источником +5 В. Определенный звуковой тон получался в результате того, что в порт 001 выводилось содержание ре­гистра, инкрементируемого в постоянном темпе. Частота сиг­нала, получаемого с младшего разряда порта, равна половине частоты инкрементирования и задается временной задержкой соответствующего программного цикла. В следующем разряде частота вдвое меньше и т. д. Следовательно, подключая репро­дуктор не к младшему разряду порта, а к старшим, получим тон на соответствующее число октав ниже. Подавая на репро­дуктор через резисторы сигналы с разных разрядов порта, полу­чим звуки одного тона, но с разным содержанием гармоник. Если же в несколько портов выводить содержимое регистров, к которым с постоянной частотой прибавляются различные чис­ла, то, подключив репродуктор, к выходам портов через резисто­ры, можно получить различные аккорды.

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

Подключим репродуктор и введем в ПМ-ЭВМ следующую программу:

014000061                               Ml: LXISP,TAB

014001 036

014002014

014003301                               М2: POP В

014 004 170                                          MOV A, B

014 005 267                                           ORA A

014006312                                          JZ.M1

014 007 000

014010014

014011171                               МЗ: MOVA.C

014012267                                           ORA A

014013312                                          JZ,M4

014014 023

014015  014

014016034                                          INRE

014017173                                          MOV A, E

014020323                                          OUT, 0010


014 021 001

014022171                                           MOV А, С

014023075                               М4: DCRA

014024302                                          JNZ,M4

014025 023

014026014

014 027 005                                           UCR B

014030302                                          JNZ,M3

014031  Oil

014032 014

014 033 303                                             JMP, M2

014 034 003

014035 014

014 036 175                                 TAB: до

014037 145

014040160                                            ре

014041161

014 042 144                                             ми

014043 177

014 044 136                                             фа

014 045 207

014 046 124                                             соль

014 047 230

014050113                                             ля

014 050 252

014051102                                             си

014 052 277

014 053 077                                             до

014054 313

014 055 000

014 056 000

Нажмем кнопки СБРОС и Ц. Репродуктор начинает наигры­ вать гамму. Воспроизводимая мелодия запрограммирована таб­лицей, начинающейся с метки TAB. Таблица содержит пары чи­сел, последовательно извлекаемые процессором из памяти с по­мощью команды POP В. Первое число из пары заносится в ре­гистр С и задает высоту тона, второе число заносится в регистр В и задает длительность звучания ноты. Если в регистре В оказы­вается нуль, программа возвращается к началу таблицы. Если в регистре С оказывается нуль, формируется пауза. Подсчитав длительности программных циклов, нетрудно определить, какие числа в таблице соответствуют различным нотам, и запрограмми­ровать любую мелодию. Надо иметь в виду следующее: для того чтобы различные ноты имели одинаковую длительность звучания, произведение первого числа из пары на второе должно быть постоянным.

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