Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем.
На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения.
Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.
Содержание:
Глава 11 - МИКРОПРОЦЕССОРЫ 1
Глава 12 - КОНСТРУИРОВАНИЕ ЭЛЕКТРОННЫХ СХЕМ 28
Глава 13 - ВЫСОКОЧАСТОТНЫЕ И БЫСТРОДЕЙСТВУЮЩИЕ ПРИБОРЫ 39
Глава 14 - ПРОЕКТИРОВАНИЕ МАЛОМОЩНЫХ УСТРОЙСТВ 57
Глава 15 - ИЗМЕРЕНИЯ И ОБРАБОТКА СИГНАЛОВ 82
Приложения 102
Библиография 116
Таблицы 118
Примечания 119
Хоровиц Пауль, Хилл Уинфилд
"Искусство схемотехники"
Том 3
(Главы 11–15)
Издание 4-е переработанное и дополненное
THE ART OF ELECTRONICS
Second Edition
Paul Horowits Harward University
Witlfield Hill Rowland Institute for Science, Cambridge, Massachusetts
CAMBRIDGE UNIVERSITY PRESS
Cambridge
New York Port Chester Melbourne Sydney
Глава 11
МИКРОПРОЦЕССОРЫ
Перевод К Г. Финогенова и М. П. Шарапова
МикроЭВМ, обсуждавшиеся в предыдущей главе, представляют собой автономные вычислительные системы, скомпонованные вокруг микропроцессора и включающие обычно массовую память (диски), графические дисплеи, принтеры и, возможно, какое-то сетевое оборудование. Эти машины комплектуются терминалом, памятью и портами ввода-вывода, а также дополнительными вставными платами, расширяющими их возможности. МикроЭВМ прекрасно подходят для обработки текстов, выполнения вычислительной работы, построения систем автоматизированного проектирования (САПР) и даже автоматизированных систем управления производством (АСУП). В сочетании с коммерчески доступными аппаратными средствами микроЭВМ могут выступать в качестве программаторов логических устройств, логических анализаторов и интерфейсных процессоров в самых различных инженерных применениях. Встроив в разрабатываемый вами прибор или систему микропроцессор вместе с некоторыми дополнительными схемами, вы получите устройство, обладающее мощностью микроЭВМ. В такого рода "жестких" приложениях процессор выполняет фиксированную программу, зашитую в ПЗУ, при этом отпадает необходимость в массовой памяти (диски, лента), терминалах и т. д. Внешне прибор может иметь самый обычный вид, хотя его повышенную интеллектуальность часто выдает наличие специализированной клавиатуры. Приборы с микропроцессорным управлением, как правило, имеют лучшие характеристики при меньшей стоимости и более простом устройстве в сравнении с эквивалентными системами, выполненными на дискретных логических микросхемах. Более того, модификация или совершенствование прибора часто требует лишь написания новой программы.
Очевидно, что компетентный разработчик не может игнорировать отмеченные обстоятельства. Если вам требуются еще какие-то стимулы, можно отметить, что возня с микропроцессором - сущее удовольствие; встроив его в свой прибор, вы испытаете восхитительное чувство собственного могущества.
При разработке приборов с микропроцессорным управлением приходится уделять заметно больше внимания вопросам конструирования и программирования, чем при разработке микроЭВМ. В частности, следует выбрать тип памяти (статическое или динамическое ОЗУ, программируемое ПЗУ, электрически стираемое программируемое ПЗУ) и определить ее расположение в доступном "пространстве памяти"; определить форму ввода-вывода (включая выбор аппаратной реализации: обычные функциональные микросхемы среднего уровня интеграции или заказная БИС "периферийной поддержки"); написать и отладить встраиваемое программное обеспечение исходя из условий работы программно-управляемого прибора. Как правило, разработчики систем с микропроцессорным управлением должны свободно владеть как аппаратными средствами, так и программированием на языке ассемблера.
Большая часть концепций программирования и интерфейса с магистралью, обсуждавшихся в предыдущей главе применительно к микроЭВМ, непосредственно приложима к схемам микропроцессорного управления, и в дальнейшем мы предполагаем, что читатель знаком с содержанием гл. 10 . Настоящую главу мы начнем с детального рассмотрения небольшого микропроцессора с элегантной системой команд, а именно МП Motorola 68008, который в сущности представляет собой 32-разрядный процессор (68000) с 8-разрядной внешней шиной данных.
Описав его архитектуру и систему команд, мы рассмотрим затем полный пример разработки - аналоговый "усреднитель сигналов", укомплектованный графическим дисплеем, цифровыми последовательными и параллельными портами и другими полезными деталями.
Естественно, никакая микропроцессорная система не может считаться завершенной без программного обеспечения, которое мы также рассмотрим применительно к нашему примеру. По ходу дела нам придется столкнуться с большими интегральными микросхемами - периферийными и памяти, и мы выскажем о них некоторые полезные замечания. Далее в главе будет уделено внимание синхронизации, шинам данных, а также другим популярным процессорам, включая микросхемы "микроконтроллеров" с высокой степенью интеграции. Наконец, мы отступим на шаг, чтобы обозреть весь процесс конструирования микропроцессорного устройства и коснемся систем разработки, макетных плат и эмуляторов.
Внимательный взгляд на МП 68008
Обилие микропроцессоров различных типов может поставить в тупик разработчика. Печальным правилом мира микропроцессоров является несовместимость различных микропроцессорных комплексов как в аппаратной реализации (сигнальные линии, интерфейсные протоколы и т. д.), так и в наборах команд. Вместо того чтобы пытаться подобрать наилучший микропроцессор для каждого применения, лучше остановиться на каком-то достаточно зарекомендовавшем себя микропроцессоре, создать для него систему разработки и накапливать с ее помощью опыт и знания. Это разумно еще и потому, что усилия и средства, затраченные на разработку программного обеспечения для микропроцессорной системы, часто превышают затраты на аппаратную разработку.
В этой главе мы рассмотрим МП Motorola 68008, являющийся младшим представителем элегантного и популярного семейства микропроцессоров 68000, находящих применение в таких микроЭВМ, как Macintosh, NeXT, Sun и Apollo. Этот микропроцессор практически идентичен МП 68000 (16-разрядная шина данных, 24-разрядная адресная шина), но упакован в 48-контактный DIP-корпус с 8-разрядной шиной данных и 20-разрядный адресной шиной. Микропроцессор выполняет те же программы, что и МП 68000; более узкая шина данных абсолютно прозрачна для использования.
Регистры. На рис. 11.1 показаны внутренние регистры МП 68000 (мы будем использовать обозначение "68000" при описании черт, общих для МП 68000 и 68008).
Рис. 11.1. Регистры МП 68000/8.
Процессор содержит 8 регистров данных и 7 адресных регистров, причем все они в полной мере являются регистрами общего назначения; вспомним в связи с этим, что в МП 8086/8 регистр АХ (AL) должен использоваться в операциях ввода-вывода, DX - для адресации к портам и т. д. Регистры данных могут содержать "байты" (8 бит), "слова" (16 бит) и "данные слова" (32 бит), причем тип данных в любой операции указывается непосредственно в обозначении команды на языке ассемблера (см. ниже). Все вычисления и обработка байтов выполняются в регистрах данных.
Адресные регистры используются как указатели памяти или пространства ввода-вывода в 5 из 12 возможных для МП 68000 способов адресации; в адресных регистрах допустимо выполнение лишь нескольких арифметических операций (сложение, вычитание, сравнение, пересылка). Сегменты, как и сегментные регистры, отсутствуют; в микропроцессорах семейства 68000 всегда возможен доступ ко всему адресному пространству (1 или 4 Мбайт для МП 68008 в DIP - или четырехстороннем корпусе, 16 Мбайт для 68000, 4 Гбайт для 68020/30).
В микропроцессоре также имеются: указатель стека (фактически их два, но в каждый данный момент активен только один), программный счетчик PC (именуемый в МП 8086/8 "указатель команд") и регистр состояния SP. Последний содержит флаги (нуля, переноса, переполнения и др.), а также маску прерываний и биты режима.
Память и ввод-вывод. В отличие от МП 8086/8 в процессорах 68000 не предусмотрены отдельные сигналы магистрали ввода-вывода и в их системе команд отсутствуют команды ввода-вывода типа IN и OUT. Ввод-вывод осуществляется так же, как и обращение к памяти, с использованием адресов полной длины и стробирующих сигналов. Для подключения порта ввода-вывода вам следует декодировать адресные линии и сделать так, чтобы регистры ваших портов выглядели, как несуществующая память. Такой метод называется отображением ввода-вывода на пространство памяти; он используется во многих микропроцессорах. (Впрочем, даже в случае самостоятельного протокола ввода-вывода МП 8086 всегда можно отобразить ввод-вывод на пространство памяти с помощью стробирующих сигналов MEMR' и MEMW'.)
Преимущество отображения ввода-вывода на пространство памяти заключается в том, что для операций над регистрами портов можно использовать все команды, предназначенные для работы с памятью. Специальные команды IN/OUT МП 8086/8 заменяет команда MOVE; кроме этого, непосредственно над содержимым портов можно выполнять операции арифметические (сложения, вычитания, циклического сдвига, сравнения, проверки), логические (И, ИЛИ), а также над битами (установка бит, проверка бит). Единственный недостаток отображения ввода-вывода на пространство памяти заключается в необходимости декодировать много адресных линий; практически здесь не возникает трудностей, поскольку при большом адресном пространстве и малом числе портов ввода-вывода нет необходимости декодировать полный адрес (примеры см. ниже).
11.02. Система команд и способы адресации
В табл. 11.1 приведен полный набор команд МП 68000. Чтобы образовать правильный оператор (команду) языка ассемблера, следует указать операнды (с помощью одного из 12 режимов адресации) и тип данных (байтов, слово или длинное слово). На языке ассемблера фирмы Motorola оператор выглядит следующим образом:
ОПЕРАЦИЯ. размер источник, приемник
Здесь ОПЕРАЦИЯ берется из табл. 11.1, размер есть В, W или L (байт, слово или длинное слово соответственно), а источник и приемник могут представлять регистры, непосредственные константы или ячейки памяти. Ниже приведено несколько примеров с указанием способов адресации.
Таблица 11.1.Набор команд МП 68000/8
Операция · Описание
Арифметические
ABCD Сложение упакованных двоично-десятичных чисел
ADD Сложение
ASL Арифметический сдвиг влево
ASR Арифметический сдвиг вправо
CLR Очистка операнда
DIVS Деление (знаковое)
DIVU Деление (беззнаковое)
EXT Расширение знака
LSL Логический сдвиг влево
LSR Логический сдвиг вправо
MOVE Пересылка
MULS Умножение (знаковое)
MULU Умножение (беззнаковое)
NBCD Отрицание упакованного двоично-десятичного числа
NEG Отрицание
SBCD Вычитание упакованного двоично-десятичного числа
SUB Вычитание
Логические
AND Логическое И
BCHG Проверка и изменение бита
BCLR Проверка и очистка бита
BSET Проверка и установка бита
BTST Проверка бита
CHK Проверка регистра на границы
CMP Сравнение
EOR Исключающее ИЛИ
EXG Обмен регистров
NOT Побитовое дополнение
OR Логическое ИЛИ
RESET Возбуждение линии RESET
ROL Циклический сдвиг влево без расширения
ROR Циклический сдвиг вправо без расширения
ROXL Циклический сдвиг влево с расширением
ROXR Циклический сдвиг вправо с расширением
Scc Установить байт по условию
SWAP Обмен половин регистра
TAS Проверка и установка операнда
TST Проверка операнда и установка флагов
Управления
Всс Условный переход
BRA Безусловный переход (относительный)
BSR Переход на подпрограмму (относительный)
DBcc Проверка, декремент и переход
JMP Безусловный переход (7 режимов)
JSR Переход на подпрограмму (7 режимов)
LEA Загрузка эффективного адреса
LINK Подсоединение стека
NOP Холостая команда
PEA Загрузка в стек эффективного адреса
RTE Возврат из исключения
RTR Возврат, восстановление кодов условий
RTS Возврат из подпрограммы
STOP Останов
TRAP Ловушка (векторизованное исключение)
TRAPV Ловушка по переполнению
UNLK Отсоединение стека
Коды условий ("сс")
СС Перенос сброшен
CS Перенос установлен
EQ Равенство нулю
F Никогда не истина
GE Больше или равно нулю
GT Больше нуля
HI Выше
LE Меньше или равно нулю
LS Ниже или равно
LT Меньше нуля
MI Минус
NE Не равно нулю
PL Плюс
T Всегда истина
VC Переполнение сброшено
VS Переполнение установлено
См. "Коды условий".
Не используется в командах Вcс; вместо "ВТ" используйте BRA.
MOVE.W (непосредственная,
# $FFFF,D0 регистровая)
MOVE.B (А0), (А1) (косвенная, косвенная)
ADD.L D5, (А2) + (прямая, косвенная с постинкрементом)
BTST.B #2$C0000 (непосредственная, абсолютная длинная)
В первом примере устанавливаются в 1 все 16 бит регистра D0 (символ "$" обозначает "шестнадцатиричное", а "#" указывает на "непосредственную" константу); вторая команда копирует байт из ячейки памяти, адрес которой находится в А0, в ячейку памяти, адрес которой находится в А1; третья прибавляет 32-разрядное знаковое целое к 4-байтовому ("длинному") целому, которое начинается в памяти с байта, адресуемого через А2, после чего содержимое А2 увеличивается на 4; последняя команда проверяет бит 2 в ячейке памяти С0000Н, устанавливая соответствующим образом флаг нуля Z (для последующей команды условного перехода). Заметьте, что операнды cледуют в порядке - источник, приемник, что противоположно нотации МП 8086.