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 для него не составит и труда.

Источник

FPGA — теория программируемой логики (шлюзовой матрицы)

Главная страница » FPGA — теория программируемой логики (шлюзовой матрицы)

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

FPGA (Field Programmable Gate Array) — программируемая шлюзовая матрица. По своей сути FPGA является массивом взаимосвязанных цифровых подсхем, которыми реализуются общие функции. Также система видится инструментом, наделённым очень высоким уровнем гибкости. Однако чтобы реализовать полностью гибкость матрицы, потребуются исключить массу нюансов. Поэтому рассмотрим концепцию FPGA, попутно узнаем, что такое логические шлюзы, определим, как программировать FPGA. Наконец, найдём и определим отличия конструкции матрицы от конструкции микропроцессора.

FPGA или микроконтроллер?

Микроконтроллеры выступают доминирующим компонентом современного электронного конструирования. Микроконтроллеры относительно недорогие и универсальные электронные модули.

Это мощные инструменты, благодаря которым успешно решаются различные задачи проектирования. Тем не менее, микроконтроллеры построены на основе процессоров, а процессоры характерны некоторыми фундаментальными ограничениями.

Как же достичь превосходства FPGA над традиционным микроконтроллером? Конечно же, посредством программного обеспечения и аппаратных средств.

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

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такоеСтруктура микроконтроллера: 1 – процессор; 2 – контроль прерываний; 3 – генератор импульсов; 4 – ROM; 5 – управление шиной; 6 – RAM; 7 – порты ввода/вывода; 8 – счётчики; 9 – последовательный порт

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

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

Тогда нет необходимости писать программное обеспечение:

Эта методология нецелесообразна вне описания, поскольку она предполагает разработку ASIC (специализированной интегральной схемы) для каждой платы. Однако есть возможность аппроксимировать эту методологию через FPGA.

Программируемая шлюзовая матрица

FPGA – это, по сути, массив логических вентилей. Этот массив может быть запрограммирован пользователем для конкретного устройства. Рассмотрим подробнее такую возможность.

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такоеТак называемая «стартовая» (макетная) плата электронного устройства типа FPGA — доступного по цене и лёгкого в использовании для конечного пользователя

Логические шлюзы (AND, OR, XOR и т. д.) являются основными строительными блоками цифровой схемы. Поэтому неудивительно, когда цифровое устройство, которое необходимо конфигурировать (запрограммировать пользователем), состоит из множества шлюзов, связанных методом настройки.

Однако FPGA не является обширной коллекцией отдельных булевских шлюзов. Это был бы субоптимальный способ обеспечения функциональности настраиваемой логикой. Тот же принцип проявляется, к примеру, в области дискретных цифровых интегральных схем (ИС).

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

Таким образом, FPGA видится намного более выразительным инструментом, чем просто массив шлюзов. Это массив тщательно разработанных и взаимосвязанных цифровых подсхем, которые эффективно реализуют общие функции.

Конфигурируемые логические блоки

Отмечено, что FPGA обеспечивает очень высокий уровень гибкости. Эту гибкость обеспечивают цифровые подсхемы, именуемые конфигурируемыми логическими блоками (CLB). Такими блоками образуется ядро программируемых логических возможностей FPGA.

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такоеСтруктура программируемой шлюзовой матрицы: CLB – настраиваемый логический блок; SB – переключающий бокс; CB – соединительный бокс; I/O – блок ввода/вывода; H – горизонтальный канал маршрутизации; V – вертикальный канал маршрутизации; C – «W» трек

Технически CLB взаимодействуют друг с другом и с внешней схемой. Для этих целей FPGA использует матрицу программируемых соединений и блоков ввода/вывода (I/O).

Программа FPGA хранится внутри ячеек SRAM, которые влияют на функциональность CLB и управляют коммутаторами, устанавливающими пути подключения.

Подробное объяснение внутренней структуры и работы CLB потребует отдельной публикации (или даже нескольких публикаций). Общая идея заключается в том, что CLB включают в себя:

Все эти включения позволяют CLB выполнять логические операции, операции хранения данных и арифметические операции.

Блок ввода-вывода состоит из различных компонентов, которые облегчают на электронной плате связь между CLB и другими компонентами. К ним относятся:

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такоеFpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такоеFpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Пользовательская программируемая логика (как программировать FPGA?)

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

Действительно, реализация FPGA обычно считается сложнее, чем программирование микроконтроллера. Однако разработка FPGA не требует глубоких знаний функциональности CLB или кропотливой компоновки внутренних взаимосвязей.

Это аналогично тому, когда разработка микроконтроллеров не требует глубокого знания инструкций на языке ассемблера процессора или внутренних сигналов управления.

На самом деле несколько неверно представлять FPGA как отдельный компонент. Система FPGA всегда поддерживается программным обеспечением разработки.

Такое ПО выполняет сложный процесс преобразования аппаратного конструирования в биты программирования. Этими битами определяется поведение взаимосвязей и CLB.

Языки программного «описания» оборудования

Существуют средства, которые позволяют пользователю «описывать» аппаратное обеспечение. Эти средства называются языками описания аппаратных средств (HDL). Среди наиболее распространенных языков следует отметить «сладкую парочку»: —

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

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

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

Заключительный момент обзора

Современные FPGA — это сложные, высокопроизводительные устройства. На первый взгляд это пугающе сложные системы для тех пользователей, кто привык работать с микроконтроллерами.

Микроконтроллеры видятся проще для сбора данных, управления ASIC и выполнения математических операций. Однако на практике легко обнаруживается, что для некоторых конкретных применений улучшенная производительность и универсальность достигаются именно разработкой на FPGA.

КРАТКИЙ БРИФИНГ

Источник

Сделай шаг к ПЛИС

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Ты ждал знак? Вот он!

Много лет я не решался начать программировать ПЛИС, потому что это сложно, дорого и больно (как мне казалось). Но хорошо, когда есть друзья, которые помогают сделать первый шаг. И теперь я не понимаю одного — ПОЧЕМУ Я ЖДАЛ ТАК ДОЛГО?

Сейчас я помогу сделать первый шаг и тебе!

А зачем оно мне?

Ты устал постоянно читать доки по своему МК или держать кучу информации в голове. Ты все переписал на asm, но скорости все равно не хватает. Ты подключил два внешних устройства к своему МК, подключаешь третье, но у тебя кончились прерывания, перестают работать те модули, что уже работали. Ты берешь другой МК, более мощный из той же линейки, но опять мануалы, регистры флагов, биты… ад. Меняешь платформу: переходишь на другой МК и выкидываешь на помойку свои знания по прежней платформе. Что бы ты не делал — оно дается тяжело. Ты находишь популярную платформу, в которой можно легко из компонентов собирать проект, но выше аппаратных ограничений данного МК все равно не удается прыгнуть… Где-то на краешке сознания иногда проскакивает мысль, что вот на ПЛИС это бы точно заработало быстро и параллельно, что это «именно та задача, которую бы надо решать на плис», но я стар/глуп/занят/etc чтобы суметь/начать такое делать.

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Хочешь наконец вздохнуть свободно? Идем дальше!

Радость от разработки на ПЛИС

У меня был тяжелый рабочий день. С одной работы я приехал на вторую работу, потом на дачу, вечером домашние дела, уроки, потом семейный просмотр кино и только в 23 часа я оказался совершенно свободен! Сказать, что я был уставший — ничего не сказать. Но в таком состоянии я сел за ноут с твердой целью: сделать генератор меандра на 440 Гц. Прошло 20 минут и я уже слышал его в наушниках. Я не верил своим ушам! Еще 15 минут мне потребовалось, чтобы сделать ШИМ и менять громкость. К тому времени плата с ПЛИС у меня была всего с неделю и до этого я пролистал всего пару книг по Verilog.

В тот вечер я понял: ВОТ ОНО! Вот та платформа, в которой я быстро и легко могу превращать свои мысли в реально работающее железо!

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Почему так?

Проблема выбора

Сильно останавливают вопросы, что выбрать: Altera/Xilinx, Verilog/VHDL, какую отладочную плату взять. Но обо всем по порядку.

Производитель

Я выбрал Altera. Почему? Ну мы вот так с другом решили, хотя название Xilinx мне красивее. НО. Если ты сейчас не можешь выбрать, то я сделаю это за тебя. Тебе нужен Altera! Почему? Я не знаю. Сейчас важнее сделать шаг: сделать выбор. Я выбрал Altera и пока не пожалел.
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Берем Verilogпотомучто… ну ты понял.
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Отладочная плата

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

В семействе Altera, за разумные деньги мы можем купить платы с CPLD MAX II на 240, 570 и 1270 элементов, либо более старшие микросхемы FPGA, которые Cyclone 1, 2, 3, 4 с количеством до 10000 и более ячеек. Как же выбрать?

Даже на базе 240 ячеек, проект Марсоход делает просто огромное количество проектов. Настоятельно рекомендую ознакомиться, чтобы иметь примерное представление о сложности проектов, которые можно уместить в 240 ячеек. С другой стороны, существуют проекты, которые полностью программируются под аппаратную копию определенного ПК, включая процессор и всю логику вокруг него (NES, Speccy, Orion, ЮТ-88, etc). Для этого уже требуется пять, десять и более тысяч ячеек. Плюс эти платы содержат дополнительные внешние устройства.

Поэтому я бы посоветовать взять что-то среднее между 240 и 10000 ячейками, с предпочтением в сторону увеличения в зависимости от доступных средств. На отладочной плате лишние ячейки это не страшно, а если их не хватит — уже ничего не поделаешь. Потом, когда устройство отлажено, станет ясно, сколько надо ячеек, купить под нужное количество, без лишнего «обвеса», дешевле и оставить в готовом устройстве.

То, чем действительно отличаются MAX от Cyclone’ов, кроме количества ячеек, это:
1) У серии MAX внутри нет PLL. На каждой отладочной плате есть генератор, как правило на 50 МГц. Основной массе проектов этого будет достаточно. Все синхронизации будут происходить путем деления 50 МГц на какое-нибудь значение. Либо, можно взять внешний генератор и подать на отдельный вход ПЛИС. А что, если потребуется частота выше 50 МГц? Мне не удалось с ходу найти генераторы выше 50 МГц. Но тут как раз на помощь и приходит PLL, который встроен в Циклоны. На нем можно умножить частоту, например, до 100 МГц.
2) В серии Cyclone встроены аппаратные блоки умножения. Их количество зависит от конкретной модели — тут как раз можно «всетаки заглянуть в инструкции», чтобы узнать сколько. Если предполагаете делать какой-то ЦОС, то они пригодятся: сэкономят ячейки, увеличат скорость. С другой стороны, если нет умножителей, их можно синтезировать, но у маленькой ПЛИС на это может не хватить ресурсов.

Во всем остальном у меня критерий «влезло/не влезло». Отладка на заведомо бОльшей, чем нужно плате, с последующей заливкой в минимально необходимую для этого.

Сколько нужно денег?

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Программатор
Я считаю, что у меня нет времени, чтобы паять программаторы на рассыпухе.

300 рублей. Я свой брал на ебее, выглядит так:
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Отладочная плата
Выбор широкий, в зависимости от количества денег.

Начальный уровень 350 — 550 рублей. Это платы на MAX II (240 или 570 ячеек). Могут подойти для начального ознакомления и дальнейшего пристройства в конечные устройства. На плате есть генератор, пара кнопок, пара светодиодов, остальные 80 выводов на свое усмотрение.
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Блок питания
Обязательно должен быть, но не всегда идет в комплекте. Потребуется БП на 5 вольт и ток 2А.

Средний уровень от 900 до 1500 рублей. Это платы Cyclone 1, 2, 3, 4 отличающиеся в основном количеством ячеек.
Маркируются примерно так:
EP2C5T144 — Cyclone 2 примерно 5к ячеек
EP4CE6E22C8N — Cyclone 4 примерно 6к ячеек
EP2C8Q208C8N — Cyclone 2 примерно 8к ячеек

Можно заметить, что Cyclone 3 может иметь больше ячеек, чем Cyclone 4.

Вот несколько вариантов:

835 рублей.
ALTERA FPGA CycloneII EP2C5T144 Minimum System Board for Learn good
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

880 рублей
Altera CycloneII EP2C5T144 FPGA Mini Development Learn Core Board E081
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

1265 рублей
EP2C8 EP2C8Q208C8N ALTERA Cyclone II FPGA Evaluation Development Core Board
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Платы с расширенными возможностями. Это платы, на которых установлены дополнительные модули (UTP, USB, AUDIO), разъемы (SD, VGA), кнопки, переключатели, светодиоды, семисегментные индикаторы и т.д. Либо может идти базовая плата, а к ней могут прилагаться платы расширения отдельно.

Вот основная плата. На ней есть 2 светодиода, 2 кнопки, 4 переключателя, семисегментный интикатор и микросхема оперативной памяти.
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Плата расширения. На ней распаяны SD, VGA, а так же контроллеры USB(High Speed USB2.0 Chip: CY7C68013A), AUDIO(Sound Card up to 96kHz/32bit ADC/DAC: WM8731S), UTP(100M Ethernet interface: DM9000A):
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Эти платы просто вставляются одна в другую, но у меня она пока лежит в ящике. Для своих поделок у меня макетка, с которой я соединяюсь шлейфом, который идет в комплекте. Еще в комплекте идет блок питания на 5 вольт.

Altera Cyclone NIOS II SOPC FPGA Development Learning Board EP2C8Q208C8N+LCD1602 — 2670 рублей
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Terasic Altera FPGA DE0-Nano Cyclone IV Development and Education Board — 4600 рублей
Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Но в целом, большие и дорогие отладочные платы я бы не рекомендовал сразу покупать. Дорогие покупки должны быть обоснованы, сейчас же пока не ясно что подойдет лучше. Ясно станет, когда начнется практика.

Заказал, ждем

Пока идут платы, можно начать себя морально и технически готовить:
— Установить Quartus II v.11.1
Почитать:
— Книга: А.К. Поляков Языки VHDL и Verilog в проектировании цифровой аппаратуры 2003
— www.kit-e.ru/articles/circuit/2008_3_161.php — Краткий курс HDL
— Уроки на марсоходе по верилогу, архитектура, простые советы по стилю.
— VERILOG как образ жизни
— Хорошие примеры (EN)
— Как начать работать с ПЛИС (Xilinx)

Мы ждем от тебя интересных проектов на ПЛИС!

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

PS. Обращаясь к тебе на «ты», я обращаюсь, как к равному, личности, а не части толпы. Если обращение на «ты» оскорбило, прошу меня извинить.

ВНИМАНИЕ! Verilog и ПЛИС не являются серебряной пулей и волшебным средством решения любых задач, они не могут заменить микроконтроллеры во всех проектах. Для работы с ПЛИС требуется определенный уровень технической подготовки. Вы сами несете ответственность за все решения в вашей жизни. Автор снимает с себя ответственность за возможные финансовые и временные потери, связанные с вашими исследованиями в области ПЛИС и Verilog.

Источник

Технология FPGA для тысячи применений

Трудно представить другую технологию, которая настолько разносторонняя как FPGA.
FPGA — Field-Programmable Gate Array, то есть программируемая логическая матрица (ПЛМ), программируемая логическая интегральная схема (ПЛИС). Это технология, при которой создается микросхема с набором логических элементов, триггеров, иногда оперативной памяти и программируемых электрических связей между ними. При этом программирование FPGA оказывается похоже на разработку электрической схемы, а не программы. Пользуюсь данной технологией давно и попробую описать самые полезные с моей точки зрения применения по мере их усложнения.

1. Помощь при разводке плат

Многие наверняка сталкивались, что центральный процессор, память, другие многоногие микросхемы создавали люди, редко задумывающиеся о том, как они будут соединяться на печатной плате. Протянуть шину разрядностью 32 или 64 бита — задача не решаемая без многослойной платы. Но стоит поставить между микросхемами FPGA как разводка становится на несколько порядков проще:

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

2. Согласование уровней сигналов

Часть микросхем имеет интерфейс 1.2В, другая 1.5, 1.8, 2.5, 3.3В, и все эти микросхемы можно подключить к одной FPGA и обеспечить двусторонний обмен за счет того, что любая FPGA имеет несколько банков ввода-вывода, каждый из которых может иметь свое опорное напряжение сигналов. Например, так:

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

3. Обеспечение надежности устройства

FPGA достаточно дорогие, но надежные устройства. Они начинают включаться при меньшем напряжении, чем номинальное, выдерживают импульсные наводки, часто короткое замыкание на ножках IO, быстро загружаются и могут использоваться для контроля и управления процессорами и умной периферией. Плюс могут реализовывать вспомогательные функции коммутации, задержек, моргания светодиодом и так далее. Мне очень нравится использовать FPGA (маленький PLD) как умный сторожевой таймер и схема запуска — ни разу не подводил.

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

4. Автоматы состояний или аппаратное программирование

Если на процессоре сначала создается «исполнитель команд», то есть процессор, а потом в него загружается последовательность команд, то на FPGA можно писать программу с командами, вшитыми в структуру прошивки. При этом отсутствует избыточность процессора, появляется малое потребление при той же скорости и функциональности, гарантированное время выполнения и высокая надежность. Пример такого автомата состояний:

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

5. Создание процессора внутри FPGA

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

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Недостатком такого процессора является отсутствие готовых компиляторов и отладчиков.

6. Использование готовых библиотек процессоров для FPGA

Библиотеки готовых процессоров есть у любого производителя FPGA (от 8086 до ARM), позволяют быстро создать процессор с определенным набором периферии и вставить его в проект FPGA. К процессору прилагается компилятор и отладчик. Быстро, удобно, но избыточно и потому ограничено по быстродействию. Пример структуры готовой библиотеки процессора:

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

7. Объединять процессор и периферию в одной микросхеме — SoC (System-On-Chip)

SoC — достаточно новая технология, решающая самую страшную проблему инженера, необходимость протаскивать по плате много высокоскоростных интерфейсов, которых всегда оказывается недостаточно, и которые необходимо программно поддерживать. Технология SoC позволяет в одной микросхеме иметь полноценный центральный процессор (поддерживающий операционную систему Linux, например) или микроконтроллер и большую FPGA, соединенные логическими сигналами, общей внутренней памятью и интерфейсами к внешней. То есть проблема эффективной, простой и быстрой передачи информации между FPGA и процессором успешно решена! Пример структуры SoC:

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

Видно, что FPGA и HPS (Host Processor System, процессор) находятся внутри одной микросхемы и окружены программируемыми ножками ввода-вывода. Действительно это многофункциональная система на кристалле.

8. Модные приложения типа crypto mining

Вспоминая, что FPGA — это набор логических ячеек и триггеров, работающих параллельно, на FPGA можно проводить много параллельных операций, что отличает от процессора, параллельность которого ограничена количеством ядер и потоков. Поэтому можно использовать FPGA как сопроцессор к центральному процессору, вынося на FPGA все самые требовательные к вычислительной мощности операции. Например, центральный процессор занимается логической обработкой задачи, а FPGA параллельно вычисляет контрольные суммы, хэши, ищет совпадения, перебирает варианты и так далее. Быстродействие FPGA ограничено только количеством параллельных блоков и временем выполнения одной операции. Отладив таким образом вычисления можно заказать ASIC, то есть заказную микросхему, выполняющую те же функции, но дешевле (при массовом производстве) и с меньшим энергопотреблением. И данная идея оказалась настолько перспективной и удобной, что гиганты разработки FPGA начали создавать специальное ПО, позволяющее интерактивно переносить части вычислений из программы на C/C++ в FPGA и контролировать быстродействие (HLS, High-Level Synthesis). Есть готовые платы с быстрыми интерфейсами для этого и средства отладки. Очень интересная и перспективная тема для использования.

Fpga что это такое. Смотреть фото Fpga что это такое. Смотреть картинку Fpga что это такое. Картинка про Fpga что это такое. Фото Fpga что это такое

9. Реализация нейронных сетей на FPGA

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

Поэтому перенеся нейронную сеть на FPGA удается на много порядков ускорить работу нейронной сети, остается обеспечить высокоскоростной интерфейс для загрузки исходных данных и получения результата. В качестве примера — реализация системы распознавания лиц на процессоре i7/9Gen распознает до 20 лиц за секунду с одной видеокамеры HD, реализация на FPGA — порядка 1000 лиц с нескольких камер. Структура используемой глубокой нейронной сети:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *