Vivado のインストールと使いかた (2) 基本フローと LED 点滅回路の動作確認

FPGA の設計は様々な言語で行うことが出来て、ツールもかなり複雑になっているので、ここでは VHDL による最も簡単な LED 点滅回路の作成フローを解説します。以下、

  • Vivado の起動と新規プロジェクトの作成
  • ソースコード (VHDL) の作成
  • 制約ファイル (XDC) の作成とビットストリーム・ファイルの生成
  • FPGA への書き込み

の順で解説します。

Vivado の起動と新規プロジェクトの作成

1.Vivado を起動します。類似のものに Vivado HLS というものがありますが、これは別のアプリケーションです。

2.Vivado を起動したら、Quick Start の Create Project、もしくは File -> Project -> New からプロジェクトの新規作成を行います。

FPGA の設計は様々な言語で行うことが出来て、ツールもかなり複雑になっています。
今回は、VHDL による LED 点滅回路を用いて Vivado の基本的な設計の流れを解説します。

3.プロジェクト名と保存先を指定します。


4.次に一番上の RTL Project を選択します。


5.ソースコードの追加画面になるので、右下にある “Create File” をクリックして新規ファイル(ここでは VHDL を選択)を作成します。ファイル名はプロジェクト名と同じにしました。



6.続いて、制約ファイルを作成します。これもここではプロジェクト名と同じにしました。



7.使用するボードに搭載されている FPGA を指定します。パッケージの他に、スピードグレードも指定する必要があります。


ソースコード (VHDL) の作成

8.以上でプロジェクトが出来ますが、続いてソースコードの作成ウィザードが始まります。エンティティ名は先程指定した VHDL ファイルの名前と同じに、ポート名に “CLK_IN” と “LED_OUT” の2つを追加します。ポート名とは、入出力名のことで、これがそのまま端子名となります。

9.これで VHDL ファイルが作成されるので、SourcesのDesign Sources にある “Blink_LED001” をダブルクリックすると、編集できるようになります。


10.先程のウィザードで指定したエンティティやポートの指定が完了しているので、architecture 以降を追記して、下記のようにします。ここで冒頭に、”use IEEE.STD_LOGIC_UNSIGNED.ALL;” も追記してください。これは+演算子を使用するためのものです。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity Blink_LED001 is
    Port ( CLK_IN : in STD_LOGIC;
           LED_OUT : out STD_LOGIC);
end Blink_LED001;

architecture Behavioral of Blink_LED001 is

    signal DATA_A : std_logic_vector(24 downto 0);

begin
    process (CLK_IN)
    begin
        if (CLK_IN'event and CLK_IN = '1') then
            DATA_A <= DATA_A + '1';
        end if;
    end process;

    LED_OUT <= DATA_A(24);
end Behavioral;

11.コードが出来たら、① Save ボタンでファイルを保存し、② 左下の方にある “Run Implementation” をクリックします。

12.論理合成も行うかの確認と、実行ジョブ数を聞かれるので、そのまま進みます。

13.論理合成、インプリメンテーションが無事完了すると下記のメッセージになるので、”Open Implementation Design” を選択して、再度プロジェクトマネージャに戻ります。

制約ファイル (XDC) の作成とビットストリーム・ファイルの生成

14.次に制約ファイルを記述します。ファイル自体は既に出来ているので、Sources の Constraints -> constrs_1 の下の “Blink_LED001.xdc” をダブルクリックして編集します。

15.使用するボードのクロック入力端子、LED 出力端子に合わせて、下記のように記述します。(下記例はクロック入力端子 CLK_IN が T4 番ピン、LED出力端子 LED_OUT が B6 番ピンの場合です。)

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]

set_property PACKAGE_PIN T4 [get_ports CLK_IN]
set_property PACKAGE_PIN B6 [get_ports {LED_OUT}]
set_property IOSTANDARD LVTTL [get_ports CLK_IN]
set_property IOSTANDARD LVTTL [get_ports {LED_OUT}]

16.VHDL ファイルと同様に、保存したら、”Run Implementation” を再度実行します。成功すると下記のようになるので、今度は “Generate Bitstream” を選択してビットファイルを生成します。

FPGA への書き込み

17.ビットストリーム・ファイルの生成が完了すると下記のようになるので、各ボードに合わせて FPGA へ書き込めば完成です。Xilinx 標準の書き込み器(Platform Cable USB II 等)で書き込む場合は、ボード接続、電源投入後に下記の “Open Hardware Manager” で書き込めます。

18.最初にボードを接続した際は左下の Open Hardware Manager -> Open Target を左クリックして “Auto Connect” を選択します。

19.接続できると、その下の Program Device が選択できるようになるので、これをクリックして対象の FPGA デバイスを選択します。

20.そうすると下記のように書き込むビットストリーム・ファイルの選択になるので、このまま進めば書き込みが開始されます。

すすたわり

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