Jump to content

    

А в каких случаях лучше использовать ПЛИС(FPGA) вместо микроконтроллеров?

Вижу на форуме что многие используют ПЛИС в своих проектах.

Но при этом я за свою жизнь не видел ни одного девайса с ПЛИС.

 

Куда же тогда идут изделия, сделанные форумчанами на базе ПЛИС?

В какие-то частные мелкосерийные или даже единичные узкоспециальные разработки (типа начинки боеголовки?)?

 

И какое преимущество писать на ПЛИС свой контроллер, свой TCP/IP стек и т.п.

Почему нельзя просто взять готовый MCU?

 

 

Прошу простить если кому-то мои вопросы кажутся наивными. Просто о ПЛИС я практически совсем ничего не знаю.

 

Вот я работаю на громадном преприятии. У нас СОТНИ инженеров-разработчиков электроники.

И никто из из них ничего на ПЛИС не делает.

 

Вот я и подумал: а почему? Вон на форуме народ делает. Только нужно узнать: что они делают и какие преимущества (и какой ГЕМОРОЙ) дает использование ПЛИС вместо микроконтроллеров

 

Вообщем поясните, когда нужно использовать (а когда лучше не надо) ПЛИС и приведите примеры своих проектов когда использование ПЛИС позволило получить огромный выигрыш в стоимости проекта, сложности и скорости проектирования и надежности девайса

Edited by Флюктуация ваккума

Share this post


Link to post
Share on other sites
И какое преимущество писать на ПЛИС свой контроллер, свой TCP/IP стек и т.п.

Почему нельзя просто взять готовый MCU?

 

Только нужно узнать: что они делают и какие преимущества (и какой ГЕМОРОЙ) дает использование ПЛИС вместо микроконтроллеров

У меня тоже был такой вопрос. Набрал в Google - и множество ссылок. Там и почитал о них, для общего представления. Хотя у меня не было задач, чтобы применять ПЛИС.

Share this post


Link to post
Share on other sites

"Для общего развития" гуголь я тоже читал.

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

Да и надежность снижается. Одно дело отлаженные и выпускаемые миллионными тиражами MCU, а другое - какой-то самописный MCU внутри FPGA, написанный неким васей пупкиным.

ИМХО глупо ставить надежность системы в зависимость от старательности, добросовестности, упёртости и уровня квалификации (и даже настроения) Васи Пупкина

 

Но повторюсь. Я с ПЛИС не работал.

 

Т.е. использовать "НЕСТАНДАРТКУ" нужно как можно реже. Это золотое правило любого разработичка, написанное кровью

Edited by Флюктуация ваккума

Share this post


Link to post
Share on other sites

На ПЛИС хорошо получаются разные вещи с жёсткой привязкой по времени к некой эталонной частоте.

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

Ещё в ПЛИС можно параллелить вычисления - например одновременно считать сразу много цифровых фильтров.

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

з.ы.

для мк-ных задач я всегда стараюсь ставить мк рядом с плис.

С мк на ПЛИС я завожу все интерфейсы и по максимому ног и использую ПЛИС как коммутатор сигналов.

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

Share this post


Link to post
Share on other sites
У меня тоже был такой вопрос. Набрал в Google - и множество ссылок. Там и почитал о них, для общего представления. Хотя у меня не было задач, чтобы применять ПЛИС.

Есть задачи, позволяющие выполнять набор действий (процессов) последовательно, для этого годится MCU.

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

Использование языков HDL позволяет упростить применение ПЛИС, если до этого программировал на MCU.

Еще преимущество ПЛИС в том, что можно назначать и переназначать выводы микросхемы так, как удобно. У MCU выводы в микросхеме обычно строго фиксированы и их значительно меньше.

Использование в ПЛИС софт процессоров (или встроенных процессоров), а они равносильны MCU, позволяет достичь новых более высоких качеств и в производительности, и в функциональности.

Share this post


Link to post
Share on other sites
На ПЛИС хорошо получаются разные вещи с жёсткой привязкой по времени к некой эталонной частоте.

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

Очень мало задач где требуется реакция (latency time) в несколько тактов (т.е. доли микросекунд)

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

А вот это да. Хорошо.

А номый взгляд (взгляд нуба в ПЛИС) единственное применение ПЛИС, когда её не заменишь MCU

в ПЛИС можно параллелить вычисления - например одновременно считать сразу много цифровых фильтров.

А если сделать ТАК?

Да, проиграем в размерах.

Но зато выиграем в надежности, цене (одна плисина стоит дороже 100 MCU) и простоте проектирования

Есть задачи, позволяющие выполнять набор действий (процессов) последовательно, для этого годится MCU.

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

Использование языков HDL позволяет упростить применение ПЛИС, если до этого программировал на MCU.

Еще преимущество ПЛИС в том, что можно назначать и переназначать выводы микросхемы так, как удобно. У MCU выводы в микросхеме обычно строго фиксированы и их значительно меньше.

Использование в ПЛИС софт процессоров (или встроенных процессоров), а они равносильны MCU, позволяет достичь новых качеств и в производительности, и в функциональности.

Это все замечательно. Но есть один большой жирный минус: надежность системы начинает зависеть от старательности, добросовестности, уровня квалификации и даже настроения Васи Пупкина, который пишет прошивку ПЛИС.

 

Т.е. получается "нестандартка", которую никто кроме Васи по хорошему поддерживать и развивать не сможет

Edited by Herz

Share this post


Link to post
Share on other sites
Но есть один большой жирный минус: надежность системы начинает зависеть от старательности, добросовестности, уровня квалификации и даже настроения Васи Пупкина, который пишет прошивку ПЛИС.

Т.е. получается "нестандартка", которую никто кроме Васи по хорошему поддерживать и развивать не сможет

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

 

Share this post


Link to post
Share on other sites
Но у меня сложилось впечатление, что кроме гемороя и доп. сложнеостей использование ПЛИС ничего не дает в большинстве случаев. По сравнению с MCU.

...

Но повторюсь. Я с ПЛИС не работал.

простой пример:

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

Все за здрасьте получилось на ПЛМ (Альтера, кажется 10К серия, потом на Acex перевели) с тактовой 1 МГц, в ней же была организована двухпортовая память для обмена данными с микроконтроллером - тот спокойненько (кажется, 20-мегагерцовый PIC16F877 был) не спеша вычитывал данные со своей скоростью и писал в флешку те, которые были нештатными (признак нештатности тоже ПЛМ формировала). Тот же PIC и ПЛМ загружал при включении.

Очень простая и надежная система была, никаких проблем со скоростью или одновременностью.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Тут на самом деле просто. Попробуйте подключить какой-нибудь маломальский АЦП на сотню мегагерц/единицы гигагерц к вашему MCU, и тогда сразу станет ясно зачем нужны ПЛИС. Но это, кончено, не единственная задача, которая практически не решается при помощи стандартных MCU.

 

А в чем проблема?

Сам же АЦП это не ПЛИС. :biggrin:

Значит есть вещи работающие быстро и не ПЛИС.

Значит есть и процессоры работающие также быстро как и эти АЦП.

 

Вот такие например: http://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/

Share this post


Link to post
Share on other sites
А в чем проблема?

Сам же АЦП это не ПЛИС. :biggrin:

Значит есть вещи работающие быстро и не ПЛИС.

Значит есть и процессоры работающие также быстро как и эти АЦП.

 

Вот такие например: http://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/

Там внутри, если не ошибаюсь, АЦП на 10 МГц или около того.

Share this post


Link to post
Share on other sites
Значит есть и процессоры работающие также быстро как и эти АЦП.

У TI есть процессоры с JESD204B (4 lane * 7.37 Gbps Line Rate Max. = 29,5 Gbps).

 

Так что да, уже можно 2-х гигагерцовые АЦП подключать.

Share this post


Link to post
Share on other sites
У TI есть процессоры с JESD204B (4 lane * 7.37 Gbps Line Rate Max. = 29,5 Gbps).

 

Так что да, уже можно 2-х гигагерцовые АЦП подкючать.

 

Я конечно звиняюсь, но 4 лейна не всегда достаточно - это раз, не всегда достаточно 1-го АЦП - это два, а чаще всего, там, где пользуются такие АЦП еще и ЦАПы аналогичные ставят, например AD9361/64, нужно вреальном времени и слать и получать в эфир, плюс дополнительно крутить математику например LTE/GSM. с такими задачами проц даже гигагерцовый на A8/A9 нифига не в состоянии справиться.

 

 

ЗЫ. в моем понимании ПЛИС нужна сугубо для задач, в которых есть большие объемы информации (от сотни-другой мегабит/с) и где к этими объемам информации надо применять некую математику типа БПФ и тп (а не просто складывать в память) и все это должно проискодить в максимально короткое время (читай на большой частоте, много больше десятков мегагерц). в остальных случаях - имеет смысл пользовать МК.

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

Share this post


Link to post
Share on other sites

Опишу плюсы, которые есть в изучении и применении ПЛИС, хотя их и так все знают:

Универсальность знаний — при смене модели МК нужно читать доки. При смене производителя МК нужно читать доки. Нужно постоянно читать доки, постоянно держать в голове кучу информации. При разработке на ПЛИС, если знаешь Verilog или VHDL, то можно не только программировать любой ПЛИС из линейки одного производителя, но и при желании перейти на другого (Altera, Xilinx). Хоть и будут моменты с освоением другой среды разработки, тонких аппаратных моментов, но сама суть подхода проектирования устройств на HDL от этого не изменится.

От идеи к железу — при разработке проекта, если тебе не хватает одного мк, то приходится выбирать другой. В принципе можно строить предположения справится или не справится этот МК с проектом. Либо есть какой-то конкретный МК и ты пытаешься туда вместить проект. Чаще всего именно так. Мне это чем-то напоминает подход моего деда, который делает лестницу из того, что есть в сарайке. Хотя можно спроектировать лестницу, купить досок, которые подойдут… От идеи к железу, а не наоборот.

Простота применения чужих разработок — можно взять чужой модуль и применить его в своем проекте. По коду сможете понять, как он работает. Даже, если он для xilinx, а вы делаете под altera. Иногда это получается не сразу, но это проще, чем, например, добавлять двоичные библиотеки к проекту на c++/Qt

Независимость блоков. Блоки в HDL, как чистые фунции в ЯП. Зависят только от входных сигналов. Разработанный и отлаженный модуль в будет и дальше работать правильно, как бы не рос проект. Ничто снаружи не повлияет на правильность его работы изнутри. Да и вообще можно забыть, как он работает — это черный ящик. К тому же, блоки работают параллельно.

 

+ современные ПЛИС уже имеют встроенное двуядерный ARM9

Share this post


Link to post
Share on other sites
ЗЫ. в моем понимании ПЛИС нужна сугубо для задач, в которых есть большие объемы информации (от сотни-другой мегабит/с) и где к этими объемам информации надо применять некую математику типа БПФ и тп (а не просто складывать в память) и все это должно проискодить в максимально короткое время (читай на большой частоте, много больше десятков мегагерц).

"Я конечно звиняюсь, но.." для 66AK2L06 заявлено:

Hardware Coprocessors:

- Two Fast Fourier Transform Coprocessors:

- Support Up to 1200 Msps at FFT Size 1024

- Support Max FFT Size 8192

 

Покажите мне FPGA, которая сделает "1200 Msps at FFT Size 1024".. ;)

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this