Рассмотрим новинку отечественных ученых — ультранизкопотребляющий 32-разрядный микроконтроллер. Отличительными особенностями этой разработки является сочетание производительности, функциональности и потребляемой мощности. Микросхема К1921ВГ015 представляет собой СБИС 32-разрядный микроконтроллер, предназначенный для промышленных и потребительских приложений, включая системы дистанционного мониторинга, контрольно-измерительные приборы, системы автоматизации производственных процессов, автомобильную электронику, а также устройств с батарейным питанием. Изделие оснащено широким набором цифровой и аналоговой периферии, благодаря чему, может применяться в различных процессах цифровой обработки сигналов, в том числе, требующих точных аналогово-цифровых преобразований, в системах управления и сбора информации. Микроконтроллер К1921ВГ015 спроектирован на базе RISC-V ядра ВМ-310S6, поддерживающего систему команд RVB32IMFCN_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.  Помимо этого, предусмотрено два способа перехода в режим пониженного энергопотребления.  Все выводы микроконтроллера по их функциональному назначению, организованы в группы:  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 АЦП последовательного приближения.