Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Vivado hls勉強会5(axi4 stream)

5,549 views

Published on

Vivado HLS勉強会5(AXI4 Stream)です。最後のVivado HLS勉強会資料になります。
Vivado HLS で AXI4 Stream インターフェースを使用する方法です。AXI4 Stream がAXI4 バスを使用するときの王道になると思っています。

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Get access to 16,000 woodworking plans, Download 50 FREE Plans... ■■■ http://ishbv.com/tedsplans/pdf
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 資料の中で使用しているソースコード等をFPGAの部屋のブログに掲載してあります。ご参照下さい。 http://marsee101.blog19.fc2.com/blog-entry-3361.html
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Vivado hls勉強会5(axi4 stream)

  1. 1. 1 Vivado HLS勉強会5 (AXI4 Stream) 小野 雅晃
  2. 2. 2 注意点 ● 元はVivado HLS 2014.4で作製した資料を修正が 必要なところだけVivado HLS 2015.4に修正して あります ● よって、Vivado HLSのウインドウにOpen Wave viewer…が無い画面がありますがご了承下さい
  3. 3. 3 これからすること ● ラプラシアンフィルタをAXI4 Streamバス用のIPと する ● AXI4 Streamについて勉強しよう(サイドチャネル 付き) ● 今回はStream入出力としたいので、C++を使用す る ●
  4. 4. 4 これから何するのか? ● Vivado HLS 2015.4 – AXI4 Streamのラプラシアンフィルタ用プロジェクト作製 – ソースコードなどをコピーして、Add Sources – Cシミュレーション – CからHDLを生成 – C/RTLコシミュレーション – VivadoでC/RTLコシミュレーションの波形を確認 – IPとしてパッケージ
  5. 5. 5 AXI4 Stream ● 動画の画像データや、カメラのフレームバッファのデータなど のストリームデータ ● つまり前から順番にデータを流す(シーケンシャル・アクセス) ● Master からSlave にデータを転送 ● プロトコルはAXI4 Master,AXI4 Slave, AXI4 Lite Slaveと比 較しても簡単 ● ほとんどの信号がオプション ● FPGAの部屋のAXI4 Streamの解説ページ – http://marsee101.blog19.fc2.com/blog-entry-2454.html
  6. 6. 6 AXI4 Stream信号
  7. 7. 7 AXI4 Stream (スカラーデータのストリーム例)
  8. 8. 8 AXI4 Stream (複素数スカラーデータのストリーム例)
  9. 9. 9 Vivado HLSでのAXI4 Stream 1 ● サイドチャネル無しのAXI4 Stream – 高位合成 UG902(v2015.2) 2015年6月24日146ペー ジ – http://japan.xilinx.com/support/documentation/sw_m anuals_j/xilinx2015_2/ug902-vivado-high-level-synt hesis.pdf – AXI4 Streamの信号線はTVALD, TREADY, TDATAの 3種類のみ #include <ap_int.h> #include <hls_stream.h> int fil_axis_sample(hls::stream<ap_int<32> >& in_data, hls::stream<ap_int<32> >& out_data){ #pragma HLS INTERFACE axis port=in_data #pragma HLS INTERFACE axis port=out_data #pragma HLS INTERFACE s_axilite port=return
  10. 10. 10 Vivado HLSでのAXI4 Stream 2 ● サイドチャネルありのAXI4 Stream – 高位合成 UG902(v2015.2) 2015年6月24日147ページ – http://japan.xilinx.com/support/documentation/sw_ma nuals_j/xilinx2015_2/ug902-vivado-high-level-synthe sis.pdf – ap_axi_sdata.hをインクルードする (ap_axis, ap_axiu) ap_axis のテンプレートを引用する template<int D,int U,int TI,int TD> struct ap_axis{ ap_int<D> data; ap_uint<D/8> keep; ap_uint<D/8> strb; ap_uint<U> user; ap_uint<1> last; ap_uint<TI> id; ap_uint<TD> dest; };
  11. 11. 11 サイドチャネルありのAXI4 Stream続き ● サイドチャネルありのAXI4 StreamのC++コード例 ● user – 1bit, id – 1bit, dest – 1bit #include <ap_int.h> #include <hls_stream.h> #include <ap_axi_sdata.h> int fil_axis_side_ch(hls::stream<ap_axis<32,1,1,1> >& ins, hls::stream<ap_axis<32,1,1,1> >& outs){ #pragma HLS INTERFACE axis port=ins #pragma HLS INTERFACE axis port=outs #pragma HLS INTERFACE s_axilite port=return
  12. 12. 12 AXI4 Stream版 ラプラシアンフィルタIPブロック図 ラプラシアンフィルタ 処理部 AXI4 Stream入力 インターフェース AXI4 Stream出力 インターフェース AXI4 Stream AXI4 Stream
  13. 13. 13 ラプラシアンフィルタ処理部 画像の 輝度成分 AXI4 Stream出力 現在のAXI4 Stream入力 画像の 輝度成分 AXI4 Stream出力 ラプラシアンフィルタ処理 データ 現在のAXI4 Stream入力 nクロック n+1クロック
  14. 14. 14 これから何するのか? ● Vivado HLS 2015.4 – AXI4 Streamのラプラシアンフィルタ用プロジェクト作製 – ソースコードなどをコピーして、Add Sources – Cシミュレーション – CからHDLを生成 – C/RTLコシミュレーション – VivadoでC/RTLコシミュレーションの波形を確認 – IPとしてパッケージ
  15. 15. 15 Vivado HLS 2015.4の起動と 新規プロジェクト作製 ● Vivado HLS 2015.4を起動する ● Create New Projectをクリックして、新規プロジェクトを作製する
  16. 16. 16 プロジェクト作成パスと プロジェクト名の指定 ● Locationに適当なフォルダを指定する(ここでは、V_HLS_study_meetingを指 定した) ● Project nameにlap_filter_axisを入力する ● Next >ボタンをクリックする
  17. 17. 17 Add/Remove C-based source files ● デフォルト状態で、Next >ボタンをクリックする
  18. 18. 18 Add/Remove C-based testbench files ● デフォルト状態で、Next >ボタンをクリックする
  19. 19. 19 Solution Configuration 1 ● solution1の設定を行う ● Clock Periodは10(ns)なので、そのままとする ● FPGAの種類を選択するためにPart Selectionの…ボタンをクリックする
  20. 20. 20 Device Selection Dialog ● Filterを上図のように設定する ● xc7z010clg400-1を選択して、OKボタンをクリックする
  21. 21. 21 Solution Configuration 2 ● Part SelectionのPartにxc7z010clg400-1が設定された ● Finishボタンをクリックする
  22. 22. 22 Vivado HLS起動 ● Vivado HLSが起動した
  23. 23. 23 これから何するのか? ● Vivado HLS 2015.4 – AXI4 Streamのラプラシアンフィルタ用プロジェクト作製 – ソースコードなどをコピーして、Add Sources – Cシミュレーション – CからHDLを生成 – C/RTLコシミュレーション – VivadoでC/RTLコシミュレーションの波形を確認 – IPとしてパッケージ
  24. 24. 24 ラプラシアンフィルタの出力画像 ● 回り1ピクセルを0にするから、左2ピクセル、上2行を 0にするに変更した ● この方が条件分岐が少なくて済む
  25. 25. 25 lap_filter_axis.cpp ● フル・チューン済みのAXI4 Stream版ラプラシアンフィルタ (ハードウェア) ● サイドチャネルありのAXI4 Stream ● hls::stream<ap_axis<32,1,1,1> >& ins – data 32ビット、user 1ビット、id 1ビット、dest 1ビット ● フレームの最初のデータを送るときにだけuserが1になるの で、userが1になるのを待つ(AXI VDMAの仕様) ● ラプラシアンフィルタの出力ストリーミングの場合もuserの仕 様は同じ ● 行の最後でlastをアサートする ● またtu1978さんにサンプルコードを頂きました。ありがとうご ざいました。
  26. 26. 26 line_bufのディレクティブ ● unsigned int line_buf[2][HORIZONTAL_PIXEL_WIDTH]; ● #pragma HLS array_partition variable=line_buf block factor=2 dim=1 – block factor=2 dim=1 - 1次元、つまり[2]を2つのブロック (BRAM)に分ける ● #pragma HLS resource variable=line_buf core=RAM_2P – RESOURCEディレクティブにcoreオプションを付けるとコアを指定 できる – RAM_2P - 1つのポートでReadできて、もう2つのポートで Read/WriteできるBRAM – RESOURCEディレクティブにLATENCYオプションを付ければレイ テンシを指定できる
  27. 27. 27 UNROLLディレクティブ Vivado Design Suite ユーザー ガイド 高位合成 UG902 (v2015.1) 2015 年 4 月 1 日 177ページ「 図 1 69 :‐ ループの展開」を引用 
  28. 28. 28 lap_filter_axis_tb.cpp ● test.bmpをオープンする ● UUTにダミー・データを送ってから、userを1にアサート してtest.bmpの最初のデータを送る – BMPファイルのデータは、一番下の行が先に出てくるので行 を逆順にする ● その後、userを0にして、test.bmpのデータを送る ● 行の最後ではデータと一緒にlastを1にする ● ハードウェアとソフトウエアのラプラシアンフィルタ実装 のデータを比べる ● ハードウェアの出力データをtemp_lap.bmpに書き込む
  29. 29. 29 ファイルをコピー ● Vivado_HLS勉強会FilesVivado HLS勉強会5用フォルダの lap_filter_axis.cpp、lap_filter_axis.h、lap_filter_axis_tb.cpp、bm p_header.h、test.bmpをlap_filter_axisフォルダへコピーする
  30. 30. 30 SourceにAdd Files... ● ExplorerのSourceを右クリックし、右クリックメ ニューからAdd Files...を選択する
  31. 31. 31 ”開く”ダイアログ ● lap_filter_axis.cpp, lap_filter_axis.hを選択して” 開く”ボタンをクリックする
  32. 32. 32 Test Bench ● Sourceにlap_filter_axis.cpp, lap_filter_axis.hが入った ● 同様にTest Benchを右クリックし、右クリックメニューか らAdd Files...を選択した
  33. 33. 33 ”開く”ダイアログ ● lap_filter_axis_tb.cpp、bmp_header.h、test.bmpを選択し て、”開く”ボタンをクリックする ● 3つのファイルがExplorerのTest Benchに入った
  34. 34. 34 これから何するのか? ● Vivado HLS 2015.4 – AXI4 Streamのラプラシアンフィルタ用プロジェクト作製 – ソースコードなどをコピーして、Add Sources – Cシミュレーション – CからHDLを生成 – C/RTLコシミュレーション – VivadoでC/RTLコシミュレーションの波形を確認 – IPとしてパッケージ
  35. 35. 35 Cシミュレーション ● ProjectメニューからRun C Simulationを選択する
  36. 36. 36 C Simulation Dialog ● ダイアログが開く ● OKボタンをクリックする
  37. 37. 37 Cシミュレーション結果 ● Success HW and SW results matchと表示され た
  38. 38. 38 test_lap.bmp ● lap_filter_axissolution1csimbuildに test_lap.bmpが生成された
  39. 39. 39 BMPファイルの ラプラシアンフィルタ処理 ● test.bmpをラプラシアンフィルタ処理した結果を test_lap.bmpに書き込んだ test.bmp test_lap.bmp
  40. 40. 40 これから何するのか? ● Vivado HLS 2015.4 – AXI4 Streamのラプラシアンフィルタ用プロジェクト作製 – ソースコードなどをコピーして、Add Sources – Cシミュレーション – CからHDLを生成 – C/RTLコシミュレーション – VivadoでC/RTLコシミュレーションの波形を確認 – IPとしてパッケージ
  41. 41. 41 Top Functionの指定1 ● Cコードを合成する前に、Top Functionを指定する。 ● これがCコードの合成の最上位関数になる。 ● ProjectメニューからProject Settings...を選択する
  42. 42. 42 Top Functionの指定2 ● 左のウインドウで、Synthesisを選択する ● Top Functionの右のBrows...ボタンをクリックする
  43. 43. 43 Top Functionの指定3 ● lap_filter_axis.cppのlap_filter_axisを選択する ● OKボタンをクリックする
  44. 44. 44 Top Functionの指定4 ● Top Functionにlap_filter_axisが入った ● OKボタンをクリックする
  45. 45. 45 Cコードの合成 ● SolutionメニューからRun C Synthesis->Active Solutionを選択して、Cソースコードの合成を行う
  46. 46. 46 Cコードの合成結果 ● TimingのSummaryでClockのTarget周期が10nsのところ、 8.11nsなので問題無い ● Uncertaintyはクロックのばらつきの値(デフォルト:12.5%)
  47. 47. 47 Cコードの合成結果2 ● 下にスクロールして合成結果を見る
  48. 48. 48 Analysis ● Analysisボタンをクリックして解析結果を見てみよ う ● HDLソースも確認する
  49. 49. 49 これから何するのか? ● Vivado HLS 2015.4 – AXI4 Streamのラプラシアンフィルタ用プロジェクト作製 – ソースコードなどをコピーして、Add Sources – Cシミュレーション – CからHDLを生成 – C/RTLコシミュレーション – VivadoでC/RTLコシミュレーションの波形を確認 – IPとしてパッケージ
  50. 50. 50 C/RTLコシミュレーション ● SolutionメニューからRun C/RTL Cosimulationを 選択する
  51. 51. 51 Co-simulation Dialog ● Dump Trace を none から all に設定を変更 する ● allにすると、シミュレー ション波形が記録され る ● OKボタンをクリックする とC/RTLコシミュレー ションが始まる
  52. 52. 52 C/RTLコシミュレーション結果 ● C/RTLコシミュレーションが終了した ● Latencyは3101、Intervalは0クロックだった
  53. 53. 53 これから何するのか? ● Vivado HLS 2015.4 – AXI4 Streamのラプラシアンフィルタ用プロジェクト作製 – ソースコードなどをコピーして、Add Sources – Cシミュレーション – CからHDLを生成 – C/RTLコシミュレーション – VivadoでC/RTLコシミュレーションの波形を確認 – IPとしてパッケージ
  54. 54. 54 Open Wave viewer…アイコンをクリック ● Open Wave viewer…アイコンをクリックする
  55. 55. 55 Vivadoが立ち上がった
  56. 56. 56 Waveformウインドウを表示 ● WindowメニューからWaveformを選択する
  57. 57. 57 Vivadoによる シミュレーション波形表示
  58. 58. 58 波形ウインドウをフロート ● 波形ウインドウのFloatアイコンをクリックして、波形 ウインドウをフローティング・ウインドウにする
  59. 59. 59 波形ウインドウ1 ● Zoom Fitアイコンをクリックして、波形全体を表示
  60. 60. 60 波形ウインドウ2 ● ins_TVALIDとins_TREADYが常時1(Waitが無い) ● outs_TVALIDとouts_TREADYが常時1(Waitが無い) ● よって1クロックごとにラプラシアンフィルタ処理を実行できる
  61. 61. 61 これから何するのか? ● Vivado HLS 2015.4 – AXI4 Streamのラプラシアンフィルタ用プロジェクト作製 – ソースコードなどをコピーして、Add Sources – Cシミュレーション – CからHDLを生成 – C/RTLコシミュレーション – VivadoでC/RTLコシミュレーションの波形を確認 – IPとしてパッケージ
  62. 62. 62 IPのパッケージ ● 合成したHDLをIPとしてパッケージ化 ● SolutionメニューからExport RTLを選択する
  63. 63. 63 Export RTL Dialog ● Exprot RTLダイアログが開く ● デフォルトのIP Catalog(Vivado用)を選択 ● OKボタンをクリックする
  64. 64. 64 IP生成が完了 ● solution1の下にimplフォルダが作られ、その下の ipフォルダにIPが生成された
  65. 65. 65 impl/ipフォルダ ● solution1/impl/ipフォルダ ● xilinx_com_hls_lap_filter_axis_1_0.zipにIPが圧縮され ている
  66. 66. 66 AXI4 StreamのラプラシアンフィルタIP の使い方 ● AXI VDMAを使用してメモリからのDMA Readした データをAXI4 StreamでラプラシアンフィルタIPに 入力する ● AXI4 Streamで出力されたラプラシアンフィルタ結 果をAXI VDMAでメモリへDMA Writeする
  67. 67. 67 AXI4 Streamのラプラシアンフィルタ 入りカメラ表示システムブロックデザイン
  68. 68. 68 camera_interface モジュール ブロックデザイン
  69. 69. 69 ラプラシアンフィルタ実装方法 へのリンク1 ● AXI4-Stream版ラ プラシアンフィルタIPのカメラ 表示システム1(構想編) ● AXI4-Stream版ラ プラシアンフィルタIPのカメラ表示 システム2(Vivado 2015.1でプロジェクトを作製) ● AXI4-Stream版ラ プラシアンフィルタIPのカメラ 表示システム3(ブロックデザイン1) ● AXI4-Stream版ラ プラシアンフィルタIPのカメラ 表示システム4(ブロックデザイン2) ● AXI4-Stream版ラ プラシアンフィルタIPのカメラ 表示システム5(制約ファイル、インプリメント) ● AXI4-Stream版ラ プラシアンフィルタIPのカメラ表示 システム6(SDK1)
  70. 70. 70 ラプラシアンフィルタ実装方法 へのリンク2 ● AXI4-Stream版ラプラシアンフィルタIPのカメラ表 示システム7(実機動作) ● AXI4-Stream版ラプラシアンフィルタIPのカメラ表 示システム8(デバック) ● AXI VDMAのドライバによるレジスタの設定値 ● AXI4-Stream版ラプラシアンフィルタIPのカメラ 表示システム9(カメラ画像表示は完成) ● AXI4-Stream版ラプラシアンフィルタIPのカメラ 表示システム10(ラプラシアンフィルタ処理) ● AXI4-Stream版ラプラシアンフィルタIPのカメラ 表示システム11(ベアメタル・アプリ版完成)
  71. 71. 71 まとめ ● ラプラシアンフィルタIPのインターフェースをサイド チャネルありのAXI4 Streamにした ● ラプラシアンフィルタIPのインターフェースをAXI4 Streamにして、DMAはDMAのIPに任せたほうが CやC++ソースをチューンしやすい ● Vivado HLSでIPを作るときのお勧めはAXI4 Stream ● DMAはIPで実装しよう
  72. 72. 72 謝辞 ● AXI4 Streamのラプラシアンフィルタ・サンプルコー ドを教えて頂いた tu1978 さんに感謝いたします
  73. 73. 73 参考文献 ● Vivado Design Suite ユーザー ガイド 高位合成 UG902 (v2014.3) 2014 年 10 月 1 日 – http://japan.xilinx.com/support/documentation/sw_m anuals_j/xilinx2014_4/ug902-vivado-high-level-synt hesis.pdf ● Vivado Design Suite ユーザー ガイド 高位合成 UG902 (v2015.2) 2015 年 6 月 24 日 – http://japan.xilinx.com/support/documentation/sw_m anuals_j/xilinx2015_2/ug902-vivado-high-level-synt hesis.pdf

×