ZYBO Z7

ZYBO Z7-20 が届きました
ZYBO Z7-20 が昨日届きました。
ZYBO Z7-20 のボードファイルをVivado 2017.2 にインストールする
ZYBO Z7-20 をVivado で使いやすくするためにDigilent 社のボードファイルをVivado 2017.2 にインストールしよう。
ZYBO Z7-20 のPS 設定とZYBO のPS 設定を比較する
ZYBO Z7-20 をLinux で使用するためにデバイスツリーが必要だが、その前にZYBO の u-boot が走るか?という問題がある。
そこで、ZYBO と ZYBO Z7-20 のPS の設定を違いを確かめてみることにした。
ZYBO Z7-20 の u-boot.elf と devicetree.dtb を作る
白線間追従走行用畳み込みニューラルネットワークを走らせるためのMicro SD カードをZYBO Z7-20 対応にすることを目的としてやってみよう。
今回は、ZYBO Z7-20 用の u-boot.elf と devicetree.dtb を作ってみようと思う。
ZYBO_Z7_0 のVivado 2017.2 プロジェクトでBOOT.bin を作成
”白線追従走行用畳み込みニューラルネットワーク・システムの製作1”
”白線追従走行用畳み込みニューラルネットワーク・システムの製作2”
で作った ZYBO_0_172_8 を ZYBO_Z7_0 プロジェクトとしてVivado 2017.2 で作ってみた。
Zybo Z7-20でLinux を起動しようとしたが失敗
”ZYBO Z7-20 の u-boot.elf と devicetree.dtb を作る”で作ったdevicetree.dtb と”ZYBO_Z7_0 のVivado 2017.2 プロジェクトでBOOT.bin を作成”で作ったBOOT.bin をZYBO Linux 用のMicro SD カードに入れてZybo Z7-20 で起動してみた。なお、LinuxカーネルはZYBO で使用してたものとした。
結果は、TTYPS0 までは行くのだが、その後の文字が化け化けになってしまった。
Zybo Z7-20 上でUbuntu 14.04 が動作したがネットワークがつながらない
いろいろと失敗してきたZybo Z7-20 上でUbuntu 14.04 の動作だが、やっと起動した。しかしネットワークがつながらなかった。
Zybo Z7-20 上でUbuntu 14.04 が動作し、ネットワークもつながった
前回、Zybo Z7-20 上でUbuntu 14.04 が動作したがネットワークがつながらない状態だった。
石原ひでみさんにご指摘を頂いて、Ether のMDIO がEMIO になっているのでMIO にすればOKとの情報を頂いた。MDIO をMIO にしたところ、ブートに長い時間がかかったがネットワークがつながった。ifconfig で eth1 が見えたので、設定を eth0 から eth1 にしたら正常に立ち上がるようになった。
Zybo Z7-20 のボードファイルの修正
”Zybo Z7-20 上でUbuntu 14.04 が動作し、ネットワークもつながった”でEthrnet 0 のMDIO をMIO に変更してZYBO Z7-20 上での Ubuntu 14.04 のネットワークがつながった。
これを最初からでEthrnet 0 のMDIO をMIO にするようにZybo Z7-20 のボードファイルを変更してみた
Zybo Z7-20上の白線間走行CNNシステムのプロジェクトでUbuntu 14.04 起動
”Zybo Z7-20でLinux を起動しようとしたが失敗”で、なかなかうまく行かなかった白線間走行畳み込みニューラルネットワーク・システムのプロジェクト(ZYBO では、ZYBO_0_172_8)をZYBO_Z7 用に変更して論理合成、インプリメント、ビットストリームの生成を行い、SDKでFSBL を作成して、BOOT.bin を作成した。
Zybo Z7-20上の白線間走行CNNシステムのプロジェクトが動作しないバグ
”Zybo Z7-20上の白線間走行CNNシステムのプロジェクトでUbuntu 14.04 起動”でZybo Z7-20上の白線間走行CNNシステムのVivado 2017.2 プロジェクトを使用してUbuntu 14.04 を起動することができたが、肝心のZybo Z7-20上の白線間走行CNNシステムのVivado 2017.2 プロジェクトがベアメタル・アプリケーションとして動作しない。これはなぜなのか?をVivado Analyzer で確認してみた。
む。。。これは。。。WVALID のアサートが AWVALID よりも前に来ている。AXI プロトコル的にはこれであっているが、自作のAXI4 Lite Slave インタフェースはどうだったか?
下の図のAXI4 Lite Slave Write Transaction State Machine を見ると、Write が 1 つのステートマシンになってしまっている。これではだめだ。。。orz
ビットマップ・ディスプレ イ・コントローラIPとカメラ・インタフェースIPのAXI4 Lite Slaveのバグをフィックス
”Zybo Z7-20上の白線間走行CNNシステムのプロジェクトが動作しないバグ”で、ビットマップ・ディスプレイ・コントローラIPとカメラ・インタフェースIPのAXI4 Lite Slave インターフェース回路にバグがあることが分かった。
今回はそのバグをフィックスした。
白線間走行畳み込みニューラ ルネットワーク・システムをZYBO Z7-20で動作させる1
前回は、”ビットマップ・ディスプレイ・コントローラIPとカメラ・インタフェースIPの AXI4 Lite Slaveのバグをフィックス”で、ビットマップ・ディスプレイ・コントローラIPとカメラ・インタフェースIPのAXI4 Lite Slave のデータのWrite がアドレスのWrite よりも先に来てしまったときのバグを修正した。
その結果、ビットマップ・ディスプレイ・コントローラIP は動作したが、カメラ・インタフェースIP が動作していなかった。カメラ・インタフェースIP のAXI4 Lite Slave インターフェースから接続されているAXI Interconnect のAXI4 Master ポートに空きがあったので、空きを無くしてカメラ・インタフェースIP が動作するかどうか?を確かめてみることにした。
それでうまく行ったが、カメラ画像はYUVのままで、RGBに設定されていなかった。
白線間走行畳み込みニューラ ルネットワーク・システムをZYBO Z7-20で動作させる2
前回は、カメラ・インタフェースIP のAXI4 Lite Slave インターフェースから接続されているAXI Interconnect のAXI4 Master ポートに空きがあったので、空きを無くしたらカメラ・インタフェースIP が動作することが分かった。しかし、今度はカメラ制御用のI2C インタフェースIP がおかしくなっているようだ。今回はカメラ制御用のI2C インタフェースIP を調査する。
結局、AXI Interconnect がおかしかった。AXI Interconnect を交換したら動作した。
白線間走行畳み込みニューラ ルネットワーク・システムをZYBO Z7-20で動作させる3(ガボール・フィルタの追加)
前回でFPGAのハードウェアをフィックスしたつもりだったが、やはり、ガボール・フィルタを 入れてみたいということで、入れてみた。更にFSBL を作ってからBOOT.bin を作成した。デバイスツリーも作成して、ZYBO Z7-20 に入れてUbuntu 14.04 をブートした。
ZYBO Z7-20上のUbuntu 14.04でカメラ画像を表示
”白線間走行畳み込みニューラルネットワーク・システムをZYBO Z7-20で動作させる3(ガボール・フィルタの追加)”でガボール・フィルタを追加したZYBO Z7-20 のZYBO_Z7_0 プロジェクトが出来上がって、Ubuntu 14.04 が起動したので、今回は、Ubuntu 14.04 上でカメラ画像を表示することができた。
ZYBO Z7-20上のUbuntu 14.04でカメラ画像をBMPファイルに変換する
前回は、ZYBO Z7-20 のUbuntu 14.04 上でカメラ画像を表示することができた。今回は、カメラ画像からBMPファイルを生成する cam_capture_bmp を試してみた。

Github で現在使用しているZYBO Z7-20用のBOOT.bin, devicetree.dtb, u-boot, uImage などを公開しました
Github で現在使用しているZYBO Z7-20用のBOOT.bin, devicetree.dtb, u-boot, uImage などを公開しました。

ZYBO Z7-20上のUbuntu 14.04でカメラ画像にガボール・フィルタを動作させる
ZYBO Z7-20上のUbuntu 14.04でカメラ画像からBMPファイルを生成する cam_capture_bmp でBMP ファイルが生成できることが分かった。今回は、ZYBO Z7-20上のUbuntu 14.04 でガボール・フィルタを動作させた。
ZYBO Z7-20上のUbuntu 14.04で白線間走行用畳み込みニューラルネットワークを動作させる
前回は、ZYBO Z7-20 上でガボール・フィルタを動作させた。今回は、白線間走行用畳み込みニューラルネットワークを動作さてみよう。
白線間走行用畳み込みニューラルネットワークが動作しました。

FPGA+SoC+Linux実践勉強会用のZYBO Z7用MicroSDカードの準備
ikwzm さんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(ブートイメージの提供)”を見ながら、MicroSDカードを作っていこう。
FPGA+SoC+Linux実践勉強会での課題をやってみた1(Vivado HLS編)
”FPGA+SoC+Linux実践勉強会”でZYBO Z7 を使用し、Vivado HLS でDMA IPを作成して、Vivado で回路にして、SDK でベアメタル・アプリケーションでDMA IP を動作させようとしたら動作しなかった。
そこで、DMA IP を仕上げてデバイツリー・オーバーレイやudmabuf などを確かめてみよう。
FPGA+SoC+Linux 実践勉強会での課題をやってみた2(Vivado 編)
「”FPGA+SoC+Linux実践勉強会”でZYBO Z7 を使用し、Vivado HLS でDMA IPを作成して、Vivado で回路にして、SDK でベアメタル・アプリケーションでDMA IP を動作させようとしたら動作しなかった。
そこで、DMA IP を仕上げてデバイツリー・オーバーレイやudmabuf などを確かめてみよう。」ということで、前回はVivado HLS 2017.3 でDMA_pow プロジェクトを作成し、10 個のデータをReadし、 2 乗して出力するIP にした。今回は、そのDMA_pow2 IP を使用して、Vivado 2017.3 の IPI で ZYBO Z7 のPS と接続して、SDK でアプリケーションソフトを作って実機で試してみよう。
FPGA+SoC+Linux 実践勉強会での課題をやってみた3(Vivado 編2 ACPポートを使用)
「”FPGA+SoC+Linux実践勉強会”でZYBO Z7 を使用し、Vivado HLS でDMA IPを作成して、Vivado で回路にして、SDK でベアメタル・アプリケーションでDMA IP を動作させようとしたら動作しなかった。
そこで、DMA IP を仕上げてデバイツリー・オーバーレイやudmabuf などを確かめてみよう。」ということで、前回はPS のHP ポートを使用して、Vivado HLS で作成したDMA_pow2 IP を接続して使用することができた。今回は、ACP ポートにDMA_pow2 IP を接続して使用してみようと思う。
FPGA+SoC+Linux実践勉強会での課題をやってみた4(Device Tree Overlay)
前回は、Vivado HLS 2017.3 で作成した 2 乗倍するDMAIP をVivado 2017.3 のブロック・デザインでインスタンスして、回路を構成した。その際には、ACP ポートを使用した。SDK のベアメタル・アプリケーションソフトで動作を確認した。今回は、ikwzm さんの Device Tree Overlay を試してみよう。
FPGA+SoC+Linux 実践勉強会での課題をやってみた5(FPGA Region)
前回は、Vivado HLS 2017.3 で作成した 2 乗倍するDMAIP をVivado 2017.3 のブロック・デザインでインスタンスして構成した回路で Device Tree Overlay を試した。今回は、それの回路で FPGA Region を使用して、ビット・ファイルをコンフィギュレーションしてみよう。
FPGA+SoC+Linux 実践勉強会での課題をやってみた6(udmabuf、実機テスト)
前回は、Vivado HLS 2017.3 で作成した 2 乗倍するDMAIP をVivado 2017.3 のブロック・デザインでインスタンスして構成した回路で Device Tree Overlay でデバイスツリー・オーバーレイで、 FPGA Region を使用して、ビット・ファイルをコンフィギュレーションした。今回は、それに加えて udmabuf を実装し、udmabuf を使用し、更にアプリケーションソフトを書いて、dma_pow2 IP を動作させてみよう。
FPGA+SoC+Linux 実践勉強会での課題をやってみた7(dma_pow2 IP のドライバを使用したアプリケーション)
前回は、Vivado HLS 2017.3 で作成した 2 乗倍するDMAIP をVivado 2017.3 のブロック・デザインでインスタンスして構成した回路で Device Tree Overlay でデバイスツリー・オーバーレイで、 FPGA Region を使用して、ビット・ファイルをコンフィギュレーションした。今回は、それに加えて udmabuf を実装し、udmabuf を使用し、更にアプリケーションソフト test_dma.c を書いて、dma_pow2 IP を動作させた。今回はその続きで、前回の test_dma.c を dma_pow2 IP のドライバを使用するコードに書きなおす。それを test_dma_wd.c とする。そして、Makefile も書いて make し、動作させてみる。

ZYBO Z7-20でPcam 5Cを使用する1(D-PHYインターフェース)
まずは、Xilinx 社の XAPP 894 (v1.0) D-PHY ソリューション でD-PHY のことを学習しよう。
ZYBO Z7-20でPcam 5Cを使用する2(pcam-5c プロジェクト)
前回は、MIPI のD-PHY インターフェースについて調べた。今回は、Digilent 社のZybo Z7 Pcam 5C Demo プロジェクトをダウンロードして、Vivado 2016.4 のプロジェクトを生成してみよう。
ZYBO Z7-20でPcam 5Cを使用する3(インプリメント)
前回は、pcam-5c プロジェクトを生成した。今回は、pcam-5c プロジェクトのsystem ブロック・デザインを階層化して、論理合成、インプリメント、ビットストリームの生成を行う。
ZYBO Z7-20でPcam 5Cを使用する4(タイミングエラーの検討)
前回はインプリメントを行ったら、タイミングエラーが出てしまった。今回は、そのタイミングエ ラーの原因を探ってみよう。
ZYBO Z7-20でPcam 5Cを使用する5(SDK1)
前回は、タイミングエラーを検証した。今回は、とりあえず、SDKでアプリケーションソフトを 作成してみよう。
ZYBO Z7-20でPcam 5Cを使用する6(Pcam 5Cのカメラ画像を表示できた)
前回は、SDKのビルドでエラーが出て解消できなかった。今回は、ブロック・デザインで階層を 設けないでやってみた。結果的にこれでうまく行ってPcam 5Cのカメラ画像を表示することができた。
ZYBO Z7-20でPcam 5Cを使用する7(Pcam 5Cの設定を変更)
前回は、Digilent 社のデモ・プロジェクトで Pcam 5Cのカメラ画像を表示することができた。今回は、Pcam 5Cのカメラ画像をレジスタを設定することで、画像を変更してみた。
ZYBO Z7-20でPcam 5Cを使用する8(シリアル・インターフェースで設定変更)
前回は、pcam_vdma_hdmi アプリケーション・プロジェクトの src フォルダの ov5640 フォルダの OV5640.h を変更してカメラの設定を変更した。今回は、pcam_vdma_hdmi アプリケーション・ソフトウェアは、シリアル・インターフェースを使用して設定を変更できる機能があるので、それを使用してみた。

ZYBO Z7-20でのMNISTの実装にOV5642を使用する1
Ultra96 のUltra96 用PMOD 拡張ボード経由でOV5642 を使用することができた。
今回は、ZYBO Z7-20 のMNIST の実装で、OV5642 を使用してみたい。
ZYBO Z7-20でのMNISTの実装にOV5642を使用する2
前回は、ZYBO Z7-20 のMNIST の実装で、OV5642 を使用してみたいということで、やってみたところ、うまく行かない。mt9d111_inf_axis_0 のAXI4-Stream のトランザクションもないので、mt9d111_inf_axis_0 がおかしいようだということが分かった。今回は、Vivado Analyzer を入れて2日ほど調査したが、原因が分からなかった。やっと今日、その原因が分かったのだった。原因は、アプリケーション・ソフトでのコマンド順によるものだった。
ZYBO Z7-20でのMNISTの実装にOV5642を使用する3
前回は、OV5642 カメラ画像を垂直方向にフリップした画像で、ディスプレイに表示することができた。その後、垂直方向にフリップするDMA の vflip_dma_write もできたので、これを使用してMNIST 手書き数字判定システムを修正して行こう。



inserted by FC2 system