Внутри микроконтроллера
Рассмотрим новинку отечественных ученых — ультранизкопотребляющий 32-разрядный микроконтроллер. Отличительными особенностями этой разработки является сочетание производительности, функциональности и потребляемой мощности.
Микросхема К1921ВГ015 представляет собой СБИС 32-разрядный микроконтроллер, предназначенный для промышленных и потребительских приложений, включая системы дистанционного мониторинга, контрольно-измерительные приборы, системы автоматизации производственных процессов, автомобильную электронику, а также устройств с батарейным питанием.
Изделие оснащено широким набором цифровой и аналоговой периферии, благодаря чему, может применяться в различных процессах цифровой обработки сигналов, в том числе, требующих точных аналогово-цифровых преобразований, в системах управления и сбора информации.
Архитектура
Микроконтроллер К1921ВГ015 спроектирован на базе RISC-V ядра ВМ-310S6, поддерживающего систему команд RV32IMFCN_ZBA_ZBB_ZBC_ZBS, и два режима привилегированности: machine и user.
Конвейер BM-310S6 состоит из 2-х стадий, на которых выполняются генерация запроса в подсистему памяти программ (PMS), чтение фрагмента кода из PMS и извлечение команд. Далее происходит декодирование команды и ее исполнение.
Подсистема предварительной обработки команд (FE) отвечает за выполнение операций первой, и частично второй стадии конвейера.
Блок FE состоит из:
IFU — Instruction Fetch Unit, где содержится логика формирования адреса следующего фрагмента кода.
IDU — Instruction Decode Unit — блок предварительного декодирования инструкций.
IFQ — Instruction Fetch Queue — очередь фрагментов кода.
Все устройства микроконтроллера соединены между собой через блок коммутации.
Что внутри?
Микроконтроллер содержит домен батарейного питания, в который входят периферийные блоки: RTC, аналоговые компараторы, блок контроля вскрытия, дополнительное ОЗУ 64КБ, независимый сторожевой таймер. Периферийные блоки, входящие в состав домена батарейного питания, позволяют осуществлять контроль вскрытия корпуса системы, отсчитывать временные промежутки и сохранять информацию при отсутствии основного питания.
Процессорное ядро BM-310 поддерживает систему команд: RV32IMFCN_ZBA_ZBB_ZBC_ZBS. Ядро CloudBEAR BM-310S6 также поддерживает два режима привилегированности: machine и user. Режим user предоставляет механизм изоляции процессов друг от друга и от доверенного кода, исполняемого в режиме machine.
Для снижения энергопотребления микросхемы предусмотрена возможность отключения тактовых сигналов отдельных блоков периферии в случае, если они не используются пользователем. Помимо этого, в микроконтроллере предусмотрена возможность конфигурирования режимов функционирования для уменьшения потребляемой энергии в тех задачах, где ядро не должно постоянно работать.
В связи с тем, что изделие оснащено отдельно выделенным батарейным доменом питания, управление режимами блоков, входящих в его состав осуществляется регистрами PMU_RTC. Управление режимом функционирования остальных блоков осуществляется регистрами PMU_SYS.
Помимо этого, предусмотрено два способа перехода в режим пониженного энергопотребления: — использование команды WFI (Wait For Interrupt);
Что снаружи?
Все выводы микроконтроллера по их функциональному назначению, организованы в группы:
16-разрядные порты ввода-вывода A, B, C;
8 аналоговых входов, подключаемых к каналам АЦП;
порт тестирования JTAG, предназначенный для внутрисхемного программирования микроконтроллера, тестирования и отладки программ пользователя, включает в свой состав пять выводов TCK, TMS, TDI, TDO, TRST для подключения JTAG эмулятора.
питание микроконтроллера;
питание аналогового домена, включающего блоки:
АЦП последовательного приближения (ADC);
АЦП сигма-дельта (ADCSD);
внутренний датчик температуры (TSENSOR), подключаемый к одному из входов АЦП;
питание батарейного домена, включающего блоки:
ОЗУ1;
PMU;
контроля вскрытия TAMPER;
часов реального времени RTC;
аналоговые компараторы (CMP0- CMP1);
IWDT.
Микроконтроллер имеет конфигурационный вывод SERVEN, ри подаче на SERVEN логической единицы во время сброса, микроконтроллер переходит в сервисный режим, в котором запрещаются любые операции со всей Flash-памятью, кроме полного стирания.
Выводы XI_RTC и XO_RTC предназначены для подключения внешнего источника тактового сигнала (с частотой 32 кГц) блока RTC.
Выводы XI_OSC и XO_OSC предназначены для подключения внешнего источника тактового сигнала микроконтроллера с частотой (2 — 30) МГц.
Вывод V_BAT предназначен для подключения внешнего источника питания (батарейки). Номинальное значение напряжения должно находиться в диапазоне от 1,7 В до 3,6 В.
Выводы VCC1 и GND1 предназначены для подключения внешних источников питания ядра, Flash, PLL и периферии микроконтроллера. Номинальное значение напряжения должно находиться в диапазоне от 1,7 В до 3,6 В, а максимальный ток потребления с учётом нагрузки по GPIOA, GPIOB, GPIOC — до 150 мА.
Каждый цифровой вывод порта микроконтроллера может использоваться как двунаправленный вывод общего назначения (режим GPIO). Помимо этого, все выводы имеют альтернативную функцию (или несколько функций). Режим работы, альтернативная функция, нагрузочная способность и быстродействие, а также подтяжка к высокому уровню и функционирование в режиме выхода с открытым стоком/истоком могут быть заданы для каждого вывода независимо от других.
А что с памятью?
Разработанный микроконтроллер имеет встроенную Flash-память программ объемом 1 Мбайт (256 страниц по 4 Кбайт), которую можно использовать для хранения и загрузки пользовательского программного обеспечения изделия.
Чтение Flash-памяти осуществляется через две шины AHB: I-code (для команд) и D-code (для данных). Чтение D-code шины — в приоритете.
Память доступна для чтения, записи, полного и постраничного стирания через регистры данных DATAn (n от 0 до 3), адреса ADDR, команд CMD, статуса STAT блока FLASH. Запись необходимо производить в предварительно очищенную ячейку памяти. Стирание памяти осуществляется полностью или постранично.
Максимальное время чтения данных из Flash-памяти составляет до 60 нс (типовое значение задержки — от 30 нс). Поэтому, исходя из выбранной рабочей частоты, следует задавать определенное количество дополнительных тактов ожидания, необходимое для стабильного чтения из Flash-памяти.
Каждый микроконтроллер содержит уникальный идентификационный номер ID, состоящий из 128 бит.
Система тактирования микроконтроллера позволяет использовать различные источники тактового сигнала, что позволяет расширить набор применений и решаемых задач пользователя. Существует возможность гибкой настройки тактовых сигналов для блоков периферии.
Для снижения энергопотребления микросхемы предусмотрена возможность отключения тактовых сигналов отдельных блоков периферии в случае, если они не используются пользователем. При переходе процессора в режим пониженного энергопотребления возможно отключение тактового сигнала ядра (команда WFI), а также возможность выбора периферийных блоков, которые будут отключены/включены при переходе/выходе из данного режима.
Другие немаловажные функциональные элементы, которые есть внутри:
32-разрядное ядро архитектуры RISC-V с поддержкой системы команд RV32IMFCN_ZBA_ZBB_ZBC_ZBS, набора команд умножения, арифметических и логических команд, встроенным модулем обработки команд с плавающей запятой с одинарной точностью FPU, кэшем команд и поддержкой отладочного интерфейса JTAG;
блок управления сбросом и синхронизацией RCU, имеющий в своем составе RC-генератор (1 МГц), синтезатор частоты SYSPLL и блок управления системными тактовыми сигналами SCM;
системный блок управления энергопотреблением PMUSYS;
блок управления энергопотреблением в составе с RTC модулем (PMURTC);
блок коммутации AXI AHB;
основная Flash-память объемом 1 Мбайт;
SRAM0 (ОЗУ0) объемом 256 Кбайт;
SRAM1 (ОЗУ1), подключенное к домену батарейного питания, объемом 64 Кбайт;
24-канальный контроллер прямого доступа к памяти DMA;
блок часов реального времени RTC со входами контроля целостности;
датчик температуры TSENSOR;
сторожевой таймер WDT;
независимый сторожевой таймер IWDT;
один 8-канальный 12-разрядный быстродействующий АЦП с режимами цифрового компаратора для каждого из каналов (ADCSAR);
один 8-канальный 16-разрядный сигма-дельта АЦП (ADCSD);
три 16-разрядных порта ввода-вывода A, B, C;
восемь аналоговых входов, подключенных к каналам АЦП (ADCSD и ADCSAR);
один 32-разрядный таймер TMR32;
три 16-разрядных таймеров TMR0 — TMR2;
пять приемопередатчиков UART0 — UART4;
блок криптографии CRYPTO;
два блока вычисления CRC (CRC0, CRC1);
генератор случайных чисел (TRNG);
HASH процессор;
контроллеры интерфейсов:
CAN 2.0b;
USB 2.0 FullSpeed (Device);
один контроллер I2C;
один контроллер QSPI;
два контроллера SPI (SPI0 — SPI1). Особенностью интерфейса SPI является то, что в нем реализована возможность задания полярности и фазы тактового сигнала. Бит SPO регистра CR0 задает полярность тактового сигнала, т. е. определяет, какой уровень сигнала будет удерживаться на линии SPIx_SCK в то время, когда линия не активна.
Есть в микроконтроллере и датчик температуры, позволяющий измерять температуру кристалла во время работы. Внутри находятся элементы, напряжение на которых линейно убывает с ростом температуры (CTAT). В качестве CTAT-элементов используется два последовательно соединенных диода. Выход датчика подключается на вход канала №10 АЦП последовательного приближения.