Vivadoプロジェクトと自作IPの作成

1.Vivadoプロジェクト作成

今回のLEDチカチカのプロジェクトはリファレンスデザインのプロジェクトを元として作ります。
リファレンスデザインのzipを解凍したフォルダ内は以下のようになっています。

project_directory

 

 

Hello Worldのときと同様にdesign_basic_settings.cmdを編集します。

編集が終わったら
vivado_create_project_batchmode.cmd → vivado_open_existing_project_guimode.cmd
または
vivado_create_project_guimode.cmd
のコマンドを実行してVivadoプロジェクトを作成し、VivadoのGUIモードで開きます。

プロジェクトが開かれると以下の画面が表示されます。
1-1

 

 

Vivadoの画面の左側の Flow Navigator -> Integrator -> Open Block Design をクリックすると
ブロックダイアグラムが表示されます。

1-2

現在はHello Worldに必要なモジュールだけが用いられています。
これから、ここにLEDチカチカに必要なモジュールを追加していきます。

 

 

 

2. 自作IPの作成

次にLEDへの出力を制御する部分を作成します。
とりあえず、Vivadoはそのままにしておきます。
フォルダ内の test_board/ip_lib に移動します。
そしてこの中に適当なエディタで led_ctrl.vhd というvhdlファイルを作成し、
以下のように編集します。

 

 

-- led_ctrl.vhd
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity led_ctrl is
    Port ( clk_ip      : in   std_logic;
           led_op      : out  std_logic;
           interval_ip : in   std_logic_vector( 31 downto 0)
           );
end led_ctrl;

architecture Behavioral of led_ctrl is
	signal clk         :	std_logic;
	signal led_toggle  :	std_logic;
	signal count	:  std_logic_vector( 31 downto 0);
	signal interval :  std_logic_vector( 31 downto 0);
begin
	clk	<=	clk_ip;
	led_op	<= led_toggle;
	process(clk) begin
		if(clk'event and clk='1') then
		    if(interval /= interval_ip) then
				count <= X"00000000";
			elsif(count = interval) then
			    if( count /= 0 ) then
				    count <= X"00000000";
				    led_toggle <= not led_toggle;
				end if;
			else
				count <= count + 1;
			end if;
		end if;
	end process;

	process(clk) begin
		if(clk'event and clk='1') then
   			interval <= interval_ip;
		end if;
	end process;
end Behavioral;

 

 

 

ここまでの作業で test_board/ip_lib/led_ctrl.vhd が追加されました。
ここでまたVivadoに戻ります。
Vivadoタブの Tools -> Create and Package IP をクリックすると、
以下の画面が出てくるので Next ボタンを押します。

2-2

 

 

以下の画面でPackage a specified directoryを選択し Next ボタンを押します。

2-3

 

 

以下の画面で Directory に先ほど作成した test_board/ip_lib/led_ctrl を指定し Next ボタンを押します。

2-4

 

 

以下の画面で何も変更せず Next ボタンを押します。

2-5

 

 

以下の画面で Finish ボタンを押すと自作IPのためのプロジェクトが別ウィンドウで立ち上がります。

2-6

 

 

画面左の Flow Navigator -> Project Manager -> Package IP をクリックして Package IP の画面を開きます。

2-7

 

 

Package IP 画面のReview and Package タブからPackage IP(またはRe-Package IP)ボタンをクリックします。

2-8

 

 

IPが作成された後以下のようなウィンドウが表示されるので yes ボタンを押して、
IP作成のためのプロジェクトを終了します。

2-9

 

 

以上の手順でLEDへの出力を制御するための自作IPの作成が完了しました。