Встраиваемому контроллеру не всегда нужен центральный процессор


PDF версия

В статье рассмотрен подход к построению интеллектуальной периферии микроконтроллера (МК) с помощью программируемого логического устройства (ПЛУ) и тракта обработки данных, что позволяет разгрузить центральный процессор от ряда задач и повысить эффективность и надежность системы.

В большинстве микроконтроллерных архитектур интеллектуальный центральный процессор окружен набором относительно «глупой» периферии. Периферия имеет ограниченные функции, обычно она просто преобразует данные из одной формы в другую. Например, I2C-периферия, по сути, преобразует данные из последовательного формата в параллельный, а АЦП преобразует сигналы из аналоговой формы в цифровую. Центральный процессор должен заниматься обработкой данных и выполнять какие-либо полезные функции. Такая большая нагрузка, а также необходимость управления периферией, приводит к тому, что для процессора требуется слишком сложное встроенное программное обеспечение (ПО), а также применение быстродействующего и мощного процессора для исполнения микропрограмм в жестком режиме реального времени.
Но что, если бы периферия была достаточно развитой, гибкой, чтобы эффективно выполнять ряд задач, которые прежде вынужден был делать центральный процессор? Сложную архитектуру можно было бы преобразовать в группу сравнительно простых блоков, распределенных между центральным процессором и периферией. Общая архитектура стала бы более надежной, а блоки системы проще было бы использовать повторно. Наконец, центральный процессор, который должен выполнять меньше заданий, может работать с меньшей скоростью, что экономит энергию, или его полоса пропускания могла бы быть использована для выполнения новых дополнительных заданий. В данной статье показано, как можно спроектировать интеллектуальную, гибкую, недорогую, заказную цифровую периферию МК, а также сконфигурировать ее при реализации надежной распределенной системы.

Программируемая логика или тракт обработки данных?

Имеется два пути создания интеллектуальной конфигурируемой периферии. Первый — это использование ПЛУ. Как показано на рисунке 1, ПЛУ содержит матрицу логических элементов, выполняющих логическую функцию суммы произведений, и управляющую набором макроячеек. Обозначения «T» и «C» на рисунке показывают, что каждый терм произведения может генерировать либо истинный (true), либо дополняющий (complement), т.е. инвертированный выход, так что может поддерживаться как положительная, так и отрицательная логика.

Рис. 1. Пример 12-входного ПЛУ с 8 термами произведения и 4 макроячейками

Рисунок 1 показывает простой пример ПЛУ. Программируемые логические устройства могут иметь сотни макроячеек и до 16 термов произведения, управляющих каждой макроячейкой. Вентили И и ИЛИ в термах произведения могут быть соединены так, чтобы можно было сформировать конфигурируемые логические функции. Макроячейки, как правило, тактируются, и их выходы могут быть переданы по обратной связи в матрицу термов произведения. Это позволяет создавать конечные автоматы (машины состояний).
Крупные ПЛУ могут быть использованы для формирования сложных логических функций, вплоть до создания центральных процессоров и, конечно, для создания интеллектуальной цифровой периферии. Однако для реализации даже простых логических элементов, таких как счетчики и сумматоры, может понадобиться множество вентилей, а создание более сложных функций на базе ПЛУ может стать слишком дорогостоящим. В определенный момент более эффективным решением становится использование центрального процессора.
Весьма простым видом такого процессора является тракт обработки данных на базе арифметико-логического устройства (АЛУ), также известного как нанопроцессор. Тракт обработки данных реализует всего несколько простых функций, но делает это более эффективно, чем при использовании ПЛУ. На рисунке 2 показан простой тракт обработки данных с АЛУ.

Рис. 2. Простой пример тракта обработки данных на базе АЛУ с аккумуляторами, блоком выбора функций, тактовым сигналом, сигналом переноса и сигналом сдвига для последовательного соединения

Типовое АЛУ может выполнять разные операции (обычно с использованием 8-битовых операндов). Оно выполняет счет в прямом (инкремент) и обратном (декремент) порядке, складывает, вычитает, выполняет логические операции (И, ИЛИ, исключающее ИЛИ), выполняет сдвиг влево и вправо. В схеме имеются два 8-битовых аккумулятора, которые могут действовать либо как регистры входных данных, либо как память для хранения выхода АЛУ. Каждая операция выполняется по фронту входного тактового сигнала. Регистр выбора функций используется для контроля:
– вида выполняемой операции;
– исходных регистров для этой операции;
– регистра назначения для выходных данных.
В зависимости от конфигурации тракта обработки данных имеется возможность создавать последовательность сложных операций, как показано в таблице 1.

Таблица 1. Примеры функций тракта обработки данных, реализованных с помощью битов выбора функций

Биты выбора функций

Функция

Операция: инкремент

Регистр источника: A0

Регистр назначения: A1

A1 = A0 + 1

Операция: вычитание A0 – A1

Регистры источника: A0, A1

Регистр назначения: A0

A0 = A0 – A1

Операция: сдвиг вправо

Регистр источника: A0

Регистр назначения: A0

A0 = A0 >> 1

Блок выбора функции может, в действительности, быть небольшой по объему памятью SRAM, в которую предварительно загружены необходимые биты выбора функции, а адресные строки могут быть использованы для выбора операции, которую необходимо выполнить. Наконец, несколько трактов обработки данных могут быть соединены цепочкой с помощью сигналов переноса и сдвига, так что операции могут выполняться на многобитовых операндах.
Поскольку тракт обработки данных выполняет всего несколько определенных функций, можно оптимизировать его конфигурацию так, чтобы сделать его эффективным и недорогим. Однако тракт обработки данных не настолько гибок, как ПЛУ, для реализации сложной логики. Так какой же путь лучше для создания интеллектуальной, гибкой, недорогой цифровой периферии — на базе ПЛУ или на базе тракта обработки данных? Ответ заключается в том, что каждый из этих методов не работает достаточно хорошо без другого, но вместе они могут работать весьма эффективно. Рассмотрим практические примеры их реализации.


Универсальные цифровые блоки

Примером систем, использующих как ПЛУ, так и тракт обработки данных, являются программируемые системы на кристалле PSoC 3 и PSoC 5 от Cypress Semiconductor. Каждая из этих систем содержит до 24-х цифровых логических подсистем, которые называют универсальными цифровыми блоками (УЦБ), блок-схема которых показана на рисунке 3. УЦБ содержит два ПЛУ, конфигурация которых показана на рисунке 1. УЦ, кроме того, содержит тракт обработки данных, а также регистры состояния и управления. Имеются два канала, которые можно соединять последовательно, один — для ПЛУ, а другой — для тракта обработки данных. Наконец, имеется трассировочный канал для передачи сигналов между подсистемами УЦБ, а также между УЦБ. Конфигурирование ПЛУ, тракта обработки данных и трассировочного канала выполняется с помощью записи в регистры конфигурации УЦБ (на рисунке не показаны).

Рис. 3. Блок-схема универсального цифрового блока (УЦБ)

Конфигурация ПЛУ для УЦБ была описана на рисунке 1. Как показано на рисунке 4, тракт обработки данных УЦБ подобен базовой концепции тракта обработки данных, показанной на рисунке 2, но он более сложно организован — в нем содержится больше регистров и больше функций:
– 8-битовый АЛУ может выполнять все семь базовых функций — счет в прямом направлении (инкремент), счет в обратном порядке (декремент), сложение, вычитание, логические операции (И, ИЛИ, исключающее ИЛИ) — и имеет отдельные блоки сдвига и битового маскирования для последующей обработки результата АЛУ. (Восьмая функция АЛУ передает значение из АЛУ в блоки сдвига и битового маскирования.) Блок сдвига может выполнять сдвиг влево, сдвиг вправо, обмен полубайтов и пересылку. Блок маскирования выполняет побитовую операцию И с содержимым отдельного регистра маски (на рисунке не показан);
– операции могут быть выполнены с использованием двух аккумуляторов (A0, A1) и двух регистров данных (D0, D1). Доступны два FIFO-регистра (F0, F1) для передачи данных между трактом их обработки и центральным процессором. FIFO имеют глубину до 4 бит. Такая структура обеспечивает простой режим многозадачности, в разные моменты времени над рядом регистров могут выполняться отдельные операции. Поэтому, например, A0, D0 и F0 могут быть использованы для одной задачи, а A1, D1 и F1 — для другой;
– к аккумуляторам и регистрам данных может быть применен обширный набор условий состояния — сравнение, детектирование нуля, детектирование всех единиц и детектирование переполнения. Эти условия могут быть переданы в другие узлы устройства.

Рис. 4. Блок-схема тракта обработки данных УЦБ

Гибкая трассировка

Хотя УЦБ характеризуются большим набором функций в ПЛУ и тракте обработки данных, особую ценность они имеют за счет расширенных возможностей по цифровой трассировке. Сигналы могут быть разведены в ПЛУ и тракте обработки данных по всему набору универсальных цифровых блоков и по всему устройству, формируя сложную коммутирующую матрицу, называемую цифровой системной шиной межсоединений (Digital System Interconnect — DSI). 

Примеры

В базовом примере будем использовать тракт обработки данных УЦБ для создания 8-битного счетчика с возможностью перегрузки. Для этого соединим один выход условия состояния с адресной строкой управляющей SRAM, как показано на рисунке 5.

Рис. 5. Тракт обработки данных УЦБ сконфигурирован как счетчик с перегрузкой

В данном примере A0 — это регистр счетчика, а D0 — регистр перегрузки. Нам нужны две функции, одна — для декремента счетчика, а другая — для перегрузки счетчика из регистра паузы. Эти функции предварительно загружены в управляющую RAM.
Логика работы: когда A0 не равен нулю, на выходе условия будет низкий уровень, и будет исполняться операция декремента по адресу 0. Когда A0 равен нулю, на выходе условия будет высокий уровень, и будет исполняться операция перегрузки по адресу 1.
Все операции выполняются по нарастающему фронту тактового сигнала на входе, позволяя подсчитывать количество импульсов тактового сигнала. Тактовый сигнал можно взять из разных узлов системы. Выход условия можно развести по всей шине DSI, в том числе до входов DMA и входов запроса прерывания. Используя последовательное соединение тракта обработки данных и блок маски, разрядность этого счетчика можно сделать любой и не обязательно кратной восьми битам.
Счетчик, показанный на рисунке 5, является вычитающим счетчиком. Его легко можно преобразовать в суммирующий счетчик, используя другой выход условия (A0 = D0) и другие функции в управляющей SRAM: A0 = A0 + 1 и A0 = A0 XOR A0. Выполнение логической операции исключающего ИЛИ любого значения с самим собой в результате дает ноль.
Эта простая схема может быть расширена с использованием ПЛУ для создания более сложного приложения. Для иллюстрации этой возможности рассмотрим контроллер светофора. Контроллер светофора осуществляет циклическое переключение между тремя состояниями — «зеленым», «желтым» и «красным» — следовательно, требуется использовать машину состояний (конечный автомат). Каждое состояние продолжается определенный интервал времени перед изменением следующего состояния, поэтому нужен также счетчик. Для простоты предположим, что длительность «зеленого» состояния равна длительности «красного» состояния, но длительность «желтого» состояния отличается от них.
Для реализации такой временной структуры нужен только один тракт обработки данных (в допущении, что используются 8-битовые значения счетчика) и три регистра тракта обработки данных. A0 — это регистр счета, D0 содержит значение счетчика при перегрузке для «зеленого» и «красного» состояний, а D1 — значение счетчика при перегрузке для «желтого» состояния. Блок-схема показана на рисунке 6.

Рис. 6. Блок-схема контроллера светофора, использующего ПЛУ и тракты обработки данных УЦБ

Операции, которые нужно сохранить в управляющей RAM:

A0 = A0 — 1 // счет
A0 = D0         // загрузка значения «зеленый» или «красный»
                       // величина счета
A0 = D1         // загрузка значения «желтый».
Машина состояний реализуется в ПЛУ. Выход условия тракта обработки данных поступает по обратной связи в ПЛУ и показывает, что наступил момент изменить состояние. ПЛУ также имеет логику, которая на основе текущего состояния и сигнала обратной связи от тракта обработки данных, управляет тем, какую операцию тракта обработки данных выполнять, и какой сигнал светофора активировать.

Дополнительные возможности

Контроллер светофора — это простое приложение, которое обычно реализуется с помощью центрального процессора. Однако мы убедились, что за исключением кода инициализации, эта функция может быть совершенно независима от центрального процессора и фактически инкапсулирована в интеллектуальную конфигурируемую периферию. Возможности такой конфигурации можно легко расширить для поддержки дополнительных функций, таких как управление сигналами указателя поворота, разрешающими сигналами для пешехода, датчиками детектирования транспорта и аварийными транспондерами.

Что остается для центрального процессора?

Используя эффективную комбинацию ПЛУ и тракта обработки данных, можно создать интеллектуальную, гибкую, недорогую периферию, которая берет на себя часть нагрузки центрального процессора. Однако если так много функций передается периферии, что остается центральному процессору? Во многих случаях после инициализации системы центральный процессор может быть отключен. Однако более реальным решением является использование процессора для тех задач, которые он делает лучше всего, а именно:
– сложные вычисления;
– обработка текстов и строк;
– управление базой данных;
– управление коммуникациями;
– управление системой.
Например, в рассмотренном приложении светофора, центральный процессор можно использовать для:
– детектирования момента, когда транспортное средство проезжает на красный свет;
– управления фотокамерой для фотографирования номерного знака;
– извлечения текста, изображенного на номерном знаке, с фотографии;
– поиска владельца транспортного средства в государственной базе данных;
– пересылки квитанции на уплату штрафа за нарушение правил уличного движения владельцу транспортного средства.
Благодаря передаче части заданий интеллектуальной периферии МК центральный процессор освобождается для других, возможно, более полезных задач.

Литература
1. Mark Ainsworth. Why your embedded controller may not need a CPU//www.eetimes.com.

 

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *