Что такое ПЛИС?

38

Я видел много людей, которые говорили о FPGA раньше, и я знаю, что это расшифровывается как программируемый пользователем вентильный массив, но как он работает и какова цель использования FPGA?

zklapow
источник

Ответы:

30

Это электронные компоненты, которые добавляют логику в ваши схемы (поэтому они похожи на микроконтроллеры). Но тогда подход к дизайну совершенно другой, чем в микроконтроллере. В ОК вы не можете изменить внутренний дизайн ОК; на нем можно запускать только «классические» программы. Программирование ПЛИС больше похоже на создание нового оборудования. Вы создаете новые связи между логическими элементами и создаете новый специализированный процессор. И вы можете делать все это у себя дома, на столе и на компьютере.

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

Полезные ссылки:

Пример использования: http://nsa.unaligned.org/

Maciek Sawicki
источник
3
Отмечу, что многие ПЛИС достаточно большие, чтобы содержать несколько ядер ЦП, что позволяет ПЛИС быть целым компьютером.
Крейг Трейдер
3
Как примечание, я думаю, что более низкие тактовые частоты могут вводить в заблуждение. по сравнению с ПК, да. По сравнению с pic16 они могут быть быстрее, но это зависит от стоимости. Большинство из более дешевых, которые у меня были, работали на частоте 40 МГц, но опять же, от продукта к продукту.
Кортук
23

FPGA - это буквально массив логических элементов, которые можно запрограммировать на месте. Триггеры, мультиплексоры, 4-битные справочные таблицы и т. Д., Которые можно подключать любым способом, используя язык C-like (Verilog).

UC, такой как AVR, также состоит из аналогичных логических элементов, но они настраиваются при создании устройства. Конечно, у него есть RAM и Flash, так что вы можете написать программное обеспечение для чтения входов и управления выходами, но вы не можете изменить фактическое расположение ворот. Ворота всегда будут расположены в АЛУ, контроллер памяти, последовательный порт и т. Д.

Преимущество ОК состоит в том, что вы можете программировать его в полевых условиях (за столом), используя простой в использовании, знакомый язык высокого уровня, такой как C. Проблема в том, что программное обеспечение «медленное». Чтобы иметь контроль ввода для вывода, в простейшем случае вы могли бы написать:

void loop () {buttonState = digitalRead (buttonPin); if (buttonState == HIGH) {
digitalWrite (ledPin, HIGH);
} else {digitalWrite (ledPin, LOW); }}

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

В ПЛИС я мог бы настроить ворота на управление входом с выходом за 1 такт. Таким образом, результат будет следовать за входом с задержкой, возможно, 25 наносекунд. Это в 40 раз быстрее, используя тот же период времени. А остальные ворота в ПЛИС доступны для выполнения многих других задач, которые не влияют на скорость этой маленькой функции.

Код для FPGA будет простым триггером:

всегда @ (заданные часы) ledPin <= buttonPin;

Это займет всего 1 элемент FPGA, около 40 вентилей, из десятков тысяч в FPGA.

Я могу перепрограммировать свою FPGA, чтобы сделать что-то еще, например, управлять светодиодом на основе комбинации четырех входов, все еще в одном такте, все еще используя эту 1 ячейку FPGA. Или управляйте светодиодом на основе последовательного потока от входа в нескольких ячейках ПЛИС, которые будут сотнями вентилей. Таким образом, я мог управлять светодиодом на основе последовательных данных, скажем, «ВКЛ» или «ВЫКЛ», с последовательным потоком с очень высокой частотой (легко 20 МГц), и при этом использовать только крошечную долю емкости ПЛИС.

Таким образом, преимущество FPGA - это скорость. Он может делать все, что умеет ОК, и он может делать это намного быстрее, причем все делается параллельно. Сложные вещи, на которые uC может уйти за миллисекунды, FPGA может сделать за микросекунды или меньше. Пока в ПЛИС остались шлюзы, я могу добавлять к ней больше функций, не влияя на скорость или работу предыдущих функций в ПЛИС. Кстати, FPGA может очень легко работать с тактовой частотой 20 МГц.

Стоимость не является дифференциатором. Я могу купить FPGA, которая могла бы реализовать практически любой дизайн Arduino, который я когда-либо видел, примерно за 5 долларов, примерно столько же, сколько чип Arduino AVR. Есть также бесплатные наборы инструментов (IDE, компилятор, отладчик) для FPGA.

Власть не является дифференциатором. Поскольку я могу запускать FPGA на гораздо более низкой тактовой частоте, чтобы получить ту же функцию, что и для uC, и использовать небольшую часть ее затворов (неиспользуемые затворы используют только мощность утечки), FPGA может превзойти мощность практически любого основанного на uC дизайн.

Самым большим недостатком FPGA является то, что он намного сложнее и требует больше времени для определения, написания кода и отладки нетривиального проекта FPGA, чем для программы uC. Типичный проект ОК, который вы могли бы выполнить вечером, может занять несколько дней на ПЛИС.

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

Другая проблема заключается в том, что FPGA не поставляются в маленьких 8–20-контактных DIP-пакетах. Они, как правило, поставляются в 100-контактных или больших корпусах для поверхностного монтажа, поэтому сборка досок сложнее.

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

SiliconFarmer
источник
2
«Я могу купить FPGA, которая могла бы реализовать практически любой дизайн Arduino, который я когда-либо видел, примерно за 5 долларов» Извините, но ведь? Где?
Медив
9

Если вы знакомы с основными логическими элементами, вы должны знать, что они практически мгновенные. Операции A и B ИЛИ C изменяются мгновенно при изменении A, B или C.

ПЛИС является (своего рода) матрицей программируемых логических элементов. Вы можете определить входы и выходы (как комбинацию входов).

В uC A + B / C * sqrt (D) займет несколько тактов и немного памяти. В FPGA результат почти мгновенный.

Они отлично подходят для видео, DSP, криптографии ...

Это главное преимущество. Современные ПЛИС теперь оснащены памятью и существуют гибриды uC / FPGA.

ppvi
источник
Я знаю много практикующих EE с многолетним опытом, которые часто используют FPGA в дизайне вместо UC, где вы привыкли видеть UC. Я действительно думаю, что они отлично подходят для обработки интерфейса.
Кортук
Да, я думаю, что это хороший пример: armadeus.com/english/index.html . Особенно интересным для меня является пример сервоуправления: marwww.in2p3.fr/~duval/wiki_html_dump/articles/m/o/t/…
Maciek Sawicki
2
Также следует отметить, что появляется все больше и больше преобразователей «C в VHDL» или «C в Verilog». Это еще не самая эффективная вещь, но вы можете преобразовать уже написанный код в аппаратное обеспечение, которое можно использовать для повышения скорости. Довольно круто, если вы спросите меня (и если у вас есть тесто для этого).
Крис Гаммелл
5

Они используются для взлома ключей шифрования гораздо быстрее, чем компьютер общего назначения. : D

эндолиты
источник
1
Хаха, мне понравилось твое очень функциональное описание. Они абсолютно великолепны при параллельной обработке.
Кортук
Проект Codebreaker: copacobana.org
HHH
2

Чтобы сэкономить деньги и риск против ASIC. Если только ты не

  1. Глубоко заботиться о власти или
  2. Создаем кучу из них (скажем,> 10 тыс. Единиц)

фиксированные (NRE) затраты на создание ASIC делают его непомерно дорогим.

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

Брайан Карлтон
источник