FPGA против микроконтроллеров [закрыто]

36

Я работал над семейством Arduino (в частности, Sanguino), построил несколько простых устройств и простой фототроп. Таким образом, мне довольно комфортно работать с микроконтроллерами - особенно с Atmel. Мне любопытно узнать, чем ПЛИС отличаются от стандартных микроконтроллеров. Я из технического образования (программирование на C / C ++) и поэтому хотел бы получить технические ответы. Просто имейте в виду, что я новичок (относительно моего программного обеспечения) в области электроники. :)

Я прошел этот запрос, и это было хорошо, но я ищу более глубокие детали.

Благодарность! Sushrut.

Сушрут Дж Маир
источник
Приложение. Существуют ли в реальном мире хорошие примеры использования гибридных архитектур, то есть объединения fpga с микроконтроллерами?
Sushrut J Mair
Sushrut J Mair - Как правило, когда у вас есть ПЛИС и вам нужен Micro, микро внедряется в FPGA.
Коннор Вольф
Да, поддельное имя, согласился. Тем не менее, я искал, чтобы найти какие-либо реальные случаи, когда как FPGA, так и MCU используются для проектирования системы. Идея состоит в том, что часть FPGA проекта используется для реализации «эволюционирующего» ч / б, которое реагирует и изменяется в соответствии с изменяющимися входами в систему, в то время как основная логическая обработка выполняется MCU.
Sushrut J Mair

Ответы:

48

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

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

FPGA больше ориентированы на параллельное выполнение. Иногда вам нужно беспокоиться о том, сколько времени требуется ISR вашего MCU для обслуживания прерывания, и сможете ли вы достичь своих жестких ограничений в реальном времени. Однако в FPGA постоянно работает множество конечных автоматов (FSM). Они как «фемто-контроллеры», как маленькие облака управляющей логики. Все они работают одновременно, поэтому не стоит беспокоиться об отсутствии прерывания. У вас может быть FSM для взаимодействия с АЦП, другой FSM для взаимодействия с адресной / микроконтроллерной шиной, другой FSM для потоковой передачи данных на стереокодек, и еще один FSM для буферизации потока данных от АЦП до кодека ... Вы Нужно использовать симулятор, чтобы убедиться, что все автоматы поют в гармонии.

ПЛИС - это мечта дизайнера макетов печатных плат. Они чрезвычайно настраиваемы. У вас может быть много различных логических интерфейсов (LVTTL, LVCMOS, LVDS и т. Д.), С различными напряжениями и даже мощностями привода (поэтому вам не нужны резисторы с последовательным выводом). Пальцы могут быть заменены; Вы когда-нибудь видели адресную шину MCU, где контакты были разбросаны по всему чипу? Ваш дизайнер печатных плат, вероятно, должен отказаться от нескольких переходов, чтобы правильно связать все сигналы. С помощью FPGA разработчик печатной платы может затем подавать сигналы в микросхему практически в любом удобном для них порядке, а затем дизайн может быть аннотирован обратно в цепочку инструментов FPGA.

У FPGA также есть много хороших, причудливых игрушек. Одним из моих любимых является Digital Clock Manager в чипах Xilinx. Вы подаете ему один тактовый сигнал, и из него можно получить еще четыре, используя широкий спектр множителей и делителей частоты, все с чистым рабочим циклом 50% и фазой 100% ... и это может даже учитывать сдвиг тактовой частоты, что возникает из-за задержек распространения вне чипа!

РЕДАКТИРОВАТЬ (ответ на добавление):

Вы можете поместить «мягкое ядро» в ПЛИС. Вы буквально соединяете микроконтроллерную схему, или, скорее, вы добавляете в свой проект чужую схему, например, PicoBlaze от Xilinx, MicroBlaze или Nios от Altera. Но, как и в C-> VHDL-компиляторах, эти ядра имеют тенденцию быть немного раздутыми и медленными по сравнению с использованием FSM и канала передачи данных или реального микроконтроллера. Инструменты разработки также могут значительно усложнить процесс проектирования, что может быть плохо, если ПЛИС - это уже чрезвычайно сложные микросхемы.

Есть также некоторые FPGA, в которые встроены «жесткие ядра», например серия XtexX Virtex4, в которой установлен настоящий IBM PowerPC с матрицей FPGA.

EDIT2 (ответ на комментарий):

Я думаю, что теперь вижу ... вы спрашиваете о подключении дискретного MCU к FPGA; т.е. две отдельные фишки. Есть веские причины для этого; FPGA с жесткими ядрами и достаточно большими, чтобы поддерживать достойные мягкие ядра, обычно являются монстрами со многими сотнями выводов, для которых требуется пакет BGA, что легко увеличивает сложность проектирования печатной платы в 10 раз.

Тем не менее, C намного проще, поэтому микроконтроллеры определенно работают вместе с FPGA. Поскольку легче написать C, вы можете написать «мозг» или центральный алгоритм в MCU, в то время как FPGA может реализовывать суб-алгоритмы, которые могут нуждаться в ускорении. Попытайтесь поместить вещи, которые изменяются, в код C, потому что это легче изменить, и оставьте FPGA более специализированным типом, который будет меняться не часто.

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

Лучший способ их подключения - использовать MCU с внешним адресом и шиной данных. Затем вы можете просто отобразить в памяти схемы FPGA в MCU и добавить свои собственные «регистры», каждый из которых имеет свой собственный адрес. Теперь FPGA может добавлять пользовательские периферийные устройства, такие как 32-разрядный таймер, который может фиксировать все 4 байта за раз, когда первый байт считывается, чтобы предотвратить переполнение между 8-разрядными считываниями. Вы также можете использовать его как связующую логику для отображения в памяти большего количества периферийных устройств от других чипов, например, отдельного АЦП.

Наконец, некоторые микроконтроллеры предназначены для использования с «внешним мастером», таким как ПЛИС. Cypress делает несколько USB MCU, которые имеют 8051 внутри, но цель состоит в том, чтобы данные USB создавались / потреблялись, например, FPGA.

ajs410
источник
Это хорошая информация, спасибо. Я слышал о C / C ++ для компиляторов HDL. Вы их вообще пробовали?
Sushrut J Mair
Они ... все в порядке. Для одного логического блока это не так уж плохо. Но я бы не стал писать весь дизайн через такой компилятор. Они не слишком эффективны, потому что языки настолько невероятно разные ... вы должны использовать специальные соглашения, они не просто берут какой-либо старый код ANSI C.
ajs410
Спасибо, это полезно. Я заказал комплект разработчика Brevia Dev2 Semiconductor для XP. Я намереваюсь опробовать некоторые компиляторы HDL на C, когда освою базовые концепции проектирования FPGA.
Sushrut J Mair
Только что увидел ответ на мое дополнение в исходном запросе. Спасибо. Значит, вы говорите, что практически (по крайней мере, с современными технологиями) гибридная архитектура со стандартным MCU + FPGA имеет очень небольшую ценность, чтобы быть действительно полезной в реальных ситуациях?
Sushrut J Mair
Потрясающе. Спасибо ajs410. Я надеюсь потратить несколько недель на загрузку себя в fpga, прежде чем попасть в захватывающие возможности гибридной арки!
Sushrut J Mair
10

"примеры из реальной жизни ... объединение ПЛИС с микроконтроллерами?"

В принципе, достаточно большая FPGA сама по себе может делать все, что может делать FPGA плюс микроконтроллер - возможно, путем реализации мягкого процессора внутри FPGA. На практике данный уровень производительности часто имеет более низкую стоимость деталей и требует меньшего энергопотребления при реализации с FPGA и отдельным микроконтроллером, чем с одними только FPGA (или только с MCU). Вот несколько наиболее известных устройств с FPGA и микроконтроллерами:

  • Камера Эльфель ; Elphel Project Wiki имеет Xilinx® спартанскую 3e 1200K вентиль FPGA и процессор ETRAX FS под управлением GNU / Linux.
  • TS-7500 имеет 5000 LUT Lattice FPGA и 250MHz Cavium ARM9 процессор , который может работать под Linux.
  • Плата Balloon оснащена спартанской ПЛИС Xilinx и процессором ARM
  • несколько SBC для Linux от Teeny Weeny включают в себя FPGA и CPU
  • В Armadeus Проект по вике документы доски несколько досок как с Xilinx Spartan-3 FPGA и процессором 400 МГц ARM9.
  • Удобный совет Blackfin , включает в себя как Xilinx Spartan 3e FPGA и процессор 600 МГц Analog Devices Blackfin® ADSP-BF537. (У него нет MMU, поэтому он не может работать под полным Linux, но может работать с uClinux).
  • "Minimig" (мини - Амигу) включает в себя Xilinx Spartan-3 FPGA, а M68000 CPU, и небольшой PIC MCU как действующий контроллер диска.
davidcary
источник
4

Часто ПЛИС используются специально для выполнения задач, которые микроконтроллер не может выполнять эффективно, таких как высокопараллельные операции или операции с малой задержкой, работа в нескольких тактовых областях или выполнение пользовательской логики на аппаратных скоростях. Таким образом, они будут выполнять тяжелую работу, и вам редко нужен MCU, чтобы быть центральным в проекте - они могут быть перемещены на позиции управления, такие как загрузка потока бит конфигурации. Примером этого является PIC или ARM в Minimig , который реализует интерфейс хранения.

Однако некоторые продукты стирают черты. Некоторые примеры:

  1. В больших FPGA, как правило, встроены жесткие процессоры (в больших проектах они все равно часто нужны), так же как они имеют блоки ОЗУ и множители.
  2. Некоторые микроконтроллеры предназначены для параллельных операций (XMOS XS1, Atmel Xmega, GreenArray, Parallax Propeller)
  3. Некоторые чипы выполнены в виде гибридов (Cypress PSoC, Atmel FPSLIC)

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

Ян Вернье
источник
1

На самом деле нет никакой разницы между MCU, таким как AVR, и программируемым в FPGA. Сайт OpenCores имеет код VHDL для AVR, который можно использовать в FPGA. Вы можете изучить его и посмотреть, как он работает, и даже попробовать его в симуляторе, не покупая подходящую плату ПЛИС.

Леон Хеллер
источник
1
Часто я нахожу, что FPGA должны работать на более низкой тактовой частоте для того же MCU, или они будут значительно дороже. В более дорогом случае вы можете легко установить дополнительное оборудование между контроллером и внешними выводами, что часто того стоит.
Кортук
В любом случае, если в системе требуется ПЛИС, MCU «свободен».
Леон Хеллер
1

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

Dipten
источник