Как стать автором
Обновить

FPGA. Первые шаги

Время на прочтение 4 мин
Количество просмотров 99K
image
В силу своей профессиональной деятельности мне приходится очень тесно работать с программированием микроконтроллеров и FPGA. Но если освоение МК более-менее подвластно даже домохозяйке, то с FPGA могут возникнуть некоторые сложности. Именно о подводных камнях и взгляде на них сверху и хотелось бы рассказать.

Шаг 0. Знакомство

Мое первое потрясениезнакомство с FPGA началось с установки ПО, которое шло в комплекте с отладочной платой. Куча ярлыков на рабочем столе, непонятные программы, причем с отличным друг от друга интерфесом — «работа предстоит интересная», — подумал я. Тонны невнятных мануалов на английском, непонятные для меня термины, отсутствие простейших туториалов или юзергайдов… Тем не менее, не прошло и полгода, после проб и ошибок на своем тернистом пути я могу с лихой долей компетентности поделиться своим опытом. Сразу оговорюсь, речь пойдет о продукции Xilinx: отладочной плате с чипом Spartan 3A DSP 1800A и среде разработки Xilinx ISE/EDK.

Шаг 1. Ногодрыгалка

Ну конечно же, для программиста-железячника hello world — это поморгать светодиодами. Ведь для того, что бы отправить заветные два слова в терминал — еще надо дорасти. За основу в данном случае следует взять языки аппаратного описания: сладкую парочку Verilog и VHDL. К ним же можно добавить и возможность построения схем на примитивных логических элементах. Сразу же вспоминается институтский курс по вычислительной технике: триггеры, регистры, логические элементы, счетчики, мультиплексоры. Но не будем забегать далеко вперед, тем более что это описывалось на хабре и до меня. Оговорюсь, языки Verilog/VHDL далеко не тривиальны, даже по сравнению с ассемблером, поэтому для их понимания нужен совсем другой подход.

Шаг 2. А если посложнее?

Несмотря на своеобразие, которым языки аппаратного описания могут отпугнуть неискушенного пользователя, у них есть огромный плюс: на FPGA можно реализовать действительно очень быстродействующее устройство, а модули DSP открывают просто колоссальные возможности для цифровой обработки сигналов. Если к этому добавить еще и готовые библиотеки с уже реализованными модулями (IP Cores), то возможности становятся все более и более значительными. Однако, здесь не обошлось и без ложки дегтя — трудоемкость, или как говорится, без бутылки не разберешься.

Для воплощения в жизнь первых двух шагов подойдет связка ISE (он же Project Navigator) + ISim (симуляция) + Impact ( прошивка FPGA).

Шаг 3. Старый добрый микроконтроллер


Иногда ну просто очень хочется чего-нибудь приятного… Пожалуйста, вспомним о SoC (System-on-Chip) — системе на кристалле. В нашем случае, это процессор, шина, память и куча всякой периферии. Можно попытаться сделать самому подобную систем (см. шаг 2), можно прикрутить найденные IP Cores на просторах интернета. Но зачем же изобретать велосипед? Умными ребятами из конторы Xilinx уже придуманы софт-процессоры PicoBlaze и MicroBlaze. Первый — это восьмиразрядный процессор, который морально устарел, уже давно не внедряется в SoC и имеет открытый исходный код. Второй же, MicroBlaze, имеет неплохие перспективы: 32 разряда, RISC-архитектура и т.д, и т.п.
В качестве памяти может быть использована как внешняя память, подключаемая к FPGA, так и внутренняя, реализованная непосредственно внутри FPGA. Как правило, вторая часто применяется для кеширования инструкций и данных, находящихся в первой. Помимо того, довольно широко используются системы, содержащие более одного процессора и использующие для межпроцессорного взаимодействия специальные модули коммуникации.
Существует гигантская куча всевозможной периферии, которую можно задействовать в огромных количествах — все ограничено лишь ресурсами FPGA. Кроме того, на шину обмена с периферией PLB можно добавить и «самопальные» модули, но только при условии их корректной работы.
На данном этапе важнейшим инструментом является Xilinx Project Stuido (XPS) из состава Emedded Development Kit (EDK), по большому счету именно она на выходе позволяет получить готовый файл аппаратной конфигурации FPGA с размещенной на ней SoC.

Шаг 4. А теперь покодим

Теперь, что же касается написания программы для того же MicroBlaze. В комплекте ПО Xilinx существует Software Development Kit (SDK), позволяющий писать программы на С/С++. Да-да, вы не ослышались, С++ действительно редкость для железок, но не в нашем случае. К слову сказать, SDK у нас Eclipse-based, поэтому тут есть и content assist, и человеческий рефакторинг, и еще вагон вкусных плюшек. Не стоит забывать и про ассемблер: порой иногда вставки на асме бывают очень кстати.
В качестве компилятора используется GCC, заточенный под нужды нашего софт-процессора, возможно использование RTOS под выразительным названием XilKernel, которая, кстати, является POSIX-совместимой. Это значит, что если человек не по наслышке знаком с мьютексами, тредами и семафорами в UNIX-based системах, то разобраться в XilKernel для него не составит и труда.

Шаг 5. Вместо резюме

FPGA — это мощный и гибкий инструмент, который может позволить решить огромное количество задач. Однако, не стоит пытаться забивать гвозди микроскопом — многие задачи прекрасно решаются на тех же микроконтроллерах более дешевыми и доступными способами (Cortex M3, привет!).
Verilog, VHDL, Behavioral, Implementation — эти и многие другие слова могут свести с ума и надолго отпугнуть от разработки с использованием FPGA, однако иногда можно заменить кучу устаревшей рассыпухи с дюжиной древних МК на одну изящную микросхему и при этом получить огромное моральное удолетворение!
Теги:
Хабы:
+24
Комментарии 23
Комментарии Комментарии 23

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн