Quartusを使って、回路図とHDLの混在でFPGAを設計する

FPGA

関連記事 FPGAの記事一覧

スポンサーリンク

回路図設計と言語設計

Quartusを使ってFPGAを設計するには、回路図にロジック素子を配置して設計する方法と、HDL(Hardware Description Language)などで言語設計する手法があると思います。

どちらを、どう使うかは人それぞれだと思いますが、階層のトップは回路図で設計し、各機能のモジュールはHDLで設計するのが良いかなと、私は思っています。

トップ階層が回路図だと、各モジュール間の接続がわかりやすいです。

各機能モジュールも小規模であれば回路図で作成しても良いですが、大規模な場合には回路設計するのは大変なので、言語設計の方が良いと思ってます。

ただ、回路図設計を多用すると、FPGAメーカーが変わった時とかの移行が大変そうです。

今回は、Quartusを使って、回路図とHDLの混在でFPGAを設計してみたいと思います。

ブロック図

今回は、以下のブロック図のような混在設計をしてみたいと思います。

トップ階層は回路図で生成します。そこにAND素子を配置します。

モジュール1と2は、HDL(VHDLを使います)でORとXORを作成します。
モジュール3は、回路図でNOT(インバーター)を作成します。

それぞれのモジュールを生成したら、シンボル化してトップ階層の回路図に配置します。

モジュール作成

トップの回路図

まずはトップの回路図を生成しておきます。

トップの回路図を生成したら、以下の画像のように2入力のAND素子と入出力ピンを配置しておきます。トップ回路図の生成や部品の配置方法はQuartus入門の記事も参照ください。

ここまできたら、トップの回路図はとりあえずこのままにしておきます。

HDLモジュールの作成

次にHDLモジュールの作成に移りますが、HDLはVHDLを使用します。

VHDLのモジュール作成は、トップ回路図上で、File -> Newを選択します。

以下のウインドウが開くので、”VHDL File”を選択してOKを押します。

するとVHDLを作成するためのファイルが生成されます。

モジュール1 : ORモジュールの作成

VHDL用のファイルが生成されたら、モジュール1のORモジュールをVHDLで記述します。

記述したVHDLは以下です。

library ieee;
use ieee.std_logic_1164.all;

entity or_2 is
port(
  input1		: in std_logic;
  input2		: in std_logic;
  output_or	: out std_logic
);
end;

architecture rtl of or_2 is
begin
  output_or <= input1 or input2;
end rtl;

エンティティ名は”or_2″としました。このVHDLをファイルを保存するときは、ファイル名を”or_2″にします。

VHDLの記述とファイルの保存が終了したら、このモジュールを回路図上で使用するためのシンボルを生成します。

シンボルの生成方法は、以下の画像のように、
File -> Create / Update -> Create Symbol Files for Current File
を選択します。

errorがなければ、シンボルが生成されました。

そしたら、生成した”or_2″モジュールをトップの回路図に配置してみます。

トップの回路図を表示させたら、以下の画像のように、”Symbol Tool”アイコンをクリックします。

以下のウインドウが開くので、”Name:”欄に、VHDLのエンティティ名にした”or_2″と入力します。

すると、ウインドウの右側に、生成されたシンボルが表示されます。

そしたら、OKボタンを押し、トップの回路図上に”or_2″シンボルを配置します。

モジュール2 : XORモジュールの作成

作成方法はモジュール1のORと同じなので、XORのソースコードだけ記載しておきます。

library ieee;
use ieee.std_logic_1164.all;

entity xor_2 is
port(
  input1		: in std_logic;
  input2		: in std_logic;
  output_xor	: out std_logic
);
end;

architecture rtl of xor_2 is
begin
  output_xor <= input1 xor input2;
end rtl;

エンティティ名は”xor_2″としました。

“xor_2″のシンボルを作成したら、トップの回路図上に”xor_2″シンボルを配置します。

回路図モジュールの作成

次はHDLではなく、回路図でモジュールを作成してみます。

HDLの時は、File -> Newで”VHDL File”を選択しましたが、回路図の場合は、“Block Diagram/Schematic File”を選択します。

すると新規回路図が表示されるので、以下の画像のように、NOTを使ったインバーター回路を作成します。

この回路図は、“invert_schema”という名前で保存しておきます。

そしたら、HDLの時と同様、
File -> Create / Update -> Create Symbol Files for Current File
でシンボルを作成します。

errorがでなければ、シンボル作成完了です。

シンボル作成が終わったら、トップの回路図に配置します。
これもHDLのときと同じで、トップの回路図で”Symbol Tool”アイコンをクリックし、”Name:”に”invert_schema”と入力します。

OKを押して、トップの回路図に配置します。

最終的なトップの回路図

最終的なトップの回路図です。

入力信号は、全モジュール共通で、入力ピンは2本だけです。

出力は、各モジュールに出力ピンを配置しました。

そしたらトップの回路図でコンパイルしておきます。errorがでなければ、モジュール作成は完了です。

シミュレーション

そしたら作成したモジュールでシミュレーションです。

シミュレーション方法は、Quaruts入門の記事も参照してください。

シミュレーション結果は、以下の画像のようになりました。

上の2つの信号が、入力信号です。その下の4信号が出力信号です。

AND、OR、XOR、NOTすべて正常にシミュレーションできていたので、回路図とHDLの混在設計は無事にできました!

関連記事 FPGAの記事一覧

タイトルとURLをコピーしました