【HDMI出力編(2)】ZyboのHDMI出力デモをVitis から実行してみた -プログラムの作成と実行-

Vitis
スポンサーリンク

本記事の概要

概要

今回の目的はDigilent社提供の画像をHDMI形式で出力するデモサンプルを実行させてディスプレイに画像を表示すること。
デモサンプルのうち、必要なファイル一式をWorkspaceに動かし、HDMI出力を実行することが可能

「Vitis」でのビジョンライブラリを試す前準備として、テスト画像をZynqからHDMIを通じて外部ディスプレイに出力することを目標にしています。
今回の記事では、”テスト画像をHDMI形式で出力”させるアプリケーションを紹介していきます。

前回の記事では、Digilent社が提供するHDMI出力デモのサンプルプログラムを読み込み、ハードウェアの設計を行いました。

前回同様に、Digilentのデモサンプルを参考にしつつ、デモサンプルをVitis 2020.2上で動作させてみましたので、今回の記事ではその方法を記載いたします。

この記事の対象読者
  • FPGAプログラミングの初学者
  • FPGAの開発に興味のある学生
  • Vitisを用いたアプリケーション開発は未経験のエンジニア
ひがし

それでは、興味のある方はぜひ最後までご覧ください!

目標と工程

開発目標

本記事の目標は次の通りです:

統合ソフトウェア開発環境VitisとFPGA設計環境Vivadoを用いて
Zybo経由で外部ディスプレイに画像を出力するアプリケーションを作成する

開発工程

開発工程

① DigilentのHPからHDMI出力デモのサンプルプログラムをダウンロード
② デモサンプルからZynq SoC内部のハードウェア構成を定めるプロジェクトを読み込む
③ デモサンプルからZynq SoCのARM CPUで動作する”HDMI出力”プログラムを読み込む(本記事)
④ ①と②を実装し、動作確認
(本記事)

システムの構成

開発環境

環境
  • 開発用PC: Windows 10, 64bit
    • Vivado Design Suite – HLx Edition – 2020.2
    • Vitis コア開発キット – 2020.2
  • 開発用基板: Zybo Zynq-7010評価ボード(Board Rev.4)
    • Zynq XC7Z010-1CLG400C

開発ボード Zybo Zynq-7010評価ボード

Vitisプロジェクトの作成

Vitis 2020.2のワークスペースの作成

“Hello World”アプリケーション、”LED点滅アプリケーション”を作成したときと同様に、Vitisのワークスペースを作成していきます。

ワークスペースの作成手順については、すでに過去の記事でまとめていますので、改めて確認したい方は[+]マークから詳細をご確認ください。

ワークスペースの作成手順
  1. Vivadoプロジェクトの[Tools]タブから、[Launch Vitis IDE]をクリックし、Vitis2020.2を立ち上げる
  2. “Workspace”のディレクトリを指定
  3. [Create Application Project]をクリックし、新しいアプリケーションプロジェクトを作成
  4. ハードウェアデザイン(XSAファイル)の読み込み
  5. アプリケーションプロジェクト名の指定
  6. ドメインの指定
  7. アプリケーションプロジェクトのテンプレートの読み込み
1. Vitis 2020.2の立ち上げ

まずはブロックデザインを作成したVivadoファイルを立ち上げ、[Tools]>[Launch Vitis IDE]を選択します。

2. Workspaceディレクトリの指定

立ち上がったウィンドウ上で、Workspaceを格納するディレクトリを指定します。指定が完了したら、[Launch]をクリックします。

3. アプリケーションプロジェクトの作成開始

新しくVitisのウィンドウが立ち上がります。[Create Application Project]をクリックし、新しいアプリケーションプロジェクトを作成していきます。

4. ハードウェアデザイン(XSAファイル)の読み込み

最初のウィンドウではそのまま[Next]をクリックします。

Vivadoで作成したハードウェアデザイン(XSAファイル)を読み込んでいきます。
[Create a new platform from hardware (XSA)]タブを選択し、[Browse]をクリックし、前回の記事で作成したXSAファイルを選択します。
選択が完了したら、[Next]をクリックします。

5. アプリケーションプロジェクト名の指定

アプリケーションプロジェクト名を入力し、アプリケーションを動作させるプロセッサの種類を選択したら、[Next]をクリックします。

6. ドメインの指定

今回は特に設定変更不要ですので、そのまま[Next]をクリックします。

7. アプリケーションプロジェクトのテンプレートの読み込み

今回はゼロからプログラムを作成していきますので、“Empty Application”を選択し、[Finish]をクリックします。

Vitis IDEのウィンドウの立ち上げまで完了したら、このワークスペース上で、”HDMI出力”プログラムを作成していきましょう。

HDMI出力プログラムのソースコードの作成

はじめに、プログラムのソースコードをワークスペースに追加します。

前回の記事でDigilentのHPからダウンロードした、HDMI出力のデモサンプルファイルからソースコードをWorkspaceに移します。

解凍したデモファイルの中から、[sdk]>[displaydemo]>[src]と移動し、その中のファイルを丸ごと、[workspace]内のフォルダに移していきます。

今回、Vitisで作成したアプリケーション名を[hdmi_out_application]としています。[workspace]内には、このアプリケーション名と同じ名前のフォルダ[hdmi_out_application]があるはずですので、その中の[src]というフォルダの中にダウンロードした以下のファイルを移していきます。

workspaceに移動するファイル一式
  • dynclkフォルダダイナミッククロックaxi_dynclkのドライバを動かすための関数
  • timer_psフォルダ:Processing System (PS)部におけるタイマを動かすための関数
  • display_ctrlフォルダビデオ生成部(AXI VDMAと Video Timing Controller)のドライバを動かすための関数
  • display_demo.c、display_demo.h:main関数とディスプレイの表示内容を切り替える関数

このファイルを移動させたらビルドを行います。

実装と動作確認

プログラムのビルドと実行

実装までの手順は、”Hello world”の場合と同様です。
後で確認できるように、[+]マークに詳細を記載しておきます。

①プロジェクトのビルド
まず、プラットフォームプロジェクトをビルドしていきます。
エクスプローラ内のプラットフォームプロジェクト(hdmi_out_system_wrapper)を選択し、右クリックします。[Build Project]を選択すると、ビルドが始まります。

今回、ビルドにかかった時間は17秒でした。

次に、システムプロジェクトをビルドしていきます。
エクスプローラ内のシステムプロジェクト(hdmi_out_application_system)を選択し、右クリックします。同様に[Build Project]を選択すると、ビルドが始まります。

②コンフィグレーション
回路基板をホストPCにつなぎます。
つないで電源を入れたら、PC側からFPGAへのbitstreamファイルの書き込み(コンフィグレーション)とアプリケーションソフトウェアのDDRへの書き込みを実行します。

“hdmi_out_application_system”を右クリックし、[Debug as]>[Launch Hardware]を選択すると、コンフィグレーションとソフトウェアの書き込みが実施されます。

③COMポートの接続
デモサンプルでは、UART経由でディスプレイ表示の画素数とパターンを切り替えることが可能です。UART通信を行うためのCOMポートを選択しておきましょう。
[Vitis Serial Terminal]の右上の[+]マークをクリックすると、”Connect to serial port”というウィンドウが立ち上がります。
このウィンドウ内の[Port:]から該当する[COM]を選択し、[OK]をクリックします。

プログラムの実行

では、[Resume]マークをクリックしてみましょう。

無事、ディスプレイに画像が表示されました!

ひがし

LED点滅回路と同様に、目に見える形でモノが動くとプログラムを動かしている実感がわきますね!
ディスプレイの表示内容を自由に変えられるともっと楽しくなると思います。

次回は、プログラムの内容を書き換えて、ディスプレイの表示を変えていきたいと思います。

ここまで読んでいただき、ありがとうございました。

次回の記事へのリンク

コメント