Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Цифровая и микропроцессорная техника. Учебное пособие

.pdf
Скачиваний:
3
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
5.1. Типовая структура микропроцессорной системы
соответствующей подпрограммы обслуживания, которую назы­вают обработчиком прерывания. Эти векторы являются входами в подпрограммы обслуживания и хранятся в таблице векторов прерываний, которая записывается в памяти микропроцессор­ной системы. Завершается подпрограмма обслуживания специ­альной командой возврата из прерывания, которая извлекает из стека хранившееся содержимое PC и PSW, загружает его обратно в эти регистры, обеспечивая возвращение к выполнению прер­ванной программы.
Прямой доступ к памяти. Режим прямого доступа к памяти (DMA – Direct Memory Access) используется, если необходимо произвести пересылку значительного объема информации меж­ду ОЗУ и каким-либо внешним устройством. Реализация такой пересылки с помощью соответствующей программы требует ис­пользования отдельной команды для пересылки каждого байта или слова и значительного времени на ее выполнение.
Для пересылки больших массивов информации в микропро­цессорной системе используются специальные микросхемы – ко н т роллеры пря мог о дос т упа к пам я ти. При пост уп лении за п р о ­са от внешнего устройства контроллер выдает соответствующий сигнал микропроцессору. Полу чив этот сигнал, процессор завер­шает очередной цикл обмена по системной шине и отключается от нее, т. е. переводит выходы своих буферов, присоединенных к шинам адреса, данных и управления в Z-состояние. При этом процессор выдает контроллеру прямого доступа к памяти сигнал разрешения на реализацию прямого доступа. Получив этот сиг­нал, контроллер принимает на себя управление системной ши­ной. Он выдает на шину адреса ячеек ОЗУ, с которыми выпол­няется текущий цикл обмена, формирует необходимые сигналы, определяющие режим работы ОЗУ (запись или чтение) и портов ввода и вывода, через которые производится пересылка инфор­мации (ввод или вывод). Предварительно контроллер прямого доступа к памяти программируется для выполнения указанных функций. В него вводятся начальные адреса массивов памяти в ОЗУ, с которых начинается процесс обмена, и размеры массивов, подлежащих пересылке.
Теоретически обмен с помощью прямого доступа к памяти может обеспечить более высокую скорость передачи информа­ции, чем программный обмен, так как процессор передает данные
111
Глава 5. Основы архитектуры микропроцессоров и микропроцессорных систем
медленнее, чем контроллер прямого доступа к памяти. Однако на практике это преимущество реализуется далеко не всегда. Ско­рость обмена в режиме прямого доступа к памяти обычно огра­ничена возможностями магистрали. Кроме того, необходимость программного задания режимов контроллера прямого доступа к памяти также уменьшает реальную скорость пересылки данных в режиме прямого доступа к памяти. Поэтому этот режим обычно применяется в системах, где часто необходимо пересылать очень большие объемы данных (например, в персональных компью­терах). В простых микропроцессорных системах режим прямого доступа к памяти применяется редко.
5.2. ТИПОВАЯ АРХИТЕКТУРА МИКРОПРОЦЕССОРА
Рассмотрим типовую архитектуру микропроцессора микро-
контроллера AVR (рис. 5.5).
MOSI MISO SCK
Память
программ
Регистр
команд
ОЗУ
Порты ввода
(вывода)
Рис. 5.5. Типовая архитектура микропроцессора микроконтроллера AVR
112
Последовательный
периферийный
интерфейс
Счетчик
команд
Регистры
общего
назначения
АЛУ
Прерывания
ЦПУ
Тай ме ры
(счетчики)
Энергозависимая
память
Аналоговый
компаратор
АЦП
Универсальный последовательный приемопередатчик
Последовательный
периферийный
трехпроводной
интерфейс
Двухпроводной последовательный
интерфейс
Сторожевой
таймер
Интерфейс
JTAG
5.2. Типовая архитектура микропроцессора
Процессор. Сердцем микроконтроллеров AVR является 8-бит­ное микропроцессорное ядро, или центральное процессорное устройство (ЦПУ), построенное на принципах RISC-архи­тектуры. Основой этого блока служит арифметико-логическое устройство (АЛУ). По системному тактовому сигналу из памяти программ в соответствии с содержимым счетчика команд (PC) выбирается очередная команда и выполняется в АЛУ. Во время выбора команды из памяти программ происходит выполнение предыдущей выбранной команды, что и позволяет достичь быст­родействия 1 MIPS на 1 МГц.
АЛУ подключено к регистрам общего назначения (32 шт.), имеющим байтовый формат, т. е. каждый из них состоит из 8 бит. РОН находятся в начале адресного пространства оперативной памяти, но физически не являются ее частью. Поэтому к ним можно обращаться двумя способами (как к регистрам и как к памяти). Такое решение является особенностью AVR и повышает эффективность работы и производительность микроконтроллера.
Отличие между регистрами и оперативной памятью состо­ит в том, что с регистрами можно производить любые операции (арифметические, логические, битовые), а в оперативную память можно лишь записывать данные из регистров.
Память. В микроконтроллере AVR реализована Гарвардская архитектура, по которой разделены не только адресные простран­ства памяти программ и памяти данных, но и шины доступа к ним. Каждая из областей памяти данных также расположена в своем адресном пространстве.
Память программ (Flash ROM, или Flash ПЗУ) предназна­чена для хранения последовательности команд, управляющих функционированием микроконтроллера, и имеет 16-битную ор­ганизацию. Все AVR имеют Flash-память программ, которая мо­жет быть различного размера (от 1 до 256 Кбайт). Ее главное до­стоинство в том, что она построена на принципе электрической перепрограммируемости. Программа заносится во Flash-память AVR как с помощью обычного программатора, так и с помощью SPI-интерфейса.
Память данных разделена на три части: регистровая, опера­тивная и энергонезависимая.
Регистровая память включает регистры общего назначения, объединенные в файл, и служебные регистры ввода (вывода). И те и другие расположены в адресном пространстве ОЗУ, но не явля­ются его частью.
113
Глава 5. Основы архитектуры микропроцессоров и микропроцессорных систем
В области регистров ввода (вывода) расположены служебные регистры (регистры управления микроконтроллером, регистры состояния и т. п.), а также регистры управления периферийными устройствами, входящими в состав микроконтроллера. По сути, управление микроконтроллером заключается в управлении этими регистрами. Среди служебных регистров есть регистр состояния, используемый наиболее часто в процессе выполнения программ. Он содержит набор флагов (табл. 5.1), показывающих текущее со­стояние микроконтроллера. Большинство флагов автоматически устанавливаются в «1» или сбрасываются в «0» при наступлении определенных событий (в соответствии с результатом выполнения команд). Все биты этого регистра доступны как для чтения, так и для записи. Эта информация анализируется при выполнении условных переходов. При возникновении прерываний содержимое регистра состояния необходимо сохранять программно.
Таблица 5.1
Описание флагов регистра состояния
Обо-
Бит
значе-
ние
0 CF Carry
1 1 – Зарезервирован 2 PF Parity
3 0 – Зарезервирован 4 AF Auxiliary
Название Описание
Флаг переноса. Устанавливается в «1», если
Flag
Flag
Carry
Flag
результат предыдущей операции не уме­стился в приемнике и произошел перенос из старшего бита или если требуется заем (при вычитании). Иначе установлен в «0»
Флаг четности. Устанавливается в «1», если младший байт результата предыдущей ко­манды содержит четное количество битов, равных «1». Если количество единиц в млад­шем байте нечетное, то этот флаг равен «0»
Вспомогательный флаг переноса (флаг полу­переноса). Устанавливается в «1», если
в результате предыдущей операции произо­шел перенос (или заем) из третьего бита в четвертый. Этот флаг используется авто­матически командами двоично-десятичной коррекции
114
Обо-
Бит
значе-
ние 5 0 – Зарезервирован 6 ZF Zero Flag
7 SF Sign Flag
8 TF Trap Flag
9 IF Interrupt
10 DF Direction
11 OF Overf low
12 13IOPL I/O
14 NT Nested
15 0 – Зарезервирован
Название Описание
Флаг нуля. Устанавливается в «1», если результат предыдущей команды равен «0»
Флаг знака. Всегда равен старшему биту результата
Флаг трассировки (флаг ловушки). Пред­усмотрен для работы отладчиков в пошаго­вом выполнении, которые не используют защищенный режим. Если этот флаг уста­новить в «1», то после выполнения каждой программной команды управление времен­но передается отладчику (вызывается прерывание «1»)
Флаг разрешения прерываний. Если сбро-
Enable
Flag
Flag
Flag
Privilege
Level
Task
сить этот флаг в «0», то процессор переста­нет обрабатывать прерывания от внешних устройств. Обычно его сбрасывают на ко­роткое время для выполнения критических участков программы
Флаг направления. Контролирует поведение команд обработки строк. Если установлен в «1», то строки обрабатываются в сторону уменьшения адресов, если сброшен в «0», то наоборот
Флаг переполнения. Устанавливается в «1», если результат предыдущей арифметической операции над числами со знаком выходит за допустимые для них пределы. Например, если при сложении двух положительных чисел получается число со старшим битом, равным «1», т. е. отрицательное, и наоборот
Уровень приоритета ввода (вывода)
Флаг вложенности задач
5.2. Типовая архитектура микропроцессора
Окончание табл. 5.1
115
Глава 5. Основы архитектуры микропроцессоров и микропроцессорных систем
Оперативная память используется для оперативного хране­ния данных. Число циклов чтения и записи в ней не ограниче­но, но при отключении питающего напряжения вся информация теряется.
Энергонезависимая память данных используется для дол­говременного хранения различной информации, которая может изменяться в процессе функционирования микроконтроллерной системы. Этот тип памяти удобен для хранения промежуточных данных, различных констант, коэффициентов, серийных номе­ров, ключей и т. п.
Периферия. Периферия микроконтроллера AVR включает порты ввода (вывода), поддержку внешних прерываний, тай­меры-счетчики, сторожевой таймер, аналоговые компараторы, 10-разрядный 8-канальный АЦП, интерфейсы UART, SPI, ши­ротно-импульсные модуляторы.
Архитектурная особенность построения портов ввода (вы­вода) у AVR заключается в том, что для каждого физического вывода (пина) существует 3 бита контроля (управления), а не 2, как у распространенных 8-разрядных микроконтроллеров (Intel, Microchip, Motorola и т. д.). Это позволяет избежать необходимо­сти иметь копию содержимого порта в памяти для безопасно­сти и повышает скорость работы микроконтроллера при работе с внешними устройствами, особенно в условиях внешних элек­трических помех.
Система прерываний – одна из важнейших частей микрокон­троллера. Все микроконтроллеры AVR имеют многоуровневую систему прерываний. Прерывание прекращает нормальный ход программы для выполнения приоритетной задачи, определяемой внутренним или внешним событием.
Для каждого такого события разрабатывают отдельную про­грамму, которую называют подпрограммой обработки запроса на прерывание (подпрограммой прерывания), и размещают в памя­ти программ.
При возникновении события, вызывающего прерывание, ми­кроконтроллер сохраняет содержимое счетчика команд, преры­вает выполнение центральным процессором текущей программы и переходит к выполнению подпрограммы прерывания.
После выполнения подпрограммы прерывания осуществля­ется восстановление предварительно сохраненного счетчика ко-
116
5.2. Типовая архитектура микропроцессора
манд и процессор возвращается к выполнению прерванной про­граммы.
Для каждого события может быть установлен приоритет. По­нятие приоритет означает, что выполн яемая под программа преры­вания может быть прервана другим событием только при условии, что оно имеет более высокий приоритет, чем текущее. В против­ном случае центральный процессор перейдет к обработке нового события только после окончания обработки предыдущего.
Микроконтроллеры AVR имеют в своем составе 1–4 таймера (счетчика) с разрядностью 8 или 16 бит, которые могут работать и как таймеры от внутреннего источника тактовой частоты, и как счетчики внешних событий. Их можно использовать для точно­го формирования временных интервалов, подсчета импульсов на выводах микроконтроллера, формирования последовательности импульсов, тактирования приемопередатчика последовательного канала связи. В режиме ШИМ используется широтно-импульс­ный модулятор для генерирования сигнала с программируемыми частотой и скважностью. Таймеры (счетчики) способны выраба­тывать запросы прерываний.
Сторожевой таймер предназначен для предотвращения ката­строфических последствий от случайных сбоев программы. Он имеет свой собственный RC-генератор, работающий на частоте 1 МГц.
АЦП служит для получения числового значения напряже­ния, поданного на его вход. Этот результат сохраняется в реги­ст ре дан ных АЦП и определяется числом, занесенным в соответ­ствующий регистр.
Универсальный асинхронный (UART) или синхронно-асинхрон­ный (USART) приемопередатчики – последовательный интерфейс
для организации информационного канала обмена микрокон­троллера с внешним миром. Способен работать в дуплексном режиме. Он поддерживает протокол стандарта RS-232, что дает возможность связываться с персональным компьютером.
Последовательный периферийный трехпроводной интерфейс
(SPI) предназначен для организации обмена данными между дву­мя устройствами. С его помощью может осуществляться обмен данными между микроконтроллером и различными устройства­ми (цифровыми потенциометрами, АЦП, ПЗУ и др.), а также между несколькими микроконтроллерами AVR.
117
Глава 5. Основы архитектуры микропроцессоров и микропроцессорных систем
Через SPI может осуществляться программирование микро-
контроллера.
Двухпроводной последовательный интерфейс (TWI) позволяет объединить вместе до 128 различных устройств с помощью дву­направленной шины, состоящей из линии тактового сигнала и линии данных.
Тактовый генератор вырабатывает импульсы для синхрони- зации работы всех узлов микроконтроллера. Внутренний такто­вый генератор AVR может запускаться от нескольких источников опорной частоты (внешний генератор, внешний кварцевый ре­зонатор, внутренняя или внешняя RC-цепочка). Минимальная допустимая частота ничем не ограничена (вплоть до пошагового режима).
Система реального времени (RTC) реализована в некоторых микроконтроллерах. Таймер (счетчик) RTC имеет отдельный предделитель, который может быть программным способом под­ключен или к источнику основной тактовой частоты, или к до­полнительному асинхронному источнику опорной частоты (квар­цевый резонатор или внешний синхросигнал). Для этой цели за­резервированы два вывода микросхемы. Внутренний осциллятор оптимизирован для работы с внешним «часовым» кварцевым ре­зонатором 32,768 кГц.
Питание. Микроконтроллеры AVR функционируют при на­пряжениях питания от 1,8 до 6,0 В. Ток потребления в активном режиме зависит от величины напряжения питания и частоты, на которой работает микроконтроллер, и составляет менее 1 мА для частоты 500 кГц, 5–6 мА – для 5 МГц и 8–9 мА – для 12 МГц.
Микроконтроллеры AVR могут быть переведены программ­ным путем в один из трех режимов пониженного энергопотреб­ления:
• холостого хода (IDLE). Прекращает работу только процес-
сор и фиксируется содержимое памяти данных, а внутренний генератор синхросигналов, таймеры, система прерываний и сто­рожевой таймер продолжают функционировать. Ток потребления не превышает 2,5 мА на частоте 12 МГц;
• стоповый (POW ER DOW N). Сохра н яет с я со д е р ж и мо е рег и-
стрового файла, но останавливается внутренний генератор син­хросигналов, и, следовательно, останавливаются все функции, пока не поступит сигнал внешнего прерывания или аппаратного
118
5.3. Интерфейс передачи данных UART
сброса. При включенном сторожевом таймере ток потребления в этом режиме составляет около 80 мкА, а при выключенном – менее 1 мкА (все приведенные значения справедливы для напря­жения питания 5 В);
• экономичный (POWER SAVE). Продолжает работать толь-
ко генератор таймера, что обеспечивает сохранность временно й базы. Все остальные функции отключены.
Сброс при снижении напряжения питания (BOD) отслеживает напряжение источника питания. Если схема включена, то при снижении питания ниже некоторого значения она переводит ми­кроконтроллер в состояние сброса. Когда напряжение питания вновь увеличится до порогового значения, запускается таймер за­держки сброса. После формирования задержки внутренний сиг­нал сброса снимается и происходит запуск микроконтроллера.
5.3. ИНТЕРФЕЙС ПЕРЕДАЧИ ДАННЫХ UART
У всех интерфейсов передачи данных одна цель – передача данных. Данными с контроллером могут обмениваться датчики, исполнительные устройства, индикаторы, дисплеи, компьютеры, смартфоны и другие контроллеры. Причем под обменом данных имеется в виду не только двухсторонняя связь, но и односторон­няя, когда, например, датчик температуры передает информацию на контроллер и ничего «не ждет» от него в ответ.
Если говорить применительно к Arduino, то в аппаратном виде у всех плат присутствуют три интерфейса: UART, SPI и I2C, а у некоторых – встроенный адаптер CAN-шины. У каждого из перечисленных интерфейсов есть свои преимущества и недостат­ки, а также свои «клиенты», т. е. устройства, использующие толь­ко тот или иной интерфейс для связи с внешним миром.
У UART прием и передача отдельных битов не выравнивают­ся так называемыми синхроимпульсами, что и хорошо, и плохо одновременно. Единица отличается от нуля исключительно по времени между перепадами уровней сигнала, которое заранее за­дается скоростью передачи. Существует версия UART с синхро­низацией сигналов (USART). Асинхронная передача данных от­личается простотой протокола, минимумом проводов и занятых в процессе аппаратных средств, имеет возможность полного ду­плекса (одновременной передачи данных в обоих направлениях).
119
Глава 5. Основы архитектуры микропроцессоров и микропроцессорных систем
Однако она имеет меньшую помехозащищенность и, как след­ствие, максимальную скорость и расстояние при тех же условиях.
С «хардовой» стороны UART использует два пина контрол­лера (Rх и Tх), где первые буквы обозначают, соответственно, Receiver и Transmitter. Для связи двух устройств необходимо два провода, соединять их следует крест-накрест: Rх первого с Tх второго и наоборот (рис. 5.6).
UART 1 UART 2
Tx
Rx
Рис. 5.6. Схема подключения интерфейса UART
Tx
Rx
У разных плат Arduino разное количество аппаратных портов UART (чаще всего один, а у Arduino Mega – четыре). Простота этого интерфейса позволяет эмулировать порт программными методами, присваивая Rх и Tх почти любым пинам на выбор. Можно использовать «хардовые» порты на строго определенных пинах (рекомендуется) или с некоторыми ограничениями – «про­граммные», а при необходимости и те и другие одновременно.
С «софтовой» стороны передача выглядит как цепочка сиг­налов, а именно битов, разделенных на байты, и служебных сиг­налов (рис. 5.7).
ПаузаD+0 01 1
Старт
Рис. 5.7. Передача информации с помощью интерфейса UART
223 34 455
Биты
данных
6 67 7 Пауза
СтартСтоп
Биты
данных
Стоп
Пока информация не передается, в линии сохраняется вы­сокий уровень (для случая с Arduino это 5 В, так называемая TTL-логика). Спад сигнала – это команда принимающей сто­роне. Через определенное время, зависящее от заранее заданной скорости, начинается передача байта в виде ряда «0» и (или) «1» с соблюдением тех же, заранее оговоренных, временны х отрезков.
120
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]