MicroBlaze
MicroBlaze — soft-процессорное ядро, разработанное компанией Xilinx для использования в FPGA. MicroBlaze реализуется с помощью стандартной логики и блоков памяти ПЛИС.
С точки зрения архитектуры, MicroBlaze очень похож на процессор с основанной на RISC DLX-архитектурой, описанной в книге Д. Паттерсона (David Patterson) и Дж. Хеннеси (John L. Hennessy). За исключением отдельных случаев MicroBlaze может выполнять по одной инструкции за такт, сохраняя такую производительность практически в любых условиях.
Описание
MicroBlaze имеет универсальные средства связи с периферией, обеспечивающее возможность применять его в разнообразных встроенных приложениях. Для доступа к внутренней памяти ПЛИС (BRAM), MicroBlaze использует специальную шину LMB, что снижает нагрузку на другие шины. Подключение сопроцессора возможно средствами специального соединения, подобного FIFO — FSL (Fast Simplex Link). Интерфейс с сопроцессором может помочь ускорить работу алгоритмов с большим количеством вычислений, передав часть вычислений в созданный разработчиком (например, написанный на VHDL) аппаратный блок.
Для конфигурирования доступны различные параметры MicroBlaze: могут быть отдельно специфицированы размер кэш, длина конвейера (3 или 5-уровневый), встроенная периферия, блок управления памятью, шинные интерфейсы и так далее (всего более 70 параметров). Например, для оптимизации по количеству занимаемых ресурсов ПЛИС можно использовать MicroBlaze с 3-уровневым конвейером, пожертвовав высоким значением тактовой частоты ради высвобождения дополнительных ресурсов; для оптимизации по скорости — MicroBlaze с 5-уровневым конвейером, что позволяет работать при тактовой частоте до 235 МГц (для FPGA семейства Virtex-5 FX). Кроме того, ключевые команды процессора, которые редко используются, но при этом их дорого воспроизводить «в железе», могут быть выборочно добавлены или удалены (то есть блоки умножения, деления, операций с плавающей точкой и тому подобные). Этот набор настроек дает разработчику возможность чётче определить грань между аппаратной и программной частью в проекте.
Без блока управления памятью на MicroBlaze может работать операционная система с упрощенной защитой и виртуальной памятью, например μClinux или FreeRTOS. С блоком управления памятью возможна работа операционных систем, требующих аппаратной поддержки страничной организации памяти и защиты (таких как ядро Linux), хотя производительность MicroBlaze значительно ниже, чем у таких аппаратных микропроцессорных ядер, встроенных в FPGA, как PowerPC-405 в Virtex-4.
Разработка приложений с MicroBlaze с помощью Xilinx EDK
Xilinx EDK (Embedded Development Kit) — пакет программ для разработки встроенных систем на основе MicroBlaze (и PowerPC) для ПЛИС фирмы Xilinx. Основанный на Eclipse IDE, EDK состоит из двух независимых сред разработки — XPS и SDK.
Разработчик использует XPS (Xilinx Platform Studio) для создания и конфигурирования аппаратной спецификации встроенной системы (процессорное ядро, управление памятью, интерфейсы ввода-вывода и проч.). По ней XPS генерирует синтезируемое описание на уровне регистровых передач (RTL — register transfer level, на языке VHDL или Verilog), и создает набор скриптов для автоматического создания битового описания (из RTL в bitsream-файл). Для ядра MicroBlaze EDK генерирует зашифрованное описание (не читаемое человеком), но исходники на VHDL могут быть приобретены у Xilinx.
SDK служит для создания программной части системы. Как и GNU toolchain, SDK позволяет писать, компилировать и отлаживать программы на C/C++. Имеется специальный симулятор — ISS (Instruction Set Simulator), благодаря которому можно либо тестировать программу в режиме симуляции, либо используя подходящую плату с установленным FPGA, на реальной системе.
Пользователи XPS становятся обладателями «пожизненной» лицензии на MicroBlaze, без необходимости внесения периодических лицензионных платежей.
Альтернативный компилятор и инструмент разработки для MicroBlaze был представлен компанией Altium, но он тоже требует установки EDK и получения лицензии.