Глава 5 Принципы работы микропроцессорной системы

We use cookies. Read the Privacy and Cookie Policy

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

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

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

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

Системная шина

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

Рис. 5.1. Структурная схема простейшей микропроцессорной системы

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

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

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

Адресное пространство микропроцессорного устройства

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

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

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

M = 2N — 1

Для 16-разрядной шины это будет число 65535 (64 Кбайт). Адресное пространство этой шины приведено на рис. 5.2. Оно соответствует адресному пространству памяти микропроцессорной системы, изображенной на рис. 5.1.

Рис. 5.2. Адресное пространство микропроцессора с 16-разрядной шиной адреса

Распределением памяти называют разбиение адресного пространства на несколько областей, каждая из которых выделена для размещения ячеек какого-либо определенного элемента системы: ОЗУ, ПЗУ или внешних устройств. Часто его изображают в форме рисунка. Распределение адресного пространства, соответствующее схеме, приведенной на рис. 5.1, изображено на рис. 5.3.

Рис. 5.3. Распределение памяти микропроцессора с 16-разрядной шиной адреса

Обычно адресное пространство распределяют одновременно с проектированием принципиальной схемы устройства (созданием дешифраторов адреса для каждого подключаемого к системной шине устройства). Начнем распределение адресного пространства с выделения диапазона адресов для ПЗУ.

Микропроцессоры после включения питания и выполнения процедуры сброса всегда начинают выполнение программы с определенного адреса, чаще всего нулевого. Однако есть и исключения. Например, процессоры, на основе которых строятся универсальные компьютеры IBM PC или Macintosh, стартуют не с нулевого адреса. Программа или се загрузчик должны храниться в памяти, которая не стирается при выключении питания, т. е. в ПЗУ. Таким образом, адрес, записываемый в счетчик команд процессора после сброса, обязательно должен попадать в диапазон адресов, выделенных ПЗУ.

Выберем для построения микропроцессорной системы микросхему ПЗУ объемом 2 Кбайт, как это показано на рис. 5.1. При построении операционного блока мы договорились, что процессор после сброса начинает работу с нулевого адреса, поэтому разместим ПЗУ в адресном пространстве, начиная с нулевого адреса. Для того чтобы нулевая ячейка ПЗУ оказалась расположенной по нулевому адресу адресного пространства микропроцессора, старшие разряды шины адреса E разрядов, начиная с разряда 11) должны быть равны 0.

Так как в микросхеме ПЗУ уже имеются одиннадцать адресных выводов, то при построении схемы необходимо дополнительно декодировать старшие пять разрядов адреса (определить, чтобы они были равны 0). Это выполняется при помощи внешнего дешифратора адреса, который в данном случае вырождается в 5-входовую схему «ИЛИ». При использовании дешифратора адреса обращение микропроцессора за пределы нижней области 2 Кбайт не приведет к чтению ячеек ПЗУ, т. к. на входе выбора кристалла CS уровень напряжения останется высоким (неактивным).

Теперь подключим микросхему ОЗУ. Для примера выберем микросхему объемом 8 Кбайт. Выбор любой из ячеек этой микросхемы возможен при помощи 13-разрядного адреса, поэтому необходимо дополнительно декодировать сигналы трех старших линий 16-разрядной шины адреса. Так как начальные ячейки памяти адресного пространства уже заняты ПЗУ, то их использовать нельзя. Им соответствует значение старших разрядов адресной шины 000. Выберем для адресации ОЗУ комбинацию сигналов 001 и используем уже известные нам принципы построения схемы по произвольной таблице истинности. Дешифратор адреса выродится в данном случае в 3-входовую схему «И-НЕ» с двумя инверторами на входе. Схема дешифратора адреса ОЗУ приведена на рис. 5.1. Этот дешифратор адреса обеспечивает нулевой уровень сигнала на входе CS микросхемы ОЗУ только при комбинации старших битов адреса 001. Обратите внимание: т. к. объем ПЗУ меньше объема ОЗУ, то между областями адресов ПЗУ и ОЗУ образовалось пустое пространство неиспользуемых адресов памяти.

Так как все микропроцессоры предназначены для обработки данных, поступающих извне, то в любой микропроцессорной системе должны присутствовать порты ввода-вывода. Будем считать, что порт ввода-вывода отображается в адресное пространство микропроцессорного устройства как одиночная ячейка памяти, поэтому можно выбрать любой свободный адрес. Проще всего построить дешифратор числа FFFFh. В этом случае он превращается в обычную 16-входовую схему «И-НЕ», поэтому и выберем данный адрес для размещения порта ввода-вывода.

Способы расширения адресного пространства микропроцессора

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

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

Рис. 5.4. Использование параллельного порта в качестве переключателя страниц памяти

При применении 8-разрядного параллельного порта в микропроцессорной системе появились дополнительные восемь линий адреса. В результате адресное пространство микропроцессорной системы увеличилось до 16 Мбайт. Структура нового адресного пространства приведена на рис. 5.5, а принцип формирования нового адреса с использованием переключателя страниц пояснен на рис. 5.6.

Рис. 5.5. Структура страничного адресного пространства

Рис. 5.6. Формирование адреса с использованием переключателя страниц

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

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

Адресное пространство при использовании сегментного метода адресации и различном размере сегментов, приведено на рис. 5.7.

Рис. 5.7. Пример адресного пространства с разделением на сегменты

Для формирования физического адреса используется параллельный двоичный сумматор. На входы этого сумматора подается содержимое базового регистра и счетчика команд. Суммирование производится со смещением кода базового регистра влево на несколько битов относительно содержимого счетчика команд (рис. 5.8). В результате максимальный размер сегмента определяется разрядностью программного счетчика, а максимальная неиспользуемая область памяти — смещением базового регистра относительно программного счетчика.

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

Учитывая, что на рис. 5.8 базовый регистр смещен относительно программного счетчика на четыре разряда, минимальный шаг при размещении окон будет 24 = 16 байт. То есть в этом случае максимальная область неиспользуемой памяти между окнами будет равна 15 байтам.

Рис. 5.8. Формирование адреса при сегментной адресации

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

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

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

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

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

Принцип использования оконной адресации при отображении страниц дополнительной памяти в основное адресное пространство можно легко понять по рис. 5.9.

Рис. 5.9. Применение окна для расширения адресного пространства

Оконная адресация часто используется при развитии микропроцессорных семейств, когда размера областей памяти, отведенных для конкретных задач в младших моделях семейства, не хватает для старших моделей, а при этом нужно поддерживать аппаратную совместимость с младшими моделями семейства. В качестве примера можно привести микросхемы 181с96 фирмы INTEL или TMS320c5410 фирмы Texas Instrument, где для расширения области регистров специальных функций используется оконная адресация.

Согласование быстродействия памяти и универсальных микропроцессоров

Универсальные микропроцессоры применяются в настольных или портативных компьютерах, а также во встраиваемых системах, и в настоящее время именно на них отрабатываются самые передовые решения по повышению быстродействия микросхем.

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

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

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

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

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

Рассмотренный выше метод увеличивает общее быстродействие системной памяти, но только до значения тактовой частоты системной шины (внешняя тактовая частота микропроцессора). Согласовать внутреннее быстродействие микропроцессора и быстродействие системной шины позволяет использование внутренней кэш-памяти. Естественно, ее объем меньше, чем у кэш-памяти, расположенной на материнской плате компьютера.

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

Подключение внешних устройств к микропроцессору

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

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

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

В качестве простейшего единичного индикатора рассмотрим светодиодный индикатор. Схема его подключения показана на рис. 5.10.

Рис. 5.10. Подключение одиночного светодиодного индикатора

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

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

Простой светодиодный индикатор позволяет отображать двоичную информацию, такую как состояние устройства (включено или выключено), наличие или отсутствие сигнала и т. д. Для отображения цифровой информации используются 7-сегментные индикаторы. Подключение одного сегмента такого индикатора не отличается от схемы, приведенной на рис. 5.10. Каждый сегмент представляет собой обычный светодиод.

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

Несколько сложнее выглядит схема подключения внешних исполнительных электромеханических устройств. Чаще всего такие исполнительные устройства являются индуктивной нагрузкой. В качестве примера можно назвать такие устройства, как электромагнитное реле или электромагнит. Схема, позволяющая работать на индуктивную нагрузку, приведена на рис. 5.11. Диод VD1 в этой схеме служит для ограничения напряжения импульсов эдс самоиндукции, которые могут вывести из строя силовой транзистор VT1.

Рис. 5.11. Подключение внешнего устройства с индуктивной нагрузкой

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

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

Рис. 5.12. Подключение источника дискретной информации

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

Рис. 5.13. Подключение клавиатуры к микропроцессорному устройству

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

Двоичные сигналы, присутствующие при этом на строках клавиатуры, считываются через порт ввода микропроцессорной системы. Временная диаграмма напряжений, присутствующих на порте вывода при выполнении программы опроса клавиатуры, приведена на рис. 5.14.

Рис. 5.14. Временная диаграмма напряжений на линиях порта вывода

Принципы построения параллельного порта

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

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

В качестве простейшего порта вывода может быть использован параллельный регистр, т. к. он позволяет запоминать данные, выводимые микропроцессором, и хранить их до тех пор, пока подается питание. Все это время сигналы с выходов этого параллельного регистра поступают на внешнее устройство. В порт вывода возможна только запись. Структурная схема порта вывода с использованием параллельного регистра приведена на рис. 5.15. Данные с системной шины микропроцессора записываются в параллельный регистр по сигналу «WR». Выходы «Q» регистра могут быть использованы как источники логических уровней для управления внешними устройствами. Этот регистр называется регистром данных порта вывода.

Рис. 5.15. Структурная схема порта вывода

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

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

Рис. 5.16. Структурная схема порта ввода

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

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

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

Рис. 5.17. Структурная схема параллельного порта ввода-вывода.

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

В некоторых микропроцессорах для портов ввода-вывода выделяется отдельное адресное пространство. В этом случае для записи в порт и для чтения из порта используются отдельные сигналы чтения и записи. Чаще всего они называются «IOWR#» и «IORD#».

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

Для формирования такого сигнала можно воспользоваться вторым параллельным портом и получить его программным способом, но обычно этот сигнал формируется аппаратно из сигнала «WR#» при записи очередного байта в параллельный порт вывода. Временная диаграмма обмена данными через параллельный порт приведена на рис. 5.18.

Рис. 5.18. Временная диаграмма работы параллельного порта

В данной книге приведены только основы работы параллельного порта.

Кому интересно познакомиться более детально с особенностями работы параллельных портов, может обратиться к специализированной литературе [14–17].

Принципы построения последовательного порта

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

— синхронные последовательные порты;

— асинхронные последовательные порты.

Синхронные последовательные порты

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

Рис. 5.19. Временная диаграмма передачи одного кадра двоичной информации по последовательному порту

Такая временная диаграмма характерна для синхронных последовательных портов, которые используются чаще всего в сигнальных процессорах для обмена информацией с кодеками речи, аналого-цифровыми и цифроаналоговыми преобразователями. На временной диаграмме показаны два синхросигнала: тактовой синхронизации CLK и кадровой синхронизации FS. Кадровый синхросигнал формируется аппаратно из сигнала WR# при записи очередного байта в параллельный порт вывода. Полярность сигналов синхронизации зависит от конкретного типа применяемых микросхем, поэтому в большинстве последовательных портов возможна настройка полярности сигналов синхронизации.

Упрощенная схема синхронного последовательного порта приведена на рис. 5.20. В состав последовательного порта входит универсальный последовательно-параллельный регистр, подключенный к системной шине. Он обеспечивает преобразования параллельного кода, поступающего с системной шины в последовательный. При обращении центрального процессора к последовательному порту вырабатывается сигнал записи в последовательный порт WR#, который через дешифратор подается на вход параллельной записи V универсального регистра. Этот же сигнал используется в качестве кадрового синхросигнала FS. Тактовый синхросигнал CLK, вырабатываемый отдельным генератором, подается на вход последовательного сдвига С универсального регистра, входящего в состав порта.

Рис. 5.20. Упрощенная схема синхронного последовательного порта

Количество передаваемых в одном кадре битов может меняться от восьми до тридцати двух. В качестве примера использования синхронного последовательного порта на рис. 5.21 приведена схема подключения аналого-цифрового преобразователя AD7890 фирмы Analog Devices к синхронному последовательному порту сигнального процессора ADSP-2101 той же фирмы.

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

В синхронном последовательном порте информация передается непрерывно, что, конечно, удобно для устройств с непрерывным потоком информации, как, например, в кодеках речи. Но существуют устройства, к которым необходимо обращаться только периодически, как, например, синтезаторы частоты, микросхемы приемников, блоков цветности телевизоров, микросхем памяти данных и многие другие устройства. В этих случаях используются другие виды синхронных последовательных портов, такие как SPI и I2С. Временная диаграмма сигналов SPI-интерфейса приведена на рис. 5.22.

Рис. 5.22. Временная диаграмма SPI-интерфейса

Основное отличие этого интерфейса от приведенного выше заключается в том, что сигнал тактовой синхронизации передается только в момент действия импульса кадровой синхронизации. Активный уровень сигнала кадровой синхронизации длится до окончания передачи последнего бита в передаваемом кадре. По одним и тем же линиям передачи данных: MISO (вход для главного, выход для ведомого); и MOSI (выход для главного, вход для ведомого), может передаваться информация к совершенно различным микросхемам. Выбор среди микросхем, подключенных к одному и тому же порту, той, для которой предназначена информация, производится сигналом SS (выбор ведомого). В SPI-интерфейсе в приемнике не требуется счетчик тактовых импульсов. Запись принятой информации в параллельный регистр данных производится по окончанию кадрового импульса.

Если в устройстве используется много микросхем, то в SPI-интерфейсе количество линий выбора ведомого становится значительным, поэтому в таких случаях используется еще один вид синхронного последовательного интерфейса: I2С. Временная диаграмма этого интерфейса приведена на рис. 5.23. В I2С-интерфейсе прием и передача данных, а также передача адреса микросхемы и адреса регистра внутри микросхемы, к которому осуществляется обращение, производятся по одной и той же линии данных SDA. Для подключения к этой линии используются микросхемы с открытым коллектором. Нагрузкой для всех микросхем, подключенных к линии SDA, служит внешний резистор. Естественно, что скорость передачи данных по такому интерфейсу будет ниже, чем в случае SPI.

Рис. 5.23. Временная диаграмма I2С-интерфейса

Сигнал тактовой синхронизации в I2С-шине передается по линии SCL. Начало работы с микросхемой обозначается особой комбинацией сигналов SDA и SCL (переход 0–1 SDA при высоком уровне SCL), которая называется условием старта. Эта же комбинация одновременно осуществляет кадровую синхронизацию. Завершение работы с микросхемой обозначается еще одной комбинацией сигналов SDA и SCL — переходом 0–1 SDA при высоком уровне SCL. В качестве примера микросхем, использующих интерфейс I2С, можно назвать микросхемы EEPROM серии 24сХХ.

Асинхронные последовательные порты

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

В настоящее время используются стандартные скорости передачи, кратные скорости 1200 бит/с. При этом масштабирование может проводиться как в сторону увеличения скорости обмена, так и в сторону уменьшения скорости обмена двоичной информацией. Например, стандартной скоростью передачи последовательного порта будет скорость 2400 и 4800 бит/с. Стандартными же будут скорости обмена 600 и 300 бит/с.

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

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

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

Минимальная длительность стопового сигнала должна быть 1,5 длительности информационных битов, но обычно используют паузу между соседними пакетами данных, равную двум длительностям информационного бита.

Временная диаграмма сигналов при асинхронной передаче данных приведена на рис. 5.24.

Рис. 5.24. Временная диаграмма сигналов при асинхронной передаче

Формат асинхронной посылки позволяет выявлять следующие возможные ошибки передачи:

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

— если во время, отведенное под стоп-бит, обнаружен уровень логического нуля, то фиксируется ошибка стоп-бита;

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

Наиболее распространенным в настоящее время является последовательный асинхронный порт, работающий по стандарту RS-232. Временная диаграмма этого порта приведена на рис. 5.25. Используются уровни сигналов НОВ, что позволяет контролировать обрыв линии.

Рис. 5.25. Временная диаграмма сигналов интерфейса RS-232

Существует ряд международных стандартов на асинхронные последовательные интерфейсы: RS-232C, RS-423A, RS-422A и RS-485. На рис. 5.26 приведены схемы соединения приемников и передатчиков, а также показаны ограничения на длину линии (L) и максимальную скорость передачи данных (V) по этим интерфейсам.

Несимметричные линии интерфейсов RS-232C и RS-423A имеют самую низкую защищенность от синфазной помехи, хотя дифференциальный вход приемника RS-423A несколько смягчает ситуацию. Лучшие параметры имеет двухточечный интерфейс RS-422A и его магистральный (шинный) аналог RS-485, работающие на симметричных линиях связи. В них для передачи каждого сигнала используются дифференциальные сигналы с отдельной (витой) парой проводов.

Рис. 5.26. Схемы соединения приемников и передатчиков различных стандартных асинхронных последовательных интерфейсов

Последовательный асинхронный порт, работающий по стандартам RS-232, RS-423A и RS-422A, позволяет соединять между собой только два устройства. Это связано с тем, что при параллельном соединении двух передатчиков их выходные каскады могут выйти из строя. В ряде случаев требуется объединить несколько устройств. Для того чтобы выходные каскады передатчиков последовательных портов не выходили из строя, необходимо применять специальные меры, которые обсуждались в предыдущих главах. Эти меры реализованы в интерфейсе RS-485.

Принципы построения таймеров

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

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

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

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

Структурная схема таймера, построенного по описанным выше принципам, приведена на рис. 5.27.

Рис. 5.27. Структурная схема таймера

В зависимости от типа использованного цифрового счетчика таймеры бывают суммирующие (с суммирующим счетчиком) или вычитающие (с вычитающим счетчиком). Использование вычитающего счетчика позволяет проще задавать интервалы времени. В этом случае записываемый в таймер код Codesub будет соответствовать длительности временного интервала Ttimer вырабатываемого таймером:

Ttimer Codesub x Tgen

где Tgen — период импульсов внутреннего генератора.

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

Ttimer = (CodemaxCodemin)∙Tgen

В этой формуле код Codesum, который заносится в таймер, представляет собой дополнение кода интервала времени до максимального кода Codemax, который можно записать в таймер. Максимальный код Codemax определяется разрядностью таймера. В рассмотренном примере разрядность таймера равна 16. Это означает, что максимальный код равен Codemax = 216 = 65536.

Достаточно часто применяются свободно бегущие суммирующие таймеры. Схема такого таймера приведена на рис. 5.28.

Рис. 5.28. Структурная схема свободно бегущего таймера с модулем сравнения

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

Часто с одним свободно бегущим таймером работает несколько модулей сравнения. Это похоже на использование часов с несколькими будильниками.

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

Рис. 5.29. Структурная схема свободно бегущего таймера с модулем захвата

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

Итак, подведем итоги

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

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