教授はクラスで、学生は Verilog でプログラミングを学んだなどと言うべきではないと言いました。彼は、Verilog のようなものは、設計には慣れているが、プログラミングには慣れていないと述べた。では、Verilog は他のプログラミング言語とどう違うのでしょうか?
8 に答える
Verilog は、VHDL と同様に、ハードウェアを記述することを目的としています。代わりに、C や C++ などのプログラミング言語は、ソフトウェア プログラムの高レベルの記述、つまりマイクロプロセッサが実行する一連の命令を提供します。
実際には、Verilog と VHDL は見た目はよく似ていますが、プログラミング言語と同じ機能を提供するわけではありません。たとえばfor
、C/C++ のループは、特定のコード スニペットの順次実行を表します。代わりに、for ... generate
Verilog/VHDL のループは、同じハードウェア ビルディング ブロック (論理ゲートなど)の複数の並列インスタンスを記述します。AND
正確には、Verilog にも単純なループが存在しfor
ますが、これも「合成可能」でなければなりません。つまり、コンパイラは記述に適合するロジックを生成できなければなりません。
通常、Verilog/VHDL の初心者は、特定の関数/アルゴリズムを C/C++ タイプの疑似コードから直接 Verilog/VHDL に「変換」したくなるでしょう: 驚くべきことに、それが機能する場合もありますが、常に劇的に貧弱な設計につながります。優れた Verilog/VHDL プログラマーになるには、これらの違いを十分に認識しておく必要があります。
Verilog はハードウェア定義言語です。プログラミング言語は一般に、ハードウェアを再構成するためではなく、既存のハードウェアに何をすべきかを伝えるための言語であると理解されています。
これは HDL であるため、ハードウェアを定義する必要があり、Verilog で行われたもの (実際には何でもなく、合成可能なもの) は実際のハードウェアに合成されます。したがって、ハードウェアを作成できないため、クラスや OOPS コンセプトなどのプログラミング機能だけを使用することはできません。
しかし、C では、すべてが実行可能な 16 進ファイルに変換され、プログラムの実行中に RAM にロードされます。
もう 1 つの基本的な違いは、ハードウェアではすべてが並行処理されることです。そのため、a=b+1 と c=d+1 を Verilog で記述した場合、合成されたハードウェアでは両方のモジュールが同時に動作します。しかし、C ではすべてがシーケンシャルであるため、同じ C プログラムでは、実際には両方の命令がプロセッサに 1 つずつロードされます。
ソフトウェアをプログラムするためではなく、ハードウェア設計を記述するためのプログラミング言語ですが、出力は必ずしも私たちが理解している「アプリケーション」ではありません。
言語には正式な構文があります。
Verilog には、論理ネットリスト (RTL) を記述する機能と、それらのシミュレーションを容易にする機能が含まれています。RTL 記述をプログラムとして記述することは、それをそのように記述する人が論理設計または論理合成を十分に理解していないことを伝える可能性があります。テストベンチ スティミュラスをプログラムとして説明するのが適切です。
verilog/vhdl は、電子デバイスに組み込まれる特定のアプリケーション システム オン オン チップを作成および設計するために使用されます。
コンピューター上の c/c++ 使用設計ソフトウェア