Мультиядерные микроконтроллеры семейства xCORE от XMOS

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

Введение

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

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

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

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

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

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

Многоядерные процессоры, такие как процессоры Intel, AMD с технологиями HyperThreading, процессоры семейства SPARС, поддерживают многопоточное программирование, но для систем реального времени с большим количеством относительно несложных задач и с ограничениями на потребляемую мощность и размеры они не всегда подходят. Многоядерные процессоры 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 нс.
  • Hardware-Response ports — порты. Набор программно-управляемых линий ввода/вывода: порты управляются логическими процессорными ядрами и могут быть настроены как синхронные или асинхронные линии ввода/вывода, генераторы логических последовательностей, преобразователи последовательного кода в параллельный и наоборот.
  • xCONNECT — коммутатор. Высоко-скоростной неблокирующий коммутатор, объединяющий между собой ресурсы сегмента, также может служить для объединения нескольких процессоров.
  • SRAM — блок оперативной памяти для хранения кода и данных исполняемой программы.
  • Интерфейс программирования и отладки JTAG.
  • Блок однократно программируемой памяти OTP ROM для обеспечения функций безопасности.
Внешний вид (некоторых из моделей), структура кристалла и структура процессорного сегмента контроллеров xCORE

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

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

Возможности масштабирования процессорной архитектуры xCORE

Рис. 2. Возможности масштабирования процессорной архитектуры xCORE

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

Коммутатор объединяет четыре линии 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 регистра управления.

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

Регистры-указатели:

  • 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‑ный процессорный такт.

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

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

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

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

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

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

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

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

Таблица 1. Возможные конфигурации портов ввода/вывода микроконтроллеров xCORE

Структурная схема

Тип вывода

Описание

Структурная схема

Ввод/вывод значений
через определенный
интервал времени

генерируется выходной сигнал через определенные временные интервалы

считываются входные линии через заданные интервалы

временное разрешение до 10 нс

Структурная схема

Временные штампы

отмечается время совершения определенного события

временное разрешение до 10 нс

Структурная схема

Компаратор

ядро ожидает определенный уровень на выводе

программно реализованный конечный автомат

Структурная схема

Синхронный стробированный порт

данные с вывода считываются при наличии разрешающего сигнала и выбранного уровня тактового сигнала

Структурная схема

Преобразователь последовательный <—>
параллельный код

32-битное преобразование параллельного кода в последовательный и наоборот

битовая скорость до 60 Мбит/с

Серии контроллеров семейства 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 (L‑SERIES)

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

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

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

Рис. 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, TQFP128

Коммерческий/Промышленный

XS1-L8A-64

8

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

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

xCORE-USB (U‑SERIES)

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

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

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

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

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

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

Микроконтроллер

Количество
логических
ядер

ОЗУ,
кбайт

Количество
линий
ввода/вывода

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

Корпус

Температурный диапазон

XS1-U6A-64

6

64

38

500

FBGA96

Коммерческий/Промышленный

XS1-U8A-64

8

XS1-U8A-128

8

128

78

1000

FBGA217

Коммерческий/Промышленный

XS1-U10A-128

10

XS1-U12A-128

12

XS1-U16A-128

16

xCORE-ANALOG (A‑SERIES)

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

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

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

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

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

Микроконтроллер

Количество
логических
ядер

ОЗУ,
кбайт

Количество
линий
ввода/вывода

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

Корпус

Температурный
диапазон

XS1-A6A-64

6

64

42

500

FBGA96

Коммерческий/Промышленный

XS1-A8A-64

8

XS1-A8A-128

8

128

90

1000

FBGA217

Коммерческий/Промышленный

XS1-A10A-128

10

XS1-A12A-128

12

XS1-A16A-128

16

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

xCORE-XA

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

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

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

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

Микроконтроллер

Количество
логических
ядер

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

ОЗУ, кбайт

Флэш-память, кбайт

Количество линий
ввода/вывода
(xCORE/ARM)

Корпус

Температурный
диапазон

XS1-XA8A-512

7+Cortex M3

500

192

512

38/93

FBGA265

Коммерческий/Промышленный

XS1-XAU8A-512

XS1-XA8A-1024

1024

XS1-XAU8A-1024

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

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

В качестве дополнительных возможностей предусмотрена гибкая система управления режимами энергопотребления. Например, менее 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.

Таблица 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

Parallel RGB LCD Driver

Touch Screen Driver Function Library

Display Controller

Touchscreen Controller Library

Внешняя память

External SRAM memory Controller

SDRAM Memory Controller

SDRAM Memory Translation Function Library

SDRAM Regression Application

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

I2S Master Audio Driver

UART Transmitter

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

Ethernet/TCP Module

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)

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

Profibus Fieldbus Data Link Layer (FDL) Slave Controller

Modbus TCP Server (Slave) Component

Powerlink Slave Node

LIN Bus Component

CAN Bus Module

Ethercat Slave Stack

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

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

sliceKIT MODULAR DEVELOPMENT SYSTEM

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

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

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

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

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

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

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

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

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

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

 

Заключение

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

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

Процессор

Количество ядер

Разрядность

Миллионов операций
в секунду (одно ядро)

Количество потоков на ядро

Удельная потребляемая ядром мощность, мВт/МIPS

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

GA144F18A1

144

18

650–700

1

0,018

Tile64pro

64

32

700–866

1

0,3–0,45

Tile-Gx100

100

64

3000–4500

1

0,033–0,11

AsAP-II

167

16

66–1000

1

0,001–0,06

CSX700

192

32

250

1

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Я)

Особенности xCORE:

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

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

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

Литература
  1. Inside the xCORE architecture. XMOS Multicore microcontrollers
  2. THE xCORE DIFFERENCE XMOS Multicore microcontrollers
  3. xCORE GENERAL PURPOSE (L‑SERIES)
  4. xCORE-USB (U‑SERIES)
  5. xCORE-ANALOG (A‑SERIES)
  6. xCORE-XA with ARM Cortex-M3 XMOS Multicore microcontrollers
  7. xTOOLS, our suite of tools XMOS Multicore microcontrollers XMOS
  8. Support XMOS
  9. sliceKIT XMOS
  10. STARTER KITS XMOS
  11. PARTNER MODULES XMOS

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *