fpga: выбор c ++ для программирования fpga - PullRequest
4 голосов
/ 21 декабря 2009

Я продолжаю слышать в основном от инженеров-электриков, что C используется для работы FPGA.

А как насчет C ++? Есть ли недостатки в использовании C ++? Я думаю, что желаемый параллелизм при программировании для аппаратного обеспечения будет лучше обслуживаться C ++, чем C, нет?

Кроме того, что я могу использовать после этого для совместимости c ++ с аппаратным обеспечением?

Ответы [ 15 ]

16 голосов
/ 21 декабря 2009

Я уверен, что ПЛИС запрограммированы либо в VHDL, либо в Verilog.

http://en.wikipedia.org/wiki/Vhdl

http://en.wikipedia.org/wiki/Verilog

Я знаю, что Altera также предлагает некоторые переводчики с C на HDL. Я сомневаюсь, что они пригодны для всего, кроме крошечных дизайнов.

8 голосов
/ 21 декабря 2009

Безусловно, самый простой способ программирования FPGA - через модуль FPGA LabView. Однако это также связывает вас с их аппаратным и программным обеспечением. Не дешевое решение, но, безусловно, самый быстрый способ получить вашу программу на аппаратном уровне, не изучая ничего, кроме LabVIEW.

6 голосов
/ 06 февраля 2010

Вы можете использовать C или C ++ для программирования FPGA, но для этого требуется очень дорогое программное обеспечение Highlevel Synthesis. CatapultC - это продукт от Mentor Graphics, который позволяет вам написать свой алгоритм на языке C ++ без привязки. Затем он синтезирует этот C ++ в RTL VHDL или Verilog. Но CatapultC продается за более чем 100 000 долларов, так что это определенно не для любителей. Есть еще один продукт под названием ImpulseC, который позволяет вам писать код на C, который затем синтезируется в RTL, но я уверен, что он обрабатывает только C, а не C ++. ImpulseC составляет около $ 2000.

Для любителей, вам, вероятно, лучше придерживаться VHDL или Verilog, чтобы описать свой дизайн, а затем использовать бесплатные инструменты от Xilinx или Altera для синтеза этого кода и программирования FPGA.

5 голосов
/ 21 декабря 2009

Существует большая разница между компиляцией для процессоров и компиляцией для ПЛИС. «Обычные» компиляторы генерируют двоичный программный код. Специальные компиляторы FPGA генерируют «аппаратное обеспечение». Существуют компиляторы, которые превращают некоторый C-подобный код в «аппаратное обеспечение». Но это не совсем C. Это может быть производная C, расширенная целочисленными типами произвольных длин битов и, вероятно, ограниченная итерацией и нерекурсивными вызовами функций.

Я большой поклонник C ++, но даже я вижу, что многие его части просто не подходят для FPGA: виртуальные функции, RTTI, исключения. По крайней мере, это мое впечатление. Я сам не тестировал эти компиляторы С-подобных ПЛИС, но с ними работал мой приятель, и якобы это PITA.

4 голосов
/ 21 декабря 2009

Они, вероятно, используют интерфейс от C до с ПЛИС. При работе с одним в классе дизайна мы использовали Verilog для программирования FPGA и C на прилагаемой плате Linux. В этом случае они, скорее всего, используют C, так как проще создать небольшую программу на C, чем на C ++.

3 голосов
/ 25 декабря 2009

Вы, вероятно, говорите о SystemC , который представляет собой набор классов C ++ и макросов, используемых в основном для моделирования (на уровне транзакций), а не для синтеза. Модель высокого уровня может затем использоваться в качестве золотой ссылки для проверки описания уровня передачи регистра (RTL), которое обычно кодируется в VHDL или Verilog.

1 голос
/ 18 мая 2012

Они могут говорить о языке программирования, таком как Handel-C, который является своего рода диалектом Си, предназначенным для аппаратного программирования. Handel-C может быть прямо или косвенно скомпилирован в HDL, что, в свою очередь, создает конфигурацию FPGA (т. Е. «Программу» на FPGA).

Хотя VHDL и Verilog гораздо сложнее выучить, я предлагаю вам начать прямо сейчас. Когда вы делаете вещи, связанные с ПЛИС, вы обычно заинтересованы в эффективности. Handel-C, скорее всего, сделает менее эффективный код, чем код, который вы можете написать вручную (на VHDL или Verilog).

Редактировать: Нет варианта C ++ Handel-C или связанных с ним компиляторов, которым я когда-либо руководил.

1 голос
/ 21 декабря 2010

То, что вы имеете в виду, это «поведенческий синтез», метод компиляции, который позволяет принимать последовательный код в качестве входных данных (C, SystemC, C ++) и автоматически генерировать пару FSM + Datapath в VHDL или Verilog, которую затем можно синтезировать используя обычные синтезаторы Xilinx или Altera.

На сегодняшний день существует множество "поведенческих синтезаторов":

  • CatapultC от Mentor Graphics позволяет использовать большое подмножество C, а также C ++
  • Синтезатор из Forte Design System (на основе systemC) [ edit 2015 : теперь Cadence]
  • для ПЛИС, ImpulseC кажется вполне зрелым
  • [ edit 2015 ] для Xilinx FPGA: Vivado-HLS

Надеюсь, это поможет

1 голос
/ 06 ноября 2010

как некоторые из вас, я фанат C ++. Я думаю, что было бы здорово использовать SystemC для работы с fpga. В поисках этого я нашел следующую страницу. Может быть, это может заинтересовать некоторых из вас.

http://www.es.ele.tue.nl/~ljozwiak/education/5JJ70p/blocks/4/sc2fpgaflow.html

1 голос
/ 21 декабря 2009

Как и другие говорили, большинство FPGA разработаны с использованием VHDL или Verilog . Я также видел PALASM , использовавшийся несколько лет назад для небольших проектов. Дизайн представляет собой логическое описание, которое преобразуется в настройки, которые конфигурируют FPGA. Verilog основан на c, поэтому знание c поможет в изучении verilog, однако FPGA по своей природе параллельны, так что даже если синтаксис может выглядеть похожим, не так уж много другого.

...