stringtranslate.com

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

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

PIC (обычно произносится как /pɪk/) — семейство микроконтроллеров , производимых Microchip Technology , произошедшее от PIC1640 [1] [2], первоначально разработанного подразделением микроэлектроники General Instrument . Название PIC изначально относилось к контроллеру периферийного интерфейса [3] , а в настоящее время расширено до программируемого интеллектуального компьютера [4] . Первые части семейства были доступны в 1976 году; к 2013 году компания поставила более двенадцати миллиардов отдельных деталей, используемых в самых разных встраиваемых системах [5] .

Первоначально PIC был разработан как периферийное устройство для General Instrument CP1600 , первого коммерчески доступного однокристального 16-битного микропроцессора . Чтобы ограничить количество требуемых выводов, CP1600 имел сложную высокомультиплексную шину , с которой было трудно взаимодействовать, поэтому в дополнение к различным специализированным периферийным устройствам General Instrument создала программируемый PIC1640 как универсальное периферийное устройство. С его собственным небольшим ОЗУ , ПЗУ и простым ЦП для управления передачами он мог подключать шину CP1600 практически к любому существующему 8-битному периферийному устройству. Хотя это обеспечивало значительную мощность, маркетинг GI был ограничен, и CP1600 не имел успеха. Однако GI также создала PIC1650, автономный PIC1640 с дополнительным вводом-выводом общего назначения вместо интерфейса CP1600. Когда в 1985 году компания выделила свое подразделение по производству микросхем в Microchip, продажи CP1600 практически прекратились, но PIC1650 и его преемники сформировали свой собственный крупный рынок и стали одним из основных продуктов новой компании. [6]

Ранние модели имели только масочное ПЗУ для хранения кода, но с его ответвлением он вскоре был модернизирован для использования EPROM , а затем EEPROM , что позволило конечным пользователям программировать устройства на своих собственных объектах. Все текущие модели используют флэш-память для хранения программ, а более новые модели позволяют PIC перепрограммировать себя. С тех пор линейка претерпела значительные изменения; теперь доступна память шириной 8 бит, 16 бит и, в последних моделях, 32 бита. Программные инструкции различаются по количеству бит в зависимости от семейства PIC и могут быть длиной 12, 14, 16 или 24 бита. Набор инструкций также различается в зависимости от модели, более мощные чипы добавляют инструкции для функций цифровой обработки сигнала . Аппаратные реализации устройств PIC варьируются от 6-контактных SMD , 8-контактных DIP- чипов до 144-контактных SMD-чипов с дискретными контактами ввода-вывода, модулями АЦП и ЦАП и портами связи, такими как UART , I2C , CAN и даже USB . Для многих типов существуют маломощные и высокоскоростные варианты.

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

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

История

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

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

Оригинальный PIC предназначался для использования с новым 16-разрядным центральным процессором (ЦП) CP1600 компании General Instrument . Чтобы вместить 16-разрядные шины данных и адреса в стандартный на тот момент 40-контактный двухрядный корпус (DIP), обе шины использовали один и тот же набор из 16 соединительных контактов. Для связи с ЦП устройства должны были следить за другими контактами на ЦП, чтобы определить, является ли информация на шине адресом или данными. Поскольку одновременно был представлен только один из них, устройства должны были следить за шиной, чтобы перейти в режим адреса, проверять, является ли этот адрес частью его диапазона ввода/вывода, отображенного в памяти , «защелкивать» этот адрес, а затем ждать включения режима данных и затем считывать значение. Кроме того, 1600 использовал несколько внешних контактов для выбора устройства, с которым он пытался связаться, что еще больше усложняло интерфейс.

Поскольку интерфейсные устройства для 1600 могли быть сложными, GI также выпустила серию 164x вспомогательных микросхем со всеми необходимыми встроенными схемами. Они включали драйверы клавиатуры, интерфейсы кассетных дек для хранения и множество подобных систем. Для более сложных систем GI представила 1640 «Программируемый контроллер интерфейса» в 1975 году. Идея заключалась в том, что устройство будет использовать PIC для обработки всего интерфейса с CP1600 хост-компьютера, но также использовать свой собственный внутренний процессор для обработки фактического устройства, к которому оно было подключено. Например, дисковод для гибких дисков мог быть реализован с PIC, взаимодействующим с ЦП с одной стороны, и контроллером гибких дисков с другой. В соответствии с этой идеей, то, что сегодня известно как микроконтроллер , PIC включало небольшой объем постоянной памяти (ПЗУ), которая могла быть записана с кодом контроллера устройства пользователя, и отдельную оперативную память (ОЗУ) для буферизации и работы с данными. Они были подключены по отдельности, что сделало PIC системой с гарвардской архитектурой , в которой код и данные управлялись по отдельным внутренним путям.

Теоретически, сочетание 1600 CPU и 1640 контроллеров устройств PIC обеспечивало очень высокопроизводительную систему управления устройствами, которая была похожа по мощности и производительности на контроллеры каналов, которые можно увидеть на мэйнфреймах . Например, в примере контроллера гибких дисков один PIC мог управлять приводом, обеспечивать разумный объем буферизации для повышения производительности, а затем передавать данные на хост-компьютер и с него с помощью прямого доступа к памяти (DMA) или с помощью относительно простого кода в CPU. Недостатком этого подхода была стоимость; в то время как PIC не был необходим для низкоскоростных устройств, таких как клавиатура, для многих задач потребовался бы один или несколько PIC для построения полной системы.

Хотя концепция дизайна имела ряд привлекательных особенностей, General Instrument никогда не продвигала 1600 активно, предпочитая иметь дело только с крупными клиентами и игнорируя рынок нижнего ценового диапазона. Это привело к очень небольшому внедрению системы, при этом Intellivision была единственным действительно широко распространенным использованием с примерно тремя миллионами единиц. Однако GI представила автономную модель 1650 PIC [7] в 1976 году, разработанную для использования без CP1600. Хотя она не была такой мощной, как Intel MCS-48, представленная в том же году, она была дешевле и нашла рынок. [6] Последующие версии включали PIC1670 с инструкциями, расширенными с 12 до 13 бит, чтобы обеспечить вдвое большее адресное пространство (64 байта ОЗУ и 1024 слова ПЗУ). [8] Когда GI отделила свое подразделение чипов, чтобы сформировать Microchip Technology в 1985 году, производство CP1600 прекратилось. Однако к этому времени PIC 1650 уже завоевал широкую аудиторию клиентов, использующих его для самых разных целей, и PIC стал одним из основных продуктов новой компании. [6]

После 1600 г.

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

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

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

PIC и PICmicro теперь являются зарегистрированными торговыми марками Microchip Technology. Обычно считается, что PIC означает Peripheral Interface Controller (контроллер периферийного интерфейса) , хотя изначальное сокращение General Instruments для первых устройств PIC1640 и PIC1650 было « Programmable Interface Controller» (программируемый контроллер интерфейса ). [3] Аббревиатуру быстро заменили на « Programmable Intelligent Computer» (программируемый интеллектуальный компьютер ). [4]

Microchip 16C84 ( PIC16x84 ), представленный в 1993 году, был первым [11] процессором Microchip с встроенной памятью EEPROM.

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

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

Микросхемы 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» с кварцевыми окнами (для стирания УФ-излучением) в целом больше не доступны.

ПИК10 и ПИК12

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

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

Из-за очень ограниченного пространства регистров (5 бит) 4 редко считываемым регистрам не были назначены адреса, а были записаны специальными инструкциями ( OPTIONи TRIS).

Адресное пространство ПЗУ равно 512 и может указывать адреса только в первой половине каждой страницы из 512 слов. То есть инструкция CALL указывает нижние 9 бит адреса, но только нижние 8 бит этого адреса являются параметром инструкции, в то время как 9-й бит (бит 8) неявно указывается как 0 самой инструкцией CALL.

Таблицы поиска реализованы с использованием вычислений GOTO(назначение регистру PCL) в таблицу RETLWинструкций. RETLW выполняет возврат подпрограммы и одновременно загружает регистр W 8-битной непосредственной константой, которая является частью инструкции.

Это "базовое ядро" не поддерживает прерывания ; все вводы/выводы должны быть опрошены . Существуют некоторые варианты "расширенной базовой линии" с поддержкой прерываний и четырехуровневым стеком вызовов.

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

ПИК16

Микросхема PIC16C58A
PIC16LF870 в разъеме SOIC

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

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

Регистр PCLATH предоставляет старшие биты адреса инструкции, когда 8 бит, предоставленных при записи в регистр PCL, или 11 бит, предоставленных инструкцией GOTOили CALL, недостаточно для адресации доступного пространства ПЗУ.

ПИК17

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

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

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

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

ПИК18

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

Серия PIC18 унаследовала большинство функций и инструкций серии PIC17, а также добавила ряд важных новых функций:

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

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

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

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

Устройства PIC18 все еще находятся в стадии разработки (2021) и оснащены CIP (Core Independent Peripherals)

PIC24 и dsPIC

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

Хотя архитектура PIC по-прежнему похожа на более ранние, имеются существенные усовершенствования: [15]

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

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

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

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

Линейка на базе PIC32M MIPS

Изделия PIC32M компании Microchip используют торговую марку PIC, но имеют совершенно другую архитектуру и описаны здесь лишь кратко.

PIC32MX

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

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

PIC32MZ

В ноябре 2013 года Microchip представила серию микроконтроллеров PIC32MZ, основанную на ядре MIPS M14K. Серия PIC32MZ включает: [18] [19]

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

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

PIC32MM

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

PIC32MK

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

Линия на базе PIC32C Arm

Продукты PIC32C от Microchip также используют торговую марку PIC, но также имеют совершенно другую архитектуру. Продукты PIC32C используют архитектуру процессора Arm, включая различные линейки с ядрами Cortex-M0+, M4, M7, M23 и M33. Они предлагаются в дополнение к серии микроконтроллеров SAM на базе Arm, которые Microchip унаследовала от приобретения Atmel. [27]

ПИК64

Продукты PIC64 компании Microchip используют торговую марку PIC, но имеют совершенно другую архитектуру и описаны здесь лишь кратко.

В июле 2024 года Microchip представила серию высокопроизводительных многоядерных микропроцессоров PIC64 . Первоначально серия будет использовать набор инструкций RISC-V , однако Microchip также планирует версии с ядрами ARM Cortex-A . [28] Серия PIC64 будет включать линейку PIC64GX, которая ориентирована на интеллектуальные периферийные приложения, и линейку PIC64-HPSC, которая устойчива к радиации и ориентирована на приложения для космических полетов. [29] [30]

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

Архитектура PIC (исключая не связанные PIC32 и PIC64) представляет собой однооперандную машину-аккумулятор, как PDP-8 или бортовой компьютер Apollo . Ее характеристики:

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

Пространство данных (ОЗУ)

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

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

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

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

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

Размер слова

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

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

Стеки

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

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

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

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

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

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

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

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

Производительность

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

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

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

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

Ограничения

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

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

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

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

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

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

Аппаратные возможности

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

Варианты

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

Тенденции

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

Номер детали

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

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

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

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

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

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

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

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

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

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

Microchip предлагает программаторы/отладчики серий MPLAB и PICKit . 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. Например: 16F690-ICD будет функционировать как одна из шести различных частей, каждая из которых не содержит ни одного, некоторые или все из пяти встроенных периферийных устройств. [38]

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

Microchip предлагает три полных внутрисхемных эмулятора : MPLAB ICE2000 (параллельный интерфейс, доступен USB-конвертер); более новый MPLAB ICE4000 (подключение USB 2.0); и совсем недавно REAL ICE (подключение USB 2.0). Все такие инструменты обычно используются в сочетании с MPLAB IDE для интерактивной отладки на уровне исходного кода, работающего на целевой платформе.

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

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

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

Клоны

Параллакс

Parallax выпустила серию микроконтроллеров типа PICmicro, известных как Parallax SX . В настоящее время они сняты с производства. Разработанные так, чтобы быть архитектурно похожими на микроконтроллеры PIC, используемые в исходных версиях BASIC Stamp , микроконтроллеры SX заменили PIC в нескольких последующих версиях этого продукта.

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

РПК Миландр

1886VE2U

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

ЭЛАН Микроэлектроника

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

Холтек Полупроводник

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

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

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

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

Ссылки

  1. ^ PIC1650A 8-битный микрокомпьютер (PDF) (Техническое описание). General Instrument Corp. Архивировано из оригинала (PDF) 2012-03-23 . Получено 2011-06-29 .
  2. ^ "Презентация семинара PIC16F: История семейства продуктов Baseline" (PDF) . стр. 4. Архивировано из оригинала (PDF) 2012-03-02 . Получено 2011-08-02 .
  3. ^ ab "MOS DATA 1976", General Instrument 1976 Databook
  4. ^ ab "Каталог данных 1977 года: Микроэлектроника" (PDF) . General Instrument Corporation. Архивировано из оригинала (PDF) 2011-08-15 . Получено 2011-08-02 .
  5. ^ ab Lawson, Eric (16 мая 2013 г.). «Microchip Technology поставляет 12-миллиардный микроконтроллер PIC® ведущему производителю двигателей, Nidec Corporation». Пресс-релиз Microchip. Архивировано из оригинала 21 июля 2013 г. . Получено 21 декабря 2017 г. . Microchip поставила этот 12-миллиардный микроконтроллер примерно через 10 месяцев после поставки своего 11-миллиардного.
  6. ^ abc Лейбсон, Стивен (2 января 2023 г.). "История ранних микроконтроллеров, часть 9: Общие приборы PIC1650". Electronic Engineering Journal . Получено 18 августа 2024 г.
  7. ^ Gruppuso, Frank M. (1982). "Глава 35 PIC1650: Архитектура и работа чипа" (PDF) . В Siewiorek, Daniel P.; Bell, C. Gordon ; Newell, Allen (ред.). Компьютерные структуры: принципы и примеры (PDF) . McGraw-Hill. ISBN 0-07-057302-6. Получено 2024-08-18 .
  8. ^ General Instrument. PIC1670 8-битный микрокомпьютер (PDF) (Технический паспорт) . Получено 2024-08-18 .
  9. ^ Справочник по интегральным схемам кабельного телевидения Plessey, май 1986 г.
  10. ^ Данн, Д. (31 августа 2001 г.). «Microchip предлагает флэш-память по ценам OTP». EETimes .
  11. ^ "Chip Hall of Fame: Microchip Technology PIC 16C84 Microcontroller". IEEE Spectrum . 30 июня 2017 г. Получено 16 сентября 2018 г.
  12. ^ "PIC17C4x microcontroller data sheet" (PDF) . Microchip Technology. 1996. DS30412C . Получено 2016-08-16 .
  13. ^ "Microchip PIC micros и C - исходный код и пример кода". www.microchipc.com . Получено 7 апреля 2018 г. .
  14. ^ "MICROCHIP TECHNOLOGY ПРЕДСТАВЛЯЕТ САМЫЕ ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ В МИРЕ 16-БИТНЫЕ МИКРОКОНТРОЛЛЕРЫ". Microchip. 2001-10-01. Архивировано из оригинала 2004-06-11 . Получено 2022-12-14 .
  15. ^ "Обзор семейства PIC24H" (PDF) . Получено 23 сентября 2007 г.
  16. ^ "MIPS32® M4K® Core - MIPS Technologies -MIPS Everywhere - MIPS Technologies". Архивировано из оригинала 2009-02-02 . Получено 2009-01-21 .
  17. ^ "32-битные PIC MCUs" . Получено 13 октября 2010 г.
  18. ^ "32-битные микроконтроллеры - Microchip Technology". www.microchip.com . Получено 7 апреля 2018 г. .
  19. ^ "32-битные микроконтроллеры PIC32MZ компании Microchip обладают ведущей в своем классе производительностью 330 DMIPS и 3,28 CoreMarks™/МГц; на 30% лучше плотность кода". Microchip. 2013-11-18. Архивировано из оригинала 2013-11-21 . Получено 2022-12-14 .
  20. ^ «Добро пожаловать в блог Imagination». imgtec.com . Получено 7 апреля 2018 г. .
  21. ^ "PIC32MZ EF | Технология микрочипов".
  22. ^ "Microchip представляет первый в отрасли микроконтроллер с интегрированным 2D GPU и интегрированной памятью DDR2 для революционных графических возможностей". Архивировано из оригинала 2017-07-20 . Получено 09.08.2023 .
  23. ^ "PIC32MZ DA Family". Microchip. Архивировано из оригинала 2018-04-02 . Получено 2022-12-14 .
  24. ^ "Microchip запускает семейство микросхем PIC32 с самым низким энергопотреблением и экономичностью - Microchip Technology". www.microchip.com . Получено 7 апреля 2018 г.
  25. ^ "PIC32MM Family of eXtreme Low Power (XLP), Low Cost, 32-bit Microcontrollers" . Получено 2023-08-09 .
  26. ^ "PIC32MK Family". Microchip. Архивировано из оригинала 2018-03-16 . Получено 2022-12-14 .
  27. ^ "32-битные микроконтроллеры PIC® и SAM". Microchip . Получено 2024-08-22 .
  28. ^ anisha (12 июля 2024 г.). "Microchip запускает 64-битное семейство PIC64 с RISC-V" (пресс-релиз). RISC-V International . Получено 24.07.2024 .
  29. ^ Льюис, Джеймс (9 июля 2024 г.). «Microchip представляет 64-битный многоядерный PIC64 Portfolio» (пресс-релиз). Microchip . Получено 24 июля 2024 г. – через Hackster.io.
  30. ^ "Moog представляет новый радиационно-устойчивый космический компьютер для поддержки следующего поколения высокоскоростных вычислений на орбите" (пресс-релиз). Moog Inc. 13 августа 2024 г. – через SpaceNews .
  31. ^ Ровнак, Тим (2003). "AN869: Внешние методы сопряжения памяти для PIC18F8XXX" (PDF) . Microchip Technology. DS00869B . Получено 24 августа 2009 .
  32. ^ "Microchip Advanced Part Selector". Microchip. Архивировано из оригинала 2016-01-10 . Получено 2022-12-14 .
  33. ^ "Замедление 208.80.153.50,10-192-48-43&c=1&t=43197.5553483796". massmind.org . Получено 7 апреля 2018 г. .
  34. ^ "MPLAB® XC: Compiler Solutions". microchip.com . Получено 7 апреля 2018 г. .
  35. ^ ab "3V Design Center" . Получено 2 августа 2011 г.
  36. ^ «Компилятор MPLAB XC8 для микроконтроллеров PIC10/12/16/18».
  37. ^ "Как симулировать микроконтроллер PIC в Proteus Design Suite 8 - Галерея схем". 2013-08-02 . Получено 2016-07-12 .
  38. ^ Документ микрочипа № DS51292R
  39. ^ "start - RetroBSD". retrobsd.org . Получено 7 апреля 2018 г. .
  40. ^ "Milandr K1886VE: PIC, который отправился в Россию". The CPU Shack. 10 марта 2016 г. Получено 21 июля 2016 г.
  41. ^ "Высокопроизводительные 8-ми разрядные КМОП микроконтроллеры 1886ВЕ1 и 1886ВЕ2. Отличия от ближайшего функционального аналога PIC17C756A" [Высокопроизводительные 8-битные КМОП-микроконтроллеры 1886ВЕ1 и 1886ВЕ2. Список отличий от ближайшего функционального аналога PIC17C756A.] (PDF) (на русском языке). Москва: РПК Миландр. 7 сентября 2006 г. Архивировано из оригинала (PDF) 5 февраля 2017 г. . Проверено 23 октября 2017 г.
  42. ^ «Каталог продукции группы компаний «Миландр» 2017» [Каталог продукции Группы компаний «Миландр» 2017] (PDF) (на русском языке). Москва: РПК Миландр. Архивировано из оригинала (PDF) 27 октября 2017 года . Проверено 18 апреля 2018 г.
  43. ^ "1886ая серия" [1886 series] (на русском языке) . Получено 21 июля 2016 г.
  44. ^ "Часть II: Как "открыть" микросхему и что внутри? Z80, Multiclet, MSP430, PIC и многое другое". ZeptoBars. 21 февраля 2013 г. Получено 11 апреля 2017 г.
  45. ^ "義隆電子股份有限公司義隆電子,再創未來!" .
  46. ^ Карлсон, Джей (15 сентября 2017 г.). "Holtek HT-66". Удивительный микроконтроллер за 1 доллар . Получено 8 июля 2019 г.
  47. ^ Офранк, Жан-Люк (3 августа 2016 г.). «Какой самый дешевый MCU? Моя попытка: 8-битный MCU Holtek HT48R002 продается за $0,085». Блог CNX Software . Получено 8 июля 2019 г.
  48. ^ "Microchip Technology подает иск о нарушении авторских прав против MICON Design Technology CO. LTD" (PDF) (пресс-релиз). 29 января 1999 г. Получено 23 октября 2017 г.
  49. ^ "Microchip Technology подает в суд на Shanghai Haier Integrated Circuit" (PDF) (пресс-релиз). 5 июля 2007 г. Получено 23 октября 2017 г.
  50. ^ Фуллер, Брайан (1 мая 2013 г.). «Борьба с китайской контрафакцией? Забудьте об этом». Electronics Business News .
  51. ^ "Haier Integrated chip to win the patent battle against US microchip". sb2a0 electronic components (блог). 18 мая 2015 г. Получено 8 июля 2019 г.

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

Внешние ссылки