Беспроводная система на кристалле NRF5340
В статье рассматриваются основные модули двуядерной беспроводной системы-на-кристалле NRF5340 от Nordic Semiconductor. В СнК встроена технология NFC и радиомодуль, поддерживающий протоколы Bluetooth Low Energy 125, IEEE 802.15.4, а также проприетарные протоколы компании Nordic Semiconductor.
Введение
Компания nordic Semiconductor продолжает расширять производственную линейку беспроводных СнК. Так, в конце 2019 г. она объявила о выпуске СнК nRF5340. О прежнем поколении СнК nRF52 мы рассказывали, а о непосредственном предшественнике nRF9160 было упомянуто.
По сравнению с предшественниками, в этой новинке произошли довольно существенные изменения. В основном они касаются процессорных ядер. Вместо ядра ARM cortex- M4F с тактовой частотой 64 МГц, использованном в nRF52, и вместо одного ядра ARM cortex-M33 в nRF9160 с тактовой частотой 64 МГц, СнК nRF5340 базируется на двух ядрах ARM cortex-M33 с тактовыми частотами 64 и 128 МГц. Таким образом, ее производительность существенно выросла.
Одно из ядер cortex-M33 используется в качестве процессора приложений. Его тактовая частота – 128 МГц, а производительность – 510 EEMBc coreMark. Другое ядро cortex-M33 предназначено для использования в беспроводной сети; его тактовая частота – 64 МГц, а производительность – 238 EEMBc coreMark. Для сравнения заметим, что производительность СнК nRF9160 не превышает 243 EEMBc coreMark. Добавим, что удельная производительность nRF5340 из расчета на 1 МГц превышает производительность nRF52840 на 58%.
Связь между процессорными ядрами осуществляет модуль межпроцессорных коммуникаций iPc. В нем каждому процессорному ядру отведена группа регистров, через которые происходит обмен сообщениями между процессорными ядрами. Через модуль iPc может передаваться несколько задач или событий одновременно.
Процессор приложений поддерживает следующие стандартные коммуникационные интерфейсы:
– 3x SPi с EasyDMA;
– 2x i2c с EasyDMA;
– 2x UART (cTS/RTS) с EasyDMA
Новый интерфейс HS-SPi для сопряжения с графическими дисплеями и высокоскоростными датчиками увеличивает функциональность графики.
Сетевой процессор поддерживает беспроводные протоколы:
– Bluetooth 5.1: 2 и 1 Мбит/с, 500 и 125 Кбит/с;
– iEEE 802.15.4–2006: 250 Кбит/с;
– проприетарный на 2,4 ГГц: 1 и 2 Мбит/с.
Сетевой процессор также поддерживает стандартные коммуникационные интерфейсы:
– SPi с EasyDMA;
– i2c с EasyDMA;
– UART (cTS/RTS) с EasyDMA.
Ядро cortex-M33 достаточно подробно описано, поэтому мы не будем повторяться, но лишь заметим, что ядру приложений принадлежит флэш-память объемом 1 Мбайт и ОЗУ емкостью 512 Кбайт. С сетевым ядром работает флэш-память объемом 256 Кбайт и ОЗУ емкостью 64 Кбайт. Структурная схема СнК приведена на рисунке 1.
Ниже мы опишем некоторые, на наш взгляд, основные периферийные модули, позволяющие получить представление о функциональных возможностях СнК. За рамками статьи оставим широко известные и многократно описанные модули, например стандартные коммуникационные интерфейсы, DMA и т. д.
Рисунок 1
Структурная схема СнК
Рисунок 2
Структурная схема модуля управления питанием и тактированием
Управление питанием и тактированием
Структурная схема модуля управления питанием и тактированием приведена на рисунке 2. Модуль обеспечивает минимальное энергопотребление СнК. Модуль управления питанием (PMU) отслеживает требуемое энергопотребление всех узлов СнК и соответственно меняет напряжение питания и тактовую частоту узла за счет остановки синхронизации или изменения напряжения питания. ФАПЧ на 11,289 или 12,288 МГц с малым джиттером для аудиомодулей улучшает качество обработки сигналов. Встроенные конденсаторы для внешних осцилляторов позволяют уменьшить число внешних компонентов.
Сразу после включения питания система по умолчанию устанавливается в режим System on; при этом часть модулей находится в активном режиме, а другая часть – в режиме ожидания (idle). Состояние модуля устанавливается программно путем соответствующих установок в регистрах конфигурации. Модуль PMU может изменять частоту тактирования ядра приложения в зависимости от его загруженности, позволяя снизить энергопотребление.
В режиме System on возможны два режима энергопотребления:
- с постоянной задержкой выполнений операций;
- низкого энергопотребления.
В первом случае задержка минимальна и прогнозируема. В режиме низкого энергопотребления при автоматическом управлении питанием обеспечивается минимальное энергопотребление. Однако при этом задержка отклика системы становится мало прогнозируемой, т. к. снижение энергопотребления достигается за счет изменения времени включения ядра и соединений периферийных устройств PPi.
Наименьшее энергопотребление достигается в режиме выключения System oFF. В этом случае процессорное ядро выключается, и выполнение задачи приостанавливается. Выход из этого режима осуществляется с помощью нескольких сигналов, формируемых периферийными устройствами; при этом осуществляется сброс системы, а также по внешнему сигналу сброса. В нескольких банках ОЗУ могут сохраняться записанные данные.
В режиме core Force-off сетевое ядро можно принудительно отключить. Вывести сетевое ядро из этого режима может только ядро приложений. Перед включением режима core Force-off желательно, чтобы периферийные устройства, связанные с сетевым ядром, были переведены в режим ожидания. После выхода ядра из этого режима происходит его сброс.
Предусмотрены два режима питания: нормальный (normal voltage) и повышенного напряжения (High voltage). Выбор режима зависит от того, к какому внешнему выводу микросхемы подключено напряжение питания. Если внешнее напряжение питания подключено к выводу VDD, выбирается режим normal voltage; при этом питание формируется двумя встроенными LDo-регуляторами, один из которых питает ядро приложений и связанную с ним периферию, а другой – сетевое ядро и его периферию. Напряжение питания портов ввода/вывода в этом режиме осуществляется непосредственно напряжением VDD. Его величина находится в пределах 1,7–3,6 В.
Если напряжение питания подключено к внешнему выводу VDDH, выбирается режим High voltage. В этом случае напряжение VDDH (его величина может изменяться в диапазоне 2,5–5,5 В) поступает на вход встроенного LDo-регулятора High voltage. Выходное напряжение этого регулятора (1,8–3,3 В) поступает на входы LDo-регуляторов, питающих процессорные ядра и их периферию, на порты ввода/вывода и на внешний вывод VDD, который можно использовать для питания внешних устройств. В режиме High voltage все три встроенных регулятора могут работать в режиме LDo или Dc/Dc-преобразователей. В обоих режимах контроль напряжения питания осуществляется супервизором, который фиксирует отклонение напряжения питания от заданной величины и формирует прерывание.
Рисунок 3
Рисунок 4
Структурная схема программируемых периферийных соединений
Структурная схема радиомодуля
Архитектура периферии
В этом разделе мы рассмотрим принципы организации периферии, а в следующих разделах немного подробнее опишем отдельные модули
Периферийные модули распределены между двумя процессорными ядрами. Ядру приложений недоступны периферийные модули сетевого ядра, тогда как сетевое ядро может получить доступ к периферии ядра приложений. Периферийные устройства управляются через регистры конфигурации, регистры задач и регистры событий. Периферийные модули могут быть защищенными и незащищенными. При этом некоторые из них могут менять состояние. Более подробно технология ARM TrustZone описана в. Доступ к отдельным областям флэш-памяти регламентируется с помощью списка контроля доступа AcL.
Регистры задач представляют собой входы, позволяющие ЦП или периферийным устройствам инициировать выполнение задачи этим модулем. Регистры событий, напротив, являются выходами – они могут запускать задачи в другом периферийном модуле или вызвать прерывание процессора. Прерывание формируется по любому событию или по сочетанию событий. Однако каждый модуль может формировать только одно прерывание. Модуль может выполнять несколько задач; для каждой из них в группе регистров выделен отдельный регистр. Кроме того, периферийный модуль формирует несколько событий, для каждого из которых выделен отдельный регистр.
Заметим, что перед использованием регистров задач или событий периферийный модуль должен быть включен (находиться в активном состоянии). Напротив, установка регистра PSEL (pin select) должна осуществляться до включения модуля. Игнорируются все записи в этот регистр при активном состоянии модуля. Структурная схема программируемых периферийных соединения приведена на рисунке 3.
Каждому периферийному модулю назначается блок адресного пространства. Между идентификатором периферийного модуля и базовым адресом существует прямая связь. Например, модуль с базовым адресом 0x4001F000 имеет идентификатор iD=31 (1F=31). Разные периферийные модули могут иметь одинаковый идентификатор; при этом существуют ограничения в их использовании – у них могут быть общие регистры или общие ресурсы. Кроме того, допускается ограничение доступности из-за того, что одновременно можно использовать только один модуль.
Заметим, что при изменении состояния модулей с одинаковым идентификатором рекомендуется проделать ряд подготовительных операций и для отключаемого, и для включаемого устройства. В частности, не следует доверять унаследованной конфигурации включаемого модуля – требуется заново выполнить его настройку.
События и задачи разных модулей могут быть связаны между собой через распределенные программируемые соединения периферийных устройств (DPPi) с помощью регистров PUBLiSH и SUBScRiBE, которые имеются в каждом периферийном модуле (см. рис. 3). Если информацию о событии разместить в регистре PUBLiSH, это событие станет доступным другим модулям. Соответственно, прочитать о событии можно через регистр SUBScRiBE. В таком случае задача модуля будет запускаться по внешнему событию.
Ярлык (shortcut) обеспечивает прямую связь между событием и задачей в рамках одного модуля. При создании соответствующего события связанная с ним задача запускается автоматически. Ярлык обеспечивает минимальную задержку, которая меньше, чем при использовании DPPi. Однако ярлыки предопределены и не конфигурируются – их можно только разрешить или запретить. В каждом модуле имеется не более 32 ярлыков.
Модули безопасности и защиты данных
Модуль AAR реализует криптографическую функцию Resolvable Private для ускоренного распознания частных адресов. Эта процедура, прописанная в спецификации Bluetooth core v4.0, позволяет двум устройствам, использующим секретный ключ, создавать хэш на основе их адресов. Модуль обеспечивает распознание адресов в реальном времени. AAR использует тот же криптоускоритель AES, что и другие периферийные модули.
Счетчик с блоками шифрования (ccM) применяет алгоритм шифрования, обеспечивающий и аутентификацию, и конфиденциальность при передаче сообщения. Модуль ccM формирует поток зашифрованных ключей, которые применяются при дешифровке входных данных. Алгоритм описан в специальной публикации niST 800–38c.
ARM TrustZone cryptocell 312 (cRYPTocELL) представляет собой подсистему безопасности. Она обеспечивает корень доверия RoT и совместима со многими стандартами и протоколами.
Режим электронной кодовой книги EcB (который иногда называют методом прямого шифрования) можно использовать для реализации ряда криптографических функций. К ним относится генерация хэша, цифровых подписей и потока ключей для шифрования или дешифрования данных. Модуль поддерживает шифрование AES-128, а дешифрование не поддерживает.
Модуль управления ключами (KMU) управляет подмножеством пользовательских данных. Эта область предназначена для хранения криптографических ключей, к которым процессор не имеет доступа. В распоряжении модуля KMU находятся 128 слотов для ключей, в которых можно хранить один 128-бит ключ. Если требуется хранить ключ большей размерности, объединяется несколько слотов. Доступ к модулю KMU разрешен только из безопасной области.
Модули систем управления
Конечно, СнК nRF5340 не предназначена для построения сложных встраиваемых систем управления. Однако наличие модулей аналоговых компараторов, АЦП, ШИМ и квадратурного декодера позволяет реализовать управление относительно простым объектом. Кратко рассмотрим каждый из этих модулей.
К компаратору coMP через мультиплексор можно подключить до восьми аналоговых сигналов. Для формирования опорного напряжения 1,2; 1,8 или 2,4 В используется встроенный ИОН. Предусмотрена работа в дифференциальном, несимметричном режимах и регулировка гистерезиса. Можно выбрать три режима быстродействия:
- низкоскоростной с малым энергопотреблением;
- нормальный режим;
- высокоскоростной режим
К модулю компаратора с очень малым энергопотреблением (LcoMP) также можно подключить до восьми аналоговых сигналов. Опорное напряжение изменяется с шагом VDD/16; всего можно использовать 15 шагов. Модуль LcoMP применяется для формирования сигнала пробуждения СнК.
Модуль АЦП последовательного приближения SAADc имеет восемь аналоговых входов и может работать в режимах 8-, 10-, 12- и 14-бит преобразования. Имеется возможность осуществлять преобразование несимметричных и дифференциальных сигналов. Опрос каналов происходит в однократном режиме или последовательным сканированием заданных каналов. Задержка выборки программируется. Результаты преобразования передаются в ОЗУ через каналы EasyDMA (упрощенный DMA).
Модуль ШИМ состоит из четырех независимых каналов, каждый из которых программируется отдельно. Квадратурный декодер QDEc обеспечивает декодирование и буферизацию выходных сигналов квадратурных датчиков, например энкодеров. Частота опросов датчика и массив накопленных результатов программируется пользователем. Заметим, что частота опроса сигналов датчика должна быть значительно выше частоты вращения вала, на который установлен энкодер. При невыполнении этого условия может возникнуть стробоскопический эффект и недопустимые переходы – оба квадратурных сигнала переключаются одновременно.
Беспроводные модули
Модуль беспроводной связи ближнего радиуса действия NFCT соответствует спецификации форума NFC. Перечислим некоторые особенности модуля:
- частота: 13,56 МГц;
- скорость передачи данных: 106 Кбит/с;
- пробуждение при обнаружении поля;
- программируемый контроллер синхронизации кадров;
- проверка циклическим избыточным кодом и автоматическое разрешение коллизий.
Кадр данных передается непосредственно из ОЗУ. После окончания передачи кадра формируется событие. Принятые кадры автоматически дизассемблируются, и часть данных передается в ОЗУ. Пробуждение при обнаружении поля происходит в режиме SENSE (режим включается пользователем) и при нахождении СнК в состоянии System on и в состоянии System oFF. В состоянии System on при обнаружении поля формируется событие активации модуля nFcT. Если обнаружение поля происходит в состоянии System oFF, вначале формируется сигнал пробуждения.
Если система переводится в состояние System oFF уже при обнаруженном поле, то модуль nFcT формирует сигнал пробуждения и осуществляет сброс системы. Заметим, что после сброса следует вновь установить конфигурацию модуля nFcT.
Радиомодуль на 2,4 ГГц RADio совместим с несколькими стандартами радиосвязи. Среди них: 1 и 2 Мбит/с, режимы Bluetooth Low Energy 125 и 500 Кбит/с, iEEE 802.15.4 250 Кбит/с, а также проприетарные протоколы nordic 1 и 2 Мбит/с. Модуль осуществляет автоматическую фильтрацию адресов и сопоставляет их с заданными шаблонами. Структурная схема радиомодуля приведена на рисунке 4.
В состав модуля RADio входит блок согласования адресов и блок управления межкадровыми интервалами, индикатор уровня принимаемого сигнала RSSi и счетчик битов, который формирует сигнал события, когда модуль отправляет или получает предварительно сконфигурированное количество битов.
В режиме ieee802154_250kbit модуль RADio соответствует стандарту iEEE 802.15.4–2006. Скорость передачи данных: 250 Кбит/с, частота: 2450 МГц; тип модуляции: o-QPSK PHY. Основные отличия iEEE 802.15.4 от Bluetooth Low Energy и проприетарных протоколов nordic заключаются в схеме модуляции, структуре канала и структуре пакета. При передаче данных ток потребления модуля составляет 3,2 мА, а при приеме – 2,6 мА, что соответствует снижению на 30% при приеме и 40% – при передаче.
В заключение добавим, что СнК nRF5340 выпускается в корпусе aQFn-94; диапазон рабочей температуры: –40…105°c.