Иногда простые решения очень выгодны. Большинству приложений, в которых применяются встраиваемые системы, требуется реализовать прохождение множества сигналов или логическое управление. В таких случаях на платы устанавливаются сложные логические блоки. Возникает закономерное желание упростить решение этой задачи. Она решается с помощью микроконтроллеров с функционально гибкой периферией, которая выполняет функции, востребованные в сложных приложениях.
Речь идет о конфигурируемых логических ячейках (Configurable Logic Cell, CLC) в составе периферийных устройств микроконтроллеров PIC от компании Microchip. С помощью этих ячеек, позволяющих реализовать простой интерфейс с микроконтроллером, определяются комбинации сигналов, поступающих на вход ячеек, и организуется выходной логический сигнал для управления другими периферийными устройствами и портами ввода–вывода.
Конфигурируемые логические ячейки поддерживаются конфигуратором MPLAB Code Configurator (MCC). Эта среда позволяет с помощью графического интерфейса пользователя легко перемещать логические элементы, соединяющие входы и выходы, и генерировать Си-код одним щелчком мыши, что значительно упрощает реализацию CLC-модулей.
Не зависящие от ядра периферийные устройства (Core Independent Peripheral, CIP) выполняют свои функции, не используя дополнительного кода и не прибегая к помощи ЦП. Конфигурируемые логические ячейки относятся именно к такой периферии, что упрощает реализацию сложных систем управления и в то же время намного повышает гибкость проектных решений, а также разгружает ЦП, повышая производительность микроконтроллера. Мы покажем, как эти ячейки применяются для определения фазы сигналов, генерации комплементарных сигналов и мониторинга многих других параметров в системе. Можно смело утверждать, что возможности CLC-модулей, обеспечивающих работу с входными, пусковыми и выходными сигналами, безграничны.
Краткое описание CLC-ячеек
CLC-ячейка – конфигурируемое пользователем периферийное устройство, схожее с программируемым логическим устройством (programmable logic device, PLD), но встроенное в микроконтроллер. Внутренние и внешние сигналы от других периферийных устройств или с входа можно представить как входные данные, поступающие в конфигурируемую логическую ячейку. Ячейка выполняет требуемую логическую операцию и выдает выходной сигнал, который используется для управления другими периферийными устройствами или другими портами ввода-вывода.
Конфигурируемая логическая ячейка может принимать сигналы от внутреннего генератора тактовых импульсов, выходные сигналы с других периферийных устройств, в т.ч. от таймера. Определенные сигналы адресуются заданной логической функции через вентильный каскад.
CLC-ячейка поддерживает такие логические функции как AND, OR, NOT, XOR, NAND, NOR и XNOR. В этой ячейке сигналы с вентильного каскада, выполняющего логические операции над данными, поступают на вход каскада, выбирающего логическую функцию. Последний каскад в ячейке определяет полярность выходного сигнала.
CLC-ячейки используются как автономные периферийные устройства для реализации поочередных и комбинационных логических функций, что упрощает срабатывание триггеров события и уменьшает время отклика. Кроме того, эти ячейки применяются с другими периферийными устройствами, расширяя возможности реализации заказных систем со сложным функционалом.
Конфигурируемые логические ячейки позволяют значительно смягчить требования приложения к ширине полосы пропускания ЦП за счет исключения необходимости в использовании ресурсов этого процессора для реализации множества логических функций. Кроме того, CLC-ячейки уменьшают потребности во флэш-памяти и ОЗУ благодаря тому, что не требуют программно-реализованных алгоритмов.
Аппаратно реализованные логические функции ускоряют реакцию на события по сравнению с использованием программно реализованных логических функций. Кроме того, CLC-ячейки поддерживают высокоуровневую интеграцию, для осуществления которой не требуются внешние компоненты, что уменьшает общие размеры печатной платы.
Фазовый детектор
Универсальные функции и простота использования CLC-ячеек расширяет возможности проектирования с использованием микроконтроллеров PIC. В качестве примера, который наглядно демонстрирует возможности конфигурируемых логических ячеек, является функция фазового детектора. Это устройство применяется во многих приложениях, в т.ч. в системах дистанционного измерения. Принцип его работы основан на том, что расстояние, которое проходит РЧ-сигнал до заданного объекта, прямо пропорционально фазовому сдвигу между переданной и принятой волнами. CLC-ячейка используется для измерения разности фаз между двумя сигналами одинаковой частоты. Переданный и принятый сигналы поступают на входы ячейки, а разность фаз между ними на выходе ячейки используется для расчета расстояния до требуемого объекта.
В фазовом детекторе на основе CLC-ячейки применяется функция AND-OR для реализации функции XOR, которая позволяет измерять разность фаз, и логическая функция D-Flip Flop (D-FF) для получения информации об опережении и отставании сигналов. Помимо прямоугольных импульсов имеется возможность измерять фазовую разность между разными типами аналоговых сигналов, в т.ч. синусоидальной формы. На рисунке 1 представлена конфигурация фазового детектора на основе CLC-ячейки.
Рис. 1. Конфигурация фазового детектора на основе CLC-ячейки
Сигналы источника, между которыми требуется измерить разность фаз, поступают в два компаратора, которые сконфигурированы как детекторы пересечения нуля (zero-cross detector, ZCD). Эти детекторы преобразуют входные аналоговые сигналы в прямоугольные сигналы той же частоты. Если же исходные сигналы уже имеют прямоугольную форму, детекторы не применяются. Прямоугольные сигналы поступают в несколько CLC-модулей.
Ячейка CLC1 и периферийный блок захвата входного сигнала определяют величину разности фаз. Ячейка CLC1 сконфигурирована в виде логической функции AND-OR, с помощью которой реализуется функция XOR. Выходной сигнал ячейки CLC1, подвергшийся воздействию функции XOR и предоставляющий информацию о разности фаз между двумя волнами, измеряется с помощью блока захвата входного сигнала.
Чтобы определить информацию об опережении и отставании одного сигнала относительно другого, ячейка конфигурируется в режиме D-FF; при этом один прямоугольный сигнал используется как входной D-сигнал, а второй – как синхросигнал. Высокое или низкое логическое состояние выходного сигнала ячейки CLC2 определяет опережение или отставание входного сигнала D относительно синхросигнала. Измерение фазового угла между двумя сигналами одинаковой частоты используется во многих приложениях, в т.ч. в приборах учета, системах цифрового управления питанием, связи и медицинских измерительных приборах.
Генератор комплементарных сигналов
Конфигурируемые логические ячейки используются также в генераторах комплементарных сигналов (ГКС). Величина мертвого времени между этими сигналами задается с помощью входных тактовых последовательностей. Данный интервал между сигналами предотвращает прохождение сквозного тока в приложениях с источниками питания.
Конфигурируемые логические ячейки позволяют обнаруживать фронты импульсов и прерывания при генерации комплементарных сигналов с помощью модуля захвата, сравнения, ШИМ (SCCP), который выступает в роли источника входного сигнала.
Часто в таких приложениях как управление приводом требуются генераторы комплементарных сигналов, которые управляют работой системы. Модуль множественных операций захвата, сравнения, ШИМ (MSCCP) генерирует комплементарные сигналы с неперекрывающимися сигналами, управляя мертвым временем на своем выходе. В тех случаях, когда приложению требуется больше модулей MSCCP, чем обеспечивает устройство, можно задействовать модули SCCP в комбинации с CLC-ячейками.
CLC-ячейки с модулями SCCP применяются для генерации комплементарных сигналов с заданным мертвым временем, поскольку как таковой модуль SCCP не способен генерировать неперекрывающиеся сигналы.
Мертвое время прибавляется и к выходным сигналам SCCP-модуля, которые выровнены и по фронтам, и по центру. На рисунке 2 представлена конфигурация ячеек CLC1, CLC2 и CLC3, позволяющая управлять мертвым временем выходного сигнала модуля SCCP в режиме выравнивания по фронтам импульсов.
Рис. 2. Пример использования CLC-ячеек в генераторе комплементарных импульсов в режиме выравнивания по фронтам импульсов
Например, полномостовой схемой привода можно управлять с помощью периферийного модуля MCCP, на выходе которого генерируется комплементарный сигнал. Однако если требуется осуществлять управление несколькими такими схемами, а модулей MCCP недостаточно, используются модули SCCP в комбинации с CLC-ячейками.
Многопараметрический мониторинг
Часто приложениям требуется одномоментно осуществлять контроль над многими разными параметрами, к которым относятся температура, давление и влажность. При превышении этими параметрами некоторых пороговых значений происходит срабатывание системы, предотвращающее катастрофический отказ.
В микроконтроллере компаратор применятся в т.ч. для контроля только одного параметра. Выходные сигналы множества компараторов можно объединить с помощью CLC-ячейки для мониторинга нескольких параметров.
Специальные меры принимаются в тех случаях, когда все контролируемые параметры начинают превышать пороговые значения. На рисунке 3 представлена конфигурация CLC-ячейки, которая контролирует два разных параметра.
Рис. 3. Мониторинг нескольких параметров с помощью CLC-ячейки
Поскольку рассматриваемое приложение используется для мониторинга температуры и давления на промышленном производстве, оно приостанавливается в случае превышения порогового значения одним из параметров. Кроме того, эту схему можно применять для контроля над напряжением автономного источника бесперебойного питания.
Выводы
Итак, пользователи могут интегрировать в микроконтроллеры серии PIC простые логические схемы в виде конфигурируемых логических ячеек. Комбинирование выходных сигналов разных внешних устройств расширяет возможности имеющейся периферии и, следовательно, того множества приложений, в которых она используется.
Поскольку у аппаратно реализованных логических функций более быстрый отклик на событие, чем у программно реализованных, CLC-ячейки позволяют повысить производительность всей системы в целом. Кроме того, эти ячейки обеспечивают более высокий уровень интеграции, исключая необходимость во внешних логических вентилях и, соответственно, в ряде компонентов, что, в конечном итоге, уменьшает размеры печатных плат. Конфигурируемые логические ячейки позволяют комбинировать разные входные сигналы источников с помощью логических вентилей и генерировать совершенно разные сигналы.
Все упомянутые конфигурируемые входные, выходные сигналы и логические функции легко реализуются с помощью конфигуратора MPLAB Code Configurator на базе графического пользовательского интерфейса, генерирующего Си-код для разрабатываемого приложения.