【Zynq】ZyboでPLのみ使用してLチカしてみた

ZyboはZynqの搭載された評価ボードです。昔購入してそのままタンスの肥やしになっていましたが、今回ちゃんと触ってみたいと思います。まずはSoC部分であるPS(Processing System)は使用せず、PL(programmable Logic)のみを使用してLEDをチカチカします。

Zybo Zynq-7000 ARM/FPGA SoC Trainer Board – digilent

秋月電子でも購入できます。今回digilentの購入ページを見て気づきましたが、+10ドルでSDSocのバウチャーをつけられるんですね。触ってみたい。

以下、OSはWindows10, Vivado 2016.3がインストールされていることを前提とします。

事前準備

Zybo用Board Files

Zybo用のBoard Filesを用意。これを使用するとVivadoでのZybo用プロジェクト作成が簡単になります。ファイルは以下リンクからダウンロード。今回はVivado 2016.3なので、”Vivado 2015.1 and Later”の方です。
Installing Vivado Board Files for Digilent Boards

Zybo Board Files

Zybo Board Files

VivadoにてダウンロードしたBoard Filesを使用可能にします。といっても、ファイルを該当のフォルダに格納するだけです。

格納ファイルはダウンロードファイル中の、”vivado-boards-master\new\board_files”に格納されている”Zybo”フォルダ。格納先は”C:\Xilinx\Vivado\2016.3\data\boards\board_files”です。(Vivado 2016.3のインストール場所がデフォルト指定の場合)

Zybo用XDCファイル

Zybo用のXDCファイルも既に用意されており、以下からダウンロード可能です。

https://github.com/Digilent/ZYBO/tree/master/Resources/XDC

Zybo xdc

ダウンロード時点では全制約がコメントアウトされています。今回はクロックと4つのLEDを使用しますので、以下のようにコメントアウトを削除します。(以下以外は変更なしです。)

#Clock signal
#IO_L11P_T1_SRCC_35
set_property PACKAGE_PIN L16 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports clk]

#LEDs
#IO_L23P_T3_35
set_property PACKAGE_PIN M14 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]

#IO_L23N_T3_35
set_property PACKAGE_PIN M15 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]

#IO_0_35
set_property PACKAGE_PIN G14 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]

#IO_L3N_T0_DQS_AD1N_35
set_property PACKAGE_PIN D18 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]

LED点灯用VHDファイル

今回使用するVHDファイルを先に用意しておきます。4つのLED中1つだけ消灯。消灯するLEDは1s毎にシフトしていきます。

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity led is
    port    (
        clk     :   in  std_logic;

        led     :   out std_logic_vector (3 downto 0)
        );
end led;

architecture rtl of led is

signal count_1s     : std_logic_vector (31 downto 0) := (others => '0');
signal led_shift    : std_logic_vector (3 downto 0) := "1110";

begin

process (clk) begin
    if (rising_edge(clk)) then
        if (count_1s = x"07735940") then
            count_1s <= (others => '0');
        else
            count_1s <= count_1s + 1;
        end if;
    end if;
end process;

process (clk) begin
    if (rising_edge(clk)) then
        if (count_1s = x"07735940") then
            led_shift <= led_shift(2 downto 0) & led_shift(3);
        end if;
    end if;
end process;

led <= led_shift;

end rtl;

Vivado使用手順

プロジェクト作成

自分のプロジェクトファイル構成は次の通りです。この通りにする必要はありませんが、以降の説明はこの構成を前提とします。

C:\FPGA\ZYBO\LED
├─2016.3         :Vivadoプロジェクト
├─constraint     :制約ファイル
└─rtl            :VHDファイル

Vivado起動画面で"Create New Project"を選択。選択後のダイアログはそのままNext。

Vivado Create New Project
Vivado Create New Project

プロジェクト名とプロジェクトの場所を指定。

Vivado Project Name Location

プロジェクト種別を指定。今回は通常のRTLプロジェクトですので、一番上を選択。

Vivado Project Type

ソースファイルを追加。用意しておいたled.vhdを追加します。その次のIP追加ダイアログは何もせずNext。

Vivado Project Add Source

Vivado Project Add IP

制約ファイルを追加。用意しておいたZYBO_Master.xdcを追加します。

Vivado Project Add Constraint Files

使用デバイスを選択します。今回はZybo搭載のZynqを選択すればよいのですが、事前用意でボード情報をVivadoへ追加してあるためそれを使用します。

"Select"で"Boards"を選択。下のリストにZyboが表示されるので、こちらを選択してNext。

Vivado Project Parts Zybo

最終確認が表示されるので、問題なさそうであればNext。以上でプロジェクトが作成され、Vivadoの初期画面が表示されます。

Vivado Project Summary

bitファイル生成

画面左側の"Flow Navigator"に"Program and Debug"-"Generate Bitstream"とあるのでクリック。合成、配置配線、bitファイル生成まで一気に実行されます。もし何らかのエラーが発生した場合は適宜対処して下さい。

Vivado Synthesis Implement Gnerate Bitstream

問題なく処理が終了すると"Bitstream Generation Completed"ダイアログが表示されるので、"Open Hardware Manager"を選択してOKを選択。Hardware Managerが起動します。

Vivado Bitstream Generation Completed Open Harware Manager

実機実行

ZyboとPCをUSBケーブルで接続し、Zyboの電源を投入。正常にFPGAがコンフィグすると"LD10"が緑点灯します。

Zybo 接続 使用部品

Hardware Managerの"Open target"→"Auto Connect"を選択するとZyboが認識されます。その状態で"Program device"-"xc7z010_1"を押すとダイアログが表示されるので、そのまま"Program"を押下します。

Vivado Hardware Manager Open target Auto Connect

Vivado Hardware Manager Program device

Vivado Hardware Manager Program device

書き込みに成功するとLチカが開始されます。無事動作しました。

Zybo Lチカ

次はZynqらしく、ARMを使用してのLチカに挑戦する予定です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする