SlideShare una empresa de Scribd logo
1 de 152
Vivado HLS勉強会3
(AXI4-Lite Slave)
小野 雅晃
2
注意点
● 元はVivado HLS 2014.4で作製した資料を修正が
必要なところだけVivado HLS 2015.4に修正して
あります
● よって、Vivado HLSのウインドウにOpen Wave
viewer…が無い画面がありますがご了承下さい
3
これから何をするのか?1
● Vivado HLS勉強会1、2で使用した掛け算のプロジェ
クトをAXI4-Lite Slaveインターフェースにする
● Vivado HLS 2015.4
– Vivado HLS 2015.4のプロジェクトを新規作成
– C++ソースコードとテストベンチは勉強会2の物を使用する
– INTERFACEディレクティブ(AXI4 Lite Slave mode)
– CからHDLを生成
– C/RTLコシミュレーション
– VivadoでC/RTLコシミュレーションの波形を確認
– IPとしてパッケージ
4
これから何するのか?2
● Vivado 2015.4
– Vivadoでプロジェクトを作製
– AXI4 Lite Slave (multi_apuint) IPをIP Catalogに登録
– ブロックデザインにIPを追加し、回路を構成
– 制約ファイルを追加
– 論理合成、インプリメント、ビットストリームの生成
– ハードウェアをエクスポートして、SDK起動
– Vivado HLSが作ったドライバを使用し、ソフトウェアを作製
– 実機確認
5
これから作る回路
● ARMプロセッサ(Master)がmulti_apuint IP(Slave)の
multi_in0_V, multi_in1_Vレジスタに値をWriteする
● 掛け算を実行し、multi_out_Vレジスタに結果をWriteする
● ARMプロセッサがステータスをReadして、multi_out_Vレジスタ
の値をReadする
multi_in0_V register
multi_in0_V register
multi_out_V register
Control and Status
registers
AXI4 Lite Slave
Interface
*
AXI4-Lite
multi_apuint IP
CPU
ARM(Cortex-A9)
Master
Slave
6
Vivado HLSで作る
AXI4 Lite Slaveインターフェース
● 演算のCソースコードはそのまま
● pragmaでAXI4 Lite Slaveを指定する
● これだけでOK
7
AXI4バス
● AXI4バス ー ARM社のAMBAバスの一種
● 主にICチップ内部のバス
● AXI4バスには3種類ある(Master, Slave)
– AXI4 ー メモリマップ式の高性能バス
– AXI4-Lite ー シングル転送のメモリマップ式のバス
– AXI4-Stream ー 高速のデータ・ストリーミング用バス
●
参考文献
– AXIリファレンスガイド UG761 (v13.1) 2011 年 3 月 7 日
● http://japan.xilinx.com/support/documentation/ip_documentation/j
_ug761_axi_reference_guide.pdf
– 7 axi4 バス説明、axi4バスを使用したカスタムipの作成方法2
● http://www.slideshare.net/marsee101/7-axi4-axi4ip2-44567631
8
AXI4バスの種類
● AXI4
– メモリマップ式のバースト可能インターフェース
– 最大256バースト
● AXI4-Lite
– メモリマップ式の単一トランザクションのインターフェース
– バースト無し
● AXI4-Stream
– アドレスフェーズがない
– データ・バースト・サイズに制限がないプロトコル
– ストリーム用
9
AXI4バスの接続図
AXI4 Master 1 AXI4 Master 2
AXI Interconnect
AXI4 Slave 1
AXI4 Master 1
AXI4 Slave 2
AXI4-Lite
Slave 1
AXI4-Lite
Slave 2
10
AXI4のチャネル
● 読み出しアドレスチャネル (Read address
channel)
● 読み出しデータチャネル (Read data channel)
● 書き込みアドレスチャネル (Write address
channel)
● 書き込みデータチャネル (Write data channel) 
● 書き込み応答チャネル (Write response channel)
11
これから何をするのか?1
● Vivado HLS勉強会1、2で使用した掛け算のプロジェ
クトをAXI4-Lite Slaveインターフェースにする
● Vivado HLS 2015.4
– Vivado HLS 2015.4のプロジェクトを新規作成
– C++ソースコードとテストベンチは勉強会2の物を使用する
– INTERFACEディレクティブ(AXI4 Lite Slave mode)
– CからHDLを生成
– C/RTLコシミュレーション
– VivadoでC/RTLコシミュレーションの波形を確認
– IPとしてパッケージ
12
Vivado HLS 2015.4の起動と
新規プロジェクト作製
● Vivado HLS 2015.4を起動する
● Create New Projectをクリックして、新規プロジェクトを作製する
13
プロジェクト作成パスと
プロジェクト名の指定
● Locationに適当なフォルダを指定する(ここでは、V_HLS_study_meetingを指
定した)
● Project nameにmulti_axi4lsを入力する
● Next >ボタンをクリックする
14
Add/Remove C-based source files
● デフォルト状態で、Next >ボタンをクリックする
15
Add/Remove C-based testbench
files
● デフォルト状態で、Next >ボタンをクリックする
16
Solution Configuration 1
● solution1の設定を行う
● Clock Periodは10(ns)なので、そのままとする
● FPGAの種類を選択するためにPart Selectionの…ボタンをクリックする
17
Device Selection Dialog
● Filterを上図のように設定する
● xc7z010clg400-1を選択して、OKボタンをクリックする
18
Solution Configuration 2
● Part SelectionのPartにxc7z010clg400-1が設定された
● Finishボタンをクリックする
19
Vivado HLS起動
● Vivado HLSが起動した
20
これから何をするのか?1
● Vivado HLS勉強会1、2で使用した掛け算のプロジェ
クトをAXI4-Lite Slaveインターフェースにする
● Vivado HLS 2015.4
– Vivado HLS 2015.4のプロジェクトを新規作成
– C++ソースコードとテストベンチは勉強会2の物を使用する
– INTERFACEディレクティブ(AXI4 Lite Slave mode)
– CからHDLを生成
– C/RTLコシミュレーション
– VivadoでC/RTLコシミュレーションの波形を確認
– IPとしてパッケージ
21
Cソースファイルとテストベンチをコピー
● V_HLS_study_meetingmulti_apuintフォルダから
multi_apuint.cppとmulti_apuint_tb.cppを
multi_axi4lsフォルダにコピーした
22
multi_apuint.cppを追加
● ProjectメニューからAdd Source…を選択する
23
multi_apuint.cppを選択
● multi_apuint.cppを選択する
24
Sourceに追加
● multi_axi4lsのSourceにmulti_apuint.cppが追加
された
25
テストベンチファイルを追加
● ProjectメニューからAdd Test Bench...を選択する
26
開く ダイアログ
● multi_apuint_tb.cppをクリックする
● 開くボタンをクリックする
27
Test Benchに追加
● multi_axi4lsのTest Benchにmulti_apuint_tb.cpp
が追加された
28
これから何をするのか?1
● Vivado HLS勉強会1、2で使用した掛け算のプロジェ
クトをAXI4-Lite Slaveインターフェースにする
● Vivado HLS 2015.4
– Vivado HLS 2015.4のプロジェクトを新規作成
– C++ソースコードとテストベンチは勉強会2の物を使用する
– INTERFACEディレクティブ(AXI4 Lite Slave mode)
– CからHDLを生成
– C/RTLコシミュレーション
– VivadoでC/RTLコシミュレーションの波形を確認
– IPとしてパッケージ
29
AXI4 Lite Slaveを
Vivado HLSで生成
● INTERFACEディレクティブのOptionsのうちのmodeをs_axiliteに変
更する
● デフォルトでは1つのAXI4 Lite Slaveにまとめられる
● AXI4 Lite Slaveポートにユニークなバス名を入れたい時はbundle
を設定する
● 今回はあえてbundleを設定してある
● bundleのバス名ごとにAXI4 Lite Slaveインターフェースが生成され
る
● 例えば、A, B, C, Dという引数があるとする
– A, Bのmodeをs_axiliteに、bundleをYYにする
– C, Dのmodeをs_axiliteに、bundleをZZにする
– 2つのAXI4 Lite Slaveインターフェースが生成される
30
AXI4 Lite Slaveインターフェースへの
変更
●
ExplorerのSourceのmulti_apuint.cppをダブルクリックする
● 右のウインドウで、Directiveタブをクリックし、”HLS INTERFACE
ap_ctrl_hs ...”を右クリックし、右クリックメニューからModify Directiveを選択
する
31
ディレクティブの変更1
● multi_apuint、returnの
INTERFACEディレクティブ
を変更
– Optionsのmode (optional)を
s_axiliteに変更する
– bundle (optional)
に”AXI4LS”と入力する
– OKボタンをクリックする
32
ディレクティブの変更2
● multi_in0のINTERFACE
ディレクティブを変更
– Optionsのmode (optional)
をs_axiliteに変更する
– register (optional)のチェッ
クボックスのチェックを外す
– bundle (optional)
に”AXI4LS”と入力する
– OKボタンをクリックする
33
ディレクティブの変更3
● multi_in1のINTERFACE
ディレクティブを変更
– Optionsのmode (optional)
をs_axiliteに変更する
– register (optional)のチェッ
クボックスのチェックを外す
– bundle (optional)
に”AXI4LS”と入力する
– OKボタンをクリックする
34
ディレクティブの変更4
● multi_outのINTERFACE
ディレクティブを変更
– Optionsのmode (optional)
をs_axiliteに変更する
– register (optional)のチェッ
クボックスのチェックを外す
– bundle (optional)
に”AXI4LS”と入力する
– OKボタンをクリックする
35
PIPELINEディレクティブの削除
● PIPELINEディレクティブ(#HLS PIPELINE)を右ク
リックし、右クリックメニューからRemove Directive
をクリックして削除する
● AXI4-Lite Slaveインターフェースは、Cortex-A9プ
ロセッサがI/OとしてPLにアクセスするためバース
ト・アクセスにはならない
● よって、PIPELINEにする必要がないので、削除を
行う
36
multi_apuint.cpp
// multi_apuint.cpp
#include <stdio.h>
#include <string.h>
#include <ap_int.h>
void multi_apuint(ap_uint<8> multi_in0, ap_uint<8> multi_in1,
ap_uint<16> *multi_out){
#pragma HLS INTERFACE s_axilite port=multi_in1 bundle=AXI4LS
#pragma HLS INTERFACE s_axilite port=multi_in0 bundle=AXI4LS
#pragma HLS INTERFACE s_axilite port=multi_out bundle=AXI4LS
#pragma HLS INTERFACE s_axilite port=return bundle=AXI4LS
*multi_out = multi_in0 * multi_in1;
}
37
セーブを行った
●
セーブボタンをクリックしてセーブをした
● Update Unfilctダイアログが表示されるので、Yesボタン
をクリックする
38
これから何をするのか?1
● Vivado HLS勉強会1、2で使用した掛け算のプロジェ
クトをAXI4-Lite Slaveインターフェースにする
● Vivado HLS 2015.4
– Vivado HLS 2015.4のプロジェクトを新規作成
– C++ソースコードとテストベンチは勉強会2の物を使用する
– INTERFACEディレクティブ(AXI4 Lite Slave mode)
– CからHDLを生成
– C/RTLコシミュレーション
– VivadoでC/RTLコシミュレーションの波形を確認
– IPとしてパッケージ
39
Top Functionの指定1
● Cコードを合成する前に、Top Functionを指定する。
● これがCコードの合成の最上位関数になる。
● ProjectメニューからProject Settings...を選択する
40
Top Functionの指定2
● 左のウインドウで、Synthesisを選択する
● Top Functionの右のBrowse...ボタンをクリックする
41
Top Functionの指定3
● multi_apuint.cppのmulti_apuintを選択する
● OKボタンをクリックする
42
Top Functionの指定4
● Top Functionにmulti_apuintが入った
● OKボタンをクリックする
43
Cコードの合成と結果
● Run C Synthesisボタンをクリックして、Cソースコードの合成を行った
● TimingのSummaryでClockのTarget周期が10nsのところ、8.38 nsなので問題無い
● Syn->Verilogに、multi_apuint_AXILiteS_s_axi.vとmulti_apuint.vが生成された
44
Cコードの合成結果
● Latencyは0、Intervalは1
となった
● DSP48Eは1個、FFが80
個、LUTが104個使用さ
れている
45
multi_apuint_AXILiteS_s_axi.vの
メモリマップ//------------------------Address Info-------------------
// 0x00 : Control signals
// bit 0 - ap_start (Read/Write/SC)
// bit 1 - ap_done (Read/COR)
// bit 2 - ap_idle (Read)
// bit 3 - ap_ready (Read)
// bit 7 - auto_restart (Read/Write)
// others - reserved
// 0x04 : Global Interrupt Enable Register
// bit 0 - Global Interrupt Enable (Read/Write)
// others - reserved
// 0x08 : IP Interrupt Enable Register (Read/Write)
// bit 0 - Channel 0 (ap_done)
// others - reserved
// 0x0c : IP Interrupt Status Register (Read/TOW)
// bit 0 - Channel 0 (ap_done)
// others - reserved
// 0x10 : Data signal of multi_in0_V
// bit 7~0 - multi_in0_V[7:0] (Read/Write)
// others - reserved
// 0x14 : reserved
// 0x18 : Data signal of multi_in1_V
// bit 7~0 - multi_in1_V[7:0] (Read/Write)
// others - reserved
// 0x1c : reserved
// 0x20 : Data signal of multi_out_V
// bit 15~0 - multi_out_V[15:0] (Read)
// others - reserved
// 0x24 : Control signal of multi_out_V
// bit 0 - multi_out_V_ap_vld (Read/COR)
// others - reserved
// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake)
46
これから何をするのか?1
● Vivado HLS勉強会1、2で使用した掛け算のプロジェ
クトをAXI4-Lite Slaveインターフェースにする
● Vivado HLS 2015.4
– Vivado HLS 2015.4のプロジェクトを新規作成
– C++ソースコードとテストベンチは勉強会2の物を使用する
– INTERFACEディレクティブ(AXI4 Lite Slave mode)
– CからHDLを生成
– C/RTLコシミュレーション
– VivadoでC/RTLコシミュレーションの波形を確認
– IPとしてパッケージ
47
C/RTLコシミュレーション
● Run C/RTL Cosimulationボタンをクリックし、HDL
ベースでのシミュレーションを行う
● Co-simulation Dialogで、Dump Trace を none か
ら all に設定を変更する
● OKボタンをクリックする
48
C/RTLコシミュレーション結果
● Latency, Interval共に0クロックだった
49
これから何をするのか?1
● Vivado HLS勉強会1、2で使用した掛け算のプロジェ
クトをAXI4-Lite Slaveインターフェースにする
● Vivado HLS 2015.4
– Vivado HLS 2015.4のプロジェクトを新規作成
– C++ソースコードとテストベンチは勉強会2の物を使用する
– INTERFACEディレクティブ(AXI4 Lite Slave mode)
– CからHDLを生成
– C/RTLコシミュレーション
– VivadoでC/RTLコシミュレーションの波形を確認
– IPとしてパッケージ
50
AXI4-Lite インターフェース
● AXI Lite インターフェースの特徴
– すべてのトランザクションの転送長が1(バースト転送無し)
– データバス幅は32または64ビット、Xilinxの仕様では32ビット幅
– すべてのアクセスが Non-modifiable, Non-bufferable
– 排他的アクセスは無し
– IPのレジスタ設定などに使用
● FPGAの部屋のAXI4 Lite Slaveの解説ページ
– http://marsee101.blog19.fc2.com/blog-entry-2165.html
– http://marsee101.blog19.fc2.com/blog-entry-2167.html
51
AXI4-Liteインターフェースの
グローバル信号
● Global signals
– ACLK クロック・ソース
– ARESETn リセット・ソース、Active LOW
52
AXI4-Liteインターフェースの
Read信号
● Read address channel
– ARADDR[31:0] アドレス、32ビット、64ビット
– ARVALID Read Address Valid
– ARREADY Read Address Ready
– ARPORT[2:0] 保護タイプ
● Read data channel
– RDATA[31:0] データ、32ビット、64ビット、128ビット
– RRESP[1:0] Read Response
– RVALID Read Valid
– RREADY Read Ready
53
AXI4-Liteインターフェースの
Read Timing
黒はMasterがドライブ
青はSlaveがドライブ
54
AXI4-Liteインターフェースの
Write信号
● Write address channel
– AWADDR[31:0] アドレス、32ビット、64ビット
– AWVALID Write address valid
– AWREADY Write address ready
– AWPROT[2:0] 保護タイプ
● Write data channel
– WDATA[31:0] データ、32ビット、64ビット、128ビット
– WSTRB[3:0] バイトイネーブル、幅はWDATA/8
– WVALID Write valid
– WREADY Write ready
● Write response channel
– BRESP[1:0] Write Response
– BVALID Write response valid
– BREADY Write response ready
55
AXI4-Liteインターフェースの
Write Timing
黒はMasterがドライブ
青はSlaveがドライブ
56
Vivadoを起動して波形を確認1
● Vivado HLS 2015.4のOpen Wave viewer…ボタ
ンをクリックする
● Vivado 2015.4が立ち上がる
● WindowメニューからWaveformを選択する
57
Vivadoを起動して波形を確認2
● 波形ウインドウをフロートして拡大するか、Vivado
ツール自体を拡大して波形を見やすくする
● デフォルトで16進数表示
● 「Zoom Fit」ボタンをクリックして「Waveform」ウイ
ンドウの全体を表示する
58
Vivadoを起動して波形を確認3
● C/RTLコシミュレーション全体波形を表示
59
Vivadoを起動して波形を確認4
● 波形の説明は次ページで
60
C/RTLコシミュレーション波形の説明
● 0x00番地をRead (0x4) ー bit 2が1 (ap_idle)
● 0x10番地にWrite (0x0) ー multi_in0_Vに0を
Write
● 0x18番地にWrite (0x1) ー multi_in1_Vに1を
Write
● 0x00番地をRead (0x4) ー bit 2が1 (ap_idle)
● 0x00番地にWrite (0x1) ー bit 0が1 (ap_start)
● 0x24番地をRead (0x1) ー bit 0が1
(multi_out_V_ap_vld)
● 0x20番地をRead (0x0) ー multi_out_VをRead
61
multi_apuint_AXILiteS_s_axi.vの
メモリマップ//------------------------Address Info-------------------
// 0x00 : Control signals
// bit 0 - ap_start (Read/Write/SC)
// bit 1 - ap_done (Read/COR)
// bit 2 - ap_idle (Read)
// bit 3 - ap_ready (Read)
// bit 7 - auto_restart (Read/Write)
// others - reserved
// 0x04 : Global Interrupt Enable Register
// bit 0 - Global Interrupt Enable (Read/Write)
// others - reserved
// 0x08 : IP Interrupt Enable Register (Read/Write)
// bit 0 - Channel 0 (ap_done)
// others - reserved
// 0x0c : IP Interrupt Status Register (Read/TOW)
// bit 0 - Channel 0 (ap_done)
// others - reserved
// 0x10 : Data signal of multi_in0_V
// bit 7~0 - multi_in0_V[7:0] (Read/Write)
// others - reserved
// 0x14 : reserved
// 0x18 : Data signal of multi_in1_V
// bit 7~0 - multi_in1_V[7:0] (Read/Write)
// others - reserved
// 0x1c : reserved
// 0x20 : Data signal of multi_out_V
// bit 15~0 - multi_out_V[15:0] (Read)
// others - reserved
// 0x24 : Control signal of multi_out_V
// bit 0 - multi_out_V_ap_vld (Read/COR)
// others - reserved
// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake)
62
これから何をするのか?1
● Vivado HLS勉強会1、2で使用した掛け算のプロジェ
クトをAXI4-Lite Slaveインターフェースにする
● Vivado HLS 2015.4
– Vivado HLS 2015.4のプロジェクトを新規作成
– C++ソースコードとテストベンチは勉強会2の物を使用する
– INTERFACEディレクティブ(AXI4 Lite Slave mode)
– CからHDLを生成
– C/RTLコシミュレーション
– VivadoでC/RTLコシミュレーションの波形を確認
– IPとしてパッケージ
63
IPのパッケージ
● 合成したHDLをIPとしてパッケージ化
● Export RTLをクリックする
64
Export RTL Dialog
● Exprot RTLダイアログが開く
● デフォルトのIP Catalog(Vivado用)を選択
● OKボタンをクリックする
65
IP生成が完了
● solution1の下にimplフォルダが作られ、その下の
ipフォルダにIPが生成された
66
impl/ipフォルダ
● solution1/impl/ipフォルダ
● xilinx_com_hls_multi_apuint_1_0.zipにIPが圧縮されて
いる
67
これから何するのか?2
● Vivado 2015.4
– Vivadoでプロジェクトを作製
– AXI4 Lite Slave (multi_apuint) IPをIP Catalogに登録
– ブロックデザインにIPを追加し、回路を構成
– 制約ファイルを追加
– 論理合成、インプリメント、ビットストリームの生成
– ハードウェアをエクスポートして、SDK起動
– Vivado HLSが作ったドライバを使用し、ソフトウェアを作
製
– 実機確認
68
Vivado HLSのIPの接続方法
● PSのAXI_GPポートからAXI Interconnectを通し
て、multi_apuint IPへ接続する
● multi_apuint IPはPSにアドレスマップされる
Processing System(PS)
ARM(Cortex-A9) Dual
AXI_GPポート AXI
Interconnect
multi_apuint
IP
Programmable Logic
(PL)
69
Digilent社のボード・ファイル
● ZYBOボード のPSの定義ファイル ZYBO_zynq_def.xml
が、いつの間にか無くなってボード・ファイルをVivadoの
ボード・ファイル・フォルダにコピー&ペーストする方式に変
更になった
● ボード・ファイルをインストールする手順
– Digilent社のGitHubからボード・ファイル(ZIPファイル)をダウン
ロード
● https://github.com/Digilent/vivado-boards/archive/master.zip
– ダウンロードしたZIPファイルを解凍(vivado-boards-
masternewboard_filesフォルダにボード・ファイルがある)
– XilinxVivado<バージョン番号
(2015.4)>databoardsboard_filesフォルダに解凍したボード・
ファイルをコピー&ペースト
70
ボード・ファイルをコピー&ペースト
● Digilent社のボードのボード・ファイルを
XilinxVivado2015.4databoardsboard_filesフォ
ルダにコピー&ペーストした
71
Vivado 2015.4の起動
● Vivado 2015.4を起動する
● Create New Projectアイコンをクリックする
● New Project ダイアログが開く
● Next >ボタンをクリックする
72
Project Nameの設定
● Project locationを適当なところに設定する
● Project nameに”multi_ex2”と入力する
73
New Projectダイアログ
● Project Typeの設定で、RTL Projectのラジオボタ
ンが選択されていることを確認し、Next >ボタンを
クリックする
● Add Sourcesは、デフォルトのまま、Next >ボタン
をクリックする
● Add Existing IP (optional)は、デフォルトのまま、
Next >ボタンをクリックする
● Add Contraints (optional)は、デフォルトのま
ま、Next >ボタンをクリックする
74
Default Parts
● Vender – digilentinc.com を選択
● Dispaly Name – Zybo を選択
● Next> ボタンをクリック
75
New Project Summary
● Finishボタンをクリックする
76
multi_ex2プロジェクト
● multi_ex2プロジェクトが立ち上がった
77
これから何するのか?2
● Vivado 2015.4
– Vivadoでプロジェクトを作製
– AXI4 Lite Slave (multi_apuint) IPをIP Catalogに登録
– ブロックデザインにIPを追加し、回路を構成
– 制約ファイルを追加
– 論理合成、インプリメント、ビットストリームの生成
– ハードウェアをエクスポートして、SDK起動
– Vivado HLSが作ったドライバを使用し、ソフトウェアを作
製
– 実機確認
78
IP Catalogを開く
● Project NavigatorからIP Catalogをクリックする
79
IP Setting
● IP Catalogが開いた
● IP Catalog内で右クリックし、右クリックメニューからIP
Settings…を選択する
80
Project Settingsダイアログ
● Repository
Managerタブを
クリックし
て、Addボタン
をクリックする
(Vivado HLS
で作製したIPを
追加する)
81
Vivado HLSのIPの選択
● V_HLS_study_meetingmulti_axi4lssolution1implip
を選択する
● Selectボタンをクリックする
82
Add Repository
● Add Repositoryダイアログが表示された
83
Repository Manager
● Multi_apuintが
選択された
● OKボタンをク
リックすると、IP
Catalogに追加
される
84
IP Catalogに追加された
● Multi_apuintがIP Catalogに追加された
85
ブロック・デザインの作製
● Flow Navigator -> IP Integrator -> Create Block
Designをクリックする
● Create Block Designダイアログが開く
● Design nameにmulit_bdと入力する
● OKボタンをクリックする
86
これから何するのか?2
● Vivado 2015.4
– Vivadoでプロジェクトを作製
– AXI4 Lite Slave (multi_apuint) IPをIP Catalogに登録
– ブロックデザインにIPを追加し、回路を構成
– 制約ファイルを追加
– 論理合成、インプリメント、ビットストリームの生成
– ハードウェアをエクスポートして、SDK起動
– Vivado HLSが作ったドライバを使用し、ソフトウェアを作
製
– 実機確認
87
ZYNQ7 Processing System
● ZynqのARMプロセッサIP
● FIXED_IO(MIO)とDDRのポート
● AXI_GPマスタ&スレーブ、32ビット幅、各2ポート
● AXI_HPスレーブ、32または64ビット幅、4ポート
● AXI_ACPスレーブ、64ビット幅、1ポート
● PSからPLへのクロック4個
● ZYBOの設定を読み込める(DigilentのWebからダウ
ンロード)
– ZYBO_zynq_def.xml
88
Add IP
● Diagramタブ内を右クリックし、右クリックメニュー
からAdd IP...を選択する
89
ZYNQ7 Processing Systemを
Add IP
● Searchに”ZYNQ”と入力する
● ZYNQ7 Processing Systemをダブルクリックして選
択する
● 見やすくするためにDiagramウインドウをフロートする
90
processing_system7_0
● processing_system7_0が追加された
● Run Block Automationをクリックして、設定を行う
91
Run Block Automationダイアログ
● そのまま、OKボタンをクリックする
92
DDRとFIXED_IOが配線された
● processing_system7_0をダブルクリックして設
定を見る
93
Re-customize IPダイアログ
(Zynq Block Design)
● I/O
Peripherals
の必要な部
分にチェック
がついている
のがわかる
● OKボタンをク
リックする
94
Re-customize IPダイアログ
(Clock Configuration)
● CPUの動作周波数は650MHz、DDRは525MHz
● PLへのクロックは4つ、FCLK_CLK0~FCLK_CLK3
95
Multi_apuintをAdd IP
● Diagramタブ内を右クリックし、右クリックメニューからAdd IP...
を選択する開いたダイアログのSearchに”multi”と入力する
●
文字列が検索されて候補が表示される
● Multi_apuintをダブルクリックする
96
multi_apuint_0を追加
● multi_apuint_0が追加された
● Run Block Automationをクリックして自動配線を行う
97
Run Block Automationダイアログ
● mulit_apuint_0のs_axi_AXI4LSを接続する
● OKボタンをクリックする
98
配線完了
● rst_processing_system7_0_100Mと
processing_system7_0_aix_periphが自動で追
加、配線された
99
Validate Design
● Validate Designボタンをクリックして、ブロックデザ
インを検証する
100
Validate Designの成功
● Validation successfulのダイアログが表示された
● OKボタンをクリックする
101
Address Editorウインドウ
● Address Editorウインドウでmutli_apuint_0のアドレスを
確認できる
● この場合は、0x43C0_0000から64KB確保された
102
HDL Wrapperファイルの生成
●
セーブボタンをク
リックしてブロック
デザインをセーブ
する
● Sourcesウインド
ウのSourcesタブ
をクリックする
● multi_bdブロック・
デザインを右クリッ
クし、右クリックメ
ニューからCreate
HDL Wrapper...を
選択する
103
Create HDL Wrapperダイアログ
● Create HDL Wrapperダイアログが開く
● デフォルトのままでOKボタンをクリックする
104
multi_bd_wrapper.v
● multi_bd_wrapper.vが生成された
105
これから何するのか?2
● Vivado 2015.4
– Vivadoでプロジェクトを作製
– AXI4 Lite Slave (multi_apuint) IPをIP Catalogに登録
– ブロックデザインにIPを追加し、回路を構成
– 制約ファイルを追加
– 論理合成、インプリメント、ビットストリームの生成
– ハードウェアをエクスポートして、SDK起動
– Vivado HLSが作ったドライバを使用し、ソフトウェアを作
製
– 実機確認
106
制約ファイルを追加
● 通常はI/Oがあるので、制約ファイルが必要になる
● 今回は、PSにAXI4 Lite Slaveインターフェースで
接続しているだけなので、PLの回路からの入出力
はない
● 今回は制約は必要ない
107
これから何するのか?2
● Vivado 2015.4
– Vivadoでプロジェクトを作製
– AXI4 Lite Slave (multi_apuint) IPをIP Catalogに登録
– ブロックデザインにIPを追加し、回路を構成
– 制約ファイルを追加
– 論理合成、インプリメント、ビットストリームの生成
– ハードウェアをエクスポートして、SDK起動
– Vivado HLSが作ったドライバを使用し、ソフトウェアを作
製
– 実機確認
108
論理合成、インプリメント
ビットストリームの生成
● Flow NavigatorのProgram and Debugを開いて、Generate
Bitstreamをクリックする
●
論理合成、インプリメント、ビットストリームの生成が行われる
109
No Implementation Results
Availableダイアログ
● ダイアログが表示されるので、Yesボタンをクリック
する
110
Bitstream Generation Completed
ダイアログ
●
論理合成、インプリメント、ビットストリームの生成まで成
功し、ダイアログが表示される
● Cancelボタンをクリックする
111
Feedback Requestダイアログ
● Feedback Requestダイアログが表示される
● Laterボタンをクリックする
●
出ないこともあります
112
Project Summaryの表示
● Project Summaryアイコンをクリックして、サマリー
を表示させる
113
Project Summary
● Project
Summaryが
表示された
114
これから何するのか?2
● Vivado 2015.4
– Vivadoでプロジェクトを作製
– AXI4 Lite Slave (multi_apuint) IPをIP Catalogに登録
– ブロックデザインにIPを追加し、回路を構成
– 制約ファイルを追加
– 論理合成、インプリメント、ビットストリームの生成
– ハードウェアをエクスポートして、SDK起動
– Vivado HLSが作ったドライバを使用し、ソフトウェアを作
製
– 実機確認
115
Vivado HLSの生成したIPのドライバ1
● V_HLS_study_meetingmulti_axi4lssolution1i
mplipdriversmulti_apuint_v1_0srcにドライバ
が生成されている
116
Vivado HLSの生成したIPのドライバ2
● Linux用ドライバとベアメタル・アプリケーション用のド
ライバの2種類が用意されている
● Linux用ドライバについては勉強会でやらないので、
以下のブログ記事を参照のこと
– http://marsee101.blog19.fc2.com/blog-entry-3077.html
– http://marsee101.blog19.fc2.com/blog-entry-3078.html
●
ベアメタル・アプリケーション用ドライバ
– ドライバの関数でリンク・エラーになる場合は、SDKのリポ
ジトリにインポートすることでドライバが使えるようになる
– http://marsee101.blog19.fc2.com/blog-entry-3180.html
117
Vivado HLSの生成したIPのドライバ3
● xmulti_apuint.
cなどを見てみ
よう
● 関数名は
X<Vivado
HLSのTop関
数名>_Startな
ど
118
Vivado HLSの生成したドライバ
の使い方
● 最初にX<関数名>_Initialize()、またはX<関数名
>_LookupConfig()とX<関数名>_CfgInitialize()の組
– ベアメタル・アプリのDeviceIdは最初にインスタンスは0、次
は1 (xparameters.hに書かれている)
● X<関数名>_Set_入力ポートで入力ポートの値をWrite
する
● X<関数名>_IsIdleでアイドル状態であることを確認
● X<関数名>_StartでIPのステートマシンをスタート
● X<関数名>_IsDone、X<関数名>_出力ポート_vldを確
認
● X<関数名>_Get_出力ポートをReadする
119
ハードウェアをエクスポート
● FileメニューからExport
-> Export Hardware...
を選択する
120
Export Hardwareダイアログ
● Include bitstreamのチェックボックスにチェックを入
れる
● OKボタンをクリックする
121
Launch SDK
● FileメニューからLaunch
SDKを選択する
122
Launch SDKダイアログ
● Launch SDKダイアログが表示された
● OKボタンをクリックする
123
SDKが起動した
● multi_apuint_0のアドレスが0x43c00000~
0x43c0fffに割り当てられているのがわかる
124
Application Projectの作製
125
New Projectダイアログ
● Project nameに
multi_testを入力し
た
● Next >ボタンをク
リックする
126
Templates
● Empty Application
を選択する
(空のプロジェクトが
生成される)
● Finishボタンをクリッ
クする
127
multi_test, multi_test_bsp
● multi_testプロジェクトとmulti_test_bspプロジェクト
が生成された
128
これから何するのか?2
● Vivado 2015.4
– Vivadoでプロジェクトを作製
– AXI4 Lite Slave (multi_apuint) IPをIP Catalogに登録
– ブロックデザインにIPを追加し、回路を構成
– 制約ファイルを追加
– 論理合成、インプリメント、ビットストリームの生成
– ハードウェアをエクスポートして、SDK起動
– Vivado HLSが作ったドライバを使用し、ソフトウェアを作
製
– 実機確認
129
Cソースファイルを新規作成
● 左端のProject
Explorerの
multi_testの
下のsrcフォル
ダを右クリック
し、右クリックメ
ニュー → New
→
Source Fileを
選択する
130
New Fileダイアログ
● Source fileに
multi_test.cと入力
する
● Finishボタンをクリッ
クする
131
multi_test.c
● multi_test.cをエディタで開いてコピーし、SDKにペーストする
● セーブすると自動的にコンパイルされ、multi_test.elfが生成
される
132
multi_test.c
● multi_test.cのXMulti_apuint_LookupConfig()な
どのXMulti_apuint_xxxx()はVivado HLSが自動
生成したドライバの関数を使用している
● Vivado HLSが生成したIPをVivadoのIP
Integratorのブロック・デザインで追加すると、ドライ
バも自動的にSDKにエクスポートされて、ドライバ
関数を使用することができる
133
multi_test.c ソースコード 1/2// multi_test.c
// 2015/07/24 : by marsee
// multi_in0 の入力の時に999を入力すると終了する
//
#include <stdio.h>
#include "xmulti_apuint.h"
#include "xparameters.h"
int main(){
XMulti_apuint XMluti_ap;
XMulti_apuint_Config *XMulti_apPtr;
int val;
// Look Up the device configuration
XMulti_apPtr = XMulti_apuint_LookupConfig(0);
if (!XMulti_apPtr){
fprintf(stderr, "XMulti_apuint configuration failed.n");
return(-1);
}
// Initialize the Device
int Xlap_status = XMulti_apuint_CfgInitialize(&XMluti_ap, XMulti_apPtr);
if (Xlap_status != XST_SUCCESS){
fprintf(stderr, "Could not Initialize XMulti_apuintn");
return(-1);
}
134
multi_test.c ソースコード 2/2
while(1){
printf("nrmulti_in0 = ");
scanf("%d", &val);
if(val == 999)
break;
XMulti_apuint_Set_multi_in0_V(&XMluti_ap, val);
printf("nrmulti_in1 = ");
scanf("%d", &val);
XMulti_apuint_Set_multi_in1_V(&XMluti_ap, val);
while(!XMulti_apuint_IsIdle(&XMluti_ap)) ;
XMulti_apuint_Start(&XMluti_ap);
while(!XMulti_apuint_IsDone(&XMluti_ap)) ;
printf("nrmulti_out = %dnr", (int)XMulti_apuint_Get_multi_out_V(&XMluti_ap));
}
return(0);
}
135
これから何するのか?2
● Vivado 2015.4
– Vivadoでプロジェクトを作製
– AXI4 Lite Slave (multi_apuint) IPをIP Catalogに登録
– ブロックデザインにIPを追加し、回路を構成
– 制約ファイルを追加
– 論理合成、インプリメント、ビットストリームの生成
– ハードウェアをエクスポートして、SDK起動
– Vivado HLSが作ったドライバを使用し、ソフトウェアを作
製
– 実機確認
136
ZYBOを用意しよう
● JP5のショートピンをJTAGの位置にする
● JP7のショートピンをUSBの位置にする
● PROG/UARTのMicro USB-Bコネクタからケーブ
ルでパーソナルコンピューターのUSB-Aコネクタに
接続する
● 電源SWをONする
137
ZYBO
JP5
JP7
電源SW
138
FPGA(Zynq)をコンフィグレーション
● Xilinx ToolsメニューからProgram FPGAを選択す
る
139
Program FPGAダイアログ
● Bitstreamのbitファ
イルを確認する
● Programボタンをク
リックする
● ブログレスバーが
出てBitstreamが
FPGAにダウンロー
ドされる
● 終了後にDONEの
緑LEDが点灯する
140
Tera Termを起動
● シリアルのラジオボタンをクリックする
● OKボタンをクリックする
141
Tera Termの設定1
● 設定メニューから端末を選択する
142
Tera Term:端末の設定
● ローカルエコーのチェックボックスをチェックする
● OKボタンをクリックする
143
Tera Termの設定2
● 設定メニューからシリアルポートを選択する
144
シリアルポート設定
● ボー・レート:115200bps
● データ:8 bit
● パリティ:none
● ストップ:1 bit
● フロー制御:none
● OKボタンをクリックする
145
multi_testアプリを起動
● 左側のProject Explorerでmulti_testプロジェクトを選択す
る
● RunメニューからRunを選択する
146
Run As
● Run Asダイアログが表
示された
● Launch on Hardware
(GDB)をクリックする
● OKボタンをクリックする
147
注意点
● アプリケーションが起動しない場合は、SDKで
multi_testプロジェクトのBinaries -> multi_test.elf
を右クリックして、右クリックメニューからRun As →
4 Launch on Hardware (GDB)を選択して起動し
てください
● 数字の入力の途中にバックスペースキーを押して
編集するとアプリケーションが暴走します
● その場合は、SDKのConsoleウインドウで赤い四
角のTerminateボタンをクリックしてアプリケーショ
ンを終了してください
148
掛け算アプリ1
● multi_testアプリが起動すると”multi_in0 = ”と表示され
る
●
値を入力してリターンキーを押す
149
掛け算アプリ2
● ”multi_in1 = ”と表示されるので、値を入れる
●
掛け算された値が表示される
● ”multi_in0 = ”の後に999と入力すると掛け算アプリが終了する
150
まとめ1
● Vivado HLS勉強会1、2で使用した掛け算のプロジェ
クトをAXI4-Lite Slaveインターフェースにする
● Vivado HLS 2015.4
– Vivado HLS 2015.4のプロジェクトを新規作成
– C++ソースコードとテストベンチは勉強会2の物を使用する
– INTERFACEディレクティブ(AXI4 Lite Slave mode)
– CからHDLを生成
– C/RTLコシミュレーション
– VivadoでC/RTLコシミュレーションの波形を確認
– IPとしてパッケージ
151
まとめ2
● Vivado 2015.4
– Vivadoでプロジェクトを作製
– AXI4 Lite Slave (multi_apuint) IPをIP Catalogに登録
– ブロックデザインにIPを追加し、回路を構成
– 制約ファイルを追加
– 論理合成、インプリメント、ビットストリームの生成
– ハードウェアをエクスポートして、SDK起動
– Vivado HLSが作ったドライバを使用し、ソフトウェアを作製
– 実機確認
152
参考文献
● 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.3) 2015 年 9 月 30 日
– http://japan.xilinx.com/support/documentation/sw_m
anuals_j/xilinx2015_3/ug902-vivado-high-level-synt
hesis.pdf
–

Más contenido relacionado

La actualidad más candente

LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
Takuya ASADA
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
Takefumi MIYOSHI
 

La actualidad más candente (20)

PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
高位合成でDeep learning
高位合成でDeep learning高位合成でDeep learning
高位合成でDeep learning
 
高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応高位合成ツールVivado hlsのopen cv対応
高位合成ツールVivado hlsのopen cv対応
 
ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介ACRi HLSチャレンジ 高速化テクニック紹介
ACRi HLSチャレンジ 高速化テクニック紹介
 
20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf20230105_TITECH_lecture_ishizaki_public.pdf
20230105_TITECH_lecture_ishizaki_public.pdf
 
Zynq mp勉強会資料
Zynq mp勉強会資料Zynq mp勉強会資料
Zynq mp勉強会資料
 
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステムオープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
 
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
 
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
「FPGA 開発入門:FPGA を用いたエッジ AI の高速化手法を学ぶ」
 
Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)Tensor flow usergroup 2016 (公開版)
Tensor flow usergroup 2016 (公開版)
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
 
HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界HalideでつくるDomain Specific Architectureの世界
HalideでつくるDomain Specific Architectureの世界
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
 
Interrupt Affinityについて
Interrupt AffinityについてInterrupt Affinityについて
Interrupt Affinityについて
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 
CXL_説明_公開用.pdf
CXL_説明_公開用.pdfCXL_説明_公開用.pdf
CXL_説明_公開用.pdf
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 

Destacado

Destacado (11)

FPGAの部屋、slide share、xilinxツールのご紹介
FPGAの部屋、slide share、xilinxツールのご紹介FPGAの部屋、slide share、xilinxツールのご紹介
FPGAの部屋、slide share、xilinxツールのご紹介
 
Xilinx SDSoC(2016.3)解体新書ソフトウェア編
Xilinx SDSoC(2016.3)解体新書ソフトウェア編Xilinx SDSoC(2016.3)解体新書ソフトウェア編
Xilinx SDSoC(2016.3)解体新書ソフトウェア編
 
MPSoCのPLの性能について
MPSoCのPLの性能についてMPSoCのPLの性能について
MPSoCのPLの性能について
 
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
 
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
 
SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)
SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)
SDSoC解体新書2016.2版ソフトウェア編 (チラ見) : Inside SDSoC v2016.2 (Software short edtion)
 
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
助教が吼える! 各界の若手研究者大集合「ハードウェアはやわらかい」
 
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
 
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
Ubuntuをインストールしたzyboボードにカメラを付けてopen cvで顔認識
 
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
 
In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性
 

Similar a Vivado hls勉強会3(axi4 lite slave)

httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
shigeki_ohtsu
 

Similar a Vivado hls勉強会3(axi4 lite slave) (20)

次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
2012.10.23 rh forum
2012.10.23 rh forum2012.10.23 rh forum
2012.10.23 rh forum
 
microPCFを使ってみよう
microPCFを使ってみようmicroPCFを使ってみよう
microPCFを使ってみよう
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
 
Myfirst buildpack session_mgmt_20161201
Myfirst buildpack session_mgmt_20161201Myfirst buildpack session_mgmt_20161201
Myfirst buildpack session_mgmt_20161201
 
Synverll
SynverllSynverll
Synverll
 
Androidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃうAndroidとfpgaを高速fifo通信させちゃう
Androidとfpgaを高速fifo通信させちゃう
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
Vitisのご紹介とAmazon EC2 F1体験デモ
Vitisのご紹介とAmazon EC2 F1体験デモVitisのご紹介とAmazon EC2 F1体験デモ
Vitisのご紹介とAmazon EC2 F1体験デモ
 
Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討
 
Open-FCoE_osc2011tokyofall_20111119
Open-FCoE_osc2011tokyofall_20111119Open-FCoE_osc2011tokyofall_20111119
Open-FCoE_osc2011tokyofall_20111119
 
OpenShift v3 Technical Overview
OpenShift v3 Technical OverviewOpenShift v3 Technical Overview
OpenShift v3 Technical Overview
 
Vyatta 改造入門
Vyatta 改造入門Vyatta 改造入門
Vyatta 改造入門
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
 
Docker 基本のおさらい
Docker 基本のおさらいDocker 基本のおさらい
Docker 基本のおさらい
 
Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
 

Más de marsee101 (7)

Robot car gabor_filter
Robot car gabor_filterRobot car gabor_filter
Robot car gabor_filter
 
Ultra96 pmod expansion board
Ultra96 pmod expansion boardUltra96 pmod expansion board
Ultra96 pmod expansion board
 
Camera input from_ultra_96's_slow_expansion_connector
Camera input from_ultra_96's_slow_expansion_connectorCamera input from_ultra_96's_slow_expansion_connector
Camera input from_ultra_96's_slow_expansion_connector
 
Fpga robot car
Fpga robot carFpga robot car
Fpga robot car
 
FPGAスタートアップ資料
FPGAスタートアップ資料FPGAスタートアップ資料
FPGAスタートアップ資料
 
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
Fpgaでの非同期信号の扱い方とvivadoによるサポート(公開用)
 
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
 

Último

Último (7)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Vivado hls勉強会3(axi4 lite slave)