Микроконтроллеры PIC - PIC microcontrollers

Микроконтроллеры PIC в DIP и QFN пакеты
16-битный 28-контактный микроконтроллер PDIP PIC24 рядом с метрической линейкой
Умереть 8-битного PIC12C508, полностью статический, EEPROM /EPROM /ПЗУ -основан CMOS микроконтроллер изготовлены по Технология микрочипов используя 1200 нанометр обработать
Умереть из PIC16C505 CMOS ПЗУ на основе 8 бит микроконтроллер изготовлены по Технология микрочипов используя 1200 нанометр обработать

ПОС (обычно произносится как "выбирать") - это семья микроконтроллеры сделан Технология микрочипов, полученный из PIC1650[1][2][3] первоначально разработан Общий инструмент Отделение микроэлектроники. Первоначально название PIC упоминалось Контроллер периферийного интерфейса,[4]и в настоящее время расширяется как Программируемый интеллектуальный компьютер.[5]Первые части семейства были доступны в 1976 году; к 2013 году компания поставила более двенадцати миллиардов отдельных деталей, используемых в самых разных встроенные системы.

Ранние модели PIC имели постоянную память (ROM) или программируемую EPROM для хранения программ, некоторые с возможностью стирания памяти. Все текущие модели используют флэш-память для хранения программ, а более новые модели позволяют PIC перепрограммировать себя. Память программ и память данных разделены. Память данных бывает 8-битной, 16-битной и, в последних моделях, 32-битной шириной. Программные инструкции различаются по количеству бит в зависимости от семейства PIC и могут иметь длину 12, 14, 16 или 24 бита. Набор инструкций также зависит от модели, более мощные чипы добавляют инструкции для цифровая обработка сигналов функции.

Аппаратные возможности устройств PIC варьируются от 6-контактного SMD, 8-контактный DIP микросхемы до 144-контактных микросхем SMD, с дискретными контактами ввода / вывода, АЦП и ЦАП модули и порты связи, такие как UART, I2C, МОЖЕТ, и даже USB. Варианты малой мощности и высокой скорости существуют для многих типов.

Производитель поставляет компьютерное программное обеспечение для разработки, известное как MPLAB X, ассемблеры и компиляторы C / C ++, а также оборудование для программирования / отладчика под MPLAB и Возьми серии. Также доступны сторонние инструменты и некоторые инструменты с открытым исходным кодом. Некоторые части имеют возможность внутрисхемного программирования; доступны как недорогие программисты-разработчики, так и высокопроизводительные программисты.

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

История

Оригинальная концепция

Различные старые (EPROM) микроконтроллеры PIC

Первоначальный PIC был предназначен для использования с новым General Instrument CP1600 16 бит центральное процессорное устройство (ЦПУ). CP1600 был мощным процессором для своего времени, в нем реализовано большинство PDP-11 миникомпьютер архитектура набора команд в корпусе микрокомпьютера.

Хотя большинство людей считало CP1600 хорошим процессором, у него была одна существенная проблема; чтобы уменьшить количество выводов физического DIP упаковка, адресная шина и шина данных общие контакты. Для процессоров с отдельными Ввод / вывод каналы, такие как Intel 8008, это не было бы проблемой, но 1600 также использовал PDP-11 ввод / вывод с отображением памяти концепция. Это означало, что для связи с устройством требовалось, чтобы устройство отслеживало доступ к ключевым ячейкам памяти в одном машинном цикле, а затем считало данные в следующем. Это сделало ввод-вывод на машине медленнее, поскольку шина чередовалась между режимами адреса и данных, и более затратной в реализации, поскольку устройства должны были фиксировать вводы в течение нескольких циклов. Вся эта сложность была повторена на стороне ЦП в соответствующем драйвер устройства.

Чтобы устранить этот недостаток 1600, в 1975 году была разработана 8-битная PIC. Идея заключалась в том, что в системе должна была быть одна или несколько недорогих PIC, выполняющих фактический ввод-вывод с устройствами, а затем отправляющих эти данные. к процессору. PIC использовал простой микрокод хранится в ПЗУ для выполнения своих задач, и хотя термин RISC в то время не использовался, он имеет некоторые общие особенности с RISC конструкции.

После 1600

В 1985 году General Instrument продала свои микроэлектроника разделение и новые владельцы отменили практически все, что к тому времени в основном устарело. PIC, однако, был обновлен внутренним EPROM производить программируемый контроллер канала.В то же время Плесси в Великобритании выпустили процессоры NMOS под номерами PIC1650 и PIC1655, основанные на дизайне GI, с использованием тех же наборов инструкций, либо с программируемой маской пользователя, либо с версиями, предварительно запрограммированными для устройств автоматического набора номера и интерфейсов клавиатуры. [6]

В 1998 году Microchip представила PIC 16F84, флэш-программируемую и стираемую версию своего успешного последовательного программируемого PIC16C84. В 2001 году Microchip представила больше программируемых Flash-устройств, и их производство началось в 2002 году. [2]

Сегодня доступно огромное количество PIC с различными встроенными периферийными устройствами (последовательная связь модули, UART, ядра управления двигателем и т. д.) и программной памяти от 256 до 64К слов и более («слово» - это одна инструкция на языке ассемблера, длина которой варьируется от 8 до 16 биты, в зависимости от конкретного PIC микро семья).

PIC и PICmicro теперь являются зарегистрированными товарными знаками Microchip Technology. Обычно считается, что PIC означает Контроллер периферийного интерфейса, хотя первоначальное сокращение General Instruments для начальных устройств PIC1640 и PIC1650 было "Программируемый контроллер интерфейса".[4] Аббревиатуру быстро заменили на "Программируемый интеллектуальный компьютер".[5]

Микрочип 16C84 (PIC16x84 ), представленный в 1993 году, был первым[7] Микрочип ЦП со встроенной памятью EEPROM.

К 2013 году Microchip поставляла более одного миллиарда микроконтроллеров PIC ежегодно.[8]

Семейства устройств

Микрочипы PIC разработаны с Гарвардская архитектура, и предлагаются в различных семействах устройств. Семейства базового и среднего уровня используют 8-разрядную память данных, а семейства высокого класса используют 16-разрядную память данных. Последняя серия, PIC32MZ, является 32-битным MIPS на базе микроконтроллера. Слова инструкции имеют размер 12 бит (PIC10 и PIC12), 14 бит (PIC16) и 24 бит (PIC24 и dsPIC). Бинарные представления машинных инструкций различаются в зависимости от семейства и показаны на Перечень инструкций PIC.

В рамках этих семейств устройства могут быть обозначены как PICnnCxxx (CMOS) или PICnnFxxx (Flash). Устройства "C" обычно классифицируются как "Не подходящие для новых разработок" (Microchip активно не продвигает их). Программная память устройств "C" по-разному описывается как OTP, ROM или EEPROM. По состоянию на октябрь 2016 года единственным продуктом OTP, классифицированным как «В производстве», является pic16HV540. Устройства "C" с кварцевыми окошками (для стирания) вообще больше не доступны.

PIC10 и PIC12

Эти устройства имеют 12-разрядную кодовую память, 32-байтовый регистровый файл и крошечный двухуровневый стек вызовов. Они представлены серией PIC10, а также некоторыми устройствами PIC12 и PIC16. Базовые устройства доступны в корпусах от 6 до 40 контактов.

Обычно первые 7–9 байтов регистрового файла являются регистрами специального назначения, а оставшиеся байты - ОЗУ общего назначения. Указатели реализуются с использованием пары регистров: после записи адреса в FSR (регистр выбора файла) регистр INDF (косвенный f) становится псевдонимом для адресуемого регистра. Если реализована сгруппированная RAM, номер банка выбирается старшими 3 битами FSR. Это влияет на номера регистров 16–31; регистры 0–15 являются глобальными и не зависят от битов выбора банка.

Из-за очень ограниченного пространства регистров (5 битов) 4 редко читаемых регистра не имели адреса, а записывались специальными инструкциями (ВАРИАНТ и ТРИС).

Адресное пространство ПЗУ составляет 512 слов (по 12 бит каждое), которое может быть расширено до 2048 слов при помощи банка. ВЫЗОВ и ИДТИ К инструкции определяют младшие 9 бит новой позиции кода; дополнительные старшие биты берутся из регистра состояния. Обратите внимание, что инструкция CALL включает только 8 бит адреса и может указывать адреса только в первой половине каждой страницы из 512 слов.

Таблицы поиска реализованы с использованием вычисляемого ИДТИ К (присвоение регистру PCL) в таблицу RETLW инструкции.

Это «базовое ядро» нет поддержка прерывает; все Ввод / вывод должно быть опрошенный. Есть несколько «расширенных базовых» вариантов с поддержкой прерываний и четырехуровневым стеком вызовов.

Устройства PIC10F32x имеют 14-битную кодовую память среднего уровня на 256 или 512 слов, 64-байтовый регистровый файл SRAM и 8-уровневый аппаратный стек. Эти устройства доступны в корпусах с 6 выводами SMD и с 8 выводами DIP (два контакта не используются). Доступен только один вход и три контакта ввода / вывода. Доступен сложный набор прерываний. Часы представляют собой внутренний откалиброванный высокочастотный генератор с частотой 16 МГц с возможностью выбора скоростей с помощью программного обеспечения и источник с низким энергопотреблением 31 кГц.

PIC16

Микрочип PIC16C58A
PIC16LF870 в гнезде SOIC

Эти устройства имеют 14-битную память кода и улучшенный 8-уровневый стек вызовов. Набор команд очень мало отличается от базовых устройств, но два дополнительных бита кода операции позволяют напрямую адресовать 128 регистров и 2048 слов кода. Есть несколько дополнительных различных инструкций и две дополнительные 8-битные буквальные инструкции сложения и вычитания. Ядро среднего уровня доступно в большинстве устройств с маркировкой PIC12 и PIC16.

Первые 32 байта регистрового пространства выделяются специальным регистрам; остальные 96 байтов используются для ОЗУ общего назначения. Если используется ОЗУ с банками, старшие 16 регистров (0x70–0x7F) являются глобальными, как и некоторые из наиболее важных регистров специального назначения, включая регистр STATUS, в котором хранятся биты выбора банка ОЗУ. (Другими глобальными регистрами являются FSR и INDF, младшие 8 бит программного счетчика PCL, старший регистр предварительной загрузки ПК PCLATH и главный регистр управления прерываниями INTCON.)

Регистр PCLATH предоставляет биты адреса команд высокого порядка, когда 8 битов, предоставленных записью в регистр PCL, или 11 битов, предоставленных ИДТИ К или ВЫЗОВ инструкции, недостаточно для обращения к доступному пространству ПЗУ.

PIC17

Серия 17 так и не стала популярной и была заменена архитектурой PIC18 (однако см. клоны ниже). 17-я серия не рекомендуется для новых разработок, и доступность может быть ограничена для пользователей.

Улучшения по сравнению с более ранними ядрами - это 16-разрядные коды операций (позволяющие использовать множество новых инструкций) и 16-уровневый глубокий стек вызовов. Устройства PIC17 выпускались в корпусах от 40 до 68 контактов.

17-я серия представила ряд важных новых функций:[9]

  • аккумулятор с отображением в память
  • доступ на чтение к памяти кода (чтение таблицы)
  • прямой регистр для перемещения регистров (предыдущие ядра необходимы для перемещения регистров через аккумулятор)
  • интерфейс внешней программной памяти для расширения пространства кода
  • 8-битный 8-битный аппаратный умножитель
  • вторая пара косвенных регистров
  • Адресация с автоматическим увеличением / уменьшением, управляемая битами управления в регистре состояния (ALUSTA)

Существенным ограничением было то, что пространство ОЗУ было ограничено 256 байтами (26 байтов регистров специальных функций и 232 байта ОЗУ общего назначения), с неудобным переключением банков в моделях, которые поддерживали больше.

PIC18

В 2000 году Microchip представила архитектуру PIC18.[3] В отличие от 17-й серии, она оказалась очень популярной, в настоящее время в производстве находится большое количество вариантов устройств. В отличие от более ранних устройств, которые чаще всего программировались на ассемблере, C стал преобладающим языком разработки.[10]

Серия 18 наследует большинство функций и инструкций серии 17, но при этом добавляет ряд важных новых функций:

  • стек вызовов имеет ширину 21 бит и намного глубже (31 уровень)
  • стек вызовов может быть прочитан и записан (TOSU: TOSH: TOSL регистры)
  • инструкции условного перехода
  • индексированный режим адресации (PLUSW)
  • расширение регистров FSR до 12 бит, что позволяет им линейно адресовать все адресное пространство данных
  • добавление еще одного регистра FSR (доведение числа до 3)

Объем RAM составляет 12 бит, адресация осуществляется с помощью 4-битного регистра выбора банка и 8-битного смещения в каждой инструкции. Дополнительный бит доступа в каждой инструкции выбирает банк 0 (а= 0) и банк, выбранный BSR (а=1).

Также доступен одноуровневый стек для регистров STATUS, WREG и BSR. Они сохраняются при каждом прерывании и могут быть восстановлены при возврате. Если прерывания отключены, их также можно использовать при вызове / возврате подпрограммы, установив параметр s бит (добавление ", FAST" к инструкции).

Функция автоматического увеличения / уменьшения была улучшена путем удаления управляющих битов и добавления четырех новых косвенных регистров для каждого FSR. В зависимости от того, к какому косвенному регистру файла осуществляется доступ, возможно постдекремент, постинкремент или прединкремент FSR; или сформируйте эффективный адрес, добавив W к FSR.

В более продвинутых устройствах PIC18 доступен «расширенный режим», который делает адресацию еще более удобной для скомпилированного кода:

  • новый режим смещения адресации; некоторые адреса, относящиеся к банку доступа, теперь интерпретируются относительно регистра FSR2
  • добавление нескольких новых инструкций, предназначенных для управления регистрами FSR.

Устройства PIC18 все еще разрабатываются (2017 г.) и оснащены CIP (Core Independent Peripherals).

PIC24 и dsPIC

В 2001 году Microchip представила серию микросхем dsPIC,[11] которые начали массовое производство в конце 2004 года. Это первые 16-разрядные микроконтроллеры Microchip. Устройства PIC24 представляют собой микроконтроллеры общего назначения. Устройства dsPIC включают цифровая обработка сигналов возможности в дополнение.

Хотя все еще похожи на более ранние архитектуры PIC, есть значительные улучшения:[12]

  • Все регистры имеют ширину 16 бит
  • Счетчик команд составляет 22 бита (биты 22: 1; бит 0 всегда равен 0)
  • Инструкции имеют ширину 24 бита
  • Адресное пространство данных расширено до 64KiB
  • Первые 2 КиБ зарезервированы для регистров управления периферией
  • Переключение банка данных не требуется, если ОЗУ не превышает 62 КБ.
  • Прямая адресация "f операнд" расширена до 13 бит (8 КиБ)
  • Для операций регистр-регистр доступно 16 регистров Вт.
    (Но операции с операндами f всегда ссылаются на W0.)
  • Инструкции бывают в байтовых и (16-битных) словоформах.
  • Стек находится в ОЗУ (с указателем стека W15); нет аппаратного стека
  • W14 - это указатель кадра
  • Доступ к данным, хранящимся в ПЗУ, возможен напрямую («Видимость пространства программы»)
  • Векторные прерывания для разных источников прерываний

Некоторые особенности:

dsPIC могут быть запрограммированы в C с использованием компилятора Microchip XC16 (ранее называвшегося C30), который является вариантом GCC.

ПЗУ с инструкциями имеет ширину 24 бита. Программное обеспечение может обращаться к ПЗУ в 16-битных словах, где четные слова содержат 16 младших значащих бит каждой инструкции, а нечетные слова содержат 8 старших битов. Старшая половина нечетных слов читается как ноль. Программный счетчик имеет ширину 23 бита, но младший бит всегда равен 0, поэтому имеется 22 изменяемых бита.

Инструкции бывают двух основных типов, причем наиболее важные операции (добавление, xor, сдвиги и т. Д.) Допускают обе формы.

Первый подобен классическим инструкциям PIC, с операцией между указанным регистром f (то есть первыми 8 КБ ОЗУ) и одним аккумулятором W0, с выбором бита выбора места назначения, который обновляется с результатом. (Регистры W отображены в память, поэтому операндом f может быть любой регистр W.)

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

Линия на базе PIC32M MIPS

PIC32MX

В ноябре 2007 года Microchip представила PIC32MX семейство 32-битных микроконтроллеров на базе MIPS32 M4K Ядро.[13] Устройство можно запрограммировать с помощью Компилятор Microchip MPLAB C для микроконтроллеров PIC32, вариант компилятора GCC. Первые 18 моделей, которые в настоящее время производятся (PIC32MX3xx и PIC32MX4xx), совместимы по выводам и используют те же периферийные устройства, что и семейство (16-разрядных) устройств PIC24FxxGA0xx, что позволяет использовать общие библиотеки, программное обеспечение и аппаратные средства. Сегодня, начиная с 28 контактов в небольших корпусах QFN и заканчивая высокопроизводительными устройствами с Ethernet, CAN и USB OTG, доступен полный спектр 32-разрядных микроконтроллеров среднего уровня.

Архитектура PIC32 привнесла в портфолио Microchip ряд новых функций, в том числе:

  • Максимальная скорость выполнения 80 MIPS (120+[14] Дристон MIPS @ 80 МГц)
  • Самая большая флеш-память: 512 кБ
  • Одна инструкция на выполнение тактового цикла
  • Первый кешированный процессор
  • Разрешает выполнение из ОЗУ
  • Возможности Full Speed ​​Host / Dual Role и OTG USB
  • Полный JTAG и 2-проводное программирование и отладка
  • Трассировка в реальном времени

PIC32MZ

В ноябре 2013 года Microchip представила серию микроконтроллеров PIC32MZ, основанных на MIPS Ядро М14К. Серия PIC32MZ включает:[15][16]

  • Частота ядра 252 МГц, 415 DMIPS
  • До 2 МБ флэш-памяти и 512 КБ ОЗУ
  • Новые периферийные устройства, включая высокоскоростной USB, криптографический движок и SQI

В 2015 году Microchip выпустила семейство PIC32MZ EF, в котором использовался обновленный процессор MIPS M5150 Warrior M-класса.[17][18]

В 2017 году Microchip представила семейство PIC32MZ DA, включающее встроенный графический контроллер, графический процессор и 32 МБ DDR2 DRAM.[19][20]

PIC32MM

В июне 2016 года Microchip представила семейство PIC32MM, специализирующееся на маломощных и недорогих приложениях.[21] PIC32MM имеет независимые от ядра периферийные устройства, спящие режимы до 500 нА и корпуса 4 x 4 мм.[22] Микроконтроллеры PIC32MM используют MIPS Technologies M4K, 32-битный MIPS32 Они рассчитаны на очень низкое энергопотребление и ограничены частотой 25 МГц. Их ключевым преимуществом является поддержка 16-битных инструкций MIPS, что значительно сокращает размер программы (около 40%).

PIC32MK

Microchip представила семейство PIC32MK в 2017 году, специализирующееся на управлении двигателями, промышленном управлении, промышленном Интернете вещей (IIoT) и многоканальных приложениях CAN.[23]

Основная архитектура

Архитектура PIC характеризуется множеством атрибутов:

  • Разделяйте код и пространства данных (Гарвардская архитектура ).
    • За исключением PIC32: отдельные пути данных и команд в архитектуре MIPS M4K эффективно объединяются в единое общее адресное пространство модулем System Bus Matrix.
  • Небольшое количество инструкций фиксированной длины
  • Большинство инструкций являются одноцикловыми (2 тактовых цикла или 4 тактовых цикла в 8-битных моделях) с одним циклом задержки на переходах и пропусках
  • Один аккумулятор (W0), использование которого (в качестве исходного операнда) подразумевается (т.е. не кодируется в код операции )
  • Все ячейки RAM работают как регистры как источник и / или место назначения математических и других функций.[24]
  • Аппаратный стек для хранения адресов возврата
  • Небольшой объем адресуемого пространства данных (32, 128 или 256 байтов, в зависимости от семейства), расширенный за счет банковских
  • ЦП, порт и периферийные регистры с отображением пространства данных
  • Флаги состояния ALU отображаются в пространстве данных
  • Программный счетчик также отображается в пространство данных и доступен для записи (это используется для реализации косвенных переходов).

Нет различия между пространством памяти и пространством регистров, потому что ОЗУ выполняет работу как памяти, так и регистров, а ОЗУ обычно называют просто файлом регистров или просто регистрами.

Пространство данных (RAM)

У PIC есть набор регистров, которые функционируют как RAM общего назначения. Специальные регистры управления аппаратными ресурсами на кристалле также отображаются в пространство данных. Адресуемость памяти зависит от серии устройства, и все устройства PIC имеют некоторые банковский механизм для расширения адресации на дополнительную память. Более поздние серии устройств содержат инструкции перемещения, которые могут покрывать все адресное пространство, независимо от выбранного банка. В более ранних устройствах любое перемещение регистра должно было осуществляться через аккумулятор.

Для реализации косвенной адресации используются «регистр выбора файла» (FSR) и «косвенный регистр» (INDF). Номер регистра записывается в FSR, после чего чтение или запись в INDF фактически будет происходить из или в регистр, на который указывает FSR. Более поздние устройства расширили эту концепцию, добавив пост- и пре-инкремент / декремент для большей эффективности при доступе к последовательно сохраненным данным. Это также позволяет рассматривать FSR почти как указатель стека (SP).

Внешняя память данных не адресуется напрямую, за исключением некоторых устройств PIC18 с большим количеством выводов.

Кодовое пространство

Кодовое пространство обычно реализовано на кристалле. ПЗУ, EPROM или прошить ROM. Как правило, нет возможности хранить код во внешней памяти из-за отсутствия интерфейса внешней памяти. Исключением являются PIC17 и выберите устройства PIC18 с большим количеством выводов.[25]

Размер слова

Все PIC обрабатывают (и адресуют) данные 8-битными порциями. Однако единица адресуемости кодового пространства обычно не такая же, как и для пространства данных. Например, PIC в базовом (PIC12) и среднем (PIC16) семействе имеют программную память, адресуемую в том же размере, что и ширина инструкции, то есть 12 или 14 бит соответственно. Напротив, в серии PIC18 память программ адресуется с 8-битными приращениями (байтами), что отличается от ширины инструкции в 16 бит.

Для большей ясности объем памяти программ обычно указывается в количестве (однословных) инструкций, а не в байтах.

Стеки

У PIC есть оборудование стек вызовов, который используется для сохранения обратных адресов. Аппаратный стек недоступен программно на более ранних устройствах, но это изменилось с устройствами серии 18.

Аппаратная поддержка стека параметров общего назначения отсутствовала в ранних сериях, но она значительно улучшилась в 18-й серии, сделав архитектуру 18-й серии более удобной для компиляторов языков высокого уровня.

Набор инструкций

Инструкции PIC варьируются от примерно 35 инструкций для PIC низкого уровня до более 80 инструкций для PIC высокого уровня. Набор команд включает инструкции для выполнения различных операций непосредственно с регистрами, аккумулятор и буквальная константа или аккумулятор и регистр, а также для условного выполнения и ветвления программы.

Некоторые операции, такие как установка битов и проверка, могут выполняться в любом пронумерованном регистре, но арифметические операции с двумя операндами всегда включают W (аккумулятор), записывая результат обратно либо в W, либо в другой регистр операнда. Чтобы загрузить константу, необходимо загрузить ее в W до того, как ее можно будет переместить в другой регистр. На более старых ядрах все перемещения регистров должны были проходить через W, но это изменилось на ядрах «высокого класса».

Ядра PIC имеют инструкции пропуска, которые используются для условного выполнения и ветвления. Инструкции пропуска: «пропустить, если бит установлен» и «пропустить, если бит не установлен». Поскольку ядра до PIC18 имели только инструкции безусловного перехода, условные переходы реализованы с помощью условного перехода (с противоположным условием), за которым следует безусловный переход. Пропуски также полезны для условного выполнения любой немедленной последующей инструкции. Можно пропустить инструкции пропуска. Например, последовательность инструкций «пропустить, если A; пропустить, если B; C» выполнит C, если A истинно или если B ложно.

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

В общем, инструкции PIC делятся на пять классов:

  1. Операция над рабочим регистром (WREG) с 8-битным непосредственным («буквальным») операндом. Например. movlw (переместить литерал в WREG), andlw (И буквально с WREG). Одна особенная инструкция для PIC: retlw, немедленно загрузить в WREG и вернуть, что используется с вычисляемым ветви производить таблицы поиска.
  2. Работа с WREG и индексированным регистром. Результат можно записать в рабочий регистр (например, addwf рег, w). или выбранный регистр (например, addwf рег, f).
  3. Битовые операции. Они принимают номер регистра и номер бита и выполняют одно из 4 действий: устанавливают или очищают бит, а также тестируют и пропускают установку / сброс. Последние используются для выполнения условных переходов. Обычные флаги состояния ALU доступны в пронумерованном регистре, поэтому возможны такие операции, как «переход при очистке переноса».
  4. Контрольные переводы. Помимо ранее упомянутых инструкций по пропуску, их всего две: перейти к и вызов.
  5. Несколько разных инструкций с нулевым операндом, таких как возврат из подпрограммы и спать для входа в режим пониженного энергопотребления.

Спектакль

Архитектурные решения направлены на максимальное соотношение скорости и стоимости. Архитектура PIC была среди первых скалярных конструкций ЦП.[нужна цитата ] и по-прежнему остается одним из самых простых и дешевых. Гарвардская архитектура, в которой инструкции и данные поступают из разных источников, значительно упрощает синхронизацию и проектирование микросхем, что способствует увеличению тактовой частоты, цены и энергопотребления.

Набор инструкций PIC подходит для реализации таблиц быстрого поиска в программном пространстве. Такой поиск занимает одну инструкцию и два цикла инструкций. Таким образом можно смоделировать многие функции. Оптимизация обеспечивается относительно большим программным пространством PIC (например, 4096 × 14-битных слов на 16F690) и конструкцией набора команд, который допускает встроенные константы. Например, цель инструкции ветвления может быть проиндексирована с помощью W и выполнить команду «RETLW», которая выполняет то, что названо - возврат с литералом в W.

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

Преимущества

  • Небольшой набор инструкций для изучения
  • RISC архитектура
  • Встроенный осциллятор с возможностью выбора скорости
  • Простой начальный уровень, внутрисхемное программирование плюс внутрисхемная отладка Возьми единицы доступны менее чем за 50 долларов
  • Недорогие микроконтроллеры
  • Широкий выбор интерфейсов, включая I²C, SPI, USB, USART, ОБЪЯВЛЕНИЕ, программируемые компараторы, ШИМ, LIN, МОЖЕТ, PSP, и Ethernet[26]
  • Наличие процессоров в DIL упаковка делает их удобными для использования в хобби.

Ограничения

Следующие ограничения стека были рассмотрены в PIC18 серии, но все еще применимы к более ранним ядрам:

С выгружаемой программной памятью нужно беспокоиться о двух размерах страниц: один для CALL и GOTO, а другой для вычисленного GOTO (обычно используется для поиска в таблице). Например, на PIC16, CALL и GOTO имеют 11 бит адресации, поэтому размер страницы составляет 2048 командных слов. Для вычисленных GOTO, которые вы добавляете в PCL, размер страницы составляет 256 командных слов. В обоих случаях старшие биты адреса предоставляются регистром PCLATH. Этот регистр необходимо менять каждый раз при передаче управления между страницами. PCLATH также должен сохраняться любым обработчиком прерывания.[27]

Разработка компилятора

Хотя доступно несколько коммерческих компиляторов, в 2008 году Microchip выпустила собственные компиляторы C, C18 и C30, для линейки процессоров 18F, 24F и 30 / 33F.

С 2013 года Microchip предлагает свою серию компиляторов XC для использования с MPLAB X. Microchip постепенно откажется от своих старых компиляторов, таких как C18, и рекомендует использовать свои компиляторы серии XC для новых разработок.[28]

Набор команд RISC кода на языке ассемблера PIC может затруднить понимание общей последовательности операций. Разумное использование простых макросы может повысить удобочитаемость языка ассемблера PIC. Например, оригинал Параллакс Ассемблер PIC ("SPASM") имеет макросы, которые скрывают W и делают PIC похожим на двухадресную машину. В нем есть макрокоманды вроде mov b, a (переместить данные с адреса а адресовать б) и добавить b, a (добавить данные с адреса а к данным в адрес б). Он также скрывает инструкции пропуска, предоставляя макрокоманды ветвления с тремя операндами, такие как cjne a, b, dest (сравнить а с б и перейти к dest если они не равны).

Особенности оборудования

Устройства PIC обычно имеют:

  • Флэш-память (память программ, запрограммированная с помощью Устройства MPLAB )
  • SRAM (память данных)
  • EEPROM память (программируется во время выполнения)
  • Спящий режим (экономия энергии)
  • Сторожевой таймер
  • Различный кристалл или RC конфигурации осциллятора или внешние часы

Варианты

Внутри серии по-прежнему существует множество вариантов устройств в зависимости от того, какие аппаратные ресурсы использует чип:

Тенденции

Первое поколение PIC с EPROM хранилища практически полностью заменены чипами с Флэш-память. Точно так же исходный 12-битный набор команд PIC1650 и его прямых потомков был заменен 14-битным и 16-битным наборами команд. Microchip по-прежнему продает OTP (одноразово программируемые) и оконные (УФ-стираемые) версии некоторых своих PIC на базе EPROM для устаревшей поддержки или объемных заказов. На веб-сайте Microchip перечислены PIC, которые электрически не стираются, как OTP. Можно заказать версии этих чипов с УФ-стиранием и окном.

Номер части

Буква F в номере детали PICMicro обычно указывает, что PICmicro использует флэш-память и может быть стерта электронным способом. И наоборот, C обычно означает, что его можно стереть, только подвергнув кристалл воздействию ультрафиолетового света (что возможно только при использовании оконного стиля упаковки). Исключением из этого правила является PIC16C84, который использует EEPROM и, следовательно, электрически стирается.

Буква L в названии указывает на то, что деталь будет работать при более низком напряжении, часто с ограничениями по частоте.[29] Детали, разработанные специально для работы с низким напряжением, в пределах строгого диапазона 3–3,6 В, помечены буквой J в номере детали. Эти части также обладают уникальной устойчивостью к вводу-выводу, поскольку они принимают до 5 В.[29]

Инструменты разработки

Microchip обеспечивает бесплатное ПО IDE пакет называется MPLAB X, который включает ассемблер, компоновщик, программное обеспечение симулятор, и отладчик. Они также продают компиляторы C для PIC10, PIC12, PIC16, PIC18, PIC24, PIC32 и dsPIC, которые полностью интегрируются с MPLAB X. Также доступны бесплатные версии компиляторов C со всеми функциями. Но для бесплатных версий оптимизация будет отключена через 60 дней.[30]

Несколько сторонних разработчиков разрабатывают C язык компиляторы для PIC, многие из которых интегрируются в MPLAB и / или имеют собственную IDE. Полнофункциональный компилятор языка PICBASIC для программирования микроконтроллеров PIC доступен от meLabs, Inc. Микроэлектроника предлагает компиляторы PIC на языках программирования C, BASIC и Pascal.

Графический язык программирования, Flowcode, существует возможность программирования 8- и 16-битных устройств PIC и генерации PIC-совместимого кода C. Он существует во многих версиях, от бесплатной демонстрации до более полной профессиональной версии.

В Дизайнерский люкс Proteus может моделировать многие из популярных 8- и 16-битных устройств PIC вместе с другими схемами, подключенными к PIC на схеме. Смоделируемую программу можно разработать в самом Proteus, MPLAB или любом другом средстве разработки.[31]

Программисты устройств

Это программатор 2003 года для семейства микроконтроллеров Microchip "PIC". Он подключается кабелем RS 232 к ПК, совместимому с запущенным программным обеспечением для разработки. В 2003 году это устройство стоило 300 канадских долларов (в то время около 200 долларов США).

Устройства под названием "программисты "традиционно используются для ввода программного кода в целевой PIC. Большинство PIC, которые Microchip в настоящее время продает, имеют ICSP (Программирование последовательной цепи) и / или LVP (программирование низкого напряжения), позволяющие программировать PIC, пока он находится в мишени. цепь.

Microchip предлагает программистов / отладчиков под MPLAB и Возьми серии. MPLAB ICD4 и MPLAB REAL ICE - нынешние программисты и отладчики для профессионального проектирования, а PICKit 3 - это недорогая линейка программаторов / отладчиков для любителей и студентов.

Загрузочная загрузка

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

В качестве альтернативы доступна прошивка загрузчика, которую пользователь может загрузить на PIC с помощью ICSP. После программирования загрузчика на PIC, пользователь может перепрограммировать устройство, используя RS232 или USB, в сочетании со специализированным компьютерным программным обеспечением.

Преимущества загрузчика перед ICSP - более высокая скорость программирования, немедленное выполнение программы после программирования и возможность как отладки, так и программирования с использованием одного и того же кабеля.

Третья сторона

Существует множество программистов для микроконтроллеров PIC, от чрезвычайно простых конструкций, которые полагаются на ICSP для прямой загрузки кода с главного компьютера, до интеллектуальных программистов, которые могут проверить устройство при нескольких напряжениях питания. Многие из этих сложных программистов сами используют предварительно запрограммированный PIC для отправки команд программирования на PIC, который должен быть запрограммирован. Интеллектуальный программист необходим для программирования более ранних моделей PIC (в основном типа EPROM), которые не поддерживают внутрисхемное программирование.

Сторонние программисты варьируются от планов по созданию собственных устройств до комплектов для самостоятельной сборки и полностью протестированных готовых устройств. Некоторые из них представляют собой простые конструкции, требующие, чтобы ПК выполнял сигнализацию программирования низкого уровня (обычно они подключаются к серийный или параллельный порт и состоят из нескольких простых компонентов), в то время как другие имеют встроенную логику программирования (они обычно используют последовательное или USB-соединение, обычно быстрее и часто построены с использованием самих PIC для управления).

Отладка

Внутрисхемная отладка

Все новые устройства PIC имеют интерфейс ICD (внутрисхемной отладки), встроенный в ядро ​​ЦП, что позволяет интерактивную отладку программы в сочетании с MPLAB IDE. MPLAB ICD и MPLAB REAL ICE отладчики могут связываться с этим интерфейсом, используя ICSP интерфейс.

Однако эта система отладки имеет свою цену, а именно ограниченное количество точек останова (1 на старых устройствах, 3 на новых устройствах), потеря некоторых операций ввода-вывода (за исключением некоторых 44-контактных PIC для поверхностного монтажа, которые имеют выделенные линии для отладки). и потеря некоторых встроенных функций.

Некоторые устройства не имеют встроенной поддержки отладки из-за стоимости или отсутствия контактов. Некоторые более крупные микросхемы также не имеют модуля отладки. Для отладки этих устройств требуется специальная версия микросхемы -ICD, установленная на дочерней плате, которая предоставляет выделенные порты. Некоторые из этих отладочных микросхем могут работать как более чем один тип микросхемы за счет использования выбираемых перемычек на дочерней плате. Это позволяет заменить в целом идентичные архитектуры, не содержащие все периферийные устройства на кристалле, на один кристалл -ICD. Например: 12F690-ICD будет работать как одна из шести различных частей, каждая из которых имеет одно, некоторые или все пять периферийных устройств на кристалле.[32]

Внутрисхемные эмуляторы

Microchip предлагает три полных внутрисхемные эмуляторы: the MPLAB ICE2000 (параллельный интерфейс, есть USB-конвертер); новее MPLAB ICE4000 (Подключение USB 2.0); и совсем недавно НАСТОЯЩИЙ ЛЕД (Подключение USB 2.0). Все такие инструменты обычно используются вместе с MPLAB IDE для интерактивной отладки кода, выполняемого на целевом уровне, на уровне исходного кода.

Операционные системы

Проекты PIC могут использовать Операционные системы реального времени такие как FreeRTOS, AVIX RTOS, uRTOS, Salvo RTOS или другие аналогичные библиотеки для планирование задач и расстановка приоритетов.

Открытый исходный код Сергея Вакуленко адаптируется 2.11BSD архитектуре PIC32 под названием RetroBSD. Это позволяет микроконтроллеру использовать знакомую Unix-подобную операционную систему, включая встроенную среду разработки, в пределах ограничений встроенного оборудования.[33]

Клоны

Параллакс

Параллакс выпустила серию микроконтроллеров, подобных PICmicro, известных как Параллакс SX. В настоящее время снят с производства. Разработан так, чтобы быть архитектурно подобным микроконтроллерам PIC, используемым в исходных версиях БАЗОВЫЙ штамп, Микроконтроллеры SX заменили PIC в нескольких последующих версиях этого продукта.

Parallax SX - это 8-битные микроконтроллеры RISC, использующие 12-битное командное слово, которые работают быстро на частоте 75 МГц (75 MIPS). Они включают до 4096 12-битных слов флэш-память и до 262 байтов оперативная память, восьмибитный счетчик и другая вспомогательная логика. Есть программные библиотечные модули для эмуляции I²C и SPI интерфейсы, UART, генераторы частоты, счетчики измерений и ШИМ и сигма-дельта аналого-цифровые преобразователи. Другие интерфейсы относительно легко написать, а существующие модули можно модифицировать для получения новых функций.

РПК Миландр

1886VE2U

русский ПКК Миландр производит микроконтроллеры с использованием PIC17 архитектура как серия 1886 года.[34][35][36][37]Программная память состоит из флэш-памяти объемом до 64 КБ в 1886VE2U (русский: 1886ВЕ2У) или 8 кБ EEPROM в 1886VE5U (1886ВЕ5У). Модель 1886VE5U (1886ВЕ5У) до 1886VE7U (1886ВЕ7У) указаны для военного температурного диапазона от -60 ° C до +125 ° C. Аппаратные интерфейсы в различных частях включают USB, CAN, I2C, SPI, а также аналого-цифровые и цифро-аналоговые преобразователи. Модель 1886VE3U (1886ВЕ3У) содержит аппаратный ускоритель для криптографических функций согласно ГОСТ 28147-89. Есть даже радиационно стойкий фишки с обозначения 1886VE8U (1886ВЕ8У) и 1886ВЭ10У (1886ВЕ10У).[38]

ELAN Microelectronics

Корпорация ELAN Microelectronics на Тайване производит линейку микроконтроллеров на основе архитектуры PIC16 с 13-битными инструкциями и меньшим (6-битным) адресным пространством RAM.[39]

Holtek Semiconductor

Holtek Semiconductor сделать большое количество очень дешевых микроконтроллеров[40] (всего 8,5 центы в количестве[41]) с 14-битным набором команд, поразительно похожим на PIC16.

Другие производители в Азии

Многие ультра-недорогие OTP микроконтроллеры азиатских производителей, используемые в недорогой бытовой электронике, основаны на архитектуре PIC или в модифицированной форме. Большинство клонов нацелены только на базовые части (PIC16C5x / PIC12C50x). Microchip пыталась подать в суд на некоторых производителей, когда копирование было особенно вопиющим.[42][43]безуспешно.[44][45][нужен лучший источник ]

Смотрите также

Рекомендации

  1. ^ http://ww1.microchip.com/downloads/en/DeviceDoc/39630C.pdf
  2. ^ http://www.datasheetarchive.com/dl/Databooks-1/Book241-407.pdf
  3. ^ "Семейное древо PICmicro", презентация семинара PIC16F «Архивная копия» (PDF). Архивировано из оригинал (PDF) на 2012-03-02. Получено 2011-08-02.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
  4. ^ а б "MOS DATA 1976", General Instrument 1976 Databook
  5. ^ а б "Каталог данных 1977 года", Micro Electronics от General Instrument Corporation «Архивная копия» (PDF). Архивировано из оригинал (PDF) на 2011-08-15. Получено 2011-08-02.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
  6. ^ Справочник по интегральным схемам спутникового и кабельного телевидения Plessey, май 1986 г.
  7. ^ "Зал славы микросхем: микроконтроллер Microchip Technology PIC 16C84". IEEE. Получено 16 сентября, 2018.
  8. ^ Лоусон, Эрик (16 мая 2013 г.). «Компания Microchip Technology поставляет 12-миллиардный микроконтроллер PIC® ведущему производителю двигателей, Nidec Corporation». Пресс-релиз Microchip. Архивировано из оригинал 21 июля 2013 г.. Получено 21 декабря, 2017. Microchip поставила этот 12-миллиардный микроконтроллер примерно через 10 месяцев после поставки 11-миллиардного микроконтроллера.
  9. ^ «Паспорт микроконтроллера PIC17C4x» (PDF). Технология микрочипов. 1996. DS30412C.. Получено 2016-08-16.
  10. ^ "Microchip PIC Micros and C - исходный код и образец кода". www.microchipc.com. Получено 7 апреля 2018.
  11. ^ [1]
  12. ^ «Обзор семейства PIC24H» (PDF). Получено 23 сентября 2007.
  13. ^ «Архивная копия». Архивировано из оригинал на 2009-02-02. Получено 2009-01-21.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
  14. ^ "32-битные микроконтроллеры PIC". Получено 13 октября 2010.
  15. ^ «32-битные микроконтроллеры - Microchip Technology». www.microchip.com. Получено 7 апреля 2018.
  16. ^ «Ошибка 404 - страница не найдена - Microchip Technology Inc». www.microchip.com. Получено 7 апреля 2018. Cite использует общий заголовок (Помогите)
  17. ^ "Добро пожаловать в блог воображения". imgtec.com. Получено 7 апреля 2018.
  18. ^ http://www.microchip.com/design-centers/32-bit/architecture/pic32mz-family
  19. ^ «Ошибка 404 - страница не найдена - Microchip Technology Inc». www.microchip.com. Получено 7 апреля 2018. Cite использует общий заголовок (Помогите)
  20. ^ «Ошибка 404 - страница не найдена - Microchip Technology Inc». www.microchip.com. Получено 7 апреля 2018. Cite использует общий заголовок (Помогите)
  21. ^ «Microchip представляет семейство PIC32 с самым низким энергопотреблением и экономичностью - технология Microchip». www.microchip.com. Получено 7 апреля 2018.
  22. ^ http://www.microchip.com/promo/pic32mm
  23. ^ «Ошибка 404 - страница не найдена - Microchip Technology Inc». www.microchip.com. Получено 7 апреля 2018. Cite использует общий заголовок (Помогите)
  24. ^ http://ww1.microchip.com/downloads/en/DeviceDoc/35007b.pdf
  25. ^ Ровнак, Тим (2003). "AN869: Методы взаимодействия с внешней памятью для PIC18F8XXX" (PDF). Технология микрочипов. DS00869B. Получено 24 августа 2009.
  26. ^ «Ошибка 404 - страница не найдена - Microchip Technology Inc». www.microchip.com. Получено 7 апреля 2018. Cite использует общий заголовок (Помогите)
  27. ^ "Замедление 208.80.153.50,10-192-48-43 & c = 1 & t = 43197.5553483796". massmind.org. Получено 7 апреля 2018.
  28. ^ «MPLAB® XC: решения для компиляторов». microchip.com. Получено 7 апреля 2018.
  29. ^ а б «Дизайн-центр 3В». Получено 2 августа 2011.
  30. ^ "Компилятор MPLAB XC8 для микроконтроллеров PIC10 / 12/16/18".
  31. ^ "Как имитировать микроконтроллер PIC в Proteus Design Suite 8 - Галерея схем". 2013-08-02. Получено 2016-07-12.
  32. ^ Документ микрочипа № DS51292R
  33. ^ "начало - RetroBSD". retrobsd.org. Получено 7 апреля 2018.
  34. ^ "Миландр К1886ВЕ: ПИК, который был в России". CPU Shack. 10 марта 2016 г.. Получено 21 июля 2016.
  35. ^ "Высокопроизводительные 8-ми разрядные КМОП микроконтроллеры 1886ВЕ1 и 1886ВЕ2. Перечень отличный от ближайшего функционального аналога PIC17C756A" [Высокопроизводительные 8-битные микроконтроллеры CMOS 1886VE1 и 1886VE2. Список отличий от ближайшего функционального аналога PIC17C756A.] (PDF) (на русском). Москва: РПК Миландр. 7 сентября 2006 г. Архивировано с оригинал (PDF) 5 февраля 2017 г.. Получено 23 октября 2017.
  36. ^ "Каталог продукции группы компаний" Миландр "2017" [Каталог продукции Milandr Group 2017] (PDF) (на русском). Москва: РПК Миландр. Архивировано из оригинал (PDF) 27 октября 2017 г.. Получено 18 апреля 2018.
  37. ^ "1886ая серия" [1886 серия] (на русском языке). Получено 21 июля 2016.
  38. ^ «Часть II: Как« открыть »микрочип и что внутри? Z80, Multiclet, MSP430, PIC и другие». ZeptoBars. 21 февраля 2013 г.. Получено 11 апреля 2017.
  39. ^ http://www.emc.com.tw/eng/products.asp
  40. ^ Карлсон, Джей (15 сентября 2017 г.). «Холтек HT-66». Удивительный микроконтроллер за 1 доллар. Получено 8 июля 2019.
  41. ^ Офранк, Жан-Люк (3 августа 2016 г.). «Какой самый дешевый микроконтроллер? Моя попытка: 8-битный микроконтроллер Holtek HT48R002 продается за 0,085 доллара». Блог CNX Software. Получено 8 июля 2019.
  42. ^ "Microchip Technology подает иск о нарушении авторских прав против MICON Design Technology CO. LTD" (PDF) (Пресс-релиз). 29 января 1999 г.. Получено 23 октября 2017.
  43. ^ «Microchip Technology подала в суд на Shanghai Haier Integrated Circuit» (PDF) (Пресс-релиз). 5 июля 2007 г.. Получено 23 октября 2017.
  44. ^ Фуллер, Брайан (1 мая 2013 г.). «Борьба с китайской подделкой? Забудьте об этом». Новости бизнеса электроники.
  45. ^ «Интегрированный чип Haier для победы в патентной битве против микрочипов из США». sb2a0 электронные компоненты (блог). 18 мая 2015. Получено 8 июля 2019.

дальнейшее чтение

  • Теория и приложения микроконтроллеров с PIC18F; 2-е изд; М. Рафикзаман; Вайли; 544 страницы; 2018; ISBN  978-1119448419.
  • Разработка микроконтроллерной системы с использованием процессоров PIC18F; Николас К. Хаддад; IGI Global; 428 страниц; 2017; ISBN  978-1683180005.
  • Проекты микроконтроллеров PIC на C: от базового до продвинутого (для PIC18F); 2-е изд; Доган Ибрагим; Newnes; 660 страниц; 2014; ISBN  978-0080999241. (1-е изд)
  • Программирование микроконтроллера: Microchip PIC; Санчес и Кантон; CRC Press; 824 страницы; 2006; ISBN  978-0849371899. (1-е изд)
  • Книга проекта микроконтроллера PIC; Джон Айовин; TAB; 272 страницы; 2000; ISBN  978-0071354790. (1-е изд)

внешняя ссылка