Рассмотрим новинку отечественных ученых — ультранизкопотребляющий 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 АЦП последовательного приближения.