工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> VHDL

VHDLマスター:FPGAおよびASIC設計のための包括的入門

チュートリアル - VHDL入門

VHDLは実に冗長な頭字語です。VHSIC Hardware Description Languageの略で、頭字語の中に頭字語が含まれています。VHSICはVery High Speed Integrated Circuitを意味します。したがって、VHDLを完全に展開するとVery High Speed Integrated Circuit Hardware Description Languageとなります。なんとも長ったらしい名称です。VHDLは、教育機関とビジネスの両方でFPGAとASICの設計に用いられる2大言語の一つです。FPGAやASICに馴染みがない場合は、まずそれら魅力的な回路デバイスの入門から始めると良いでしょう。VHDLとVerilogは、デジタル設計者が回路を記述するために使用する2つの言語であり、CやJavaといった従来のソフトウェア言語とは設計思想が根本的に異なります。

以下の例では、ANDゲートを記述するVHDLファイルを作成します。おさらいとして、単純なANDゲートは2つの入力と1つの出力を持ち、両入力が1のときのみ出力が1になります。以下はVHDLで記述するANDゲートのイメージです。

ANDゲート

早速始めましょう!VHDLの基本単位はシグナルと呼ばれます。現時点では、シグナルは0または1の値を取ると考えてください(実際には他の値もありますが、後で説明します)。基本的なVHDLロジックは以下のようになります。

signal and_gate : std_logic; and_gate <= input_1 and input_2; 

1行目は、and_gateという名前のstd_logic型シグナルを定義しています。std_logicはシグナル定義に最も一般的に使用される型ですが、他にも学習していくことになります。このコードは、単一出力(and_gate)と2入力(input_1、input_2)を持つANDゲートを生成します。「and」はVHDLの予約語です。「<=」演算子は代入演算子と呼ばれます。上記コードを声に出して読むなら、「シグナルand_gateは、input_1とinput_2のANDを取得する」となります。

ここで、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というエンティティと、すべてstd_logic型の3つのシグナル(2入力、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; 

たった一つのANDゲートを作るのに、これほど大量のコードを書く必要があるのかと思われるかもしれません。まず、ANDゲートは決して「馬鹿げたもの」ではありません。そして、あなたの言う通り、VHDLは非常に冗長な言語です。ソフトウェアでは簡単なことでも、VerilogやVHDLといったHDLでは大幅に時間がかかることを覚悟してください。でも、ソフトウェア技術者にConway's Game of LifeをVGAモニターに表示させようとさせれば、彼らの頭がクラクラするのを目撃できるでしょう!ちなみに、その映像もVHDLとFPGAで生成されています。あなたもやがてそれができるようになります!

次は、VHDLのもう一つの基本キーワードであるprocessについて説明します。

VHDL

  1. 無料VHDLシミュレータ&エディタ導入ガイド:学生向けステップバイステップ
  2. VHDLにおける信号と変数の違いを理解する
  3. VHDLのWait-For文で実行を遅延させる
  4. VHDL変数の解説:実践例と信頼性設計のためのルール
  5. Tcl駆動テストベンチでVHDLコード・ロック・モジュールを検証する
  6. VHDLのCase-When文マスター:効率的なマルチプレクサ設計
  7. VHDLのsigned/unsigned型マスター:実践ガイド
  8. ブロックRAMにおける堅牢なVHDLリングバッファFIFOの設計
  9. 初めてのVHDLプログラム:ステップバイステップ Hello World チュートリアル
  10. プロセス内プロシージャでVHDLステートマシンをクリーンに設計
  11. PSLによるVHDLモジュールの形式的検証マスター