KEEN SIDE успешно заменяет аналогичные продукты таких известных брендов, как Phoenix Contact, Weidmueller, Degson, Winstar, Hsuan Mao, KLS, G-NOR, Mean Well и др.
РадиоЛоцман - Все об электронике

Динамическое реконфигурирование микроконтроллера позволяет использовать более 100% его аппаратных ресурсов

Cypress PSoC

Журнал РАДИОЛОЦМАН, июль 2013

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Sachin Gupta, Cypress Semiconductor

Electronic Design

Реконфигурирование аналоговых блоков и цифровой логики в процессе работы микроконтроллера может позволить использовать более 100% доступных аппаратных ресурсов, сократив объем и стоимость системы

Когда сталкиваются с проблемой разработки системы, которая должна выполнять множество задач, быть компактной и максимально энергоэффективной, весьма интересную возможность использования аппаратных ресурсов более чем на 100% предоставляет динамическое реконфигурирование. Представим торговый автомат, который, выполняя основную функцию принятия денег и выдачи товара, должен периодически обмениваться данными с центральным процессором. При использовании динамической реконфигурации тот же набор цифровых ресурсов, который в момент торговли настроен на выполнение функций таймеров/счетчиков, может быть сконфигурирован как блок UART и ШИМ для задания скорости передачи во время обмена с хост-процессором.

Динамическое изменение конфигурации может быть реализовано практически в каждом приложении, которое в разное время выполняет различные задачи. К примеру, если портативная радиостанция в каждый момент времени передает данные только в одном направлении, динамическая реконфигурация управляющего микроконтроллера позволит реализовать более компактное устройство. Портативные аппараты для продажи билетов могут управлять схемой заряда аккумуляторов, используя ту же логику, которая управляет термопринтером. Аналогичным образом, схема, управляющая зарядом аккумулятора светодиодного фонаря, может использоваться в качестве драйвера светодиодов, когда фонарь отключен от сети. Фактически, процесс зарядки аккумулятора здесь мультиплексируется по времени с другими функциями системы. Такая схема занимает меньшую площадь, чем схема, в которой каждая функция выполняется своим логическим блоком. 

Динамическое изменение конфигурации

Хорошо известна возможность динамического реконфигурирования таких цифровых архитектур, как ПЛИС (FPGA). Это достигается использованием данных новой конфигурации, хранящихся в энергонезависимой памяти, позднее записываемых в соответствующие управляющие регистры. Каждая из возможных конфигураций записывается в постоянную или флеш-память на этапе программирования устройства.

Возможности программирования и настройки теперь не ограничиваются цифровой частью. Сегодня в процессе работы устройства могут изменяться настройки аналоговых ресурсов, причем речь идет не просто об изменении количественных характеристик конкретного периферийного устройства. При динамической реконфигурации один и тот же аналоговый ресурс, в зависимости от требований конкретного приложения, может работать как аналого-цифровой преобразователь, усилитель или емкостной сенсорный датчик.

Что бы понять, каким образом можно динамически изменять конфигурацию аналоговой периферии, рассмотрим программируемый аналоговый блок, изображенный на Рисунке 1. На первый взгляд эта схема кажется очень сложной. Но на самом деле она сравнительно проста, и обеспечивает возможность подключения различных сигналов на любой вход или выход для реализации требуемых функций.

Динамическое реконфигурирование микроконтроллера позволяет использовать более 100% его аппаратных ресурсов
Рисунок 1. Аналоговые ресурсы могут быть динамически реконфигурированы
в программируемом блоке.

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

Установка указанных соединений и выбор номиналов резисторов выполняется с помощью конфигурационных регистров, данные в которые можно записать даже в процессе работы микроконтроллера или системы-на-кристалле. Таким образом один программируемый блок может работать как аттенюатор, буфер, инвертирующий или неинвертирующий усилитель, а в комбинации с дополнительными блоками – даже как инструментальный усилитель. Разработчики систем могут программно изменять функционал блока, записав новые данные в конфигурационные регистры.

В блоке переключаемых конденсаторов каждый конденсатор может эмулировать резистор, сопротивление R которого определяется следующим соотношением:

Управляя частотой переключения (fS), емкостью конденсаторов (С) и способом подключения этих конденсаторов к операционному усилителю, можно получить множество схем без использования дополнительных внешних аппаратных ресурсов (Рисунок 2). Тот же переключаемый конденсатор может использоваться для реализации дельта-сигма модулятора, интегратора, фильтра или емкостного сенсорного блока.

Динамическое реконфигурирование микроконтроллера позволяет использовать более 100% его аппаратных ресурсов
Рисунок 2. Аналоговые блоки переключаемых конденсаторов состоят из набора коммутируемых конденсаторов, окружающих операционные усилители.

Каждый конденсатор имеет связанный с ним регистр конфигурации, который может использоваться для изменения значения емкости. Управлять частотой переключения можно с помощью аппаратных делителей или ШИМ в программируемом цифровом блоке. Доступные пользователю переключатели, предназначенные для включения или исключения из схемы некоторых конденсаторов, также управляются с помощью регистров конфигурации. Например, интегратор нуждается в конденсаторе в цепи обратной связи и не требует никаких переключений. На таких аналоговых блоках можно построить целый ряд схем, включая инвертирующий усилитель, интегратор или дифференциатор.

Как и программируемые аналоговые блоки, цифровая периферия также может выполнять различные функции, определяемые записью требуемых значений в конфигурационные регистры для данного цифрового блока. Программируемые входные/выходные соединения позволяют подключить любой вывод к любому периферийному устройству процессора. Таким образом, один и тот же аппаратный блок может подключаться к различным выводам в различное время. Например, цифровой блок, сконфигурированный как ШИМ для управления светодиодами, в другое время может выполнять функции универсального асинхронного приемопередатчика (UART), используя другие линии ввода/вывода.

Целесообразность динамического реконфигурирования

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

  • Автоматическая генерация значений для регистров конфигурации
    Инструменты разработки должны обеспечивать простой способ определения и управления несколькими конфигурациями. Под определением конфигурации следует понимать выбор используемых периферийных устройств и определение их внутренних межсоединений. На основании исходных данных в интегрированной среде разработки должны генерироваться требуемые значения конфигурационных регистров для каждого блока, используемого в этой конфигурации (Листинг 1). Как видно по этому коду, среда разработки поддерживает функцию генерации требуемых значений конфигурационных регистров, что освобождает разработчика от ручного определения значений и позволяет безошибочно вносить частые изменения в конфигурацию.
     
  • Простота переключения между конфигурациями
    Если управлять переключением между конфигурациями придется разработчику, это приведет к значительному росту издержек вследствие необходимости создания кода для чтения данных из Flash-памяти и записи их в регистры конфигурации, что будет особенно ощутимо при частых изменениях конфигурации в процессе разработки. Единственная ошибка может привести к полной неработоспособности системы, а обнаружить и локализовать ее будет сложно. Таким образом, средства разработки должны абстрагировать детали записи в низкоуровневые регистры и обеспечить высокоуровневый интерфейс программирования приложений (API).
Листинг 1.  Интегрированная среда разработки PSoC Designer генерирует значения
конфигурационных регистров на основе пользовательского проекта.
45|
;
Instance name PGA, User Module PGA
46|
;
 
Instance name PGA, Block Name GAIN(ACB00)
47|
 
mov
reg[71h],
fdh
 
;PGA_GAIN_CR0(ACB00CR0)
48|
 
mov
reg[72h],
21h
 
;PGA_GAIN_CR1(ACB00CR1)
49|
 
mov
reg[73h],
20h
 
;PGA_GAIN_CR2(ACB00CR2)
50|
 
mov
reg[70h],
00h
 
;PGA_GAIN_CR3(ACB00CR3)
51|
;
Instance name PRS8, User Hodule PRS8
52|
;
 
Instance name PRS8, Block Name PRS8(DCB02)
53|
 
mov
reg[2bh],
00h
 
;PRS8_CONTROL_REG (DCB02CR0)
54|
 
mov
reg[29h],
00h
 
;PRS8_POLY_REG    (DCB02DR1)
55|
 
mov
reg[2ah],
00h
 
;PRS8_SEED_REG    (DCB02DR2)
56|
;
Instance name PUH, User Module PWM8
57|
;
 
Instance name PUH, Block Name PWM8 (DBB01)
58|
 
mov
reg[27h],
00h
 
;PWM_CONTROL_REG(DBB01CR0)
59|
 
mov
reg[25h],
19h
 
;PWM_PERIOD_REG(DBB01DR1)

Еще больше усложняет задачу переключения между конфигурациями необходимость «выгрузить» значения конфигурационных регистров, которые были записаны во время загрузки предшествующей конфигурации. Данная операция требуется не в каждой ситуации, но в большинстве из них. Например, рассмотрим приложение с базовой конфигурацией и двумя загружаемыми конфигурациями.

Базовая конфигурация включает в себя ресурсы, которые используются в приложении постоянно и не требуют загрузки и выгрузки в любой момент. Эта конфигурация загружается перед началом выполнения кода основного приложения. В нашем примере приложения в базовой конфигурации необходим модуль UART для обмена данными с Host процессором. В первой загружаемой конфигурации нужен один АЦП, во второй – ШИМ и периферия для работы с емкостным датчиком касания (сенсорный интерфейс).

Предположим, что для UART потребуются два программируемых цифровых блока, для ШИМ – один, а АЦП и емкостной сенсорный интерфейс используют одинаковое количество ресурсов. Задача переключения между конфигурациями возложена на процессор (Рисунок 3). Конечно, в интегрированной среде должен быть простой путь для загрузки и выгрузки конфигураций, не требующей знаний о низкоуровневых регистрах и расположении конфигурационных данных во Flash-памяти.

Динамическое реконфигурирование микроконтроллера позволяет использовать более 100% его аппаратных ресурсов
Рисунок 3. Конфигурацию можно динамически переключать в процессе работы системы.

Реализация динамического реконфигурирования

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

Чтобы показать, как динамическое изменение конфигурации реализуется в приложении, давайте посмотрим на реальные системы. В программируемые системы-на-кристалле (PSoC) компании Cypress интегрированы различные системные ресурсы, процессорное ядро, цифровая и аналоговая подсистемы и программируемая система межкомпонентных соединений. Цифровая подсистема состоит из различных программируемых цифровых блоков, каждый из которых может быть независимо настроен на выполнение различных функций. Подобным образом устроена и аналоговая подсистема.

Для настройки программируемых аппаратных блоков разработчик перетаскивает нужный периферийный блок и помещает его в пустой блок. Затем его можно подключить к другой периферии или выводу системы-на-кристалле. Среда разработки генерирует требуемые значения для регистров конфигурации, которые записываются во Flash-память при программировании. При подаче питания или сбросе, прежде чем устройство начнет выполнять основной код приложения, из Flash-памяти в регистры загружается начальная конфигурация.

Разработчик может определить новую конфигурацию, щелкнув в рабочей области правой кнопки мыши и выбрав в меню пункт создания новой загружаемой конфигурации. Для каждой конфигурации можно выбрать различные периферийные устройства и соединить их требуемым образом. После определения всех необходимых конфигураций программа генерирует значения конфигурационных регистров, а также ассемблерный код, который будет загружать эти значения в соответствующие регистры, как показано на Рисунке 3. Разработчик также может загружать конфигурацию динамически из приложения, используя лишь одну строчку кода вида «LoadConfig_[config_name]».

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

Динамическое реконфигурирование является мощным средством, которое может быть использовано практически в каждом приложении, где различные периферийные устройства могут использоваться с временным разделением, что позволяет снизить стоимость системы и занимаемую площадь. Изменяя функционал программируемых аппаратных ресурсов во время исполнения приложения для выполнения различных задач, разработчики могут добиться больше чем 100% использования встроенных аппаратных ресурсов.  

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Dynamic Microcontroller Reconfiguration Delivers More Than 100% Resource Utilization

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя