- •Глава 1 позиционные системы счисления
- •Глава 2. Формат представления базовых данных
- •2. А положительное, b отрицательное и по абсолютной величине больше, чем а.
- •3. А положительное, b отрицательное и по абсолютной величине меньше, чем а.
- •4. А и в отрицательные.
- •Глава 2. Логические основы piCmicro
- •Элемент не
- •Элемент и
- •Элемент Исключающее или
- •Элемент или
- •Логические элементы в интегральном исполнении
- •Глава 3. Комбинационные устройства
- •Дешифраторы
- •Шифраторы
- •Мультиплексоры
- •Преобразователи кодов.
- •Сумматоры
- •Глава 4. Последовательностные устройства
- •Параллельные регистры
- •Последовательные (сдвиговые) регистры
- •Блок обработки информации алу/рабочий регистр
- •Счетчики импульсов
- •Глава 5. Запоминающие устройства Иерархия запоминающих устройств эвм
- •Иерархическая структура памяти
- •Структурная схема зу
- •Типы оперативных запоминающих устройств
- •Основные параметры запоминающих устройств
- •Микросхемы озу
- •Постоянные запоминающие устройства (пзу)
- •Флэш-память
- •Глава 6. Обработка хранимой программы
- •Режимы адресации
- •Устройство управления
- •Микроконтроллерная система
- •Глава 5. Архитектура микроконтроллера семейства p1c.
- •Регистр слова состояния status
- •Память данных
- •Параллельные порты ввода/вывода
- •Регистр таймера/счетчика tmr0
- •Eeprom память данных eedata, eeadr
- •Специальные регистры w, intcon, option
- •Глава 6. Требования языка ассемблер
- •Операнд
- •Комментарии в программах на ассемблере
- •Метка/Имя
- •Формат кодирования
- •Глава 7. Набор команд pic контроллера
- •Сложение
- •Очистка
- •Команды инкрементирования и декрементирования
- •Бит ориентированные команды
- •Вычитание
- •Глава 8. Логика и организация программ
- •Последовательное выполнение команд
- •Конструкция выбор пути
- •Команды передачи управления. Команда «нет операции»
- •Команда безусловного перехода
- •Команды условного перехода
- •Конструкция цикл
- •Косвенная адресация памяти данных
- •Глава 9. Модульное программирование
- •Временная задержка малой длительности.
- •Метод вложенных циклов
- •Временная задержка длительностью 1с.
- •10. Организация связи с оператором
Глава 5. Архитектура микроконтроллера семейства p1c.
В упрощенном виде архитектура микроконтроллера PIC 16F84 показана на Рис. 5.1. На первый взгляд она сложна, однако в действительности она не намного сложнее архитектуры элементарного гарвардского компьютера Рис. 6.3.
Основное отличие заключается в заключается в том, что к внутренней шине данных памяти данных, помимо ЦПУ, подключены периферийные модули. Чтобы лучше понять материал этой главы, рекомендую еще раз просмотреть материал, касающийся указанного компьютера.
Вообще говоря, в микроконтроллерах РIС реализована гарвардская архитектура с ее раздельными модулями памяти программ и данных, в которой периферийные устройства отображены на адресное пространство памяти данных. То есть с точки зрения программы все эти устройства расположены в памяти данных. То же касается и различных служебных регистров, таких как регистры статуса и управления, а также счетчика команд.
В основе работы любого вычислительного устройства лежит периодическое выполнение цикла выборка—исполнение. При этом каждая команда поочередно выбирается из памяти программ, интерпретируется и исполняется. Поскольку память, к которой обращается программа в процессе выполнения, является памятью данных, а каждое устройство памяти имеет собственные шины, операции выборки и исполнения могут осуществляться параллельно.
Таким образом, во время выборки п-й команды исполняется команда п—1. Коды обеих команд, как следующей, так и текущей, хранятся в двух внутренних регистрах команд — PК1 и PК2 соответственно. Команды, считанные из памяти программ, загружаются в начало этого конвейера и «выталкиваются» в дешифратор команд с конца конвейера. На Рис. 5.4 изображен развернутый во времени процесс выполнения команды, разбитый на машинные циклы. Во время каждого цикла, за исключением самого первого, выборка новой команды и исполнение предыдущей осуществляются одновременно.
Таким образом, во время выборки п-й команды исполняется команда п—1. Коды обеих команд, как следующей, так и текущей, хранятся в двух внутренних регистрах команд — PК1 и PК2 соответственно. Команды, считанные из памяти программ, загружаются в начало этого конвейера и «выталкиваются» в дешифратор команд с конца конвейера. На Рис. 5.4 изображен развернутый во времени процесс выполнения команды, разбитый на машинные циклы. Во время каждого цикла, за исключением самого первого, выборка новой команды и исполнение предыдущей осуществляются одновременно.
Рис.5.1. Архитектура микроконтроллера PIC16F84
БЛОК ВЫБОРКИ
Блок выборки, показанный отдельно на Рис. 5.2, предназначен для выборки команд из памяти программ и загрузки их в конвейер. Адрес каждой извлекаемой команды задается счетчиком команд. В свою очередь код операции, выделенный из кода команды, подается на вход дешифратора команд, который активирует в требуемой последовательности соответствующие узлы исполнительного блока.
Память программ
Основным элементом блока выборки является память программ. Программное обеспечение во встраиваемых системах фиксировано, поскольку после включения питания микроконтроллер должен сразу же приступить к выполнению своих задач, не тратя время на загрузку программы. Поэтому память программ, как правило, реализуется в виде ПЗУ какого-либо типа. В большинстве микроконтроллеров РIС используется многократно-программируемое ПЗУ; если в обозначении модели присутствует буква «F», то это FLASН~память.В памяти программ микроконтроллера РIС 16F84 может храниться до 1024 команд, размер каждой из которых составляет 14 бит (см. Рис. 5.1. на стр. 32). В новых микроконтроллерах семейства среднего уровня размер памяти программ колеблется от 1024 (например, Р1С 16F627) до 8192 (Р1С 16F876/7) команд.
Рис. 5.2. Блок выборки PIC16F84
Счетчик команд
Счетчик команд (Ргоgrаm Соuntег — РС) используется для адресации, или указания считываемой из памяти программ команды. Этот 13-битный регистр обычно инкременти-руется после каждой выборки, функционируя как двоичный счетчик. Однако, как мы с вами увидим в следующей главе, существует ряд команд, таких как команда GOTO, выполнение которых вызывает переход к другому месту в памяти программ. Соответственно, нормальное функционирование счетчика команд нарушается. Кроме того, программист может напрямую обращаться к счетчику команд через память данных.
Рис. 5.3. Память программ PIC16F84
Конвейер
Конвейер реализован в виде двух 14-битных регистров. В первом регистре хранится команда, только что считанная из памяти программ по адресу, определяемому значением счетчика команд. Второй регистр подключен к дешифратору команд и соответственно содержит исполняемую в данный момент команду. Такое решение позволяет осуществлять выборку команды одновременно с исполнением команды, выбранной в предыдущем цикле.
Естественно, при этом предполагается, что последовательность выполнения команд имеет линейный характер. Для команд, выполняющих переход к другому месту памяти программ, команда, находящаяся на вершине конвейера, должна быть заменена на другую. Этот процесс называется сбросом конвейера и увеличивает время исполнения команды на один цикл.
Как видно из Рис. 5.4, обычно команда выполняется за один машинный цикл.
Рис. 5.4. Фазы машинного цикла
Дешифратор команд
Дешифратор команд представляет собой логическую схему, которая декодирует каждое поле 14-битного слова команды и управляет передачей соответствующих адресов и данных на требуемые входы исполнительного блока, а также конфигурирует АЛУ.
Все модели микроконтроллеров РIС имеют встроенный генератор, задающий последовательность выполнения внутренних микроопераций в соответствии с сигналами, поступающими от дешифратора команд. В качестве времязадающего элемента обычно используется внешний кварцевый резонатор, подключаемый к выводам (Рис. 5.2)OSС1 и OSС2 микроконтроллера.
Именно этот резонатор определяет тактовую частоту микроконтроллераFоsс. Максимальная тактовая частота большинства моделей среднего уровня составляет 20 МГц, однако в некоторых ранних моделях частота не могла превышать 10, а то и 4 МГц. Минимальная тактовая частота ничем не ограничена.
Частота тактового генератора делится на четыре, чтобы получить четыре не перекрывающихся тактовых сигнала. Каждый из этих сигналов используется схемой дешифратора для управления внутренними узлами процессора в требуемой последовательности. Соответственно длительность одного машинного цикла равна четырем периодам внешнего сигнала Fоsс (см.Рис.5.4). Таким образом, при использовании резонатора с частотой 4 МГц частота машинных циклов составляет Fоsс/4, что соответствует периоду машинного цикла, равному 1 мкс.
В зависимости от текущей фазы машинного цикла блок выборки выполняет следующие операции:
Q1: Инкрементирование счетчика команд и выставление его содержимого на шину адреса памяти программ.
Q4: Считывание кода команды с шины данных памяти программ в регистр команд IR1 и одновременно с этим пересылка предыдущей команды по конвейеру в регистр команд IR2, подключенный к дешифратору команд.
Стек
Стек представляет собой отдельный блок из восьми 13-битных регистров, который подключен к счетчику команд. Cтек используется для хранения предыдущего значения счетчика команд, т.е. «запоминает» точку возврата при вызове подпрограммы.
Тактовый генератор
Для синхронизации работы узлов микpоконтpоллеpов семейства PIC возможно использование четыpех типов тактового генеpатоpа:
- XT кваpцевый pезонатоp
- HS высокочастотный кваpцевый pезонатоp
- LP микpопотpебляющий кваpцевый pезонатоp
- RC цепочка
В случае задания ваpиантов XT, HS и LP к микpосхеме подключается pезонатоp, а в случае задания ваpианта RC - pезистоp и конденсатоp. Конечно, кваpцевый pезонатоp значительно точнее и стабильнее, но если высокая точность отсчета вpемени не нужна, использование RC генеpатоpа может уменьшить стоимость и габаpиты устpойства.
Частота тактового генератора определяет машинный цикл работы микроконтроллера. При использовании кварцевого резонатора частотой 4 Мгц машинный цикл составляет 1 мкс.
ИСПОЛНИТЕЛЬНЫЙ БЛОК
Исполнительный блок (Рис. 5.5) осуществляет обработку данных, поступающих от двух источников. Одним из этих источников является 8-ми битный регистр W.В качестве другого источника может выступать:
Рис. 5.5. Исполнительный блок микроконтроллера
Регистр данных, указанный в команде. Например, команда ADDWF TEMP,F прибавляет содержимое W к содержимому регистра TEMP.
Константа, являющаяся частью слова команды. Например, ADDLW 05 прибавляет 5 к содержимому рабочего регистра.
Режим работы АЛУ определяется сигналами, формируемыми дешифратором команд. Результат помещается либо в рабочий регистр, если бит адресата равен W (ADDWF TEMP,W), либо обратно в память данных, если этот бит F (ADDWF TEMP,F), перезаписывая исходное значение.
