Телекоммуникационные технологии и системы Тема 3 Структура и применение микропроцессорных устройств

advertisement
Телекоммуникационные технологии и системы
Тема 3
Структура и применение микропроцессорных
устройств
Лекция 4
Структура микропроцессорных систем
•
•
Высокая эффективность семейства микропроцессоров и микроконтроллеров
может быть отнесена за счет использования в микропроцессорах RISC
структуры. Микропроцессорное ядро использует Гарвардскую структуру, в
которой память программ и данных расположены в отдельных блоках и для
обращения к ним используются отдельные шины. Это позволяет увеличить
скорость выполнения программы по сравнению с традиционной структурой, в
которой программа и данные выбираются из одной и той же памяти с
использованием одной шины Отдельные шины программ и данных позволяют
передавать команды и данные разных размеров. По шине данных передаются
8-разрядные слова, а по шине команд — 14-разрядные коды операций, 14разрядная организация памяти программ и шины команд позволяют размещать
каждую команду в одной ячейке памяти и передавать ее за один цикл
Двухступенчатый конвейер совмещает выборку очередной команды и
выполнение текущей . Следовательно, все 35 операций системы команд
выполняются за один цикл (200 нс при частоте генератора 20 МГц), кроме
операций ветвления программы.
МикропроцессорЫ RISC могут осуществлять пересылку данных
непосредственно или косвенно. Все функциональные регистры, включая
счетчик программ, отображены в памяти данных. Они имеют симметричную
систему команд. которая делает возможным выполнение любой операции в
любом регистре, используя любой способ адресации. Симметричная система
команд без специальной оптимизации местоположения делает
программирование простым и эффективным.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Основные характеристики
тактовая частота от 0 до 20 МГц (длительность цикла команды до 200 нс);
память программы 8192 14-разрядных слов программы EPROM;
368 8-разрядных регистров оперативной памяти;
12 источников прерывания;
аппаратный стек с восьмью уровнями;
сброс при включении питания (POR), таймер включения питания (PWRT) и
таймер запуска тактового генератора (OST);
сторожевой таймер (WDT) с собственным встроенным RC-генератором для
надежного выполнения операций;
программируемая защита кода;
экономичный режим;
33 линии ввода-вывода с индивидуальным заданием направления;
широкий диапазон напряжений питания: 2,5...6,0 В;
втекающий/вытекающий ток выводов 25 мА, позволяющий непосредственно
управлять светодиодными индикаторами;
малое потребление по питанию:
- не более 2 мА при напряжении питания 5 В и тактовой частоте 4 МГц;
- типовое значение 15 мкА при напряжении питания 3 В и тактовой частоте
32кГц;
- не более 1 мкА типовое значение в экономичном режиме.
Периферийные возможности
Timer0: 8-разрядный таймер/счетчик с 8-разрядным
предварительным делителем;
Timer1: 16-разрядный таймер/счетчик с предварительным
делителем, может функционировать в экономичном режиме через
внешний вход;
Timer2: 8-разрядный таймер/счетчик с 8-разрядным регистром
периода, предварительным делителем и выходным делителем;
2 модуля захвата/компаратора/ШИМ;
захват 16 разрядов, максимальная разрешающая способность12,5
нс; сравнение 16 разрядов, максимальная разрешающая
способность 200 нс; ШИМ, максимальная разрешающая
способность 10 разрядов;
8-разрядный 8-канальный аналого-цифровой преобразователь;
синхронный последовательный порт (SSP) с интерфейсами
SPI(tm) и I2С(tm);
USART;
параллельный 8-битный подчиненный порт (PSP), со внешним
сигналами управления RD, WR и CS;
схема сброса при понижении напряжения питания (Brown-out
Reset, BOR)
На рис. 3-8 представлена структурная схема микроконтроллеров
Р1С16С745/ 765. Устройства Р1С16С745/765 имеют 256 байт
памяти данных. Р1С16С745 имеют 13 контактов 1/0 (РОRTА и
РОRТВ), а Р1С16С765 — 33 контакта (РОRТА, РОRТВ, РОRТС,
РОRТD и РОRТЕ), и они содержат следующие периферийные
устройства:
• два 8-разрядных таймера (ТМR0 и ТМR2) и один 16-разрядный
(ТМR1),
• два модуля сравнения накопления и ШИМ (ССР1 и ССР2)
• универсальный синхронно-асинхронный приемопередатчик
(USARТ),
• 8-разрядный А/D преобразователь с мультиплексированными
входными каналами, причем Р1С16С745 имеет 5 входных
каналов, а Р1С 16С774 — 8 каналов,
• встроенный модуль РLL, позволяющий увеличить тактовую
частоту в 4 раза, то есть при кварцевом резонаторе 6 МГц
тактовая часта генератора будет 24 МГц.
Основные отличия данных микроконтроллеров: наличие
встроенного модуля USB с 64 байтов двух портовой буферной
памятью, модуль USB поддерживает протокол версии 1.1. Эти
микроконтроллеры удобны для построения компьютерной
периферии. P1C16C765 имеет дополнительно 8-разрядный
параллельный ведомый порт (PSP).
Лекция 5
Применение микроконтроллеров
Арифметико-логическое устройство (ALU), в котором выполняются все
вычислительные операции, имеет доступ к 32-м оперативным регистрам,
объединенным в регистровый файл. Выборка содержимого регистров,
выполнение операции и запись результата обратно в регистровый файл
выполняются за один машинный цикл. Для сравнения полезно вспомнить,
что большинство встраиваемых микроконтроллеров имеют только один
такой регистр, непосредственно доступный ALU, - аккумулятор, что
требует включения в программу дополнительных команд его загрузки и
считывания.
Основной идеей всех RISC (Reduced Instruction Set Computer), как
известно, является увеличение быстродействия за счет сокращения
количества операций обмена с памятью программ. Для этого каждую
команду стремятся уместить в одну ячейку памяти программ. При
ограниченной разрядности ячейки памяти это неизбежно приводит к
сокращению набора команд микропроцессора.
У AVR-микроконтроллеров в соответствии с этим принципом практически
все команды (исключая те, у которых одним из операндов является 16разрядный адрес) также упакованы в одну ячейку памяти программ. Но
сделать это удалось не за счет сокращения количества команд
процессора, а путем расширения ячейки памяти программ до 16 разрядов.
Такое решение является причиной богатства системы команд AVR по
сравнению с другими RISC-микроконтроллерами
. Организация памяти AVR выполнена по схеме Гарвардского типа, в которой
разделены не только адресные пространства памяти программ и памяти
данных, но также и шины доступа к ним. Вся программная память AVRмикроконтроллеров выполнена по технологии FLASH и размещена на
кристалле. Она представляет собой последовательность 16-разрядных ячеек и
имеет емкость от 512 слов до 64K слов в зависимости от типа кристалла. Во
FLASH-память, кроме программы, могут быть записаны постоянные данные,
которые не изменяются во время функционирования микропроцессорной
системы. Это различные константы, таблицы знакогенераторов, таблицы
линеаризации датчиков и т. п. Достоинством технологии FLASH является
высокая степень упаковки, а недостатком то, что она не позволяет стирать
отдельные ячейки. Поэтому всегда выполняется полная очистка всей памяти
программ. При этом для AVR гарантируется, как минимум, 1000 циклов
перезаписи FLASH-памяти. Кроме того, для хранения данных AVRмикроконтроллеры могут иметь, в зависимости от типа кристалла, внутреннюю
(от 0 до 4K байт) и внешнюю (от 0 до 64 Кбайт) оперативную SRAM память и
энергонезависимую внутреннюю EEPROM память (от 0 до 4K байт). Разделение
шин доступа (рис. 1) к FLASH памяти и SRAM памяти дает возможность иметь
шины данных для памяти данных и памяти программ различной разрядности а
также использовать технологию конвейеризации. Конвейеризация заключается
в том, что во время исполнения текущей команды программный код следующей
уже выбирается из памяти и дешифрируется.
Для сравнения вспомним, что у микроконтроллеров семейства MCS-51
выборка кода команды и ее исполнение осуществляются
последовательно, что занимает один машинный цикл, который длится
12 периодов кварцевого резонатора. В случае использования
конвейера приведенную длительность машинного цикла можно
сократить. Например, у PIC-микроконтроллеров фирмы Microchip за
счет использования конвейера удалось уменьшить длительность
машинного цикла до 4 периодов кварцевого резонатора. Длительность
же машинного цикла AVR составляет один период кварцевого
резонатора. EEPROM блок электрически стираемой памяти AVR
предназначен для хранения энергонезависимых данных, которые могут
изменяться непосредственно на объекте. Это калибровочные
коэффициенты, различные уставки, конфигурационные параметры
системы. EEPROM-память имеет меньшую, по сравнению с FLASH,
емкость (до 4К байт), но при этом допускает возможность побайтной
перезаписи ячеек, которая может происходить как под управлением
внешнего процессора, так и под управлением собственно AVRмикроконтроллера во время его работы по программе.
Программирование энергонезависимых блоков памяти AVR может
осуществляться как параллельно, так и последовательно через SPI
(Serial Peripheral Interface) интерфейс.
•
Управление и обмен данными с EEPROM-памятью и со всеми периферийными
узлами осуществляется при помощи регистров ввода/вывода, которые имеются
в каждом периферийном узле. Микроконтроллер AT90S1200 был первым.
Тактирование его работы может осуществляться как с использованием
внешнего кварцевого резонатора, так и от внутренней RC-цепочки. В последнем
случае микроконтроллер AT90S1200 работает без единого внешнего элемента.
Недостаток периферии AT90S1200 окупается его ценой. Это - самый дешевый
AVR-микроконтроллер. Исторически следующими были AT90S2313, AT90S4414,
AT90S8515. Они имеют, соответственно таблице, бОльшие объемы памяти,
второй более мощный 16-разрядный таймер и последовательный асинхронный
адаптер (UART). У микроконтроллеров AT90S4414 и AT90S8515, кроме того,
последовательный синхронный интерфейс (SPI) может использоваться не
только для последовательного программирования внутренней памяти, но и в
режимах master и slave как самостоятельный быстродействующий синхронный
канал связи между несколькими микроконтроллерами. Важной функциональной
особенностью AT90S4414 и AT90S8515 является также возможность
подключения внешней SRAM объемом до 64 КB, которая появилась за счет
изготовления этих микроконтроллеров в корпусах с большим количеством
выводов.
•
В 1998 году появились микроконтроллеры AT90S2323 и AT90S2343 в
восьмивыводных корпусах. Различие между ними заключается в
способе тактирования и количестве программируемых входов/выходов.
Первый имеет 3 программируемых цифровых входа/выхода и
предназначен для работы с внешним кварцевым резонатором в
системах, предъявляющих высокие требования к стабильности
тактовой частоты, а второй может синхронизироваться только от
внутреннего RC-генератора (или от внешнего генератора), что
увеличивает количество программируемых входов/выходов до 5(4).
AT90S2323 тоже может работать от внутреннего RC-генератора, но
количество цифровых программируемых выводов при этом остается
равным 3. Наиболее богатой периферией из всех Сlassic AVR
обладает появившийся в январе 1999 года микроконтроллер
AT90S8535. Он имеет дополнительно к перечисленным узлам 10разрядный АЦП с мультиплексором на 8 каналов и третий 8-разрядный
таймер. Этот таймер имеет режимы сравнения и широтно-импульсного
модулятора, но главная его особенность заключается в том, что он
может работать в асинхронном от всей системы режиме, используя
дополнительный внешний часовой кварц частотой 32,768 кГц, что
позволяет вести отсчет реального времени в микропроцессорной
системе в астрономических единицах
Типовая МПС, показанная на схеме содержит:
микросхему программируемого периферийного интерфейса ППИ (PPI или
IOP), к которой через три 8-битовых независимых канала PA,PB и PC можно
подключать периферийные устройства, например принтер, клавиатуру, 8-ми
сегментный дисплей или ЦАП и АЦП. Через ППИ может производиться обмен
данными с другими МПС или ЭВМ.
Ввод с клавиатуры и вывод на дисплей могут производиться специальными
микросхемами.
Связь с удаленными устройствами или абонентами сетей может
осуществляться
с
помощью
универсального
асинхронного
последовательного приемо-передатчика УАПП-UART (программируемый
связной интерфейс ПСИ-PCI или IOS). К выводам RxD - приемник и TxD передатчик через линию связи подключаются передатчик и приемник другого
абонента или устройства. Если связь производится через модем, то доступны
любые сети.
Для формирования точных, различных по частоте и длительности
сигналов, в т.ч. и звукового диапазона используется программируемый
интервальный таймер ПИТ-PIT, имеющий три независимых 16-ти разрядных
двоичных счетчика. Задержка, длительность или частота выходного сигнала
каждого счетчика кратна 3..65535 периодам входного сигнала.
Если в системе используется режим прерывания выполнения основной
программы
внешними
устройствами,
требующими
безотлагательного
вмешательства микропроцессора, то может применяться программируемый
контроллер прерываний ПКП - PIC (устройство собирающее заявки на
обслуживание от ВУ с входов IRi). Подробно прерывания будут рассмотрены
ниже.
Обмен данными между МП и ЗУ или одним из ВУ возможен только при
появлении на выходе дешифратора DC единственного сигнала ~CS = 0,
поступающего на то устройство с которым будет производиться запись или
чтение байта данных. Остальные (невыбранные) устройства будут в пассивном
состоянии, т.к. их сигналы ~CS = 1. Байт информации на ШД считывается ВУ,
ЗУ или МП в строго ограниченном интервале времени во время действия
одного из управляющих сигналов чтения/записи (~MEMR, ~MEMW) из памяти
или в память, или во время действия одного из сигналов управления
вводом/выводом (~IOR, ~IOW) в/из ВУ.
Быстрый обмен данными может производиться с помощью устройства прямого
доступа к памяти ПДП (DMA).
СТЕК
Область памяти с упрощенной схемой адресации, к которой МП
обращается по принципу "последним вошел - первым вышел" (LIFO). Байты
программы в оперативной памяти располагаются последовательно по
нарастающим адресам. Стек заполняется по последовательно убывающим
адресам. Во избежание перекрытия этих двух областей памяти стек обычно
располагается в старших адресах. Начальный адрес стека, называемый дном
(bottom) записывается в регистр SP командой MOV SP,0fffeh. Вместо 0fffeh адрес предпоследнего байта сегмента, может быть другое значение, но
выравненное по двухбайтовым, т. е. четным адресам. Текущее значение
содержимого SP называется, также адресом вершины стека (top). Если адрес
вершины совпадает с адресом дна - стек считается пустым. Рассмотрим
механизм помещения в стек и извлечения из него данных на примере команд
PUSH AX и POP BX.
Пусть начальное значение аккумулятора AX равно 874c.
Команда PUSH выполняется в четыре этапа:
•
Адрес в SP уменьшается на 1: (SP) <-- (SP) - 1.
•
По этому адресу помещается старший байт 87: ((SP)) <-- (AH).
•
Содержимое SP снова уменьшается на 1: (SP) <-- (SP) - 1.
•
По полученному адресу загружается младший байт 4c: ((SP)) <-- (AL).
Действие команды POP аналогично описанному процессу, но в происходит в
обратном порядке:
•
•
•
•
(BL) <- ((SP)),
(SP) <- (SP) + 1,
(BH) <- ((SP)),
(SP) <- (SP) + 1.
Байты в стек помещаются по правилу "старший байт по старшему
адресу“. На рис.7 показан пустой стек до выполнения команды PUSH AX и
после ее выполнения, а на рис.8 после выполнения команды POP BX.
Преимущество стека в том, что программисту не нужно заботиться об
абсолютных значениях адресов переменных, но в этом таится и опасность,
если текущее содержимое указателя стека будет потеряно, при неаккуратных
действиях программиста, то работа компъютера станет непредсказуемой и он,
как говорят в таких случаях, "зависнет". В программах стек используется для:
•
1) сохранения и извлечения адреса возврата из подпрограмм командами
ассемблера CALL и RET (IRET),
•
2) хранения локальных переменных,
•
3) передачи фактических параметров подпрограммам (трансляторами с языков
высокого уровня),
•
4) временного хранения содержимого регистров фоновой программы при ее
прерывании.
СПОСОБЫ ВВОДА-ВЫВОДА
Обмен данными между ЭВМ и ВУ или ЗУ называется вводом-выводом
(ВВ). Существует четыре основных способа ВВ.
•
Программный ВВ
•
ВВ по прерываниям
•
Прямой доступ к памяти (ПДП) или DMA
•
Транзакции (MCS-96)
В первых
Обмен данными между ЭВМ и ВУ или ЗУ называется вводом-выводом
(ВВ). Существует четыре основных способа ВВ.
•
•
Программный ВВ
ВВ по прерываниям
•
•
Прямой доступ к памяти (ПДП) или DMA
Транзакции (MCS-96)
В первых двух случаях в обмене данными участвует микропроцессор. В
режиме ПДП функции управления обменом берет на себя специальное
устройство - контроллер ПДП, причем МП в это время в обмене данными не
участвует. В 4-ом способе пересылки производятся параллельно с работой
МП периферийным сервером транзакций.
ПРОГРАММНЫЙ ВВОД-ВЫВОД
Для внешних устрйств выделяеся адресное пространство, либо не
входящее в состав ЗУ, либо являющееся его частью. Следовательно
программный ВВ может быть двух типов:
•
с помощью команд ассемблера ввод (IN) и вывод (OUT)
•
с использованием всех команд пересылки ассемблера (MOV, LODSB,..).
В пределах 64K блока карта распределения памяти для первого случая
показана на рис.5 слева.
В пределах интервала 0000 ...XXXX адреса ВУ и ЗУ пересекаются.
Поэтому для однозначного обращения к ячейкам памяти или ВУ в
процессорном блоке формируются управляющие пересылкой стробирующие
импульсы - ~IOR,~IOW для ввода или вывода данных во внешнее устройство и
~MEMR,~MEMW для чтения или записи в память.Емкость ЗУ для размещения
программ и данных не уменьшается.
Карта распределения памяти для второго случая показана на рис.5
справа. Под внешние устройства выделяется часть адресного пространства ЗУ.
Емкость ЗУ уменьшается на количество адресов отводимых для ВУ. Второй
способ позволяет адресоваться к ВУ с помощью всех команд оперирующих с
памятью. Основное достоинство программного ВВ в простоте. Но при
выполнении ввода, например с клавиатуры, МП затрачивает до 99,99..%
времени на ожидание, не выполняя при этом другой полезной работы.
Избавиться от этого недостатка позволяет ВВ по прерываниям.
ВВОД-ВЫВОД ПО ПРЕРЫВАНИЯЮ
В общем случае прерывания могут вызываться
•
внешнними устройствами (внешние прерывания),
•
командами прерываний (программные прерывания)
•
автоматически самим МП (внутренние прерывания), например при попытке
деления на 0.
В этом разделе будут рассмотрены внешние прерывания. Работу МП
можно разделить во времени между двумя независимыми программами:
фоновой, которая выполняет основную задачу и программой ВВ данных. Когда
ВУ подготовит данные для передачи, оно посылает сигнал запроса на
прерывание непосредственно на вход МП INTR или в специальное устройство контроллер прерываний. В процессе обслуживания прерывания выполняются
следующие действия:
1. ВУ самостоятельно, либо через контроллер прерываний посылает сигнал
прерывания INT(R) на одноименный вход МП;
2. МП завершает выполнение текущей команды и если прерывания разрешены
командой ассемблера STI(EI для 8085), то подтверждает разрешение сигналом
ШУ -INTA;
3. В МП по ШД передается тип(номер) прерывания - N;
4. Содержимое PSW, а также CS,IP (адрес возврата),
скорректированное с учетом сброса очереди помещается в стек;
5. Сбрасываются флаги IF (флаг разрешения прерываний) и TF (флаг
трассировки), причем т.к. (IF) = 0 дальнейшие прерывания запрещаются;
6. В IP загружается содержимое двух байтов с начальным адресом 4*N, а в CS содержимое следующих двух байтов . Эти 4 байта называются вектором
(указателем) прерывания.
7. Начинает выполняться подпрограмма - обработчик прерывания.
•
•
•
•
•
•
•
•
•
•
INT_SUBR:
STI
PUSH AX
....; здесь
....; команды
MOV AL,5; обработчика
....;
прерывания
....
POP AX
IRET
Если допускаются вложенные прерывания, то вначале помещается
команда STI- разрешение преываний, запрещенных в п.5. Инструкции push и
pop сохраняют и восстанавливают содержимое регистров фоновой задачи,
если эти же регистры используются и обработчиком прерывания (в примере
регистр AX).
8. Команда IRET извлекает из стека адрес возврата - IP,CS и содержимое PSW;
9. МП прдолжает работу с адреса возврата. При выполнении программных
прерываний по команде INT N действия выполняются с п.3. N находится в
пределах 0 <= N <= 255, поэтому четырехбайтовые вектора прерываний
занимают первые 1024 байта памяти.
ПРЯМОЙ ДОСТУП К ПАМЯТИ (ПДП) И
ТРАНЗАКЦИИ
Обмен большим количеством байтов, между ВУ (например дисковым
накопителем) и памятью с помощью предыдущих двух методов
малоэффективен, т.к. обмен происходит по цепочке: ВУ - аккумулятор (AX или
AL) - память или наоборот. В режиме ПДП при поступлении запроса от ВУ на
вход HOLD, МП разрешает обмен выходным сигналом HLDA. Микропроцессор
на время обмена отключается от ШУ,ШД и ША переводя их в третье состояние
по входам ~OE буферных элементов сигналом ~BUSEN = 1 .Специальная
микросхема (контроллер ПДП) использует освободившиеся шины для
высокоскоростного прямого обмена ВУ - память. Скорость обмена достигает
многих мегабит/сек.
На рис.6 показан процесс выполнения основной (фоновой) программы интервалы времени (начало..t1, t2..конец) и выполнение процедуры передачи
массива данных, на рисунке этот отрезок времени обозначен двойной линией.
На диаграмме (А) ЭВМ задействована только для передачи (отрезок t1..t2), в
остальное время компьютер бездействует. Во втором варианте - диаграмма (Б),
код программы передачи жестко встроен в фоновую задачу. В третьем
варианте (В) передача массива оформлена в виде подпрограммы прерывания,
причем если запроса на прерывание не поступит, то суммарное время на
выполнение фоновой программы уменьшится на t2-t1. При использовании
режима ПДП сохраняются преимущества метода прерывания, время на
передачу сокращается - диаграмма (Г), но фоновая задача по прежнему
прерывается. В последнем случае передача данных производится почти без
нарушения хода программы параллельно во времени (Д). Транзакции
реализованы в некоторых семействах однокристальных микро-ЭВМ например в
MCS-96.
Download