В статье кратко освещаются вопросы реализации конфигурируемого контроллера, легко встраиваемого в любой проект на ПЛИС FPGA без использования специальных инструментов или сложных программ.
А. Мельниченко
Встроенные контроллеры нашли широкое применение в приложениях различной сложности. С 2000 года компания Xilinx выпускает аппаратные микроконтроллеры PowerPC® 405 и PowerPC 440, а также программный контроллер MicroBlaze™. Весомым преимуществом контроллера MicroBlaze является возможность обработки сложных приложений с использованием, при необходимости, ресурсов операционной системы, а также простых универсальных приложений.
Контроллер MicroBlaze может быть реализован на любой из выпускаемых компанией Xilinx ПЛИС FPGA. При этом обеспечивается возможность простого перехода от одного семейства FPGA к другому, а также высокая гибкость контроллера.
Используя соответствующую технологию, можно реализовать простой контроллер MicroBlaze, сконфигурировать его и легко встроить в любой проект FPGA. Его параметризация выполняется на языке HDL в процессе проектирования FPGA без использования специальных инструментов или сложных программ. Необходимы лишь три файла: два файла аппаратной реализации и файл обновления программы. Такой способ позволяет начать разработку встроенных приложений на FPGA, не имея почти никаких знаний и опыта в этой области.
Начиная с версии САПР ISE® 11.1, выпускается отдельный комплект для разработки программного обеспечения контроллера MicroBlaze (SDK – Software Development Kit), позволяющий создавать и отлаживать приложения на языках C или C++ без необходимости использования полного комплекта ПО для встроенных приложений (EDK – Embedded Development Kit). Контроллер предварительно сконфигурирован в одном из двух вариантов: с UART или опцией отладки. Число блоков FPGA, необходимых для реализации микроконтроллера, приведено в таблице. Кроме указанных в таблице блоков в FPGA семейства Virtex® задействованы два блока памяти, а в FPGA семейства Spartan® – четыре таких блока. После завершения отладки эту опцию можно удалить, уменьшив объем ресурсов FPGA, необходимый для работы контроллера. К примеру, в контроллере Spartan-6 число конфигурируемых логических блоков можно таким образом уменьшить с 410 до 220.
Ресурсы FPGA, необходимые для реализации контроллера MicroBlaze
Конфигурация контроллера ** | Spartan-3 | Virtex-5 | Spartan-6 | Virtex-6 | ||||||||
LUT | FF | КЛБ | LUT | FF | КЛБ | LUT | FF | КЛБ | LUT | FF | КЛБ | |
SMM + UART + отладка | 1770 | 1240 | 1120 | 1020 | 1230 | 460 | 1350 | 1200 | 470 | 1350 | 1200 | 520 |
SMM + UART | 1510 | 900 | 1090 | 830 | 880 | 360 | 1060 | 860 | 320 | 1050 | 870 | 350 |
SMM + отладка | 1390 | 790 | 820 | 820 | 780 | 330 | 990 | 750 | 410 | 990 | 750 | 430 |
SMM | 1130 | 450 | 630 | 630 | 440 | 220 | 690 | 440 | 220 | 690 | 440 | 250 |
** SMM (Simple MicroBlaze Microcontroller) – простой контроллер MicroBlaze,
UART – универсальный приемопередатчик, LUT (Look-Up Table) – таблицы преобразования, FF (Flip-Flop) – триггеры, КЛБ – конфигурируемые логические блоки.
КРАТКОЕ ОПИСАНИЕ КОНТРОЛЛЕРА MICROBLAZE
Контроллер MicroBlaze (рис. 1) состоит из 32-разрядного процессора MicroBlaze, ОЗУ или ПЗУ объемом 8 Кбайт, 32-разрядного интерфейса пользователя с адресным пространством 64 Кбайт, блока поддержки прерываний, а также опционных интерфейсов UART и JTAG.
Рис. 1. Выводы контроллера MicroBlaze
Частота входного тактового сигнала может быть сколь угодно низкой, ее максимальное значение определяется возможностями аппаратуры. Входной сигнал сброса синхронизирован сигналом тактовой частоты. Поступающий на вход сигнал прерывания обслуживается контроллером с формированием сигнала подтверждения прерывания. Простой пользовательский интерфейс синхронизирован сигналом тактовой частоты, его параметры могут быть настроены пользователем. Временные диаграммы работы интерфейса показаны на рис. 2. Входы “Byte Enable” используются для выбора формата данных (в байтах или полусловах).
К контроллеру можно подключать различные интерфейсы пользователя или периферийные устройства. Выборка данных производится в течение двух периодов тактовой частоты, следующих за сигналом “Chip Select”.
Некоторые из предварительно сконфигурированных версий контроллера имеют (в виде опции) последовательный интерфейс UART 16450. Скорость передачи данных через него задается программно и не зависит от тактовой частоты.
Отладка осуществляется через интерфейс JTAG с применением стандартного кабеля для загрузки приложений в FPGA. При отладке используются внутренние ресурсы FPGA.
ПРОЕКТИРОВАНИЕ КОНТРОЛЛЕРА НА FPGA
Проектирование контроллера начинается после запуска стандартной среды проектирования ISE – Intelligent Synthesis Environment, как показано на рис. 3. Проектировать контроллер можно на языках Verilog или VHDL на любом уровне иерархии проекта. Для реализации проекта необходимо всего два файла: таблица соединений (smm.ngc) и файл, отображающий содержание памяти (smm.bmm). Не нужно осваивать новые инструменты программирования или использовать сложные программы.
Для перехода от одной конфигурации контроллера к другой достаточно просто заменить файл netlist на новый и перепрограммировать FPGA. По окончании программирования создается файл, указывающий место размещения используемого контроллером блока памяти (smm_bd.bmm).
Рис. 2. Временные диаграммы операций записи и считывания данных
Рис. 3. Последовательность проектирования FPGA в среде ISE
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
В файле описания программы (smm.xml) содержится вся информация, необходимая для проектирования контроллера. Разработка может начаться независимо от проектирования FPGA.
Как уже упоминалось, начиная с версии ISE 11.1, выпускается отдельный комплект, содержащий все инструменты, драйверы, библиотеки и утилиты, достаточные для разработки программного обеспечения контроллера MicroBlaze. На рис. 4 показан стандартный процесс разработки, начиная с файла обновления программы. Адресное пространство для контроллера включает 8 Кбайт памяти, пользовательский интерфейс, а также область регистра UART (если имеется опция UART).
Программа может быть написана на языке C или C++ и сохранена в блоке памяти контроллера. Область памяти также используется как ПЗУ для контроллера, так как в нее может быть предварительно загружено приложение для FPGA. После того, как FPGA сконфигурирована и снят сигнал сброса контроллера, это приложение начнет выполняться. Контроллер станет полностью автономным.
Наличие опции отладки позволяет выполнять полную отладку приложения на уровне исходных кодов с обеспечением доступа к памяти, регистрам и переменным. С целью облегчения отладки приложения можно установить контрольные точки для прерывания выполнения программы.
Рис. 4. Процесс разработки контроллера с использованием комплекта SDK
ПРИМЕР ПРОЕКТИРОВАНИЯ
В качестве примера рассмотрим проект контроллера ЖКИ, в котором использованы различные особенности контроллера MicroBlaze. Для реализации функций контроллера ЖКИ хорошо подходят микроконтроллеры с их невысоким быстродействием, простым интерфейсом и возможностью хранения большого числа кодов символов.
Для выведения информации на символьный ЖКИ используются коды HDL (Hardware Description Language) и C. Код HDL управляет работой аппаратного интерфейса, в то время как программа управляет работой ЖКИ.
Тактовая частота, необходимая для работы ЖКИ, сравнительно невелика, поэтому временной интервал между командами и данными должен быть достаточно большим. Например, интервал между командой очистки экрана и приходом следующей команды или данных должен быть не менее 1.52 мс.
Хотя для создания временного интервала в коде С можно использовать программные циклы, точность полученной таким способом задержки невысока. Лучшим вариантом является создание в FPGA 32-разрядного счетчика, формирующего сигнал прерывания в контроллер в течение заданного программой времени. По этому сигналу контроллер записывает данные, имеющиеся на шине интерфейса пользователя, в ячейку памяти по адресу 0x10 и ожидает разрешения продолжить работу.
Проект FPGA состоит из модуля высшего уровня, модуля тактовой частоты для ЖКИ и программируемого таймера. Файл высшего уровня содержит простой контроллер MicroBlaze с тактовой частотой 66 МГц.
Приложение на языке C размещается в одном файле. Оно позволяет прерывать работу контроллера, инициализировать ЖКИ, вводить различные задержки, выводить на печать данные двух строк ЖКИ, фиксировать моменты нажатия кнопок, выполнять очистку экрана и выводить на него новую информацию.
На отладочной плате Virtex-6 ML605 проект занимает менее 1% ресурсов FPGA. Для ускорения проектирования его можно разбить на части. Компилирование и отладка кода C выполняются на порядок быстрее, чем реализация и отладка контроллера с использованием только кода HDL.
НАСТРОЙКА КОНТРОЛЛЕР
Для настройки встроенной системы с контроллером MicroBlaze в распоряжении разработчика имеются различные периферийные устройства и опции. Пользователь может использовать FPGA различной архитектуры, увеличить объем основной памяти, добавить блок для выполнения операций с плавающей запятой или стандартный интерфейс SPI, или I2C.
Все эти возможности обеспечивает комплект EDK (Embedded Development Kit). Он содержит большое число встроенных проектов различной конфигурации, которые можно модифицировать в соответствии с требованиями пользователя. Если, к примеру, необходимо увеличить объем памяти со стандартных 8 до 16 Кбайт, то, открыв проект, следует модифицировать область памяти MicroBlaze, после чего генерировать новый файл списка соединений, а также файлы блока памяти и описания программы.
Несмотря на то, что контроллер MicroBlaze не позволяет удовлетворить все требования разработчиков, он ориентирован на тех пользователей, которым необходим простой контроллер, обеспечивающий эффективное выполнение функций управления.