Что такое PSoC? (первое знакомство)

chip.jpg (47 кб)

struct.gif (7,5 кб)

Идея

Аббревиатура «PSoC» расшифровывается как «Programmable-System-on-Chip» – «Программируемая Система на Кристалле». Под этой торговой маркой фирма Cypress Semiconductor Corporation выпустила особый класс микросхем, содержащих на кристалле (см. рисунок), помимо процессорного ядра, матрицу из аналоговых и цифровых блоков.

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

Во-вторых – более рационально используются внутренние ресурсы. Если в обычных микроконтроллерах неиспользуемые функциональные модули (ШИМ генераторы, таймеры, АЦП, UART, SPI и т.д.) являются просто балластом, то блоки PSoC (из которых строятся модули) могут быть «перепрофилированы» для решения дополнительных задач.

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

Начало изучения технической документации повергает новичка в глубокий ужас – на голову обрушивается огромный поток описания структуры блоков, их регистров и тонкостей конфигурирования. Но этот этап до поры, до времени, лучше пропустить – фирма предлагает готовые решения, выполненные на основе блоков. Это так называемые «Модули Пользователя» («User Modules») – счетчики, усилители, фильтры, АЦП и проч. узлы, впечатляющий перечень которых можно посмотреть здесь. А среда разработки «PSoC Designer» позволяет не только выбирать модули из библиотеки, но и наглядно осуществлять их размещение на кристалле, а также выполнять межсоединения.

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

На рисунке показан только один представитель семейства PSoC – микросхема серии CY8C27xxx (где сочетание «xxx» кодирует количество портов ввода-вывода, а окончание вида –24xxx определяет тактовую частоту 24 МГц и тип корпуса). На самом деле серий несколько, и различаются они своими возможностями – объемом памяти, количеством аналоговых и цифровых блоков, наличием интерфейса USB, возможностью прямого подключения емкостных датчиков и т.д. – для того, чтобы пользователь мог выбрать подходящий для его конфигурации вариант.

Характеристики CY8C27xxx и CY8C29xxx

■ Процессор:
– ядро M8C (гарвардская архитектура) с максимальной тактовой частотой 24 МГц
– аппаратный умножитель 8x8 с 32-битным суммирующим регистром (у CY8C29xxx таких умножителя два)
– напряжение питания от +3,0 до +5,25 В
– возможность питания от +1,0 В при использовании встроенного преобразователя ("Switch Mode Pump")
– диапазон температур от -40C до + 85C (индустриальный )
■ PSoC-блоки:
– 12 аналоговых блоков (с рабочими напряжениями сигналов от 0 до + питания)
– 8 цифровых блоков ( у  CY8C29xxx — 16)
Модули Пользователя составляются из одного из нескольких блоков
■ Тактирование:
– часовой кварц 32 768 Гц с умножением частоты до 24 МГц (петля ФАПЧ)
– внутренний генератор 24 МГц (погрешность +/- 2,5%)
– внешнее тактирование частотой до 24 МГц
– независимый внутренний генератор для сторожевого таймера и таймера "спящего" режима
– внутренний удвоитель на 48 МГц
– три источника частот с программируемыми делителями
■ Память на борту:
– 16 кб FLASH (32 кб у CY8C29xxx, 50 000 циклов перезаписи)
– 256 байт SRAM (2 кб у CY8C29xxx)
– программирование FLASH по последовательному каналу (ISSP)
– возможность частичного обновления блоками по 64 байт
– несколько уровней защиты памяти
– эмуляция EEPROM во FLASH
■ Программируемые входы-выходы:
– до 12 аналоговых входов, 4 аналоговых выхода (нагрузка до 40 мА)
– нагрузка до 25 мА на выходах, сконфигурированных как цифровые
– индивидуальные режимы для выходов: быстрый/медленный выход, "открытый исток/сток", подключение подтягивающих резисторов сверху/снизу, Z-состояние
– различные условия возникновения прерываний
■ Дополнительная периферия:
– приемопередатчик I2C (Master /Slave, Multi-Master до 400 кГц)
– сторожевой таймер и таймер выхода из "спящего" режима
– обнаружитель снижения напряжения питания и встроенная схема супервизора
– источник опорных напряжений
– дециматор

Процессорное ядро M8C имеет довольно удобную систему команд (см. таблицу). Самая короткая команда (длиной в 1 байт) выполняется за 4 такта (при максимальной тактовой частоте ядра 24 МГц это составит 6 млн. операций в секунду). Ядро хотя и имеет столь нелюбимую мною «аккумуляторную» структуру, есть много команд в обход аккумулятора, делающих программирование на машинном языке довольно приятным.

Естественно, память программ выполнена по FLASH технологии, микросхема допускает внутрисхемное программирование (по двум линиям, к которым обычно подключается кварцевый резонатор, плюс линия сброса). Вся память программ разбита на блоки по 64 байта, с групповым стиранием внутри каждого блока. Есть команды чтения и записи в эту область из самой программы, что делает ненужным существование отдельной энергонезависимой памяти данных (EEPROM).

Для подключения к низковольтным источникам питания (например, к аккумулятору 1,2 В) на кристалле предусмотрен узел преобразователя напряжения, требующий подключения только двух внешних компонентов – индуктивности и выпрямительного диода.

Генератор тактовой частоты может быть как внутренним (точность 2,5%), так и внешним. К двум ногам может цепляться часовой кварц (32768 кГц), который с помощью системы ФАПЧ стабилизирует внутренние тактовые частоты. Внутренних источников тактовых частот несколько – они используются для тактирования процессорного ядра и цифровых/аналоговых блоков. Максимальная тактовая частота цифровых блоков может достигать 48 МГц, но на ножки микросхемы можно подавать импульсы частотой только до 12 МГц.

Выводы выдерживают токи до 25 мА, некоторые (аналоговые) – до 50 мА, к выводам напрямую (т.е. без мощных драйверов) я подключал светодиодное табло в динамическом режиме индикации. Возможно и прямое управление дешевыми (не содержащими встроенного контроллера) жидкокристаллическими индикаторами – подробно о создании многоуровневых сигналов рассказано в документе AN2228 – «LCD Driving Methods using PSoC».

Среди периферийных устройств есть такой интересный узел, как «Умножитель-Аккумулятор» (Multiply Accumulate, сокращенно MAC). Помимо заурядного аппаратного умножения, он может накапливать сумму результатов в 32-разрядном регистре. Такой алгоритм требуется при выполнении операций свертки, корреляционных вычислениях, преобразованиях Фурье и алгоритмах цифровой фильтрации. Понимая актуальность этого узла, фирма Cypress запихнула ДВА таких суммирующих умножителя в кристаллы серии CY8C29xxx.

А вообще, для людей, начавших осваивать PSoC, архитектура кристалла таит в себе много приятных сюрпризов. Номенклатура PSoC микросхем весьма широка, она включает в себя 8-, 20-, 28-, 32-, 44-, 48- и даже 100-выводные модификации в корпусах различных типов.


Завоюют ли PSoC-и мир?

На сайте компании постоянно растет библиотека описаний (Application Notes) особенностей разработки тех или иных узлов, а также удачных готовых разработок. Это – датчики присутствия для охранных систем, измерительные приборы, бытовая электроника и еще многое другое. С ультразвуковым измерителем дальности можно познакомиться здесь (477 кБ).

Стоимость чипов постоянно снижается, цена CY8C27443-24PVI на начало 2004 года у производителя составляла $3,85 (в Чип-и-Дипе – 185 р).

Техническая документация очень подробна и выполнена на высоком уровне. Среда разработки «PSoC Designer» хотя и тяжеловесна (а скорость ее работы оставляет желать лучшего), но зато с ней можно работать, практически не читая предварительно никакой документации – все и так интуитивно понятно.


А может нет?

Начав разрабатывать устройство, не всегда удается сразу сказать, реализуется ли оно полностью средствами PSoC. В моем опыте было несколько «обломов», когда казалось, что устройство вот-вот получится, но в результате мелкой «каверзы» Cypress (как правило – из-за невнимательного чтения технической документации) приходилось долго искать альтернативные варианты реализации.

Развитие прямых конкурентов – PIC и AVR – также не стоит на месте, а у людей есть большой опыт и наработки в программировании этих микросхем. Вдобавок, появился многоядерный Propeller – чем его «Cog» не есть аналог «Модуля Пользователя»?!

Cypress, во всяком случае, надеется...


Послесловие

Развитие PSoC продолжается дальше. В ногу со временем на кристалл привносятся новые возможности – поддержка емкостных сенсоров, беспроводного интерфейса, USB, и т.п. Имейте ввиду, что содержимое этого сайта обновляется эпизодически. Поэтому прочитанное здесь не отражает последних событий с фронта Cypress.

Например, уже появились новые поколения – «PSoC-3» и «PSoC-5» (серии CY8C3xxxx и CY8C5xxxx соответственно). У них не только другие процессорные ядра, но и иная концепция аналоговой и цифровой части.

Цифровая матрица здесь расширена до 24 блоков с гораздо большей свободой межсоединений, а сам цифровой блок представляет собой программируемый автомат со своим собственным АЛУ. Такая архитектура, по заявлению разработчиков, «создает балланс между степенью гранулярности системы и простотой реалицации блока». Такие традиционные блоки, как Timer, Counter и PWM «перекочевали» в разряд фиксированных ресурсов (как это свойственно традиционным микроконтроллерам). Рабочая частота блоков может достигать 80 МГц.

В новой концепции ряд аналоговых модулей упростился и потерял свою гибкость. Фиксированными ресурсами стали быстродействующие АЦП на 12 бит (1 Msps у «PSoC-5» и 192 ksps у «PSoC-3»), дельта-сигма АЦП с изменяемой разрядностью (до 20 бит), 8-битные ЦАП по току/напряжению (8 Msps и 1 Msps), быстродействующие компараторы, температурный сенсор с собственным АЦП, подсистема опроса емкостных датчиков и подсистема прямой работы с ЖК-индикаторами (до 48x16 сегментов). Привычные мультифункциональные CT/SC-блоки на основе ОУ есть не на всех кристаллах.

У «PSoC-3» на кристалле имеется 8-разрядное процессорное ядро 8051 («single cycle» на частоте до 48 МГц), а у «PSoC-5» – 32-разрядное ARM Cortex-M3 (рабочая частота до 80 МГц).

И еще несомненное преимущество новых PSoC-ов – появился стандартный отладочный интерфейс JTAG, плюс альтернативный 2-х проводный SWD (в первых поколениях PSoC такой интерфейс имели только специальные, «отладочные» версии кристаллов). Под новые чипы выпущена и новая среда разработки – «PSoC Creator».


antiradio.narod.ru/psoc
Дата создания документа: 14.08.2004. Последнее обновление: 05.05.2011.

Сайт создан в системе uCoz