5

私は主に電気技師からCがfpgaの作業に使用されていると聞いています。

C ++はどうですか?C ++を使用することに不利な点はありますか?ハードウェアのプログラミング時に必要な並列処理は、CよりもC++の方が適していると思います。

また、ハードウェアと互換性のあるc ++を作成するために、その後何を使用しますか?

4

16 に答える 16

18

FPGA が VHDL または Verilog でプログラムされていることは確かです。

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

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

アルテラが C から HDL へのトランスレータもいくつか提供していることは知っています。ただし、小さなデザイン以外に使用できるとは思えません。

于 2009-12-21T02:46:53.563 に答える
9

FPGA をプログラムする最も簡単な方法は、LabView の FPGA モジュールを使用することです。ただし、これはハードウェアとソフトウェアにあなたを結びつけることにもなります。安価なソリューションではありませんが、LabVIEW 以外のことを学ばなくてもプログラムをハードウェアに組み込む最速の方法であることは間違いありません。

于 2009-12-21T02:50:58.383 に答える
7

C または C++ を使用して FPGA をプログラムできますが、非常に高価な高位合成ソフトウェアが必要です。CatapultC は、タイミングのない C++ でアルゴリズムを記述できるようにする Mentor Graphics の製品です。次に、その C++ を RTL VHDL または Verilog に合成します。しかし、CatapultC は 100,000 ドルをはるかに超える価格で販売されているため、愛好家向けではありません。ImpulseC という別の製品があり、C コードを記述して RTL に合成することができますが、C++ ではなく C のみを処理すると確信しています。ImpulseC は約 2000 ドルです。

愛好家の場合は、VHDL または Verilog を使用してデザインを記述し、Xilinx または Altera の無料ツールを使用してそのコードを合成し、FPGA をプログラムするのがおそらく最善です。

于 2010-02-06T02:10:23.933 に答える
4

FPGA とのインターフェイスにC を使用している可能性があります。設計クラスで作業するときは、Verilog を使用して FPGA をプログラムし、付属の Linux ボードで C を使用しました。その場合、C++ よりも C で小さなプログラムを作成する方が簡単であるため、C を使用している可能性があります。

于 2009-12-21T03:21:55.497 に答える
4

おそらく、合成ではなく、主に (トランザクションレベルの) モデリングに使用される C++ クラスとマクロのセットであるSystemCについて話しているでしょう。高レベル モデルは、通常 VHDL または Verilog でコーディングされているレジスタ トランスファー レベル (RTL) 記述を検証するためのゴールデン リファレンスとして使用できます。

于 2009-12-24T22:21:35.473 に答える
3

一部の皆さんと同様に、私は C++ のファンです。SystemC を使用して fpga を操作するのは素晴らしいことだと思います。それで探したら次のページにたどり着きました。多分それはあなたの何人かの興味を引くかもしれません。

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

于 2010-11-06T01:30:13.380 に答える
2

あなたが言及しているのは「動作合成」です。これは、シーケンシャル コードを入力 (C、SystemC、C++) として取り、VHDL または Verilog で FSM+Datapath ペアを自動的に生成し、通常のザイリンクスを使用して合成できるコンパイル手法です。またはアルテラのシンセサイザー。

今日まで、多くの「行動シンセサイザー」があります。

  • Mentor Graphics の CatapultC を使用すると、C と C++ の大きなサブセットを使用できます。
  • Forte Design System の Cynthesizer (systemC ベース) [編集 2015 : now Cadence]
  • FPGAの場合、ImpulseCはかなり成熟しているようです
  • [編集 2015 ] ザイリンクス FPGA 用: Vivado-HLS

お役に立てれば

于 2010-12-21T11:21:19.673 に答える
1

彼らは、ハードウェアプログラミングを対象としたある種のC方言であるHandel-Cのようなプログラミング言語について話しているのかもしれません。Handel-Cは、直接または間接的にHDLにコンパイルできます。これにより、FPGA構成(つまり、FPGA上の「プログラム」)が作成されます。

VHDLとVerilogを習得するのははるかに困難ですが、すぐに始めることをお勧めします。FPGA関連の作業を行う場合、通常は効率に関心があります。Handel-Cは、(VHDLまたはVerilogで)手動で記述できるコードよりも効率の低いコードを作成する可能性があります。

編集:私が今までに頭に置いたHandel-Cまたは関連するコンパイラのC++バリアントはありません。

于 2012-05-18T13:12:53.560 に答える
1

他の人が言っているように、ほとんどのFPGAはVHDLまたはVerilogを使用して設計されています。また、数年前に小さなデザインにPALASMが使用されているのを見ました。デザインは、FPGAを構成する設定に変換されるロジックディスクリプションです。Verilogはcに基づいているため、cを知っているとVerilogの学習に役立ちますが、FPGAは本質的に並列であるため、構文が似ているように見えても、他の方法ではあまり変換されません。

于 2009-12-21T04:57:50.803 に答える
1

頭のてっぺんから思いつく 2 つ: C++ は、コンパイラ (この場合は HDL トランスレータ) を作成するのがはるかに複雑であり、fpga プログラミングが呼び出すような低レベルのプログラミングでは役に立たない機能が多すぎます。 .

于 2009-12-21T02:59:26.293 に答える
0

C/C++ を使用して FPGA をプログラムできます。ザイリンクスには、C/C++ を使用して FPGA をプログラムするための Eclipse ベースのツールである SDSoC があります。これは基本的に、合成フラグが設定されたコードの一部に対してハードウェア アクセラレータをビルドします。これは、ARM+FPGA ベースの zynq デバイス、ホスト コードが ARM で実行されていることを前提としています。

PC ベースのソリューション用に別のフロー SDAccel があります。X86 上のホスト コードと PCIe スロットに接続された FPGA 上のアクセラレータ。

于 2016-12-10T00:12:14.813 に答える
0
  1. FPGA で実行されているソフト プロセッサを使用し、そこから C でコードを記述できます (Altera の NIOS、Xilinx の Microblaze など)。
  2. OpenCL を使用して ARM プロセッサから FPGA に接続する SOC FPGA。
于 2016-05-04T14:23:21.977 に答える
-1

これがまだ言われているかどうかはわかりませんが (私はすべての回答を読んでいません)、あなたが聞いているのはソフトコアで実行されているソフトウェアである可能性があります...たとえば、アルテラには Linux を実行できる Nios II があります。カーネル (uCLinux) を使用すると、プリロードされた C プログラムをそのソフト コア上で実行でき、FPGA と通信できます。そのため、FPGA は引き続きハードウェア側の VHDL/Verilog でプログラムされ、それが保持するデータはすべて、ソフト コアの OS 上で実行される小さなアプリからアクセスできます。uCLinux /実行中のカーネルが言語をサポートしている限り、C++が許可されると確信しています。

〜ドディ

于 2012-11-16T21:08:44.857 に答える
-2

通常、C++ と C ではより大きな標準ライブラリが得られますが、C はハードウェアの動作に近く、電気技術者にとってより簡単です。

于 2009-12-21T06:51:15.713 に答える