本記事ではVitisとVivadoを用いてZybo上のHelloWorldを出力するアプリケーションの作成をめざします。CPU上でHelloWorldプログラムを動かすために、Zynqのハードウェア構成を定めるプロジェクトを作成しました。SDKを用いられてきました。SDKから統合ソフトウェア開発環境「Vitis」へと移行しています。2020.2でも作成してみました。World”アプリケーションを作成する方法についてまとめます。Worldプロジェクトを作成するにあたり、次のリンク先のFPGAプログラミング大全を参考にしています。ZynqやMicroblazeなどのプロセッサを活用したシステム開発の方法が丁寧に記載されているので、初学者がさらにステップアップするのに非常に素晴らしい書籍だと思います。Zynq-7010評価ボードZyboのシステム構成図Zyboのマニュアルを参考にまとめると、以下のようなシステム構成になります。※本記事で必要なところのみを抜粋しています。実際の回路基板には他にも多くの有用な機能が含まれます。動作原理ひがし動作原理のポイントは以下の通りです。動作させるために、必要なプロジェクトとプログラムを設計していきます。;Zynq上で回路を構築するFPGA部分)に設計したロジックを書き込みます。System;CPUに加え、イーサネットやUSB、DDRメモリと通信するための周辺回路も内蔵されたブロック)とホストPCは、シリアルポートのUARTを介して交信します。Unit;デュアルコアのCPU+α)からシリアル通信でホストPCに送信されます。受信した文字列は、ホストPCで確認しましょう。DDRメモリには、CPUを動かすためのプログラムが格納されています。今後、LED点滅も試してみるので、ブロック図にはLED出力端子も記載しましたが、本日のテーマではこのモジュールは必要ありません。準備作業(Zyboのボードの読み込み)新しいプロジェクトを作成する前に、Zyboのボードに関するファイルを読み込んでおく必要があります。ボードファイルの読み込み方法は、この記事を参照してください。Project]をクリックし、新しいプロジェクトを作成します。新しいプロジェクトを作成するための、設定を入力するウィンドウが立ち上がります。設定に必要な情報を順番に入力していきましょう。最初のウィンドウで[Next]をクリックします。次に、プロジェクト名を設定します。今回、プロジェクト名を[hello_world_system]とし、プロジェクトを格納するフォルダを指定します。入力が完了したら、[Next]をクリックします。次に、プロジェクトの形式を指定します。Project]をそのまま指定しておき、[Next]をクリックします。次に、システムを構築する、FPGAチップまたは回路基板の種類を選択します。ここでは、すでに設定を読み込んでいるZyboのボードを指定します。[Boards]タブを選択肢、Search欄にZyboと入力します。Rev.4)」ですので、一番下の[Zybo]を選択します。選択が完了したら、[Next]をクリックしましょう。World”の文字列を受信することができませんでした...。半日くらい原因がわからずに悩み続けてしまいましたので、設定は丁寧に行うことが重要です。最後に、プロジェクトの設定のサマリが表示されますので、間違いがないことを確認したら、[Finish]をクリックしましょう。以上で、Vivadoのプロジェクトを作成することができました。SoCに実装する回路の設計を、ブロックデザイン上で行っていきます。Design]を選択します。すると、図のようなウィンドウが立ち上がります。ここで、デザイン名とブロックデザインの設計ファイルを格納するディレクトリを指定します。今回は、デザイン名を[hello_world_system]としました。入力が完了したら、[OK]をクリックします。空白のDiagramウィンドウが開きます。このウィンドウにZynqのプロセッサコアを表すIPを追加していきます。System]を選択します。いう名前のIPが追加されます。Automation]をクリックし、自動でコアの設定をしていきましょう。※Zyboのボードに関するファイルを読み込んでおかないとここで詰まりますので注意!自動化の設定を決定するウィンドウでは、何も変更せず[OK]をクリックします。“processing_system_7′′に接続ポート[DDR]と[FIXED_IO]が追加されます。このポートを介してそれぞれボード上のDDRメモリと、イーサネットやUSBのような周辺回路との、信号の入出力を行います。I/O)と呼ばれています。World”の文字列を送信するためのUARTのポートのみを使用します。World”のプログラムを実行するのに十分なモジュールは揃っているのですが、このままダイアグラムをもとにHDLファイルを作ろうとするとエラーが発生します。ポート”GP0′′のクロック(M-AXI_GP0_ACLK)に何も接続されていないためです。ポート”GP0′′は使用しません。このクロックも当然使用しませんが、エラー回避のため、図のように”FCLK_CLK_0”から”M-AXI_GP0_ACLK”へのクロック出力を繋ぐことで対処します。最後に、作成したブロックデザインに基づいて、設計をHDL言語で書かれたプログラムファイル(wrapperファイル)に変換していきます。この変換も自動でVivadoが行います。ひがしちなみに、”FCLK_CLK_0”はPLにクロックを提供する目的でPS側から出力されています。PSにおけるクロックはボード上に搭載されている振動子50MHzをもとに生成され、そのクロックがCPUやDDR、内蔵周辺回路、そしてそれを分周したものをPL側に提供しているようです。...]を選択します。すると、図のようにwrapperファイルが作成されます。FPGAに実装するためのbitstreamファイルの作成までを行います。Bitstream]をクリックします。次のようなウィンドウが出てきますが、そのまま[Yes]をクリックします。次の画面も、[OK]をクリックします。bitstream作成が行われます。bitstreamの作成が完了するまでに数分ほど時間がかかります。作成が完了すると、次のような作成完了のウィンドウが立ち上がります。今回、特にレポート等の確認はしなくてもよいので、そのまま[Cancel]でウィンドウを閉じます。SoCに実装する回路設計図ができました。次に、Vitisでプラットフォームプロジェクトを作成していくのに必要な、ハードウェアデザインをエクスポートしていきます。このときエクスポートされるファイルはXSAファイルと呼ばれます。...]と順次選択していきます。Platformというウィンドウが立ち上がりますので、[Next]をクリックします。ハードウェアデザインにbitstreamファイルを含めるかどうか選べます。bitstream]を選択し、[Next]をクリックします。次に、XSAファイル名と格納するディレクトリを指定します。今回は、ファイル名を[hello_world_system_wrapper]としました。入力が完了したら、[Next]をクリックします。最後に、設定を確認し、間違いがなければ、[Finish]をクリックします。この作業までで、赤枠のPSのハードウェアの構築までが完了しました。ひがしあとは、ソフトウェア側の構築、つまりCPUを動かすためのプログラムを作成するだけです。2020.2上で作成。本記事ではVitisとVivadoを用いてZybo上で動作するHelloWorldアプリケーションを作成しています。Worldの出力を確認しました。Zynqが外部からのHDMI信号を受信しDDRメモリに格納した後、DDRメモリを読み出しVGA信号を送信するアプリケーションの解説を行っています。HDMI信号をZynqが受信する際の割り込みの設定方法について紹介・解説しました。本記事では、任意精度型ライブラリの使い方について解説しました。任意精度型ライブラリの特徴や追加するメリット、使用時の注意点についてまとめたあと、任意精度整数型に含まれる有用なメソッドについても紹介しています。TerminalのマイコンとZynqをデータを通信する方法を解説。本記事では、ZynqのMIOとEMIOの違いについて解説した後、Zynq内部のブロックデザインをVivadoで作成しました。(3)カスタムIPを用いたVitisプラットフォームプロジェクトの作成ハードウェア言語で作成したRTLモジュールにIPパッケージャーを使用してAXI4-Liteインタフェースを追加する方法を解説しています。IDEのアプリケーションを作成する方法を具体的に解説しています。本記事では、VitisとVivadoを用いてZybo経由で外部ディスプレイに画像を出力するアプリケーションを作成します。DiligentからダウンロードしたHDMI出力デモサンプルをもとに、Zynq内部のハードウェア構成を設計しています。TerminalのマイコンとZynqをデータを通信する方法を解説。本記事では、サンプルプログラムや各API関数のリファレンスの参照方法を紹介した後、サンプルプログラムの動作原理について調べた内容を解説します。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。@phys_higashiFPGAを使ったデジタル回路の設計に興味を持ち、休日に勉強をしています。初学者の目線から、詰まりやすいポイントとそれを解決した方法について、記事にまとめています。初学者ゆえの間違い等あるとは思いますが、お気づきの際はお問い合わせをいただけますと幸いです。@phys_higashiFPGAを使ったデジタル回路の設計に興味を持ち、休日に勉強をしています。初学者の目線から、詰まりやすいポイントとそれを解決した方法について、記事にまとめています。初学者ゆえの間違い等あるとは思いますが、お気づきの際はお問い合わせをいただけますと幸いです。-掛け算IPをZyboに実装-2021.04.182022.02.13Rustupをインストールするときに発生したエラーの回避方法2021.08.102021.11.07。