Обзор поколения 16-разрядных
микроконтроллеров Microchip
Алексей ПАНТЕЛЕЙЧУК
В рамках предлагаемой статьи приведен краткий обзор одного из самых популярных в настоящее время поколений микроконтроллеров компании Microchip: 16-разрядных семейств dsPIC30, dsPIC33, PIC24F и PIC24H. Кратко описаны особенности основных узлов, приведена сводная сравнительная таблица основных параметров и характеристик каждого семейства. Особое внимание уделено описанию уникальных узлов, впервые реализованных в новых семействах dsPIC33, PIC24.
Таблица 1. Основные сравнительные характеристики поколения 16-разрядных микроконтроллеров компании Microchip
Семейство Характеристики''''''''-''---.......,^^ dsPIC30 dsPIC33 PIC24H PIC24F
Производительность, MIPS 30 40 40 16
Тактовая частота, МГц 0-120 0-80 0-80 0-32
Напряжение питания, В 2,5-5,5 3,0-3,6 3,0-3,6 2,0-3,6
Наличие DSP-ядра есть есть нет нет
Потребляемая мощность до 1,25 Вт до 300 мВт до 300 мВт до 100 мВт
Режимы ФАПЧ (PLL) x4, x8, x16 х2...х513
Flash-память, кбайт 6-144 12-256 12-256 16-256
СОЗУ, байт 256-8192 1024-32768 1024-16384 4096-16384
EEPROM, байт 0-4096 0 0 0
DMA, каналов 0 0/8 0/8 0
Аппаратный CRC нет нет нет есть
Параллельный порт нет нет нет РМР
Мультиплексоры портов нет нет/есть нет/есть нет/есть
16-разрядные таймеры 2/3/5 3/9 3/9 4/5
32-разрядные таймеры 0/1/2 0/1/4 1/4 2
Захват-сравнение 1/2/4/8 4/8 4/8 0/5
ШИМ (классический) 1/2/4/8 2/8 (16 бит) 2/8 (16 бит) 5/9
ШИМ (электродвигатели) 4/6/8 0/8 0 0
ШИМ (источники питания) 4/8 0 0 0
10-разрядные АЦП, каналов до 16 до 13 до 13 до 16
12-разрядные АЦП, каналов до 16 до 32 до 32 нет
Компараторы 0/2/4 0 0 2
UART 1/2 1/2 1/2 2/4
SPI 1/2 1/2 1/2 2/3
I2C 1/2 1/2 2/3
I2S (AC97) есть нет нет нет
CAN 0/1/2 0 0 0
ECAN 0 0/1/2 0/1/2 0
QEI (датчики положения) 0/1 0/1 0 0
RTC нет нет нет есть
IrDA 0 0 есть есть
JTAG нет есть есть есть
Корпус TQFP-80, TQFP-64, TQFP-44, QFN-44, PDIP-44, SOIC-28, PDIP-28, QFN-28, SOIC-18, PDIP-18 Т0РР-100, Т0РР-80, ТОРР-64, Т0РР-44, 0РЫ-44, Б0!С-28, РР1Р-28, ОРЫ-28, Б01С-20, РР1Р-20, Б01С-18, РР1Р-18 Т0РР-100, ТОРР-64, ТОРР-44, 0РЫ-44, Б01С-28, БР01Р-28, 0РЫ-28, РР1Р-18, 0РЫ-18 Т0РР-100, Т0РР-80, Т0РР-64, Т0РР-44, 0РЫ-44, Б01С-28, ЗБ0Р-28, БР01Р-28, 0РЫ-28
Однажды выпустив 16-разрядные микроконтроллеры dsPIC30, компания Microchip уверенно заняла нишу производительных 16-разрядных микроконтроллеров со встроенным ядром цифровой обработки сигналов — DSC (Digital Signal Controller). Семейство dsPIC30 оказалось весьма удачным в таких областях применения, как электроприводы для управления мощными многофазными электродвигателями, сложная медицинская аппаратура, многоканальные интеллектуальные источники питания.
В ногу со временем
Семейство dsPIC30 послужило отправной точкой для дальнейшего развития и расширения поколения 16-разрядных микроконтроллеров Microchip [1]. Благодаря своевременному вложению средств в новые производственные мощности и технологии, компания Microchip выпустила в свет три новых семейства: dsPIC33, PIC24H и PIC24F, производимых по технологии 0,25 мкм, что, прежде всего, позволило резко сократить уровень потребляемой мощности и поднять пиковую производительность до 40 MIPS.
Условно все 16-разрядные МК можно разделить на две группы (табл. 1): dsPIC30 и dsPIC33 — семейства микроконтроллеров с DSP-ядром, PIC24H и PIC24F — семейства 16-разрядных микроконтроллеров общего назначения. Самой широкой номенклатурой микроконтроллеров обладает семейство dsPIC30, как самое раннее. Это семейство делится на четыре подсемейства: общего назначения (GP — general purpose), управление двигателями (MC — motor control), управление интеллектуальными источниками питания (SMPS — Switch Mode Power Supply) и семейство Sensor Family со встроенным 12-разрядным АЦП для оцифровки, предварительной обработки и фильтрации данных с внешних датчиков.
Системная шина
Системная шина состоит из 16-разрядной шины данных и 24-разрядной шины адреса (рис. 1). Организована линейная адресация памяти программ (8 Мбайт) и памяти данных (64 кбайт) с возможностью отображения любого 32-килобайтного окна памяти программ на фиксированную область памяти данных (PSV — Program Space Visibility). Также возможен обычный табличный доступ к памяти программ (как это реализо-
вано в 8-разрядных микроконтроллерах Microchip).
Ядро
В ядре есть набор из 16 внутренних регистров процессора с программно-аппаратным управлением стеком и аппаратным контролем над заранее указанными границами стека с генерацией соответствующего исключения. Все четыре 16-разрядных семейства имеют одинаковое процессорное ядро и, со-
Рис. 1. Структурная схема микроконтроллеров семейства РІС24Р
ответственно, одинаковую систему команд. Кроме того, в dsPIC30 и dsPIC33 встроено ядро ЦОС со своим дополнительным набором
команд (табл. 2), любая из которых, а также подавляющая часть команд основного ядра выполняется за один командный цикл, дли-
тельность которого составляет 4 периода тактовой частоты для dsPIC30 и 2 периода для dsPIC33, PIC24H, PIC24F.
Таблица 2. Система команд ядра ЦОС микроконтроллеров семейств (ЗвРЮЗО и (ЗвРЮЗЗ
Мнемоника Выражение
CLR A = 0
ED A = (x-y)2
EDAC A = A+(x-y)2
MAC A = A+(xxy)
MAC A = A+x2
MPY A = xxy
MPY A = x2
MPY.N A = -xxy
MSC A = A-xxy
Источник:
внешний тактовый сигнал кварцевый генератор, внутренний RC-генератор
Fose
Рис. 2. Структурная схема модуля ФАПЧ микроконтроллеров семейств dsPIC33, PIC24H и PIC24F
Ортогональное построение системы команд позволяет добиться того, что практически любая команда поддерживает все доступные способы адресации данных. Это дает возможность значительно сократить размер конечного исполняемого кода, что в конечном итоге увеличивает скорость его выполнения.
В ядро ЦОС встроен модуль умножения 17x17, 40-разрядный модуль арифметического сдвига, аппаратный контроль переполнения результата, модули управления адресацией памяти, модули управления аппаратно реализованными циклами, умножение с накоплением, с предвыборкой по двум шинам X и Y, аппаратным контролем переполнения результата, его округлением и т. д. С помощью специального регистра управления ядром ЦОС возможен выбор дробного или целочисленного умножения, умножения со знаком или без учета знака, метода округления результата.
Управлением питанием Для гибкого управления потребляемой мощностью с состав микроконтроллеров включены три режима энергосбережения: SLEEP — полный останов тактирования ядра и периферийных модулей (аналогично режиму в 8-разрядных микроконтроллерах Microchip), IDLE — останов тактирования только ядра, периферийные модули работают на рабочей тактовой частоте. Режим DOZE (в dsPIC30 отсутствует) — независимое тактирование ядра и периферийных модулей, позволяющее очень гибко управлять потребляемой мощностью микроконтроллера. Например: относительно редкая обработка данных, поступающих по внешним интерфейсам, но требующая своевременной реакции. В этом случае включенные периферийные модули тактируются номинальной тактовой частотой, а ядро — пониженной частотой, формируемой из основной частоты отдельным делителем.
Тактовый генератор Доступны шесть источников тактовой частоты: внешний тактовый сигнал 0-40 МГц, FRC — внутренний высокочастотный программно калибруемый RC-генератор 7,37 МГц (8 МГц в PIC24F), LPRC — внутренний низкочастотный RC-генератор 512 кГц, HS — высокочастотный кварцевый генератор
10-25 МГц, LP — низкочастотный кварцевый генератор (кроме dsPIC30), ERC — внешний RC-генератор. Генераторы FRC и HS могут быть подключены к встроенному модулю ФАПЧ (PLL) (рис. 2). Возможность быстрого переключения источника тактового сигнала «на ходу» повышает гибкость управления потребляемой мощностью. Встроенный узел контроля сбоев высокочастотного генератора позволяет значительно повысить надежность конечного изделия: работа микроконтроллера в этих случаях не прекращается, так как автоматически подключается встроенный RC-генератор.
Контроллер прерываний
Контроллер прерываний построен на основе векторного контроллера прерываний с поддержкой приоритетов, подключен к единственному входу прерывания ядра, обслуживающему до 44 источников прерываний для dsPIC30, до 118 для dsPIC33/PIC24F/ PIC24Hb и до 8 источников исключений (exceptions/traps) и программных прерываний (software traps). Каждый из источников прерываний имеет свой собственный вектор, которому можно назначить любой приоритет (до 7 уровней). Особенно стоит отметить следующую особенность: фиксированное время входа в прерывания и выхода из него (interrupt latency), что немаловажно при обработке
внешних асинхронных событий, время на обработку и анализ которых должно быть заранее известно. Эта особенность крайне необходима в системах жесткого реального времени.
Контроллер прямого доступа к памяти Контроллер прямого доступа к памяти (DMA), используя отдельную шину, позволяет осуществлять обмен между периферийными модулями и памятью данных без участия ядра процессора. Всего доступно 8 каналов DMA, каждый из которых может иметь один из 19 источников или приемников данных. Наличие девяти режимов работы позволяет выбрать оптимальный вариант работы каждого канала для конкретной задачи. Контроллер прерываний может быть настроен так, что прерывание от каждого из каналов DMA будет возникать либо после окончания пересылки всего блока данных, либо его половины.
Расширенный мультиплексор портов ввода/вывода
Расширенный мультиплексор портов ввода/ вывода (PPS — Peripheral Pin Select Crossbar) позволяет встраивать в микроконтроллеры с малым числом выводов очень богатый набор периферийных модулей. Благодаря этому, в зависимости от технических требований один и тот же микроконтроллер можно ис-
пользовать в различных изделиях [2]. Например, к одному аппаратному модулю UART микроконтроллера можно подключать сразу четыре устройства (рис. 3) с UART, причем переключение между устройствами может выполняться в процессе работы программы контроллера, то есть «на лету». Эта особенность также упрощает трассировку печатной платы устройства. Более того, корпус с меньшим числом выводов обходится дешевле в производстве и занимает значительно меньше места на плате устройства. Модуль PPS реализован в некоторых 18/28/44-выводных микроконтроллерах PIC24F и PIC24H. В будущем компания-изготовитель планирует размещать этот модуль и в других новых микроконтроллерах.
Серия микроконтроллеров SMPS Серия микроконтроллеров SMPS (Switch Mode Power Supply) специально спроектирована для работы в составе интеллектуальных многоканальных импульсных источников питания [3]. В будущем компания Microchip планирует выпускать микроконтроллеры серии SPMS не только в семействе dsPIC30, но и в новом семействе dsPIC33.
Простота перевода проектов на новые семейства
Вне зависимости от размера памяти все члены семейств dsPIC33, PIC24H и PIC24F имеют одинаково богатый набор периферийных модулей, что позволяет осуществлять плавный переход на новое поколение и расширять возможности приложения. Совместимая схема расположения выводов в значительной степени упрощает замену микроконтроллеров, размещенных в 64-выводных корпусах, на микроконтроллеры в 80-вывод-ных и в 100-выводных корпусах. Более того, одинаковая схема размещения выводов между семействами PIC24H и dsPIC33, аналогично тому, как это осуществлено для семейств PIC18 и dsPIC30, расширяет возможность наращивать производительность приложения, при этом отпадает необходимость смены фирмы-производителя.
Средства разработки
Все четыре семейства поддерживаются общей бесплатной средой разработки MPLAB IDE [4] со встроенным полным симулятором, ассемблером ASM30 и отдельно приобретаемым недорогим компилятором MPLAB C30 [5], построенным на базе популярного бесплатного компилятора GNU C с открытым исходным кодом. Компания Microchip выпускает обширный набор одноплатных модулей для ознакомления МК и разработки проектов на базе 16-разрядных микроконтроллеров dsPIC30/33 и PIC24F/H.
Заключение
В заключение можно привести неофициальные сравнительные данные производительности [6] семейств 16-разрядных микроконтроллеров компании Microchip с распространенными семействами 16/32-разрядных микроконтроллеров конкурирующих компаний (табл. 3, 4).
Подводя итоги, можно отметить, что выбор компании Microchip направления дальнейшего развития и вложения сил оказался весьма удачным. На свет вышло, пожалуй, самое удачное поколение 16-разрядных микроконтроллеров dsPIC30/dsPIC33/PIC24F/ PIC24H, получившее высокую популярность среди разработчиков и производителей.
Причиной этому стало акцентирование внимания не только на тактовой частоте, собственном потреблении и богатстве периферийных модулей, зачастую требующих корректировки в последующих версиях кристаллов — Errata, что часто «отпугивает» разработчиков и производителей, а на таких «узких» местах, которые можно встретить во многих микроконтроллерах других производителей. Например, заранее известное (детерминированное) время входа в обработчики прерываний и выхода из них, минимизация числа тактов на выполнение любых команд и заранее вычисляемое время выполнения любого участка кода, минимальный набор команд, ориентированных на их гибкое применение в компиляторах языков высокого уровня.
Таблица 3. Сравнительная производительность семейств dsPIC30 и dsPIC33 в 16-разрядных арифметических операциях
Процессор MIPS Компилятор Тактов Время выполнения, мкс
DSPIC30F 30 GNU ASM30 23 0,77
DSPIC33F 40 GNU ASM30 23 0,58
ARM7 60 ADS 1.2 116 1,95
MC56F8323 60 CodeWarrior 7.0 102 1,70
AT32AP7000 150 GCC 4.1.2 78 0,52
TMS320F2812 150 CCS - 0,25
Таблица 4. Сравнительная производительность
семейств (ЗвРЮЗО и (ЗвРЮЗЗ
при копировании 16-разрядных блоков данных
Процессор MIPS Компи- лятор Тактов Время выполнения, мкс Размер кода, байт
DSPIC30F 30 GNU ASM30 138 4,6 30
DSPIC33F 40 GNU ASM30 138 3,45 30
ARM7 60 ADS 1.2 1410 23,5 112
AT32AP7000 150 GCC 4.1.2 771 5,14 114
TMS320F2812 150 CCS 762 5,08 44
Несмотря на стремительно растущую популярность 32-разрядных микроконтроллеров, поколение dsPIC30/dsPIC33/PIC24F/PIC24H твердо и уверенно занимает свою нишу в медицинской и промышленной аппаратуре, в которой всегда требуется повышенная надежность, большая функциональность, высокая производительность, малые габариты и низкая стоимость. ■
Литература
1. Поколение 16-разрядных микроконтроллеров компании Microchip. www.microchip.com/dspic
2. Расширенный мультиплексор портов ввода/вывода в PIC24. www.microchip.com/pps
3. Новые микроконтроллеры dsPIC30 серии SMPS. Новости электроники. 2007. № 13.
4. Среда разработки MPLAB IDE. www.microchip.com/mplab
5. С-компилятор MPLAB C30. www.microchip.com/C30
6. http://benchmarks.caxapa.ru