Ответы:
Это электронные компоненты, которые добавляют логику в ваши схемы (поэтому они похожи на микроконтроллеры). Но тогда подход к дизайну совершенно другой, чем в микроконтроллере. В ОК вы не можете изменить внутренний дизайн ОК; на нем можно запускать только «классические» программы. Программирование ПЛИС больше похоже на создание нового оборудования. Вы создаете новые связи между логическими элементами и создаете новый специализированный процессор. И вы можете делать все это у себя дома, на столе и на компьютере.
Звучит круто? Да, но есть некоторые недостатки. Например, цена (но я думаю, что это трудно сравнивать), более высокое энергопотребление и более низкие тактовые частоты (но вы можете разумно спроектировать свое приложение и выполнять больше операций за один такт).
Полезные ссылки:
Пример использования: http://nsa.unaligned.org/
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?
Если вы знакомы с основными логическими элементами, вы должны знать, что они практически мгновенные. Операции A и B ИЛИ C изменяются мгновенно при изменении A, B или C.
ПЛИС является (своего рода) матрицей программируемых логических элементов. Вы можете определить входы и выходы (как комбинацию входов).
В uC A + B / C * sqrt (D) займет несколько тактов и немного памяти. В FPGA результат почти мгновенный.
Они отлично подходят для видео, DSP, криптографии ...
Это главное преимущество. Современные ПЛИС теперь оснащены памятью и существуют гибриды uC / FPGA.
Они используются для взлома ключей шифрования гораздо быстрее, чем компьютер общего назначения. : D
Чтобы сэкономить деньги и риск против ASIC. Если только ты не
фиксированные (NRE) затраты на создание ASIC делают его непомерно дорогим.
Поскольку вы можете легко менять FPGA, вы можете меньше моделировать дизайн и быстрее входить в лабораторию. Также вы можете сделать частичный дизайн и построить на нем, как в программном обеспечении.