Данная публикация продолжает цикл статей, посвященных новому отечественному 32-разрядному радиационно-стойкому микроконтроллеру 1874ВЕ10Т, создаваемому в АО «НИИЭТ», базирующемуся на оригинальной системе команд и разрабатываемому в рамках ОКР, проводимой Министерством промышленности и торговли РФ (шифр: «Обработка-28»). В предыдущей статье («Компоненты и технологии» No 2’2016) рассказывалось об особенностях процессорного ядра и подсистемы прерываний. В новой статье предложен обзор периферии микроконтроллера.
И. Потапов, В. Смерек, В. Тарасов
smerek@niiet.ru
Новое 32-разрядное ядро МК 1874ВЕ10Т определяет дальнейшие пути развития периферии микроконтроллера. Отдельные модули, такие как порты SpaceWire и МПИ (магистральный последовательный интерфейс, ГОСТ Р 52070-2003), заняли прочное место в семействе радиационно-стойких микроконтроллеров АО ≪НИИЭТ≫ серии 1874, впервые появившись в 16‑разрядной СБИС 1874ВЕ7Т [1]. Другие модули — контроллеры интерфейсов I²C, SPI и АЦП — являются уже традиционными для данного семейства, поэтому для МК 1874ВЕ10Т были сделаны их модификации с 32‑разрядным доступом к регистрам. Некоторые периферийные устройства, в частности порты общего назначения, модуль высокоскоростного ввода/вывода HSIO, порт UART, а также блок ШИМ, потребовали кардинальных изменений, чтобы соответствовать возможностям новой архитектуры. Также в ИМС появились и новые для семейства периферийные модули — блоки квадратурных импульсных декодеров и контроллер интерфейса ARINC429.
Структурная схема микроконтроллера показана на рис. 1.
В своем составе микроконтроллер содержит следующие функциональные элементы (рис. 1):
• CISC-микропроцессорное ядро с поддержкой однотактных 8/16/32-разрядных RISC-команд и дополнительных команд для работы с 32-разрядными данными с тактовой частотой до 66 МГц;
• блок вычислений с плавающей запятой (FPU) одинарной и двойной точности;
• восемь параллельных 8-разрядных портов ввода/вывода;
• два блока регистрового ОЗУ объемом по 16К х 8 каждый с защитой кодом Хэмминга (исправление одной ошибки в байте с генерацией прерывания по ошибке);
• внутреннее ОЗУ команд объемом 4К х8 (PSRAM) с защитой кодом Хэмминга;
• доступное адресное пространство 4 Гбайт;
• динамически конфигурируемую 8/16/32- разрядную внешнюю шину команд/данных с защитой кодом Хэмминга (IEMH, IEML, IEMECC);
• контроллер прерываний;
• сервер периферийных транзакций PTS с двумя режимами приоритетов — ядра и PTS;
• два 64-разрядных таймера/счетчика;
• 16-канальный 14-разрядный аналого-цифровой преобразователь;
• 6-канальный блок ШИМ;
• блок высокоскоростного ввода/вывода HSIO;
• два блока импульсных квадратурных декодеров (QEP);
• четыре последовательных приемопередатчика UART;
• контроллеры интерфейсов:
– ARINC 429;
– I²C;
– SPI (два);
– SpaceWire (два);
– МПИ (ГОСТ Р 52070-2003) с отдельными входами задания адреса (два);
• модуль отладки DEBUG UNIT с доступом через JTAG;
• программируемый 32-разрядный сторожевой таймер;
• два режима пониженного энергопотребления (Idle, PowerDown);
• режим электрической изоляции (Once).
Особенности нового процессорного ядра, подсистемы выборки команд, возможности адресного пространства и работа с прерываниями 1874ВЕ10Т были подробно рассмотрены в [2].
Микроконтроллер обладает усовершенствованной относительно семейства 1874 подсистемой управления двигателями. СБИС содержит три 2-канальных блока ШИМ, объединенных схемой синхронизации, которые формируют один общий 6-канальный блок.
Каждый из трех блоков ШИМ поддерживает следующую функциональность:
• 16-разрядный таймер;
• два вывода PWM_A и PWM_B, которые могут работать в режиме фронтовой
и центрированной модуляции как полностью независимо, так и комплементарно с разделением генератором “мертвого времени”;
• выходы PWM_A и PWM_B могут управляться в зависимости от событий цифровых компараторов блока АЦП, а также от событий блока аналоговых компараторов, обеспечивая автоматический релейный режим поддержания заданной величины;
• программное управление выходами ШИМ;
• программное задание фазы счетчиков таймера для координации работы нескольких блоков ШИМ;
• аппаратный контроль фазы при координации работы блоков ШИМ;
• предотвращение наложения фронтов за счет генератора “мертвого времени” с независимой схемой задержки переднего и заднего фронтов выходного сигнала;
• сигнал аварии может переводить выводы PWM_A и PWM_B в высокое, низкое или Z-состояние;
• однократная и циклическая обработка сигналов аварии;
• все события могут инициировать прерывания;
• при обработке прерываний программируемый предделитель событий позволяет снизить нагрузку на процессор;
• ШИМ-сигнал может модулироваться высокочастотным сигналом при использовании драйверов ключей с импульсным трансформатором.
В микроконтроллере реализовано два независимых модуля импульсных квадратурных декодеров (QEP), во многом аналогичных декодерам, которые использованы в другом изделии АО ≪НИИЭТ≫ — К1921ВК01Т [3]. Квадратурный декодер преобразует цифровой сигнал с датчика положения вала, позволяя вычислять скорость, направление вращения, а также текущее положение вала. Наличие квадратурных декодеров, совместно с ШИМ и АЦП в кристалле, дает возможность управлять электродвигателями.
Микроконтроллер поддерживает большое количество протоколов обмена информацией. В своем составе содержит следующие типы портов ввода/вывода: UART, SPI, ARINC 429, I2C, SPI, SpaceWire, МПИ (по ГОСТ Р 52070-2003).
Контроллер магистрального последовательного интерфейса (МПИ), реализующий алгоритм работы по ГОСТ Р 52070-2003, имеет два полностью идентичных канала приема/передачи — основной и резервный. Модуль функционирует в одном из трех режимов: контроллер шины, удаленный терминал и монитор шины. Контроллер шины является ведущим устройством. Он единственный инициирует любой обмен информацией и контролирует работу сети. Может обращаться к любому из удаленных терминалов (максимальное количество — 31), каждому из которых присвоен уникальный 5-битный адрес. Монитор шины — пассивное устройство, подключенное к шине данных и занимающееся только отслеживанием и записью передаваемой по шине информации.
В МК реализована также память сообщений контроллера МПИ, имеющая защиту кодом Хэмминга с генерацией прерывания по ошибке. Объем памяти составляет 4 кбайт, она может быть использована как дополнительное внутреннее ОЗУ.
Контроллер интерфейса SpaceWire обеспечивает взаимодействие микроконтроллера с другими устройствами как посредством подключения к сети, так и напрямую по одноименному протоколу.
Особенности модуля последовательного интерфейса SpaceWire:
• возможность взаимодействия с устройствами, функционирующими на частоте, отличной от частоты работы модуля;
• 13 источников прерываний и возможность их выборочного включения;
• встроенные FIFO-буферы на прием и передачу;
• контроль состояний FIFO-буферов;
• возможность упрощенной отправки кодов времени;
• возможность корректировки временных соотношений состояний модуля;
• контроль паритета.
Контроллер интерфейса ARINC429 имеет восемь внутренних блоков, которые можно сконфигурировать либо как передатчик, либо как приемник.
В режиме передатчика есть следующие особенности:
• передающий буфер на 128 слов;
• возможность включения автоматического вычисления четности;
• автоматическая вставка межсимвольного интервала в 4 бит.
В режиме приемника:
• приемный буфер на 128 слов;
• буфер на 32 метки;
• включаемая фильтрация принимаемых слов по меткам;
• включаемая фильтрация по полю SDI;
• включаемый контроль четности принятого сообщения.
ARINC429 определяет две скорости передачи данных. Низкая скорость установлена как 12,5 кГц, с разрешенным отклонением в 12–14,5 кГц. Высокоскоростной режим работы составляет 100 кГц с ±1%-ным отклонением.
В новом МК продолжают свое развитие последовательные приемопередатчики UART, контроллеры интерфейсов I^2C и SPI [4].
В состав микроконтроллера входят четыре идентичных универсальных асинхронных приемопередатчика — UART0, UART1, UART2, UART3. Один из них (UART0) расширен функционалом управления модемом. В состав приемопередатчика включен кодек (ENDEC — ENcoder/DEcoder) последовательного интерфейса инфракрасной (ИК) передачи данных в соответствии с протоколом SIR (SIR — SerialInfraRed) ассоциации InfraredDataAssociation (IrDA). Также в составе приемопередатчика предусмотрено два буфера типа FIFO. Буфер приемника имеет разрядность 12, буфер передатчика — разрядность 8. Каждый буфер может хранить до 32 байт данных и программно конфигурируется как 32-байтный или как однобайтный.
Модуль контроллера I^2C обеспечивает полную поддержку двухпроводного последовательного синхронного интерфейса I^2C/SMBus. Результат такой совместимости — легкое соединение со многими запоминающими устройствами и устройствами ввода/вывода, включая счетчики, АЦП, периферийные устройства.
Контроллер интерфейса SPI реализует интерфейс последовательной синхронной связи в режиме ведущего (мастера) и ведомого устройства и обеспечивает обмен данными с подключенным ведомым или ведущим периферийным устройством в соответствии с одним из трех протоколов фирм Motorola, National Semiconductor, Texas Instruments. Последовательный синхронный интерфейс SPI фирмы Motorola обеспечивает полнодуплексный обмен данными по четырехпроводной линии и программное задание фазы и полярности тактового сигнала. Интерфейс Microwire фирмы National Semiconductor поддерживает полудуплексный обмен данными с помощью 8-битных управляющих последовательностей. Интерфейс SSI фирмы Texas Instruments реализует полнодуплексный обмен данными по четырехпроводной линии и возможность перевода линии передачи данных в третье (высокоимпедансное) состояние.
Два системных таймера, синхронизирующихся сигналом системной тактовой частоты, в новой версии представлены 64-разрядными счетчиками. Эти счетчики имеют функции обнуления при достижении требуемого значения и отличаются источником счетных импульсов: один счетчик тактируется сигналом, активным в режиме IDLE, другой — сигналом, который в режиме IDLE не переключается. Сторожевой таймер представлен 32-разрядным счетчиком, способным переключаться с частотой внутреннего синхросигнала микроконтроллера SysCLK или частотой внешнего синхросигнала (асинхронного по отношению к SysCLK).
Модуль отладки DEBUG UNIT предназначен для упрощения отладки программного обеспечения пользователя и для контроля хода выполнения программы, имеет возможность доступа через JTAG-порт. Особенностью данного модуля является наличие специального внешнего сигнала, блокирующего перевод ядра в режим останова. В случае если этот сигнал находится в активном состоянии, никакой командой JTAG-порта (непосредственный останов, останов по условию) невозможно прервать выполнение программы, в то время как команды чтения ячеек памяти или регистров выполняются без ограничений. Это позволяет проводить мониторинг состояния каких-либо переменных в пользовательской программе через интегрированную среду разработки без риска остановить процессор.
Аналоговая подсистема контроллера представлена 16-канальным 14-разрядным АЦП. Во многом она аналогична системе контроллера 1874ВЕ7Т. Аналого-цифровой преобразователь реализован по схеме последовательного приближения и может быть запрограммирован на работу в режиме однократного/непрерывного преобразования выбранного канала или в режиме последовательного сканирования каналов. АЦП преобразует аналоговые уровни напряжений на входе в цифровые значения в режиме однополярного/дифференциального включения входов.
Параллельные порты ввода/вывода
В составе микроконтроллера есть восемь 8-разрядных портов ввода/вывода: A0, A1, A2, A3, B0, B1, B2, B3. Порты A0–A3 могут объединяться в канал A разрядностью до 32, аналогично порты B0–B3 могут образовывать канал B и обслуживаться 32-разрядными регистрами, при этом соблюдается принципиальная возможность легкой настройки каждого отдельного вывода. Таким образом, можно работать с портами в разных представлениях, то есть не только как с 8-разрядными, но и как с четырьмя 16-разрядными или двумя 32-разрядными портами.
Каждый вывод цифрового порта имеет схемы подтяжки PullUp и PullDown (которые подключаются и отключаются программно) и может функционировать в режимах c открытым стоком и PushPull. По умолчанию, если вывод действует как выход, он работает в режиме PushPull. Вывод порта может иметь до четырех дополнительных альтернативных функций. После сброса все выводы порта конфигурируются как выводы общего назначения и находятся в третьем состоянии.
Входной сигнал после схемы управления может передаваться для дальнейшей обработки как напрямую (асинхронный вход), так и через цифровой фильтр (рис. 2). Фильтр позволяет синхронизировать входной сигнал с тактовой частотой работы микроконтроллера. Дополнительно есть возможность использования схемы накопления трех или шести отсчетов входного сигнала для помехоустойчивости вывода (блок дискретизации с блоком сравнения). Количество отсчетов задается регистром QM. Если результаты всех отсчетов совпадают, сигнал передается дальше по схеме, в противном случае состояние выхода блока сравнения не меняется. Временной интервал между отсчетами задается в количестве тактов системной частоты регистром QPAD, который в отличие от остальных является регистром порта, а не отдельного вывода, поэтому временной интервал задается один для всех выводов порта. Для подключения схемы накопления отсчетов используется регистр QE.
Данные для передачи записываются в регистр DATAOUT, изменение состояния которого незамедлительно влияет на выводы порта. Регистр DATALOCK позволяет закрыть доступ для записи к любым битам регистра DATAOUT. Состояние бит, закрытых единицами, не может быть изменено. Для возобновления доступа к битам регистра DATAOUT следует сбросить соответствующие биты регистра DATALOCK.
Кроме блокировки данных от изменения, доступна возможность с помощью регистра CFGLOCK побитной блокировки регистров конфигурации порта — другими словами, можно настроить каждый пин порта и заблокировать изменения настроек для каждого отдельного вывода.
Блок прерываний позволяет формировать прерывания по аппаратным событиям и программно. Источником прерывания является сигнал на выходе мультиплексора, который управляется регистром SE. Изменения сигнала на выводе порта всегда передаются на вход блока прерываний (рис. 3). Прерывания настраиваются по уровню или по фронту. Сигнал в блок прерываний также проходит и через фильтр. Прерывание можно включить для вывода порта, даже если этот вывод работает как выход порта или как альтернативная функция. На прерывания можно влиять программным подключением схемы PullUp или PullDown. Всего доступно 16 линий прерывания, они общие для всех параллельных портов микроконтроллера.
Для управления состоянием выводов порта дополнительно используется механизм маскирования. Он разрешает устанавливать желаемый уровень сигнала на нужном выводе, не затрагивая состояние других выводов.
32-разрядный порт условно разбит на четыре части — первый, второй, третий и четвертый байты. Для каждого байта имеется массив из 8-разрядных регистров, представляющий собой набор масок: 00h, 01h, 02h и т. д. до FFh (всего 256 масок). Таким образом, каждый порт имеет четыре набора масок. Механизм маскирования может быть применен и к полученным данным, расположенным в регистре DATAIN (регистр чтения данных из порта), и упрощает программную реализацию проверки состояния отдельных бит в полученном байте или слове данных.
Блок высокоскоростного ввода/вывода
Единый модуль HSIO представлен модулем высокоскоростного ввода HSI и модулем высокоскоростного вывода HSO.
Основным назначением модуля HSI является мониторинг состояния своих выводов HSI.0–HSI.15 и фиксирование времени обнаружения до 128 запрограммированных событий с использованием таймера с возможностью последующей выдачи сохраненной информации.
Таким образом реализовано 16 каналов захвата модуля HSI. Для каждого канала независимо может быть задан один из 16 возможных режимов мониторинга состояния соответствующего вывода. Например, детектирование каждого положительного и/или отрицательного фронта входного сигнала или каждого второго/четвертого/шестого или восьмого фронта в различных комбинациях. Как только на выводе (в канале) обнаруживается запрограммированное событие, в накопительный буфер FIFO загружается 32-разрядное значение таймера TIME (время события), 2 бит индикатора типа события EV и 4-битный номер канала CHAN. Время загрузки в FIFO составляет один такт сигнала CLOCKOUT. Если два события обнаруживаются одновременно, они записываются с одинаковыми временами.
Модуль HSI способен функционировать в двух режимах: в режиме FIFO и режиме постраничного анализа. В режиме FIFO чтение накопительного буфера реализуется через регистр HSIFIFOPORT, при этом подразумевается непрерывное использование модуля, когда программа отслеживает состояние FIFO с помощью прерываний. Режим постраничного анализа осуществляется остановкой модуля после заполнения буфера, затем регистры накопительного блока читаются программой не через регистр HSIFIFOPORT, а непосредственно по адресам в общем адресном пространстве. После этого необходимо очистить буфер и можно снова выполнять анализ.
На модуль HSI приходится одна линия прерываний (int7), на которую можно подключить до четырех прерываний модуля. Одно из прерываний — переполнение таймера, остальные три занимаются обслуживанием FIFO.
Основное назначение модуля HSO — сравнение запрограммированного значения/значений времени с текущим значением подключенного таймера и выполнение заданной команды (нескольких команд) при их совпадении. Реализуя заданные команды, модуль HSO может не только управлять своими выходами HSO.0–HSO.15, но и формировать независимые импульсные последовательности.
Основным блоком модуля HSO является ассоциативное запоминающее устройство (АЗУ) для 128х39-разрядных расширенных слов. Каждое слово АЗУ содержит 32-разрядное значение времени TIME для задания момента выполнения команды, 4 бит — номер канала CHAN, 2 бит команды EV и 1 бит сохранения записи M. Бит M позволяет зафиксировать команду в АЗУ, в результате чего команда выполняется столько раз, сколько таймер будет достигать значения времени выполнения. Незафиксированная команда выполняется лишь один раз, затем ячейка АЗУ, где размещалась команда, будет полностью очищена и готова для загрузки нового слова.
В зависимости от выполняемой команды (команд) модуль HSO может оказывать влияние на свои выходы HSO.0–HSO.15 — какой именно выход будет задействован, определяется полем CHAN регистров АЗУ.
Влияние заключается в том, что на этих выходах модуль устанавливает высокий и низкий уровни сигнала, а также можно переключить вывод в третье состояние (Z-состояние). Поле EV задает уровень сигнала, который будет установлен на выходе/выходах в результате выполнения команды.
Каждой команде в АЗУ соответствует определенное значение времени, при этом несколько команд могут иметь одинаковые значения. Если несколько команд с одинаковым значением времени и одинаковым выбранным каналом в поле CHAN имеют разные значения в поле EV, то соответствующий вывод не изменит своего текущего состояния, а в регистре HSOCON будет активным флаг FERR.
Два прерывания по обслуживанию таймера и одно прерывание по обнаружению ошибки приходятся на одну линию int8. Кроме того, для каждого из этих событий программируется возможность останова модуля при наступлении события.
Выводы
МК 1874ВЕ10Т — новая ступень развития целевого семейства микроконтроллеров, выпускаемых АО “НИИЭТ”. Принципиально иная архитектура ядра и развитая периферия определяют дальнейшие перспективы применения этой ИС. В настоящее время опытные образцы микроконтроллера готовятся к запуску в производство. СБИС будет изготавливаться на отечественном кремниевом предприятии — АО “НИИМЭ”. Опытные образцы микроконтроллера будут доступны заинтересованным предприятиям во втором квартале 2017 года. В это же время планируется выпуск первой версии интегрированной среды разработки и технического описания микросхемы.
Литература
- Крюков В., Смерек В., Шеховцов Д., Горохов В.
Радиационно-стойкие 16-разрядные микроконтроллеры 1874ВЕ7Т и 1887ВЕ6Т // Электронные компоненты. 2014. № 5. - Потапов И., Смерек В. Новая микроконтроллерная архитектура для космических применений // Компоненты и технологии. 2016. № 2.
- Анучин А., Жарков А., Козаченко В., Лашкевич М., Потапов И. Отечественный микроконтроллер К1921ВК01Т для управления электродвигателями // Электроника НТБ. 2016. № 1.
- Смерек В., Потапов И., Крюков В., Горохов В. Первый отечественный 16-разрядный микроконвертер на базе MCS-96 // Электронные компоненты. 2010. № 12.