マスター VHDL:FPGA および ASIC 設計の包括的な入門
チュートリアル – VHDL の概要
VHDL とは恐ろしい頭字語です。 V の略です。 HSIC H アードウェアD 説明L 言語。頭字語の中の頭字語、すごいですね! VHSIC はV の略です。 エリハ ああす 私のおしっこ 統合されたC 回路。したがって、VHDL を展開するとVとなります。 ery 高速集積回路 H アードウェアD 説明L 言語。ふー、それは一口です。 VHDL は、FPGA と ASIC を設計するために教育やビジネスで使用される 2 つの言語のうちの 1 つです。これらの魅力的な回路に慣れていない場合は、まず FPGA と ASIC の概要から恩恵を受けるかもしれません。 VHDL と Verilog は、デジタル設計者が回路を記述するために使用する 2 つの言語であり、C や Java などの従来のソフトウェア言語とは設計上異なります。
以下の例では、 を説明する VHDL ファイルを作成します。 アンドゲート。復習として、単純な And ゲートには 2 つの入力と 1 つの出力があります。出力は、両方の入力が 1 に等しい場合にのみ 1 に等しくなります。以下は、VHDL で説明する And ゲートの図です。
アンアンドゲート
さあ、始めましょう! VHDL の基本単位は信号と呼ばれます。 。ここでは、信号が 0 または 1 のいずれかであると仮定しましょう (実際には他の可能性もありますが、それについては後で説明します)。基本的な VHDL ロジックをいくつか示します。
signal and_gate : std_logic; and_gate <= input_1 and input_2;
コードの最初の行は、std_logic タイプの信号を定義しており、それは and_gate と呼ばれます。 Std_logic は信号を定義するために最も一般的に使用されるタイプですが、他にも学習する必要があるタイプがあります。このコードは、1 つの出力 (and_gate) と 2 つの入力 (input_1 と input_2) を持つ AND ゲートを生成します。キーワード「and」は VHDL で予約されています。 <=演算子は代入演算子として知られています。上記のコードを口頭で解析するときは、「信号 and_gate が input_1 を取得し、input_2 と結合します。」と声に出して言うことができます。
ここで、input_1 と input_2 がどこから来たのか疑問に思われるかもしれません。名前が示すとおり、これらはこのファイルへの入力であるため、ツールにそれらについて伝える必要があります。ファイルへの入力と出力はエンティティで定義されます。 。エンティティには、ファイルへのすべての入力と出力を定義するポートが含まれています。単純なエンティティを作成しましょう。
entity example_and is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic ); end example_and;
これがあなたの基本的なエンティティです。これは、example_and というエンティティと 3 つの信号、2 つの入力と 1 つの出力を定義しており、これらはすべて std_logic タイプです。これを完了するには、もう 1 つの VHDL キーワードが必要です。それはアーキテクチャです。 。アーキテクチャは、特定のエンティティの機能を記述するために使用されます。これを論文と考えてください。エンティティは目次であり、アーキテクチャは内容です。このエンティティのアーキテクチャを作成しましょう。
architecture rtl of example_and is signal and_gate : std_logic; begin and_gate <= input_1 and input_2; and_result <= and_gate; end rtl;
上記のコードは、エンティティ example_and の rtl と呼ばれるアーキテクチャを定義します。アーキテクチャによって使用されるすべての信号は、「is」キーワードと「begin」キーワードの間に定義する必要があります。実際のアーキテクチャ ロジックは、「begin」キーワードと「end」キーワードの間にあります。このファイルの作成はほぼ完了です。最後に、どのライブラリを使用するかをツールに指示する必要があります。ライブラリは、ファイル内で特定のキーワードがどのように動作するかを定義します。現時点では、ファイルの先頭に次の 2 行が必要であることを当然のこととして考えてください。
library ieee; use ieee.std_logic_1164.all;
おめでとうございます!最初の VHDL ファイルが作成されました。完成したファイルはここで見ることができます:
library ieee; use ieee.std_logic_1164.all; entity example_and is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic ); end example_and; architecture rtl of example_and is signal and_gate : std_logic; begin and_gate <= input_1 and input_2; and_result <= and_gate; end rtl;
バカとゲートを作成するためだけに大量のコードを書かなければならなかったように思えますか?まず第一に、ゲートは愚かではありません。第二に、あなたは正しいです。 VHDL は非常に冗長な言語です。ソフトウェアでは非常に簡単に実行できることを、Verilog や VHDL などの HDL では大幅に時間がかかるという事実に慣れてください。しかし、ソフトウェア担当者に、コンウェイのライフ ゲームを表示する VGA モニターに画像を生成してみてもらい、彼らが驚いて頭が回転するのを見てください。ちなみにその動画はVHDLとFPGAで作成されています。それはすぐにできるようになります!
次に、もう 1 つの基本的な VHDL キーワードであるプロセスについて説明します。
VHDL
- VHDL での符号付きと符号なし
- ステートメントデバウンサーの例を生成する
- Tcl を使用したインタラクティブなテストベンチ
- Quartus Prime IP ライブラリを VUnit にリンクする方法
- VHDL のプロセスでプロシージャを使用する方法
- Pmod SSD 用 VHDL デュアル 7 セグメント ディスプレイ コントローラー – 簡単な FPGA 統合
- VHDL で同時実行ステートメントを作成する方法
- VHDL で信号ベクトルを作成する方法:std_logic_vector
- VHDL 変換の例
- 最も一般的な VHDL タイプ std_logic の使用方法
- VHDL でループと終了を使用する方法