Лучшая платформа для преобразования программного обеспечения в VHDL / Verilog для FPGA

Я подумываю о разработке на FPGA, но мне было бы проще написать код на Python или Scala и преобразовать его в VHDL или Verilog.

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

Это библиотека для кода, написанного на Scala. Мне любопытно, написан ли код на Java, а Scala повлияет на то, что он генерирует.

http://simplifide.com/drupal6/

Это преобразователь питона в VHDL.

http://www.myhdl.org/doku.php

С обоими из них мне интересно узнать об ограничениях.

Я бы предпочел simpleifide, так как я сильнее разбираюсь в Scala, чем в Python, но кажется, что myhdl может быть более надежной платформой, если только немного осмотреться.

ОБНОВЛЕНИЕ:

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

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

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

Существуют две библиотеки с открытым исходным кодом, которые могут помочь упростить разработку, но я не уверен, какая из них будет лучшей платформой для преобразования программы в VHDL / Verilog.

Это всего лишь один пример. Если я хочу выполнить моделирование квантовой схемы на ПЛИС, как предлагает эта статья (http://www.cc.gatech.edu/computing/nano/documents/Radecka%20-%20FPGA%20Emulation%20of%20Quantum%20Circuits.pdf), тогда было бы проще сделать это как программу, чем строить большую схему вручную.


person James Black    schedule 14.10.2012    source источник
comment
Не могли бы вы подробнее объяснить, зачем вам ПЛИС? Какие вычисления вам нужны? Похоже, что эту проблему можно решить с помощью стандартной системы сбора данных.   -  person    schedule 14.10.2012
comment
Возможно, вы захотите сузить круг вопросов.   -  person aqua    schedule 14.10.2012
comment
@aqua - Есть как минимум две разные платформы, которые могут делать то, что я хочу, но я не знаю, какая из них лучше в принципе.   -  person James Black    schedule 14.10.2012
comment
@ Adam12 - Я обновил свой вопрос.   -  person James Black    schedule 14.10.2012
comment
«делать много вещей одновременно», требуя fpga или многих dsp, вероятно, когда скорость передачи данных составляет миллионы выборок в секунду. ваше предложение, погода, вероятно, не нужно отбирать чаще, чем несколько сотен раз в секунду; Вероятно, вы сможете перебрать сотни датчиков (100 * 100 - это 10 000 ‹------------------------ 1 000 000) данных на менее дорогостоящем MCU (разновидности ARM), который также может быть запрограммирован на Python напрямую, и его даже проще перепрограммировать, чем многие ПЛИС   -  person SingleNegationElimination    schedule 14.10.2012
comment
Меня интересует вопрос в его нынешнем виде, учитывая, что я хотел бы выполнить десятки трехмерных сверток для объемных данных, поступающих со скоростью ~ 200 МБ / с, с задержкой менее 10 мс (предпочтительно доли миллисекунды; независимо от предела , это жесткий предел).   -  person Rex Kerr    schedule 14.10.2012
comment
@Rex Kerr Стр. 118 из этот тезис может иметь отношение к делу.   -  person    schedule 14.10.2012
comment
@ Adam12 - Поскольку моя робототехника выходит за рамки того, что я хочу делать с процессором Parallax, например, для преобразования полученных изображений в трехмерные векторные карты, FPGA могут облегчить жизнь. Но я просто пытаюсь понять, какой из них может иметь больше смысла, вместо того, чтобы просто писать что-то в обоих, а затем тестировать, но, похоже, это может быть лучшим вариантом.   -  person James Black    schedule 14.10.2012


Ответы (5)


Если вы можете себе это позволить, я не думаю, что что-то облегчит вам жизнь, чем надстройка FPGA от National Instruments для LabView. Визуальная среда LabView разумно подходит для программирования FPGA, и она заботится о многих раздражающих деталях за вас (если вы не должны беспокоиться о них как части алгоритма, например, путем создания конвейеров для достижения целевых значений тактовой частоты). Кроме того, вы можете обнаружить, что решения NI реального времени (без FPGA), DSP, DAQ или другие решения подходят для ваших нужд.

person Rex Kerr    schedule 14.10.2012
comment
Я думал о LabView, но предпочел бы делать это с помощью Python или Scala, или, если возможно, другого подобного языка. Но с другой стороны, я не использовал LabView 15 лет, поэтому думаю, что с тех пор, как я его использовал, он сильно изменился. - person James Black; 14.10.2012
comment
@JamesBlack - За 15 лет ситуация изменилась незначительно. Но использовали ли вы его раньше для программирования FPGA? Не путайте, мне пришлось использовать LabView для рисования схем, которые должны были имитировать некоторые строки кода, обращаясь к множеству структур данных интересными способами, чтобы делать интересные вещи, что было и остается чрезвычайно болезненным, и я буду использовать LabView для рисовать схемы, которые должны представлять что-то, что имитирует схемы. Использование инструмента для того, что ему хорошо подходит, - это совершенно иной опыт, чем использование его для чего-то, чем он не является. - person Rex Kerr; 15.10.2012
comment
Я использовал его для чтения с такого оборудования, как цифровые осциллографы, для отправки данных через сокет. - person James Black; 15.10.2012

Да, доступен HDL в стиле Python, и он бесплатный. MYHDL

Это сгенерирует VHDL или verilog. Он также может имитировать код и выводить .VDI, и вы можете посмотреть это в gtkwave

в качестве альтернативы, если вы хотите отредактировать код VHDL, вы можете использовать GHDL. погуглите, вы получите много ресурсов. доступна ОС Fedora Electronics Lab, в ней есть все инструменты для разработки современной электроники.

Все это с открытым исходным кодом. Создавайте и моделируйте с помощью этих инструментов. Для прошивки в FPGA вам потребуются цепочки инструментов xilinx или Altera для генерации битовых потоков и их прошивки. Всего наилучшего !

person user2936294    schedule 30.10.2013
comment
электронная лаборатория Fedora выглядит потрясающе! fedoraproject.org/wiki/Electronic_Lab?rd=ElectronicLab_Spin - person minghua; 30.11.2017
comment
@minghua вы комментируете пост 4-летней давности. И ссылка, которую вы даете, показывает последнее обновление ... 2009 год. Это 8 лет назад. Жить прошлым? - person JHBonarius; 30.11.2017
comment
@JHBonarius, извини не обратил на это особого внимания. Спасибо, что уловили это. Но проект выглядит более продвинутым, чем gEDA, и включает в себя все, о чем я мог подумать. Проект в целом мертв? Пакеты или хотя бы некоторые из них еще живы? Если какие-то пакеты живы, то ссылка может иметь какое-то значение? - person minghua; 30.11.2017
comment
Кстати, недавно я использовал myhdl и знаю, что они добавляют к нему новые функции (например, stackoverflow.com/q/44922574/362754 < / а>). Так что тема на самом деле не устарела. :) - person minghua; 30.11.2017
comment
Некоторое время назад я почти побывал в Эйндховене. - person minghua; 30.11.2017

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

Это полностью зависит от точного характера алгоритмов, которые вам нужно выполнить.

Существуют две библиотеки с открытым исходным кодом, которые могут помочь упростить разработку, но я не уверен, какая из них будет лучшей платформой для преобразования программы в VHDL / Verilog.

Это всего лишь один пример. Если я хочу выполнить моделирование квантовой схемы на ПЛИС, как предлагает эта статья (http://www.cc.gatech.edu/computing/nano/documents/Radecka%20-%20FPGA%20Emulation%20of%20Quantum%20Circuits, .pdf), тогда было бы проще сделать это как программу, чем создавать большую схему вручную.

Похоже, вы ищете инструмент синтеза высокого уровня, чего нет ни в одном из них. Для генерации RTL для алгоритмов генераторы кода определенно могут помочь, но вам все равно придется запачкать руки HDL для других вещей.

person Community    schedule 14.10.2012
comment
Я не возражаю сделать часть этого, если большая часть может быть более автоматизирована. - person James Black; 14.10.2012

Я думаю, вы ищете инструменты, которые Modaë Technologies предлагает здесь. Вы можете начать с кода Ruby или Python на алгоритмическом / поведенческом уровне. Их инструменты способны автоматически определять типы данных и преобразовывать код в HDL (в настоящее время VHDL) на уровне RTL.

person JCLL    schedule 29.09.2014

Год или два назад я работал с MyHDL и LabVIEW. Я написал HDL в MyHDL, экспортировал его как VHDL и импортировал как внешний IP-адрес в LabVIEW.

LabView

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

MyHDL

Это в основном python, но синтаксис очень похож на Verilog с декораторами, предназначенными для использования в качестве операторов @always и т. Д. Вы можете использовать любой допустимый для Python код в своем HDL-коде. В целях тестирования можно было бы написать тестовую функцию с помощью Python, прежде чем фактически реализовывать ее на уровне передачи регистров (RTL). При генерации рекурсивных структур у вас есть обычный оператор for. Нужна справочная таблица (LUT) для вашего алгоритма? Одна строка понимания списка: Готово. Полный список функций см. На веб-сайте.

Резюме

LabVIEW отлично подходит для начала, потому что вы можете сосредоточиться на фактической реализации. Как только вы научитесь думать параллельно и на RTL и изучите реализацию более сложных алгоритмов, вы можете обнаружить, что MyHDL лучше работает в

  • управление вашим IP без привязки к проприетарной платформе
  • тестирование вашего кода на полной мощности Python
  • совместное использование, управление версиями и т. д.
person JoVaRi    schedule 07.03.2018