Контроллер MICROBLAZE на плис FPGA

03.03.2024 |

В статье кратко освещаются вопросы реа­лизации конфигурируемого контроллера, легко встраиваемого в любой проект на ПЛИС FPGA без использования специальных инструментов или сложных программ.

А. Мельниченко

Встроенные контроллеры нашли широкое применение в приложениях различной слож­ности. С 2000 года компания Xilinx выпускает аппаратные микроконтроллеры PowerPC® 405 и PowerPC 440, а также программный конт­роллер MicroBlaze™. Весомым преимуще­ством контроллера MicroBlaze является воз­можность обработки сложных приложений с использованием, при необходимости, ресурсов операционной системы, а также простых уни­версальных приложений.

Контроллер MicroBlaze может быть реали­зован на любой из выпускаемых компанией Xilinx ПЛИС FPGA. При этом обеспечивается возможность простого перехода от одного се­мейства FPGA к другому, а также высокая гиб­кость контроллера.

Используя соответствующую технологию, можно реализовать простой контроллер Mi­croBlaze, сконфигурировать его и легко встроить в любой проект FPGA. Его парамет­ризация выполняется на языке HDL в процес­се проектирования FPGA без использования специальных инструментов или сложных про­грамм. Необходимы лишь три файла: два файла аппаратной реализации и файл обновления программы. Такой способ позволяет начать разработку встроенных приложений на FPGA, не имея почти никаких знаний и опыта в этой области.

Начиная с версии САПР ISE® 11.1, выпус­кается отдельный комплект для разработки программного обеспечения контроллера Mi­croBlaze (SDK – Software Development Kit), позволяющий создавать и отлаживать прило­жения на языках C или C++ без необходимо­сти использования полного комплекта ПО для встроенных приложений (EDK – Embedded De­velopment 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

 

ПРИМЕР ПРОЕКТИРОВАНИЯ

В качестве примера рассмотрим проект контроллера ЖКИ, в котором использованы различные особенности контроллера Micro­Blaze. Для реализации функций контроллера ЖКИ хорошо подходят микроконтроллеры с их невысоким быстродействием, простым ин­терфейсом и возможностью хранения большо­го числа кодов символов.

Для выведения информации на символьный ЖКИ используются коды HDL (Hardware De­scription Language) и C. Код HDL управляет ра­ботой аппаратного интерфейса, в то время как программа управляет работой ЖКИ.

Тактовая частота, необходимая для работы ЖКИ, сравнительно невелика, поэтому вре­менной интервал между командами и данными должен быть достаточно большим. Например, интервал между командой очистки экрана и приходом следующей команды или данных должен быть не менее 1.52 мс.

Хотя для создания временного интервала в коде С можно использовать программные цик­лы, точность полученной таким способом за­держки невысока. Лучшим вариантом являет­ся создание в FPGA 32-разрядного счетчика, формирующего сигнал прерывания в контрол­лер в течение заданного программой времени. По этому сигналу контроллер записывает дан­ные, имеющиеся на шине интерфейса пользо­вателя, в ячейку памяти по адресу 0x10 и ожи­дает разрешения продолжить работу.

Проект FPGA состоит из модуля высшего уровня, модуля тактовой частоты для ЖКИ и программируемого таймера. Файл высшего уровня содержит простой контроллер Micro­Blaze с тактовой частотой 66 МГц.

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

На отладочной плате Virtex-6 ML605 про­ект занимает менее 1% ресурсов FPGA. Для ускорения проектирования его можно разбить на части. Компилирование и отладка кода C выполняются на порядок быстрее, чем реали­зация и отладка контроллера с использовани­ем только кода HDL.

НАСТРОЙКА КОНТРОЛЛЕР

Для настройки встроенной системы с конт­роллером MicroBlaze в распоряжении разработчика имеются различные периферийные устройства и опции. Пользователь может ис­пользовать FPGA различной архитектуры, увеличить объем основной памяти, добавить блок для выполнения операций с плавающей запятой или стандартный интерфейс SPI, или I2C.

Все эти возможности обеспечивает ком­плект EDK (Embedded Development Kit). Он со­держит большое число встроенных проектов различной конфигурации, которые можно мо­дифицировать в соответствии с требованиями пользователя. Если, к примеру, необходимо увеличить объем памяти со стандартных 8 до 16 Кбайт, то, открыв проект, следует модифи­цировать область памяти MicroBlaze, после чего генерировать новый файл списка соедине­ний, а также файлы блока памяти и описания программы.

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