FC2カウンター FPGAの部屋 SDSoC 2015.2 のZYBO用サンプルデザインをやってみる2(Matrix Multiplication)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

SDSoC 2015.2 のZYBO用サンプルデザインをやってみる2(Matrix Multiplication)

SDSoC 2015.2 のZYBO用サンプルデザインをやってみる1(File IO Video Processing)”の続き。

前回は、画像のサンプルをやってみたが、SDカードに書いてLinux が立ち上がったのは、良かったけれど、入力するファイルが無いので、結局出来上がったアプリケーションの動作をテストすることができなかった。
今回は、ZC702 でもやってたMatrix Multiplication のサンプルをやることで、実機でテストすることを目指す。

Help メニューから Welcome をクリックして最初の画面を表示する。
Create SDSoC Project をクリックした。
SDSoC_2_150726.png

Project name に Example2 と入力して、Target の Platform を zybo にして、OSはデフォルトで Linux が選択されていた。Next > ボタンをクリックした。
SDSoC_58_150801.png

Matrix Multiplication (area reduced) を選択して、Finish ボタンをクリックした。
SDSoC_59_150801.png

Example2 プロンプトが作成された。
左端の Project Explorer タブで、Example2 を右クリックし、右クリックメニューから Build Project を選択して、ビルドを行った。SDDebug だった。
SDSoC_60_150802.png

D:\SDSoC\Examples\ZYBO\Example2\SDDebug\sd_card フォルダ の下のファイルを SDカードにコピーした。
SDSoC_61_150802.png

ZYBO のブートデバイスを SDカードにして電源を投入すると、Linuxが立ち上がって、Tera Termからコマンドプロンプトが見えた。設定は115200 bps, 8 bit, 1 stop bit だった。

cd /mnt で mnt ディレクトリに移動して、Example2.elf でソフトウェアを起動した。
SDSoC_62_150802.png
SWの cpu cycles が 988850 に対して、HW のcpu cycles が 1215356 だった。HWの方が遅いが、そもそもHW は組み込んでいない気がする?

project.sdsoc を開いて、Hardware Functions で Add Hardware Function の+記号をクリックする。

Select function for hardware acceleration ダイアログが開く。

mmult(float *, float *, float *) をクリックして、ハードウェア化する。
SDSoC_63_150802.png

Hardware Functions に mmult が入った。
SDSoC_64_150802.png

左端の Project Explorer タブで、Example2 を右クリックし、右クリックメニューから Clean Project を選択してから、Build Project を選択してビルドを行った。

Build が終了した。D:\SDSoC\Examples\ZYBO\Example2\SDDebug\_sds\p0\ipi の zybo.xpr を起動して、Vivado のプロジェクトを見てみた。
SDSoC_66_150802.png

Project Summary を見ると LUT を 85 %, DSP48 は 100 % を使用した大きなデザインだった。
SDSoC_65_150802.png

D:\SDSoC\Examples\ZYBO\Example2\SDDebug\sd_card フォルダ の下のファイルを SDカードにコピーして、実機で確認してみよう。

ZYBO のブートデバイスを SDカードにして電源を投入すると、Linuxが立ち上がって、Tera Termからコマンドプロンプトが見えた。設定は115200 bps, 8 bit, 1 stop bit だった。

cd /mnt で mnt ディレクトリに移動して、Example2.elf でソフトウェアを起動した。
SDSoC_67_150802.png
今回は、SWの cpu cycles が 944230 に対して、HW のcpu cycles が 32554だった。
HW の方が SW よりも 29 倍速いという結果になった。
ソフトウェアの方がハードウェアよりもチューニングが難しいと思っている。ソフトウェアは、OpenMPやNEON命令を使うことでもっとチューニングできると思う。

(2015/08/03:追記)
data_motion.html を下に示す。
sds_alloc() を使用しているので、すべてのDMAがシンプルDMAだった。
SDSoC_68_150803.png
  1. 2015年08月02日 05:10 |
  2. SDSoC
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3218-54c99a8b
この記事にトラックバックする(FC2ブログユーザー)