Научная статья на тему 'МУЛЬТИЯДЕРНЫЕ МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА XCORE ОТ XMOS'

МУЛЬТИЯДЕРНЫЕ МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА XCORE ОТ XMOS Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
66
46
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Калачев Александр

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «МУЛЬТИЯДЕРНЫЕ МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА XCORE ОТ XMOS»

Мультиядерные микроконтроллеры

семейства xCORE от XMOS

Александр КАлАчЕВ

forther@yandex.ru

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

Введение

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

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

Распределение ресурсов процессорного ядра возможно и при помощи операционных систем реального времени.

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

Применение ПЛИС для проектов, состоящих из большого количества подсистем, часто оказывается неэффективным. Намечается подход высокоуровневого проектирования при множестве взаимодействующих заранее заданных софт-ядер. Особый интерес в этом

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

Попытки реализации процессорных систем, аппаратно поддерживающих высокоуровневые языки программирования, предпринимались и ранее — форт-процессоры Novix, RTX2000, ява-процессор picoJava, транспьютеры INMOS (Оккам), процессоры семейств «Эльбрус» («Эль-76»), «Кронос», а также ряд других. Некоторые из перечисленных процессоров или их модификации имели успех в определенных областях, хотя и не стали мейнстримом.

Многоядерные процессоры, такие как процессоры Intel, AMD с технологиями HyperThreading, процессоры семейства SPARC, поддерживают многопоточное программирование, но для систем реального времени с большим количеством относительно несложных задач и с ограничениями на потребляемую мощность и размеры они не всегда подходят. Многоядерные процессоры Tile от Tilera тоже выглядят тяжеловатыми для целого класса систем.

Многоядерные процессоры, например GA144, AsAP-II, разрешают запуск и выполнение параллельных задач и процессов, обеспечивая аппаратными средствами их взаимодействие и синхронизацию, однако программирование данных процессоров — вопрос далеко не тривиальный и требует от разработчиков и программистов определенных навыков и усердия.

Семейство процессоров xCORE

Семейство процессоров xCORE британской компании XMOS заявлено как класс микроконтроллеров с несколькими процессорными ядрами, гибкой системой портов ввода/вывода и архитектурой, обеспечивающей временной детерминизм [1, 2].

xCORE можно классифицировать как многопоточные мультиядерные микроконтроллеры. В их состав входит один, два или четыре процессорных сегмента, каждый из которых может содержать 4, 6 или 8 логических процессорных ядер. Производительность одного процессорного сегмента составляет 500 MIPS, что является достаточно высоким показателем для микроконтроллеров.

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

В основе контроллера лежит одна или более так называемых плиток/сегментов (tile), в состав которой входит набор исполнительных устройств и высокопроизводительный коммутатор. Представлено несколько типов сегментов, но основным типом является сегмент, содержащий процессорное ядро [1].

Процессорный сегмент состоит из следующего набора компонентов (рис. 1):

• xCORE logical processor cores — логические процессорные ядра. В состав процессорного сегмента может входить от четырех до восьми логических процессорных ядер, способных выполнять вычисления, поддерживать операции ЦОС, осуществлять задачи управления или обслуживать линии ввода/вывода; каждое из логических процессорных ядер разделяет процессорные ресурсы и память процессорного сегмента, но имеет собственный набор регистров.

• xTIME Scheduler — планировщик. Аппаратно реализует основные функции ОС реального времени, отвечает за осуществление задач на ядрах процессора, выполняет отсчет времени, предоставляет набор системных таймеров с разрешением до 10 нс.

Однократно программируемое

ПЗУ защиты программного кода

Блок управление тактированием „„У

xTIME: планировщики потоков, I таймеры, тактовые генераторы I 64 коаит

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

Отладочный интерфейс JTAG

Рис. 1. Внешний вид (некоторых из моделей), структура кристалла и структура процессорного сегмента контроллеров xCORE

• Hardware-Response ports — порты. Набор программно-управляемых линий ввода/вывода: порты управляются логическими процессорными ядрами и могут быть настроены как синхронные или асинхронные линии ввода/вывода, генераторы логических последовательностей, преобразователи последовательного кода в параллельный и наоборот.

• xCONNECT — коммутатор. Высокоскоростной неблокирующий коммутатор, объединяющий между собой ресурсы сегмента, также может служить для объединения нескольких процессоров.

• SRAM — блок оперативной памяти для хранения кода и данных исполняемой программы.

• Интерфейс программирования и отладки JTAG.

• Блок однократно программируемой памяти OTP ROM для обеспечения функций безопасности.

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

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

Коммутатор объединяет четыре линии XMOS Links каждого процессорного ядра и шестнадцать внешних линий, что дает возможность формировать систему из отдельных устройств. Также коммутатор способен выделять отдельные группы линий в независимые сети, что позволяет, к примеру, разделить сети управления процессом и сети передачи данных.

Архитектура процессорных ядер xCORE

Процессорное ядро xCORE является 32-разрядным многопоточным RISC-процессором с эффективной и развитой системой команд. Каждому логическому ядру доступна определенная доля процессорного времени (до 125 MIPS на частоте 500 МГц), которая контролируется планировщиком xTIME Scheduler. Логические ядра для прикладной программы представляются как независимые параллельные процессоры. Благодаря планировщику xTIME скорость выполнения независимых процессов на логических ядрах строго детерминирована [1, 2].

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

процессорное ядро

ОЗУ

Я

нения, передачу данных и синхронизацию параллельно выполняющихся задач.

Блок шифрования в xCORE, работая совместно с логическими ядрами, позволяет настраивать и реализовывать криптографические алгоритмы как для прикладных задач, так и для защиты программного кода, располагаемого во внешней флэш-памяти.

Каждый процессорный сегмент имеет высокопроизводительную подсистему памяти, позволяющую логическим ядрам разделять программный код и данные, кроме того, мо-

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

Каждый процессор xCORE предоставляет аппаратные ресурсы для нескольких параллельных задач (потоков/нитей), включая: • набор регистров для каждой задачи;

• планировщик, выбирающий, какая из задач активна в данное время;

• набор аппаратных семафоров для синхронизации задач и управления доступом к разделяемым ресурсам;

• набор каналов для коммуникаций между задачами;

• набор таймеров.

Например, процессорный сегмент микроконтроллера серии XS1-L1 при рабочей частоте 500 МГц имеет производительность порядка 500 MIPS, поддерживает 8 аппаратных потоков (8 логических ядер), 64 кбайт ОЗУ.

Логическое ядро способно выполнять более 125 MMAC в секунду, до 125 млн событий. Коммутатор имеет 4 связи для процессорного ядра, 8 внешних связей. Ядро имеет также 4 линии связи с пропускной способностью до 400 Мбит/с. Логическим ядрам доступно 7 семафоров, 10 таймеров, 32 канала связи.

Линии ввода/вывода организованы в порты шириной 1, 4, 8, 16 и 32 бит.

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

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

• осуществлять управляемые событиями коммуникации между задачами в системе и с внешними устройствами;

• поддерживать потоковый, пакетный или синхронный обмен данными между задачами;

• процессор переходит в режим ожидания в случае, когда все задачи находятся в ожидании;

• реализовать передачу данных между логическими ядрами, процессорными сегментами или на линии ввода/вывода. Обычно для задачи (для одного потока вычислений) отводится одно логическое процессорное ядро. В логическое ядро входят 12 регистров общего назначения, 4 регистра указателя и 2 регистра управления.

Регистры общего назначения г0: г11 используются в арифметических и логических операциях, вызове подпрограмм, доступе к структурам данных. Регистры-указатели:

• cp — указатель пула констант;

• dp — указатель данных;

• sp — указатель стека;

• lr — регистр связи. Регистры управления:

• pc — программный счетчик;

• sr — регистр статуса.

Допускается также выполнение нескольких задач на одном логическом ядре в рамках кооперативной многозадачности (механизм round-robin). Каждая задача имеет семь дополнительных регистров специального назначения:

• spc — сохраненный счетчик команд;

• ssr — сохраненный регистр статуса;

• et — регистр типа исключительной ситуации;

• ed — данные исключения;

• sed — сохраненные данные исключения;

• kep — точка входа ядра;

• ksp — указатель стека ядра.

Регистр статуса содержит следующую информацию:

• eeble — разрешение события;

• ieble — разрешение прерывания;

• inenb — в задаче разрешены события;

• inint — задача обрабатывает прерывание;

• ink — задача в режиме ядра;

• sink — сохраненный бит ink;

• waiting — задача ожидает выполнения текущей инструкции;

• fast — задаче разрешен быстрый ввод/вывод. В процессоре реализован небольшой конвейер, оптимизированный для детерминированного выполнения нескольких задач.

Порядка 80% инструкций процессора 16-битные, таким образом, процессор за один такт выбирает две команды. Как правило, лишь менее 30% инструкций требуют доступ к памяти, следовательно, каждое из процессорных ядер может работать на полной скорости, используя единую подсистему памяти.

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

С практической точки зрения можно представить некий цикл задач как период

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

К примеру, чип с 128 ядрами, каждое из которых способно одновременно выполнять 8 потоков, может быть использован как 1024-ядерный процессор, и каждое из его ядер работает на частоте 1/8 частоты процессора.

Планировщик поддерживает набор активных задач, выбирая из них инструкции для выполнения. Задача не активна в том случае, если:

• она ожидает синхронизации с другой задачей перед продолжением или завершением;

• задача ожидает входные данные;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

• задача принимает данные, но для них недостаточно места;

• задача ожидает истечения таймера;

• задача ожидает одно или несколько событий. Задача может ожидать события от канала

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

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

Порты ввода/вывода

Программируемые порты ввода/вывода xCORE обладают удивительной гибкостью и производительностью [1]. Данные на порты передаются непосредственно от логических процессорных ядер, минуя оперативную память. Порты могут автоматически преобразовывать данные из параллельной формы в последовательную и наоборот, порты могут точно контролировать порядок выдачи/приема сигналов по времени (квант составляет 10 нс) — все эти возможности позволяют программно реализовать практически любой тип интерфейса (табл. 1).

Серии контроллеров семейства xCoRE

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

Серии микроконтроллеров xCORE [3-6] включают:

• xCORE General Purpose — базовая серия устройств. В состав микроконтроллеров данной серии входят только процессорные сегменты.

• xCORE-USB — микроконтроллеры дополнительно к процессорным сегментам содержат сегмент с аппаратно реализованным USB (USB PHY).

• xCORE-Analog — серия оптимизирована для промышленных применений, дополнительно к процессорным сегментам содержит сегмент с многоканальным 12-битным АЦП.

• xCORE-XA — серия расширенной архитектуры (eXtended Architecture). Одно из логических ядер процессорного сегмента заменено на процессорное ядро ARM Cortex-M3.

xCORE GENERAL PURPOSE (LSERIES)

Серия xCORE General Purpose [3] подходит для широкого спектра приложений — от управления двигателями до систем реального времени и автомобильных приложений.

Устройства представлены в вариантах с 4, 6, 8, 10, 12 и 16 логическими ядрами с общей вычислительной мощностью от 400 до 1000 MIPS. Микроконтроллеры в пределах серии можно разделить на две группы повыводно совместимых контроллеров — с повышенной производительностью и бюджетные варианты (рис. 3, табл. 2).

xCOREUSB (USERIES)

Контроллеры серии xCORE-USB [4] дополнительно к процессорным сегментам содержат сегмент с аппаратно реализованным высокоскоростным USB-интерфейсом, поддерживающим скорость обмена до 480 Мбит/с и стандарт USB Audio Class 2. Контроллеры

Однократно программируемое

ПЗУ защиты программного кода

Блок управление тактированием ~_у I Отладочный

xTIME: планировщики потоков, . I интерфейс

таймеры, тактовые генераторы 64 коаит I JTAG

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

Рис. 3. Структура процессорного сегмента контроллеров серии xCORE GENERAL PURPOSE (L-SERIES)

Таблица 2. Микроконтроллеры серии xCORE GENERAL PURPOSE (L-SERIES)

Микроконтроллер Количество логических ядер ОЗУ, кбайт Количество линий ввода/вывода Производительность, MIPS Корпус Температурный диапазон

XS1-L4A-64 4 64 28 400 TQFP48 Коммерческий/ Промышленный

XS1-L6A-64 6 64 64 500 TQFP48, LQFP64, Коммерческий/

XS1-L8A-64 8 TQFP128 Промышленный

XS1-L8A-128 8 128 84 1000 QFN124 Коммерческий/ Промышленный

88 FBGA324 Автомобильный

XS1-L10A-128 10 128 84 1000 QFN124 Коммерческий/ Промышленный

88 FBGA324 Автомобильный

XS1-L12A-128 12 128 84 1000 QFN124 Коммерческий/ Промышленный

88 FBGA324 Автомобильный

XS1-L16A-128 16 128 84 1000 QFN124 Коммерческий/ Промышленный

88 FBGA324 Автомобильный

доступны в вариантах с 8, 10, 12 и 16 логическими ядрами. Сегмент с ШВ-интерфейсом дополнительно содержит многоканальный 12-битный аналого-цифровой преобразователь.

Возможности контроллера расширены за счет добавления режимов низкого энерго-

потребления, обнаружения просадки напряжения, наличия сторожевого таймера.

xCORE-USB (рис. 4, табл. 3) ориентированы на рынок мультимедийных и аудио-устройств, включая устройства воспроизведения, микрофоны, многоканальные аудиоинтерфейсы, микшеры.

Однократно программируемое

ПЗУ защиты программного кода

g: ■ Порты ш I ввода/ ш I вывода

Блок управление тактированием „У I Отладочный

xTIME: планировщики потоков, _ I интерфейс

таймеры, тактовые генераторы коаит JTAG

п

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

Однократно программируемое

ПЗУ защиты программного кода

Блок управление тактированием _„У I Отладочный

xTI ME: планировщики потоков, I интерфейс

таймеры, тактовые генераторы 64 Кбайт JTAG

Рис. 4. Структура контроллеров серии xCORE-USB

Таблица 3. Микроконтроллеры серии xCORE-USB

Микроконтроллер Количество логических ядер ОЗУ, кбайт Количество линий ввода/вывода Производительность, MIPS Корпус Температурный диапазон

XS1-U6A-64 6 64 38 500 FBGA96 Коммерческий/

XS1-U8A-64 8 Промышленный

XS1-U8A-128 8

XS1-U10A-128 10 128 78 1000 FBGA217 Коммерческий/

XS1-U12A-128 12 Промышленный

XS1-U16A-128 16

Таблица 4. Микроконтроллеры серии xCORE-ANALOG

Микроконтроллер Количество логических ядер ОЗУ, кбайт Количество линий ввода/вывода Производительность, MIPS Корпус Температурный диапазон

XS1-A6A-64 6 64 42 500 FBGA96 Коммерческий/

XS1-A8A-64 8 Промышленный

XS1-A8A-128 8

XS1-A10A-128 10 128 90 1000 FBGA217 Коммерческий/

XS1-A12A-128 12 Промышленный

XS1-A16A-128 16

xCORE-ANALOG (ASERIES)

Серия xCORE-Analog (A-Series) [5] расширена сегментом, содержащим 12-битный многоканальный АЦП (до 8 каналов) со скоростью преобразования 1 Мвыб./с. Также сегмент АЦП имеет таймер реального времени, супервизор питания (детектирование просадки питания, формирование сигнала сброса по подаче питания, сторожевой таймер). Моменты выборки данных АЦП контролируются непосредственно портом контроллера.

В серии xCORE-ANALOG (рис. 5, табл. 4) аналоговый сегмент позволяет получать отсчеты входных аналоговых сигналов, благодаря системе связей отсчеты могут быть доступны любому из логических ядер в системе.

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

xCOREXA

В серии xCORE-eXtended Architecture (XA Family) [6] объединены технологии многопоточных контроллеров xCORE и ARM. В процессорном сегменте данных контроллеров вместо одного из логических ядер располагается низкопотребляющий контроллер с ядром ARM Cortex-M3 с набором периферийных устройств, типичным для ARM-контроллеров (UART, I2C, SPI, АЦП, ЦАП, в ряде вариантов USB2.0) и флэш-памятью (рис. 6, табл. 5).

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

xCORE-XA представляет фактически полностью программируемую «систему-на-кристалле» (СнК) с достаточно высокой производительностью (до 500 MIPS). При этом программирование всей системы, в отличие от СнК типа «процессорное ядро + программируемая логика», осуществляется на языке С.

Однократно программируемое

ПЗУ защиты программного кода

Блок управление тактированием xTIME: планировщики потоков, таймеры, тактовые генераторы

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

Однократно программируемое

ПЗУ защиты программного кода

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

Блок управление тактирован лам

Многоканальный АЦП

Часы реального времени

Супервизор: сторожевой таймер,

обнаружение просадки питания, формирование сигнала сброса при подаче питания

Контроллер управление питанием

xTIME: планировщики потоков, I интерфейс

таймеры, тактовые генераторы ' 64 Кбайт | .гтагз

Рис. 5. Структура контроллеров серии xCORE-ANALOG

Блок управление тактированием xTIME: планировщики

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

логическое процессорное ядро xCORE

Процессорное ядро ARM Cortex-M3

Флэш-память 512 или 1024 кбайт

Отладочный интерфейс JTAG

Рис. 6. Структура контроллеров серии xCORE-eXtended Architecture (xCORE-XA)

Таблица 5. Микроконтроллеры серии xCORE-XA

Микроконтроллер Количество логических ядер Производительность, MIPS ОЗУ, кбайт Флэш-память, кбайт Количество линий ввода/вывода (xCORE/ARM) Корпус Температурный диапазон

XS1-XA8A-512 512

XS1-XAU8A-512 7+Cortex M3 500 192 38/93 FBGA265 Коммерческий/

XS1-XA8A-1024 1024 Промышленный

XS1-XAU8A-1024

В качестве дополнительных возможностей предусмотрена гибкая система управления режимами энергопотребления. Например, менее 1 мкА необходимо для работы таймера реального времени, а также периферийных устройств, которые он тактирует. В режиме ожидания контроллер потребляет менее 100 нА и может быть переведен в активный режим по событию на линиях ввода/вывода.

Среда разработки и библиотеки программного обеспечения

Разработка программного обеспечения для микроконтроллеров в среде xTIMEcomposer Studio [7, 8]. Программирование можно осуществлять на языке С, С++ (точнее, на их несколько расширенной версии, адаптированной для архитектуры xCORE) или на ассемблере xCORE [7].

Наиболее удобный и простой подход — писать приложения на расширенном С, называемом XMOS — xC. В xC внесены языковые конструкции для поддержки многозадачности, управления временными параметрами, передачи данных и синхронизации между отдельными задачами. Кроме того, xC позволяет программисту самому распределять ресурсы микроконтроллера, если это необходимо, в частности, осуществлять привязку задач к конкретным логическим ядрам или сегментам в процессорной системе.

Отладчик среды разработки XMOS GNU Debugger (GDB) и статический временной анализатор XTA static timing analyzer позволяют решать проблемы функциональной отладки приложений и проверить код на соответствие требованиям реального времени.

Установить правильность результатов отладки можно, запустив приложение на вы-

полнение (в симуляторе или на реальном контроллере), а затем проанализировать поведение приложения в инструменте XScope.

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

Для разработчиков XMOS предоставляет набор программных библиотек xSOFTip [8], содержащий примеры программ, реализующих некоторые алгоритмы ЦОС, алгоритмы работы периферийных устройств, интерфейсов передачи данных, примеры приложений для отладочных плат и комплектов. Библиотека постоянно пополняется и расширяется. Помимо xSOFTip, помощь в разработке программного обеспечения может быть получена со стороны сообщества разработчиков. Списки наиболее интересных программных модулей и библиотек представлены в таблицах 6 и 7.

отладочные средства для микроконтроллеров семейства xCoRE

XMOS и ее партнерами для освоения архитектуры xCORE, а также в качестве примеров вариантов включения микроконтроллеров предлагается ряд отладочных плат и отладочных комплектов [9-11].

sliceKIT MODULAR DEVELOPMENT SYSTEM

Базовыми отладочными комплектами для работы с микроконтроллерами xCORE мож-

Рис. 7. Внешний вид основной платы отладочного комплекта sliceKIT

но считать отладочные наборы sliceKIT [9], состоящие из основной платы (рис. 7), содержащей микроконтроллер с 16 логическими ядрами, и нескольких плат расширения, подключаемых к основной плате разъемами.

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

Дополнительные платы расширения из отладочного набора представляют собой платы расширения линий ввода/вывода, плата с Ethernet-интерфейсом, плата с разъемом и необходимой обвязкой для подключения графического LCD, платы с внешней оперативной памятью, интерфейсами MUART, CAN, LIN, RS-232, плата с беспроводным Wi-Fi-модулем, плата для подключения аудиоустройств.

Прекрасным вариантом начать работу с контроллерами xCORE является недорогая отладочная плата starterKit [10] (рис. 8). Она содержит двухсегментный контроллер xCORE с дополнительным аналоговым сегментом. Один из процессорных сегментов используется как внурисхемный отладчик, второй сегмент совместно с аналоговым сегментом работает как 8-потоковый контроллер серии xCORE-ANALOG с четырьмя каналами АЦП.

На плате расположено несколько разъемов — для подключения плат из наборов sliceKIT, для подключения внешних устройств (включая разъем, совместимый

Таблица 6. Основные программные модули и библиотеки, представленные в xSOFTip

Программные модули Библиотеки

Long-Delay Function Library

Non-linear Gain Function Library

BiQuad Filter Function Library

Short-Delay Function Library

ЦОС, Reverb Function Library

работа со звуком DSP Audio Utilities Function Library

Short-Reverb sliceKIT Audio Demo

Level Meter Display

BiQuad Filter sliceKIT Audio Demo

Simple FFT Function Library

Random number generation module

Алгоритмы Lock Handling Library

общего назначения OTP Reading Library

Lightweight and flexible assertion module

JPEG Decoder Component

Touch Screen Driver Component

i Дисплей Parallel RGB LCD Driver

Touch Screen Driver Function Library

Display Controller

£ Touchscreen Controller Library

s External SRAM memory Controller

i Внешняя память SDRAM Memory Controller

1 SDRAM Memory Translation Function Library

£ SDRAM Regression Application

\0 SDRAM_Reverb Function Library

Управление шаговыми двигателями Stepper Motor Motion Contrtoller

Stepper Driver Pulse Generator Component

Таблица 7. Основные библиотеки интерфейсов и периферийных устройств в xSOFTip

Типы интерфейсов Библиотеки

ADAT Transmitter

MIDI Component

S/PDI

TDM Audio Driver Component

3 >х I2S Master Audio Driver

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

¡i UART Transmitter

O X SPI Master/Slave

Quad SPI Flash Controller SPI RS485 Transceiver Component

I2C Functions Library

I2C Master (Single Bit Ports) Function Library

SPI Master Function Library

Ethernet

External WIFI Module Controller

Embedded Webserver Function Library

8-fr Ф ^ Ethernet/TCP Module

U £ SMI Ethernet Phy Protocol Library

Layer 2 Ethernet MAC

Wi-Fi TiWi-SL Module Driver

CANopen Stack Component

Profibus DP Slave Stack Component

Ethercat Slave Data Link Layer Controller (ESC)

1 3 LIN Bus Master/Slave Modbus RTU (Slave) Server Component

¡í i 8" S 1- Profibus Fieldbus Data Link Layer (FDL) Slave Controller

Modbus TCP Server (Slave) Component

он O. S Powerlink Slave Node

LIN Bus Component

CAN Bus Module

Ethercat Slave Stack

Рис. 8. Внешний вид отладочной платы starterKit

Таблица 8. Производительность некоторых мульти- и многоядерных процессоров и микроконтроллеров, представленных на рынке

Процессор Количество ядер Разрядность Миллионов операций в секунду (одно ядро) Количество потоков на ядро Удельная потребляемая ядром мощность, мВт/MIPS

Многоядерные процессоры

GA144F18A1 144 18 650-700 0,018

Tile64pro 64 32 700-866 0,3-0,45

Tile-Gx100 100 64 3000-4500 0,033-0,11

AsAP-II 167 16 66-1000 0,001-0,06

CSX700 192 32 250 0,188

| Мультиядерные процессоры и микроконтроллеры |

Mips32 1004k 4 32 800 2 0,125

xlp832 8 32 500-2000 4 3-3,75

xCORE 4 32 400-500 8 0,45

Propeller P8X32A 8 32 20 1 6,25

SPEAr600 (ядра ARM Cortex-A9) 2 32 600-800 1 0,5-0,9

МС-12 (1892ВМ3Т) 2 32/64 80/320 1 0,009/0,0016

МС-24 (1892ВМ2Я)

по распиновке с разъемом популярного одноплатного компьютера Raspberry Pi), для подачи аналоговых сигналов. Также на плате размещено несколько светодиодов, два сенсорных четырехэлектродных слайдера и кнопка.

Кроме упомянутых отладочных средств доступен и ряд других, в том числе представленных и третьими фирмами [11].

Заключение

Завершая далеко не полный обзор микроконтроллеров xCORE от XMOS, можно отметить следующее. Контроллеры семейства обладают достаточно высокой производительностью, сопоставимой с производительностью наиболее мощных семейств микроконтроллеров, построенных на архитектуре ARM. В сравнении с мультиядер-ными микроконтроллерами микроконтрол-

леры xCORE смотрятся также довольно неплохо (табл. 8). Однако по общему уровню потребления энергии микроконтроллеры xCORE больше подходят для устройств с достаточно емкими источниками питания с возможностью периодической зарядки. Особенности xCORE:

• аппаратная поддержка многозадачности;

• гибкая подсистема ввода/вывода, обеспечивающая времена реакции на внешние события, и ввод/вывод с тактами от 10 нс;

• возможность масштабирования системы путем наращивания количества ядер и микроконтроллеров.

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

Можно сказать, что технологии микроконтроллеров xCORE дают преимущества многопоточного программирования в сег-

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

Литература

1. Inside the xCORE architecture. XMOS Multicore microcontrollers // http://www.xmos.com/ products/silicon

2. THE xCORE DIFFERENCE XMOS Multicore microcontrollers // http://www.xmos.com/ products/why

3. xCORE GENERAL PURPOSE (L-SERIES) // http:// www.xmos.com/products/silicon/l-series

4. xCORE-USB (U-SERIES) // http://www.xmos. com/products/silicon/u-series

5. xCORE-ANALOG (A-SERIES) // http://www. xmos.com/products/silicon/a-series

6. xCORE-XA with ARM Cortex-M3 XMOS Multicore microcontrollers // http://www.xmos.com/ products/silicon/xa-series

7. xTOOLS, our suite of tools XMOS Multicore microcontrollers XMOS // http://www.xmos.com/ products/tools

8. Support XMOS // http://www.xmos.com/support/ xsoftip

9. sliceKIT XMOS // https://www.xmos.com/ products/xkits/slicekit

10. STARTER KITS XMOS // https://www.xmos. com/products/xkits/starter

11. PARTNER MODULES XMOS // http://www. xmos.com/products/xkits/partners

НОВОСТИ I рынок

Переезд компании Beneq Thin Film Equipment

С 12 июня 2014 года производственные объекты компании Beneq Thin Film Equipment переведены из г. Вантаа в место нахождения Lumineq Displays в г. Эспоо (Финляндия).

С этого момента Beneq Thin Film Equipment и Beneq Lumineq Displays располагаются на одной производственной площадке, что позволит двум взаимодополняющим предприятиям повысить свою эффективность благодаря более тесному сотрудничеству.

Завод в городе Эспоо, широко известный в мире своим оборудованием для атомно-слоевого осаждения (ALD), станет местом, где будут развиваться и совершенствоваться технологии ALD.

Компания Beneq, в которую теперь входят оба подразделения — Lumineq Displays и Thin Film Equipment, — продолжит развивать передовые тонкопленочные технологии в исследовательской работе, создавать оборудование с новыми и улучшенными функциональными возможностями, а также дисплеи, чьи характеристики не перестают впечатлять потребителей.

www.beneq.com

i Надоели баннеры? Вы всегда можете отключить рекламу.