PIC- контроллеры

Микроконтроллеры с RISC- архитектурой

 

Анализ программ, выполняемых в системах на основе МК с расширенной системой команд (CISC- контроллеры), показал, что в 80 % случаев используется только 20 % команд. Следовательно, дешифратор команд, занимающий 75 % площади кристалла на CISC- МК, используется неэффективно. Архитектура RISC (Reduced Instruction Set Computing) использует сокращенный набор команд с единым форматом. Особенностью RISC- МК является то, что все команды выполняются за 1…3 такта синхрогенератора, а в CISC- МК – за 1…3 машинных цикла, каждый из которых состоит из нескольких тактов (для i80x51 – из 12 тактов). Поэтому RISC- МК имеют более высокую производительность. Но более полная система команд CISC в ряде случаев приводит к экономии времени выполнения отдельных фрагментов программы и к экономии памяти программ.

 

PIC- контроллеры (Peripheral Interface Controller – контроллеры периферийных интерфейсов) выпускаются фирмой MicroChip и являются типичными представителями RISC- процессоров. Система команд включает 33…35 команд, каждая команда занимает в памяти одно слово. Разрядность ПЗУ – от 12 до 16 (MicroChip анонсирует это значение как разрядность микроконтроллера). Время выполнения каждой команды (кроме команд разветвления) – один машинный цикл, занимающий 4 такта. Т.е. при частоте генератора 4 МГц время выполнения одной команды 1 мкс. Стек реализован аппаратно и имеет глубину 2, 8 или 16 ячеек. Ряд PIC- контроллеров содержит встроенные АЦП, иногда ЦАП или компаратор. Контроллеры имеют от одного до трех таймеров, сторожевой таймер, внутренний тактовый генератор, способный работать в различных режимах. Сторожевой таймер имеет независимый встроенный RC- генератор; номинальная выдержка сторожевого таймера (без предделителя 1/128) составляет 18 мс, с предделителем – около 2,3 с. Поддерживается режим низкого энергопотребления – SLEEP.

 

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

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

Каждая команда представляет собой 14- разрядное слово. Система команд образована группами:

- Команды работы с байтами – арифметические, логические, пересылки

- Команды работы с битами – сброс/установка бита в регистре

- Команды работы с константами

- Команды передачи управления

Для выполнения всех команд АЛУ использует рабочий регистр W (Work), который не может быть прямо адресован.

 

Дополнительно PIC- контроллеры могут содержать АЦП, модуль ШИМ, модуль синхронного последовательного порта с интерфейсами SPI, I2C, USB. Микроконтроллер PIC поддерживает внутрисистемное программирование. PIC- контроллеры старших семейств имеют встроенный аппаратный умножитель, в них предусмотрена возможность выполнять программу из внешнего ПЗУ.

Каждый вывод порта обеспечивает выходной ток до 25 мА при условии, что ток по выводу VSS не превысит 150 мА. Интервал рабочих температур -55…+1250С.

 

Входная тактовая частота делится на 4, из нее формируются четыре неперекрывающиеся тактовые последовательности Q1…Q4, образующие один машинный цикл. Счетчик команд инкрементируется в такте Q1, а команда считывается и защелкивается в регистре команд в такте Q4. Команда выполняется в следующем цикле. Т.е. во время выполнения команды РС считывается команда РС+1, процедуры выборки команды и выполнения совмещены. Эффективное время выполнения команды в потоке составляет 1 цикл, т.е. 4 такта. Если команда изменяет счетчик команд (например, CALL), то ее выполнение занимает 2 цикла – 8 тактов.