Я работал над семейством Arduino (в частности, Sanguino), построил несколько простых устройств и простой фототроп. Таким образом, мне довольно комфортно работать с микроконтроллерами - особенно с Atmel. Мне любопытно узнать, чем ПЛИС отличаются от стандартных микроконтроллеров. Я из технического образования (программирование на C / C ++) и поэтому хотел бы получить технические ответы. Просто имейте в виду, что я новичок (относительно моего программного обеспечения) в области электроники. :)
Я прошел этот запрос, и это было хорошо, но я ищу более глубокие детали.
Благодарность! Sushrut.
fpga
microcontroller
Сушрут Дж Маир
источник
источник
Ответы:
Проектирование для 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.
источник
"примеры из реальной жизни ... объединение ПЛИС с микроконтроллерами?"
В принципе, достаточно большая FPGA сама по себе может делать все, что может делать FPGA плюс микроконтроллер - возможно, путем реализации мягкого процессора внутри FPGA. На практике данный уровень производительности часто имеет более низкую стоимость деталей и требует меньшего энергопотребления при реализации с FPGA и отдельным микроконтроллером, чем с одними только FPGA (или только с MCU). Вот несколько наиболее известных устройств с FPGA и микроконтроллерами:
источник
Часто ПЛИС используются специально для выполнения задач, которые микроконтроллер не может выполнять эффективно, таких как высокопараллельные операции или операции с малой задержкой, работа в нескольких тактовых областях или выполнение пользовательской логики на аппаратных скоростях. Таким образом, они будут выполнять тяжелую работу, и вам редко нужен MCU, чтобы быть центральным в проекте - они могут быть перемещены на позиции управления, такие как загрузка потока бит конфигурации. Примером этого является PIC или ARM в Minimig , который реализует интерфейс хранения.
Однако некоторые продукты стирают черты. Некоторые примеры:
Исходя из императивного опыта программирования, это вполне приспособлено для проектирования аппаратного обеспечения, поскольку вам необходимо использовать преимущества ПЛИС. Однако вы найдете полезный опыт и в других местах.
источник
На самом деле нет никакой разницы между MCU, таким как AVR, и программируемым в FPGA. Сайт OpenCores имеет код VHDL для AVR, который можно использовать в FPGA. Вы можете изучить его и посмотреть, как он работает, и даже попробовать его в симуляторе, не покупая подходящую плату ПЛИС.
источник
Микроконтроллеры представляют собой цифровые схемы, которые выполняют команды из своей памяти программ последовательно одну команду за другой. Цифровая аппаратная схема микроконтроллера является фиксированной, а межсоединения между различными вентилями, которые составляют цифровую схему, являются постоянными и вытравливаются на кремнии. Где, как ПЛИС, можно представить как пул цифровых вентилей (в действительности вместо них присутствуют прорези), которые имеют программируемые межсоединения. Теперь любая цифровая схема (даже микроконтроллер) может быть создана на FPGA путем программирования межсоединений.
источник