...

System Generator を使用したモデル ベースの DSP デザイン

by user

on
Category: Documents
56

views

Report

Comments

Transcript

System Generator を使用したモデル ベースの DSP デザイン
Vivado Design Suite
ユーザー ガ イ ド
System Generator を使用 し た
モデル ベースの DSP デザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま
す。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の
上、最新情報につきましては、必ず最新英語版をご参照ください。
改訂履歴
次の表に、 こ の文書の改訂履歴を示 し ます。
日付
バージ ョ ン
改訂内容
2014 年 10 月 1 日
2014.3
2014.3 System Generator for DSP リ リ ース に合わせて技術情報を ア ッ プデー ト
2014 年 4 月 2 日
2014.1
• AXI ではないブ ロ ッ ク を Vivado IDE に移行す る 方法の詳細を追加
• 新 し い複数独立 ク ロ ッ ク 機能に関する 情報を追加
• 新 し い イ ーサネ ッ ト ポ イ ン ト ツー ポ イ ン ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンのサ
ポー ト 情報を追加
• System Generator の GUI ユーテ ィ リ テ ィ を付録 B と し て追加、 新規 WaveScope ク ロ ス
プ ロ ーブ機能の詳細 も 追加
2013 年 12 月 18 日
2013.4
• 技術的情報のア ッ プデー ト な し 。
• バージ ョ ン ア ッ プデー ト に合わせて再 リ リ ース
2013 年 10 月 2 日
2013.3
• 第 4 章の終わ り に 「AXI4-Lite イ ン タ ーフ ェ イ ス生成」 と い う 新 し いセ ク シ ョ ン を追加
• 新 し い コ ンパ イ ル タ イ プ を第 7 章に追加、 新 し い第 8 章 「カ ス タ ム コ ンパ イ ル タ ー
ゲ ッ ト の作成」 を追加
• ブ ラ ッ ク ボ ッ ク ス の例を 『Vivado Design Suite チ ュ ー ト リ アル : System Generator を使用
し たモデル ベース DSP デザ イ ン』 (UG948) に移動
2013 年 6 月 19 日
2013.2
テ キ ス ト を編集 し て改善
2013 年 3 月 20 日
2013.1
• GUI を変更
• IDS か ら Vivado IDE 環境への System Generator デザ イ ンの移行に関する 新 し い章を追加
2012 年 10 月 16 日
2012.3
初版
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
2
目次
第 1 章 : 概要
ザ イ リ ン ク ス DSP ブ ロ ッ ク セ ッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
FIR フ ィ ル タ ーの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
MATLAB のサポー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
シ ス テ ム統合プ ラ ッ ト フ ォーム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
第 2 章 : イ ン ス ト ール
ダ ウ ン ロ ー ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
ザ イ リ ン ク ス イ ン ス ト ー ラ ーの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
イ ン ス ト ール後の操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
第 3 章 : ISE から Vivado IDE へのデザイ ンの移行
概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ア ッ プグ レー ド 手法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
System Generator を使用 し たデザ イ ン フ ロ ー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
System Generator でのシ ス テ ム レベルのモデ リ ン グ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
自動 コ ー ド 生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MATLAB の FPGA への コ ンパ イ ル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
System Generator デザ イ ンの大型シ ス テ ムへの イ ン ポー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
コ ン フ ィ ギ ャ ブル サブシ ス テ ム と System Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
高パフ ォーマ ン ス FPGA デザ イ ンに関する 注記 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
高パフ ォーマ ン ス FPGA デザ イ ンに関する 注記 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FDATool を使用 し たデジ タ ル フ ィ ル タ ー アプ リ ケーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
複数の独立 ク ロ ッ ク のハー ド ウ ェ ア デザ イ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AXI イ ン タ ーフ ェ イ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AXI-Lite イ ン タ ーフ ェ イ ス生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
25
38
43
63
64
69
69
72
81
89
93
第 5 章 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
ハー ド ウ ェ ア ボー ド の イ ン ス ト ール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン用のモデルの コ ンパ イ ル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの ク ロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
JTAG ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン用の KC705 ボー ド の イ ン ス ト ール . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
ポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
ポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンのための KC705 ボー ド の イ ン ス ト ー
ル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
ポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンのための VC705 ボー ド の イ ン ス ト ー
ル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
3
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
ブ ラ ッ ク ボ ッ ク ス の HDL の要件 と 制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ブ ラ ッ ク ボ ッ ク ス の コ ン フ ィ ギ ュ レーシ ョ ン M 関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ブ ラ ッ ク ボ ッ ク ス での複数の独立 ク ロ ッ ク サポー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
HDL 協調シ ミ ュ レーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
111
112
113
127
128
第 7 章 : System Generator の コ ンパイル タ イ プ
[HDL Netlist] コ ンパ イ ル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
[Hardware Co-Simulation] コ ンパ イ ル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IP カ タ ロ グの コ ンパ イ ル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
合成済みチ ェ ッ ク ポ イ ン ト の コ ンパ イ ル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
カ ス タ ム コ ンパ イ ル タ ーゲ ッ ト の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
131
132
132
136
137
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
xilinx_compilation ベース ク ラ ス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
新規 コ ンパ イ ル タ ーゲ ッ ト の作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ベース ク ラ ス のプ ロ パテ ィ お よ び API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
カ ス タ ム コ ンパ イ ル タ ーゲ ッ ト の作成例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
138
139
141
145
付録 A : System Generator の GUI ユーテ ィ リ テ ィ
[Xilinx BlockAdd] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
[Xilinx Tools] → [Save as blockAdd default] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
[Xilinx BlockConnect] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
[Xilinx Tools] → [Terminate] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
[Xilinx View Signal]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
付録 B : その他の リ ソ ースおよび法的通知
ザ イ リ ン ク ス リ ソ ース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ソ リ ュ ーシ ョ ン セ ン タ ー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
166
166
166
167
4
第 1章
概要
System Generator は、 FPGA デザ イ ン用に MathWorks モデル ベース の Simulink® デザ イ ン環境を使用で き る よ う にす
る ザ イ リ ン ク ス の DSP デザ イ ン ツールです。 System Generator を使用す る のに、 ザ イ リ ン ク ス FPGA ま たは RTL デ
ザ イ ン手法の使用経験は必要あ り ま せん。 デザ イ ン は、 ザ イ リ ン ク ス 特有のブ ロ ッ ク セ ッ ト を使用 し て、 DSP 用の
Simulink モデ リ ン グ環境に取 り 込まれます。こ の後、System Generator デザ イ ン を Vivado IDE プ ロ ジ ェ ク ト に イ ン ポー
ト で き ます。
注記 : System Generator for DSP モデルを作成 し て Vivado IDE プ ロ ジ ェ ク ト に イ ン ポー ト す る 具体的な手順について
は、『Vivado Design Suite チ ュ ー ト リ アル : System Generator を使用 し たモデルベース の DSP デザ イ ン』 (UG948) を参照
し て く だ さ い。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
5
第 1 章 : 概要
ザイ リ ン ク ス DSP ブ ロ ッ ク セ ッ ト
Simulink 用ザ イ リ ン ク ス DSP ブ ロ ッ ク セ ッ ト には、 90 以上の DSP 構築ブ ロ ッ ク が含まれます。 こ れ ら のブ ロ ッ ク に
は、 加算器、 乗算器、 レ ジ ス タ な ど の よ く 使用 さ れ る DSP 構築ブ ロ ッ ク が含まれ る ほか、 フ ォ ワ ー ド エ ラ ー訂正ブ
ロ ッ ク 、 FFT、 フ ィ ル タ ー、 メ モ リ な ど の複雑な DSP 構築ブ ロ ッ ク のセ ッ ト も 含まれます。 こ れ ら のブ ロ ッ ク を使用
す る こ と で、 ザ イ リ ン ク ス IP 用 CORE Generator で選択 し たデバ イ ス に最適な結果にな る よ う にで き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
6
第 1 章 : 概要
FIR フ ィ ル タ ーの生成
System Generator に含 ま れ る 7 シ リ ーズ デバ イ ス の専用 DSP48E1 ハー ド ウ ェ ア リ ソ ー ス を タ ーゲ ッ ト にす る FIR
Compiler ブ ロ ッ ク を使用す る と 、最適な イ ンプ リ メ ン テーシ ョ ン を作成で き ます。 コ ン フ ィ ギ ュ レーシ ョ ン オプシ ョ
ンでは、 多相デシ メ ーシ ョ ン、 多相 イ ン タ ーポ レーシ ョ ン、 オーバーサンプ リ ン グ な ど の イ ンプ リ メ ン テーシ ョ ンが
直接生成で き ま す。 fir2 ま た は MathWorks FDAtool の よ う な標準 MATLAB 関数 を 使用す る と 、 ザ イ リ ン ク ス FIR
Compiler の係数が作成で き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
7
第 1 章 : 概要
MATLAB のサポー ト
System Generator には、 アルゴ リ ズ ム的ではない MATLAB を使用可能にす る MCode ブ ロ ッ ク が含ま れ、 単純な制御
操作のモデ リ ン グお よ び イ ンプ リ メ ン テーシ ョ ンに使用 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
8
第 1 章 : 概要
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン
System Generator では、 ハー ド ウ ェ ア協調シ ミ ュ レ ーシ ョ ン を 使用 し て シ ミ ュ レ ーシ ョ ン を 速 く で き ま す。 System
Generator では、 デザ イ ンのハー ド ウ ェ ア シ ミ ュ レーシ ョ ン ト ー ク ンが自動的に作成 さ れ、 ザ イ リ ン ク ス DSP ブ ロ ッ
ク セ ッ ト に取 り 込ま れ、 サポー ト さ れ る ハー ド ウ ェ ア プ ラ ッ ト フ ォームで実行 さ れます。 こ のハー ド ウ ェ アが残 り の
Simulink シ ス テ ム と 一緒に協調シ ミ ュ レーシ ョ ン さ れ る と 、 最大で 1000 倍シ ミ ュ レーシ ョ ン パフ ォーマ ン ス が向上
し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
9
第 1 章 : 概要
シ ス テム統合プ ラ ッ ト フ ォ ーム
System Generator では、DSP FPGA デザ イ ンに対す る シ ス テ ム統合プ ラ ッ ト フ ォームが提供 さ れ、DSP シ ス テ ムの RTL、
Simulink、MATLAB お よ び C/C++ コ ン ポーネ ン ト が 1 つのシ ミ ュ レーシ ョ ンお よ び イ ンプ リ メ ン テーシ ョ ン環境で統
合で き る よ う にな っ てい ます。 System Generator では、RTL が Simulink に イ ン ポー ト で き る ブ ラ ッ ク ボ ッ ク ス ブ ロ ッ
ク がサポー ト さ れ、 ModelSim® ま たはザ イ リ ン ク ス Vivado シ ミ ュ レ ー タ ーのいずれか を使用 し て協調シ ミ ュ レ ー
シ ョ ンで き ます。 System Generator では、 C/C++ プ ロ グ ラ ム を実行する MicroBlaze エンベデ ッ ド プ ロ セ ッ サの含有 も
サポー ト さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
10
第 2章
イ ン ス ト ール
ダウ ン ロー ド
System Generator は、 Vivado® Design Suite の一部で あ り 、 ザ イ リ ン ク ス ウ ェ ブページ か ら ダ ウ ン ロ ー ド で き ま す。
System Generator ソ フ ト ウ ェ アは、 次のサ イ ト か ら 購入、 登録、 ダ ウ ン ロ ー ド で き ます。
http://japan.xilinx.com/tools/sysgen.htm
注記 : 特殊な環境下の場合は、 System Generator の CD を送付する こ と も で き ますので、 ウ ェ ブか ら ソ フ ト ウ ェ ア を ダ
ウ ン ロ ー ド で き ない よ う な環境にあ る 場合は、 ザ イ リ ン ク ス の販売代理店ま でご連絡 く だ さ い。
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンのサポー ト
FPGA 開発ボー ド をお持ちの場合は、 Simulink シ ミ ュ レーシ ョ ン を使用 し て System Generator の FPGA ハー ド ウ ェ ア
の協調シ ミ ュ レ ー シ ョ ン 機能 を 利用で き ま す。 System Generator ソ フ ト ウ ェ ア には、 Artex®-7 AC701 開発ボー ド 、
Kintex®-7 KC705 開発ボー ド 、 Virtex®-7 VC707 開発ボー ド 、 Zynq®-7000 シ リ ーズ ZC702 お よ び ZC706 開発ボー ド の
サポー ト が含まれます。 System Generator ボー ド サポー ト パ ッ ケージは、 次の URL か ら ダ ウ ン ロ ー ド で き ます。
http://japan.xilinx.com/products/boards_kits/index.htm
サポー ト さ れない UNC パス
System Generator では、 UNC (Universal Naming Convention) のパ ス はサポー ト さ れません。 た と えば、 System Generator
では、 最初にその ド ラ イ ブにマ ッ プ し ておかない と 、 共有ネ ッ ト ワ ー ク ド ラ イ ブにあ る デザ イ ン を操作す る こ と はで
き ません。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
11
第 2 章 : イ ン ス ト ール
ザイ リ ン ク ス イ ン ス ト ー ラ ーの使用
System Generator for DSP は、 Vivado® Design Suite の一部で、 ザ イ リ ン ク ス デザ イ ン ツールの イ ン ス ト ー ラ ーを使用
し て イ ン ス ト ールす る 必要があ り ます。
ザ イ リ ン ク ス デザ イ ン ツールの イ ン ス ト ー ラ ーを開始す る 前に、 MATLAB の イ ン ス タ ン ス がすべて閉 じ てい る こ と
を ご確認 く だ さ い。 MATLAB のすべての イ ン ス タ ン ス を閉 じ た ら 、 イ ン ス ト ー ラ ーを開始 し て、 画面の指示に従っ
て く だ さ い。
System Generator 用の MATLAB の選択
Windows イ ン ス ト ール
こ のダ イ ア ロ グ ボ ッ ク ス では、 サポー ト さ れ る MATLAB イ ン ス ト ールを こ のバージ ョ ンの System Generator と 関連
付け る こ と がで き ます。
こ のバージ ョ ンの System Generator と 関連付けたい MATLAB イ ン ス ト ールのチ ェ ッ ク ボ ッ ク ス を オンに し 、 関連付
けたいザ イ リ ン ク ス デザ イ ン ツールを選択 し た ら 、 [Apply] を ク リ ッ ク し ます。 [Apply] を ク リ ッ ク す る と 、 [Status]
列が [Not Configured] か ら [Configured] に変わ り ます。
使用可能なすべての MATLAB イ ン ス ト ールが リ ス ト さ れます。 [Status] 列には、 次のいずれかの値が表示 さ れます。
[Unsupported] : こ のバージ ョ ンの MATLAB は こ のバージ ョ ンの System Generator ではサポー ト さ れません。
[Not Configured] : こ のバージ ョ ンの MATLAB は ま だ こ のバージ ョ ンの System Generator に関連付け ら れてい ません。
こ のバージ ョ ンの MATLAB を System Generator と 関連付け る には、チ ェ ッ ク ボ ッ ク ス をオンに し て [Apply] を ク リ ッ
ク し ます。
[Configured] : System Generator は こ のバージ ョ ンの MATLAB と 一緒に使用で き る よ う にな っ てい ます。
MATLAB のバージ ョ ン が リ ス ト さ れていない場合は、 [Find MATLAB] を ク リ ッ ク し て有効なバージ ョ ン を参照 し て
く だ さ い。
MATLAB コ ン フ ィ ギ ュ レーシ ョ ン を変更する 場合は、 Windows メ ニ ュ ーか ら 次を ク リ ッ ク し て く だ さ い。
[ ス タ ー ト ] → [ す べ て の プ ロ グ ラ ム] → [Xilinx Design Tools] → [Vivado 2014.3] → [System Generator] → [System
Generator MATLAB Configurator]
MATLAB があ る デザ イ ン ツール、 た と えば ISE Design Suite 用に コ ン フ ィ ギ ュ レーシ ョ ン さ れていて、 別のデザ イ ン
ツール、 た と えば Vivado 用に コ ン フ ィ ギ ュ レーシ ョ ン し 直 し たい場合は、 [Configured] にな っ てい る MATLAB バー
ジ ョ ンのボ ッ ク ス を ク リ ッ ク し 、 [Remove] を ク リ ッ ク し てか ら 、 Vivado 用に コ ン フ ィ ギ ュ レーシ ョ ン し 直 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
12
第 2 章 : イ ン ス ト ール
Linux イ ン ス ト ール
Linux で System Generator を起動す る 場合は、 <Vivado install dir>/bin にあ る sysgen と い う シ ェ ル ス ク リ プ ト で処理 さ
れます。 こ の ス ク リ プ ト を起動す る 前に、PATH 環境変数に MATLAB 実行フ ァ イ ルが指定 さ れてい る こ と を確認 し て
く だ さ い。 MATLAB 実行フ ァ イ ルが指定 さ れていれば、 sysgen を実行す る と 、 PATH で最初に見つか っ た MATLAB
実行フ ァ イ ルが起動 さ れ、 System Generator がその MATLAB のセ ッ シ ョ ンに関連付け ら れます。 ま た、 sysgen シ ェ ル
ス ク リ プ ト では MATLAB でサポー ト さ れ る オプシ ョ ンがすべてサポー ト さ れ、 こ れ ら を コ マ ン ド ラ イ ン引数 と し て
sysgen ス ク リ プ ト に渡す こ と がで き ます。
イ ン ス ト ール後の操作
Linux でのイ ン ス ト ール後の操作
ザ イ リ ン ク ス イ ン ス ト ール ウ ィ ザー ド の指示に従っ た後は、 sysgen と 入力す る と 、 System Generator が起動で き る
よ う にな り ます。
注記 : こ れに よ り 、 MATLAB が起動 さ れ、 その MATLAB セ ッ シ ョ ンに System Generator がダ イ ナ ミ ッ ク に追加 さ れ
ます。 MATLAB の コ マ ン ド ウ ィ ン ド ウ の一番上には、 「Installed System Generator dynamically」 と い う メ ッ セージが表
示 さ れ る はずです。 こ れで、 System Generator を実行で き る よ う にな り ます。
状況に よ っ ては、 次の メ ッ セージが表示 さ れます。 こ の ス ク リ プ ト を実行 し た と き に System Generator が既に イ ン ス
ト ール さ れていれば、 次の メ ッ セージが表示 さ れます。
System Generator currently found installed into matlab default path.
ザイ リ ン ク ス HDL ラ イ ブ ラ リ の コ ンパイル
ModelSim SE で使用す る ラ イ ブ ラ リ を コ ンパ イ ルする ためのザ イ リ ン ク ス ツールの名前は、 compile_simlib です。
Tcl コ ン ソ ールに compile_simlib -help と 入力す る と 、 こ の Tcl コ マ ン ド の実行に関す る 詳細が表示 さ れます。
本書に関連するデザイ ン例
本書で説明 さ れ る デザ イ ン例は、 ウ ェ ブか ら ダ ウ ン ロ ー ド 可能な ZIP フ ァ イ ルに含まれます。 こ の ZIP フ ァ イ ルの名
前 は ug897-example-files.zip で、 こ の ユ ー ザ ー ガ イ ド と 同 じ 箇所 に あ り ま す。 本書 は、 こ の デ ザ イ ン 例 を
C:/ug897-example-files デ ィ レ ク ト リ にダ ウ ン ロ ー ド し た と 仮定 し て説明 さ れてい ます。
System Generator キ ャ ッ シ ュの管理
System Generator では、 デザ イ ン プ ロ セ ス を繰 り 返 し 実行す る 場合に時間を短縮す る ため、 デ ィ ス ク キ ャ ッ シ ュ が使
用 さ れます。 シ ミ ュ レーシ ョ ンお よ び生成に関連する フ ァ イ ルに タ グ を付けて保存 し 、 シ ミ ュ レーシ ョ ン ま たは生成
を次に実行す る と き に、 こ れ ら の フ ァ イ ルを再生成する のではな く 、 キ ャ ッ シ ュ にあ る フ ァ イ ルを呼び出す こ と に よ
り 、 処理時間を短縮 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
13
第 3章
ISE から Vivado IDE へのデザイ ンの移行
概要
System Generator for DSP には、 前に ISE System Generator 環境で作成 し たデザ イ ン を Vivado 統合設計環境 (IDE) と 互
換性のあ る デザ イ ンに移行す る ためのア ッ プグ レー ド モデル機能が含まれます。
移行に必要な条件は次の と お り です。
•
ISE Design Suite デザ イ ン ブ ロ ッ ク に含まれ る デザ イ ンは、ISE バージ ョ ンの System Generator for DSP の最新バー
ジ ョ ンにア ッ プグ レー ド す る 必要あ り
•
Vivado IDE と 互換性のない ISE Design Suite デザ イ ン ブ ロ ッ ク は削除す る か、 置換す る 必要あ り
ア ッ プグ レー ド 手法
推奨 さ れ る 移行手法は、 (1) ISE 環境を使用 し て移行用モデルを準備、 (2) Vivado 統合設計環境 (IDE) を使用 し て移行
を完了、 です。
ISE 環境か ら のア ッ プグ レー ド フ ロー
ISE 環境でモデルを準備す る 手順は、 次の と お り です。
(1) すべてのブ ロ ッ ク を最新の ISE バージ ョ ン の System Generator に含ま れ る 最新バージ ョ ン にア ッ プ グ レー ド し ま
す。 た と えば、 De-interleaver 7.0 を De-interleaver 7.1 にア ッ プグ レー ド し ます。
(2) AXI ではないブ ロ ッ ク を手動で AXI ブ ロ ッ ク に置換 し ます。 た と えば、 CIC Compiler 2.0 (AXI イ ン タ ーフ ェ イ ス
ではない) を CIC Compiler 3.0 (AXI イ ン タ ーフ ェ イ ス) に手動で置 き 換え ます。
(3) Vivado IDE と 互換性のない残 り のブ ロ ッ ク を削除 し ます。 た と えば、 ChipScope ブ ロ ッ ク を削除 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
14
第 3 章 : ISE から Vivado IDE へのデザイ ンの移行
手順 1 : ISE System Generator に含まれる最新バージ ョ ンにブ ロ ッ
ク を ア ッ プグ レー ド
1.
最新の ISE System Generator リ リ ース で System Generator モデルを開 き ます。
次の表は、 複数のバージ ョ ンがあ る 最新のブ ロ ッ ク を リ ス ト し てい ます。
ブ ロ ッ ク名
ISE の最新バージ ョ ン
DSP48 Macro
DSP48 Macro 2.1
FIR Compiler 6.2
FIR Compiler 6.3
Interleaver/De-Interleaver 7.0
Interleaver/De-Interleaver 7.1
2.
System Generator ト ー ク ン を ダブル ク リ ッ ク し 、 次の図に示す [Model upgrade] ボ タ ン を ク リ ッ ク し ます。
3.
次の図に示す よ う な生成 さ れた ス テー タ ス レ ポー ト の情報を確認 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
15
第 3 章 : ISE から Vivado IDE へのデザイ ンの移行
•
こ の場合、 こ のモデルに含まれ る 2 つのブ ロ ッ ク がア ッ プグ レー ド 可能です。
•
Interleaver/De-interleaver 7.0 ブ ロ ッ ク には、 完全な置換サポー ト が含まれます。 [Perform Upgrade] 列で [Upgrade]
を ク リ ッ ク す る と 、 そのブ ロ ッ ク がア ッ プグ レー ド さ れます。
•
こ の場合、 Complex Multiplier 3.1 ブ ロ ッ ク には完全な置換サポー ト があ り ません。 こ れは、 AXI 3.1 以外のブ ロ ッ
ク か ら AXI 5.0 ブ ロ ッ ク への移行には、 手動の作業が必要 と な る か ら です。 [Upgrade] を ク リ ッ ク す る と 、 入力/
出力信号を新 し い AXI ポー ト に手動で接続 し 直す こ と ので き る サブシ ス テ ムの ワ ー ク スペース が作成 さ れます。
手順 2 : ISE 環境で AXI ではないブ ロ ッ ク を AXI ブ ロ ッ ク に手動で
置換
前述の よ う に、 AXI ではないブ ロ ッ ク は手動で AXI ブ ロ ッ ク にア ッ プグ レー ド す る 必要があ り ます。 ア ッ プグ レー
ド ス テー タ ス レ ポー ト で [Upgrade] を ク リ ッ ク す る と 、 入力/出力信号を新 し い AXI ポー ト に手動で接続 し 直す こ と
ので き る サブシ ス テ ム ワ ー ク スペース が作成 さ れます。次の図に示す よ う に、 サブシ ス テ ム ワー ク スペース には、接
続 さ れた古いブ ロ ッ ク と 最新の (接続 さ れていない) AXI ブ ロ ッ ク が含まれます。
ア ッ プ グ レー ド さ れた AXI ブ ロ ッ ク には、 古い AXI ではないブ ロ ッ ク と 同等のパ ラ メ ー タ ー設定が含 ま れ ま すが、
手動で AXI ブ ロ ッ ク を AXI ではないブ ロ ッ ク と 接続 し てか ら 、 こ の AXI ではないブ ロ ッ ク を削除 し てデザ イ ン を シ
ミ ュ レーシ ョ ン し 、 デザ イ ン ビヘ イ ビ アーが変更 さ れていないか ど う か を確認する 必要があ り ます。
ア ッ プ グ レー ド ス テー タ ス レ ポー ト か ら モデルを ア ッ プ グ レー ド し た ら 、 ア ッ プグ レ ー ド ス テー タ ス レ ポー ト の
[Details] リ ン ク がオンにな り ます。
注記 : こ の リ ン ク は、 こ の レ ポー ト か ら ア ッ プグ レー ド を実行 し た場合にのみ使用で き る よ う にな り ます。 モデルか
ら 直接ア ッ プグ レー ド し た場合は、 使用で き ません。
AXI ではないブ ロ ッ ク を ア ッ プグ レー ド する手順
1. 古いブ ロ ッ ク で 1 つま たは複数のパ ラ メ ー タ ーが MATLAB 関数ま たは変数を使用 し て定義 さ れてい る 場合、
MATLAB 変数を ア ッ プグ レー ド 前に MATLAB コ ン ソ ールで初期化 し てお く 必要があ り ます。
2. AXI ではないブ ロ ッ ク か ら AXI ブ ロ ッ ク にア ッ プグ レー ド す る と 、 レ イ テ ン シが変わ る 可能性があ り ます。 詳
細は、 関連す る LogiCORE IP 製品ガ イ ド を参照 し て く だ さ い。 シ ス テ ム設計者の場合は、 制御信号を使用 し てデー タ
信号を有効にす る こ と をお勧め し ます。
3. 古いブ ロ ッ ク のポー ト 名 と ア ッ プグ レー ド し たブ ロ ッ ク のポー ト 名が違 う 場合は、 「Port Mismatch」 の警告 メ ッ
セージが表示 さ れ、 ポー ト 名に変更があ っ た こ と と 、 ア ッ プデー ト さ れたポー ト 名に関す る 情報が示 さ れます。
4. かな り 古いブ ロ ッ ク の場合、 [Model upgrade] ボ タ ンが表示 さ れない こ と が まれにあ り ます。 こ の場合、 手動で最
新 AXI ブ ロ ッ ク を コ ン フ ィ ギ ュ レーシ ョ ン し て接続す る こ と をお勧め し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
16
第 3 章 : ISE から Vivado IDE へのデザイ ンの移行
AXI ではないブ ロ ッ ク か ら AXI ブ ロ ッ ク へのア ッ プグ レー ド する際の推奨事項
こ のセ ク シ ョ ン では、 次の AXI ではないブ ロ ッ ク を AXI ブ ロ ッ ク にア ッ プ グ レー ド す る 場合の推奨事項について、
詳細に説明 し ます。
AXI ではないブ ロ ッ ク (ISE System Generator)
最新の AXI ブ ロ ッ ク (ISE System Generator)
関連する LogiCORE 製品ガ イ ド
CIC Compiler 2.0
CIC Compiler 3.0
LogiCORE IP CIC Compiler 3.0
CORDIC4.0
CORDIC5.0
LogiCORE IP CORDIC v5.0
Complex
Multiplier 3.0,3.1, 4.0
Complex
Multiplier 5.0
LogiCORE IP Complex Multiplier v5.0
Convolution
Encoder 6.1, 7.0
Convolution
Encoder 8.0
LogiCORE IP Convolution Encoder 8.0
DDS
Compiler 4.0
DDS
Compiler 5.0
LogiCORE IP DDS Compiler v5.0
Divider
Generator 3.0
Divider
Generator 4.0
LogiCORE IP Divider Generator 4.0
FIR Compiler 5.0, 6.0, 6.1, FIR Compiler 6.3
6.2
LogiCORE IP FIR Compiler v6.3
Fast Fourier
Transform 7.1
Fast Fourier
Transform 8.0
LogiCORE IP Fast Fourier Transform v8.0
Interleaver/
De-Interleaver 6.0, 7.0
Interleaver/
De-Interleaver 7.1
LogiCORE IP Interleaver/De-interleaver v7.1
Reed-Soloman
Decoder 7.0, 7.1
Reed-Soloman
Decoder 8.0
LogiCORE IP Reed-Solomon Decoder v8.0
Reed-Soloman
Encoder 7.0, 7.1
Reed-Soloman
Encoder 8.0
LogiCORE IP Reed-Solomon Encoder v8.0
Viterbi
Decoder 6.1, 6.2, 7.0
Viterbi
Decoder 8.0
LogiCORE IP Viterbi Decoder v8.0
CIC Compiler
AXI ではないブ ロ ッ ク のポー ト のほ と ん どは、 AXI ポー ト に直接マ ッ プで き ます。 AXI イ ン タ ーフ ェ イ ス には、 次の
よ う なポー ト も 追加で含まれます。
1.
s_axis_data_tlast : こ のポー ト は、 マルチチ ャ ネルの CIC Compiler にのみ使用で き 、 定数 0 で駆動で き ます。 こ
れは、 event_tlast_missing 信号 と even_tlast_unexpected 信号を生成す る 場合以外、 CIC Compiler で使用 さ れません。
2.
event_tlast_missing お よ び event_tlast_unexpected : こ れ ら のポー ト は、 s_axis_data_tlast ポー ト が使用 さ れず、 一
定の値で駆動 さ れ る 場合は無視で き ます。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
CORDIC
AXI ではないブ ロ ッ ク のポー ト のほ と ん どは、 AXI ポー ト に直接マ ッ プで き ます。 AXI イ ン タ ーフ ェ イ ス には、 次の
よ う なポー ト も 追加で含まれます。
1.
入力 tvalid ポー ト : 定数 1 で駆動で き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
17
第 3 章 : ISE から Vivado IDE へのデザイ ンの移行
2.
出力 tvalid ポー ト : こ れ ら のポー ト は、 情報がダ ウ ン ス ト リ ーム ブ ロ ッ ク で使用 さ れない場合は無視で き ます。
中には、 次に示す よ う に、 AXI イ ン タ ーフ ェ イ ス の コ ン フ ィ ギ ュ レーシ ョ ン の一部でサポー ト さ れない AXI ではな
いブ ロ ッ ク の出力ポー ト も あ り ます。
1.
x_out : こ のポー ト は、 arc_tan お よ び arc_tanh 関数ではサポー ト さ れません。 こ の コ ン フ ィ ギ ュ レーシ ョ ン でサ
ポー ト さ れ る のは、 phase_output ポー ト のみです。
2.
y_out : こ のポー ト は、 arc_tan、 arc_tanh お よ び square_root 関数ではサポー ト さ れません。
3.
phase_output : こ のポー ト は、square_root、sin_and_cos、sinh_and_cosh、お よ び rotate 関数ではサポー ト さ れません。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
Complex Multiplier
AXI ではないブ ロ ッ ク のポー ト のほ と ん どは、 AXI ポー ト に直接マ ッ プで き ます。 AXI イ ン タ ーフ ェ イ ス には、 次の
よ う なポー ト も 追加で含まれます。
1.
入力 tvalid ポー ト : 定数 1 で駆動で き ます。
2.
dout_tvalid : こ のポー ト は、 情報がダ ウ ン ス ト リ ーム ブ ロ ッ ク で使用 さ れない場合は無視で き ます。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
出力幅は、 古いブ ロ ッ ク と ア ッ プ グ レ ー ド さ れたブ ロ ッ ク 間で違 う こ と が あ り ま す。 詳細レ ポー ト を使用 し てパ ラ
メ ー タ ー値を同 じ に し てお く こ と をお勧め し ます。 AXI ではないブ ロ ッ ク の output_lsb 値が 0 よ り 大 き い場合、 AXI
Complex Multiplier では LSB か ら MSB の範囲ではな く 、 output_width のみがサポー ト さ れ る ので、 dout 信号で ス ラ イ
ス ブ ロ ッ ク を使用 し て必要な結果を取得で き ます。
Convolution Encoder
AXI ではないブ ロ ッ ク のポー ト のほ と ん どは、 AXI ポー ト に直接マ ッ プで き ます。 AXI イ ン タ ーフ ェ イ ス には、 次の
よ う なポー ト も 追加で含まれます。
1.
入力 tvalid ポー ト : nd が AXI ではないブ ロ ッ ク で イ ネーブルにな っ ていない と 、 こ のポー ト は定数 1 で駆動で
き ます。
2.
出力 tvalid ポー ト : こ れ ら のポー ト は、 情報がダ ウ ン ス ト リ ーム ブ ロ ッ ク で使用 さ れない場合は無視で き ます。
中には、次に示す よ う に、AXI イ ン タ ーフ ェ イ ス でサポー ト さ れない AXI ではないブ ロ ッ ク の出力ポー ト も あ り ます。
1.
fd_in : こ のポー ト は廃止予定です。 AXI イ ン タ ーフ ェ イ スは、 各ブ ロ ッ ク の開始時にパルス を必要 と し ません。
こ れを自動的に検出す る には、 s_axis_tvalid が使用 さ れます。
2.
rffd : こ のポー ト は廃止予定です。AXI イ ン タ ーフ ェ イ ス の入力デー タ ス ト リ ームは、s_axis_data_tready がアサー
ト さ れ る と サンプ リ ン グ さ れます。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
DDS Compiler
AXI ではないブ ロ ッ ク のポー ト のほ と ん どは、 AXI ポー ト に直接マ ッ プで き ます。 AXI イ ン タ ーフ ェ イ ス には、 次の
よ う なポー ト も 追加で含まれます。
1.
入力 tvalid ポー ト : 定数 1 で駆動で き ます。
2.
出力 tvalid ポー ト : こ れ ら のポー ト は、 情報がダ ウ ン ス ト リ ーム ブ ロ ッ ク で使用 さ れない場合は無視で き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
18
第 3 章 : ISE から Vivado IDE へのデザイ ンの移行
3.
入力 tlast ポー ト : 定数 0 で駆動で き ます。 こ れは、 event_tlast_missing 信号 と even_tlast_unexpected 信号を生成す
る 場合以外、 DDS Compiler で使用 さ れません。
4.
出力 event 信号 : こ れ ら のポー ト は、 入力 tlast ポー ト が使用 さ れず、 一定の値で駆動 さ れ る 場合は無視で き ます。
中には、 次に示す よ う に、 AXI イ ン タ ーフ ェ イ ス の コ ン フ ィ ギ ュ レーシ ョ ン の一部でサポー ト さ れない AXI 以外の
出力ポー ト も あ り ます。
1.
addr : こ の ピ ンは AXI イ ン タ ーフ ェ イ ス では廃止 さ れ る 予定です。 同等の ピ ンはあ り ませんが、 イ ン ク リ メ ン
テ ィ ン グ カ ウ ン タ ーに内部で置 き 換え ら れます。
2.
reg_select : PINC と POFF の両方が 1 つの転送で書き 出 さ れ る 可能性があ る ので、 こ の ピ ンは AXI イ ン タ ーフ ェ
イ ス には必要な く な っ てい ます。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
AXI で は な い 方 の DDS Compiler に チ ャ ネ ル ピ ン が 使用 さ れ る 場合、 同 じ 機能 を AXI イ ン タ ー フ ェ イ ス の
data_tuser_chanid ポー ト か ら 達成で き ま す。 こ のポー ト を イ ネーブルにす る には、 AXI DDS Compiler の GUI を開い
て、 [TUSER Options] の下の [DATA Output] の値を [Chan_ID_Field] に変更 し ます。
Divider Generator
AXI ではない Divider Generator のポー ト のほ と ん どは、 AXI ポー ト に直接マ ッ プで き ます。 AXI イ ン タ ーフ ェ イ ス に
は、 次の よ う なポー ト も 追加で含まれます。
1.
入力 tvalid ポー ト : 定数 1 で駆動で き ます。
2.
dout_tvalid : こ のポー ト は、 情報がダ ウ ン ス ト リ ーム ブ ロ ッ ク で使用 さ れない場合は無視で き ます。
3.
quotient : こ のポー ト は tdata_quotient にマ ッ プで き ます。
4.
remainder : こ のポー ト は tdata_remainder にマ ッ プで き ます。
5.
fractional : こ のポー ト は tdata_fractional にマ ッ プで き ます。
6. rfd : こ のポー ト は dividend_tready か divisor_tready のいずれかにマ ッ プで き ます。 こ れ ら のポー ト は、 AXI
Divider Generator ブ ロ ッ ク のブ ロ ッ キ ン グ コ ン フ ィ ギ ュ レーシ ョ ンで使用で き ます。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
FIR Compiler
AXI ではないブ ロ ッ ク のポー ト のほ と ん どは、 AXI ポー ト に直接マ ッ プで き ます。 AXI イ ン タ ーフ ェ イ ス には、 次の
よ う なポー ト も 追加で含まれます。
1. s_axis_config_tvalid : 定数 1 で駆動で き ます。 間引 き フ ィ ル タ ーの場合、 こ のポー ト は出力レー ト で駆動 さ れ る
必要があ り ます。
2. s_axis_config_tlast : こ のポー ト は、 マルチチ ャ ネルのFIR Compiler にのみ使用で き 、 定数 0 で駆動で き ます。 こ
れは、 event_tlast_missing 信号 と even_tlast_unexpected 信号を生成す る 場合以外は、 FIR Compiler で使用 さ れません。
3.
出力 event 信号 : こ れ ら の信号は、 tlast が使用 さ れず、 一定の値で駆動 さ れ る 場合は無視で き ます。
中には、 次に示す よ う に、 AXI イ ン タ ーフ ェ イ ス の コ ン フ ィ ギ ュ レーシ ョ ン の一部でサポー ト さ れない AXI ではな
い出力ポー ト も あ り ます。
1.
chan_in : こ のポー ト は廃止予定です。
2. coef_filter_sel : リ ロ ー ド チ ャ ネルのフ ォーマ ッ ト は、 coef_filter_sel が s_axis_reload_tdata の リ ロ ー ド パケ ッ ト の
先頭に付け ら れ る よ う に変更 さ れま し た。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
19
第 3 章 : ISE から Vivado IDE へのデザイ ンの移行
coeff_id の ビヘ イ ビ アーは変更 さ れ ます。 coeff_id は s_reload_tlast にマ ッ プで き ますが、 リ ロ ー ド パケ ッ ト の終わ り
でアサー ト さ れ る よ う にな っ てい ます。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
AXI で は な い 方 の FIR Compiler に chan_out ポ ー ト が 使用 さ れ る 場合、 同 じ 機能 を AXI イ ン タ ー フ ェ イ ス の
data_tuser_chanid ポー ト か ら 達成で き ます。 こ のポー ト を イ ネーブルにす る には、 AXI FIR Compiler の GUI を開いて、
[TUSER] の下の [Output] の値を [Chan_ID_Field] に変更 し ます。
[Coefficient Vector] パ ラ メ ー タ ーは AXI ではない フ ロ ーか ら AXI フ ロ ーに変更 さ れ、 すべての式が評価 さ れて、 実際
のベ ク タ ー デー タ が戻 さ れます。 こ れに よ り 、 FDATool、 ワ ー ク スペース ま たはマ ス ク パ ラ メ ー タ ーを移動 し た り 、
間違っ て表記 し た り す る こ と な く 、 階層サブシ ス テ ムのア ッ プグ レー ド を検証 し て イ ンプ リ メ ン ト で き る よ う にな り
ます。 検証 し て接続を変更 し た ら 、 こ の変数は手動で前の値に変換す る こ と がで き ます (ア ッ プグ レー ド ス テー タ ス
レ ポー ト の [Details] ページ を参照)。
Fast Fourier Transform
AXI ではないブ ロ ッ ク のポー ト の中には、 AXI ポー ト に直接マ ッ プで き る も のがあ り ます。 次は、 廃止 さ れた AXI で
はないポー ト の リ ス ト です。
1.
start : AXI FFT は、 s_axis_data_tvalid High でサンプル デー タ がデー タ 入力チ ャ ネルに提供 さ れ る と 自動的に開始
し ます。
2.
xn_index : こ のポー ト は AXI イ ン タ ーフ ェ イ ス では廃止 さ れま し た。
3.
busy : こ のポー ト は AXI イ ン タ ーフ ェ イ ス では廃止 さ れま し た。
4.
edone : こ のポー ト は AXI イ ン タ ーフ ェ イ ス では廃止 さ れま し た。
5.
done : こ のポー ト は AXI イ ン タ ーフ ェ イ ス では廃止 さ れま し た。
6.
unload : AXI FFT は、 m_axis_data_tready がアサー ト さ れ る と 、 処理済みサンプル デー タ があればそれを自動的
にア ン ロ ー ド し 始め ます。
AXI イ ン タ ーフ ェ イ ス には、 次の よ う なポー ト も 追加で含まれます。
1.
s_axis_data_tlast : こ のポー ト は、 マルチチ ャ ネル FFT にのみ使用で き 、 定数 0 で駆動で き ます。 こ れは、
event_tlast_missing 信号 と event_tlast_unexpected 信号を生成する 場合以外、 FFT で使用 さ れません。
2.
event_tlast_missing お よ び event_tlast_unexpected : こ れ ら のポー ト は、 s_axis_data_tlast ポー ト が使用 さ れず、 一
定の値で駆動 さ れ る 場合は無視で き ます。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
s_axis_data_tvalid は 1 に接続す る 必要があ り ます。 こ れに よ り 、 リ ク エ ス ト さ れた と き に常にデー タ を提供で き る こ
と が コ アに伝わ り ます。 ただ し 、 FFT は連続 ク ロ ッ ク サ イ ク ルでデー タ を常に消費で き る わけではないので、 デー タ
の FFT ま での フ ロ ーを制御す る ために s_axis_data_tready を使用す る 必要があ り ます。
Interleaver/De‐Interleaver
AXI ではないブ ロ ッ ク のポー ト のほ と ん ど は、 AXI ポー ト に直接マ ッ プで き ま す。 次は、 廃止 さ れた AXI ではない
ポー ト の リ ス ト です。
1.
FD : FD は使用で き な く な っ てい ます。 コ アは、 次の場合にブ ロ ッ ク を開始 し ます。
a.
最初のシ ン ボルが リ セ ッ ト 後に表示 さ れ る 場合
b.
最初にシ ン ボルが Rectangular モー ド のブ ロ ッ ク の終わ り の後に表示 さ れ る 場合
c.
最初にシ ン ボルが Forney モー ド のブ ロ ッ ク の終わ り の後に表示 さ れ る 場合。 こ れは、 s_axis_data_tlast がア
サー ト さ れた後、 コ ミ ュ ニ ケー タ ーが分岐 0 に到達す る 場合の こ と です。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
20
第 3 章 : ISE から Vivado IDE へのデザイ ンの移行
2. FD abort : 使用で き な く な っ てい ます。 ブ ロ ッ ク を当然の結果にな る よ う にする には、 十分なシ ン ボル デー タ が
提供 さ れてい る 必要があ り ます。 ま たは、 aresetn を使用 し て コ ア を リ セ ッ ト する 必要があ り ます。 Forney モー ド の場
合、 こ れはブ ロ ッ ク が使用 さ れ る 分岐数の整数倍であ る 必要があ る よ う にな っ た こ と を意味 し ます。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
Reed‐Solomon Decoder
AXI ではないブ ロ ッ ク のポー ト のほ と ん ど は、 AXI ポー ト に直接マ ッ プで き ま す。 次は、 廃止 さ れた AXI ではない
ポー ト です。
sync : AXI バージ ョ ンではな く な っ てい ます。 こ れを自動的に検出す る には、s_axis_tvalid が使用 さ れ る よ う にな っ て
い ます。 デザ イ ンは、 適宜手動でア ッ プデー ト す る 必要があ り ます。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
Reed‐Solomon Encoder
AXI ではないブ ロ ッ ク のポー ト のほ と ん ど は、 AXI ポー ト に直接マ ッ プで き ま す。 次は、 廃止 さ れた AXI ではない
ポー ト です。
start : AXI イ ン タ ーフ ェ イ ス では廃止 さ れ ま し た。 こ れを自動的に検出す る には、 s_axis_tvalid が使用 さ ます。 デザ
イ ンは、 適宜手動でア ッ プデー ト す る 必要があ り ます。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
Viterbi Decoder
AXI ではないブ ロ ッ ク のポー ト のほ と ん どは、 AXI ポー ト に直接マ ッ プで き ます。
rst ( リ セ ッ ト ) 信号のビヘ イ ビ アーは、 AXI ではない イ ン タ ーフ ェ イ ス か ら AXI イ ン タ ーフ ェ イ ス に変わ り ます。 AXI
イ ン タ ーフ ェ イ ス の場合、 最低 2 サ イ ク ル間は aresetn がア ク テ ィ ブ Low にな っ てい る 必要があ り ます。
手順 3 : Vivado IDE と 互換性のない残 り のブ ロ ッ ク を削除
Vivado IDE と 完全に互換性のないブ ロ ッ ク は、 モデルか ら 削除する 必要があ り ます。 互換性のないブ ロ ッ ク を次に リ
ス ト し ます。
Vivado IDE と 互換性のないブ ロ ッ ク
対処
ChipScope
System Generator 14.7 を使用 し 続け る か、直
接 Vivado IDE をデバ ッ グに使用す る
Configurable Subsystem Manager
Multiple Subsystem Generator
複数 ク ロ ッ ク ド メ イ ン を 使用す る た めの
Convert モデルについては、 「複数の独立 ク
ロ ッ ク のハー ド ウ ェ ア デザ イ ン」 を参照 し
て く だ さ い。
Resource Estimator
置換機能が今後の リ リ ース で含まれ る よ う
にな る ま で、 こ のブ ロ ッ ク は削除す る
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
21
第 3 章 : ISE から Vivado IDE へのデザイ ンの移行
Vivado IDE と 互換性のないブ ロ ッ ク
対処
EDK Processor
こ の機能が今後の リ リ ース で含まれ る よ う
にな る ま で、System Generator 14.7 を使用 し
続け る
From FIFO、 To FIFO、 From Register、 To 置換機能が今後の リ リ ース で含まれ る よ う
Register、 Shared Memory、 Shared Memory にな る ま で、System Generator 14.7 を使用 し
Read、 Shared Memory Write
続け る
PicoBlaze Instruction Display
PicoBlaze Microcontroller
System Generator 14.7 を使用 し 続け る
VDMA Interface 5.3
置換機能が今後の リ リ ース で含まれ る よ う
にな る ま で、System Generator 14.7 を使用 し
続け る
WaveScope
Waveform Viewer を使用する
手順 4 : ISE から Vivado IDE への移行 フ ローの完了
1.
ISE-System Generator モデルに最新の 14.7 ブ ロ ッ ク のみが含まれ、Vivado 環境 と 互換性のないブ ロ ッ ク (AXI では
ないブ ロ ッ ク ) が削除 さ れたか ど う か を確認 し ます。
2.
準備 し た System Generator デザ イ ン を Vivado IDE で開 き ます。
3.
モデル シー ト の空白部分を右 ク リ ッ ク し 、 [Tools] → [Upgrade model] を ク リ ッ ク し ます。
4.
[File] → [Save] を ク リ ッ ク し ます。
5.
MATLAB でデザ イ ン を シ ミ ュ レーシ ョ ン し 直 し て、 正 し く 機能する か ど う か を確認 し ます。
6.
デザ イ ン を閉 じ ます。
こ れで ISE 環境か ら Vivado IDE への移行は終了です。
複数 ク ロ ッ クの ISE デザイ ンの Vivado IDE への移行
複数 ク ロ ッ ク の ISE デザ イ ン を Vivado 環境に移行する には、 手動の操作が必要にな り ます。 次の手順に従い ます。
1. 前述の [Model upgrade] の手順に従っ た ら 、 Vivado バージ ョ ンの System Generator で準備 し たモデル フ ァ イ ルを
開 き ます。 ソ ース デザ イ ンは、 読み出 し イ ン タ ーフ ェ イ スお よ び書 き 込み イ ン タ ーフ ェ イ ス用に ク ロ ッ ク 別のサブシ
ス テ ムに分割 さ れ る はずです。
3. Xilinx Shared-Memory ブ ロ ッ ク が削除 さ れ、入力ポー ト と 出力ポー ト が Simulink の outport と inport 接続に置 き 換
わ っ てい る か ど う か を確認 し ます。 こ れに よ り 、 ク ロ ッ ク ド メ イ ン を ま たが る ポー ト イ ン タ ーフ ェ イ ス が最上位サ
ブシ ス テ ムか ら 使用で き 、 接続で き る よ う にな り ます。
4. Vivado System Generator for DSP 非同期 ロ ジ ッ ク を手動で挿入 し て、 デー タ を複数の独立 し た ク ロ ッ ク ド メ イ ン
を ま たがっ て転送 さ れ る よ う に し ます。 こ の方法については、 「複数の独立 ク ロ ッ ク のハー ド ウ ェ ア デザ イ ン」 を参
照 し て く だ さ い。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
22
第 4章
System Generator を使用 し たハー ド ウ ェ ア
設計
System Generator は、 FPGA ハー ド ウ ェ ア を設計す る ためのシ ス テ ム レベルのモデ リ ン グ ツールです。 Simulink が さ ま ざ ま な
面で拡張 さ れてお り 、 ハー ド ウ ェ ア設計に適 し たモデ リ ン グ環境を提供 し ます。 デザ イ ンは高い抽象度で記述 さ れ、 ボ タ ン を
ク リ ッ ク す る だけで FPGA に コ ンパ イ ル さ れます。 低い抽象度でFPGA リ ソ ース に も ア ク セ ス で き る ので、 効率的な FPGA デ
ザ イ ン を構築で き ます。
System Generator を使用 し たデザ イ
ン フ ロー
System Generator でのデザ イ ン設計が有益な状況を示 し
ます。
System Generator でのシ ス テ ム レベ
ルのモデ リ ン グ
柔軟で高度なシ ス テ ム モデ リ ン グ環境か ら 、デバ イ ス特
定のハー ド ウ ェ ア デザ イ ン を直接 イ ン プ リ メ ン ト す る
System Generator の機能を説明 し ます。
自動 コ ー ド 生成
System Generator デザ イ ン の自動 コ ー ド 生成について説
明 し ます。
MATLAB の FPGA への コ ンパ イ ル
MATLAB プ ロ グ ラ ム 言語 の サ ブ セ ッ ト を 使用 し て ス
テー ト マ シ ンお よ び数値演算 フ ァ ン ク シ ョ ン を記述す
る 方法を説明 し ます。 こ の よ う に記述 し た フ ァ ン ク シ ョ
ン を System Generator のブ ロ ッ ク に含め、同等の HDL に
自動的に コ ンパ イ ルで き ます。
System Generator デザ イ ンの大型シ
ス テ ムへの イ ン ポー ト
System Generator か ら VHDL ネ ッ ト リ ス ト を取 り 出 し て
合成 し 、 大型デザ イ ンに組み込む方法を説明 し ます。 ま
た、 System Generator で作成 し た VHDL を シ ス テ ム全体
のシ ミ ュ レ ーシ ョ ン モデルに組み込む方法 も 説明 し ま
す。
コ ン フ ィ ギ ャ ブル サブシ ス テ ム と
System Generator
System Generator での コ ン フ ィ ギ ャ ブル サブシ ス テ ムの
使用方法を示 し ます。コ ン フ ィ ギ ャ ブル サブシ ス テ ムの
定義、 ブ ロ ッ ク の削除 と 追加、 コ ン フ ィ ギ ャ ブル サブシ
ス テ ム を使用 し た コ ンパ イ ル結果の System Generator デ
ザ イ ンへの イ ン ポー ト 方法について説明 し ます。
高パ フ ォ ーマ ン ス FPGA デザ イ ン
に関する 注記
FPGA に効率的で高パフ ォーマ ン ス のデザ イ ン を イ ンプ
リ メ ン ト す る ための、 System Generator での設計手法を
示 し ます。
FDATool を使用 し たデジ タ ル フ ィ
ル タ ー アプ リ ケーシ ョ ン
FDATool ブ ロ ッ ク を使用 し て、 FIR フ ィ ル タ ーを指定、
イ ンプ リ メ ン ト 、 お よ びシ ミ ュ レーシ ョ ンする 方法を説
明 し ます。
複数の独立 ク ロ ッ ク のハー ド ウ ェ
ア デザ イ ン
デザ イ ン は サ ブ シ ス テ ム ブ ロ ッ ク の グ ループ に パー
テ ィ シ ョ ン で き 、 各サブシ ス テ ムではその他のサブシ ス
テ ム のサ イ ク ル周期 と は独立 し た共通のサ イ ク ル周期
が使用 さ れます。
AXI イ ン タ ーフ ェ イ ス
AMBA AXI4 の概要 と System Generator に関す る AMBA
AXI4 の詳細について説明 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
23
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
AXI-Lite イ ン タ ーフ ェ イ ス生成
System Generator モ ジ ュ ー ル 用 に 標準 AXI4-Lite イ ン
タ ーフ ェ イ ス を作成 し 、 後で IP イ ン テ グ レ ー タ ーを使
用 し て大型デザ イ ン に含め る た めに そのモ ジ ュ ール を
Vivado IP カ タ ロ グ にエ ク ス ポー ト す る 機能につい て説
明 し ます。
System Generator を使用 し たデザイ ン フ ロー
System Generator は、 デザ イ ン をハー ド ウ ェ アに変換せずにアルゴ リ ズ ム を解析す る 場合、 System Generator デザ イ ン を大型デ
ザ イ ンの一部 と し て使用す る 場合、System Generator デザ イ ン を それのみで完成 さ せ、FPGA ハー ド ウ ェ アで使用す る 場合な ど、
さ ま ざ ま な状況で有益です。 こ れ ら の 3 つの状況について説明 し ます。
アルゴ リ ズムの解析
System Generator は、 特にアルゴ リ ズ ムの解析、 デザ イ ンのプ ロ ト タ イ プ作成、 モデル解析で有益です。 こ れ ら が目的であ る 場
合は、 ツールを使用 し て アルゴ リ ズ ム を具体化 し 、 デザ イ ンで発生す る 可能性のあ る 問題を調べた り 、 ハー ド ウ ェ アへの イ ン
プ リ メ ン テーシ ョ ンにおけ る コ ス ト やパフ ォーマ ン ス を予測で き ます。 こ れ ら の作業は準備のためであ り 、 デザ イ ン をハー ド
ウ ェ アに変換す る 必要はほ と ん ど あ り ません。
こ の状況では、 詳細な イ ンプ リ メ ン テーシ ョ ン を考慮する こ と な く 、 デザ イ ンの主な部分を組み立て ます。 Simulink ブ ロ ッ ク
と MATLAB の M コ ー ド に よ り 、 シ ミ ュ レーシ ョ ンお よ び結果の解析用に ス テ ィ ミ ュ ラ ス を供給 し ます。 リ ソ ース の予測では、
ハー ド ウ ェ アに イ ンプ リ メ ン ト し たデザ イ ンの コ ス ト を概算 し ます。 ハー ド ウ ェ ア生成を使用 し た テ ス ト に よ り 、 可能なハー
ド ウ ェ ア ス ピー ド が示 さ れます。
有効な方法が決ま っ た ら 、 デザ イ ン を具体化 し ます。 System Generator では、 調整を段階的に行 う こ と がで き る ので、 デザ イ ン
の一部はハー ド ウ ェ アに イ ンプ リ メ ン ト す る 準備が完了 し ていて も 、 その他の部分を抽象記述の ま ま に し てお く こ と がで き ま
す。 System Generator のハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン機能は、 デザ イ ン を部分的に調整 し てい る 場合に特に有益です。
大型デザイ ンの一部 と し てのイ ン プ リ メ ン ト
System Generator は、 大型デザ イ ンの一部を イ ンプ リ メ ン ト す る のに よ く 使用 さ れます。 た と えば、 System Generator はデー タ
パスお よ び制御を イ ンプ リ メ ン ト す る のには適 し てい ますが、 厳密な タ イ ミ ン グ要件を持つ高度な外部 イ ン タ ーフ ェ イ ス には
それほ ど適 し てい ません。 こ の場合、 System Generator を使用 し てデザ イ ンの一部を イ ンプ リ メ ン ト し 、 ほかの部分を その他の
ツールで イ ンプ リ メ ン ト し て、 こ れ ら を組み合わせて 1 つの大型デザ イ ン を構成で き ます。
こ の フ ロ ーでは、 デザ イ ン全体を表す HDL ラ ッ パーを作成 し 、 System Generator の部分を コ ン ポーネ ン ト と し て使用す る のが
一般的な方法です。 ほかのツールで作成 し た部分 も 、 コ ン ポーネ ン ト と し て ラ ッ パーに含め る か、 ラ ッ パーに直接 イ ン ス タ ン
シエー ト で き ます。
完成 し たデザイ ンのイ ン プ リ メ ン ト
デザ イ ンに必要な も のがすべて System Generator に含まれてい る 場合があ り ます。 こ の場合、 System Generator ブ ロ ッ ク のパ ラ
メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で [Generate] ボ タ ン を ク リ ッ ク す る だけで、 デザ イ ン を HDL に変換 し 、 ダ ウ ン ス ト リ ーム ツー
ルを使用 し て HDL の処理に必要な フ ァ イ ルを生成で き ます。 生成 さ れ る フ ァ イ ルは、 次の と お り です。
•
デザ イ ン を イ ンプ リ メ ン ト す る HDL フ ァ イ ル。
•
HDL テ ス ト ベンチ。 こ のテ ス ト ベンチを使用す る と 、 Simulink シ ミ ュ レーシ ョ ンの結果を ロ ジ ッ ク シ ミ ュ レー タ の結果 と
比較で き ます。
•
System Generator HDL を Vivado IDE プ ロ ジ ェ ク ト と し て使用で き る よ う にす る フ ァ イ ル。
System Generator で生成 さ れ る フ ァ イ ルの詳細は、 コ ンパ イ ル結果を参照 し て く だ さ い。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
24
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
DSP 設計者への注意事項
System Generator は、 Simulink を拡張 し てハー ド ウ ェ ア設計を可能に し た も ので、 FPGA に自動的に コ ンパ イ ル可能な高度な抽
象記述を提供 し ます。演算の抽象記述は Simulink (離散時間/空間ダ イ ナ ミ ッ ク シ ス テ ム シ ミ ュ レーシ ョ ン) に適 し てい ますが、
System Generator では FPGA の機能に も ア ク セ ス で き ます。
並列処理やパ イ プ ラ イ ン処理な ど をハー ド ウ ェ アで ど の よ う に実現 し てい る か を理解す る こ と に よ り 、 よ り 適切な イ ンプ リ メ
ン テーシ ョ ンが得 ら れます。 IP コ ア を使用す る と 、 FFT な ど の複雑な フ ァ ン ク シ ョ ン を含む FPGA デザ イ ン を効率的に作成で
き ます。 ま た、 よ り 厳密にアプ リ ケーシ ョ ンに フ ィ ッ ト す る よ う モデルを調整す る こ と も 可能です。
System Generator のマニ ュ アル全体を と お し て、 シ ス テ ム パ ラ メ ー タ ーを使用 し てハー ド ウ ェ アの機能を設定す る 方法を示 し
ます。
ハー ド ウ ェ ア設計者への注意事項
System Generator は、 ハー ド ウ ェ ア記述言語 (HDL) ベース のデザ イ ン に置 き 換わ る も のではあ り ませんが、 重要な部分にだけ
集中す る こ と を可能に し ます。 ほ と ん ど の DSP プ ロ グ ラ マは、 アセ ンブ ラ でのみプ ロ グ ラ ムす る のではな く 、 C 言語の よ う な
高級言語でプ ロ グ ラ ム を開始 し 、 パフ ォーマ ン ス要件を満たすために必要な場合だけアセ ンブ リ コ ー ド を記述 し てい ます。
経験的に、 デザ イ ン の内部ハー ド ウ ェ ア ク ロ ッ ク を制御す る 必要のあ る 部分 (DDR、 位相 ク ロ ッ ク を使用す る な ど) は、 HDL
を使用 し て イ ンプ リ メ ン ト す る のが適切です。 比較的重要度の低い部分は System Generator で イ ンプ リ メ ン ト し 、 その後 HDL
部分 と System Generator 部分を接続 し ます。 通常、 信号処理シ ス テ ムのほ と ん ど の部分では、 外部 イ ン タ ーフ ェ イ ス を除き 、 こ
の レベルの制御は不要です。 System Generator には、 HDL 設計者に特に関係す る HDL コー ド の部分をデザ イ ンに イ ン ポー ト す
る 機能 (HDL モジ ュ ールの イ ン ポー ト を参照) が含まれてい ます。
HDL を使用す る 設計者に関係す る System Generator の機能 と し て、 テ ス ト ベ ク タ を含む HDL テ ス ト ベンチの自動生成があ り
ます。 こ の機能については、 HDL テ ス ト ベンチを参照 し て く だ さ い。
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン の使用で説明 さ れてい る ハー ド ウ ェ ア協調シ ミ ュ レ ーシ ョ ン イ ン タ ーフ ェ イ ス を使用す
る と 、 Simulink の制御下でデザ イ ン をハー ド ウ ェ アで実行で き 、 MATLAB と Simulink のデー タ 解析お よ び可視化の機能を最大
限に活用で き ます。
System Generator でのシス テム レ ベルのモデ リ ング
System Generator では、 デバ イ ス特有のハー ド ウ ェ ア デザ イ ン を柔軟な高レベルのシ ス テ ム モデ リ ン グ環境で構築で き ます。
System Generator デザ イ ンでは、 信号はビ ッ ト だけでな く 、 符号付き ま たは符号な し の固定小数点値にする こ と がで き 、 デザ イ
ンに変更を加え る と 、 信号型 も 自動的に適切な型に変換 さ れます。 ブ ロ ッ ク は単にハー ド ウ ェ アの代わ り ではな く 、 その周辺
に合わせて自動的に生成結果お よ び最終的なハー ド ウ ェ アが調整 さ れます。
System Generator では、 さ ま ざ ま な要素か ら デザ イ ン を構築で き ます。 デー タ フ ロ ー モデル、 ハー ド ウ ェ ア設計言語 (VHDL、
Verilog)、 お よ び MATLAB プ ロ グ ラ ム言語に よ る 関数を同時に使用、 シ ミ ュ レーシ ョ ン、 お よ びハー ド ウ ェ アに合成で き ます。
System Generator のシ ミ ュ レーシ ョ ン結果は、 ビ ッ ト 精度お よ びサ イ ク ル精度であ り 、 ハー ド ウ ェ アでの結果 と 厳密に一致 し ま
す。 System Generator のシ ミ ュ レーシ ョ ンは従来の HDL シ ミ ュ レー タ でのシ ミ ュ レーシ ョ ン よ り も 高速で、 結果 も 解析 し やす
く な っ てい ます。
System Generator ブ ロ ッ ク セ ッ ト
System Generator ブ ロ ッ ク の ラ イ ブ ラ リ への分類方法、ブ
ロ ッ ク のパ ラ メ ー タ ー設定方法お よ び使用方法 を 示 し
ます。
すばやいモデル作成 と 解析 を 実行
するザ イ リ ン ク ス コ マン ド
Simulink ポ ッ プ ア ッ プ メ ニ ュ ーに追加 さ れたザ イ リ ン
ク ス コ マ ン ド ですばやい System Generator モデルの作
成お よ び解析を実行で き ます。
信号型
System Generator で使用 さ れ る デー タ 型 と 、 ツールで自
動的にデー タ 型を割 り 当て る 方法を説明 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
25
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
ビ ッ ト 単位お よ びサ イ ク ル単位の
モデ リ ン グ
System Generator モデルの Simulink ベース のシ ミ ュ レー
シ ョ ン と 、 ハー ド ウ ェ ア での動作 と の関係 を 説明 し ま
す。
タ イ ミ ング と ク ロ ッ ク
ク ロ ッ ク のハー ド ウ ェ アへの イ ンプ リ メ ン ト 方法、 お よ
び System Generator で ク ロ ッ ク の イ ンプ リ メ ン テーシ ョ
ン を制御す る 方法を示 し ま す。 System Generator でマル
チ レ ー ト Simulink モ デル が ど の よ う に ク ロ ッ ク 同期
ハー ド ウ ェ アに変換 さ れ る か を説明 し ます。
同期化の メ カ ニズ ム
高レベル System Generator デザ イ ンにおいてデー タ パ ス
エ レ メ ン ト 間でデー タ フ ロ ーを同期する 方法 と 、制御パ
ス フ ァ ン ク シ ョ ン を イ ン プ リ メ ン ト す る 方法を説明 し
ます。
ブ ロ ッ ク マ ス ク と パ ラ メ ー タ ーの
伝搬
Simulink でパ ラ メ ー タ ー指定シ ス テ ム お よ びサ ブ シ ス
テ ム を作成す る 方法を説明 し ます。
System Generator ブ ロ ッ ク セ ッ ト
Simulink ブ ロ ッ ク セ ッ ト は、 Simulink ブ ロ ッ ク エデ ィ タ ーで接続 し 、 ダ イ ナ ミ ッ ク なシ ス テ ムのフ ァ ン ク シ ョ ン モデルを作成
す る ためのブ ロ ッ ク の ラ イ ブ ラ リ です。 シ ス テ ム のモデ リ ン グでは、 System Generator ブ ロ ッ ク セ ッ ト を その他の Simulink ブ
ロ ッ ク セ ッ ト と 同様に使用で き ます。 ブ ロ ッ ク は、 数値演算、 ロ ジ ッ ク 、 メ モ リ 、 DSP フ ァ ン ク シ ョ ン な ど の抽象表現であ り 、
高度な信号処理シ ス テ ムやその他のシ ス テ ム を構築す る ために使用で き ます。 ま た、 System Generator コ ー ド 生成 ソ フ ト ウ ェ ア
だけでな く 、 FDATool、 ModelSim な ど その他の ソ フ ト ウ ェ ア ツールへの イ ン タ ーフ ェ イ ス と な る ブ ロ ッ ク も あ り ます。
System Generator ブ ロ ッ ク は、 ビ ッ ト 精度お よ びサ イ ク ル精度です。 ビ ッ ト 精度ブ ロ ッ ク は、 ハー ド ウ ェ アで生成 さ れ る 対応す
る 値に一致 し た値を Simulink で生成 し 、 サ イ ク ル精度ブ ロ ッ ク は対応す る 時間に対応す る 値を生成 し ます。
ザイ リ ン ク ス ブ ロ ッ ク セ ッ ト
ザ イ リ ン ク ス ブ ロ ッ ク セ ッ ト (Xilinx Blockset) は、 基本的な System Generator ブ ロ ッ ク を含む ラ イ ブ ラ リ を集めた も のです。 デ
バ イ ス特有のハー ド ウ ェ アにア ク セ スす る 低レベルのブ ロ ッ ク と 、 信号処理や高度な通信アルゴ リ ズ ム な ど を イ ンプ リ メ ン ト
する 高レベルのブ ロ ッ ク があ り ます。 Gateway In/Gateway Out ブ ロ ッ ク な ど幅広 く 応用可能なブ ロ ッ ク は、 複数の ラ イ ブ ラ リ に
含まれてい ます。Index ラ イ ブ ラ リ には、すべてのブ ロ ッ ク が含まれてい ます。次に、 こ れ ら の ラ イ ブ ラ リ について説明 し ます。
注記 : デザ イ ンの名前はザ イ リ ン ク ス ブ ロ ッ ク と 同 じ にな ら ない よ う に注意 し て く だ さ い。 た と えば、 デザ イ ンの名前を black
box.mdl にする と 、 System Generator でエ ラ ー メ ッ セージが表示 さ れ る こ と があ り ます。
ライブラ リ
説明
AXI4
AXI™4 仕様に準拠す る イ ン タ ーフ ェ イ ス を使用 し たブ ロ ッ ク
Basic Elements
デジ タ ル ロ ジ ッ ク の標準基本ブ ロ ッ ク
Communication
デジ タ ル通信シ ス テ ム で よ く 使用 さ れ る 順方向誤 り 訂正ブ ロ ッ ク お よ
びモジ ュ レー タ ー ブ ロ ッ ク
Control Logic
制御回路お よ びス テー ト マシ ン用のブ ロ ッ ク
DSP
DSP (デジ タ ル信号処理) ブ ロ ッ ク
Data Types
デー タ 型を変換す る ブ ロ ッ ク (Gateway ブ ロ ッ ク を含む)
Floating-Point
浮動小数点デー タ 型をサポー ト す る ブ ロ ッ ク
Index
ザ イ リ ン ク ス ブ ロ ッ ク セ ッ ト のすべてのブ ロ ッ ク
Math
演算フ ァ ン ク シ ョ ン を イ ンプ リ メ ン ト す る ブ ロ ッ ク
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
26
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
ライブラ リ
説明
Memory
メ モ リ を イ ン プ リ メ ン ト す る ブ ロ ッ ク お よ び メ モ リ にア ク セ スす る ブ
ロック
Tools
コ ー ド 生成 (System Generator ト ー ク ン)、 リ ソ ー ス 予測、 HDL 協調シ
ミ ュ レーシ ョ ン な ど を実行す る ユーテ ィ リ テ ィ ブ ロ ッ ク
ザイ リ ン ク ス リ フ ァ レ ン ス ブ ロ ッ ク セ ッ ト
ザ イ リ ン ク ス リ フ ァ レ ン ス ブ ロ ッ ク セ ッ ト (Xilinx Reference Blockset) には、 さ ま ざ ま な フ ァ ン ク シ ョ ン を イ ンプ リ メ ン ト す る
複合 System Generator ブ ロ ッ ク が含 まれ ます。 こ のブ ロ ッ ク セ ッ ト のブ ロ ッ ク は、 フ ァ ン ク シ ョ ン別に ラ イ ブ ラ リ に分類 さ れ
てい ます。 次に、 こ れ ら の ラ イ ブ ラ リ について説明 し ます。
ライブラ リ
説明
Communication
デジ タ ル通信シ ス テ ムで よ く 使用 さ れ る ブ ロ ッ ク
Control Logic
制御回路お よ びス テー ト マシ ン用のブ ロ ッ ク
DSP
DSP (デジ タ ル信号処理) ブ ロ ッ ク
Imaging
イ メ ージ処理ブ ロ ッ ク
Math
演算フ ァ ン ク シ ョ ン を イ ンプ リ メ ン ト す る ブ ロ ッ ク
こ のブ ロ ッ ク セ ッ ト の各ブ ロ ッ ク は複合ブ ロ ッ ク であ り 、 ブ ロ ッ ク を コ ン フ ィ ギ ュ レーシ ョ ンす る パ ラ メ ー タ ーを使用 し て、
マ ス ク サブシ ス テ ム と し て イ ンプ リ メ ン ト さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
27
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
ラ イ ブ ラ リ に含まれ る ブ ロ ッ ク を その ま ま使用 し た り 、 類似 し た特性を持つデザ イ ン を構築す る 際に開始点 と し て使用で き ま
す。 各 リ フ ァ レ ン ス ブ ロ ッ ク には、 イ ンプ リ メ ン テーシ ョ ンの説明お よ びハー ド ウ ェ ア リ ソ ース要件が含まれてい ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
28
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
すばやいモデル作成 と 解析を実行するザイ リ ン ク ス コ マ ン ド
すばや く System Generator デザ イ ン を作成 し て解析す る ための Simulink ポ ッ プア ッ プ メ ニ ュ ーにグ ラ フ ィ ッ ク コ マ ン ド が追加
さ れてい ます。 次の よ う に、 こ れ ら の コ マ ン ド には、 Simulink モデルのキ ャ ンバ ス で右 ク リ ッ ク し て、 適切なザ イ リ ン ク ス コ
マ ン ド を選択す る と ア ク セ ス で き ます。
こ れ ら の追加のザ イ リ ン ク ス コ マ ン ド の使用方法の詳細は、 「System Generator の GUI ユーテ ィ リ テ ィ 」 を参照 し て く だ さ い。
信号型
ハー ド ウ ェ アのビ ッ ト 精度シ ミ ュ レーシ ョ ン を実行す る には、 System Generator ブ ロ ッ ク がブール値、 浮動少数点値お よ び任意
の精度の固定小数点値で動作す る 必要があ り ますが、 Simulink の基本的な ス カ ラ ー信号型は、 倍精度浮動小数点です。 ザ イ リ
ン ク ス ブ ロ ッ ク と ザ イ リ ン ク ス以外のブ ロ ッ ク の間の接続には、 Gateway ブ ロ ッ ク を使用 し ます。 Gateway In ブ ロ ッ ク は倍精
度の信号をザ イ リ ン ク ス信号に変換 し 、 Gateway Out ブ ロ ッ ク はザ イ リ ン ク ス信号を倍精度の信号に変換 し ます。 Simulink の連
続 タ イ ミ ン グ信号は、 Gateway In ブ ロ ッ ク でサンプ リ ン グ し ます。
ほ と ん ど のザ イ リ ン ク ス ブ ロ ッ ク は多様型であ り 、 入力型に応 じ て適切な出力型を推測で き ます。 ブ ロ ッ ク パ ラ メ ー タ ー ダ
イ ア ロ グ ボ ッ ク ス で完全精度が指定 さ れてい る 場合は、 精度が失われない よ う に出力型が選択 さ れます。 符号拡張お よ び 0 の
パデ ィ ン グは、 必要に応 じ て自動的に行われます。 ユーザー指定の精度 も 使用で き ます。 こ の設定では、 ブ ロ ッ ク の出力型 と 、
量子化お よ びオーバーフ ロ ーの処理方法を指定で き ます。 量子化の処理方法 と し ては、 正ま たは負の無限大への不偏丸め (符
号に よ っ て異な る ) ま たは切 り 捨てがあ り ます。 オーバーフ ロ ーの処理方法には、 正ま たは負の最大値を使用す る か、 切 り 捨
て る か、 オーバーフ ロ ーをエ ラ ー と し て レ ポー ト す る かのオプシ ョ ンがあ り ます。
注記 : System Generator のデー タ 型は、 Simulink で [Format] → [Port Data Types] を ク リ ッ ク す る と 表示 さ れます。 デー タ 型を表
示す る と 、 モデルの精度を簡単に判断で き ます。 た と えば、 ポー ト のデー タ 型が Fix_11_9 の場合は、 信号は小数点以下のビ ッ
ト が 9 桁の 2 の補数符号付 き 11 ビ ッ ト 値であ り 、 Ufix_5_3 の場合は小数点以下の ビ ッ ト が 3 桁の符号な し 5 ビ ッ ト 値です。
Simulink モデルの System Generator 部分では、すべての信号をサンプ リ ン グす る 必要があ り ます。サンプ リ ン グ時間は、Simulink
の伝搬ルールに よ り 自動的に設定 さ れ る よ う にす る か、 ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で明示的に設定で き ま
す。 フ ィ ー ド バ ッ ク ループがあ る と 、 System Generator でサ ンプ リ ン グ周期お よ び信号型を推論で き ない場合 も あ り 、 その場
合はエ ラ ー メ ッ セージが表示 さ れ ます。 フ ィ ー ド バ ッ ク ループには Assert ブ ロ ッ ク を挿入 し て、 こ の問題を回避す る 必要が
あ り ます。 ループ内のすべてのポ イ ン ト に Assert ブ ロ ッ ク を追加す る 必要はあ り ません。 通常、 ループの 1 箇所に追加す る だ
けで十分です。
注記 : Simulink では、ブ ロ ッ ク と 信号を実行レー ト に応 じ て色分け し て表示で き ます (Simulink メ ニ ュ ーか ら [Format] → [Sample
Time Colors] を ク リ ッ ク )。 こ れは、 マルチ レー ト デザ イ ン を解析する のに有益です。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
29
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
浮動小数点デー タ 型
Floating-Point ラ イ ブ ラ リ の System Generator ブ ロ ッ ク では、 浮動小数点デー タ 型がサポー ト さ れます。
System Generator では、 Floating-Point Operator v6.0 IP を使用 し て、 加算/減産、 乗算、 比較、 デー タ 型変換な ど の演算の イ ン プ
リ メ ン テーシ ョ ンが実行 さ れます。
浮動小数点デー タ 型のサポー ト は、 浮動小数点演算用の IEEE-754 規格に準拠 し ます。 サポー ト さ れ る System Generator では、
デザ イ ン入力、 デー タ 型表示、 デー タ レー ト 、 デー タ 型伝搬 (RTP) に対 し て単精度、 倍精度、 カ ス タ ム精度の浮動小数点デー
タ 型がサポー ト さ れます。
浮動小数点型の IEEE‐754 規格
次に示す よ う に、 浮動小数点型は 1 つの符号ビ ッ ト (S)、 X 指数部ビ ッ ト 、 Y 仮数部ビ ッ ト を使用 し て記述で き ます。 符号ビ ッ
ト は、 常に最上位ビ ッ ト (MSB) です。
S
X ??????
E0 ? Ex-1
Y ??????
F0 ? FY-1
IEEE-754 規格に よ る と 、 浮動小数点値は基本形式で記述お よ び格納 さ れ ます。 基本形式では、 指数値 E がバ イ ア ス/正規化 さ
れた値です。 正規化 さ れた指数 E は実際の指数部の値 と バ イ ア ス の合計 と 同 じ にな り ます。 基本形式では、 仮数部の値を格納
する のに Y-1 ビ ッ ト が使用 さ れます。 F0 仮数部ビ ッ ト は、 常に隠 し ビ ッ ト で、 値は 1 であ る と 仮定 さ れます。
S はその数値の符号値を表 し ます。 S が 0 の場合、 値は正の浮動小数点に、 それ以外は負の符号小数点にな り ます。 その後の
X ビ ッ ト は、 正規化 さ れた指数部の値 E を格納す る のに使用 さ れ、 最後の Y-1 ビ ッ ト は基本形式の仮数部の値を格納す る のに
使用 さ れます。
指数部のビ ッ ト 幅 (桁数) が決ま っ てい る 場合は、 指数部バ イ ア ス は次の演算式を使用 し て計算 さ れます。
Exponent_bias = 2(X - 1) - 1 (X は指数部のビ ッ ト 幅)
IEEE 規格では、 単精度浮動小数点デー タ は 32 ビ ッ ト を使用 し て記述 さ れます。 正規化 さ れた指数部お よ び仮数部は、 それぞ
れ 8 ビ ッ ト と 24 ビ ッ ト にな り ます。 単精度の指数部バ イ ア スは 127 です。 同様に、 倍精度浮動小数点デー タ は合計 64 ビ ッ ト
を使用 し て記述 さ れ、 指数部のビ ッ ト 幅は 11、 仮数部のビ ッ ト 幅は 53 にな り ます。 倍精度の指数部バ イ ア ス は 1023 です。
正規化 さ れた浮動小数点の値は次の よ う に記述 さ れます。
正規化 さ れた浮動小数点 = (-1)S x F0.F1F2 ….FY-2FY-1 x (2)E
実際の指数部の値 (E_actual) = E - Exponent_bias.隠 し ビ ッ ト F0 の値 と E_actual 値を 1 と し た場合、 浮動小数点の数値は次の よ
う に計算で き ます。
FP_Value = (-1)S x 1.F1F2 ….FY-2FY-1 x (2)(E_actual)
System Generator での浮動小数点デー タ 表記
System Generator の Gateway In ブ ロ ッ ク では、以前はブール方お よ び固定小数点デー タ 型のみがサポー ト さ れてい ま し たが、次
に示す よ う に、Gateway In ブ ロ ッ ク の GUI と その下のマ ス ク パ ラ メ ー タ ーで も 浮動小数点デー タ 型がサポー ト さ れ る よ う にな
り ま し た。 浮動小数点デー タ 型を指定 し た後、 [Single]、 [Double]、 ま たは [Custom] のいずれかの精度を選択で き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
30
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
た と えば、 指数部の幅 9、 仮数部の幅 31 が指定 さ れ る 場合、 浮動小数点のデー タ 値は合計で 40 ビ ッ ト で、 MSB が符号表記に、
その後の 9 ビ ッ ト がバ イ ア ス指数部に、 残 り の 30 ビ ッ ト が仮数部を格納する ために使用 さ れます。
IEEE-754 規格に準拠す る ので、 [Single] 精度を選択す る と 、 ビ ッ ト 幅は合計 32 ビ ッ ト (指数部 8 ビ ッ ト 、 仮数 24 ビ ッ ト ) に仮
定 さ れ ま す。 [Doubl] 精度 を 選択す る と 、 ビ ッ ト 幅は合計 64 ビ ッ ト (指数部 11 ビ ッ ト 、 仮数部 53 ビ ッ ト ) に仮定 さ れ ま す。
[Custom] 精度を選択す る と 、 [Exponent width] お よ び [Fraction width] フ ィ ール ド が指定で き る よ う にな り 、 ユーザーが値を指定
で き ます (デフ ォ ル ト は 8 ビ ッ ト と 24 ビ ッ ト )。 [Custom] 精度のデー タ の ビ ッ ト 幅合計は、 指数部ビ ッ ト と 仮数部ビ ッ ト の総数
にな り ます。 [Single] お よ び [Double] 精度デー タ 型の仮数部の ビ ッ ト 幅 と 同様、 [Custom] 精度デー タ 型の仮数部の ビ ッ ト 幅に
も 隠 し ビ ッ ト F0 を含め る 必要があ り ます。
出力信号のデー タ 型の表示
次に示す よ う に、 レー ト お よ びデー タ 型が問題な く 伝搬 さ れ る と 、 各 System Generator ブ ロ ッ ク の出力に浮動小数点型が表示
さ れます。 次の図の よ う に信号のデー タ 型を表示す る には、[Display] → [Signals & Ports] → [Port Data Types] を ク リ ッ ク し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
31
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
浮動小数点デー タ 型の フ ォーマ ッ ト は、 XFloat_<exponent_bit_width>_<fraction_bit_width> の よ う に表示 さ れま
す。 単精度 (Single) デー タ 型は XFloat_8_24、 倍精度 (Double) デー タ 型は XFloat_11_53 と い う 文字列を使用 し て表示 さ れます。
カ ス タ ム精度 (Custom) デー タ 型で指数部のビ ッ ト 幅を 9、 仮数部のビ ッ ト 幅を 31 に指定 し た場合は、 XFloat_9_31 の よ う に表
示 さ れます。 浮動小数点デー タ 値を格納す る ためには、 40 ビ ッ ト が使用 さ れます。 浮動小数点デー タ は基本形式で格納 さ れ る
ので、 仮数部の値は 30 ビ ッ ト に格納 さ れます。
System Generator では、 固定小数点型は XFix_<total_data_width>_<binary_point_width> と い う 形式で表示 さ れ ま
す。 た と えば、 デー タ 幅 40 お よ び 2 進小数点の幅 31 の固定小数点デー タ 型は、 XFix_40_31 と 表示 さ れます。
固定小数点デー タ 型で仮数部の値を格納す る のに使用 さ れた実際のビ ッ ト 数は、 浮動小数点デー タ 型で使用 さ れ る も の と は異
な り ます。 上記の例では、 固定小数点デー タ 型の仮数部ビ ッ ト を格納す る ために 31 ビ ッ ト すべてが使用 さ れます。
System Generator では、 指数部の ビ ッ ト 幅 と 仮数部の ビ ッ ト 幅を使用 し て、 Floating-Point Operator コ ア の イ ン ス タ ン ス を コ ン
フ ィ ギ ュ レーシ ョ ンお よ び生成 し ます。
レー ト およびデー タ 型の伝搬
浮動小数点デー タ をサポー ト す る System Generator でのデー タ レー ト お よ びデー タ 型の伝搬中は、 次のデザ イ ン ルールが検証
さ れます。 次の違反のいずれかが検出 さ れ る と 、 該当す る エ ラ ー メ ッ セージが表示 さ れます。
1.
浮動小数点デー タ を運ぶ信号が浮動小数点デー タ 型をサポー ト し ない System Generator ブ ロ ッ ク のポー ト に接続 さ れてい
る 場合。
2.
System Generator ブ ロ ッ ク のデー タ 入力 (あ る 場合は A お よ び B の両方のデー タ 入力) と デー タ 出力が、 浮動小数点デー タ
型 と は同 じ ではない場合。 ブ ロ ッ ク の 2 つの入力間 と 、 ブ ロ ッ ク の入力 と 出力間で、 DRC チ ェ ッ ク が実行 さ れます。
[Custom] 精度の浮動小数点デー タ 型を指定 し た場合、 2 つのポー ト の指数部の ビ ッ ト 幅お よ び仮数部のビ ッ ト 幅が比較 さ
れ、 同 じ デー タ 型であ る か ど う かが決定 さ れます。
注記 : Convert お よ び Relational ブ ロ ッ ク は、 こ のチ ェ ッ ク か ら は除外 さ れます。 Convert ブ ロ ッ ク では、 2 つの異な る 浮動
小数点デー タ 型間の float-to-float デー タ 型変換がサポー ト さ れます。Relational ブ ロ ッ ク 出力は、常に比較演算に対 し て true
か false の結果を出力す る ので、 常にブール型です。
3.
デー タ 入力が固定小数点型で、 デー タ 出力が浮動小数点の場合、 ま たはその逆の場合。
注記 : Convert お よ び Relational ブ ロ ッ ク は、 こ のチ ェ ッ ク か ら は除外 さ れ ま す。 Convert ブ ロ ッ ク では、 fixed-to-float と
float-to-fixed がサポー ト さ れます。 Relational ブ ロ ッ ク 出力は、 常に比較演算に対 し て true か false の結果を出力す る ので、
常にブール型です。
4.
浮動小数点デー タ 型をサポー ト す る ブ ロ ッ ク の出力 タ イ プにユーザー定義 (User Defined) の精度が選択 さ れた場合。 た と
えば、 AddSub、 Mult、 CMult、 お よ び MUX の よ う なブ ロ ッ ク の場合に、 デー タ 入力が浮動小数点デー タ 型であれば、 サ
ポー ト さ れ る 出力精度は Full だけです。
5.
浮動小数点デー タ 型の演算を指定 し て、 Carry In ポー ト ま たは Carry Out ポー ト が AddSub ブ ロ ッ ク に使用 さ れ る 場合。
6.
Floating-Point Operator IP コ アで、 その IP 用に定義 し た DRC ルールに対する エ ラ ー メ ッ セージが表示 さ れた場合。
AXI 信号グループ
AXI4 ラ イ ブ ラ リ に含まれ る System Generator ブ ロ ッ ク には、 AXI™ 4 仕様に準拠す る イ ン タ ーフ ェ イ ス が含まれます。 AXI イ
ン タ ーフ ェ イ ス を含むブ ロ ッ ク が描画 さ れ、 特定の AXI イ ン タ ーフ ェ イ ス に関する ポー ト が ま と め ら れ、 同 じ 色で表示 さ れま
す。 こ れで、 同 じ イ ン タ ーフ ェ イ ス に属す る デー タ お よ び制御信号が見分けやす く な り ます。 同様の AXI ポー ト を一緒に ま と
めて も 、 Simulink Bus Creator お よ び Simulink Bus Selector ブ ロ ッ ク を使用 し て、 信号グループ を接続で き ます。 AXI に関す る 詳
細は、 AXI イ ン タ ーフ ェ イ ス を参照 し て く だ さ い。 AMBA AXI4 仕様の詳細は、 http://japan.xilinx.com/ipcenter/axi4 のザ イ リ ン
ク ス AMBA AXI4 の資料を参照 し て く だ さ い。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
32
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
ビ ッ ト 単位およびサイ クル単位のモデ リ ン グ
System Generator でのシ ミ ュ レーシ ョ ンは、 ビ ッ ト 単位ま たはサ イ ク ル単位で実行 さ れます。 ビ ッ ト 単位のシ ミ ュ レーシ ョ ン と
は、 System Generator ブ ロ ッ ク と System Generator 以外のブ ロ ッ ク の境界で、 シ ミ ュ レーシ ョ ン で生成 さ れた値がハー ド ウ ェ ア
で生成 さ れた対応す る 値 と ビ ッ ト 単位で同一であ る と い う こ と です。 サ イ ク ル単位のシ ミ ュ レーシ ョ ン と は、 System Generator
ブ ロ ッ ク と System Generator 以外のブ ロ ッ ク の境界で、 対応す る 値が対応す る 時間に生成 さ れ る と い う こ と です。 デザ イ ンの
境界は、 System Generator の Gateway ブ ロ ッ ク が配置 さ れてい る 部分です。 デザ イ ンがハー ド ウ ェ アに変換 さ れ る と 、 Gateway
In ブ ロ ッ ク は最上位入力ポー ト 、 Gateway Out ブ ロ ッ ク は最上位出力ポー ト にな り ます。
タ イ ミ ング と ク ロ ッ ク
離散時間シ ス テム
System Generator のデザ イ ンは離散時間シ ス テ ム であ る ので、 信号 と その信号を生成す る ブ ロ ッ ク にはサ ン プ リ ン グ レー ト が
あ り ます。 ブ ロ ッ ク のサンプ リ ン グ レー ト は、 ブ ロ ッ ク の ス テー ト がア ッ プデー ト さ れ る 頻度を決定 し ます。 System Generator
では、 ほ と ん ど のサンプ リ ン グ レー ト が自動的に設定 さ れますが、 サンプ リ ン グ レー ト を明示的ま たは暗示的に設定す る 必要
のあ る ブ ロ ッ ク も あ り ます。
注記 : Simulink の離散時間シ ス テ ム と サンプ リ ン グ時間の詳細は、 MathWorks 社のマニ ュ アル 『Using Simulink』 を参照 し て く
だ さ い。
単純な System Generator モデルで、 離散時間シ ス テ ムの動作を示 し ます。 次の図に示すモデルがあ る と し ます。 Simulink ソ ー
ス (Sine Wave) に よ り Gateway In ブ ロ ッ ク が駆動 さ れ、 Gateway Out ブ ロ ッ ク で Simulink シ ン ク (Scope) が駆動 さ れてい ます。
Gateway In ブ ロ ッ ク は、 サンプ リ ン グ周期 1 秒で コ ン フ ィ ギ ュ レーシ ョ ン さ れてい ます。 Gateway Out ブ ロ ッ ク は、 ザ イ リ ン ク
ス固定小数点信号を Simulink の Scope で解析で き る よ う に倍精度に変換 し ますが、サンプ リ ン グ レー ト は変更 し ません。Scope
の出力は、 サンプ リ ン グ レー ト が変更 さ れていない、 サンプ リ ン グ さ れたサ イ ン波 と な り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
33
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
マルチ レー ト モデル
System Generator では、 信号が複数のサンプ リ ン グ レー ト で動作す る マルチ レー ト デザ イ ンがサポー ト さ れてい ます。 マルチ
レー ト モデルは、 System Generator で自動的にハー ド ウ ェ アに コ ンパ イ ル さ れます。 マルチ レー ト デザ イ ンは、 Simulink に適
し た直接的な方法で イ ンプ リ メ ン ト さ れます。
レー ト 変換ブ ロ ッ ク
System Generator には、 サンプ リ ン グ レー ト を変換する ブ ロ ッ ク が含まれてい ます。 最 も 基本的な レー ト 変換ブ ロ ッ ク は、 Up
Sample と Down Sample ブ ロ ッ ク です。 こ れ ら のブ ロ ッ ク は、 次の図に示す よ う にパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で指定 し
た固定の値を乗算す る こ と に よ り 、 レー ト を変換 し ます。
Parallel To Serial や Serial To Parallel な ど のその他のブ ロ ッ ク は、 ブ ロ ッ ク のパ ラ メ ー タ ー指定に応 じ て非間接的に レー ト を変
換 し ます。
次の よ う な単純なマルチ レー ト シ ス テ ムがあ る と し ます。 こ のモデルでは、 SP1 と SP2 の 2 つのサンプ リ ン グ周期が使用 さ れ
ます。 サンプ リ ン グ周期 SP1 は、 Gateway In のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で指定 し ます。 Down Sample ブ ロ ッ ク に よ り
モデルの レー ト が変更 さ れ、 SP1 の 1/2 であ る 新 し い レー ト SP2 が作成 さ れます。
ハー ド ウ ェ ア オーバーサン プ リ ング
一部の System Generator ブ ロ ッ ク は、 そのブ ロ ッ ク のデー タ レー ト よ り 高速の レー ト で内部処理が行われ ます (オーバーサ ン
プ リ ン グ)。 ハー ド ウ ェ アでは、 こ れはデー タ サン プルを処理す る のに複数の ク ロ ッ ク サ イ ク ルが必要であ る こ と を意味 し ま
す。 Simulink では、 こ れ ら のブ ロ ッ ク のサンプ リ ン グ レー ト に計測 さ れ る 変化はあ り ません。
Simulink ではオーバーサンプ リ ン グ さ れ る ブ ロ ッ ク でサンプ リ ン グ レー ト が変化す る こ と はあ り ませんが、System Generator で
は、 ハー ド ウ ェ ア イ ンプ リ メ ン テーシ ョ ン用の ク ロ ッ ク ロ ジ ッ ク を生成す る 際に、 サ ンプ リ ン グ レー ト と 共に内部ブ ロ ッ ク
レー ト も 考慮 さ れ る ので、 System Generator ト ー ク ンのパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で Simulink のシ ス テ ム周期を指定す
る 際に、 オーバーサンプ リ ン グ さ れ る ブ ロ ッ ク の内部処理時間 も 考慮す る 必要があ り ます。
非同期 ク ロ ッ ク
System Generator は、 1 つの ク ロ ッ ク に同期す る ハー ド ウ ェ アの設計に適 し てい ますが、 場合に よ っ ては、 複数の ク ロ ッ ク を使
用す る シ ス テ ムの設計に も 使用で き ます。 こ の場合、 デザ イ ン を ク ロ ッ ク ド メ イ ンに分割 し 、 ド メ イ ン間での情報転送をデ ュ
アル ポー ト メ モ リ お よ び FIFO で制御 し ます。 こ のセ ク シ ョ ン の残 り の部分で、 System Generator の ク ロ ッ ク 同期について説
明 し ます。 こ の内容は、 1 つの ク ロ ッ ク のデザ イ ンお よ び複数 ク ロ ッ ク のデザ イ ンの両方に関係 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
34
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
同期ク ロ ッ ク
次の図に示す よ う に、System Generator ト ー ク ン を使用 し てデザ イ ン をハー ド ウ ェ アに コ ンパ イ ルす る 場合、[Clock Enables] (デ
フ ォ ル ト ) オプシ ョ ンがあ り ます。
[Clock Enables] オプ シ ョ ン
System Generator で [Clock Enables] オプシ ョ ン を オンに し てモデルをハー ド ウ ェ アに コ ンパ イ ルす る と 、ハー ド ウ ェ アの対応す
る 部分が適切な レー ト で動作す る よ う にデザ イ ンのサン プ リ ン グ レー ト 情報が保持 さ れ ます。 System Generator は、 ク ロ ッ ク
と ク ロ ッ ク イ ネーブル (1 つの レー ト に 1 つの イ ネーブル) を組み合わせて、 関連す る レー ト をハー ド ウ ェ アに生成 し ます。 各
ク ロ ッ ク イ ネーブルの周期は、 シ ス テ ム ク ロ ッ ク の周期の整数倍です。
Simulink 内で は、 System Generator デザ イ ン の信号 と し て ク ロ ッ ク お よ び ク ロ ッ ク イ ネ ーブ ルは必要 あ り ま せん。 System
Generator でデザ イ ン をハー ド ウ ェ アに コ ンパ イ ルす る 際、 デザ イ ンのサ ンプル レー ト か ら 必要な ク ロ ッ ク イ ネーブルが推論
さ れます。 具体的には、 System Generator ト ー ク ンの 2 つのユーザー指定値であ る Simulink シ ス テ ム周期 と FPGA ク ロ ッ ク 周
期が使用 さ れます。 こ れ ら の値は、 Simulink シ ミ ュ レーシ ョ ンの時間、 お よ び実際のハー ド ウ ェ ア イ ンプ リ メ ン テーシ ョ ン で
の時間の ス ケー リ ン グ係数を定義 し ます。Simulink シ ス テ ム周期は、 モデルに含まれ る サンプ リ ン グ周期の最大公約数 (gcd) に
する 必要があ り 、 FPGA の ク ロ ッ ク 周期 (ns) はシ ス テ ム ク ロ ッ ク の周期です。 Simulink シ ス テ ム周期を p、 FPGA シ ス テ ム ク
ロ ッ ク 周期を c と す る と 、 Simulink で kp かか る 処理は、 ハー ド ウ ェ アではシ ス テ ム ク ロ ッ ク の k サ イ ク ル分 (kc ナ ノ 秒) にな
り ます。
た と えば、 3 つの Simulink サンプ リ ン グ周期 2、 3、 4 を含むモデルがあ る と し ます。 こ れ ら のサンプ リ ン グ周期の gcd は 1 で、
そのモデルの [Simulink System Period] フ ィ ール ド で指定す る 必要があ り ます。 FPGA ク ロ ッ ク 周期は 10ns に設定 さ れてい る と
し ます。 こ れ ら の情報か ら 、 ハー ド ウ ェ アでの対応す る ク ロ ッ ク イ ネーブルの周期を決定で き ます。
Simulink のサンプ リ ン グ周期 2、 3、 4 に対応す る ハー ド ウ ェ アでの ク ロ ッ ク イ ネーブルを CE2、 CE3、 CE4 と し ます。 各 ク ロ ッ
ク イ ネーブルの周期 と シ ス テ ム ク ロ ッ ク 周期の関係は、 対応する Simulink サンプ リ ン グ周期を Simulink シ ス テ ム周期で割 る
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
35
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
こ と に よ り 求め ら れます。 こ の結果、 CE2、 CE3、 CE4 の周期はそれぞれ 2、 3、 4 シ ス テ ム ク ロ ッ ク 周期にな り ます。 次の図
に、 こ れ ら の ク ロ ッ ク イ ネーブル信号の タ イ ミ ン グ を示 し ます。
同期化の メ カ ニズム
System Generator では、 同期化の メ カ ニズ ムは自動的には作成 さ れません。 設計者が明示的に作成す る 必要があ り ます。
有効なポー ト
System Generator には、 同期化に使用で き る ブ ロ ッ ク (特に FIFO) が複数含ま れてい ます。 こ れ ら のブ ロ ッ ク には、 入力 (ま た
は出力) サン プルが有効にな る と 指定 さ れ る 入力 (ま たは出力) ポー ト があ り ます。 こ れ ら のポー ト はチ ェ ーン接続で き 、 プ リ
ミ テ ィ ブ形式の フ ロ ー制御が可能です。 FFT、 FIR、 Viterbi な ど のブ ロ ッ ク に こ れ ら のポー ト が含まれます。
不定デー タ
多 く のハー ド ウ ェ ア シ ミ ュ レーシ ョ ン環境では、 不定値があ る のが一般的です。 こ れ ら は、 「 ド ン ト ケ ア」 ま たは 「X」 と 示 さ
れます。 System Generator シ ミ ュ レーシ ョ ン での値は、 不定値であ る 可能性があ り ます。 た と えば、 デュ アル ポー ト メ モ リ ブ
ロ ッ ク では、 メ モ リ の両方のポー ト で同 じ ア ド レ ス に同時にア ク セ ス し よ う と す る と 、 値が不定にな り ます。 ハー ド ウ ェ アで
の実際の動作は、 ど ち ら のポー ト の ク ロ ッ ク エ ッ ジが先に到着す る かな ど を決定す る イ ンプ リ メ ン テーシ ョ ンの詳細に よ っ て
異な り ます。 値が不定にな る こ と を許容す る と 、 柔軟性が増 し ます。 先ほ ど の例で、 メ モ リ で値が不定にな っ て も 、 その後の
処理がその値に依存 し ていなければ、 問題あ り ません。
HDL 協調シ ミ ュ レーシ ョ ンに よ り シ ミ ュ レーシ ョ ンに含ま れ る HDL モジ ュ ールは、 一般的にデー タ サンプルが不定にな る 原
因 と な り ます。System Generator で HDL 協調シ ミ ュ レーシ ョ ン モジ ュ ールの入力に入力 さ れ る 不定値は、標準 ロ ジ ッ ク ベ ク タ
XXX . . . XX で表 さ れます。
Gateway Out を駆動す る 不定値は、 NaN (Not a Nnumber) と い う 値にな り ます。 Simulink の Scope では、 NaN 値は表 さ れません。
Gateway In を駆動す る NaN も 不定値にな り ます。 System Generator には、 不定値を検出す る Indeterminate Probe ブ ロ ッ ク が含ま
れてい ます。 こ のブ ロ ッ ク は、 ハー ド ウ ェ アには変換 さ れません。
System Generator では、 演算信号が不定値にな っ て も か ま い ま せんが、 ブール信号を不定値にす る こ と はで き ま せん。 シ ミ ュ
レーシ ョ ンでブール信号が不定値にな る 状況が発生 し た場合は、 シ ミ ュ レーシ ョ ンは中断 さ れ、 エ ラ ー メ ッ セージが表示 さ れ
ます。 ザ イ リ ン ク ス ブ ロ ッ ク には、 ブール信号のみを入力 と し て使用可能な制御ポー ト が含まれてい る も のが多数あ り ます。
こ れ ら のブ ロ ッ ク では、 制御ポー ト のブール信号を不定値にす る こ と はで き ません。
UFix_1_0 は、 ブール信号 と 同等のデー タ 型ですが、 不定値に関す る 上記の制限はあ り ません。
ブ ロ ッ ク マ ス ク と パラ メ ー タ ーの伝搬
通常の Simulink ブ ロ ッ ク に適用 さ れ る ス コ ーピ ン グ ルール と パ ラ メ ー タ ー伝搬ルールは、 System Generator ブ ロ ッ ク に も 適用
さ れ ます。 つま り 、 ザ イ リ ン ク ス ブ ロ ッ ク セ ッ ト 内のブ ロ ッ ク は、 MATLAB の変数お よ び論理式を使用 し てパ ラ メ ー タ ー指
定で き ます。 こ の機能に よ り 、 MATLAB 言語の表現能力お よ び計算能力を活用 し た高度なパ ラ メ ー タ ー指定デザ イ ン を作成で
き ます。
ブ ロ ッ ク マ ス ク
Simulink では、 マ ス ク と 呼ばれ る メ カ ニズ ムでブ ロ ッ ク のパ ラ メ ー タ ーを指定 し ます。 実際には、 ブ ロ ッ ク にマ ス ク 変数を割
り 当て、 こ の変数の値を ダ イ ア ロ グ ボ ッ ク ス で指定する か、 マ ス ク 初期化 コ マ ン ド で算出 し ます。 こ の変数は、 マ ス ク ワー ク
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
36
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
スペース に保存 さ れます。 マ ス ク ワー ク スペース は、 マ ス ク が適用 さ れ る ブ ロ ッ ク でのみ使用 さ れ、 外部ブ ロ ッ ク か ら ア ク セ
スす る こ と はで き ません。
注記 : マ ス ク でグ ロ ーバル変数お よ び基本 ワ ー ク スペース の変数にア ク セ スす る こ と は可能です。 基本ワ ー ク スペース の変数
に ア ク セ ス す る に は、 MATLAB の evalin 関数 を 使用 し ま す。 MATLAB と Simulink の ス コ ー ピ ン グ ルール の詳細は、 The
MathWorks 社のマニ ュ アル 『Using MATLAB』 お よ び 『Using Simulink』 を参照 し て く だ さ い。
パラ メ ー タ ーの伝搬
マ ス ク サブシ ス テ ム内のブ ロ ッ ク に変数を渡す必要があ る こ と が よ く あ り ます。 変数を渡す こ と に よ り 、 サブシ ス テ ム内のパ
ラ メ ー タ ー よ り ブ ロ ッ ク の コ ン フ ィ ギ ュ レーシ ョ ン を判断 さ せ る こ と がで き ます。 こ の手法は、 ザ イ リ ン ク ス ブ ロ ッ ク セ ッ ト
内のブ ロ ッ ク のパ ラ メ ー タ ーに も 適用 さ れます。 た と えば、 Mult ブ ロ ッ ク と Accumulator ブ ロ ッ ク で構成 さ れ る サブシ ス テ ム
を構築す る 場合、 結果を切 り 捨て る か丸め る か を指定す る パ ラ メ ー タ ーをサブシ ス テ ム内に作成で き ます。 次の図では、 こ の
パ ラ メ ー タ ーに trunc_round と い う 名前が付け ら れてい ます。
Mult ブ ロ ッ ク と Accumulator ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス には、[Truncate] (切 り 捨て) ま たは [Round] (丸め) を
選択す る ラ ジオ ボ タ ンがあ り ます。
ラ ジオ ボ タ ンではな く パ ラ メ ー タ ーを使用 し て選択す る 場合は、 ラ ジオ ボ タ ン を右 ク リ ッ ク し て [Define With Expression] を ク
リ ッ ク す る と 、MATLAB の論理式をパ ラ メ ー タ ーの設定に使用で き ます。次の例では、 サブシ ス テ ム マ ス ク か ら の trunc_round
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
37
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
パ ラ メ ー タ ーを Mult ブ ロ ッ ク と Accumulator ブ ロ ッ ク の両方で使用 し 、 サブシ ス テ ムのマ ス ク 変数か ら の同 じ 設定が適用 さ れ
る よ う に し てい ます。
自動 コ ー ド 生成
System Generator は、デザ イ ン を自動的に低レベル表現に コ ンパ イ ル し ます。モデルの コ ンパ イ ル方法は、System Generator ト ー
ク ンの設定に よ っ て異な り ます。 ハー ド ウ ェ アの HDL 記述に加え、 補助フ ァ イ ル も 生成 さ れ ます。 プ ロ ジ ェ ク ト フ ァ イ ルや
制約フ ァ イ ルな ど の フ ァ イ ルはダ ウ ン ス ト リ ーム ツールで使用 さ れ、VHDL テ ス ト ベンチな ど の フ ァ イ ルはデザ イ ンの検証に
使用 さ れます。
System Generator ト ー ク ン を使用 し
た コ ンパ イ ル と シ ミ ュ レーシ ョ ン
System Generator ト ー ク ン を使用 し てデザ イ ン を低 レ ベ
ル HDL に コ ンパ イ ルする 方法を説明 し ます。
コ ンパ イ ル結果
System Generator ト ー ク ン で [HDL Netlist] を 選択 し て
[Generate] ボ タ ン を ク リ ッ ク し た と き に生成 さ れ る 低レ
ベル フ ァ イ ルについて説明 し ます。
HDL テ ス ト ベンチ
System Generator で生成 さ れ る VHDL テ ス ト ベンチにつ
いて説明 し ます。
System Generator ト ー ク ン を使用 し た コ ンパイル と シ ミ ュ レーシ ョ ン
System Generator は、 デザ イ ン を自動的に低レベル表現に コ ンパ イ ル し ます。 デザ イ ン を コ ンパ イ ルま たはシ ミ ュ レーシ ョ ンす
る には、 System Generator ト ー ク ン を使用 し ます。 こ のセ ク シ ョ ンでは、 こ の ト ー ク ンの使用法を説明 し ます。
System Generator デザ イ ン を シ ミ ュ レーシ ョ ン ま たはハー ド ウ ェ アに変換す る には、 デザ イ ンに System Generator ト ー ク ン を含
め る 必要があ り ます。 新 し いデザ イ ン を作成す る 際には、 System Generator ト ー ク ン をす ぐ に追加す る よ う にす る こ と をお勧め
し ま す。 System Generator ト ー ク ン は、 Xilinx Blockset の Basic Element お よ び Tools ラ イ ブ ラ リ に含 ま れ て い ま す。 System
Generator ト ー ク ンは、 その他のザ イ リ ン ク ス ブ ロ ッ ク と 同様、 Index ラ イ ブ ラ リ に も 含まれてい ます。
デザ イ ンには、 System Generator ト ー ク ン を 1 つ以上含め る 必要があ り 、 複数の System Generator ト ー ク ン を異な る レベルに含
め る こ と が可能です ( レ ベル ご と に 1 つ)。 上位に別の System Generator ト ー ク ン が あ る も のは ス レ ーブ、 上位に別の System
Generator ブ ロ ッ ク がない も のはマ ス タ ー と な り ます。 1 つの System Generator ト ー ク ンの適用範囲は、 ブ ロ ッ ク が挿入 さ れて
い る レベル と 、 その レベルの下にあ る すべてのサブシ ス テ ムです。 [Simulink system period] な ど の一部のパ ラ メ ー タ ーは、 マ ス
タ ーで し か指定で き ません。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
38
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
System Generator ト ー ク ン を追加 し た ら 、 コ ー ド の生成お よ び合成の処理方法を指定で き ます。次の図に、System Generator ト ー
ク ンのパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス を示 し ます。
コ ンパイル タ イ プ と [Generate] ボ タ ン
[Generate] ボ タ ン を ク リ ッ ク す る と 、 System Generator でデザ イ ンの一部が低レベルに コ ンパ イ ル さ れます。 コ ンパ イ ル さ れ る
部分は、 ブ ロ ッ ク を含むサブシ ス テ ムがルー ト と な っ てい る 部分です。 デザ イ ン全体を コ ンパ イ ルする には、 System Generator
ト ー ク ン をデザ イ ン の最上位に配置 し ます。 コ ンパ イ ル タ イ プ ([Compilation]) は、 生成す る 結果の タ イ プ を指定 し ます。 次
のオプシ ョ ンがあ り ます。
•
[HDL Netlist]
•
さ ま ざ ま な タ イ プのハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン
•
[IP Catalog] : デザ イ ン を Vivado IP カ タ ロ グに追加 し て別のデザ イ ンで使用で き る IP コ ア と し てパ ッ ケージ
•
[Synthesized Checkpoint] : Vivado IDE プ ロ ジ ェ ク ト で使用で き る 合成済みチ ェ ッ ク ポ イ ン ト フ ァ イ ル (synth_1.dcp) を作成
し ます。
GUI
説明
Part
使用す る FPGA デバ イ ス を指定 し ます。
Target directory
コ ン パ イ ル 結 果 を 保 存 す る デ ィ レ ク ト リ を 指 定 し ま す。 System
Generator お よ び FPGA イ ンプ リ メ ン テーシ ョ ン ツールでは多数の フ ァ
イ ルが生成 さ れ る ので、個別のデ ィ レ ク ト リ (Simulink モデル フ ァ イ ル
が含 ま れ る デ ィ レ ク ト リ と は別のデ ィ レ ク ト リ ) を作成す る こ と をお
勧め し ま す。 デ ィ レ ク ト リ は、 絶対パ ス (c:\netlist な ど) ま たはモデル
を含むデ ィ レ ク ト リ を基準 と し た相対パ ス (netlist な ど) で指定で き ま
す。
Hardware description
language
デザ イ ン の HDL ネ ッ ト リ ス ト で使用す る 言語を指定 し ます。 [VHDL]
ま たは [Verilog] を選択で き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
39
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
GUI
説明
Create testbench
HDL テ ス ト ベンチを作成す る よ う 指定 し ます。HDL シ ミ ュ レー タ でテ
ス ト ベ ン チ を シ ミ ュ レ ーシ ョ ン し 、 コ ン パ イ ル さ れ たデザ イ ン の シ
ミ ュ レ ーシ ョ ン結果を Simulink シ ミ ュ レ ーシ ョ ン結果 と 比較 し ま す。
System Generator で は、 デザ イ ン を Simulink で シ ミ ュ レ ー シ ョ ン し 、
Gateway ブ ロ ッ ク で検出 さ れ る 値を保存す る こ と に よ り 、 テ ス ト ベ ク
タ を 作成 し ま す。 テ ス ト ベ ン チ の 最上位 HDL フ ァ イ ル の 名前 は、
<name>_tb.vhd/.v と な り ま す (name はテ ス ト す る デザ イ ン の部分か ら
導出 さ れた名前、 拡張子はハー ド ウ ェ ア記述言語に よ り 異な る)。
Create interface document
オ ン に し て [Generate] ボ タ ン を ク リ ッ ク す る と 、 System Generator で
ネ ッ ト リ ス ト 記述 さ れ る デザ イ ン を示す HTM フ ァ イ ルが作成 さ れ ま
す。 こ の フ ァ イ ルは、 ネ ッ ト リ ス ト フ ォ ルダーの documentation フ ォ ル
ダーに含まれます。
FPGA clock period
シ ス テ ム ク ロ ッ ク の周期を ns で指定 し ます。値は整数であ る 必要はあ
り ません。 こ こ で指定 し た周期は、制約フ ァ イ ルでグ ロ ーバル PERIOD
制約 と し て設定 さ れ、 ザ イ リ ン ク ス イ ンプ リ メ ン テーシ ョ ン ツールに
渡 さ れます。 複数サ イ ク ル パ ス は、 こ の値の整数倍で制約 さ れます。
Clock pin location
ハー ド ウ ェ ア ク ロ ッ ク の ピ ン ロ ケーシ ョ ン を指定 し ま す。 こ の情報
は、 制約フ ァ イ ルを介 し てザ イ リ ン ク ス イ ンプ リ メ ン テーシ ョ ン ツー
ルに渡 さ れます。
DCM input clock
period(ns)
DCM 入力 ク ロ ッ ク 周期が [FPGA clock period(ns)] オプシ ョ ン (シ ス テ ム
ク ロ ッ ク ) と 異な る 場合に指定 し ます。 こ れで FPGA ク ロ ッ ク 周期 (シ
ス テ ム ク ロ ッ ク ) が こ のハー ド ウ ェ ア定義の入力か ら 派生す る よ う に
な り ます。
Simulink シ ス テム周期
System Generator ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で、 Simulink シ ス テ ム周期 ([Simulink system period]) を指定す る
必要があ り ます。 こ の値は、 デザ イ ンのシ ミ ュ レーシ ョ ン を実行する 基準レー ト を秒で指定 し ます。 Simulink シ ス テ ム周期は、
デザ イ ンで使用 さ れ る すべてのサンプ リ ン グ周期の公約数にす る 必要があ り ます。 た と えば、 サンプ リ ン グ周期 2、 6、 8 を使
用す る ブ ロ ッ ク を含むデザ イ ン では、 使用可能な最大の Simulink シ ス テ ム周期は 2 ですが、 1 お よ び 0.5 も 使用可能です。 サ
ンプ リ ン グ周期は、 明示的に指定す る か、 自動的に算出 さ れ る か、 内部レー ト 変換が行われ る ブ ロ ッ ク 内で導出 さ れます。 シ
ス テ ム周期のハー ド ウ ェ ア ク ロ ッ ク への影響については、 タ イ ミ ン グ と ク ロ ッ ク を参照 し て く だ さ い。
デザ イ ン を シ ミ ュ レーシ ョ ン ま たは コ ンパ イ ルす る 前に、System Generator でシ ス テ ム周期がデザ イ ンのすべてのサンプ リ ン グ
周期の公約数にな っ てい る かが検証 さ れます。 問題が検出 さ れた場合は、 適切な値を推奨する ダ イ ア ロ グ ボ ッ ク ス が表示 さ れ
ま す。 [Update] ボ タ ン を ク リ ッ ク す る と 、 推奨 さ れた値が使用 さ れ ま す。 シ ス テ ム周期競合のサマ リ を表示す る には、 [View
Conflict Summary] ボ タ ン を ク リ ッ ク し ます。 [Update] を ク リ ッ ク し た場合は、 シ ミ ュ レーシ ョ ン ま たは コ ンパ イ ルを再実行す
る 必要があ り ます。
周期を調整で き ないために、 System Generator モデルが矛盾 し た も のにな る 可能性 も あ り ます。 た と えば、 シ ス テ ム レー ト で
動作す る 必要のあ る ブ ロ ッ ク でUp Sample ブ ロ ッ ク を駆動す る と 、 モデルは一貫 し た も のにな り ません。 シ ス テ ム周期を ア ッ
プデー ト し て も 競合が レ ポー ト さ れ る 場合は、 モデルに矛盾があ る と い う こ と であ り 、 修正が必要です。
周期は階層で制御 さ れます。 詳細は、 「階層制御」 を参照 し て く だ さ い。
[Block icon display]
モデルに表示す る ブ ロ ッ ク のア イ コ ンの表示を制御 し ます。 モデルを コ ンパ イ ル し た後 (生成ま たはシ ミ ュ レーシ ョ ン を実行、
あ る いは Ctrl + D を押す)、 ブ ロ ッ ク の情報が こ のオプシ ョ ンでの選択に応 じ て表示 さ れます。
•
[Default] : ポー ト の方向に関す る 基本的な情報が表示 さ れます。
•
[Sample rates] : 各ポー ト のサンプ リ ン グ レー ト が表示 さ れます。
•
[Pipeline stages] : パ イ プ ラ イ ン段数が表示 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
40
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
•
[HDL port names] : ポー ト 名が表示 さ れます。
•
[Input data types] : 各ポー ト の入力デー タ 型が表示 さ れます。
•
[Output data types] : 各ポー ト の出力デー タ 型が表示 さ れます。
階層制御
System Generator ト ー ク ンの [Simulink system period] オプシ ョ ン (Simulink シ ス テ ム周期 を参照) は、 階層で制御 さ れます。 設定
は、 System Generator ト ー ク ンが適用 さ れ る 範囲にのみ適用 さ れ、 下位にあ る System Generator ト ー ク ンで変更 さ れます。 た と
えば、 デザ イ ンの最上位にあ る System Generator ト ー ク ンで [Simulink system period] が設定 さ れてお り 、 サブシ ス テ ムに配置 さ
れてい る System Generator ト ー ク ン では別の値が設定 さ れてい る と し ます。 こ の場合、 サブシ ス テ ム では 2 番目のシ ス テ ム周
期が使用 さ れ ますが、 デザ イ ンのその他の部分では最上位の System Generator ト ー ク ン で設定 さ れた シ ス テ ム周期が使用 さ れ
ます。
コ ンパイル結果
こ のセ ク シ ョ ンでは、System Generator ト ー ク ンで [HDL Netlist] を選択 し て [Generate] ボ タ ン を ク リ ッ ク し た と き に生成 さ れ る
低レベル フ ァ イ ルについて説明 し ます。 こ の フ ァ イ ルには、 デザ イ ンの イ ンプ リ メ ン テーシ ョ ンに使用 さ れ る HDL が含まれ
ます。 ま た、 System Generator では HDL フ ァ イ ル と その他のハー ド ウ ェ ア フ ァ イ ルを Vivado IDE プ ロ ジ ェ ク ト に分類 さ れ ま
す。 すべての フ ァ イ ルは、 System Generator ト ー ク ンで指定 し たデ ィ レ ク ト リ に生成 さ れます。 テ ス ト ベンチを作成す る よ う 指
定 し ていない場合 ([Create testbench] をオ フ)、 生成 さ れ る フ ァ イ ルは次の と お り です。
フ ァ イル名/ タ イ プ
説明
<design_name>.vhd/.v
こ の フ ァ イ ルには、 ク ロ ッ ク / ク ロ ッ ク イ ネーブル制御 と
一緒に階層構造ネ ッ ト リ ス ト が含まれます。
<design_name_entity_declarations>.vhd/.v
こ の フ ァ イ ル に は、 デ ザ イ ン の sysgen ブ ロ ッ ク の モ
ジ ュ ール定義のエン テ ィ テ ィ が含まれます。
<design_name>.xpr
Vivado IDE デザ イ ンの属性をすべて記述 し た Vivado IDE
プ ロ ジ ェ ク ト フ ァ イ ル。
テ ス ト ベンチを作成す る よ う 指定 し てい る 場合は ([Create testbench] をオン)、 上記の フ ァ イ ルに加え、 シ ミ ュ レーシ ョ ン結果を
比較す る ための フ ァ イ ルが生成 さ れ ます。 Simulink シ ミ ュ レーシ ョ ン結果 と ModelSim のシ ミ ュ レーシ ョ ン結果が比較 さ れ ま
す。 生成 さ れ る 追加フ ァ イ ルは、 次の と お り です。
フ ァ イル名/ タ イ プ
説明
DAT フ ァ イ ル
Simulink でのシ ミ ュ レーシ ョ ン結果が含まれます。
<design_name>_tb.vhd/.v
デザ イ ン を ラ ッ プす る テ ス ト ベンチ。 シ ミ ュ レーシ ョ ン を実行す
る と 、 こ のテ ス ト ベン チに よ り デジ タ ル シ ミ ュ レ ー タ のシ ミ ュ
レ ーシ ョ ン結果 と Simulink の シ ミ ュ レ ーシ ョ ン結果が比較 さ れ
ます。
Sysmte Generator 制約 フ ァ イルの使用
デザ イ ン を コ ンパ イ ルす る と 、 ダ ウ ン ス ト リ ーム ツールでのデザ イ ン の処理方法を指示す る 制約が生成 さ れ ま す。 こ の制約
フ ァ イ ルに よ り 、 高質の イ ンプ リ メ ン テーシ ョ ンが短時間で生成 さ れます。 制約は、 次の情報を供給 し ます。
•
シ ス テ ム ク ロ ッ ク の周期
•
シ ス テ ム ク ロ ッ ク に対す る デザ イ ンの さ ま ざ ま な部分の ス ピー ド 要件
•
ポー ト を配置す る 必要のあ る ピ ン ロ ケーシ ョ ン
•
ポー ト の動作ス ピー ド
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
41
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
シ ス テ ム ク ロ ッ ク 周期 (デザ イ ンで最速のハー ド ウ ェ ア ク ロ ッ ク の周期) は、System Generator ト ー ク ンで指定で き ます。System
Generator で指定 し た周期は、 制約フ ァ イ ルに記述 さ れます。 ダ ウ ン ス ト リ ーム ツールでデザ イ ンが イ ンプ リ メ ン ト さ れ る 際、
こ の周期が目標 と し て使用 さ れます。
複数サイ ク ル パス制約
多 く のデザ イ ンは、異な る ク ロ ッ ク レー ト で動作す る 複数の部分で構成 さ れてい ます。最速の部分ではシ ス テ ム ク ロ ッ ク が使
用 さ れ、 その他の部分の ク ロ ッ ク 周期は、 シ ス テ ム ク ロ ッ ク 周期の整数倍にな り ます。 ダ ウ ン ス ト リ ーム ツールに、 デザ イ ン
の各部分で達成す る 必要のあ る ス ピー ド を伝達す る 必要があ り ます。 こ の情報に よ り 、 ツールの効率が大幅に向上 し 、 短い コ
ンパ イ ル時間で高質のハー ド ウ ェ ア を実現で き ます。 デザ イ ンの分割、 それぞれの部分の ス ピー ド は、 制約フ ァ イ ルで複数サ
イ ク ル パ ス制約を使用 し て指定 さ れます。
IOB タ イ ミ ング制約 と 配置制約
System Generator の Gateway In と Gateway Out ブ ロ ッ ク は、 ハー ド ウ ェ アに変換 さ れ る と 入力ポー ト と 出力ポー ト にな り ます。
こ れ ら のポー ト の位置 と ス ピー ド は、 Gateway In お よ び Gateway Out ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で入力 し ま
す。 ポー ト の ロ ケーシ ョ ン と ス ピー ド は、 制約フ ァ イ ルで IOB タ イ ミ ン グ ご と に指定 さ れます。
こ のセ ク シ ョ ン では、 System Generator で生成 さ れ る HDL でハー ド ウ ェ ア ク ロ ッ ク が ど の よ う に処理 さ れ る か を説明 し ます。
<design> と い う 名前のデザ イ ンがあ り 、 こ の名前は HDL 識別子 と し て有効であ る と し ます。 System Generator でデザ イ ン を
コ ンパ イ ルする と 、 複数の HDL エン テ ィ テ ィ ま たはモジ ュ ールが記述 さ れ、 最上位の も のに <design> と い う 名前が付け ら れ、
<design>.vhd/.v と い う フ ァ イ ルに保存 さ れます。
[Clock Enables] マルチ レー ト イ ン プ リ メ ン テーシ ョ ン
ク ロ ッ ク と ク ロ ッ ク イ ネーブルは対に し て、 HDL 全体に配置 さ れ ます。 典型的な ク ロ ッ ク 名は clk_1、 clk_2、 clk_3 で、 その
対にな る ク ロ ッ ク イ ネーブルの名前はそれぞれ ce_1、 ce_2、 お よ び ce_3 です。 名前か ら ク ロ ッ ク / ク ロ ッ ク イ ネーブルのペア
の動作レー ト がわか り ます。 clk_1 お よ び ce_1 で駆動 さ れ る ロ ジ ッ ク はシ ス テ ム レー ト (最速) で動作 し 、 clk_2 お よ び ce_2 で
駆動 さ れ る ロ ジ ッ ク はシ ス テ ム レー ト の 1/2 で動作 し ます。 ク ロ ッ ク お よ び ク ロ ッ ク イ ネーブルは、 <design> エン テ ィ テ ィ ま
たはモジ ュ ール内では駆動 さ れず、 最上位入力ポー ト と な り ます。
System Generator で生成 さ れた HDL に含まれ る ク ロ ッ ク と ク ロ ッ ク イ ネーブルの名前か ら 、 ク ロ ッ ク 供給は完全に汎用であ る
よ う に見え ますが、 そ う ではあ り ま せん。 た と えば、 デザ イ ン に clk_1 と clk_2 と い う ク ロ ッ ク が含 ま れてお り 、 対応す る ク
ロ ッ ク イ ネーブルが ce_1 お よ び ce_2 であ る と し ます。 こ の場合、 ハー ド ウ ェ アで ce_1 お よ び ce_2 信号を High に し 、 clk_2
を clk_1 の 1/2 の レー ト であ る ク ロ ッ ク 信号で駆動すればいい と 思 う か も 知れませんが、 ほ と ん ど の System Generator デザ イ ン
では こ れでは う ま く い き ません。 その代わ り 、 clk_1 と clk_2 を同 じ ク ロ ッ ク で駆動 し 、 ce_1 を High に固定 し て、 ce_2 を clk_1
と clk_2 の 1/2 の レー ト に し ます。
HDL テ ス ト ベン チ
通常、 System Generator デザ イ ンはビ ッ ト 精度お よ びサ イ ク ル精度であ り 、 Simulink でのシ ミ ュ レーシ ョ ン結果はハー ド ウ ェ ア
での動作 と 完全に一致 し ます。 場合に よ っ ては、 Simulink シ ミ ュ レーシ ョ ンの結果 と HDL シ ミ ュ レー タ でのシ ミ ュ レーシ ョ ン
結果を比較す る と 有益で あ る こ と が あ り ま す。 デザ イ ン にブ ラ ッ ク ボ ッ ク ス が含 ま れてい る 場合は、 特に意味が あ り ま す。
System Generator ト ー ク ンのパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で [Create testbench] をオンにする と 、 こ れが可能です。
デザ イ ンの名前が design で、 最上位に System Generator ト ー ク ンが配置 さ れてい る と し ます。 こ の ト ー ク ンのパ ラ メ ー タ ー ダ
イ ア ロ グ ボ ッ ク ス では、 [Compilation] が [HDL Netlist] に設定 さ れてお り 、 [Create testbench] がオンにな っ てい ます。 [Generate]
を ク リ ッ ク す る と 、 通常デザ イ ンに対 し て生成 さ れ る フ ァ イ ルに加え、 次の フ ァ イ ルが生成 さ れます。
1.
テ ス ト ベンチ HDL エン テ ィ テ ィ を含む <design>_tb.vhd/.v
2.
HDL テ ス ト ベンチ シ ミ ュ レーシ ョ ンで使用する ベス ト ベ ク タ を含む DAT フ ァ イ ル
3.
Vivado 統合設計環境 (IDE) を使用す る と RTL シ ミ ュ レーシ ョ ンが実行で き ます。詳細は、『Vivado Design Suite ユーザー ガ
イ ド : ロ ジ ッ ク シ ミ ュ レーシ ョ ン』 (UG900) (UG900) を参照 し て く だ さ い。
DAT フ ァ イ ルには、 Gateway ブ ロ ッ ク を通過す る 値が保存 さ れます。 HDL シ ミ ュ レーシ ョ ンでは、 DAT フ ァ イ ルか ら の入力値
が ス テ ィ ミ ュ ラ ス、 出力値が予測結果 と な り ます。 テ ス ト ベンチは、 デザ イ ンの HDL に ス テ ィ ミ ュ ラ ス を供給 し 、 HDL の結
果 と 予測結果を比較す る ための ラ ッ パーです。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
42
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
MATLAB の FPGA への コ ンパイル
System Generator では、 MCode ブ ロ ッ ク に よ り MATLAB が直接的にサポー ト さ れてい ます。 MCode ブ ロ ッ ク は、 入力値を M
関数に適用 し 、 ザ イ リ ン ク ス の固定小数点デー タ 型を評価 し ま す。 評価は、 サ ン プ リ ン グ周期ご と に行われ ま す。 MCode ブ
ロ ッ ク では、 持続型変数を使用す る こ と に よ り 、 内部ス テー ト を保持で き ます。 入力ポー ト は指定の M 関数の入力引数、 出力
ポー ト は M 関数の出力引数に よ り 決定 さ れます。 MCode ブ ロ ッ ク は、 有限ス テー ト マシ ン、 制御 ロ ジ ッ ク 、 演算処理の多い
シ ス テ ム を構築す る のに便利です。
MCode ブ ロ ッ ク を使用す る には、 M 関数を記述す る 必要があ り ます。 M フ ァ イ ルは、 M フ ァ イ ルを使用す る モデルのデ ィ レ
ク ト リ ま たは MATLAB パ ス に配置 し ます。
次に、 MCode ブ ロ ッ ク を使用す る 例を示 し ます。
•
例 1 : 単純なセ レ ク タ ー - 入力の最大値を返すフ ァ ン ク シ ョ ン を イ ンプ リ メ ン ト する 方法を示 し ます。
•
例 2 : 単純な数値演算 - 単純な演算処理を イ ンプ リ メ ン ト する 方法を示 し ます。
•
例 3 : レ イ テ ン シのあ る 複素乗算器 - レ イ テ ン シ を持つ複素乗算器を構築する 方法を示 し ます。
•
例 4 : シ フ ト 操作 - シ フ ト 操作を イ ンプ リ メ ン ト する 方法を示 し ます。
•
例 5 : Code ブ ロ ッ ク へパ ラ メ ー タ ーを渡す - MCode ブ ロ ッ ク にパ ラ メ ー タ ーを渡す方法を示 し ます。
•
例 6 : オプシ ョ ンの入力ポー ト - MCode ブ ロ ッ ク にオプシ ョ ンの入力ポー ト を イ ンプ リ メ ン ト する方法を示し ます。
•
例 7 : 有限ス テー ト マシ ン - 有限ス テー ト マシ ンの イ ンプ リ メ ン ト 方法を示 し ます。
•
例 8 : パ ラ メ ー タ ー指定ア キ ュ ム レー タ - パ ラ メ ー タ ー指定ア キ ュ ム レー タ を構築する 方法を示 し ます。
•
例 9 : FIR と シ ス テ ム検証 - FIR ブ ロ ッ ク をモデ リ ン グ し 、 シ ス テ ム検証を実行する 方法を示 し ます。
•
例 10 : RPN カ リ キ ュ レー タ ー - RPN カ リ キ ュ レー タ (ス タ ッ ク マシ ン) を モデ リ ン グす る 方法を示 し ます。
•
例 11 : disp 関数 - disp 関数を使用 し て変数値をプ リ ン ト す る 方法を示 し ます。
例 1 と 2 は、 System Generator の イ ン ス ト ー ル デ ィ レ ク ト リ の examples/mcode_block デ ィ レ ク ト リ に あ る
mcode_block_tutorial.mdl フ ァ イ ルに、 例 3 と 4 は mcode_block_tutorial2.mdl フ ァ イ ルに、 例 5 と 6 は mcode_block_tutorial3.mdl
フ ァ イ ル に、 例 7 と 8 は mcode_block_tutorial4.mdl フ ァ イ ル に、 例 9 は mcode_block_verify_fir.mdl フ ァ イ ル に、 例 10 は
mcode_block_rpn_calculator.mdl フ ァ イ ルに含まれます。
単純なセ レ ク タ ー
こ の例では、 2 つの入力の最大値を出力に割 り 当て る 、 単純なデー タ パ ス コ ン ト ロ ー ラ を示 し ます。 M 関数は次の よ う に定義
さ れ、 xlmax.m と い う M フ ァ イ ルに保存 さ れます。
function z = xlmax(x, y)
if x > y
z = x;
else
z = y;
end
xlmax.m フ ァ イ ルは、 モデル フ ァ イ ル と 同 じ デ ィ レ ク ト リ ま たは MATLAB パ ス に保存す る 必要があ り ます。 xlmax.m を適切な
場所に保存 し た ら 、MCode ブ ロ ッ ク を モデルに ド ラ ッ グ し てパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス を開 き 、[MATLAB Function] に
「xlmax」 と 入力 し ます。 [OK] を ク リ ッ ク す る と 、 ブ ロ ッ ク に入力ポー ト x と y、 出力ポー ト z が表示 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
43
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
次の図に、モデルを コ ンパ イ ル し た後のブ ロ ッ ク を示 し ます。ブ ロ ッ ク で計算が実行 さ れ、出力ポー ト に必要な固定小数点デー
タ 型が設定 さ れます。
単純な数値演算
こ の例では、 単純な数値演算 と 型変換を示 し ます。 xlSimpleArith と い う M 関数を定義す る xlSimpleArith.m フ ァ イ ルの内容は、
次の と お り です。
function [z1, z2, z3, z4] = xlSimpleArith(a, b)
% xlSimpleArith demonstrates some of the arithmetic operations
% supported by the Xilinx MCode block.The function uses xfix()
% to create Xilinx fixed-point numbers with appropriate
% container types.%
% You must use a xfix() to specify type, number of bits, and
% binary point position to convert floating point values to
% Xilinx fixed-point constants or variables.
% By default, the xfix call uses xlTruncate
% and xlWrap for quantization and overflow modes.
% const1 is Ufix_8_3
const1 = xfix({xlUnsigned, 8, 3}, 1.53);
% const2 is Fix_10_4
const2 = xfix({xlSigned, 10, 4, xlRound, xlWrap}, 5.687);
z1 = a + const1;
z2 = -b - const2;
z3 = z1 - z2;
% convert z3 to Fix_12_8 with saturation for overflow
z3 = xfix({xlSigned, 12, 8, xlTruncate, xlSaturate}, z3);
% z4 is true if both inputs are positive
z4 = a>const1 & b>-1;
こ の M 関数では、 加算お よ び減算演算子を使用 し てい ます。 MCode ブ ロ ッ ク は、 こ れ ら の演算子を完全精度で計算 し ます。 つ
ま り 、 出力の精度は、 こ れ ら の演算を情報を失わずに実行す る のに十分であ る と い う こ と です。
こ こ で、 xfix と い う 関数の呼び出 し に注目 し て く だ さ い。 こ の関数では、 固定小数点デー タ 型の精度 と 値の 2 つの引数が必要
です。 精度は、 セル配列で指定 し ま す。 精度のセル配列の最初の要素はデー タ 型で、 xlUnsigned、 xlSigned、 xlBoolean のいず
れかの型にな り ます。 2 番目の要素は固定小数点値の ビ ッ ト 数、 3 番目の要素は 2 進小数点の位置を指定 し ます。 デー タ 型が
xlBoolean であ る 場合は、 ビ ッ ト 数お よ び 2 進小数点の位置を指定す る 必要はあ り ません。 ビ ッ ト 数 と 2 進小数点の位置は、 対
に し て指定す る 必要があ り ます。 4 番目の要素は量子化モー ド 、 5 番目の要素はオーバーフ ロ ー モー ド を指定 し ます。 量子化
モー ド は、 xlTruncate、 xlRound、 ま たは xlRoundBanker のいずれかに指定 し ます。 オーバーフ ロ ー モー ド は、 xlWrap、 xlSaturate、
ま たは xlThrowOverflow のいずれかに指定 し ます。 量子化モー ド と オーバーフ ロ ー モー ド は、 対に し て指定す る 必要があ り ま
す。量子化モー ド と オーバーフ ロ ー モー ド を指定 し ない場合は、符号付 き お よ び符号な し の値に対 し て xlTruncate と xlWrap が
使用 さ れます。 xfix 関数の 2 番目の引数は、 倍精度ま たはザ イ リ ン ク ス固定小数点値で指定 し ます。 定数が整数値であ る 場合
は、 xfix 関数を使用す る 必要はあ り ません。 MCode ブ ロ ッ ク で、 自動的に適切な固定小数点値に変換 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
44
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
MCode ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で [MATLAB Function] に 「xlSimpleArith」 を入力 し た場合は、 ブ ロ ッ ク
に 2 つの入力ポー ト a お よ び b と 、 4 つの出力ポー ト z1、 z2、 z3、 お よ び z4 が表示 さ れます。
ザ イ リ ン ク ス のデー タ 型お よ び関数 を 使用す る M 関数は、 MATLAB の [Command Window] で テ ス ト で き ま す た と え ば、
MATLAB の [Command Window] に 「[z1, z2, z3, z4] = xlSimpleArith(2, 3)」 と 入力する と 、 次の行が表示 さ れます。
UFix(9, 3):3.500000
Fix(12, 4):-8.687500
Fix(12, 8):7.996094
Bool: true
2 つの引数 2 お よ び 3 は、 自動的に固定小数点値に変換 さ れてい ます。 引数 と し て浮動小数点値を使用す る 場合は、 xfix 関数
呼び出 し が必要です。
レ イ テ ン シのある複素乗算器
こ の例では、 複素乗算器の作成方法を示 し ます。 xlcpxmult 関数を定義す る xlcpxmult.m フ ァ イ ルの内容は、 次の と お り です。
function [xr, xi] = xlcpxmult(ar, ai, br, bi)
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
45
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
xr = ar * br - ai * bi;
xi = ar * bi + ai * br;
次の図に、 サブシ ス テ ム を示 し ます。
MCode ブ ロ ッ ク の後に、 2 つの Delay ブ ロ ッ ク が追加 さ れてい ま す。 Delay ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス の
[Implementation] タ ブで [Implement using behavioral HDL] を オ ン にす る と 、 ダ ウ ン ス ト リ ーム の ロ ジ ッ ク 合成 ツ ールで、 高パ
フ ォーマ ン ス を達成す る ために適切な最適化を実行で き ます。
シ フ ト 操作
こ の例では、 MCode ブ ロ ッ ク を使用 し た ビ ッ ト シ フ ト 操作の イ ンプ リ メ ン ト 方法を示 し ます。 シ フ ト 操作は、 2 のべ き 乗での
乗算お よ び除算で達成 さ れます。 た と えば、4 で乗算する こ と は 2 ビ ッ ト の レ フ ト シ フ ト と 同 じ であ り 、8 で割 る こ と は 3 ビ ッ
ト の ラ イ ト シ フ ト と 同 じ です。 シ フ ト 操作は、 2 進小数点の位置の移動お よ び必要に応 じ て ビ ッ ト 幅の拡張に よ り イ ンプ リ メ
ン ト さ れます。 Fix_8_4 値を 4 で乗算す る と Fix_8_2 値にな り 、 Fix_8_4 を 64 で乗算する と Fix_10_0 値にな り ます。
次に、 1 レ フ ト シ フ ト と 1 ラ イ ト シ フ ト を定義す る xlsimpleshift.m フ ァ イ ルの内容を示 し ます。
function [lsh3, rsh2] = xlsimpleshift(din)
% [lsh3, rsh2] = xlsimpleshift(din) does a left shift
% 3 bits and a right shift 2 bits.
% The shift operation is accomplished by
% multiplication and division of power
% of two constant.
lsh3 = din * 8;
rsh2 = din / 4;
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
46
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
次の図に、 コ ンパ イ ル後のサブシ ス テ ム を示 し ます。
Code ブ ロ ッ ク へパラ メ ー タ ーを渡す
こ の例では、 MCode ブ ロ ッ ク にパ ラ メ ー タ ーを渡す方法を示 し ます。 M 関数への入力引数は、 MCode ブ ロ ッ ク の入力ポー ト
と し て、 ま たはブ ロ ッ ク の内部パ ラ メ ー タ ー と し て解釈 さ れます。
次の M コ ー ド は、 xl_sconvert.m に含まれ る M 関数 xl_sconvert を定義 し ます。
function dout = xl_sconvert(din, nbits, binpt)
proto = {xlSigned, nbits, binpt};
dout = xfix(proto, din);
次の図に、 M 関数 xl_sconvert を使用する 2 つの MCode ブ ロ ッ ク を含むサブシ ス テ ム を示 し ます。 M 関数の引数 nbits と binpt
には、 各 MCode ブ ロ ッ ク に異な る パ ラ メ ー タ ーを渡す こ と に よ り 、 異な る 値が指定 さ れます。 signed convert1 と い う MCode ブ
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
47
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
ロ ッ ク では、渡 さ れ る パ ラ メ ー タ ーに よ り 入力デー タ が Fix_16_8 か ら Fix_10_5 に変換 さ れます。signed convert2 と い う MCode
ブ ロ ッ ク では、 渡 さ れ る パ ラ メ ー タ ーに よ り 入力デー タ が Fix_16_8 か ら Fix_8_4 に変換 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
48
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
各 MCode ブ ロ ッ ク にパ ラ メ ー タ ーを渡すには、 MCode ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で [Interface] タ ブ を ク
リ ッ ク し 、 M 関数の引数を設定 し ます。 次に、 MCode ブ ロ ッ ク signed convert 1 の設定を示 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
49
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
上図の [Iinterface] タ ブでは、 M 関数の引数 nbits を 10 に、 binpt を 5 に設定 し てい ます。 次に、 MCode ブ ロ ッ ク signed convert
2 の設定を示 し ます。
上図の [Iinterface] タ ブでは、 M 関数の引数 nbits を 8 に、 binpt を 4 に設定 し てい ます。
オプ シ ョ ンの入力ポー ト
こ の例では、MCode ブ ロ ッ ク にパ ラ メ ー タ ーを渡す機能を使用 し て、MCode ブ ロ ッ ク でオプシ ョ ンの入力ポー ト を使用す る か
ど う か を指定す る 方法を示 し ます。
次の M コ ー ド は、 xl_m_addsub.m に含まれ る M 関数 xl_m_addsub を定義 し ます。
function s = xl_m_addsub(a, b, sub)
if sub
s = a - b;
else
s = a + b;
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
50
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
end
次の図に、 M 関数 xl_m_addsub を使用す る 2 つの MCode ブ ロ ッ ク を含むサブシ ス テ ム を示 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
51
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
次に、 add と い う 名前の MCode ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス を示 し ます。
こ の設定に よ り 、 入力ポー ト a と b が使用 さ れ、 完全精度の加算が実行 さ れ ます。 addsub と い う MCode ブ ロ ッ ク では、 入力
パ ラ メ ー タ ー sub の [Bind to value] に何 も 指定 さ れていないので、 addsub ブ ロ ッ ク では入力ポー ト a、 b、 お よ び sub が使用 さ
れ、 入力ポー ト sub の値に応 じ て完全精度の加算ま たは減算が実行 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
52
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
有限ス テー ト マ シ ン
こ の例では、MCode ブ ロ ッ ク と 内部ス テー ト 変数を使用 し て有限ス テー ト マシ ン を作成す る 方法を示 し ます。次の図に示すス
テー ト マシ ンは、 入力デー タ の 1011 と い う パ タ ーン を検出 し ます。
MCode ブ ロ ッ ク で使用 さ れ る M 関数には、 現在の入力の ス テー ト に基づいて次の ス テー ト を算出す る 遷移関数が含ま れてい
ます。例 3 と は異な り 、 こ の例の M 関数では持続型ス テー ト 変数を定義 し て、MCode ブ ロ ッ ク に有限ス テー ト マシ ンの ス テー
ト を保存 し ます。 次の M コ ー ド では、 detect1011_w_state.m に含まれ る M 関数 detect1011_w_state を定義 し てい ます。
function matched = detect1011_w_state(din)
% This is the detect1011 function with states for detecting a
% pattern of 1011.
seen_none = 0; %
seen_1 = 1;
%
%
seen_10 = 2;
%
%
seen_101 = 3; %
%
initial state, if input is 1, switch to seen_1
first 1 has been seen, if input is 0, switch
seen_10
10 has been detected, if input is 1, switch to
seen_1011
now 101 is detected, is input is 1, 1011 is
detected and the FSM switches to seen_1
% the state is a 2-bit register
persistent state, state = xl_state(seen_none, {xlUnsigned, 2, 0});
% the default value of matched is false
matched = false;
switch state
case seen_none
if din==1
state = seen_1;
else
state = seen_none;
end
case seen_1 % seen first 1
if din==1
state = seen_1;
else
state = seen_10;
end
case seen_10 % seen 10
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
53
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
if din==1
state = seen_101;
else
% no part of sequence seen, go to seen_none
state = seen_none;
end
case seen_101
if din==1
state = seen_1;
matched = true;
else
state = seen_10;
matched = false;
end
end
次の図に、 M 関数 detect1101_w_state を使用す る MCode ブ ロ ッ ク を含むス テー ト マシ ン サブシ ス テ ム を示 し ます。
パラ メ ー タ ー指定アキ ュ ムレー タ
こ の例では、 MCode ブ ロ ッ ク を使用 し て、 柔軟な イ ン プ リ メ ン テーシ ョ ン を可能にす る ため持続性 ス テー ト 変数 と パ ラ メ ー
タ ーを定義 し た ア キ ュ ム レー タ を作成す る 方法を示 し ます。 次の M コ ー ド では、 xl_accum.m に含まれ る M 関数 xl_accum を定
義 し てい ます。
function q = xl_accum(b, rst, load, en, nbits, ov, op, feed_back_down_scale)
% q = xl_accum(b, rst, nbits, ov, op, feed_back_down_scale) is
% equivalent to our Accumulator block.
binpt = xl_binpt(b);
init = 0;
precision = {xlSigned, nbits, binpt, xlTruncate, ov};
persistent s, s = xl_state(init, precision);
q = s;
if rst
if load
% reset from the input port
s = b;
else
% reset from zero
s = init;
end
else
if ~en
else
% if enabled, update the state
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
54
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
if op==0
s = s/feed_back_down_scale + b;
else
s = s/feed_back_down_scale - b;
end
end
end
次の図に、 M 関数 xl_accum を使用す る ア キ ュ ム レ ー タ MCode ブ ロ ッ ク を含むサブシ ス テ ム を示 し ま す。 MCode ブ ロ ッ ク に
は、 MCode Accumulator と い う 名前が付いてい ます。 サブシ ス テ ムには、 比較のため、 Accumulator と い う 名前のザ イ リ ン ク ス
ア キ ュ ム レー タ ブ ロ ッ ク も 含まれてい ます。 MCode ブ ロ ッ ク は、 ザ イ リ ン ク ス ア キ ュ ム レー タ ブ ロ ッ ク と 同 じ 機能を持ち ま
すが、 MCode ブ ロ ッ ク のパ ラ メ ー タ ーを マ ス ク イ ン タ ーフ ェ イ ス (パ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス の [Interface] タ ブ) で指
定 し てい る 点が異な り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
55
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
MCode Accumlator のオプシ ョ ンの入力 rst お よ び load は、 [Interface] タ ブでデ ィ ス エーブルに設定 さ れてい ます。 次に、 MCode
Accumulator ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス を示 し ます。
こ の例には、 同 じ M 関数を使用 し た MCode ブ ロ ッ ク のア キ ュ ム レー タ サブシ ス テ ムが さ ら に 2 つ含まれてい ますが、 異な る
パ ラ メ ー タ ー設定を使用 し て、 異な る ア キ ュ ム レー タ を作成 し てい ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
56
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
FIR と シ ス テム検証
こ の例では、 MCode ブ ロ ッ ク を使用 し て FIR を モデ リ ン グす る 方法 と 、 MCode ブ ロ ッ ク でシ ス テ ム検証を実行す る 方法を示
し ます。
こ の例には、 FIR ブ ロ ッ ク が 2 つ含まれてい ます。 こ れ ら のブ ロ ッ ク は MCode ブ ロ ッ ク で定義 さ れてお り 、 ど ち ら も 合成可能
です。 次の コ ー ド は、 こ れ ら 2 つのブ ロ ッ ク を定義する 2 つの関数です。
function y = simple_fir(x, lat, coefs, len, c_nbits, c_binpt, o_nbits, o_binpt)
coef_prec = {xlSigned, c_nbits, c_binpt, xlRound, xlWrap};
out_prec = {xlSigned, o_nbits, o_binpt};
coefs_xfix = xfix(coef_prec, coefs);
persistent coef_vec, coef_vec = xl_state(coefs_xfix, coef_prec);
persistent x_line, x_line = xl_state(zeros(1, len-1), x);
persistent p, p = xl_state(zeros(1, lat), out_prec, lat);
sum = x * coef_vec(0);
for idx = 1:len-1
sum = sum + x_line(idx-1) * coef_vec(idx);
sum = xfix(out_prec, sum);
end
y = p.back;
p.push_front_pop_back(sum);
x_line.push_front_pop_back(x);
function y = fir_transpose(x, lat, coefs, len, c_nbits, c_binpt, o_nbits, o_binpt)
coef_prec = {xlSigned, c_nbits, c_binpt, xlRound, xlWrap};
out_prec = {xlSigned, o_nbits, o_binpt};
coefs_xfix = xfix(coef_prec, coefs);
persistent coef_vec, coef_vec = xl_state(coefs_xfix, coef_prec);
persistent reg_line, reg_line = xl_state(zeros(1, len), out_prec);
if lat <= 0
error('latency must be at least 1');
end
lat = lat - 1;
persistent dly,
if lat <= 0
y = reg_line.back;
else
dly = xl_state(zeros(1, lat), out_prec, lat);
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
57
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
y = dly.back;
dly.push_front_pop_back(reg_line.back);
end
for idx = len-1:-1:1
reg_line(idx) = reg_line(idx - 1) + coef_vec(len - idx - 1) * x;
end
reg_line(0) = coef_vec(len - 1) * x;
パ ラ メ ー タ ーは、 次の よ う に設定 さ れます。
2 つのブ ロ ッ ク の機能が同一であ る こ と を検証す る ため、 MCode ブ ロ ッ ク を も う 1 つ使用 し て 2 つのブ ロ ッ ク の出力を比較 し
ます。 2 つの出力が等 し く ない場合は、 エ ラ ー チ ェ ッ ク ブ ロ ッ ク に よ り エ ラ ーが レ ポー ト さ れます。 エ ラ ー チ ェ ッ ク は、 次の
関数に よ り 行われます。
function eq = error_ne(a, b, report, mod)
persistent cnt, cnt = xl_state(0, {xlUnsigned, 16, 0});
switch mod
case 1
eq = a==b;
case 2
eq = isnan(a) || isnan(b) || a == b;
case 3
eq = ~isnan(a) && ~isnan(b) && a == b;
otherwise
eq = false;
error(['wrong value of mode ', num2str(mod)]);
end
if report
if ~eq
error(['two inputs are not equal at time ', num2str(cnt)]);
end
end
cnt = cnt + 1;
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
58
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
こ のブ ロ ッ ク は、 次の よ う に設定 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
59
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
RPN カ リ キ ュ レー タ ー
こ の例では、 MCode ブ ロ ッ ク を使用 し て、 ス タ ッ ク マシ ンであ る RPN カ リ キ ュ レー タ ーを構築す る 方法を示 し ます。 こ のブ
ロ ッ ク は、 合成可能です。
次の関数は、 RPN カ リ キ ュ レー タ ーを定義 し てい ます。
function [q, active] = rpn_calc(d, rst, en)
d_nbits = xl_nbits(d);
% the first bit indicates whether it's a data or operator
is_oper = xl_slice(d, d_nbits-1, d_nbits-1)==1;
din = xl_force(xl_slice(d, d_nbits-2, 0), xlSigned, 0);
% the lower 3 bits are operator
op = xl_slice(d, 2, 0);
% acc the the A register
persistent acc, acc = xl_state(0, din);
% the stack is implemented with a RAM and
% an up-down counter
persistent mem, mem = xl_state(zeros(1, 64), din);
persistent acc_active, acc_active = xl_state(false, {xlBoolean});
persistent stack_active, stack_active = xl_state(false, ...
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
60
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
{xlBoolean});
stack_pt_prec = {xlUnsigned, 5, 0};
persistent stack_pt, stack_pt = xl_state(0, {xlUnsigned, 5, 0});
% when en is true, it's action
OP_ADD = 2;
OP_SUB = 3;
OP_MULT = 4;
OP_NEG = 5;
OP_DROP = 6;
q = acc;
active = acc_active;
if rst
acc = 0;
acc_active = false;
stack_pt = 0;
elseif en
if ~is_oper
% enter data, push
if acc_active
stack_pt = xfix(stack_pt_prec, stack_pt + 1);
mem(stack_pt) = acc;
stack_active = true;
else
acc_active = true;
end
acc = din;
else
if op == OP_NEG
% unary op, no stack op
acc = -acc;
elseif stack_active
b = mem(stack_pt);
switch double(op)
case OP_ADD
acc = acc + b;
case OP_SUB
acc = b - acc ;
case OP_MULT
acc = acc * b;
case OP_DROP
acc = b;
end
stack_pt = stack_pt - 1;
elseif acc_active
acc_active = false;
acc = 0;
end
end
end
stack_active = stack_pt ~= 0;
disp 関数
次の MCode 関数は、 disp 関数を使用 し て変数値を指定す る 方法を示 し ます。
function x = testdisp(a, b)
persistent dly, dly = xl_state(zeros(1, 8), a);
persistent rom, rom = xl_state([3, 2, 1, 0], a);
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
61
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
disp('Hello World!');
disp(['num2str(dly) is ', num2str(dly)]);
disp('disp(dly) is ');
disp(dly);
disp('disp(rom) is ');
disp(rom);
a2 = dly.back;
dly.push_front_pop_back(a);
x = a + b;
disp(['a = ', num2str(a), ', ', ...
'b = ', num2str(b), ', ', ...
'x = ', num2str(x)]);
disp(num2str(true));
disp('disp(10) is');
disp(10);
disp('disp(-10) is');
disp(-10);
disp('disp(a) is ');
disp(a);
disp('disp(a == b)');
disp(a==b);
MCode ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス の [Advanced] タ ブで、 [Enable printing with disp] を オンにす る 必要があ り
ます。
次に、 最初のシ ミ ュ レーシ ョ ン ス テ ッ プで MATLAB の [Command Window] に表示 さ れ る 行を示 し ます。
mcode_block_disp/MCode (Simulink time:0.000000, FPGA clock:0)
Hello World!
num2str(dly) is [0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
0.000000]
disp(dly) is
type:Fix_11_7,
maxlen:8,
length:8,
0: binary 0000.0000000, double 0.000000,
1: binary 0000.0000000, double 0.000000,
2: binary 0000.0000000, double 0.000000,
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
62
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
3: binary 0000.0000000, double 0.000000,
4: binary 0000.0000000, double 0.000000,
5: binary 0000.0000000, double 0.000000,
6: binary 0000.0000000, double 0.000000,
7: binary 0000.0000000, double 0.000000,
disp(rom) is
type:Fix_11_7,
maxlen:4,
length:4,
0: binary 0011.0000000, double 3.0,
1: binary 0010.0000000, double 2.0,
2: binary 0001.0000000, double 1.0,
3: binary 0000.0000000, double 0.0,
a = 0.000000, b = 0.000000, x = 0.000000
1
disp(10) is
type:UFix_4_0, binary:1010, double:10.0
disp(-10) is
type:Fix_5_0, binary:10110, double:-10.0
disp(a) is
type:Fix_11_7, binary:0000.0000000, double:0.000000
disp(a == b)
type:Bool, binary:1, double:1
System Generator デザイ ンの大型シ ス テムへのイ ンポー
ト
System Generator デザ イ ンは、 よ く 大規模 HDL デザ イ ンに組み込まれます。 こ のセ ク シ ョ ン では、 2 つの System Generator デザ
イ ン を大型デザ イ ンに組み込む方法、 System Generator で作成 し た VHDL を シ ス テ ム全体のシ ミ ュ レーシ ョ ン モデルに組み込
む方法を示 し ます。
[HDL Netlist] コ ンパイル
[System Generator] ダ イ ア ロ グ ボ ッ ク ス で コ ンパ イ ル タ イ プに [HDL Netlist] を選択す る と 、 デザ イ ン を イ ン プ リ メ ン ト す る た
めの HDL と その他の関連 フ ァ イ ルが生成 さ れ ま す。 ま た、 Vivado シ ミ ュ レ ー タ を 使用 し たデザ イ ン のシ ミ ュ レ ーシ ョ ンや
Vivado 合成 を 使用 し た論理合成な ど のダ ウ ン ス ト リ ーム 処理 を 簡略化す る 補助 フ ァ イ ル も 生成 さ れ ま す。 詳細は、 「System
Generator の コ ンパ イ ル タ イ プ」 セ ク シ ョ ン を参照 し て く だ さ い。
System Generator のプ ロ ジ ェ ク ト 情報は、選択 し た ク ロ ッ ク オプシ ョ ンに よ っ て <design_name>_mcw.sgp に保存 さ れます。
こ こ では、 複数の System Generator デザ イ ン を大型デザ イ ンのサブモジ ュ ール と し て含め る 方法について説明 し ます。
デザイ ン ルールの統合
System Generator モデルを大型デザ イ ンに組み込む場合、 次の 2 つのデザ イ ン ルールに従 う 必要があ り ます。
ルール 1 : Gateway ブ ロ ッ ク ま たは System Generator ト ー ク ンで IOB/CLK ロ ケーシ ョ ン制約を指定 し ないで く だ さ い。
ま た、 IOB タ イ ミ ン グ制約は none に設定す る 必要があ り ます。
ルール 2 : 最上位デザ イ ン ま で上げ る 必要のあ る System Generator デザ イ ンか ら の I/O ポー ト があ る 場合、 適切なバ ッ フ ァ ーを
最上位の HDL コ ー ド に イ ン ス タ ン シエー ト す る 必要があ り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
63
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
コ ン フ ィ ギ ャ ブル サブ シス テム と System Generator
コ ン フ ィ ギ ャ ブル サブシ ス テ ムは、 Simulink の基本パーツ と し て使用可能なブ ロ ッ ク であ り 、 基にな る ブ ロ ッ ク を複数指定で
き る ブ ロ ッ ク です。 各ブ ロ ッ ク はそれぞれ可能な イ ンプ リ メ ン テーシ ョ ン であ り 、 ど の イ ンプ リ メ ン テーシ ョ ン を使用す る か
を自由に選択で き ます。 た と えば、System Generator で汎用 FIR フ ィ ル タ ーを コ ン フ ィ ギ ャ ブル サブシ ス テ ム と し て指定 し 、 そ
のサブシ ス テ ムの基にな る ブ ロ ッ ク と し て特定の FIR フ ィ ル タ ーを複数指定 し ます。高速だがハー ド ウ ェ ア リ ソ ース を多 く 必
要 と す る フ ィ ル タ ー、 比較的低速だが必要なハー ド ウ ェ ア リ ソ ース が少ない フ ィ ル タ ーな ど を指定で き ます。 フ ィ ル タ ーの選
択を切 り 替え る こ と に よ り 、 ハー ド ウ ェ ア コ ス ト ま たは ス ピー ド を優先 し た場合の動作を調べる こ と がで き ます。
コ ン フ ィ ギ ャ ブル サブ シ ス テムの定義
コ ン フ ィ ギ ャ ブル サブシ ス テ ム を定義す る には、 Simulink ラ イ ブ ラ リ を作成 し ます。 コ ン フ ィ ギ ャ ブル サブシ ス テ ムの基にな
る ブ ロ ッ ク は、 こ の ラ イ ブ ラ リ で管理 さ れます。 ラ イ ブ ラ リ を作成す る には、 次の手順に従い ます。
•
空の ラ イ ブ ラ リ を作成 し ます。
•
作成 し た ラ イ ブ ラ リ に基にな る ブ ロ ッ ク を追加 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
64
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
•
テ ンプ レー ト ブ ロ ッ ク を ラ イ ブ ラ リ に ド ラ ッ グ し ます([Simulink] ラ イ ブ ラ リ → [Ports & Subsystems] にあ る Configurable
Subsystem テ ンプ レー ト を ラ イ ブ ラ リ に追加 し ます)。
•
必要に応 じ て、 テ ンプ レー ト ブ ロ ッ ク の名前を変更 し ます。
•
ラ イ ブ ラ リ を保存 し ます。
•
テ ンプ レー ト を ダブル ク リ ッ ク し て開 き ます。
•
[Configuration dialog] ダ イ ア ロ グ ボ ッ ク ス で、 必要なブ ロ ッ ク のチ ェ ッ ク ボ ッ ク ス を オンに し ます。
•
[OK] を ク リ ッ ク し 、 その後 ラ イ ブ ラ リ を保存 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
65
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
コ ン フ ィ ギ ャ ブル サブ シ ス テムの使用
デザ イ ンで コ ン フ ィ ギ ャ ブル サブシ ス テ ム を使用す る には、 次の手順に従い ます。
•
コ ン フ ィ ギ ャ ブル サブシ ス テ ム を定義す る ラ イ ブ ラ リ を作成 し ます。
•
ラ イ ブ ラ リ を開 き ます。
•
ラ イ ブ ラ リ か ら テ ンプ レー ト をデザ イ ンの適切な位置に ド ラ ッ グ し ます。
•
ド ラ ッ グ し たテ ンプ レー ト が、 コ ン フ ィ ギ ャ ブル サブシ ス テ ムの イ ン ス タ ン ス にな り ます。
•
イ ン ス タ ン ス を右 ク リ ッ ク し 、 [Block choice] を ク リ ッ ク し て、 使用する ブ ロ ッ ク を選択 し ます。
コ ン フ ィ ギ ャ ブル サブ シ ス テムから のブ ロ ッ クの削除
コ ン フ ィ ギ ャ ブル サブシ ス テ ムか ら ブ ロ ッ ク を削除す る には、 次の手順に従い ます。
•
コ ン フ ィ ギ ャ ブル サブシ ス テ ムの ラ イ ブ ラ リ を開 き 、 ラ イ ブ ラ リ の ロ ッ ク を解除 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
66
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
•
テ ンプ レー ト を ダブル ク リ ッ ク し 、 削除す る ブ ロ ッ ク のチ ェ ッ ク ボ ッ ク ス を オ フ に し ます。
•
[OK] を ク リ ッ ク し 、 その後ブ ロ ッ ク を削除 し ます。
•
ラ イ ブ ラ リ を保存 し ます。
•
Ctrl + D を押 し 、 デザ イ ン を コ ンパ イ ル し ます。
•
必要に応 じ て、 コ ン フ ィ ギ ャ ブル サブシ ス テ ムの各 イ ン ス タ ン ス の選択を ア ッ プデー ト し ます。
コ ン フ ィ ギ ャ ブル サブ シ ス テムへのブ ロ ッ ク の追加
コ ン フ ィ ギ ャ ブル サブシ ス テ ムにブ ロ ッ ク を追加す る には、 次の手順に従い ます。
•
コ ン フ ィ ギ ャ ブル サブシ ス テ ムの ラ イ ブ ラ リ を開 き 、 ラ イ ブ ラ リ の ロ ッ ク を解除 し ます。
•
ブ ロ ッ ク を ラ イ ブ ラ リ に ド ラ ッ グ し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
67
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
•
テ ンプ レー ト を ダブル ク リ ッ ク し 、 追加 し たブ ロ ッ ク のチ ェ ッ ク ボ ッ ク ス を オンに し ます。
•
[OK] を ク リ ッ ク し 、 その後 ラ イ ブ ラ リ を保存 し ます。
•
Ctrl + D を押 し 、 デザ イ ン を コ ンパ イ ル し ます。
•
必要に応 じ て、 コ ン フ ィ ギ ャ ブル サブシ ス テ ムの各 イ ン ス タ ン ス の選択を ア ッ プデー ト し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
68
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
高パフ ォ ーマ ン ス FPGA デザイ ン に関する注記
バ ッ ク エン ド イ ンプ リ メ ン テーシ ョ ン ツールを使用 し て最適化エ フ ォー ト に重点を置いた場合、 次の理由か ら タ イ ミ ン グ ク
ロ ージ ャ が達成で き ない こ と があ り ます。
•
System Generator デザ イ ンに含まれ る FIR Compiler お よ び FFT の よ う な よ り 複雑な IP ブ ロ ッ ク が生成 さ れ、 こ れ ら は合成
ツールお よ び イ ンプ リ メ ン テーシ ョ ン ツールに高度に最適化 さ れたネ ッ ト リ ス ト と し て提供 さ れ る ので、 さ ら に詳細な最
適化がで き ない こ と があ り ます。
•
System Generator ネ ッ ト リ ス ト で多 く の イ ン ス タ ン シエー ト 済みプ リ ミ テ ィ ブ (レ ジ ス タ 、 BRAM、 DSP48E1 な ど) を含め
て HDL コ ー ド が生成 さ れます。 こ れ ら のエ レ メ ン ト を最適化で き る 合成ツールはあ ま り あ り ません。
次の ヒ ン ト は、 イ ン プ リ メ ン テーシ ョ ン プ ロ セ ス を開始す る 前にデザ イ ン パフ ォ ーマ ン ス を上げ る ために、 System Generator
でで き る こ と を示 し てい ます。
•
各ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス に含まれてい る 「Hardware Notes」 を読む
•
デザ イ ンの入力 と 出力に レ ジ ス タ を付け る
•
パ イ プ ラ イ ン レ ジ ス タ を挿入す る
•
[Saturate] お よ び [Round] オプシ ョ ンは必要な場合以外は使用 し ない
•
すべての Gateway ブ ロ ッ ク でデー タ レー ト オプシ ョ ン を設定す る
•
その他の方法を試 し てみ る
各ブ ロ ッ クのパラ メ ー タ ー ダ イ ア ログ ボ ッ ク スに含まれている
「Hardware Notes」 を読む
ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス に含まれてい る 「Hardware Notes」 を読む よ う に し て く だ さ い。 Xilinx Blockset ラ
イ ブ ラ リ の多 く のブ ロ ッ ク では、 最 も 効率の良いハー ド ウ ェ ア イ ン プ リ メ ン テーシ ョ ン を達成す る 方法が記載 さ れてい ます。
た と えば、 Scale ブ ロ ッ ク には こ のブ ロ ッ ク にハー ド ウ ェ ア コ ス ト がかか ら ない こ と が記述 さ れてい ますが、 同 じ 目的で使用
する こ と のあ る Shift ブ ロ ッ ク では場合に よ っ てハー ド ウ ェ アが使用 さ れ る こ と が記述 さ れてい ます。
デザイ ンの入力 と 出力に レ ジ ス タ を付ける
デザ イ ンの入力 と 出力に レ ジ ス タ を付け ます。 次の図に示す よ う に、 レ ジ ス タ を付け る には、 Gateway In ブ ロ ッ ク の後お よ び
Gateway Out ブ ロ ッ ク の前に、 レ イ テ ン シ 1 の Delay ブ ロ ッ ク ま たは Register ブ ロ ッ ク を 1 つま たは複数配置 し ます。 Register
ブ ロ ッ ク の機能のいずれか を追加す る と 、 追加のハー ド ウ ェ ア リ ソ ース が必要にな り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
69
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
I/O に 2 つの レ ジ ス タ を付け る と 、 有益な場合があ り ます。 こ の場合、 Register ブ ロ ッ ク を 2 つ イ ン ス タ ン シエー ト す る か、 レ
イ テ ン シが 1 の Delay ブ ロ ッ ク を 2 つ イ ン ス タ ン シエー ト し ます。 こ の よ う にす る と 、 1 つの レ ジ ス タ が IOB 内に配置 さ れ、
も う 1 つの レ ジ ス タ が FPGA の ロ ジ ッ ク の横に配置 さ れ ます。 Delay ブ ロ ッ ク の レ イ テ ン シ を 2 に し て も 、 レ イ テ ン シ 2 のブ
ロ ッ ク が SRL16 を使用 し て イ ンプ リ メ ン ト さ れ、 IOB 内に配置 さ れないので、 同 じ 結果にはな り ません。
パイ プ ラ イ ン レ ジ ス タ を挿入する
可能な限 り 、 パ イ プ ラ イ ン レ ジ ス タ を挿入 し て く だ さ い。 パ イ プ ラ イ ンは、 Delay ブ ロ ッ ク を使用 し て効率的に イ ンプ リ メ ン
ト で き ます (SRL16 プ リ ミ テ ィ ブが使用 さ れ る )。 レ ジ ス タ に初期値を指定す る 必要があ る 場合は、 Register ブ ロ ッ ク を使用 し
て く だ さ い。 ま た、 SRL16 の入力パ ス が タ イ ミ ン グ を満た さ ない場合は、 関連す る Delay ブ ロ ッ ク の前に Register ブ ロ ッ ク を
配置 し 、 Delay ブ ロ ッ ク の レ イ テ ン シ を 1 に削減 し ます。 こ れに よ り 、 配線ツールの柔軟性が さ ら に増 し 、 Register お よ び Delay
ブ ロ ッ ク (SRL + Register) を離 し て配置 し て、 こ のパ ス の配線遅延のマージ ン を最大にで き ます。
次に示す よ う に、 Convert ブ ロ ッ ク を エ ンベデ ッ ド レ ジ ス タ 段 と パ イ プ ラ イ ン接続す る と 、 最大パフ ォ ーマ ン ス を達成で き ま
す。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
70
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
ザ イ リ ン ク ス ブ ロ ッ ク で よ り 効率的な イ ンプ リ メ ン テーシ ョ ン を達成す る には、 [Implement using behavioral HDL] オプシ ョ ン
を オ ンに し ます。 次に示す よ う に、 Delay ブ ロ ッ ク の遅延が 32 以上の場合、 ザ イ リ ン ク ス合成に よ り 1 つの LUT にマ ッ プ さ
れ る SRLC32E (32 ビ ッ ト のシ フ ト レ ジ ス タ ) が推論 さ れます。
BRAM (ブ ロ ッ ク RAM) には、 内部出力レ ジ ス タ を使用 し て く だ さ い。 こ れは レ イ テ ン シ を 1 (デフ ォ ル ト ) か ら 2 に設定す る
と 使用で き ます。 こ れに よ り 、 BRAM 出力レ ジ ス タ が イ ネーブルにな り ます。
DSP48E1 を使用す る 場合は、 入力、 出力、 お よ び内部レ ジ ス タ を、 FIFO を使用す る 場合は、 エンベデ ッ ド レ ジ ス タ オプシ ョ
ン を使用 し ます。 ま た、 すべての高位 IP ブ ロ ッ ク のパ イ プ ラ イ ン オプシ ョ ン を確認 し ます。
[Saturate] および [Round] オプ シ ョ ンは必要な場合以外は使用 し ない
こ れ ら のオプシ ョ ン を使用す る と 、 リ ソ ース が多 く 使用 さ れ、 パフ ォーマ ン ス が低下 し ます。 必要な場合にのみ使用 し て く だ
さ い。 た と えば、 Reinterpret ブ ロ ッ ク の場合、 ど の ロ ジ ッ ク も 失われ る こ と はあ り ません。 Convert (cast) ブ ロ ッ ク の場合、 量
子化 (Quantization) が切 り 捨て (Truncate) でオーバーフ ロ ー (Overflow) が折 り 返 し (Wrap) に設定 さ れていれば、ど の ロ ジ ッ ク も
失 う こ と はあ り ません。 デー タ 型に丸め (Rounding) お よ び飽和 (Saturation) オプシ ョ ン を使用す る 必要があ る 場合は、 Convert
ブ ロ ッ ク を エンベデ ッ ド レ ジ ス タ 段 と パ イ プ ラ イ ン接続 し ます。 DSP48E1 を使用する 場合、 丸めは DSP48E1 内で実行で き ま
す。
すべての Gateway ブ ロ ッ ク でデー タ レー ト オプ シ ョ ン を設定する
Gateway In ブ ロ ッ ク と Gateway Out ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で、 [IOB timing constraint] に [Data rate] を選
択 し ます。 こ のオプシ ョ ン を選択す る と 、 IOB が動作する デー タ レー ト で制約 さ れます。 こ の レー ト は、 System Generator ト ー
ク ンの [Simulink system period(sec)] の値、 お よ びデザ イ ン内のその他のサ ン プ リ ン グ周期に対す る Gateway ブ ロ ッ ク のサ ンプ
リ ン グ レー ト に よ っ て決定 さ れます。
その他の方法を試 し てみる
•
ソ ース デザ イ ン を変更す る
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
71
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
°
パ イ プ ラ イ ン を追加で使用す る
BRAM お よ び DSP48 内の出力レ ジ ス タ お よ びパ イ プ ラ イ ン レ ジ ス タ を使用する
°
パ ラ レルで関数を実行す る
遅い ク ロ ッ ク レー ト でパ ラ レルに関数を実行す る
°
リ タ イ ミ ン グ手法を使用す る
組み合わせ ロ ジ ッ ク を使用 し て既存レ ジ ス タ を移動す る
°
ハー ド コ ア を可能な箇所で使用す る
分散 RAM の代わ り にブ ロ ッ ク RAM を使用す る
°
•
関数に対 し て さ ま ざ ま なデザ イ ン アプ ロ ーチを使用す る
デザ イ ンに制約を付けすぎない
デザ イ ンに制約を付けすぎないで、 適宜、 ア ッ プ/ダ ウ ン サンプル ブ ロ ッ ク を使用する
•
ク リ テ ィ カルなデザ イ ン モジ ュ ールの周波数を削減す る
•
イ ンプ リ メ ン テーシ ョ ン ツールで調整す る
°
さ ま ざ ま な合成オプシ ョ ン を試 し てみ る
°
ク リ テ ィ カル モジ ュ ールを フ ロ アプ ラ ンす る
FDATool を使用し たデジ タル フ ィ ルタ ー アプ リ ケーシ ョ ン
次の例では、 FDATool ブ ロ ッ ク を使用 し て FIR フ ィ ル タ ーを指定、 イ ンプ リ メ ン ト 、 シ ミ ュ レーシ ョ ンす る 1 つの方法を示 し
ま す。 FDATool ブ ロ ッ ク を フ ィ ル タ ーの次数お よ び係数を定義す る ために使用 し 、 ザ イ リ ン ク ス ブ ロ ッ ク セ ッ ト を使用 し て
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
72
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
MAC ベース の FIR フ ィ ル タ ーを 1 つの MAC エン ジ ンで イ ンプ リ メ ン ト し ます。 その後、 周波数応答の質を倍精度の Simulink
フ ィ ル タ ー モデル と 比較す る こ と に よ り 検証 し ます。
こ の例では 1 つの MAC エン ジ ンの FIR フ ィ ル タ ーが使用 さ れてい ますが、ザ イ リ ン ク ス リ フ ァ レ ン ス ブ ロ ッ ク セ ッ ト の一部
と し て提供 さ れてい る DSP ラ イ ブ ラ リ のブ ロ ッ ク を見てみ る こ と をお勧め し ます。 DSP ラ イ ブ ラ リ には、 複数の MACを含む
例や、 メ モ リ の タ イ プが異な る マルチ チ ャ ネル イ ンプ リ メ ン テーシ ョ ンの例が含まれてい ます。
System Generator デモ ラ イ ブ ラ リ に も 、 MAC ベース の補間フ ィ ル タ ーを効率的に イ ンプ リ メ ン ト する 例が示 さ れてい ます。 デ
モ を参照す る には、 MATLAB の [Command Window] に次の よ う に入力 し ます。
>> demo blockset xilinx
表示 さ れた ウ ィ ン ド ウ で、 デモ デザ イ ンの リ ス ト か ら [Polyphase 1:8 filter using SRL16Es] を ク リ ッ ク し ます。
デザイ ンの概要
こ のデザ イ ンでは、 [Signal Processing Blockset] → [Signal Processing Source] にあ る Random Source ブ ロ ッ ク を使用 し 、 FIR フ ィ
ル タ ーの 2 つの イ ンプ リ メ ン テーシ ョ ン を駆動 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
73
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
•
最初の フ ィ ル タ ーは、 ザ イ リ ン ク ス デバ イ ス に イ ンプ リ メ ン ト し ます。 こ の フ ィ ル タ ーは、 デュ アル ポー ト ブ ロ ッ ク メ
モ リ と MAC を使用 し て イ ンプ リ メ ン ト さ れた、 固定小数点 FIR フ ィ ル タ ーです。
•
2 つ目の フ ィ ル タ ーは Reference Filter で、 倍精度の直接型 II 転置フ ィ ル タ ーです。
各フ ィ ル タ ーの周波数応答は、 伝達関数ス コ ープで表示 さ れます。
FIR フ ィ ル タ ーの係数の生成
1.
MATLAB の [Command Window] で、 cd コ マ ン ド を使用 し て C:/ug897-example-files/mac_df2t デ ィ レ ク ト リ に移
動 し ます。
2.
「mac_df2t」 と 入力 し 、 デザ イ ン モデルを開 き ます。
こ の演習の目的のため、 変数 coef、 coef_width、 coef_binpt、 data_width、 data_binpt、 お よ び Fs は定義 さ れてい ません。 こ れ ら
の変数は、 MAC Based FIR ブ ロ ッ ク のマ ス ク パ ラ メ ー タ ー と し て使用 し 、 FDATool を使用 し て フ ィ ル タ ーを設計 し 、 割 り 当て
ます。 完全に機能す る モデルが、 同 じ デ ィ レ ク ト リ に mac_df2t_soln.mdl と い う 名前で含まれてい ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
74
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
MAC Based FIR ブ ロ ッ クのパラ メ ー タ ー指定
1.
MAC Based FIR ブ ロ ッ ク を右 ク リ ッ ク し 、 [Edit Mask] を ク リ ッ ク し ます。
2.
[Parameters] タ ブ を ダブル ク リ ッ ク し 、 coef、 data_width お よ び data_binpt パ ラ メ ー タ ーを追加 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
75
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
FIR フ ィ ル タ ーの係数の生成 と 割 り 当て
1.
[Xilinx Blockset] → [DSP] にあ る FDATool ブ ロ ッ ク を ド ラ ッ グ し てモデルに追加 し ます。
2.
FDATool ブ ロ ッ ク を ダブル ク リ ッ ク し 、オーデ ィ オ シ ス テ ムで高周波数 ノ イ ズ を除去する ロ ーパ ス フ ィ ル タ の次の仕様を
入力 し ます。
°
[Response Type] : Lowpass
°
[Filter Order] : Minimum order
°
[Frequency Specifications] :
°
3.
-
[Units] : Hz
-
[Fs] : 44100
-
[Fpass] : 6000
-
[Fstop] : 7725
[Magnitude Specifications] :
-
[Units] : dB
-
[Apass] : 1
-
[Astop] :48
[Design Filter] を ク リ ッ ク し 、 フ ィ ル タ 次数 と 振幅応答を確認 し ます。
ツールバー ボ タ ン を ク リ ッ ク し て、 位相応答、 イ ンパルス応答、 フ ィ ル タ 係数な ど も 表示で き ます。 上記の仕様を満たす
には、 43 タ ッ プ FIR フ ィ ル タ ー (順番 0-42) が必要であ る こ と が示 さ れます。
フ ィ ル タ ー係数を表示す る には、 MATLAB の [Command Window] で次の よ う に入力 し ます。
>> xlfda_numerator('FDATool')
次の コ マ ン ド を使用す る と 、 係数幅 と 2 進小数点を正 し く 指定す る ための最大係数値お よ び最小係数値を知 る こ と がで き
ます。
>> max(xlfda_numerator('FDATool'))
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
76
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
>> min(xlfda_numerator('FDATool'))
こ の演習では、 係数 タ イ プは Fix_12_12 (2 進小数点が 12 番目の ビ ッ ト の左側に あ る 12 ビ ッ ト 値) に設定 さ れてい ま す。
max() 関数の結果、 最大係数は 0.3022 であ り 、 2 進小数点を最上位ビ ッ ト の左側に配置で き ます。 こ れは、 Fix_12_12 の値
の範囲が -0.5 ~ 0.4998 であ り 、 2 進小数点を最上位ビ ッ ト の左側に配置する こ と で、 ダ イ ナ ミ ッ ク 範囲を最大限にで き る
か ら です。 2 進小数点を右に移動す る と (Fix_12_11 値を使用)、 Fix_12_11 値の範囲が -1 ~ 0.9995 で係数を表現す る のに必
要以上あ る ため、 ダ イ ナ ミ ッ ク 範囲が 1 ビ ッ ト 失われます。
4.
Reference Filter ブ ロ ッ ク お よ び MAC Based FIR ブ ロ ッ ク を ク リ ッ ク し 、 coef、 coef_width、 coef_binpt、 data_width、 data_binpt
お よ び Fs パ ラ メ ー タ ーの値が次の よ う にな っ てい る か ど う かか確認 し ます。
各ダ イ ア ロ グ ボ ッ ク ス の [OK] を ク リ ッ ク し ます。
ザイ リ ン ク ス フ ィ ル タ ー ブ ロ ッ クの理解
次に、 こ の演習の MAC Based FIR を イ ンプ リ メ ン ト し たブ ロ ッ ク 図を示 し ます。
こ の時点では、 MAC Based FIR は 10 ビ ッ ト の符号付き 入力デー タ (Fix_10_8)、 12 ビ ッ ト の符号付 き 係数 (Fix_12_12)、 43 タ ッ
プに設定 さ れてい ます。 こ れ ら のパ ラ メ ー タ ーは、 MAC Based FIR ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で直接変更
で き ます。 係数 と デー タ は、 メ モ リ シ ス テ ムに保存す る 必要があ り ます。 こ の演習では、 デー タ と 係数の保存にデュ アル ポー
ト メ モ リ を使用 し ます。 デー タ のキ ャ プチ ャ お よ び読み出 し には、 循環 RAM バ ッ フ ァ を使用 し ます。 RAM は混合モー ド コ
ン フ ィ ギ ュ レーシ ョ ンで使用 さ れ、 ポー ト A で値の書 き 込みお よ び読み出 し が行われ (RAM モー ド )、 ポー ト B で係数の読み
出 し のみが行われます (ROM モー ド )。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
77
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
乗算器は、 最速のパ フ ォ ーマ ン ス を達成す る ため、 ザ イ リ ン ク ス 7 シ リ ーズ デバ イ ス に含 ま れてい る エ ンベデ ッ ド 乗算器 リ
ソ ー ス を使用 し 、 レ イ テ ン シが 3 にな る よ う 設定 さ れてい ま す。 乗算器お よ びア キ ュ ム レ ー タ に必要な精度は、 フ ィ ル タ ー
タ ッ プ (係数) と タ ッ プ数の関数です。 こ れ ら の数値は設計時に固定 さ れ る ので、 フ ィ ル タ ー仕様を満たす よ う ハー ド ウ ェ ア リ
ソ ース を調整で き ます。 ア キ ュ ム レー タ の精度は、 フ ィ ル タ ー タ ッ プに対 し て最大入力を累積する のに十分であれば よ く 、 次
の式で算出 さ れます。
acc_nbits = ceil(log2(sum(abs(coef*2^coef_width_bp)))) + data_width+ 1;
ア キ ュ ム レー タ を リ セ ッ ト す る と 、 0 ではな く 現在の入力値に初期化 さ れ る ので、 MAC エン ジ ン でデー タ を停止す る こ と な く
送信 し 続け る こ と がで き ます。 MAC エ ン ジ ンは、 出力サ ン プルの最後の部分積を算出 し た後ア キ ュ ム レー タ に入力サ ン プル
を読み込むので、 ス ト リ ー ミ ン グ操作ではキ ャ プチ ャ レ ジ ス タ が必要です。
最後に、 Down Sample ブ ロ ッ ク で キ ャ プチ ャ レ ジ ス タ のサ ン プ リ ン グ周期を出力サ ン プ リ ン グ周期に変換 し ま す。 効率的な
ハー ド ウ ェ ア イ ンプ リ メ ン テーシ ョ ン を達成す る ため、 こ のブ ロ ッ ク は レ イ テ ン シ を持つ よ う コ ン フ ィ ギ ュ レーシ ョ ン さ れま
す。 サンプ リ ン グ レー ト は、 係数ア レ イ の長 さ と 同 じ です。
シ ミ ュ レーシ ョ ンの実行
1.
シ ミ ュ レーシ ョ ン時間を 0.05 に変更 し てシ ミ ュ レーシ ョ ン を実行 し ます。
次の よ う な メ ッ セージが表示 さ れ る はずです。
System Generator では、 din と い う Gateway In ブ ロ ッ ク か ら 入力サンプ リ ン グ周期を取得 し ますが、 こ の周期は 1/Fs に設定
さ れてい ます。 MAC Based FIR フ ィ ル タ は、 タ ッ プ数に応 じ てオーバーサンプ リ ン グ さ れ る ので、 シ ス テ ム ク ロ ッ ク 周期
は常に 1 (フ ィ ル タ ー タ ッ プ数 X Fs) です。
2.
System Generator ト ー ク ン を ダブル ク リ ッ ク し 、Simulink シ ス テ ム周期を変更 し て、シ ス テ ム ク ロ ッ ク 周期を 5.273427e-007
= 1/(43 * 44100) に指定 し て く だ さ い。
3.
シ ミ ュ レーシ ョ ン を実行 し 直す と 、MAC Based FIR フ ィ ル タ のザ イ リ ン ク ス イ ンプ リ メ ン テーシ ョ ンは元の フ ィ ル タ の仕
様を満た し 、 周波数応答は倍精度の Simulink モデル と ほぼ同一にな り ます。
フ ィ ル タ ーのパス バン ド 応答 と 0 が明確に示 さ れます。 次の図 と 同 じ よ う な周波数応答にな る はずです。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
78
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
フ ィ ル タ ーの精度を上げた り 下げた り す る こ と に よ り 、 デザ イ ンの仕様に必要な範囲、 パフ ォーマ ン ス、 質のバ ラ ン ス を取 る
こ と がで き ます。
シ ミ ュ レーシ ョ ン を停止 し 、 ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で係数幅を FIX_10_10、 デー タ 幅を FIX_8_6 に変更
し ます。 Ctrl + D を押 し てモデルを ア ッ プデー ト し 、 MAC engine ブ ロ ッ ク の階層を表示 し ます。 デー タ パ ス が、 乗算器の出力
では 18 ビ ッ ト に、 ア キ ュ ム レー タ では 20 ビ ッ ト にア ッ プデー ト さ れてい ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
79
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
シ ミ ュ レーシ ョ ン を再開 し 、 周波数応答が ど の よ う に変化 し たか を観察 し ます。 固定ワー ド 長に よ り 、 減衰が悪化 し てい ます
(40dB 未満)。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
80
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
複数の独立ク ロ ッ クのハー ド ウ ェ ア デザイ ン
概要
System Generator for DSP は、 サ イ ク ル精度の高度なハー ド ウ ェ ア モデ リ ン グ を使用する イ ンプ リ メ ン テーシ ョ ン ツールで、 そ
のサ イ ク ルの概念はハー ド ウ ェ アの ク ロ ッ ク の概念 と 類似 し てい ま す。 デザ イ ン はサブシ ス テ ム ブ ロ ッ ク のグループにパー
テ ィ シ ョ ンで き 、各サブシ ス テ ムではその他のサブシ ス テ ムのサ イ ク ル周期 と は独立 し た共通のサ イ ク ル周期が使用 さ れます。
こ のセ ク シ ョ ンでは、 グループを 1 つのサ イ ク ルま たは ク ロ ッ ク ド メ イ ンに ま と め る 方法 と 、 こ れ ら のサ イ ク ル ド メ イ ン間の
デー タ の転送方法について説明 し ます。 ま た、 こ のセ ク シ ョ ンでは、 「サ イ ク ル」 と 「 ク ロ ッ ク 」 が同 じ 意味で使用 さ れます。
ク ロ ッ ク ド メ イ ン内のブ ロ ッ ク のグループ分け
ブ ロ ッ ク は、 「サブシ ス テ ム」 を使用 し て System Generator と 一緒に ま と め ら れます。 1 つの ク ロ ッ ク ド メ イ ン内でブ ロ ッ ク を
グループ分けす る 場合は、 System Generator ト ー ク ン を ク ロ ッ ク ド メ イ ン と し てマー ク す る サブシ ス テ ム内に配置す る 必要が
あ る 点が異な り ます。 こ れを次の図に示 し ます。
こ の図では、 src_domain と い う ク ロ ッ ク ド メ イ ンのサブシ ス テ ムが作成 さ れて、 System Generator ト ー ク ンが追加 さ れてお り 、
System Generator ト ー ク ン の [Clocking] タ ブが選択 さ れた状態です。 こ の タ ブでは、 FPGA ク ロ ッ ク 周期が (1000/368) ns (368
MHz) に、 Simulink シ ス テ ム周期が 1 に設定 さ れてお り 、 1 Simulink 秒の前進が FPGA ク ロ ッ ク の (1000/368) ns に該当す る こ と
を意味 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
81
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
同様に、 次の図に示す よ う に、 別の ク ロ ッ ク ド メ イ ン を示す別のブ ロ ッ ク グループが dest_domain と い う サブシ ス テ ムに含ま
れます。
こ のデザ イ ンでは、 dest_domain サブシ ス テ ムは 1000/245 ns(245MHz) の FPGA ク ロ ッ ク 周期で実行 さ れ る よ う に コ ン フ ィ ギ ュ
レーシ ョ ン さ れます。 Simulink シ ス テ ム周期は 368/245 に設定 さ れます。 こ れは、 src_domain サブシ ス テ ムの Simulink シ ス テ
ム周期が 1 に設定 さ れてい る ためです。 こ のため、 よ り 速い src_domain か ら のシ ス テ ム周期で標準化 し ます。
非同期 ク ロ ッ ク ド メ イ ン を作成する ために使用する System Generator ブロ ッ ク
src_domain と dest_domain サブシ ス テ ム間でデー タ を渡すには、 次の ロ ジ ッ ク のいずれか を使用で き ます。
1.
FIFO ブ ロ ッ ク
2.
Dual Port RAM ブ ロ ッ ク
3.
Register ブ ロ ッ ク
4.
Black Box ブ ロ ッ ク (既存の VHDL、 Verilog、 お よ び EDIF をデザ イ ンに追加で き ます)。 Black Box ユーテ ィ リ テ ィ の詳細
は、 第 6 章を参照 し て く だ さ い。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
82
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
こ れ ら のブ ロ ッ ク は、 デザ イ ン コ ン テ キ ス ト に基づいて Synchronous シ ン グル ク ロ ッ ク ブ ロ ッ ク か Multiple ク ロ ッ ク ブ ロ ッ
ク のいずれかに自動的に コ ン フ ィ ギ ュ レーシ ョ ン さ れます。 こ のデザ イ ンの場合、 次の図に示す よ う に、 ク ロ ッ ク ド メ イ ン を
ま た ぐ ために FIFO ブ ロ ッ ク が使用 さ れてい ます。
デザ イ ン を完了す る には、 デザ イ ン の最上位の FIFO ブ ロ ッ ク と 追加の System Generator ブ ロ ッ ク を含めて、 コ ー ド 生成を イ
ネーブルに し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
83
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
最上位 System Generator ト ー ク ンの コ ン フ ィ ギ ュ レーシ ョ ン
最上位 System Generator ト ー ク ンは、 複数 ク ロ ッ ク デザ イ ンの場合は コ ー ド 生成を開始す る 必要があ る こ と を示す よ う に コ ン
フ ィ ギ ュ レーシ ョ ンす る 必要があ り ます。 こ れには、 最上位 System Generator ト ー ク ンで [Enable multiple clocks] チ ェ ッ ク ボ ッ
ク ス を オ ン に し ます。 こ れに よ り 、 src_domain お よ び dest_domain サブシ ス テ ム の ク ロ ッ ク 情報を こ れ ら のサブシ ス テ ム に含
まれ る System Generator ト ー ク ンか ら 取得す る 必要があ る こ と が コ ー ド 生成エン ジ ンに伝わ り ます。 こ のチ ェ ッ ク ボ ッ ク ス が
オ フ の場合、 デザ イ ンは Single Clock デザ イ ン と し て扱われ、 すべての ク ロ ッ ク 情報が最上位 System Generator ブ ロ ッ ク か ら 引
き 継がれます。
ク ロ ッ ク 伝搬アルゴ リ ズム
こ こ では、 ク ロ ッ ク 伝搬アルゴ リ ズ ムについて簡単に説明 し ます。 src_domain 内のすべての System Generator ブ ロ ッ ク では、 ク
ロ ッ キ ン グ が src_domain サブ シ ス テ ム の System Generator ト ー ク ン で管理 さ れ ま す。 dest_domain サブ シ ス テ ム も 同様です。
FIFO ブ ロ ッ ク の場合、 ク ロ ッ ク はデザ イ ン のその コ ン テ キ ス ト か ら 派生 さ れ ます。 we と din ポー ト は、 src_domain サブシ ス
テ ムか ら 出 る 信号で駆動 さ れ る ので、 FIFO の wr_clk は src_domain ク ロ ッ ク に接続 さ れます。 dout、 %full お よ び re ポー ト は、
dest_domain か ら の信号を駆動す る か読み込むので、 FIFO の rd_clk は dest_domain ク ロ ッ ク に接続 さ れ ます。 ク ロ ッ ク ド メ イ
ン を横切 っ て こ れ ら の信号を混ぜた り 、 一致 さ せた り 、 ま たは ク ロ ッ ク ド メ イ ン を超え て その他のブ ロ ッ ク を使用す る と 、
DRC エ ラ ーにな り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
84
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
ク ロ ッ ク 伝搬のデバ ッ グ
最上位 System Generator ト ー ク ン を使用す る と 、 [General] タ ブの [Block icon display] を使用 し てすべて の System Generator ブ
ロ ッ ク ア イ コ ンの表示が制御で き ます。 こ の タ ブか ら 、 [Normalized sample periods] ま たは [Sample frequencies] のいずれか を選
択す る と 、 ク ロ ッ ク がデザ イ ンで ど の よ う に伝搬 さ れ る かが理解 し やす く で き ま ます。
複数 ク ロ ッ ク デザ イ ンの場合、 [Normalized sample periods] のビヘ イ ビ アーでは、 一番小 さ い [Simulink system period] がすべて
のサンプル周期を標準化す る ために使用 さ れます。
上記の表示を有効にす る には、 最上位 System Generator ト ー ク ンの [Block icon display] を [Normalized Sample Periods] に設定 し 、
[Apply] を ク リ ッ ク し ます。
[Sample Frequencies] の場合、 ポー ト ア イ コ ンのテ キ ス ト 表示が次の計算結果にな り ます。
(1e6/FPGA ク ロ ッ ク 周期) * Simulink シ ス テ ム周期/ポー ト サンプル周期
説明 :
[FPGA clock period] : ド メ イ ンの System Generator ト ー ク ンでナ ノ 秒 (ns) で指定 し た FPGA ク ロ ッ ク 周期
[Simulink system period] : ド メ イ ンの System Generator ト ー ク ンで秒単位で指定 し た FPGA ク ロ ッ ク 周期
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
85
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
正 し い ク ロ ッ ク 伝搬を承認す る には、 次の図に示す よ う に [Sample frequencies] を使用する こ と も で き ます。
シ ミ ュ レーシ ョ ンでハー ド ウ ェ ア ビヘ イ ビ アーが ク ロ ッ ク に関 し てモデ リ ン グ さ れ る よ う にする には、 各 ド メ イ ンの Simulink
シ ス テ ム周期対 FPGA ク ロ ッ ク 周期の比率が同 じ であ る 必要があ り ます。 こ の関係が正 し い比率で コ ンパ イ ル さ れない と 、 次
の図の よ う な警告 メ ッ セージが表示 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
86
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
シ ミ ュ レーシ ョ ン
シ ミ ュ レーシ ョ ン を実行す る と 、 dest_domain ス コ ープ と 同 じ く 、 次の よ う な結果にな り ます。
上記に示す よ う に、 シ ミ ュ レーシ ョ ン結果には取得 し たデー タ が予測 し たデー タ であ る こ と が示 さ れます。
注記 : こ の ク ロ ス ク ロ ッ ク ド メ イ ンのシ ミ ュ レーシ ョ ン ビヘ イ ビ アーのサ イ ク ル精度は高 く あ り ません。
複数ク ロ ッ ク ド メ イ ン信号のデバ ッ グ
System Generator では、 ポ ッ プア ッ プ メ ニ ュ ーの [Xilinx View Signal] オプシ ョ ンで複数の さ ま ざ ま な ク ロ ッ ク ド メ イ ンか ら の
信号の表示がサポー ト さ れます。 こ れに よ り 、 さ ま ざ ま なサブシ ス テ ムか ら の信号を 1 つのビ ュ ーで表示す る タ ス ク が簡単に
な り ます。 ま た、 波形ビ ュ ーアー と Simulink ダ イ ア グ ラ ム間の ク ロ ス プ ロ ーブ機能に よ り 、 デバ ッ グ プ ロ セ ス も や り やす く
な っ てい ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
87
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
波形ビ ュ ーアーに信号を追加す る には、 モデルで信号を右 ク リ ッ ク し て、 [Xilinx Add To Viewer] を ク リ ッ ク し ます。 デザ イ ン
を シ ミ ュ レーシ ョ ンす る と 、 次の図の よ う に波形ビ ュ ーアーが起動 さ れます。
同 じ ク ロ ッ ク ド メ イ ンの信号すべてが同様に色付け さ れます。 上記の図では、 src_domain/Slice/Out1 お よ び
dest_domain/Relational/Out1 が異な る ク ロ ッ ク ド メ イ ンにあ り ます。
コ ー ド 生成
複数 ク ロ ッ ク デザ イ ンの コ ー ド 生成では、 次の コ ンパ イ ル タ ーゲ ッ ト がサポー ト さ れます。
1.
HDL ネ ッ ト リ ス ト
2.
IP カ タ ロ グ
3.
合成済みチ ェ ッ ク ポ イ ン ト
次は、 最上位ハー ド ウ ェ アの ス ク リ ーン シ ョ ッ ト です。
ク ロ ッ ク ド メ イ ン と 同 じ 数の ク ロ ッ ク ポー ト が最上位で使用で き 、 MMCM や PLL な ど の さ ま ざ ま なザ イ リ ン ク ス ク ロ ッ キ
ン グ構造で駆動で き ます。 こ れ ら の ク ロ ッ ク は完全に非同期で、 次の PERIOD 制約が作成 さ れ る と し ます。
IP に追加の ク ロ ッ ク ド メ イ ン制約が埋め込まれてい る FIFO ま たは Dual Port RAM だけが使用で き る ので、 必要な制約は こ れ
だけです。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
88
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
複数ク ロ ッ ク の ISE デザイ ンの Vivado IDE への移行
複数の非同期 ク ロ ッ ク を含む ISE デザ イ ン を Vivado 環境に移行する 方法については、 「複数 ク ロ ッ ク の ISE デザ イ ンの Vivado
IDE への移行」 を参照 し て く だ さ い。
既知の問題
次は、 既知の問題の一部です。
1.
HWCosim コ ンパ イ ル タ ーゲ ッ ト は複数 ク ロ ッ ク デザ イ ン ではサポー ト さ れません。
2.
複数 ク ロ ッ ク を使用す る 場合、 FIFO お よ び Dual Port RAM ブ ロ ッ ク のみを最上位にで き ます。
3.
複数 ク ロ ッ ク ド メ イ ンの ク ロ ッ シ ン グ を支援す る ブ ロ ッ ク の ビヘ イ ビ アーのサ イ ク ル精度は高 く あ り ません。
4.
未接続ま たは終端の出力ポー ト は波形ビ ュ ーアーで表示で き ません。
AXI イ ン タ ー フ ェ イ ス
概要
AMBA® AXI™4 (Advanced eXtensible Interface 4) は、 ARM® で定義 さ れ制御 さ れ る 4 世代目の AMBA イ ン タ ーフ ェ イ ス で、 ザ
イ リ ン ク ス では FPGA デザ イ ンの次世代の イ ン タ ーコ ネ ク ト と し て採用 さ れてい ます。 ザ イ リ ン ク スお よ び ARM は密接に連
携 し 、 AXI4 仕様が FPGA のニーズ を満たす よ う に し てい ます。
AXI はオープン イ ン タ ーフ ェ イ ス規格で、 パブ リ ッ ク 、 使用量無料、 業界標準であ る ため、 多 く のサー ド パーテ ィ IP ベン ダー
で広 く 使用 さ れてい ます。
AMBA AXI4 イ ン タ ーフ ェ イ ス の接続はポ イ ン ト ト ゥ ポ イ ン ト で、 AXI4、 AXI4-Lite、 AXI4-Stream の 3 種類です。
•
AXI4 はバース ト ト ラ ンザ ク シ ョ ン をサポー ト す る メ モ リ マ ッ プの イ ン タ ーフ ェ イ ス です。
•
AXI4-Lite は AXI4 の簡易バージ ョ ンで、 イ ン タ ーフ ェ イ ス はバース ト 対応ではあ り ません。
•
AXI4-Stream は一方向のデー タ 転送 (マ ス タ ーか ら ス レーブ) の高パフ ォーマ ン ス の ス ト リ ー ミ ン グ イ ン タ ーフ ェ イ ス で、
AXI4 に比べ る と 信号要件が少な く な っ てい ます。 AXI4-Stream では、 同 じ ワ イ ヤ セ ッ ト の複数チ ャ ネルのデー タ がサポー
ト さ れます。
次の資料では、 AXI4 は AXI4 メ モ リ マ ッ プ イ ン タ ーフ ェ イ ス を、 AXI4-Lite お よ び AXI4-Stream はそれぞれ AMBA AXI4 イ ン
タ ーフ ェ イ ス の該当 タ イ プ を示 し ます。 イ ン タ ーフ ェ イ ス の コ レ ク シ ョ ン を示す場合は、 「AMBA AXI4」 が使用 さ れます。
こ のセ ク シ ョ ン では、 AMBA AXI4 の概要を示 し 、 System Generator に関す る AMBA AXI4 の詳細を説明 し ます。 AMBA AXI4
仕様の詳細は、 http://japan.xilinx.com/ipcenter/axi4.htm のザ イ リ ン ク ス AMBA-AXI4 の資料を参照 し て く だ さ い。
System Generator での AXI4‐Stream のサポー ト
最 も よ く 使用 さ れ る AXI4-Stream 信号は、 TVALID、 TREADY、 TDATA の 3 つです。 AXI4-Stream 信号すべての中で必須なの
は TVALID だけで、それ以外はオプシ ョ ンです。情報を伝達する 信号はすべて TVALID と 同 じ 方向に伝搬 さ れますが、TREADY
だけは反対方向に伝搬 さ れます。
AXI4-Steam はポ イ ン ト ト ゥ ポ イ ン ト イ ン タ ーフ ェ イ ス なので、 マ ス タ ーがデー タ を生成 し 、 ス レーブがデー タ を消費す る マ
ス タ ーお よ びス レーブ イ ン タ ーフ ェ イ ス の概念は、 デー タ フ ロ ーの方向性を示すのに適 し てい ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
89
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
命名規則
AXI4-Stream 信号は、 次の よ う に命名 さ れます。
<Role>_<ClassName>[_<BusName>]_[<ChannelName>]<SignalName>
例:
m_axis_tvalid
こ の場合、 m は Role (マ ス タ ー )、 axis は ClassName (AXI4-Stream)、 tvalid は SignalName です。
s_axis_control_tdata
こ の場合、 s は Role ( ス レ ーブ)、 axis は ClassName、 control は特定 IP の同 じ ク ラ ス の複数 イ ン ス タ ン ス 間 を 区別す る
BusName、 tdata は SignalName です。
TREADY/TVALID ハン ド シ ェ イ ク に関する注意事項
TREADY/TVALID ハン ド シ ェ イ ク は AXI の基本的概念で、 双方向フ ロ ーが制御で き る よ う に、 マ ス タ ーお よ びス レーブ間での
デー タ の交換を制御 し ます。 TDATA お よ びその他すべての AXI-Streaming 信号 (TSTRB、 TUSER、 TLAST、 TID、 TDEST) はす
べて TREADY/TVALID ハン ド シ ェ イ ク で認証 さ れ ます。 マ ス タ ーは TVALID がアサー ト さ れ る と デー タ の有効な ビー ト を示
し 、 TREADY がアサー ト さ れ る ま でデー タ ビー ト を維持す る 必要があ り ます。 TVALID は、 アサー ト さ れ る と 、 TREADY が
アサー ト さ れ る ま でデ ィ アサー ト で き ません。AXI では、TREADY を TVALID に依存 さ せて も TVALID のアサー ト が TREADY
に依存 し ない よ う にする 規則 も 追加 さ れます。 こ の規則に よ り 、 タ イ ミ ン グ ループが循環 さ れな く な り ます。 次の タ イ ミ ン グ
図は、 TREADY/TVALID ハン ド シ ェ イ ク の例です。
ハン ド シ ェ イ クの例
•
TREADY お よ び TVALID の両方が同 じ サ イ ク ルで High にな る と 、 指定 し たチ ャ ネルで転送が発生 し ます。
•
TVALID がアサー ト さ れた場合、 転送が終了 し た後にのみデ ィ アサー ト で き ます (TREADY は High にサンプ リ ン グ さ れま
す)。 転送は取 り 消 し た り 、 中止 し た り で き ない可能性があ り ます。
•
TVALID がアサー ト さ れ る と 、 同 じ チ ャ ネルのそれ以外の信号 (TREADY 以外) の値は転送が終了す る (TREADY のアサー
ト 後のサ イ ク ル) ま で変化 し ません。
•
TREADY は TVALID のアサー ト 前、 アサー ト 中ま たはアサー ト 後のサ イ ク ルでアサー ト で き ます。
•
TVALID のアサー ト は、 TREADY の値には依存 し ませんが、 TREADY のアサー ト は、 TVALID の値には依存す る こ と があ
り ます。
•
マ ス タ ーお よ びス レーブ
り ます。
°
°
イ ン タ ーフ ェ イ ス の両方で入力お よ び出力信号間に組み合わせパ ス がない よ う にす る 必要があ
AXI4-Stream IP に適用 さ れます。 つま り 、 TREADY ス レーブ出力は TVALID ス レーブ入力か ら 組み合わせて生成で き
ません。 TVALID で認証 さ れたデー タ を即座に受信可能な ス レーブは、 デー タ を受信する ま でその TREADY 信号をプ
レ アサー ト す る 必要があ り ます。 ま たは、 TREADY に レ ジ ス タ を付けて、 TVALID アサー ト の次のサ イ ク ルを駆動す
る こ と も で き ます。
デフ ォ ル ト のデザ イ ン規則では、 ス レーブは TREADY を独立 し て駆動する か、 TREADY をプ レ アサー ト し て、 レ イ
テ ン シ を最小限に抑え る 必要があ り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
90
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
°
入力信号 と 出力信号間の組み合わせパ スは別々の AXI4-Stream チ ャ ネル間で使用で き ますが、 同 じ イ ン タ ーフ ェ イ ス
(一緒に動作す る チ ャ ネルの関連グループ) に属す る 複数チ ャ ネルには、 入力信号お よ び出力信号間に組み合わせパ ス
を使用す る べ き ではあ り ません。
•
該当す る チ ャ ネルでは、 TREADY を除いてすべての信号が ソ ース (通常はマ ス タ ー ) か ら デス テ ィ ネーシ ョ ン (通常は ス
レーブ) ま で伝搬 さ れ ます。 それ以外の反対方向へ伝搬す る 必要のあ る 情報伝達信号ま たは制御信号は、 すべて別のチ ャ
ネルの一部 (別の TREADY/TVALID ハン ド シ ェ イ ク を使用 し たバ ッ ク チ ャ ネル) であ る か、 帯域外信号 (ハン ド シ ェ イ ク 以
外) のいずれかであ る 必要があ り ます。 ス レーブか ら マ ス タ ーへの反対方向への情報の転送には、 TREADY を使用する べ
き ではあ り ません。
•
AXI4-Stream では、 TREADY が削除で き ます (デフ ォ ル ト の値は 1)。 こ れに よ り 、 TREADY を生成す る IP での相互運用に
制限が出 る こ と があ り ます。 AXI4-Stream マ ス タ ーは前方向の フ ロ ー制御 (TVALID) にのみ接続で き ます。
System Generator での AXI4‐Stream ブ ロ ッ ク
AXI4-Stream イ ン タ ーフ ェ イ ス を含む System Generator ブ ロ ッ ク は、 AXI4 と い う 名前の付いた Xilinx Blockset ラ イ ブ ラ リ にあ
り ます。 こ の ラ イ ブ ラ リ のブ ロ ッ ク は、 通常の (AXI4-Stream 以外の) ブ ロ ッ ク と は、 記述がわずかに違っ てい ます。
ポー ト グループ
AXI4-Stream イ ン タ ーフ ェ イ ス を提供す る ブ ロ ッ ク では、 AXI4-Stream チ ャ ネルが ま と め ら れ色分け さ れてい ます。 た と えば、
上記の DDS Compiler 5.0 ブ ロ ッ ク では、 一番上の入力ポー ト の data_tready と 2 出力ポー ト の data_tvalid お よ び data_tdata が同
じ AXI4-Stream チ ャ ネルにあ り ます。 phase_tready、 phase_tvalid、 phase_tdata も 同 じ チ ャ ネルにあ り ます。
AXI4-Stream チ ャ ネルには含まれない信号は、 ブ ロ ッ ク と 同 じ 背景色で表示 さ れます。 rst はその例です。
ポー ト 名の短縮
次の例では、 AXI4-Stream 信号の名前が短縮 さ れ、 ブ ロ ッ ク で読みやす く な っ てい ます。 名前の短縮はあ く ま で表記上の も の
で、 ネ ッ ト リ ス ト では完全な AXI4-Stream 名が使用 さ れます。 名前の短縮はデフ ォ ル ト でオンにな り ますが、 ブ ロ ッ ク のパ ラ
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
91
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス の [Display shortened port names] を オ フ に し てその完全名を表示 さ せ る よ う にす る こ と も で き ま
す。
マルチチ ャ ネル TDATA の分割
AXI4-Stream では、 TDATA に複数チ ャ ネルのデー タ を含め る こ と がで き ます。 System Generator では、 TDATA のチ ャ ネルが分
割 さ れます。 た と えば、 次の dout ポー ト の TDATA には、 現実 と 仮想の コ ン ポーネ ン ト の両方が含まれます。
マルチチ ャ ネル TDATA を分割 し て も デザ イ ンに ロ ジ ッ ク は追加 さ れません。 こ れはユーザーの都合を考え て System Generator
で分割 さ れます。 分割 さ れた TDATA ポー ト のデー タ も 正 し く バ イ ト ア ラ イ メ ン ト さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
92
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
AXI‐Lite イ ン タ ー フ ェ イ ス生成
概要
System Generator を使用 し て開発 し たデザ イ ン モジ ュ ールは、通常 よ り 大 き な DSP ま たは Vivado シ ス テ ムのサブシ ス テ ム を形
成 し ます。 こ れ ら の System Generator モジ ュ ールは、 通常 MATLAB/Simulink の よ う な視覚上優れた環境で作成す る のが最適な
演算お よ びデー タ パ ス の多いモジ ュ ールです。 よ り 大 き なシ ス テ ムは、通常 Vivado IP カ タ ロ グの IP か ら アセ ンブル さ れます。
こ れ ら の IP は、標準ス ト リ ーム を使用 し 、AXI4-Lite の よ う な イ ン タ ーフ ェ イ ス を制御 し ます。 よ り 大 き なシ ス テ ムでは、Vivado
IP イ ン テ グ レー タ ーの よ う な ツールを使用 し て アセ ンブル さ れます。
こ こ では、 System Generator モジ ュ ール用に標準 AXI4-Lite イ ン タ ーフ ェ イ ス を作成 し 、 後で IP イ ン テ グ レー タ ーを使用 し て
大型デザ イ ンに含め る ためにそのモジ ュ ールを Vivado IP カ タ ロ グにエ ク ス ポー ト す る 機能について説明 し ます。
System Generator での AXI4‐Lite イ ン タ ー フ ェ イ ス合成
デザ イ ン 作成お よ び検証は、 AXI4-Lite イ ン タ ー フ ェ イ ス を 含 ま な い System Generator デザ イ ン と ま っ た く 同 じ です。 次の
example_dds デザ イ ンについて説明 し ます。
こ のデザ イ ンには DDS Compiler が含まれ、出力周波数を制御す る ために 2 つの入力、 phase_valid お よ び phase_data が使用 さ れ
ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
93
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
こ のデザ イ ンのシ ミ ュ レーシ ョ ン結果は次の よ う にな り 、 出力周波数が徐々に増加 し てい る のがわか り ます。
AXI4‐Lite イ ン タ ー フ ェ イ ス用デザイ ンの コ ン フ ィ ギ ュ レーシ ョ ン
example_dds デザ イ ンでは、 Gateway In お よ び Gateway Out ブ ロ ッ ク に よ り 、 Simulink デザ イ ンのサ イ ク ルお よ びビ ッ ト 精度の
正確な FPGA 部分のバ ウ ン ダ リ がマー ク さ れ ま す。 DDS Compiler の周波数は、 Gateway In の出力ポー ト (phase_valid お よ び
phase_data) に接続 さ れた信号に正 し い値を挿入す る こ と で制御で き ます。 こ れには、 次の phase_valid ブ ロ ッ ク の例で示す よ う
に [Interface] オプシ ョ ン を変更 し ます。
ご覧の よ う に、 System Generator for DSP デザ イ ン では [Interface] が ス レーブ AXI4-Lite イ ン タ ーフ ェ イ ス に指定 さ れてい る の
で、 最上位 イ ン タ ーフ ェ イ ス に変換 さ れます。
次のオプシ ョ ン を使用す る こ と も で き ます。
[Auto assign address offset] (オン) : 各 Gateway が AXI4-Lite イ ン タ ーフ ェ イ ス内の レ ジ ス タ に接続 さ れ、 AXI4-Lite イ ン タ ーフ ェ
イ ス にマ ッ プ さ れた異な る Gateway In の番号に基づいて、 ア ド レ ス オ フ セ ッ ト の自動割 り 当てが実行 さ れ る よ う に指定 し ま
す。 ア ド レ ス は、 32 ビ ッ ト デー タ 幅にバ イ ト でア ラ イ メ ン ト さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
94
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
[Address offset] (オ フ) : こ のオプシ ョ ンは、 [Auto assign address offset] がオ フ の場合にのみオ ン にで き る よ う にな り ます。 こ れ
に よ り 、 ユーザーがア ド レ ス オ フ セ ッ ト を手動で上書 き で き る よ う にな り ます。
[Description] : こ こ に入力 し た情報は、デザ イ ンが Vivado IP カ タ ロ グにエ ク ス ポー ト さ れ る と 自動的に作成 さ れ る イ ン タ ーフ ェ
イ ス の資料に含まれます。
その他の Gateways も 同 じ 方法で コ ン フ ィ ギ ュ レーシ ョ ン さ れます。
Vivado IP イ ン テグ レー タ ーで使用する ためのデザイ ンのパ ッ ケージ
System Generator での検証が終了 し たので、 デザ イ ン を IP イ ン テ グ レー タ ーで使用で き る よ う にパ ッ ケージ し ます。
まず、 [Compilation] を [IP Catalog] に設定 し ます。 こ れに よ り 、 System Generator か ら 作成 さ れたすべてのハー ド ウ ェ ア ソ ース
(RTL + IP + 制約) が IP に ま と め ら れます。
[Part] は Avnet MicroZed ボー ド で使用可能なパーツ と 同 じ にな り ます。 ま た、 System Generator ト ー ク ンの [Settings] ボ タ ン を使
用 し て も IP に含まれ る 情報を変更で き ます。 こ の場合、 次に示すデフ ォ ル ト 値が使用 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
95
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
System Generator ト ー ク ンの GUI で [Generate] ボ タ ン を ク リ ッ ク す る と 、 RTL + IP + 制約が ま と め ら れて、 パ ッ ケージが作成 さ
れます。
生成結果の詳細 前述の System Generator 設定に基づいて、 次のフ ォ ルダーお よ びフ ァ イ ルが作成 さ れます。
1.
<target directory>/ip : こ のデ ィ レ ク ト リ には、IP 関連のハー ド ウ ェ ア フ ァ イ ルお よ び ソ フ ト ウ ェ ア ド ラ イ バーが含まれま
す。 IP カ タ ロ グに追加す る 必要があ る のは こ のデ ィ レ ク ト リ です。
2.
<target directory>/ip_catalog : こ のデ ィ レ ク ト リ には example_dds.xpr と い う Vivado IDE プ ロ ジ ェ ク ト のサンプルが含まれ
ます。
単一の AXI4‐Lite イ ン タ ー フ ェ イ スへのマ ッ プ
AXI4-Lite レ ジ ス タ と し て タ グ付け さ れた Gateway Ins お よ び Gateway Outs は、 次の回路図に示す よ う に、 メ モ リ マ ッ プ内の異
な る 32 ビ ッ ト レ ジ ス タ にマ ッ プ さ れます。
図に示す と お り 、 axi_lite_interface_example_dds と い う モ ジ ュ ールが RTL デザ イ ン に挿入 さ れ、 System Generator デザ イ ン の
phase_valid お よ び phase_data ポー ト を駆動 し ます。 最上位では、 ス レーブ AXI4-Lite イ ン タ ーフ ェ イ ス が使用 さ れ ます。 ア ド
レ ス デ コ ー ド が実行 さ れ、 phase_valid ま たは phase_data ポー ト がプ ロ セ ッ サか ら 取得 さ れた ア ド レ ス に基づいて駆動 さ れ る の
は、 こ のモジ ュ ール内です。
ア ド レ ス指定 (s_axi_araddr お よ び s_axi_awaddr) に必要な ビ ッ ト 数は、AXI4-Lite イ ン タ ーフ ェ イ ス レ ジ ス タ の数 と 各 AXI4-Lite
レ ジ ス タ のオ フ セ ッ ト 仕様に よ っ て決定 さ れます。 モジ ュ ール生成中には各レ ジ ス タ を別々にデコ ー ド す る のに十分な ビ ッ ト
が提供 さ れます。 こ の例の場合、 phase_data と phase_valid と い う 2 つのゲー ト ウ ェ イ があ り 、 各ポー ト がア ド レ ス オ フ セ ッ ト
0x0000 お よ び 0x0004 を割 り 当て ます。 こ の結果、 3 つのア ド レ ス ビ ッ ト がア ロ ケー ト さ れます。
ア ド レ ス生成
自動ア ド レ ス生成プ ロ セ ス では、 次が前提 と な り ます。
1.
各 AXI4-Lite はそれぞれ独自のア ド レ ス オ フ セ ッ ト に関連付け ら れ、 それが 32 ビ ッ ト ワー ド バ ウ ン ダ リ (た と えば 4 の
倍数) にア ラ イ メ ン ト さ れます。
2.
ア ド レ ス は 0 か ら 始ま り ます。
3.
ア ド レ ス は、 ゲー ト ウ ェ イ の辞書順に イ ン ク リ メ ン タ ルに割 り 当て ら れます。 2 つのゲー ト ウ ェ イ に同 じ 名前が付いてい
る 場合、 任意の名前が付 き ます。
4.
すべての AXI4-Lite のゲー ト ウ ェ イ の幅は 32 ビ ッ ト 未満に し ておかない と 、 エ ラ ーが発生 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
96
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
5.
AXI4-Lite のゲー ト ウ ェ イ の幅が 32 ビ ッ ト 未満であれば、 内部レ ジ ス タ か ら LSB が DUT (Design Under Test) 内に割 り 当て
ら れます。
6.
次は、 ユーザーの指定 し たオ フ セ ッ ト ア ド レ ス を管理す る ために使用 さ れ る 条件です。
a.
すべてのユーザー指定のア ド レ ス は、 自動ア ロ ケーシ ョ ンの前に AXI4-Lite のゲー ト ウ ェ イ にア ロ ケー ト さ れます。
b.
ユーザー指定のア ド レ ス の 2 つが同 じ 場合、 生成中にのみエ ラ ーが発生 し ます (それ以外の場合は無視 さ れます)。
c.
残 り の AXI4-Lite のゲー ト ウ ェ イ でア ド レ ス が自動的にア ロ ケー ト さ れ る よ う に設定 さ れてい る 場合、 System
Generator はユーザー指定のア ド レ ス に よ っ て残 さ れた穴を埋め よ う と し ます。
Vivado IDE サン プル プ ロ ジ ェ ク ト の特徴
Vivado IDE サンプル プ ロ ジ ェ ク ト (example_dds.xpr) を使用す る と 、 System Generator か ら 作成 さ れた IP を使用す る 方法を簡単
に理解で き る よ う にな っ てい ます。 こ のプ ロ ジ ェ ク ト は、 次の よ う に コ ン フ ィ ギ ュ レーシ ョ ン さ れてい ます。
1.
System Generator か ら 生成 さ れた IP が既にプ ロ ジ ェ ク ト に関連付け ら れた IP カ タ ロ グに追加 さ れてお り 、RTL フ ロ ーお よ
び IP イ ン テ グ レー タ ー ベース フ ロ ーで使用で き る よ う にな っ てい ます。
2.
デザ イ ンには、 example_dds_0 と い う RTL で イ ン ス タ ン シエーシ ョ ン さ れた IP のほか、 その よ う な IP を RTL フ ロ ーで ど
の よ う に イ ン ス タ ン シエー ト す る か を示 し た example_dds_stub が含まれます。
3.
デザ イ ンには、同 じ IP を RTL フ ロ ーに イ ン ス タ ン シエー ト する ために、example_dds_tb と い う テ ス ト ベンチが含まれます。
4.
こ の例の場合、 Zynq パーツが選択 さ れてい る ので、 サンプルの IP イ ン テ グ レー タ ーの図には Zynq サブシ ス テ ムが含まれ
ます。 その他すべてのパーツ には、 MicroBlaze ベース のサブシ ス テ ムが作成 さ れます。
5.
選択 さ れたパーツ がサポー ト さ れ る ボー ド の 1 つ と 同 じ であれば、 プ ロ ジ ェ ク ト は同 じ パーツ設定の最初のボー ド に設定
さ れます。
6.
ブ ロ ッ ク デザ イ ン を イ ン ス タ ン シエー ト す る ラ ッ パーが作成 さ れ、 Top と し て設定 さ れます。
ま た、 IP に関する イ ン タ ーフ ェ イ ス資料が各ブ ロ ッ ク の GUI か ら 入手で き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
97
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
こ の資料は、 GUI で System Generator IP を ダブル ク リ ッ ク し 、 ダ イ ア ロ グ ボ ッ ク ス で [Documentation] を ク リ ッ ク す る と 入手で
き ます。 こ れに よ り 、 次の よ う な資料が開 き ます。
こ の資料の一番下ま で ス ク ロ ールダ ウ ンす る と 、 こ の フ ロ ーに特に関係す る 「Memory Map」 セ ク シ ョ ンがあ り ます。
こ の Memory Map の表の [Description] 列は、 該当す る Gateway In ブ ロ ッ ク に入力 さ れた文字列に対応 し てい ます。
ソ フ ト ウ ェ ア ド ラ イバー
ベア メ タ ル ソ フ ト ウ ェ ア ド ラ イ バーは、 ゲー ト ウ ェ イ に割 り 当て ら れた ア ド レ ス オ フ セ ッ ト に基づいて作成 さ れます。 こ れ
ら の ド ラ イ バーは、 <target_directory>/ip/drivers と い う フ ォ ルダーに保存 さ れ ます。 こ れ ら の ド ラ イ バーを使用す る には、 SDK
検索パス に <target_directory>/ip を追加す る 必要があ り ます。
AXI4-Lite イ ン タ ーフ ェ イ ス にマ ッ プ さ れた Gateway In それぞれに対 し て、 次の 2 つの API が作成 さ れます。
/**
* Write to <Gateway In id> of <design name>.Assignments are LSB-justified.
*
* @paramInstancePtr is the <Gateway In id> instance to operate on.
* @paramData is value to be written to gateway <Gateway In id>.
*
* @returnNone.
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
98
第 4 章 : System Generator を使用 し たハー ド ウ ェ ア設計
*
* @note
<Text from Description control of the Gateway In GUI>
*
*/
void <Gateway In id>_write(example_dds *InstancePtr, u32 Data);
/**
* Read from <Gateway In id> of <design name>.Assignments are LSB-justified.
*
* @paramInstancePtr is the phase_valid instance to operate on.
*
* @returnu32
*
* @note
Phase Valid Port That Must Be Asserted.
*
*/
u32 <Gateway In id>_read(example_dds *InstancePtr);
<Gateway In id> : <design_name>_<gateway_name> の <design_name> はデザ イ ンの VHDL/Verilog 最上位名で <gateway_name> は
ゲー ト ウ ェ イ の省略名にな り ます。
Gateway Outs では同 じ よ う な ド ラ イ バーが生成 さ れますが、 読み出 し 専用にな り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
99
第 5章
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
概要
System Generator には、 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの機能が含まれ、 FPGA で実行 さ れ る デザ イ ン を直接 Simulink シ ミ ュ レーシ ョ ンに読み込む こ と がで き ます。[Hardware Co-Simulation] コ ンパ イ ル オプシ ョ ン を選択 し て コ
ンパ イ ルす る と 、 ビ ッ ト ス ト リ ームが自動的に作成 さ れ、 ブ ロ ッ ク に関連付け ら れます。 デザ イ ンが Simulink でシ
ミ ュ レーシ ョ ン さ れ る と 、 その コ ンパ イ ル さ れた部分の結果はハー ド ウ ェ アで計算 さ れます。 こ れに よ り 、 コ ンパ イ
ル さ れ た部分が実際のハー ド ウ ェ ア で テ ス ト で き る ので、 シ ミ ュ レ ーシ ョ ン 時間がか な り 速 く な り ま す。 System
Generator では現在の と こ ろ次のボー ド がサポー ト さ れます。
表 5‐1 : System Generator ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンのボー ド サポー ト
デバイ ス フ ァ ミ リ
ボー ド
サポー ト
Artix-7
AC701
JTAG
Kintex-7
KC705
• JTAG
• ポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト
Virtex-7
VC707
• JTAG
• ポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト
Zynq-7000
ZC702
ZC706
• JTAG
• JTAG
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンへの M コ ー ド ア ク セス
MATLAB M コ ー ド (M-Hwcosim) を使用す る と 、 System Generator ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン フ ロ ーで
作成 さ れたハー ド ウ ェ ア をプ ロ グ ラ ム制御で き ます。 M-Hwcosim イ ン タ ーフ ェ イ ス では、 ハー ド ウ ェ アに対す る MATLAB オブジ ェ ク ト が Simulink の フ レーム ワ ー ク と は別に、 純粋な M コ ー ド で作成で き ます。 こ れで、 こ れ
ら のオブジ ェ ク ト がハー ド ウ ェ アへ読み出 し お よ び書 き 込みがで き る よ う にな り ます。 こ の機能に よ り 、 ハー ド ウ ェ
ア協調シ ミ ュ レーシ ョ ンに ス ク リ プ ト イ ン タ ーフ ェ イ ス を含め る こ と がで き る ので、ハー ド ウ ェ アが ス ク リ プ ト 記述
さ れた テ ス ト ベンチで使用で き た り 、 ハー ド ウ ェ ア を M コ ー ド でハー ド ウ ェ ア加速 と し て開発 し た り で き ます。
こ の詳細は、 『Vivado Design Suite リ フ ァ レ ン ス ガ イ ド : System Generator を使用 し たモデル ベース の DSP デザ イ ン』
(UG958) の
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
100
第 5 章 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
ハー ド ウ ェ ア ボー ド のイ ン ス ト ール
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行す る には、まずハー ド ウ ェ ア ボー ド を イ ン ス ト ール し て設定す る 必要があ
り ます。 次では、 ザ イ リ ン ク ス のサポー ト す る ボー ド の イ ン ス ト ールお よ び設定方法について説明 し ます。
JTAG ベースのハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン
JTAG ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン用の KC705 ボー ド の イ ン ス ト ール
ポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア協調シ ミ ュ
レーシ ョ ン
PC での ロ ーカル エ リ ア ネ ッ ト ワ ー ク の設定
Linux でのポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン
ポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンのための KC705 ボー ド の イ ン ス ト ール
ポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンのための VC705 ボー ド の イ ン ス ト ール
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン用のモデルの コ
ンパイル
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンは、 System Generator モデル ま たはハー ド ウ ェ アで実行す る サブシ ス テ ム か ら 開
始 し ます。 モデルはハー ド ウ ェ ア ボー ド の要件を満た し ていれば、 協調シ ミ ュ レーシ ョ ンで き ます。 こ のモデルには
System Generator ト ー ク ン を含め る 必要があ り ます。 こ のブ ロ ッ ク では、モデルのハー ド ウ ェ アへの コ ンパ イ ル方法が
定義 さ れてい ます。 フ ロ ーでは、 まず [System Generator] ダ イ ア ロ グ ボ ッ ク ス を開いて、 [Compilation] か ら コ ンパ イ
ル タ イ プ を選択 し ます。
System Generator ト ー ク ンの使用方法については、 System Generator ト ー ク ン を使用 し た コ ンパ イ ル と シ ミ ュ レーシ ョ
ン を参照 し て く だ さ い。
コ ンパイル タ ーゲ ッ ト の選択
[System Generator] ダ イ ア ロ グ ボ ッ ク ス で適切な コ ンパ イ ル タ イ プ を選択す る と 、 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ
ン ボー ド を選択で き ます。 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン タ ーゲ ッ ト は、 ダ イ ア ロ グ ボ ッ ク ス の [Compilation]
フ ィ ール ド の [Hardware Co-Simulation] メ ニ ュ ーの下に分類 さ れます。
コ ンパ イ ル タ ーゲ ッ ト を選択す る と 、 [System Generator] ダ イ ア ロ グ ボ ッ ク ス の フ ィ ール ド がその タ ーゲ ッ ト に合わ
せて自動的に設定 さ れます。 System Generator は各 コ ンパ イ ル タ ーゲ ッ ト のダ イ ア ロ グ ボ ッ ク ス の設定を記録 し てい
ます。 こ れ ら の設定は、 新 し い タ ーゲ ッ ト を選択す る と 保存 さ れ、 元の タ ーゲ ッ ト を呼び戻す と 復元 さ れます。
コ ー ド ジ ェ ネ レー タ ーの起動 コ ー ド ジ ェ ネ レー タ ーは、 [System Generator] ダ イ ア ロ グ ボ ッ ク ス の [Generate] ボ タ ン を ク リ ッ ク す る と 起動 し ます。
コ ー ド ジ ェ ネ レー タ ーでは、ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンに合わせてデザ イ ンの FPGA コ ン フ ィ ギ ュ レーシ ョ
ン ビ ッ ト ス ト リ ーム が生成 さ れ ます。 System Generator では、 コ ンパ イ ル プ ロ セ ス中にモデルに対す る HDL お よ び
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
101
第 5 章 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
ネ ッ ト リ ス ト フ ァ イ ルが生成 さ れ る だけでな く 、 FPGA コ ン フ ィ ギ ュ レーシ ョ ン フ ァ イ ルを生成す る のに必要な ダ
ウ ン ス ト リ ーム ツール も 実行 さ れます。
注記 : [Generate] ボ タ ン を ク リ ッ ク する と 、 ス テー タ ス を示すダ イ ア ロ グ ボ ッ ク ス が表示 さ れます。 コ ンパ イ ル中は、
[Cancel] お よ び [Show Details] ボ タ ン が表示 さ れ ます。 [Cancel] ボ タ ン を ク リ ッ ク す る と 、 コ ンパ イ ルが停止 し ます。
[Show Details] ボ タ ン を ク リ ッ ク す る と 、実行中に コ ンパ イ ルの各段階に関す る 詳細が表示 さ れます。ダ イ ア ロ グ ボ ッ
ク ス の [Hide Details] ボ タ ン を ク リ ッ ク す る と 、 コ ンパ イ ルの詳細を非表示にで き ます。
コ ン フ ィ ギ ュ レーシ ョ ン ビ ッ ト ス ト リ ームには、 モデルに関連 し たハー ド ウ ェ アが含まれ る ほか、 ボー ド お よ び PC
間の物理的 イ ン タ ーフ ェ イ ス を使用 し て、 System Generator でデザ イ ン と 通信がで き る よ う にす る イ ン タ ーフ ェ イ ス
ロ ジ ッ ク も 追加で含ま れます。 こ の ロ ジ ッ ク には、 メ モ リ マ ッ プ イ ン タ ーフ ェ イ ス が含まれ、 System Generator でデ
ザ イ ンの入力ポー ト お よ び出力ポー ト に値を読み出 し お よ び書 き 込みがで き ます。 ま た、 FPGA ボー ド を タ ーゲ ッ ト
にす る 際に必要なボー ド 特有の回路 も 含まれます。
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク
デザ イ ンが FPGA ビ ッ ト ス ト リ ームに コ ンパ イ ル さ れた ら 、 System Generator で新 し いハー ド ウ ェ ア協調シ ミ ュ レー
シ ョ ン ブ ロ ッ ク が自動的に作成 さ れ、 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク を格納す る ための Simulink ラ イ
ブ ラ リ も 作成 さ れ ま す。 こ の段階 で は、 ラ イ ブ ラ リ か ら ブ ロ ッ ク を コ ピ ー し て、 ほ か の Simulink お よ び System
Generator ブ ロ ッ ク と 同様、 System Generator デザ イ ンで使用で き ます。
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク は、接続元のモデルの外部 イ ン タ ーフ ェ イ ス ま たはサブシ ス テ ム を推測
し ます。 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク のポー ト 名は元のサブシ ス テ ムのポー ト 名 と 同 じ にな り ます。
ポー ト タ イ プお よ びレー ト も 元のデザ イ ン と 同 じ にな り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
102
第 5 章 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク は、ほかのブ ロ ッ ク と 同 じ よ う に Simulink デザ イ ンで使用 さ れます。シ
ミ ュ レーシ ョ ン中、ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク は FPGA ボー ド と 通信 し て、デバ イ ス コ ン フ ィ ギ ュ
レーシ ョ ン、 デー タ 転送、 ク ロ ッ ク 供給な ど の タ ス ク を自動化 し ます。 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク
は、ほかの System Generator ブ ロ ッ ク が使用する の と 同 じ 型の信号を消費お よ び生成 し ます。値がブ ロ ッ ク の入力ポー
ト の 1 つに書 き 込まれ る と 、 ブ ロ ッ ク か ら 対応す る デー タ がハー ド ウ ェ アの該当箇所に送信 さ れます。 同様に、 出力
ポー ト で イ ベン ト があ る と 、 ブ ロ ッ ク はハー ド ウ ェ アか ら デー タ を取 り 出 し ます。
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク は、 ザ イ リ ン ク ス の固定小数点型、 Simulink の固定小数点型、 ま たは
Simulink の倍精度 (double) 型の信号で駆動可能です。出力ポー ト は、駆動す る ブ ロ ッ ク に適 し た信号型を推測 し ます。
出力ポー ト が System Generator ブ ロ ッ ク に接続 さ れ る と 、 出力ポー ト か ら はザ イ リ ン ク ス固定小数点型の信号が出力
さ れます。 ポー ト が Simulink ブ ロ ッ ク を直接駆動する 場合は、 Simulink デー タ 型の信号が出力 さ れます。
注記 : Simulink デー タ 型がブ ロ ッ ク 信号型 と し て使用 さ れ る と 、 入力デー タ の量子化は丸めに よ っ て処理 さ れ、 オー
バーフ ロ ーは飽和に よ っ て処理 さ れます。
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク には、 その他の System Generator ブ ロ ッ ク と 同様、 パ ラ メ ー タ ー ダ イ ア
ロ グ ボ ッ ク ス があ り 、さ ま ざ ま な設定で コ ン フ ィ ギ ュ レーシ ョ ンで き る よ う にな っ てい ます。ハー ド ウ ェ ア協調シ ミ ュ
レーシ ョ ン ブ ロ ッ ク のパ ラ メ ー タ ーは、 ブ ロ ッ ク が イ ン プ リ メ ン ト さ れ る FPGA ボー ド に よ っ て異な り ます (FPGA
ボー ド ご と にそれぞれカ ス タ マ イ ズ さ れたハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク が提供 さ れてい ます)。
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンのク ロ ッ ク
ク ロ ッ ク モー ド
System Generator ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク を関連する FPGA ハー ド ウ ェ ア と 同期す る 方法は複数
あ り ます。 シ ン グル ス テ ッ プ ク ロ ッ ク モー ド では、 FPGA に Simulink か ら ク ロ ッ ク が供給 さ れ、 フ リ ー ラ ン ニ ン グ
ク ロ ッ ク モー ド の場合は、 内部 ク ロ ッ ク が使用 さ れ、 Simulink がハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク を起
動す る と 非同期にサンプ リ ン グ さ れます。
注記 : 現在の と こ ろ、 シ ン グル ス テ ッ プ ク ロ ッ ク モー ド だけがサポー ト さ れてい ます。
シ ングル ス テ ッ プ ク ロ ッ ク
シ ン グル ス テ ッ プ ク ロ ッ ク モー ド では、 ハー ド ウ ェ アが ソ フ ト ウ ェ ア シ ミ ュ レーシ ョ ン と 足並みを揃えた ま ま にな
り ます。 こ れは、 各シ ミ ュ レーシ ョ ン サ イ ク ルでハー ド ウ ェ アに 1 つの ク ロ ッ ク パルス (FPGA が入力/出力に対 し て
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
103
第 5 章 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
オーバー ク ロ ッ ク の場合は複数 ク ロ ッ ク パルス) を提供す る と 実現で き ます。 こ のモー ド の場合、 ハー ド ウ ェ ア協調
シ ミ ュ レーシ ョ ン ブ ロ ッ ク は元のモデルに対 し て ビ ッ ト 単位お よ びサ イ ク ル単位で準拠 し ます。
ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク は、Simulink が起動す る 場合にのみ FPGA ハー ド ウ ェ アの ク ロ ッ ク 信号
を生成す る ので、 残 り の Simulink モデルのシ ミ ュ レーシ ョ ン に関す る オーバーヘ ッ ド 、 お よ び Simulink と FPGA 間
の通信オーバーヘ ッ ド (バ ス レ イ テ ン シ な ど) に よ り 、 ハー ド ウ ェ アで達成 さ れ る パフ ォ ーマ ン ス はかな り 制限 さ れ
ます。 大ま かには、 FPGA 内の計算量が通信オーバーヘ ッ ド に対 し て多い限 り ( ロ ジ ッ ク の量が多い、 ま たはハー ド
ウ ェ アがかな り オーバー ク ロ ッ ク の場合な ど)、 ハー ド ウ ェ アに よ り シ ミ ュ レーシ ョ ン速度はかな り 上昇 し ます。
注記 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク で使用可能な ク ロ ッ ク オプシ ョ ンは、使用 さ れ る FPGA ボー ド に
よ っ て異な り ます (フ リ ー ラ ン ニ ン グ ク ロ ッ ク ソ ース がサポー ト さ れないボー ド の場合は、 ダ イ ア ロ グ ボ ッ ク ス に
オプシ ョ ンは表示 さ れません)。
JTAG ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン用の KC705 ボー ド のイ ン ス ト ール
次では、 K705 ボー ド で JTAG ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行す る のに必要なハー ド ウ ェ アお よ び ソ フ ト
ウ ェ アの イ ン ス ト ールお よ び設定方法を説明 し ます。
必要なハー ド ウ ェ ア
1.
ザ イ リ ン ク ス Kintex®-7 KC705 ボー ド には、 次が含まれます。
a.
Kintex-7 KC705 ボー ド
b.
KC705 キ ッ ト に含まれ る 12V 電源
c.
Micro USB-JTAG ケーブル
ホス ト PC への Vivado Design Suite のイ ン ス ト ール
次のマニ ュ アルで説明 さ れてい る よ う に、 ホ ス ト PC へザ イ リ ン ク ス Vivado® Design Suite を イ ン ス ト ール し ます。
『ザ イ リ ン ク ス デザ イ ン ツール : イ ン ス ト ールお よ び ラ イ セ ン ス ガ イ ド 』 (UG798)
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
104
第 5 章 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
KC705 ボー ド の設定
次の図は、 こ の JTAG 設定に必要な KC705 コ ン ポーネ ン ト を示 し てい ます。
JTAG ?????
??????
LED
???????
1.
KC705 ボー ド を図の よ う に並べます。
2.
ボー ド の右上の電源ス イ ッ チが OFF にな っ てい る こ と を確認 し ます。
3.
Micro USB-JTAG ケーブルの小 さ い終端を JTAG ソ ケ ッ ト に接続 し ます。
4.
Micro USB-JTAG ケーブルの大 き い終端を PC の USB ソ ケ ッ ト に接続 し ます。
5.
AC 電源 コ ー ド を電源に接続 し ます。 電源ア ダプ タ ー ケーブルを KC705 ボー ド にプ ラ グ イ ン し ます。 電源を AC
電源にプ ラ グ イ ン し ます。
6.
KC705 ボー ド の電源ス イ ッ チを OFF に し ます。
7.
Simulink の GUI で [Run] ボ タ ン を ク リ ッ ク し て、 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を開始 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
105
第 5 章 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
ポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア
協調シ ミ ュ レーシ ョ ン
PC でのロー カル エ リ ア ネ ッ ト ワー ク の設定
イ ーサネ ッ ト のポ イ ン ト ツー ポ イ ン ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの場合、 PC に 10/100 高速 イ ーサネ ッ ト
ま たはギガ ビ ッ ト イ ーサネ ッ ト ア ダプ タ ーが必要です。 設定を コ ン フ ィ ギ ュ レーシ ョ ンす る には、 次を実行 し て く
だ さ い。
[ス タ ー ト ] メ ニ ュ ーか ら コ ン ト ロ ール パネルを開いて、 [ネ ッ ト ワ ー ク と 共有セ ン タ ー ] → [ア ダプ タ ーの設定の変更
] を ク リ ッ ク し ます。
[Local Area Connection] を右 ク リ ッ ク し て [プ ロ パテ ィ ] を ク リ ッ ク し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
106
第 5 章 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
次の図の よ う に [ イ ン タ ーネ ッ ト プ ロ ト コ ル バージ ョ ン 4 (TCP/IPv4)] を オ ンに し ます。 それ以外はすべてオ フ に し
ます。
次に [ イ ン タ ーネ ッ ト プ ロ ト コ ル バージ ョ ン 4 (TCP/IPv4)] を選択 し ます。[プ ロ パテ ィ ] を ク リ ッ ク し て [IP ア ド レ ス
] を 192.168.1.11 に、 [サブネ ッ ト マ ス ク ] を 255.255.255.0 に設定 し 、 [OK] を ク リ ッ ク し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
107
第 5 章 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
[構成] を ク リ ッ ク し ま す。 [詳細設定] タ ブ を ク リ ッ ク し ま す。 [Flow Control] を ク リ ッ ク し ま す。 値 を [Rx and Tx
Enabled] に設定 し ます。
最後に[Speed and Duplex] を ク リ ッ ク し て値を [Auto Negotiation] に設定 し 、 [OK] ボ タ ン を ク リ ッ ク し ます。
Linux でのポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア協
調シ ミ ュ レーシ ョ ン
Linux でポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行す る には、 Linux マシ ン で
sudo ア ク セ ス が必要です。 System Generator は、 sudo ユーザー と し て起動す る 必要があ り ます。 複数のネ ッ ト ワー ク
イ ン タ ーフ ェ イ ス カー ド がマシ ンにない場合、 ネ ッ ト ワ ー ク ス イ ッ チを使用で き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
108
第 5 章 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
ポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア
協調シ ミ ュ レーシ ョ ンのための KC705 ボー ド のイ ン
ス ト ール
次は、 KC705 ボー ド のポ イ ン ト ツー ポ イ ン ト の イ ーサネ ッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行す る のに必
要なハー ド ウ ェ ア を イ ン ス ト ールお よ び コ ン フ ィ ギ ュ レーシ ョ ンす る 方法について説明 し ます。
必要なハー ド ウ ェ ア
1.
2.
3.
4.
5.
ザ イ リ ン ク ス KC705 ボー ド
ボー ド の電源
ホ ス ト PC 用の イ ーサネ ッ ト ネ ッ ト ワー ク イ ン タ ーフ ェ イ ス カー ド (NIC)
イ ーサネ ッ ト RJ45 Male/Male ケーブル.(ネ ッ ト ワー ク ま たは ク ロ ス オーバー ケーブルな ど)
ビ ッ ト ス ト リ ーム を ダ ウ ン ロ ー ド す る Digilent USB ケーブルま たは Platform USB ケーブル
KC705 ボー ド の設定
上記の図に示す よ う に、 次を実行 し ます。
1.
電力ケーブルを右に接続 し ます。 電源を AC 電源にプ ラ グ イ ン し ます。
2.
Digilent USB ケーブルを左上に、 も う 一方の先を ホ ス ト PC に接続 し ます。
3.
イ ーサネ ッ ト ケーブルを KC705 ボー ド の左下へ、 も う 一方の先を ホ ス ト PC に接続 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
109
第 5 章 : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用
ポ イ ン ト ツー ポ イ ン ト イ ーサネ ッ ト ハー ド ウ ェ ア
協調シ ミ ュ レーシ ョ ンのための VC705 ボー ド のイ ン
ス ト ール
次は、 VC705 ボー ド のポ イ ン ト ツー ポ イ ン ト の イ ーサネ ッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行す る のに必
要なハー ド ウ ェ ア を イ ン ス ト ールお よ び コ ン フ ィ ギ ュ レーシ ョ ンす る 方法について説明 し ます。
必要なハー ド ウ ェ ア
1.
2.
3.
4.
5.
ザ イ リ ン ク ス VC705 ボー ド
ボー ド の電源
ホ ス ト PC 用の イ ーサネ ッ ト ネ ッ ト ワー ク イ ン タ ーフ ェ イ ス カー ド (NIC)
イ ーサネ ッ ト RJ45 Male/Male ケーブル.(ネ ッ ト ワー ク ま たは ク ロ ス オーバー ケーブルな ど)
ビ ッ ト ス ト リ ーム を ダ ウ ン ロ ー ド す る Digilent USB ケーブルま たは Platform USB ケーブル
VC705 ボー ド の設定
上記の図に示す よ う に、 次を実行 し ます。
1.
電力ケーブルを右に接続 し ます。 電源を AC 電源にプ ラ グ イ ン し ます。
2.
Digilent USB ケーブルを左上に、 も う 一方の先を ホ ス ト PC に接続 し ます。
3.
イ ーサネ ッ ト ケーブルを VC705 ボー ド の左下へ、 も う 一方の先を ホ ス ト PC に接続 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
110
第 6章
HDL モ ジ ュ ールのイ ンポー ト
System Generator デザ イ ンに既存の HDL モジ ュ ールを追加す る こ と が重要な場合があ り ます。 System Generator Black
Box ブ ロ ッ ク を使用す る と 、 VHDL、 Verilog、 お よ び EDIF をデザ イ ンに追加で き ます。 Black Box ブ ロ ッ ク は、 ほか
のブ ロ ッ ク と 同様に、 デザ イ ン に接続 し 、 シ ミ ュ レ ーシ ョ ン に含め、 ハー ド ウ ェ ア に コ ン パ イ ル し ま す。 System
Generator で Black Box ブ ロ ッ ク を コ ンパ イ ルす る と 、 イ ン ポー ト さ れたモジ ュ ール と 関連の フ ァ イ ルが周囲のネ ッ ト
リ ス ト に接続 さ れます。 ブ ラ ッ ク ボ ッ ク スは、 System Generator ト ー ク ンの設定に基づいて、 同期 ク ロ ッ ク デザ イ ン
か複数ハー ド ウ ェ ア ク ロ ッ ク デザ イ ンのいずれか をサポー ト す る よ う に コ ン フ ィ ギ ュ レーシ ョ ンで き ます。
表 6‐1 :
Black Box イ ン タ ー フ ェ イ ス
ブ ラ ッ ク ボ ッ ク ス の HDL の要件
と 制限
ブ ラ ッ ク ボ ッ ク ス に関連す る VHDL、 Verilog、 EDIF に
対す る 要件 と 制限を説明 し ます。
ブラ ッ ク ボッ ク ス コンフ ィ ギュ
レーシ ョ ン ウ ィ ザー ド
ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド
の使用法を説明 し ます。
ブラ ッ ク ボ ッ ク スのコ ンフ ィ ギュ
レーシ ョ ン M 関数
ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン M 関数の作
成方法を説明 し ます。
HDL 協調シ ミ ュ レーシ ョ ン
HDL シ ミ ュ レー タ の設定
Black Box ブ ロ ッ ク の HDL に対 し て協調シ ミ ュ レーシ ョ
ン を 実行す る た め に、 Vivado® シ ミ ュ レ ー タ ま た は
ModelSim を設定する 方法を説明 し ます。
複数 ブ ラ ッ ク ボ ッ ク ス の 協調 シ
ミ ュ レーシ ョ ン
1 つの HDL シ ミ ュ レー タ セ ッ シ ョ ンで複数の Black Box
ブ ロ ッ ク に対 し て協調シ ミ ュ レ ーシ ョ ン を 実行す る 方
法を説明 し ます。
ブ ラ ッ ク ボ ッ ク スの HDL の要件 と 制限
ブ ラ ッ ク ボ ッ ク ス に関連す る HDL コ ン ポーネ ン ト は、 次の System Generator の要件お よ び制限をすべて満た し てい
る 必要があ り ます。
•
デザ イ ンのほかのエン テ ィ テ ィ 名 と は異な る 名前を付け ます。
•
双方向ポー ト は HDL ブ ラ ッ ク ボ ッ ク ス でサポー ト さ れますが、 System Generator ではポー ト と し て表示 さ れず、
ネ ッ ト リ ス ト 生成後の HDL でのみ表示 さ れます。
•
Verilog のブ ラ ッ ク ボ ッ ク ス では、 モジ ュ ール名お よ びポー ト 名は標準的な VHDL の命名規則に従 う よ う に し ま
す。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
111
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
•
ク ロ ッ ク ポー ト ま たは ク ロ ッ ク イ ネーブル ポー ト は必ず std_logic 型に し ます。 Verilog のブ ラ ッ ク ボ ッ ク ス で
は、 ポー ト はベ ク タ ーではない入力に し ます (input clk な ど)。
•
ブ ラ ッ ク ボ ッ ク ス HDL の ク ロ ッ ク ポー ト お よ び ク ロ ッ ク イ ネーブル ポー ト は、次の よ う に記述 し ます。ク ロ ッ
ク と ク ロ ッ ク イ ネーブルはペアで記述す る 必要があ り ます。 つま り 、 各 ク ロ ッ ク に対応す る ク ロ ッ ク イ ネーブ
ルが必要です。 ブ ラ ッ ク ボ ッ ク ス には、 複数の ク ロ ッ ク ポー ト を含め る こ と がで き 、 その ビヘ イ ビ アーはデザ
イ ンの コ ン テ キ ス ト に基づいて変わ り ます。
°
同期シ ン グル ク ロ ッ ク デザ イ ンの コ ン テ キ ス ト では、 各 ク ロ ッ ク ポー ト を駆動する のに 1 つの ク ロ ッ ク
ソ ース が使用 さ れます。 異な る のは、 ク ロ ッ ク イ ネーブルの レー ト のみです。
°
複数の独立ハー ド ウ ェ ア ク ロ ッ ク デザ イ ンの コ ン テ キ ス ト では、 ク ロ ッ ク ピ ンお よ び ク ロ ッ ク イ ネーブル
ピ ン を駆動す る のに 2 つの異な る ク ロ ッ ク ソ ース が使用 さ れます。
•
ク ロ ッ ク 名には clk (my_clk_1 な ど)、 ク ロ ッ ク イ ネーブル名には ce (my_ce_1 な ど) を含め ます。
•
ク ロ ッ ク イ ネーブルの名前は、 ク ロ ッ ク と 同 じ にす る 必要があ り ますが、 clk の部分は ce に し ます。 た と えば、
ク ロ ッ ク 名が src_clk_1 の場合、 ク ロ ッ ク イ ネーブル名は src_ce_1 にする 必要があ り ます。
•
立ち下が り エ ッ ジで ト リ ガー さ れ る 出力デー タ は使用で き ません。
ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ
ザー ド
System Generator には、 VHDL ま たは Verilog モジ ュ ールを Black Box ブ ロ ッ ク に関連付け る ための コ ン フ ィ ギ ュ レー
シ ョ ン ウ ィ ザー ド が含まれてい ます。 こ の ウ ィ ザー ド は、 イ ン ポー ト す る VHDL ま たは Verilog モジ ュ ールを解析 し
て コ ン フ ィ ギ ュ レーシ ョ ン M 関数を作成 し 、 こ の M 関数を モデルの Black Box ブ ロ ッ ク に関連付け ます。 コ ン フ ィ
ギ ュ レーシ ョ ン M 関数を使用で き る か ど う かは、 イ ン ポー ト す る HDL の複雑度に よ っ て決ま り ます。 ウ ィ ザー ド で
検出 さ れなか っ た詳細を設定す る ため、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数を手動でカ ス タ マ イ ズす る 必要があ る 場合
も あ り ます。 コ ン フ ィ ギ ュ レーシ ョ ン M 関数の詳細は、 ブ ラ ッ ク ボ ッ ク ス の コ ン フ ィ ギ ュ レーシ ョ ン M 関数 を
参照 し て く だ さ い。
ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド の使用
Black Box ブ ロ ッ ク を モデルに追加す る と 、 ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド が起動 し ます。
注記 : ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド を起動す る 前に、 イ ン ポー ト する VHDL ま たは Verilog
がブ ラ ッ ク ボ ッ ク ス の HDL の要件 と 制限を満た し てい る こ と を確認 し て く だ さ い。
ウ ィ ザー ド でモジ ュ ールが検索 さ れ る よ う にす る には、 イ ン ポー ト す る モジ ュ ール と 同 じ デ ィ レ ク ト リ にモデルが保
存 さ れてい る 必要があ り ます。
注記 : ウ ィ ザー ド は、 .mdl フ ァ イ ル と 同 じ デ ィ レ ク ト リ でのみ .vhd お よ び .v フ ァ イ ルを検索 し ます。 フ ァ イ ルが
見つか ら ない場合は、 警告 メ ッ セージが表示 さ れ、 ブ ラ ッ ク ボ ッ ク スは自動的には コ ン フ ィ ギ ュ レーシ ョ ン さ れませ
ん。 次の よ う な警告 メ ッ セージが表示 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
112
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
ウ ィ ザー ド に よ り モデルのデ ィ レ ク ト リ で .vhd お よ び .v フ ァ イ ルが検索 さ れ、 イ ン ポー ト 可能な フ ァ イ ルがダ イ
ア ロ グ ボ ッ ク ス に表示 さ れます。 こ のダ イ ア ロ グ ボ ッ ク ス の例を、 次に示 し ます。
こ のダ イ ア ロ グ ボ ッ ク ス で イ ン ポー ト する フ ァ イ ルを選択 し 、[開 く ] を ク リ ッ ク し ます。 コ ン フ ィ ギ ュ レーシ ョ ン M
関数が作成 さ れ、 Black Box ブ ロ ッ ク に関連付け ら れます。
注記 : コ ン フ ィ ギ ュ レーシ ョ ン M 関数は、モデルのデ ィ レ ク ト リ に <module>_config.m (<module> は イ ン ポー ト
す る モジ ュ ールの名前) と い う 名前で保存 さ れます。
ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド の詳細
ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド を実行す る と 、 一部の情報は イ ン ポー ト さ れ る モジ ュ ールか
ら 抽出 さ れますが、 手動で設定す る 必要のあ る 情報 も あ り ます。 こ れ ら の情報は、 次の と お り です。
注記 : コ ン フ ィ ギ ュ レーシ ョ ン M 関数には、 変更が必要な箇所を示す コ メ ン ト が追加 さ れてい ます。
•
モデルに組み合わせパ ス があ る 場合、 ブ ロ ッ ク の SysgenBlockDescriptor オブジ ェ ク ト の tagAsCombinational メ
ソ ッ ド を呼び出す必要があ り ます。 複数の独立ハー ド ウ ェ ア ク ロ ッ ク デザ イ ン では、 組み合わせパ ス がサポー
ト さ れません。
•
ウ ィ ザー ド では、 イ ン ポー ト す る 最上位エン テ ィ テ ィ の情報 し か抽出 さ れせん。 通常エン テ ィ テ ィ にはその他の
フ ァ イ ル も 付随 し てい ますが、 こ れ ら の各フ ァ イ ルに対 し て addFile メ ソ ッ ド を起動 し て コ ン フ ィ ギ ュ レーシ ョ
ン M 関数に追加す る 必要があ り ます。
•
コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド では、 同期の単一 ク ロ ッ ク ブ ラ ッ ク ボ ッ ク ス記述子ま たは非同期の複数 ク
ロ ッ ク ブ ラ ッ ク ボ ッ ク ス記述子のいずれかが自動的に作成 さ れます。
°
シ ン グルレー ト のブ ラ ッ ク ボ ッ ク ス の場合、 ブ ラ ッ ク ボ ッ ク ス のすべてのポー ト が同 じ レー ト で実行 さ れ
ます。 ほ と ん ど の場合 こ れで問題あ り ませんが、 ポー ト レー ト を明示的に設定する と 、 シ ミ ュ レーシ ョ ン時
間が短縮 さ れ る こ と があ り ます。
°
複数 ク ロ ッ ク のブ ラ ッ ク ボ ッ ク ス の場合、 入力ポー ト レー ト は ソ ース ク ロ ッ ク サブシ ス テ ムか ら 派生 さ せ
る 必要があ り 、 出力ポー ト レー ト はデス テ ィ ネーシ ョ ン ク ロ ッ ク サブシ ス テ ムに基づいて設定す る 必要が
あ り ます。 場合に よ っ ては、 必要な コ ン フ ィ ギ ュ レーシ ョ ンにポー ト レー ト を明確に設定す る 必要があ る こ
と も あ り ます。
ブ ラ ッ ク ボ ッ ク スのコ ン フ ィ ギ ュ レーシ ョ ン M 関数
イ ン ポー ト し たモジ ュ ールは、 System Generator で Black Box ブ ロ ッ ク と し て表 さ れます。 イ ン ポー ト し たモジ ュ ール
の情報は、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数に よ っ て Black Box ブ ロ ッ ク に適用 さ れます。 こ の コ ン フ ィ ギ ュ レーシ ョ
ン M 関数は、 ブ ラ ッ ク ボ ッ ク ス の イ ン タ ーフ ェ イ ス、 イ ンプ リ メ ン テーシ ョ ン、 シ ミ ュ レーシ ョ ン動作を定義 し ま
す。 具体的には、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数は次の情報を定義 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
113
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
•
モジ ュ ールの最上位エン テ ィ テ ィ の名前
•
VHDL ま たは Verilog の言語選択
•
ポー ト 記述
•
モジ ュ ールで必要なジ ェ ネ リ ッ ク
•
同期の単一 ク ロ ッ ク ま たは非同期の複数独立 ク ロ ッ ク コ ン フ ィ ギ ュ レーシ ョ ン
•
ク ロ ッ ク レー ト お よ びサンプ リ ン グ レー ト
•
モジ ュ ールに関連 し た フ ァ イ ル
•
モジ ュ ールに組み合わせパ ス が含まれ る か ど う か
ブ ラ ッ ク ボ ッ ク ス に関連付け ら れ る コ ン フ ィ ギ ュ レーシ ョ ン M 関数の名前は、Black Box ブ ロ ッ ク のパ ラ メ ー タ ー ダ
イ ア ロ グ ボ ッ ク ス でパ ラ メ ー タ ー と し て指定 さ れます。 次の例では、 parity_block_config.m と い う 名前にな り
ます。
コ ン フ ィ ギ ュ レーシ ョ ン M 関数は、 オブジ ェ ク ト ベース の イ ン タ ーフ ェ イ ス を使用 し てブ ラ ッ ク ボ ッ ク ス の情報を
指定 し ます。 こ の イ ン タ ーフ ェ イ ス は、 SysgenBlockDescriptor お よ び SysgenPortDescriptor と い う 2 つのオブジ ェ ク ト
を定義 し ます。 System Generator で コ ン フ ィ ギ ュ レーシ ョ ン M 関数が起動 さ れ る と 、 function にブ ロ ッ ク デ ィ ス ク リ
プ タ ーが渡 さ れます。
function sample_block_config(this_block)
SysgenBlockDescriptor オブジ ェ ク ト には、 ブ ラ ッ ク ボ ッ ク ス に関する 情報を指定する メ ソ ッ ド が含まれてい ます。 ブ
ロ ッ ク デ ィ ス ク リ プ タ ーのポー ト は、 ポー ト デ ィ ス ク リ プ タ ーを使用 し て別に定義 さ れます。
言語の選択
ブ ラ ッ ク ボ ッ ク ス には、 VHDL お よ び Verilog モジ ュ ールを イ ン ポー ト で き ます。 SysgenBlockDescriptor には、 イ ン
ポー ト す る モジ ュ ールの タ イ プ を指定す る setTopLevelLanguage と い う メ ソ ッ ド が含まれてい ます。コ ン フ ィ ギ ュ レー
シ ョ ン M 関数内で、 こ の メ ソ ッ ド を一度起動する 必要があ り ます。 次に、 VHDL ま たは Verilog 言語を選択す る コ ー
ド を示 し ます。
VHDL モジ ュ ール :
this_block.setTopLevelLanguage('VHDL');
Verilog モジ ュ ール :
this_block.setTopLevelLanguage('Verilog');
注記 : ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド では、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数を生成す る 際に
適切な言語が自動的に選択 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
114
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
最上位エ ン テ ィ テ ィ の指定
ブ ラ ッ ク ボ ッ ク ス に関連付け る 最上位エ ン テ ィ テ ィ の名前を指定す る 必要があ り ます。 SysgenBlockDescriptor には、
最上位エン テ ィ テ ィ の名前を指定す る setEntityName メ ソ ッ ド が含まれてい ます。
注記 : エン テ ィ テ ィ 名は、 小文字を使用 し て指定 し ます。
た と えば次の コ ー ド では、 foo と い う 最上位エン テ ィ テ ィ を指定 し てい ます。
this_block.setEntityName('foo');
注記 : ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド では、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数を生成す る 際に
最上位エン テ ィ テ ィ の名前が自動的に設定 さ れます。
ブ ロ ッ ク ポー ト の定義
ブ ラ ッ ク ボ ッ ク ス のポー ト イ ン タ ー フ ェ イ ス は、 ブ ロ ッ ク の コ ン フ ィ ギ ュ レ ーシ ョ ン M 関数で定義 さ れ ま す。 ブ
ラ ッ ク ボ ッ ク ス のポー ト は、 ポー ト デ ィ ス ク リ プ タ ーを使用 し て定義 さ れます。 ポー ト デ ィ ス ク リ プ タ ーを使用す
る と 、 ポー ト 幅、 デー タ 型、 2 進小数点、 サンプ リ ン グ レー ト な ど、 ポー ト の さ ま ざ ま な属性を設定で き ます。
新規ポー ト の追加
ブ ラ ッ ク ボ ッ ク ス のポー ト イ ン タ ーフ ェ イ ス を定義す る 際、 ブ ロ ッ ク デ ィ ス ク リ プ タ ーに入力ポー ト と 出力ポー ト
を追加す る 必要があ り ます。 こ れ ら のポー ト は、 イ ン ポー ト す る モジ ュ ール上のポー ト に対応 し ます。 モデルでは、
Black Box ブ ロ ッ ク のポー ト イ ン タ ーフ ェ イ ス はブ ロ ッ ク デ ィ ス ク リ プ タ ー オブジ ェ ク ト で宣言 さ れた ポー ト 名で
決ま り ます。 SysgenBlockDescriptor には、 入力ポー ト お よ び出力ポー ト を追加する メ ソ ッ ド が含まれてい ます。
入力ポー ト の追加 :
this_block.addSimulinkInport('din');
出力ポー ト の追加 :
this_block.addSimulinkOutport('dout');
addSimulinkInport お よ び addSimulinkOutport メ ソ ッ ド に渡 さ れ る 文字列パ ラ メ ー タ ーに よ り 、 ポー ト 名が指定 さ
れます。 こ れ ら の名前は、 イ ン ポー ト し たモジ ュ ールのポー ト 名 と 一致 し てい る 必要があ り ます。
注記 : ポー ト 名は、 小文字を使用 し て指定 し ます。
双方向ポー ト の追加 :
config_phase = this_block.getConfigPhaseString;
if (strcmpi(config_phase,'config_netlist_interface'))
this_block.addInoutport('bidi');
% Rate and type info should be added here as well
end
双方向ポー ト は、 デザ イ ン のネ ッ ト リ ス ト 生成中にのみサポー ト さ れ、 System Generator のダ イ ア グ ラ ム には表
示 さ れず、 生成 さ れた HDL でのみ表示 さ れます。 そのため、 双方向ポー ト は System Generator で HDL を生成す
る 場合にのみ追加す る よ う にす る こ と が重要です。 上記の例では、 if-end 条件文を使用 し て双方向ポー ト を追加
す る コ ー ド の実行を制限 し てい ます。
1 つの メ ソ ッ ド 呼び出 し で入力ポー ト と 出力ポー ト の両方を定義す る こ と も 可能です。setSimulinkPorts メ ソ ッ ド では、
2 つのパ ラ メ ー タ ーを指定 し ます。 1 つ目のパ ラ メ ー タ ーはブ ロ ッ ク の入力ポー ト 名を定義する 文字列のセル配列、 2
つ目のパ ラ メ ー タ ーはブ ロ ッ ク の出力ポー ト 名を定義す る 文字列のセル配列です。
注記 : ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド では、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数を生成す る 際に
ポー ト 名が自動的に設定 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
115
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
ポー ト オブ ジ ェ ク ト の取得
ブ ロ ッ ク デ ィ ス ク リ プ タ ーにポー ト を追加 し た ら 、 ポー ト の属性を設定する 必要があ り ます。 ポー ト を コ ン フ ィ ギ ュ
レーシ ョ ンす る 前に、 ポー ト のデ ィ ス ク リ プ タ ーを取得す る 必要があ り ます。 SysgenBlockDescriptor には、 ポー ト オ
ブジ ェ ク ト にア ク セ スす る メ ソ ッ ド が含まれてい ます。 た と えば次の メ ソ ッ ド では、 this_block デ ィ ス ク リ プ タ ー
上の din と い う ポー ト を取得 し ます。
SysgenPortDescriptor オブジ ェ ク ト にア ク セ ス :
din = this_block.port('din');
上記の コ ー ド では、 オブジ ェ ク ト din が作成 さ れ、 port 関数呼び出 し で戻 さ れたデ ィ ス ク リ プ タ に割 り 当て ら れま
す。
SysgenBlockDescriptor には、ポー ト イ ンデ ッ ク ス を戻す inport お よ び outport と い う メ ソ ッ ド も 含まれてい ます。
ポー ト イ ンデ ッ ク ス は、 ブ ロ ッ ク イ ン タ ーフ ェ イ ス に示 さ れた順にポー ト に付け ら れた イ ンデ ッ ク ス番号で、 1 か ら
ブ ロ ッ ク 上の入力/出力の数ま でのいずれかです。 こ れ ら の メ ソ ッ ド は、 エ ラ ー チ ェ ッ ク な ど でブ ロ ッ ク のポー ト を
確認す る 際に便利です。
ポー ト タ イ プの設定
SysgenPortDescriptor には、 個々のポー ト を設定す る メ ソ ッ ド が含まれてい ます。 た と えば、 dout ポー ト が符号な し
の 12 ビ ッ ト で、 2 進小数点の位置が 8 であ る と する と 、 こ のポー ト タ イ プ を定義す る には次の コ ー ド を使用 し ます。
dout = this_block.port('dout');
dout.setWidth(12);
dout.setBinPt(8);
dout.makeUnsigned();
次の コ ー ド も 可能です。
dout = this_block.port('dout');
dout.setType('Ufix_12_8');
最初の コ ー ド では個々の メ ソ ッ ド 呼び出 し を使用 し てポー ト 属性を設定 し てお り 、 2 番目の コ ー ド では信号 タ イ プ を
文字列 と し て定義 し てい ます。 ど ち ら の コ ー ド も 、 機能的には同 じ です。
ブ ラ ッ ク ボ ッ ク ス では、 1 ビ ッ ト ポー ト (std_logic な ど) ま たはベ ク タ ー (std_logic_vector(0 downto 0) な ど) を使用 し
て宣言 し た 1 ビ ッ ト ポー ト を含む HDL モジ ュ ールがサポー ト さ れます。 System Generator では、 デフ ォ ル ト でポー ト
がベ ク タ ーで宣言 さ れてい る と 想定 さ れ ます。 デ ィ ス ク リ プ タ ーの useHDLVector を使用す る と 、 こ のデフ ォ ル ト を
変更で き ます。 こ の メ ソ ッ ド を true に設定す る と System Generator でポー ト がベ ク タ ー と 解釈 さ れ、 false に設定
す る と ポー ト が 1 ビ ッ ト であ る と 解釈 さ れます。
dout.useHDLVector(true); % std_logic_vector
dout.useHDLVector(false); % std_logic
注記 : ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン ウ ィ ザー ド では、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数を生成す る 際に
ポー ト タ イ プが自動的に設定 さ れます。
シ ミ ュ レーシ ョ ン用の双方向ポー ト の設定
双方向ポー ト (inout ポー ト ) は HDL ネ ッ ト リ ス ト の生成でのみサポー ト さ れ、 System Generator のダ イ ア グ ラ ムには
表示 さ れ ません。 デフ ォ ル ト では、 シ ミ ュ レーシ ョ ン では双方向ポー ト は X で駆動 さ れ ます。 ポー ト にデー タ フ ァ
イ ルを関連付け る こ と に よ り 、 こ の動作を変更で き ま す。 双方向ポー ト は config_netlist_interface フ ェ ーズでのみブ
ロ ッ ク に追加可能なので、 こ の コ ー ド の実行が制限 さ れ る よ う に し て く だ さ い。
if (strcmpi(this_block.getConfigPhaseString,'config_netlist_interface'))
bidi_port = this_block.port('bidi');
bidi_port.setGatewayFileName('bidi.dat');
end
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
116
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
上記の例では、 シ ミ ュ レーシ ョ ン中、 テ キ ス ト フ ァ イ ル bidi.dat がポー ト への ス テ ィ ミ ュ ラ ス と し て使用 さ れ ます。
デー タ フ ァ イ ルはテ キ ス ト 形式で作成 し 、 各行に各シ ミ ュ レーシ ョ ン サ イ ク ルでポー ト に駆動す る 信号を記述 し ま
す。 た と えば、 3 ビ ッ ト の双方向ポー ト を駆動する 4 サ イ ク ル分の信号を指定する 場合は、 デー タ フ ァ イ ルに次の よ
う に記述 し ます。
ZZZ
110
011
XXX
指定 し たデー タ フ ァ イ ルが存在 し ない場合は、 エ ラ ーが返 さ れます。
ポー ト のサン プ リ ング レー ト の設定
Black Box ブ ロ ッ ク では、 ポー ト に異な る サンプ リ ン グ レー ト を設定で き ます。 デフ ォ ル ト では、 出力ポー ト のサン
プ リ ン グ レ ー ト は入力ポー ト (同 じ サ ン プ リ ン グ レ ー ト で動作 し てい る 場合は複数の入力ポー ト ) のサ ン プ リ ン グ
レー ト にな り ます。 出力ポー ト のサン プ リ ン グ レー ト が入力ポー ト のサン プ リ ン グ レー ト と 異な る 場合な ど、 ポー
ト のサンプ リ ン グ レー ト を明示的に設定する 必要があ る 場合があ り ます。
注記 : ブ ラ ッ ク ボ ッ ク ス の複数の入力で異な る サンプ リ ン グ レー ト が使用 さ れてい る 場合は、各出力ポー ト のサンプ
リ ン グ レー ト を指定す る 必要があ り ます。
SysgenPortDescriptor には、 ポー ト のサンプ リ ン グ レー ト を設定す る setRate メ ソ ッ ド が含まれてい ます。
注記 : setRate メ ソ ッ ド に渡 さ れ る サンプ リ ン グ レー ト パ ラ メ ー タ ーは、 そのポー ト が動作す る Simulink のサンプ リ
ン グ レー ト ではな く 、 必要なポー ト のサンプ リ ン グ周期 と Simulink シ ス テ ム ク ロ ッ ク 周期 (System Generator ブ ロ ッ
ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で指定) と の比を指定する 正の整数です。
Simulink のシ ス テ ム周期が 2s と 定義 さ れたモデルがあ り 、 次の よ う に setRate メ ソ ッ ド を使用 し て dout ポー ト に
レー ト 3 を設定す る と し ます。
dout.setRate(3);
こ の レー ト 3 は、 Simulink の 3 シ ス テ ム周期ご と に dout ポー ト にサンプルが生成 さ れ る こ と を意味 し ます。 Simulink
のシ ス テ ム周期は 2s なので、 ポー ト のサンプ リ ン グ レー ト は 3 x 2 = 6s と な り ます。
注記 : ポー ト がサ ン プ リ ン グ さ れない定数であ る 場合は、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数で SysgenPortDescriptor の
setConstant を使用 し て定義で き ます。 setRate メ ソ ッ ド に Inf を渡す こ と に よ り 定数を定義す る こ と も 可能です。
ダ イ ナ ミ ッ ク出力ポー ト
ブ ラ ッ ク ボ ッ ク ス では、 動的に出力ポー ト の タ イ プお よ びレー ト を変更で き ます。 た と えば、 入力ポー ト の幅に応 じ
て出力ポー ト の幅を設定す る 必要の あ る こ と が あ り ま す。 SysgenPortDescriptor には、 ポー ト 設定を判断で き る メ ン
バー変数が含まれてい ます。 出力ポー ト の タ イ プ ま たはレー ト を、 ブ ロ ッ ク の入力ポー ト の メ ンバー変数を調べ る こ
と に よ り 設定で き ます。
た と えば次の例の よ う に、 ポー ト din の幅 と レー ト を取得で き ます。
input_width = this_block.port('din').width;
input_rate = this_block.port('din').rate;
注記 : ブ ラ ッ ク ボ ッ ク ス の コ ン フ ィ ギ ュ レーシ ョ ン M 関数は、 モデルが コ ンパ イ ル さ れ る と き に複数回実行 さ れ ま
す。 デー タ 型お よ びレー ト がブ ラ ッ ク ボ ッ ク ス に伝搬 さ れ る 前に実行 さ れ る こ と があ り ます。
SysgenBlockDescriptor には、 ポー ト タ イ プお よ びレー ト がブ ロ ッ ク に伝搬 さ れたか ど う か を調べ る
inputTypesKnown お よ び inputRatesKnown と い う ブール メ ンバー変数が含まれてい ます。 入力ポー ト に応 じ て
ダ イ ナ ミ ッ ク 出力ポー ト タ イ プ ま たはレー ト を設定する 場合は、 inputTypesKnown と inputRatesKnown の値を
チ ェ ッ ク す る 条件文内に コ ン フ ィ ギ ュ レーシ ョ ン呼び出 し を ネ ス ト す る 必要があ り ます。
次の コ ー ド は、 ダ イ ナ ミ ッ ク 出力ポー ト dout の幅を入力ポー ト din の幅 と 同 じ に設定 し てい ます。
if (this_block.inputTypesKnown)
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
117
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
dout.setWidth(this_block.port('din').width);
end
ダ イ ナ ミ ッ ク レー ト も 、 同様に設定で き ます。 次の コ ー ド は、 出力ポー ト dout のサ ン プ リ ン グ レー ト を入力ポー
ト din のサンプ リ ン グ レー ト の 2 倍に設定 し てい ます。
if (this_block.inputRatesKnown)
dout.setRate(this_block.port('din').rate*2);
end
ブ ラ ッ ク ボ ッ ク スのク ロ ッ ク
マルチ レー ト モジ ュ ールを イ ン ポー ト す る には、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数でモジ ュ ールの ク ロ ッ ク に関す る
情報を指定す る 必要があ り ます。 System Generator では、 ク ロ ッ ク と ク ロ ッ ク イ ネーブルはほかの タ イ プのポー ト と
は異な る 方法で処理 さ れます。 イ ン ポー ト し たモジ ュ ールの ク ロ ッ ク ポー ト には、 ク ロ ッ ク イ ネーブル ポー ト が必
要です。 つま り 、 ク ロ ッ ク と ク ロ ッ ク イ ネーブルはペア と し て定義 し 、 イ ン ポー ト し たモジ ュ ール内でペア と し て存
在す る 必要があ り ます。 こ れは、 シ ン グル レー ト デザ イ ンお よ びマルチ レー ト デザ イ ンの両方に適用 さ れます。
注記 : ク ロ ッ ク お よ び ク ロ ッ ク イ ネーブルはペアで存在す る 必要があ り ますが、 System Generator では イ ン ポー ト し
た モ ジ ュ ールのすべて の ク ロ ッ ク ポー ト が FPGA シ ス テ ム ク ロ ッ ク で駆動 さ れ、 ク ロ ッ ク イ ネーブル ポー ト は
FPGA シ ス テ ム ク ロ ッ ク か ら 生成 さ れた ク ロ ッ ク イ ネーブル信号で駆動 さ れます。
SysgenBlockDescriptor に は、 ブ ラ ッ ク ボ ッ ク ス の ク ロ ッ ク お よ び ク ロ ッ ク イ ネ ー ブ ル の 情報 を 定義す る
addClkCEPair メ ソ ッ ド が含 ま れてい ま す。 こ の メ ソ ッ ド では、 3 つのパ ラ メ ー タ ーを指定 し ま す。 1 つ目のパ ラ
メ ー タ ーは ク ロ ッ ク ポー ト の名前 (モジ ュ ールで使用 さ れ る 名前)、2 つ目のパ ラ メ ー タ ーは ク ロ ッ ク イ ネーブル ポー
ト の名前 (モジ ュ ールで使用 さ れ る 名前) を定義 し ます。
ク ロ ッ ク と ク ロ ッ ク イ ネーブルのペアのポー ト 名は、 次の命名規則に従っ て付け る 必要があ り ます。
•
ク ロ ッ ク ポー ト 名には、 clk を含め ます。
•
ク ロ ッ ク イ ネーブル ポー ト 名には、 ce を含め ます。
•
文字列の clk お よ び ce 以外の部分を同 じ に し ます (my_clk_1 と my_ce_1 な ど)。
3 つ目のパ ラ メ ー タ ーは、 ク ロ ッ ク と ク ロ ッ ク イ ネーブルの レー ト 関係を定義 し ま す。 こ の レー ト パ ラ メ ー タ ーで
は、 Simulink のサ ン プ リ ン グ レー ト ではな く 、 ク ロ ッ ク のサ ン プル周期 と 必要な ク ロ ッ ク イ ネーブルのサン プル周
期間の関係を System Generator に伝え ま す。 レー ト パ ラ メ ー タ ーは整数値で、 ク ロ ッ ク レー ト と それに対応す る ク
ロ ッ ク イ ネーブル レー ト 間の比率が定義 さ れます。
た と えば、 ce_3 と い う ク ロ ッ ク イ ネーブル ポー ト のサン プ リ ン グ周期を シ ス テ ム ク ロ ッ ク 周期の 3 倍に設定す る
場合、 次の コ ー ド を使用 し ます。
addClkCEPair('clk_3','ce_3',3);
System Generator でブ ラ ッ ク ボ ッ ク ス をハー ド ウ ェ アに コ ンパ イ ルす る と 、 モジ ュ ールに適切な ク ロ ッ ク イ ネーブル
信号が生成 さ れ、 適切な ク ロ ッ ク イ ネーブル ポー ト に配線 さ れます。
組み合わせパス
イ ン ポー ト す る モジ ュ ールに組み合わせパ ス があ る 場合 (入力の変化が ク ロ ッ ク イ ベン ト な し で出力ポー ト に影響す
る )、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数で指定す る 必要があ り ます。 SysgenBlockDescriptor オブジ ェ ク ト には、 モジ ュ ー
ルに組み合わせパ ス があ る こ と を示す tagAsCombinational メ ソ ッ ド が含 ま れてい ま す。 コ ン フ ィ ギ ュ レ ーシ ョ
ン M 関数内で、 こ の メ ソ ッ ド を次の よ う に起動す る 必要があ り ます。
this_block.tagAsCombinational;
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
118
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
VHDL ジ ェ ネ リ ッ ク および Verilog パ ラ メ ー タ ーの指定
System Generator でモデルを HDL に コ ンパ イ ルす る 際に、 モジ ュ ールに渡すジ ェ ネ リ ッ ク の リ ス ト を指定で き ます。
こ れ ら のジ ェ ネ リ ッ ク に割 り 当て る 値は、マ ス ク パ ラ メ ー タ ーお よ び伝搬 さ れたポー ト 情報 (ポー ト 幅、タ イ プ、レー
ト な ど) か ら 抽出で き ます。 こ の よ う に柔軟にジ ェ ネ リ ッ ク を割 り 当て る こ と がで き る ので、 ブ ラ ッ ク ボ ッ ク ス周囲
の Simulink 環境に基づいて カ ス タ マ イ ズ さ れ る モジ ュ ールがサポー ト さ れます。
addGeneric メ ソ ッ ド を使用す る と 、デザ イ ン をハー ド ウ ェ アに コ ンパ イ ル し た と き にモジ ュ ールに渡す必要のあ る
ジ ェ ネ リ ッ ク を定義で き ます。次の コ ー ド では、VHDL の Integer ジ ェ ネ リ ッ ク dout_width を 12 に設定 し てい ます。
addGeneric('dout_width','Integer','12');
ジ ェ ネ リ ッ ク 値は、伝搬 さ れた入力ポー ト の情報 (ダ イ ナ ミ ッ ク 出力ポー ト の幅を指定する ジ ェ ネ リ ッ ク な ど) に基づ
いて設定す る こ と も 可能です。
ブ ラ ッ ク ボ ッ ク ス の コ ン フ ィ ギ ュ レーシ ョ ン M 関数はモデルが コ ンパ イ ル さ れ る 際に複数回起動 さ れますが、 デー
タ 型 (ま たは レー ト ) がブ ラ ッ ク ボ ッ ク ス に伝搬 さ れ る 前に起動 さ れ る こ と があ り ます。 入力ポー ト の タ イ プ ま たは
レ ー ト に基づい て ジ ェ ネ リ ッ ク 値 を 設定す る 場合は、 inputTypesKnown ま たは inputRatesKnown 変数の値 を
チ ェ ッ ク す る 条件文内に addGeneric 呼び出 し を ネ ス ト す る 必要があ り ます。 た と えば次の よ う に、 dout ポー ト の
幅を din の値に基づいて設定で き ます。
if (this_block.inputTypesKnown)
% set generics that depend on input port types
this_block.addGeneric('dout_width', ...
this_block.port('din').width);
end
ジ ェ ネ リ ッ ク 値 は、 ブ ラ ッ ク ボ ッ ク ス に 関連付 け ら れ た マ ス ク パ ラ メ ー タ ー に 基づ い て 設定 で き ま す。
SysgenBlockDescriptor には、 Simulink でのブ ラ ッ ク ボ ッ ク ス名を表す文字列であ る blockName メ ンバー変数が含ま
れ ます。 こ の変数を使用 し て、 特定の コ ン フ ィ ギ ュ レーシ ョ ン M 関数に関連付け ら れたブ ラ ッ ク ボ ッ ク ス にア ク セ
ス で き ます。 た と えば、 ブ ラ ッ ク ボ ッ ク ス で init_value と い う パ ラ メ ー タ ーを定義す る 場合、 次の コ ー ド を使用
で き ます。
simulink_block = this_block.blockName;
init_value = get_param(simulink_block,'init_value');
this_block.addGeneric('init_value', 'String', init_value);
注記 : ブ ラ ッ ク ボ ッ ク ス に独自のパ ラ メ ー タ ーを追加する には (ジ ェ ネ リ ッ ク 値を指定する 値な ど)、 次の手順に従い
ます。
•
Black Box ブ ロ ッ ク を Simulink ラ イ ブ ラ リ ま たはモデルに コ ピー し ます。
•
Black Box ブ ロ ッ ク の リ ン ク を解除 し ます。
•
Black Box ブ ロ ッ ク のダ イ ア ロ グ ボ ッ ク ス にパ ラ メ ー タ ーを追加 し ます。
ブ ラ ッ ク ボ ッ ク スの VHDL ラ イ ブ ラ リ サポー ト
こ のブ ラ ッ ク ボ ッ ク ス機能を使用す る と 、 定義済み ラ イ ブ ラ リ の依存関係を記述 し た VHDL モジ ュ ールを イ ン ポー
ト で き ます。 次に、 こ の イ ン ポー ト 方法の例を示 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
119
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
次 の VHDL モ ジ ュ ール は、 非同期 ク リ ア を 持つ 4 ビ ッ ト の ア ッ プ カ ウ ン タ ー で す (async_counter.vhd)。 こ れ は
async_counter_lib と い う 名前の ラ イ ブ ラ リ に コ ンパ イ ル さ れます。
次 の VHDL モ ジ ュ ー ル は、 同 期 ク リ ア を 持つ 4 ビ ッ ト の ア ッ プ カ ウ ン タ ー で す (sync_counter.vhd)。 こ れ は
sync_counter_lib と い う 名前の ラ イ ブ ラ リ に コ ンパ イ ル さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
120
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
次の VHDL モジ ュ ールは、 上記のモジ ュ ールを イ ン ス タ ン シエー ト す る 最上位モジ ュ ールです。 System Generator モ
デルにブ ラ ッ ク ボ ッ ク ス を追加す る 際、 こ のモジ ュ ールを指定する 必要があ り ます。
VHDL の イ ン ポー ト では、 まずブ ラ ッ ク ボ ッ ク ス を使用 し て最上位エン テ ィ テ ィ top_level を イ ン ポー ト し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
121
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
フ ァ イ ルが イ ン ポー ト さ れた ら 、 ブ ラ ッ ク ボ ッ ク ス コ ン フ ィ ギ ュ レーシ ョ ン M フ ァ イ ルを次の よ う に変更 し ます。
イ ン タ ーフ ェ イ ス関数 addFileToLibrary を使用 し て、 work 以外の ラ イ ブ ラ リ 名を指定 し 、 関連の HDL ソ ース が指定
の ラ イ ブ ラ リ に コ ンパ イ ル さ れ る よ う 指定 し ます。
System Generator モデルは、 次の図の よ う にな り ます。
次に、 System Generator ト ー ク ン を ダブル ク リ ッ ク し 、 [Generate] ボ タ ン を ク リ ッ ク し て HDL ネ ッ ト リ ス ト を生成 し
ます。
生成プ ロ セ ス中、 Vivado IDE プ ロ ジ ェ ク ト (.xpr) が作成 さ れ、 netlist フ ォ ルダーの hdl_netlist フ ォ ルダーに配置 さ れま
す。 Vivado IDE プ ロ ジ ェ ク ト を ダブル ク リ ッ ク し 、 [Sources] ビ ュ ーの [Libraries] タ ブ を ク リ ッ ク す る と 、 work ラ イ
ブ ラ リ 以外に async_counter_lib ラ イ ブ ラ リ と sync_counter_lib ラ イ ブ ラ リ も あ り ます。
エ ラ ーのチ ェ ッ ク
通常、 ブ ラ ッ ク ボ ッ ク ス のポー ト タ イ プ、 レー ト 、 マ ス ク パ ラ メ ー タ ーに対 し てエ ラ ー チ ェ ッ ク を実行す る 必要が
あ り ます。 SysgenBlockDescriptor には、 表示 さ れ る エ ラ ー メ ッ セージ を指定する setError メ ソ ッ ド が含まれてい ます。
setError に渡 さ れ る 文字列パ ラ メ ー タ ーが、 ユーザーに表示 さ れ る エ ラ ー メ ッ セージです。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
122
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
ブ ラ ッ ク ボ ッ ク ス API
SysgenBlockDescriptor メ ンバー変数
タ イプ
メ ンバー
説明
文字列
entityName
エン テ ィ テ ィ ま たはモジ ュ ールの名前
文字列
blockName
Black Box ブ ロ ッ ク の名前
整数
numSimulinkInports
ブ ラ ッ ク ボ ッ ク ス上の入力ポー ト 数
整数
numSimulinkOutports
ブ ラ ッ ク ボ ッ ク ス上の出力ポー ト 数
ブール値
inputTypesKnown
すべての入力 タ イ プが定義 さ れてい る 場
合は true、 さ れていない場合は false
ブール値
inputRatesKnown
すべての入力 レ ー ト が定義 さ れてい る 場
合は true、 さ れていない場合は false
倍精度値の配列
inputRates
入力ポー ト (inport(indx) と し て イ ン デ ッ
ク ス) のサンプ リ ン グ周期の配列。 サンプ
リ ン グ周期は、 System Generator ブ ロ ッ ク
のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で指
定 さ れた Simulink のシ ス テ ム周期の倍数
を整数で指定 し ます。
ブール値
error
エ ラ ーが検出 さ れた場合は true、 さ れな
か っ た場合は false
文字列のセル配列
errorMessages
ブ ロ ッ ク のすべてのエ ラ ー メ ッ セージ
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
123
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
SysgenBlockDescriptor の メ ソ ッ ド
メソッド
説明
setTopLevelLanguage(language)
ブ ラ ッ ク ボ ッ ク ス の最上位エ ン テ ィ テ ィ ( ま た は モ
ジ ュ ール) の言語を指定 し ま す。 VHDL ま たは Verilog
を指定で き ます。
setEntityName(name)
エン テ ィ テ ィ ま たはモジ ュ ールの名前を設定 し ます。
addSimulinkInport(pname)
ブ ラ ッ ク ボ ッ ク ス に入力ポー ト を追加 し ます。 pname
はポー ト の名前です。
addSimulinkOutport(pname)
ブ ラ ッ ク ボ ッ ク ス に出力ポー ト を追加 し ます。 pname
はポー ト 名を指定 し ます。
setSimulinkPorts(in,out)
ブ ラ ッ ク ボ ッ ク ス に入力ポー ト と 出力ポー ト を追加 し
ます。 in は入力ポー ト 名を、 out は出力ポー ト 名を セル
配列で指定 し ます。
addInoutport(pname)
ブ ラ ッ ク ボ ッ ク ス に 双方向 ポ ー ト を 追加 し ま す。
pname はポー ト 名を指定 し ま す。 双方向ポー ト は、 コ
ン フ ィ ギ ュ レーシ ョ ン の config_netlist_interface フ ェ ー
ズでのみ追加可能です。
tagAsCombinational()
ブ ロ ッ ク に、 入力ポー ト か ら 出力ポー ト ま での組み合
わせパ ス (直接 フ ィ ー ド ス ルー ) が あ る こ と を 示 し ま
す。
addClkCEPair(clkPname, cePname, rate)
ブ ロ ッ ク の ク ロ ッ ク ポー ト と ク ロ ッ ク イ ネーブル
ポー ト のペア を定義 し ま す。 clkPname は ク ロ ッ ク 名、
cePname は ク ロ ッ ク イ ネーブル名、 rate (倍精度値) は
ポー ト ペアの動作レー ト を指定 し ます。 rate は正の整
数で指定す る 必要があ り ます。 ク ロ ッ ク 名には clk を、
ク ロ ッ ク イ ネーブル名には ce を含め る 必要が あ り ま
す。 ク ロ ッ ク イ ネーブルの名前は、 対応する ク ロ ッ ク
と 同 じ にす る 必要があ り ますが、 clk の部分は ce に し
ます。
port(name)
指定 し た名前に一致す る SysgenPortDescriptor を返 し ま
す。
inport(indx)
指定の入力ポー ト を説明す る SysgenPortDescriptor を返
し ま す。 index は ポ ー ト の イ ン デ ッ ク ス (1 ~
numInputPorts) を指定 し ます。
outport(indx)
指定の出力ポー ト を説明す る SysgenPortDescriptor を返
し ま す。 index は ポ ー ト の イ ン デ ッ ク ス (1 ~
numOutputPorts) を指定 し ます。
addGeneric(identifier, value)
ブ ロ ッ ク の ジ ェ ネ リ ッ ク (Verilog の場合はパ ラ メ ー
タ ー ) を指定 し ま す。 identifier はジ ェ ネ リ ッ ク 名を指
定 し 、 value はジ ェ ネ リ ッ ク の値を倍精度値ま たは文字
列で指定 し ます。 ジ ェ ネ リ ッ ク のデー タ 型は、 value の
デー タ 型か ら 判断 さ れ ます。 value が倍精度の整数 (40
な ど) の場合は integer に、倍精度の非整数の場合は real
に 設定 さ れ ま す。 value が 0 と 1 の み を 含む文字列
('0101' な ど) の場合は bit_vector に、 その他の文字列の
場合は string に設定 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
124
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
メソッド
説明
addGeneric(identifier, type, value)
ブ ロ ッ ク の ジ ェ ネ リ ッ ク (Verilog の場合はパ ラ メ ー
タ ー ) の名前、 デー タ 型、 値を指定 し ます。 3 つの引数
はすべて文字列で、 identifier は名前、 type はデー タ 型、
value は値を指定 し ます。
addFile(fn)
ブ ラ ッ ク ボ ッ ク ス に 関連付 け る フ ァ イ ル リ ス ト に
フ ァ イ ルを追加 し ます。fn はフ ァ イ ル名を指定 し ます。
通常ブ ラ ッ ク ボ ッ ク ス には HDL フ ァ イ ルが関連付け
ら れますが、 ど んな フ ァ イ ルで も 追加で き ます。VHDL
フ ァ イ ルの拡張子は .vhd、 Verilog フ ァ イ ルの拡張子は
.v であ る 必要があ り ます。 フ ァ イ ルの追加順は保持 さ
れ、 こ の順序で HDL フ ァ イ ルが コ ンパ イ ル さ れます。
相対パ ス名ま たは絶対パ ス名の ど ち ら で も 使用で き ま
す。 相対パ ス名は、 デザ イ ンの .mdl フ ァ イ ルま たは ラ
イ ブ ラ リ .mdl フ ァ イ ルの場所を基準に解釈 さ れます。
getDeviceFamilyName()
ブ ラ ッ ク ボ ッ ク ス に対応する FPGA デバ イ ス の名前を
取得 し ます。
getConfigPhaseString
現在の コ ン フ ィ ギ ュ レーシ ョ ン フ ェ ーズ を文字列 と し
て 返 し ま す。 有 効 な 戻 り 値 は、 config_interface、
config_rate_and_type、 config_post_rate_and_type、
config_simulation、 config_netlist_interface、 お よ び
config_netlist です。
setSimulatorCompilationScript (script)
ブ ラ ッ ク ボ ッ ク ス で生成 さ れたデフ ォ ル ト の HDL 協
調シ ミ ュ レ ーシ ョ ン コ ン パ イ ル ス ク リ プ ト の代わ り
に、 script で指定 し た ス ク リ プ ト を使用 し ます。 こ の メ
ソ ッ ド を 使用す る と 、 た と えばブ ラ ッ ク ボ ッ ク ス の
HDL が変更 さ れていない場合に、 シ ミ ュ レーシ ョ ンの
再実行で コ ンパ イ ルを ス キ ッ プで き ます。
setError(message)
エ ラ ーが発生 し た と き に表示す る エ ラ ー メ ッ セージ を
設定 し ま す。 message は表示す る エ ラ ー メ ッ セージ を
指定 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
125
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
SysgenPortDescriptor メ ンバー変数
タ イプ
メ ンバー
説明
文字列
name
ポー ト 名
整数
simulinkPortNumber
Simulink でのポー ト の イ ンデ ッ ク ス。 イ
ンデ ッ ク ス は 1 か ら 開始 し ます。
ブール値
typeKnown
ポー ト のデー タ 型がわか っ てい る 場合は
true、 わかっ ていない場合は false
文字列
type
ポー ト の型 (UFix_<n>_<b>、
Fix_<n>_<b>、 ま たは Bool)
ブール値
isBool
ポー ト のデー タ 型が Bool の場合は true、
Bool でない場合は false
ブール値
isSigned
ポー ト のデー タ 型が signed の場合は true、
signed でない場合は false
ブール値
isConstant
ポー ト のデー タ 型が constant の場合は
true、 constant でない場合は false
整数
width
ポー ト 幅
整数
binpt
2 進小数点の位置 (0 ~ width の整数値)
ブール値
rateKnown
レー ト がわか っ てい る 場合は true、 わ
かっ ていない場合は false
倍精度
rate
ポー ト のサンプ リ ン グ レー ト 。 MATLAB
倍精度値で表現 し た正の整数です。 Inf の
場合は、 ポー ト 出力が定数であ る こ と を
示 し ます。
SysgenPortDescriptor の メ ソ ッ ド
メソッド
説明
setName(name)
ポー ト の HDL 名を指定 し ます。
setSimulinkPortNumber(num)
Simulink でポー ト に関連付け る イ ンデ ッ ク ス を設定 し
ます。 num は イ ンデ ッ ク ス を指定 し ます。 イ ンデ ッ ク
ス は 1 か ら 開始 し ます。
setType(typeName)
ポー ト のデー タ 型を設定 し ます。Bool、UFix_<n>_<b>、
Fix_<n>_<b>、 signed、 ま たは unsigned のいずれかに設
定 し ます。 signed お よ び unsigned では、 幅 と 2 進小数
点位置は変更 さ れません。
XFloat_<exponent_bit_width>_fraction_bit_width> も サ
ポー ト さ れます。 次に例を示 し ます。
ap_return_port = this_block.port('ap_return');
ap_return_port.setType('XFloat_30_2');
setWidth(w)
ポー ト 幅を w に設定 し ます。
setBinpt(bp)
ポー ト の 2 進小数点位置を bp に設定 し ます。
makeBool()
ポー ト のデー タ 型を Bool に し ます。
makeSigned()
ポー ト のデー タ 型を signed に し ます。
makeUnsigned()
ポー ト のデー タ 型を unsinged に し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
126
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
メソッド
説明
setConstant()
ポー ト のデー タ 型を constant に し ます。
setGatewayFileName(filename)
ポー ト のシ ミ ュ レーシ ョ ンお よ びテ ス ト ベンチ生成で
使用す る デー タ フ ァ イ ルの名前を指定 し ます。 双方向
ポー ト に対 し て シ ミ ュ レーシ ョ ン で使用す る 信号を指
定 し た フ ァ イ ルを指定す る ために使用 し ます。 こ のパ
ラ メ ー タ ーを入力ポー ト ま たは出力ポー ト に設定す る
のは無効であ り 、 無視 さ れます。
setRate(rate)
ポー ト の レー ト を設定 し ます。 rate は MATLAB 倍精度
の正の整数で指定す る か、 定数の場合は Inf に し ます。
useHDLVector(s)
1 ビ ッ ト ポー ト が 1 ビ ッ ト (std_logic な ど) で表 さ れて
い る か、 ベ ク タ ー (std_logic_vector(0 downto 0) な ど) で
表 さ れてい る か を示 し ます。
HDLTypeIsVector()
1 ビ ッ ト ポー ト の表現を std_logic_vector(0 downto 0) に
設定 し ます。
ブ ラ ッ ク ボ ッ ク スでの複数の独立ク ロ ッ ク サポー ト
ポー ト 接続の DRC
ブ ラ ッ ク ボ ッ ク ス が複数の独立ハー ド ウ ェ ア ク ロ ッ ク デザ イ ンの コ ン テ キ ス ト で使用 さ れ る 場合、 そのポー ト 接続
の DRC を コ ン フ ィ ギ ュ レーシ ョ ン M 関数に追加す る 必要があ り ます。 こ れに よ り 、 さ ま ざ ま な ク ロ ッ ク ソ ース を使
用 し た無効なポー ト 接続や不正なポー ト 接続を避け る こ と がで き ます。 すべてのポー ト 信号が適切な ク ロ ッ ク が供給
さ れ る サブシ ス テ ム イ ン タ ーフ ェ イ ス に接続 さ れ る よ う に し て く だ さ い。
特定の ク ロ ッ ク ド メ イ ン か ら のポー ト の リ ス ト を指定 し て、 一緒に ま と め る には、 checkPortsOfSameClockDomain()
ユーテ ィ リ テ ィ を使用す る 必要があ り ます。 こ の API への入力引数は SysgenBlockDescriptor オブジ ェ ク ト で、 特定の
ク ロ ッ ク ド メ イ ンに関連 し たポー ト 名の リ ス ト を後に続けて指定 し ます。
例 : checkPortsOfSameClockDomain (<block_descriptor>, '<port_name_1>', ‘<port_name_2>’,
'<port_name_3>', '<port_name_4>');
上記の例の場合、 API でエ ラ ー チ ェ ッ ク が実行 さ れ、 4 つのポー ト が同 じ サブシ ス テ ム ク ロ ッ ク ド メ イ ンに接続 さ
れてい る こ と が検証 さ れます。
ポー ト のサン プ リ ング レー ト の設定
複数 ク ロ ッ ク ハー ド ウ ェ ア デザ イ ンの場合、 ポー ト イ ン タ ーフ ェ イ ス の ク ロ ッ ク 周期は接続 さ れた ク ロ ッ ク 付 き サ
ブシ ス テ ム ド メ イ ン を使用 し て計算 さ れ る 必要があ り ます。 デフ ォ ル ト では、 同期シ ス テ ム ク ロ ッ ク ソ ース がすべ
てのポー ト で使用 さ れますが、 非同期 ク ロ ッ ク ハー ド ウ ェ ア デザ イ ンの場合は、 すべてのポー ト の ク ロ ッ ク ソ ース
を明示的に指定す る 必要があ り ます (出力ポー ト ク ロ ッ ク はブ ロ ッ ク の入力ポー ト ク ロ ッ ク と 異な る 場合な ど)。
注記 : サンプル レー ト は 1.0 に、複数の独立 ク ロ ッ ク のブ ラ ッ ク ボ ッ ク ス デザ イ ンの出力ポー ト すべてに対 し て設定
す る 必要があ り ます。 自動的に出力ポー ト はデス テ ィ ネーシ ョ ン ク ロ ッ ク のサブシ ス テ ム周期に設定 さ れます。
SysgenPortDescriptor には、 ポー ト のサンプ リ ン グ レー ト を設定す る setRate メ ソ ッ ド が含まれてい ます。
例 :port('<port_name>').setRate(1.0)
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
127
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
ブ ラ ッ ク ボ ッ ク スの ク ロ ッ キング
同期ま たは非同期ブ ラ ッ ク ボ ッ ク ス モジ ュ ールを イ ン ポー ト す る には、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数でモジ ュ ー
ルの ク ロ ッ ク に関す る 情報を指定す る 必要があ り ます。 System Generator では、 ク ロ ッ ク と ク ロ ッ ク イ ネーブルはほ
かの タ イ プのポー ト と は異な る 方法で処理 さ れ ます。 イ ン ポー ト し たモジ ュ ールの ク ロ ッ ク ポー ト には、 ク ロ ッ ク
イ ネーブル ポー ト が必要です。 つ ま り 、 ク ロ ッ ク と ク ロ ッ ク イ ネーブルはペア と し て定義 し 、 イ ン ポー ト し た モ
ジ ュ ール内でペア と し て存在す る 必要があ り ます。 こ れは、 単一の同期 ク ロ ッ ク と 複数の独立 ク ロ ッ ク デザ イ ンの両
方に適用 さ れます。
SysgenBlockDescriptor には、 addClkCEPair メ ソ ッ ド が含まれ、 ク ロ ッ ク サブシ ス テ ム ド メ イ ン を使用 し て ク ロ ッ ク 、
ク ロ ッ ク イ ネーブル、 お よ びそれに関連す る ク ロ ッ ク 周期を定義で き る よ う にな っ てい ます。 ク ロ ッ ク ド メ イ ン情
報は、 同期の単一 ク ロ ッ ク のデザ イ ンには必要あ り ません。
1 つ目のパ ラ メ ー タ ーは ク ロ ッ ク ポー ト の名前 (モジ ュ ールで使用 さ れ る 名前)、 2 つ目のパ ラ メ ー タ ーは ク ロ ッ ク イ
ネーブル ポー ト の名前 (モジ ュ ールで使用 さ れ る 名前) を定義 し ます。
ク ロ ッ ク と ク ロ ッ ク イ ネーブルのペアのポー ト 名は、 次の命名規則に従っ て付け る 必要があ り ます。
•
ク ロ ッ ク ポー ト 名には、 clk を含め ます。
•
ク ロ ッ ク イ ネーブル ポー ト 名には、 ce を含め ます。
•
文字列の clk お よ び ce 以外の部分を同 じ に し ます (my_clk_1 と my_ce_1 な ど)。
3 つ目のパ ラ メ ー タ ーは、 ク ロ ッ ク と ク ロ ッ ク イ ネーブルの レー ト 関係を定義 し ま す。 こ の レー ト パ ラ メ ー タ ーで
は、 Simulink のサ ン プ リ ン グ レー ト ではな く 、 ク ロ ッ ク のサ ン プル周期 と 必要な ク ロ ッ ク イ ネーブルのサン プル周
期間の関係を System Generator に伝え ま す。 レー ト パ ラ メ ー タ ーは整数値で、 ク ロ ッ ク レー ト と それに対応す る ク
ロ ッ ク イ ネーブル レー ト 間の比率が定義 さ れます。
複数の独立 ク ロ ッ ク デザ イ ンの場合、 4 つ目お よ び 5 つ目のパ ラ メ ー タ ーが必須です。
4 つ目のパ ラ メ ー タ ーには、 ブール値が維持 さ れ、 ク ロ ッ ク お よ び ク ロ ッ ク イ ネーブルのペアがグ ラ ン ド に接続 さ れ
る か ど う かが定義 さ れ ます。 ど ち ら も true に設定す る と 、 ク ロ ッ ク と ク ロ ッ ク イ ネーブルがシ ミ ュ レーシ ョ ン中に
グ ラ ン ド 接続 さ れます。 false に設定す る と 、 ク ロ ッ ク お よ び ク ロ ッ ク イ ネーブル レー ト の ト ラ ンザ ク シ ョ ンがア ク
テ ィ ベー ト さ れます。
5 つ目のパ ラ メ ー タ ーでは、 該当す る ク ロ ッ ク と ク ロ ッ ク イ ネーブルのペアの ク ロ ッ ク 周期を定義 し ます。 複数の独
立 ク ロ ッ ク デザ イ ン で ク ロ ッ ク 周期を設定す る には、 SysgenPortDescriptor ブ ラ ッ ク ボ ッ ク ス の clockDomain プ ロ パ
テ ィ を使用す る 必要があ り ます。
例:
rate_data = this_block.port('<port_name>').rate;
clkDomain_data = this_block.port(<port_name>).clockDomain;
this_block.addClkCEPair('clk',ce',rate_data, false, clkDomain_data);
HDL 協調シ ミ ュ レーシ ョ ン
概要
こ のセ ク シ ョ ンでは、 ザ イ リ ン ク ス ブ ロ ッ ク 、 HDL モジ ュ ール、 Simulink ブ ロ ッ ク デザ イ ン を含む混合言語/混合フ
ロ ー デザ イ ン全体を シ ミ ュ レーシ ョ ンする 方法を説明 し ます。
System Generator は、 ブ ラ ッ ク ボ ッ ク ス を シ ミ ュ レーシ ョ ンする 際、 自動的に HDL シ ミ ュ レー タ を起動 し て必要な追
加の HDL (HDL テ ス ト ベ ン チ) を 生成 し 、 HDL を コ ン パ イ ル し 、 シ ミ ュ レ ーシ ョ ン イ ベ ン ト を ス ケ ジ ュ ール し 、
Simulink と HDL シ ミ ュ レー タ の間のデー タ 交換を制御 し ます。 こ れを HDL 協調シ ミ ュ レーシ ョ ン と 呼びます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
128
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
HDL シ ミ ュ レー タ の設定 ブ ラ ッ ク ボ ッ ク ス の HDL は、 Simulink で System Generator イ ン タ ーフ ェ イ ス を使用 し て Vivado シ ミ ュ レー タ ま たは
ModelSim にア ク セ スす る こ と に よ り 、 協調シ ミ ュ レーシ ョ ンで き ます。
ザイ リ ン ク ス シ ミ ュ レー タ
ブ ラ ッ ク ボ ッ ク ス に関連付け ら れてい る HDL をザ イ リ ン ク ス シ ミ ュ レー タ で協調シ ミ ュ レーシ ョ ンする には、Black
Box ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク ス で [Simulation mode] を [Vivado Simulator] に設定 し ます。 こ れで、
モデルに対 し て HDL 協調シ ミ ュ レーシ ョ ン を実行す る 準備がで き ま し た。 HDL 協調シ ミ ュ レーシ ョ ンは、 自動的に
実行 さ れます。
ModelSim シ ミ ュ レー タ
ModelSim シ ミ ュ レー タ を使用す る には、 [Xilinx Blockset] → [Tools] ラ イ ブ ラ リ にあ る ModelSim ブ ロ ッ ク を Simulink
ダ イ ア グ ラ ムに追加す る 必要があ り ます。
ModelSim シ ミ ュ レー タ で協調シ ミ ュ レーシ ョ ン を実行す る 各 Black Box ブ ロ ッ ク のパ ラ メ ー タ ー ダ イ ア ロ グ ボ ッ ク
ス で、 追加 し たブ ラ ッ ク ボ ッ ク ス で表 さ れ る ModelSim セ ッ シ ョ ン を使用す る よ う 設定 し ます。 こ れには、 次の 2 つ
のパ ラ メ ー タ ーを設定 し ます。
1.[Simulation mode] を [External co-simulator] に設定 し ます。
2.[HDL Co-Simulator to use] に ModelSim ブ ロ ッ ク の名前 (ModelSim な ど) を入力 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
129
第 6 章 : HDL モ ジ ュ ールのイ ンポー ト
ModelSim ブ ロ ッ ク のパ ラ メ ー タ ダ イ ア ロ グ ボ ッ ク ス には、 ModelSim でのシ ミ ュ レーシ ョ ン セ ッ シ ョ ン を制御す る
オプシ ョ ンが含ま れてい ます。 詳細は、 ブ ロ ッ ク のヘルプ ページ を参照 し て く だ さ い。 こ れで、 こ れ ら のオプシ ョ ン
でモデルがシ ミ ュ レーシ ョ ン で き る よ う にな っ たので、 HDL 協調シ ミ ュ レーシ ョ ン が自動的に実行 さ れ る よ う にな
り ます。
複数ブ ラ ッ ク ボ ッ ク スの協調シ ミ ュ レーシ ョ ン System Generator では、多 く のブ ラ ッ ク ボ ッ ク ス で同 じ ModelSim 協調シ ミ ュ レーシ ョ ン セ ッ シ ョ ンが共有で き ます。
た と えば、 同 じ ModelSim ブ ロ ッ ク を使用す る よ う に多 く のブ ラ ッ ク ボ ッ ク ス を設定で き ま す。 こ の場合、 System
Generator では、自動的にすべてのブ ラ ッ ク ボ ッ ク ス HDL コ ン ポーネ ン ト が 1 つの共有の最上位協調シ ミ ュ レーシ ョ
ン コ ン ポーネ ン ト に ま と め ら ま す。 こ れはユーザーには見え ま せん。 Simulink シ ミ ュ レーシ ョ ン で複数のブ ラ ッ ク
ボ ッ ク ス を協調シ ミ ュ レーシ ョ ンす る ためには、 ModelSim シ ミ ュ レーシ ョ ン ラ イ セ ン ス が 1 つだけ必要です。
ま た、 複数のブ ラ ッ ク ボ ッ ク ス は、 各ブ ラ ッ ク ボ ッ ク ス の [Simulation mode] に [Vivado Simulator] オプシ ョ ン を選択
す る だけで、 Vivado シ ミ ュ レー タ で協調シ ミ ュ レーシ ョ ンする こ と も で き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
130
第 7章
System Generator の コ ンパイル タ イ プ
System Generator では、 複数の方法でデザ イ ン を同等の も し く は下位レベルの表記に コ ンパ イ ルで き ます。 デザ イ ン
が コ ンパ イ ル さ れ る 方法は、 [System Generator] ダ イ ア ロ グ ボ ッ ク ス の設定に よ っ て異な り ま す。 異な る コ ンパ イ ル
タ イ プがサポー ト さ れてい る ので、 デザ イ ン環境に合っ た記述を選択で き ます。 た と えば、 そのデザ イ ンが大規模シ
ス テ ムの コ ン ポーネ ン ト と し て使用 さ れ る 場合は、 HDL ネ ッ ト リ ス ト ま たは IP カ タ ロ グ を タ ーゲ ッ ト にする のが適
し てい ます。
[HDL Netlist] コ ンパ イ ル
System Generator ではデフ ォ ル ト の生成 タ ーゲ ッ ト と し
て [HDL Netlist] コ ンパ イ ル タ イ プが使用 さ れます。
[Hardware Co-Simulation] コ ン パ イ
ル
System Generator を ど の よ う に設定すれば Simulink お よ
び ModelSim で使用可能な FPGA ハー ド ウ ェ アにデザ イ
ン を コ ンパ イ ルで き る かについて説明 し ます。
IP カ タ ロ グの コ ンパ イ ル
System Generator デザ イ ン を Vivado IP カ タ ロ グに追加可
能な IP コ ア と し てパ ッ ケージす る 方法について説明 し
ます。
合成済みチ ェ ッ ク ポ イ ン ト の コ ン
パイル
Vivado IDE プ ロ ジ ェ ク ト で使用で き る 合成済みチ ェ ッ
ク ポ イ ン ト フ ァ イ ル (synth_1.dcp) を生成す る 方法につ
いて説明 し ます。
[HDL Netlist] コ ンパイル
System Generator ではデ フ ォ ル ト の生成 タ ーゲ ッ ト と し て [HDL Netlist] コ ン パ イ ル タ イ プが使用 さ れ ま す。 [HDL
Netlist] コ ンパ イ ル フ ロ ーに関す る 詳細は、 コ ンパ イ ル結果を参照 し て く だ さ い。
次に示す よ う に、 [System Generator] ダ イ ア ロ グ ボ ッ ク ス の [Compilation] フ ィ ール ド を ク リ ッ ク し て [HDL Netlist] を
選択 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
131
第 7 章 : System Generator の コ ンパイル タ イ プ
[Hardware Co‐Simulation] コ ンパイル
System Generator では、 Simulink シ ミ ュ レーシ ョ ン と のループで使用可能な FPGA ハー ド ウ ェ アにデザ イ ン を コ ンパ
イ ルで き ます。 こ の機能については、 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用を参照 し て く だ さ い。
次 に 示す よ う に、 [System Generator] ダ イ ア ロ グ ボ ッ ク ス の [Compilation] フ ィ ール ド を ク リ ッ ク し て [Hardware
Co-Simulation] を ク リ ッ ク し 、 必要なハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン プ ラ ッ ト フ ォーム を選択 し ます。 リ ス ト さ
れ る 使用可能な協調シ ミ ュ レーシ ョ ン プ ラ ッ ト フ ォームは、シ ス テ ムに イ ン ス ト ール さ れてい る ハー ド ウ ェ ア協調シ
ミ ュ レーシ ョ ン プ ラ グ イ ンに よ っ て異な り ます。
IP カ タ ロ グの コ ンパイル
[IP Packager] コ ンパ イ ル オプシ ョ ン を選択する と 、 System Generator デザ イ ン を Vivado IP カ タ ロ グに含め る こ と がで
き る IP モジ ュ ールにパ ッ ケージす る こ と がで き ます。生成 さ れた IP は別の Vivado ユーザー デザ イ ンにサブモジ ュ ー
ル と し て追加で き る よ う にな り ます。
System Generator は、 ブ ロ ッ ク デザ イ ンに基づいて HDL ネ ッ ト リ ス ト を生成 し ます。 デザ イ ンに Vivado IP モジ ュ ー
ルが含ま れ る 場合は、 必要な IP フ ァ イ ルがすべて IP と い う 名前のサブ フ ォ ルダーに コ ピー さ れます。 最後に、 RTL
デザ イ ン フ ァ イ ル と Vivado IP デザ イ ン フ ァ イ ルがすべて ZIP フ ァ イ ルに圧縮 さ れ、 ip_catalogr と い う 名前のサブ
フ ォ ルダーに含ま れます。
IP カ タ ログ フ ロー
System Generator デザ イ ンで System Generator ト ー ク ン を ダブル ク リ ッ ク し ます。
[Compilation] フ ィ ール ド の > ボ タ ン を ク リ ッ ク し 、 [IP Catalog] を選択 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
132
第 7 章 : System Generator の コ ンパイル タ イ プ
[Settings] ボ タ ン がオ ン にな り ます。 ク リ ッ ク す る と 、 次の よ う なダ イ ア ロ グ ボ ッ ク ス が表示 さ れ、 Vivado IP カ タ ロ
グに表示 さ れ る モジ ュ ールに関す る 情報が入力で き ます。
[Target directory] フ ィ ール ド では生成フ ァ イ ルのデ ィ レ ク ト リ を指定で き ます。 [Generate] ボ タ ン を ク リ ッ ク す る と 、
IP カ タ ロ グ フ ロ ーが開始 し ます。 次の よ う な [Compilation status] ウ ィ ン ド ウ が表示 さ れ、 フ ロ ーの進捗状況が示 さ れ
ます。 IP カ タ ロ グ フ ロ ーが終了 し た ら 、 「Generation Completed」 と 表示 さ れます。 [Show Details] を ク リ ッ ク す る と 、
詳細な情報が表示 さ れます。
指定 し た タ ーゲ ッ ト デ ィ レ ク ト リ には、ip_catalog と い う 名前の フ ォ ルダーがで き ます。 こ の フ ォ ルダーには、System
Generator デザ イ ンか ら IP を作成す る のに必要な フ ァ イ ルがすべて含まれます。丸で囲んだ ZIP フ ァ イ ルには、 System
Generator デザ イ ン を IP と し て Vivado IP カ タ ロ グに含め る ために必要な フ ァ イ ルがすべて含まれます。
AXI4 イ ン タ ー フ ェ イ スの使用
IP カ タ ロ グの設定で [Auto Infer Interface] オプシ ョ ン を選択す る と 、 AXI4 イ ン タ ーフ ェ イ ス が自動的に Gateway In お
よ び Gateway Out ポ ー ト か ら 推論 さ れ ま す。 [Auto Infer Interface] オ プ シ ョ ン で は、 信号 が ポ ー ト 名 に 基づ い て
AXI4-Stream、 AXI4-Lite、 AXI4 イ ン タ ーフ ェ イ ス に ま と め ら れます。
[Auto Infer Interface] オプシ ョ ンでは、 次の条件に基づいて イ ン タ ーフ ェ イ ス が推論 さ れます。
•
Gateway In お よ び Gateway Out ポー ト 名の末尾は AXI4 イ ン タ ーフ ェ イ ス規格の信号名 と ま っ た く 同 じ であ る 必
要があ り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
133
第 7 章 : System Generator の コ ンパイル タ イ プ
•
デザ イ ンには、 有効な AXI4 イ ン タ ーフ ェ イ ス と 考え ら れ る 最低数の信号が含まれてい る 必要があ り ます。
た と え ば、 デ ザ イ ン に PortName_tdata お よ び PortName_tvalid と い う 名 前 の 2 つ の Gateway In ポ ー ト と 、
PortName_tready と い う 名前の Gateway Out ポー ト が含まれ る 場合、 [Auto Infer Interface] オプシ ョ ンで こ れ ら の 3 つの
ポー ト が PortName と い う 名前の単一の AXI4-Stream ポー ト に推論 さ れます。 こ の例の場合、 次の よ う にな り ます。
•
ポー ト 名の接尾語は AXI4-Stream イ ン タ ーフ ェ イ ス の信号 (TDATA、 TREADY お よ び TVALID) と 同 じ です。
•
こ れ ら の 3 つの信号は AXI4-Stream イ ン タ ーフ ェ イ ス に必要な最小限の信号です。
オプシ ョ ンの AXI4 サ イ ド バン ド 信号が存在 し (た と えば TUSER 信号は AXI4-Stream 規格でオプシ ョ ン)、それ ら の名
前が同 じ 命名規則を使用 し て付け ら れてい る 場合は、 同 じ AXI4 イ ン タ ーフ ェ イ ス に ま と め ら れます。
AXI4 イ ン タ ーフ ェ イ ス の信号名 と AXI4 イ ン タ ーフ ェ イ ス に最低限必要な信号な ど、 AXI4 イ ン タ ーフ ェ イ ス の詳細
は、 『Vivado Design Suite : AXI リ フ ァ レ ン ス ガ イ ド 』 (UG1037) を参照 し て く だ さ い。
IP モ ジ ュ ールへのテ ス ト ベン チの含有
新 し く 生成 し た IP の機能を検証す る には、 テ ス ト ベンチを含め る 必要があ り ます。 次の よ う に、 [Create testbench] を
オンに し てお く と 、 [Generate] ボ タ ン を ク リ ッ ク し た と き にテ ス ト ベンチが自動的に含まれ る よ う にな り ます。
テ ス ト ベンチを含めた場合、 次の 3 つの手順を フ ロ ーに追加す る と 、 IP の機能を検証で き ます。
手順 1 : Vivado IP カ タ ロ グへ新 し い IP を追加 し ます。 詳細は、 『Vivado Design Suite ユーザー ガ イ ド : IP を使用 し た
設計』 (UG896) を参照 し て く だ さ い。
手順 2 : Vivado IDE プ ロ ジ ェ ク ト を新規作成 し 、 その IP を最上位 ソ ース と し て追加
手順 3 : シ ミ ュ レーシ ョ ン、 合成、 イ ンプ リ メ ン テーシ ョ ン を実行 し 、 生成 し た IP の機能を検証
次の図は、 新規作成 し た IP を最上位 ソ ース と し て追加 し た Vivado IDE プ ロ ジ ェ ク ト を示 し てい ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
134
第 7 章 : System Generator の コ ンパイル タ イ プ
IP モ ジ ュ ールへのイ ン タ ー フ ェ イ ス資料の追加
[Create interface document] を オ ン に し て [Generate] ボ タ ン を ク リ ッ ク す る と 、 System Generator で IP の イ ン タ ーフ ェ
イ ス資料が生成 さ れ、 その HTML 資料が IP と 一緒にパ ッ ケージ さ れます。
netlist フ ォ ルダーの下には documentation フ ォ ルダーが新 し く 作成 さ れます。 こ の新規 IP を Vivado で右 ク リ ッ ク し て
[Data sheet] を ク リ ッ ク す る と 、 IP の イ ン タ ーフ ェ イ ス情報を含む HTML フ ァ イ ルが開き ます。
Vivado IP カ タ ログへの生成 さ れた IP の追加
System Generator か ら 生成 し た IP を 使用す る には、 プ ロ ジ ェ ク ト を 新規作成す る か、 IP を 作成す る と き に System
Generator で指定 し たの と 同 じ デバ イ ス を タ ーゲ ッ ト にする 既存プ ロ ジ ェ ク ト を開き ます。
注記 : IP は こ のプ ロ ジ ェ ク ト か ら し か使用で き ません。こ の IP を使用す る 新 し いプ ロ ジ ェ ク ト ご と に同 じ 手順を実行
す る 必要があ り ます。
次に Project Manager の [IP Catalog] を ク リ ッ ク し 、 [IP Catalog] ビ ュ ーの空のエ リ ア で右 ク リ ッ ク し ま す。 [Update IP
Catalog] を ク リ ッ ク し 、 新規 IP を含むデ ィ レ ク ト リ を追加 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
135
第 7 章 : System Generator の コ ンパイル タ イ プ
IP が IP カ タ ロ グに追加 さ れた ら 、 IP カ タ ロ グのその他の IP と 同様、 大規模デザ イ ンに含め る こ と がで き る よ う にな
り ます。
合成済みチ ェ ッ ク ポ イ ン ト の コ ンパイル
Vivado ツールでは、 デザ イ ン フ ロ ーの主要な段階でデザ イ ン を保存お よ び復元す る ための メ カ ニ ズ ム と し て、 デザ
イ ン チ ェ ッ ク ポ イ ン ト フ ァ イ ル synth_1.dcp が使用 さ れます。 チ ェ ッ ク ポ イ ン ト は、 フ ロ ーの特定の地点におけ る デ
ザ イ ンの スナ ッ プシ ョ ッ ト です。 合成済みチ ェ ッ ク ポ イ ン ト と は、 デザ イ ンが問題な く 合成 さ れてか ら out-of-context
(OOC) モー ド で作成 さ れたチ ェ ッ ク ポ イ ン ト フ ァ イ ルです。
次の図に示す よ う に、 [Synthesized Checkpoint] コ ンパ イ ル タ ーゲ ッ ト を選択す る と 、 synth_1.dcp と い う 名前の合成済
みチ ェ ッ ク ポ イ ン ト タ ーゲ ッ ト フ ァ イ ルが作成 さ れ、 タ ーゲ ッ ト デ ィ レ ク ト リ に保存 さ れます。
こ の synth_1.dcp フ ァ イ ルは、 こ の後 Vivado IDE プ ロ ジ ェ ク ト で使用で き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
136
第 7 章 : System Generator の コ ンパイル タ イ プ
カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
System Generator には、 ユーザーが独自の コ ンパ イ ル タ ーゲ ッ ト を作成で き る カ ス タ ム コ ンパ イ ル基盤が含まれてい
ま す。 System Generator デザ イ ン か ら HDL を生成で き る だけでな く 、 HDL 生成前後ど ち ら の段階 も 自動化す る コ ン
パ イ ル タ ーゲ ッ ト プ ラ グ イ ン を作成で き ます。 カ ス タ ム コ ンパ イ ル タ ーゲ ッ ト の作成に関す る 詳細は、 カ ス タ ム コ
ンパ イ ル タ ーゲ ッ ト の作成を参照 し て く だ さ い。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
137
第 8章
カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
System Generator には、 ユーザーが独自の コ ンパ イ ル タ ーゲ ッ ト を作成で き る カ ス タ ム コ ンパ イ ル基盤が含まれてい
ます。 System Generator デザ イ ンか ら HDL を生成で き る だけでな く 、 Vivado IDE プ ロ ジ ェ ク ト 生成前後ど ち ら の段階
も 自動化す る コ ンパ イ ル タ ーゲ ッ ト プ ラ グ イ ン を作成で き ます。 カ ス タ ム コ ンパ イ ル タ ーゲ ッ ト を作成す る には、
MATLAB 環境でオブジ ェ ク ト 指向プ ロ グ ラ ムの概念について知っ てお く 必要があ り ます。
xilinx_compilation ベース ク ラ ス
カ ス タ ム コ ンパ イ ル基盤には、 xilinx_compilation と い う ベース ク ラ ス が提供 さ れてい ます。 こ のベース ク ラ ス か ら
は、 サブ ク ラ ス を作成 し てそのプ ロ パテ ィ を使用 し 、 メ ンバー関数を上書 き し てユーザーの機能を イ ンプ リ メ ン ト で
き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
138
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
新規 コ ンパイル タ ーゲ ッ ト の作成
次は、 新 し い コ ンパ イ ル タ ーゲ ッ ト を作成す る 一般的な手順です。 特定の タ ーゲ ッ ト を作成する 例については、 次の
説明を参照 し て く だ さ い。
ヘルパー関数の実行
次のヘルパー関数を実行 し て新 し い コ ンパ イ ル タ ーゲ ッ ト を作成 し ます。
xilinx.environment.addCompilationTarget(target_name, directory_name)
た と えば、 次の よ う な コ マ ン ド を実行す る と し ます。
xilinx.environment.addCompilationTarget('Impl', 'U:\demo')
MATLAB コ マ ン ド ウ ィ ン ド ウ に こ の コ マ ン ド を入力す る と 、 次の よ う にな り ます。
1.
U:\demo に Impl/@Impl と い う 名前の フ ォ ルダーが作成 さ れます。
2. フ ォ ルダー内には xilinx_compilation ベース ク ラ ス か ら Impl テ ンプ レー ト ク ラ ス フ ァ イ ル (Impl.m) が作成 さ れ
ます。 こ の段階で フ ァ イ ルに変更がない場合は、 新 し く 作成 さ れた Impl コ ンパ イ ル タ ーゲ ッ ト が HDL Netlist コ ンパ
イ ル タ ーゲ ッ ト と 同 じ よ う に動作 し ます。 次は Impl.m フ ァ イ ルの内容を示 し てい ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
139
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
3. ヘルパー関数に よ り MATLAB パス に U:\demo\Impl が追加 さ れ る ので、 新 し い ク ラ ス の Impl が MATLAB に表示
さ れ る よ う にな り ます。
注記 : target_name には スペース を含め る こ と がで き ません。 ク ラ ス が作成 さ れた ら 、 ク ラ ス の target_name プ ロ パテ ィ
に スペース を追加で き ます。
新規ボー ド タ ーゲ ッ ト の作成
こ の イ ン タ ーフ ェ イ ス を使用す る と 、 System Generator で新 し い開発ボー ド をサポー ト で き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
140
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
こ れには、 ボー ド 情報が Vivado IDE デー タ セ ク シ ョ ンに含まれ、 Vivado IDE でサポー ト さ れてい る 必要があ り ます。
次の addBoard コ マ ン ド の構文を使用 し て く だ さ い。
xilinx.environment.addBoard(target_name, directory_name, board_xml_dir)
次の特定 コ マ ン ド を実行す る と 、 その後に示す項目が実行 さ れます。
xilinx.environment.addBoard('Zedboard', './', 'C:\Xilinx\Vivado\2014.3\data\boards\board_parts\zynq\zed\1.2')
1.
現在のデ ィ レ ク ト リ に Zedboard/@Zedboard が作成 さ れます。Zedboard ク ラ ス が xilinx_board ク ラ ス か ら 派生 し ま
す。 xilinx_board は xilinx_compilation か ら 派生 し た も のです。
2.
Zedboard ク ラ ス ではほ と ん ど の XML
hwcosim ブ ロ ッ ク が作成 さ れます。
解析が実行 さ れ し 、 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンが実行 さ れ、
こ の関数で作成 さ れ る ク ラ ス は、 す ぐ に使用で き る 状態にな っ てい ます (XML があ っ て、 正 し い と 仮定 し た場合)。
コ ンパイル タ ーゲ ッ ト の変更
コ ンパ イ ル タ ーゲ ッ ト の ク ラ ス フ ァ イ ルに変更を加え た場合は、 次のヘルパー関数を呼び出す必要があ り ます。 次
のヘルパー関数を実行す る と 、 System Generator で新 し い ク ラ ス の定義が検出 さ れ る よ う にな り ます。
>> xilinx.environment.rehashCompilationTarget
既存 コ ンパイル タ ーゲ ッ ト の追加
カ ス タ ム コ ン パ イ ル タ ーゲ ッ ト を 含む フ ォ ルダーのパ ス を 追加す る 必要が あ り ま す。 こ れは、 次に示す よ う に、
MATLAB で提供 さ れ る addpath を使用す る と 実行で き ます。
>>addpath(‘U:\demo\Impl’);
addpath を使用す る 場合は、 相対パ ス ではな く 、 絶対パ ス を指定す る 必要があ り ます。
カ ス タ ム コ ンパイル タ ーゲ ッ ト の保存
MATLAB で savepath を使用す る と 、 カ ス タ ム コ ンパ イ ル タ ーゲ ッ ト を保存で き ます。 保存す る には、 MATLAB イ ン
ス ト ール デ ィ レ ク ト リ への書 き 込み権が必要な こ と があ り ます。
カ ス タ ム コ ンパイル タ ーゲ ッ ト の削除
カ ス タ ム コ ンパ イ ル タ ーゲ ッ ト は、 MATLAB 検索パ ス か ら タ ーゲ ッ ト へのパ ス を削除する と 削除で き ます。
ベース ク ラ スのプ ロパテ ィ および API
xilinx_compilation ベース ク ラ ス は、 次のデ ィ レ ク ト リ にあ り ます。
<Vivado Install Path>/scripts/sysgen/matlab/@xilinx_compilation
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
141
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
System Generator ト ー ク ン関連のプ ロパテ ィ および API
setup_sysgen_token()
こ の関数は、カ ス タ ム コ ンパ イ ル基盤に よ る System Generator ト ー ク ン情報を生成す る ために呼び出 さ れます。System
Generator ト ー ク ンに関す る 次の関数のいずれか を使用す る と 、 カ ス タ ム タ ーゲ ッ ト が選択 さ れた と き にデフ ォ ル ト
で ト ー ク ンが ど の よ う にな る か を設定で き ます。デフ ォ ル ト 値の フ ィ ール ド と イ ネーブル/デ ィ ス エーブルの フ ィ ール
ド は、 次の System Generator ト ー ク ンの API 関数で設定で き ます。
add_part( family, device, speed, package, temperature)
具体的な コ マ ン ド は add_part( ‘Kintex7’, ‘ xc7k325t’, ‘-1’ , ‘fbg676’, ‘’) の よ う にな り ます。 パーツ関連の API が使用 さ
れない場合、 エン ド ユーザーは リ ス ト か ら ど のデバ イ ス で も 選択で き ます。
string target_name
こ れは、 setup_sysgen_token() 関数で設定す る 必要のあ る 必須フ ィ ール ド です。
string hdl
デフ ォ ル ト 値は空の ス ト リ ン グです。 値のオプシ ョ ンは、 Verilog か VHDL です。 こ の フ ィ ール ド に値を 1 度設定 し
た ら 、 ユーザーが選択で き ない よ う にデ ィ ス エーブルにな り ます。
string synth_strategy
デフ ォ ル ト 値は空の ス ト リ ン グです。 こ のフ ィ ール ド に値を 1 度設定 し た ら 、 ユーザーが選択で き ない よ う にデ ィ ス
エーブルにな り ます。 こ の API を使用す る 場合は、 指定 し た ス ト ラ テ ジが存在す る か ど う か必ず確認 し て く だ さ い。
存在 し ない場合は、 エ ラ ーにな り ます。
string impl_strategy
デフ ォ ル ト 値は空の ス ト リ ン グです。 こ のフ ィ ール ド に値を 1 度設定 し た ら 、 ユーザーが選択で き ない よ う にデ ィ ス
エーブルにな り ます。 こ の API を使用す る 場合は、 指定 し た ス ト ラ テ ジが存在す る か ど う か必ず確認 し て く だ さ い。
存在 し ない場合は、 エ ラ ーにな り ます。
string create_tb
デフ ォ ル ト 値は空の ス ト リ ン グです。 有効なオプシ ョ ンは、 on か off です。 こ の フ ィ ール ド に値を 1 度設定 し た ら 、
ユーザーが選択で き ない よ う にデ ィ ス エーブルにな り ます。
string create_iface_doc
デフ ォ ル ト 値は空の ス ト リ ン グです。 有効なオプシ ョ ンは、 on か off です。 こ の フ ィ ール ド に値を 1 度設定 し た ら 、
ユーザーが選択で き ない よ う にデ ィ ス エーブルにな り ます。
Vivado プ ロ ジ ェ ク ト 関連のプ ロパテ ィ
top_level_module
こ のプ ロ パテ ィ は、 ユーザーの選択 し た最上位名を設定す る ために使用で き ます。 こ のパ ラ メ ー タ ーには、 MATLAB
ス ト リ ン グ を使用で き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
142
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
Vivado IDE プ ロ ジ ェ ク ト 生成関連の関数
pre_project_creation(design_info)
こ の関数は、 Vivado IDE プ ロ ジ ェ ク ト が作成 さ れ る 前に呼び出す必要があ り ます。 System Generator 基盤に よ り プ ロ
ジ ェ ク ト を作成す る 前に、 ど の フ ァ イ ルを Vivado IDE プ ロ ジ ェ ク ト に追加する 必要があ る のか、 ど の Tcl コ マ ン ド を
追加で実行す る 必要があ る のか を理解 し てお く 必要があ り ます。 場合に よ っ ては、 System Generator デザ イ ン の最上
位ポー ト の イ ン タ ーフ ェ イ ス基づいて、プ ロ ジ ェ ク ト に追加す る フ ァ イ ルがあ る 可能性 も あ り ます。こ のために、ポー
ト イ ン タ ーフ ェ イ ス を記述 し た構造が design_info と い う 関数に渡 さ れ ます。 design_info については後のセ ク シ ョ ン
で説明 し ます。
post_project_creation(design_info)
こ の関数は、 Vivado IDE プ ロ ジ ェ ク ト の作成の終わ り で呼び出す必要があ り ます。 こ れは、 プ ロ ジ ェ ク ト 生成ス ク リ
プ ト が実行 さ れた後に呼び出 さ れ る 最後の関数で、 エ ラ ーを解析 し 、 レ ポー ト を生成 し 、 Vivado IDE プ ロ ジ ェ ク ト を
開 く 場合 な ど に 便利 で す。 ポ ー ト イ ン タ ー フ ェ イ ス を 記述 し た 構造 は design_info と い う 関数 に 渡 さ れ ま す。
design_info については後のセ ク シ ョ ン で説明 し ます。
add_tcl_command(string)
こ の関数は、 追加の Tcl コ マ ン ド を ス ト リ ン グ と し て追加 し ます。 こ れ ら の Tcl コ マ ン ド は、 Vivado IDE プ ロ ジ ェ ク
ト が作成 さ れてか ら 実行 さ れます。 こ の コ マ ン ド は、 プ ロ ジ ェ ク ト 作成後にビ ッ ト ス ト リ ーム を作成す る ために使用
で き 、 特定の Tcl フ ァ イ ルを読み込むために も 使用で き ます。 コ マ ン ド は、 受信 さ れた順に実行 さ れます。
add_file(string)
こ の関数は、 Vivado IDE プ ロ ジ ェ ク ト にユーザー定義の フ ァ イ ルを追加 し ま す。 こ の API 関数は、 Vivado IDE プ ロ
ジ ェ ク ト に XDC 制約フ ァ イ ルを追加す る ために も 使用で き ます。 add_file が呼び出 さ れ る 順序は階層的に し ます。 最
上位モジ ュ ール フ ァ イ ルは最後に追加する 必要があ り ます。
run_synthesis()
こ の関数は、 Vivado IDE プ ロ ジ ェ ク ト で合成を実行 し ます。
run_implementation()
こ の関数は、 Vivado IDE プ ロ ジ ェ ク ト で イ ンプ リ メ ン テーシ ョ ン を実行 し ます。
generate_bitstream()
こ の関数は、 Vivado IDE プ ロ ジ ェ ク ト で ビ ッ ト ス ト リ ーム を生成 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
143
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
design_info
design_info は MATLAB struct で、 次の内容を含みます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
144
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成例
次の例は、 さ ま ざ ま な カ ス タ マ イ ズ済み タ ーゲ ッ ト を作成す る 方法の詳細を示 し てい ます。
例 1 : イ ン プ リ メ ン テーシ ョ ン タ ーゲ ッ ト の作成
1.
System Generator モデルを開いて、 System Generator ト ー ク ン を開き ます。 こ れに よ り 、 すべての使用可能な コ ン
パ イ ル タ ーゲ ッ ト を含む ト ー ク ンが生成 さ れます。
2.
MATLAB の コ マ ン ド ウ ィ ン ド ウ でパ ス をユーザーの要件に合わせて変更 し た ら 、 次の コ マ ン ド を入力 し ます。
xilinx.environment.addCompilationTarget('Impl', 'U:\demo')
こ れに よ り 、 ユーザーが編集可能なテ ンプ レー ト か ら 派生 し た ク ラ ス が提供 さ れます。
3.
MATLAB の コ マ ン ド ウ ィ ン ド ウ に、 次の よ う に入力 し ます。
xilinx.environment.rehashCompilationTarget
こ れに よ り 、 新 し い コ ンパ イ ル タ ーゲ ッ ト が System Generator ト ー ク ンで認識 さ れ る よ う にな り ます。
4.
System Generator を一旦閉 じ て、 開 き 直 し ます。 次の よ う に コ ンパ イ ル タ ーゲ ッ ト の [Impl] が ト ー ク ンに表示 さ
れ る よ う にな り ます。
5.
こ の段階では、 [Impl] を選択 し て も System Generator ト ー ク ンでは何のカ ス タ マ イ ズ も 実行 さ れず、 [HDL Netlist]
コ ンパ イ ル タ ーゲ ッ ト と 同 じ にな り ます。
6.
MATLAB Editor で U:\demo\Impl\@Impl\Impl.m を開 き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
145
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
7.
必要に応 じ て setup_sysgen_token() 関数を入力 し ます。 こ の方法を使用する と 、 ユーザー定義のカ ス タ ム コ ンパ
イ ルが選択 さ れた場合に、 イ ネーブル/デ ィ ス エーブルの フ ィ ール ド も 含め、 System Generator ト ー ク ンが ど の よ
う に表示 さ れ る か を ユーザーが制御で き ます。
8.
MATLAB の コ マ ン ド ウ ィ ン ド ウ に、 次の コ マ ン ド を入力す る 必要があ り ます。
xilinx.environment.rehashCompilationTarget
こ れに よ り 、 [Impl] のア ッ プデー ト さ れた ク ラ ス定義が使用 さ れ る よ う にな り ます。
9.
System Generator を一旦閉 じ て、 開 き 直 し ます。 [Compilation] タ ーゲ ッ ト リ ス ト か ら [Impl] を選択 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
146
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
10. System Generator ト ー ク ンは次の よ う に表示 さ れます。
11. [Hardware description language] フ ィ ール ド が Impl ク ラ ス で設定 し たの と 同 じ にな る よ う に変更 し 、[Implementation
strategy] フ ィ ール ド がユーザーが修正で き ない よ う にな っ てい る こ と を確認 し ます。
12. すべてのユーザー指定の フ ァ イ ルお よ び実行す る その他の Tcl コ マ ン ド は、 Vivado IDE プ ロ ジ ェ ク ト の作成前に
知っ てお く 必要があ り ます。 次は、 pre_project_creation() 関数を実行 し ます。
13. MATLAB の コ マ ン ド ウ ィ ン ド ウ に、 次の よ う に入力 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
147
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
xilinx.environment.rehashCompilationTarget
こ れに よ り 、 [Impl] のア ッ プデー ト さ れた ク ラ ス定義が使用 さ れ る よ う にな り ます。
14. System Generator を一旦閉 じ て、 開 き 直 し ます。 [Compilation] タ ーゲ ッ ト リ ス ト か ら [Impl] を選択 し ます。
15. [Generate] を ク リ ッ ク し ます。 プ ロ セ ス が終了 し た ら 、 Vivado IDE プ ロ ジ ェ ク ト を開いて イ ンプ リ メ ン テーシ ョ
ン結果を確認で き ます。
例 2 : Zedboard タ ーゲ ッ ト の作成
1.
System Generator デザ イ ン を開 き ます。
2.
MATLAB の コ マ ン ド ウ ィ ン ド ウ でユーザーのマシ ン/ イ ン ス ト ールに合わせてパス を変更 し ます。
次の コ マ ン ド を入力 し ます。
xilinx.environment. addBoard (‘Zedboard’, 'U:\demo', 'C:\Xilinx\Vivado\2013.4\data\boards\zynq\ZED\revD')
こ れに よ り 、 ユーザーが編集可能な テ ン プ レ ー ト か ら 派生 し た ク ラ ス が提供 さ れ ま す。 最後の フ ィ ール ド は、
board.xml フ ァ イ ルを含むデ ィ レ ク ト リ に対応 し ます。
3.
MATLAB の コ マ ン ド ウ ィ ン ド ウ に、 次の よ う に入力 し ます。
xilinx.environment.rehashCompilationTarget
こ れに よ り 、 新 し い コ ンパ イ ル タ ーゲ ッ ト が System Generator ト ー ク ンで認識 さ れ る よ う にな り ます。
4.
System Generator を一旦閉 じ て、 開 き 直 し ます。
5.
次の よ う に コ ンパ イ ル タ ーゲ ッ ト の [Zedboard] が System Generator ト ー ク ンに表示 さ れ る よ う にな り ます。
6.
[Zedboard] を選択 し ます。
[Part] には、 使用可能なデバ イ ス のみがデフ ォ ル ト で選択 さ れます。
7.
[Generate] を ク リ ッ ク し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
148
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
Hardware co-Simulation ブ ロ ッ ク が生成 さ れます。
こ れで、 こ の Hardware co-Simulation ブ ロ ッ ク は、 Zedboard を含むど の System Generator デザ イ ン でで も 使用で き る よ
う にな り ま し た。
例 3 : ビ ッ ト ス ト リ ーム タ ーゲ ッ ト の作成
1.
System Generator デザ イ ン を開 き ます。
2.
最初の例の よ う に、 MATLAB の コ マ ン ド ウ ィ ン ド ウ でパ ス を ユーザーの要件に合わせて変更 し た ら 、 次の コ マ
ン ド を入力 し ます。
xilinx.environment.addCompilationTarget(‘Bitstream’, '.')
こ れに よ り 、 ユーザーが編集可能な テ ン プ レ ー ト か ら 派生 し た ク ラ ス が提供 さ れ ま す。 最後の フ ィ ール ド は、
board.xml フ ァ イ ルを含むデ ィ レ ク ト リ に対応 し ます。
3.
MATLAB の コ マ ン ド ウ ィ ン ド ウ に、 次の よ う に入力 し ます。
xilinx.environment.rehashCompilationTarget
こ れに よ り 、 新 し い コ ンパ イ ル タ ーゲ ッ ト が System Generator ト ー ク ンで認識 さ れ る よ う にな り ます。
4.
System Generator を一旦閉 じ て、 開 き 直 し ます。
5.
次の よ う に コ ンパ イ ル タ ーゲ ッ ト の [Bitstream] が System Generator ト ー ク ンに表示 さ れ る よ う にな り ます。
6.
./Bitstream/@Bitstream/Bitstream.m か ら 作成 さ れた Bitstream.m を開 き ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
149
第 8 章 : カ ス タ ム コ ンパイル タ ーゲ ッ ト の作成
7.
次の 2 つの フ ァ イ ルを ダ ウ ン ロ ー ド し ます。
8.
pre_project_creation() 関数内に次を実行す る 行を追加 し ます。
a.
ボー ド を KC705 と し て設定 し ます。
b.
新 し い最上位フ ァ イ ル (top.v) を追加 し て KC705 の差動 ク ロ ッ ク ポー ト を使用 し ます。
c.
新 し い XDC フ ァ イ ルを追加 し て、 clock、 dip、 led ポー ト に ロ ケーシ ョ ン制約を指定 し ます。
d.
新 し く 追加 さ れたモジ ュ ール top を最上位 と し て設定 し ます。
e.
[Run Synthesis]
f.
[Run Implementation]
g.
ビ ッ ト ス ト リ ーム を生成 し ます。
フ ァ イ ルを ユーザー マシ ンのデ ィ レ ク ト リ に保存 し た ら 、 add_file API でその フ ァ イ ルへの完全パ ス を指定す る 必要
があ り ます。
add_tcl_command(obj, 'set_property board xilinx.com:kintex7:kc705:1.1
[current_project]');
add_file(obj,
'/group/dspusers-xsj/umangp/rel/2013.4/cust_comp_test/bitstream_example.xdc');
add_file(obj, '/group/dspusers-xsj/umangp/rel/2013.4/cust_comp_test/top.v');
obj.top_level_module = 'top';
run_synthesis(obj);
run_implementation(obj);
generate_bitstream(obj);
8.
MATLAB の コ マ ン ド ウ ィ ン ド ウ に、 次の よ う に入力 し ます。
xilinx.environment.rehashCompilationTarget
こ れに よ り 、 新 し い コ ンパ イ ル タ ーゲ ッ ト が System Generator ト ー ク ンで認識 さ れ る よ う にな り ます。
9.
System Generator を一旦閉 じ て、 開 き 直 し ます。
10. [Bitstream] コ ンパ イ ル タ ーゲ ッ ト を選択 し ます。
11. [Generate] ボ タ ン を ク リ ッ ク し ます。
12. 生成が終了 し た ら 、 次のデ ィ レ ク ト リ か ら .bit フ ァ イ ルを見つけ る こ と がで き ます。
./<Target directory>/ Bitstream/bitstream_example.runs/impl_1/top.bit
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
150
付録 A
System Generator の GUI ユーテ ィ リ テ ィ
すばや く System Generator デザ イ ン を 作成 し て 解析す る た め の Simulink モ デルの ポ ッ プ ア ッ プ メ ニ ュ ーに グ ラ
フ ィ ッ ク コ マ ン ド を追加 し ま し た。 次の よ う に、 こ れ ら の コ マ ン ド には、 Simulink モデルのキ ャ ンバ ス で右 ク リ ッ ク
し て、 適切なザ イ リ ン ク ス コ マ ン ド を選択する と ア ク セ ス で き ます。
その他のザ イ リ ン ク ス コ マ ン ド の詳細は、 次を参照 し て く だ さ い。
[Xilinx BlockAdd]
ザ イ リ ン ク ス ブ ロ ッ ク を Simulink モデルにすばや く 追加で き る 機能です。
[Xilinx Tools] → [Save as blockAdd
default]
ブ ロ ッ ク を前 も っ て コ ン フ ィ ギ ュ レ ーシ ョ ン し て、 そのブ ロ ッ ク の複数 コ
ピーを BlockAdd 機能を使用 し て追加する 機能です。
[Xilinx BlockConnect]
Simulink モデル内でブ ロ ッ ク をすばや く 接続す る 機能です。
[Xilinx Tools] → [Terminate]
オープ ン出力ポー ト に Simulink タ ー ミ ネー タ ー ブ ロ ッ ク をすばや く 追加 し
た り 、 オープン入力ポー ト にザ イ リ ン ク ス Constant ブ ロ ッ ク をすばや く 追加
す る 機能です。
[Xilinx View Signal]
Simulink シ ミ ュ レ ーシ ョ ン の実行後に選択 し た信号の波形図 を生成で き る
よ う にす る 機能です。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
151
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
[Xilinx BlockAdd]
ザ イ リ ン ク ス ブ ロ ッ ク を Simulink モデルにすばや く 追加で き る 機能です。
起動方法
方法 1 :
Simulink キ ャ ンバ ス を右 ク リ ッ ク し て [Xilinx BlockAdd] を選択 し ます。
方法 2 :
シ ョ ー ト カ ッ ト 、 Ctrl + 1 を押 し ます。
方法 3 :
Simulink モデルのプルダ ウ ン メ ニ ュ ーか ら 次を ク リ ッ ク し ます。
[Tools] → [Xilinx] → [BlockAdd Ctrl 1]
使用方法
Simulink キ ャ ンバ ス を右 ク リ ッ ク し て [Xilinx BlockAdd] を選択 し ます。
1. 右 ク リ ッ ク
2. 選択
Simulink キ ャ ンバ ス を右 ク リ ッ ク し て [Xilinx BlockAdd] を選択 し ます。
1. ブ ロ ッ ク ま で ス ク ロール
2. ダ ブル ク リ ッ ク
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
152
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
次の図に示す よ う に、 ブ ロ ッ ク ま ですばや く ス ク ロ ールする よ う にする には、 そのブ ロ ッ ク 名の最初の何文字か を一
番上のテ キ ス ト ボ ッ ク ス に入力 し ます。 複数のブ ロ ッ ク を追加す る には、 Shift キーを押 し なが ら ブ ロ ッ ク を ク リ ッ
ク し てい き 、 Enter キーを押 し ます。
3.Enter を押す
1. 文字を入力
2.Shift + ク リ ッ ク
同 じ ブ ロ ッ ク の コ ピーを複数追加す る には、 ブ ロ ッ ク を追加 し てか ら 、 そのブ ロ ッ ク を選択 し て Ctrl + C を押 し てか
ら 、 Ctrl + V を押 し てい き ます。
[Add block] ウ ィ ン ド ウ を消すには、 Esc キーを押 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
153
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
[Xilinx Tools] → [Save as blockAdd default]
ブ ロ ッ ク を前 も っ て コ ン フ ィ ギ ュ レーシ ョ ン し て、 そのブ ロ ッ ク の複数 コ ピーを BlockAdd 機能を使用 し て追加す る
機能です。
使用方法
ブール型の Gateway In ブ ロ ッ ク を複数、 モデルに追加する 必要があ る と し ます。
1.
Gateway In ブ ロ ッ ク 1 つを モデルに追加 し ます。
2.
Gateway In ブ ロ ッ ク を ダブル ク リ ッ ク し て、 出力 タ イ プを [Boolean] に変更 し て [OK] を ク リ ッ ク し ます。
3.
変更 し た Gateway In ブ ロ ッ ク を選択 し て右 ク リ ッ ク し 、 [Xilinx Tools] → [Save as blockAdd default] を ク リ ッ ク し
ます。
4.
こ れに よ り 、 次か ら は BlockAdd 機能を使用 し てモデルに Gateway In ブ ロ ッ ク を追加す る と 、 ブ ロ ッ ク の出力型
が常にブール型にな り ます。
ブ ロ ッ ク デ フ ォル ト の復元方法
1.
デフ ォ ル ト を変更 し たブ ロ ッ ク を選択 し ます。
2.
右 ク リ ッ ク し て [Xilinx Tools] → [Clear blockAdd defaults] を ク リ ッ ク し ます。 .
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
154
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
[Xilinx BlockConnect]
Simulink モデル内でブ ロ ッ ク をすばや く 接続す る 機能です。
単純な接続
1.
次の図に示す よ う に、 ブ ロ ッ ク のオープ ン ポー ト を選択 し て右 ク リ ッ ク し 、 [Xilinx BlockConnect] を ク リ ッ ク し
ます。
1. 右 ク リ ッ ク
2.
2. 選択
BlockConnect が最 も 近い接続を緑の線で提案 し ます。 了承する には、 表内で接続を ダブル ク リ ッ ク し ます。 接続
さ れ る と 、 線が黒に変わ り ます。 別の接続にす る 場合は、 表内で別の接続を ク リ ッ ク し て、 緑の接続線が問題な
いか ど う か確認 し ます。
2. ダ ブル ク リ ッ ク
1. 接続を確認
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
155
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
ス マー ト 接続
次の図に示す よ う な稲妻ア イ コ ンは、 ス マー ト 接続を意味 し ます。 ス マー ト 接続には、 接続を管理 し やす く し た イ ン
テ リ ジ ェ ン ス がビル ト イ ン さ れてい ます。 た と えば、 AXI イ ン タ ーフ ェ イ ス を含むブ ロ ッ ク を右 ク リ ッ ク す る と 、
(1) AXI 信号か ら バ ス ま での接続を ま と めた り 、 分けた り で き る か、 (2) 同 じ 数の AXI 接続を含むその他のポー ト へ接
続 し た り で き ます。
「スマー ト 」 接続を示す
ポー ト のデー タ 型のチ ェ ッ ク ボ ッ ク ス は実行 さ れず、 同 じ ポー ト 数の AXI ポー ト はすべて接続で き ます。
次の別の ス マー ト 接続の例では、 Accumulator ブ ロ ッ ク 出力を右 ク リ ッ ク し 、 BlockConnect を選択 し 、 Scope を ダブル
ク リ ッ ク し て Scope ブ ロ ッ ク への ス マー ト 接続を作成 し てい ます。 Gateway Out ブ ロ ッ ク は自動的に追加 さ れます。
2 つ目の接続で こ の Scope ブ ロ ッ ク へ接続 さ れ る と 、 2 つ目のポー ト が Scope ブ ロ ッ ク に自動的に追加 さ れます。 こ
の駆動信号名が Scope を駆動す る 信号の名前に も 使用 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
156
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
[Xilinx Tools] → [Terminate]
オープ ン出力ポー ト に Simulink タ ー ミ ネー タ ー ブ ロ ッ ク をすばや く 追加 し た り 、 オープ ン入力ポー ト にザ イ リ ン ク
ス Constant ブ ロ ッ ク をすばや く 追加す る 機能です。
使用方法
オープ ン出力の終端
オープ ン入力お よ び出力ポー ト を含む次のモデルを例に説明 し ます。
こ の例の場合、 DDS Compiler 5.0 ブ ロ ッ ク を右 ク リ ッ ク し て、 次を ク リ ッ ク し ます。
[Xilinx Tools] → [Terminate] → [Output]
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
157
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
次の図は、 こ の結果、 終端処理 さ れた出力を示 し てい ます。
オープ ン入力の終端
オープ ン入力ポー ト を含む次のモデルを例に説明 し ます。
DDS Compiler 5.0 ブ ロ ッ ク を右 ク リ ッ ク し て、 次を ク リ ッ ク し ます。
[Xilinx Tools] → [Terminate] → [Input]
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
158
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
次の図は、 こ の結果、 終端処理 さ れた入力を示 し てい ます。
入力ポー ト デー タ 型要件の確認
System Generator では、各オープン入力ポー ト がザ イ リ ン ク ス Constant ブ ロ ッ ク に接続 さ れます。こ の新 し い Constant
ブ ロ ッ ク は、 次のデフ ォ ル ト 値に設定 さ れます。
[Type] : Signed (2 の補数)
[Constant value] : 0
[Number of bits] : 16
[Binary point] : 14
こ の終端ツールでは、 入力ポー ト のデー タ 型チ ェ ッ ク が実行 さ れ ません。 オープ ン ポー ト に、 た と えばブール型な
ど、 別のデー タ 型が必要な場合、 Constant ブ ロ ッ ク を ダブル ク リ ッ ク し て [Output Type] を [Boolean] に変更す る 必要
があ り ます。
デー タ 型の不一致 を チ ェ ッ ク す る には、 Simulink モデル キ ャ ン バ ス を ク リ ッ ク し て Ctrl + D を 押 し ま す。 こ れで
System Generator か ら 、 デー タ 型の不一致があればそれが レ ポー ト さ れ る よ う にな り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
159
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
[Xilinx View Signal]
Simulink シ ミ ュ レーシ ョ ンの実行後に選択 し た信号の波形図を生成で き る よ う にす る 機能です。
使用方法
1 つの信号選択
1.
次の図に示す よ う に、 表示す る 信号を選択 し て右 ク リ ッ ク し ます。
2.
[Xilinx View Signal] を ク リ ッ ク し ます。
2. 選択
1. 右 ク リ ッ ク
複数の信号選択
1.
デザ イ ン内の空白部分を右 ク リ ッ ク し ます。
1. 右 ク リ ッ ク
2.
2. 選択
[Xilinx View Signals] を ク リ ッ ク し て信号を選択する ダ イ ア ロ グ ボ ッ ク ス を表示 し ます。 こ のダ イ ア ロ グ ボ ッ ク
ス の左側には選択可能な信号がすべて リ ス ト さ れ、 右側に選択 し た信号が入力 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
160
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
3.
信号を ダブル ク リ ッ ク す る と 、 リ ス ト に信号が追加 さ れ る か、 リ ス ト か ら 信号が削除 さ れます。
ダ ブル ク リ ッ ク
4.
[OK] を ク リ ッ ク し て選択を確認す る と 、 選択 し た信号がハ イ ラ イ ト さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
161
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
波形ビ ュ ーアーでの信号の表示
追加 し た信号を波形ビ ュ ーアーで表示す る には、シ ミ ュ レーシ ョ ン を実行 し てシ ミ ュ レーシ ョ ン デー タ を生成す る 必
要があ り ます。
シ ミ ュ レーシ ョ ン ボ タ ン を ク リ ッ ク し てシ ミ ュ レーシ ョ ン を実行 し ます。
シ ミ ュ レーシ ョ ンが終了 し た ら 、 生成 さ れた波形デー タ が波形ビ ュ ーアーに表示 さ れます。
System Generator セ ッ シ ョ ン中は、 共通波形ビ ュ ーアーは閉 じ る 必要はあ り ません。 共通波形ビ ュ ーアーには、 最新
のシ ミ ュ レーシ ョ ン信号が表示 さ れます。 こ れは、 System Generator を終了す る と 閉 じ ます。
波形ビ ュ ーアー と モデル間の ク ロ ス プ ローブ
波形ビ ュ ーアーで信号名を選択す る と 、 同 じ 信号が System Generator モデルでオ レ ン ジ色でハ イ ラ イ ト さ れます。 こ
のハ イ ラ イ ト 機能に よ り 、 波形 と モデル内の ワ イ ヤ を関連付けやす く な り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
162
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
波形ビ ュ ーアーを閉 じ る
波形ビ ュ ーアーは、 次の手順で閉 じ る こ と がで き ます。
1.
デザ イ ン内の空白部分を右 ク リ ッ ク し ます。
2.
[Xilinx View Signals] を ク リ ッ ク し て信号を選択する ダ イ ア ロ グ ボ ッ ク ス を表示 し ます。
3.
[Close Waveform] を ク リ ッ ク し ます。
前に生成 し た波形デー タ の表示方法
1.
波形ビ ュ ーアーの イ ン ス タ ン ス が現在の System Generator セ ッ シ ョ ンで開いてい る こ と を確認 し ます。
2.
開 く 波形デー タ フ ァ イ ル (model_name.wdb) を見つけ ます。
注記 : 注記 : 波形デー タ は wavedata デ ィ レ ク ト リ に保存 さ れてい ます。
3. MatLab コ ン ソ ールに xlOpenWaveFormData(‘c:/waveData/model_name.wdb’) と 入力 し ます。 こ の際、 波形デー タ
フ ァ イ ルの絶対パ ス を入力す る よ う に し て く だ さ い。
4.
Waveform Viewer で波形デー タ を確認 し ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
163
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
廃止予定の WaveScope 信号名のア ッ プグ レー ド 方法
デザ イ ン に廃止予定の WaveScope ブ ロ ッ ク が含 ま れ る 場合、 こ のブ ロ ッ ク か ら の既存のモニ タ ー信号名を ア ッ プ グ
レー ド し たブ ロ ッ ク の も のに移行す る 必要があ り ます。
1.
次の図に示す よ う に、 WaveScope ブ ロ ッ ク を右 ク リ ッ ク し ます。
2.
[Xilinx Tools] → [Upgrade block] を ク リ ッ ク し ます。
•
ア ッ プグ レー ド が実行 さ れます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
164
第 章 : System Generator の GUI ユーテ ィ リ テ ィ
•
ア ッ プグ レー ド が実行 さ れた ら 、 次の図の よ う に、 廃止予定の
MATLAB コ ン ソ ールにサマ リ が記述 さ れます。
•
最後にシ ミ ュ レーシ ョ ン ボ タ ン を ク リ ッ ク し てシ ミ ュ レーシ ョ ン を実行 し ます。
•
シ ミ ュ レーシ ョ ンが終了 し た ら 、廃止予定の WaveScope ブ ロ ッ ク か ら の信号名が波形ビ ュ ーアーに表示 さ れ る よ
う にな り ます。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
WaveScope
ブ ロ ッ ク がモデルか ら 削除 さ れ、
165
付録 B
その他の リ ソ ースおよび法的通知
ザイ リ ン ク ス リ ソ ース
ア ンサー、 資料、 ダ ウ ン ロ ー ド 、 フ ォー ラ ム な ど のサポー ト リ ソ ース は、 ザ イ リ ン ク ス サポー ト サ イ ト を参照 し て
く だ さ い。
ザ イ リ ン ク ス で使用 さ れ る 技術用語については、 ザ イ リ ン ク ス用語集を参照 し て く だ さ い。
ソ リ ュ ーシ ョ ン セ ン タ ー
デバ イ ス、 ツール、 IP のサポー ト については、 ザ イ リ ン ク ス ソ リ ュ ーシ ョ ン セ ン タ ーを参照 し て く だ さ い。 ト ピ ッ
ク には、 デザ イ ン ア シ ス タ ン ト 、 ア ド バ イ ザ リ 、 ト ラ ブルシ ュ ー ト ヒ ン ト な ど が含まれます。
参考資料
次の資料は、 本書を補足す る ための も のです。
1.
『Vivado Design Suite リ フ ァ レ ン ス ガ イ ド : System Generator を使用 し たモデルベース の DSP デザ イ ン』 (UG958)
2.
『Vivado Design Suite チ ュ ー ト リ アル : System Generator を使用 し たモデルベース の DSP デザ イ ン』 (UG948)
3.
『Vivado Design Suite ユーザー ガ イ ド : Vivado IDE の使用』 (UG893)
4.
『Vivado Design Suite ユーザー ガ イ ド :デザ イ ン フ ロ ーの概要』 (UG892)
5.
『Vivado Design Suite 移行手法ガ イ ド 』 (UG911)
6.
『Vivado Design Suite ユーザー ガ イ ド :IP を使用 し た設計』 (UG896)
7.
『Vivado Design Suite ユーザー ガ イ ド :制約の使用』 (UG903)
8.
『Vivado Design Suite ユーザー ガ イ ド :Tcl ス ク リ プ ト 機能の使用』 (UG894)
9.
『Vivado Design Suite チ ュ ー ト リ アル : デザ イ ン フ ロ ーの概要』 (UG888)
10. 『Vivado Design Suite ユーザー ガ イ ド :シ ス テ ム レベル デザ イ ン入力』 (UG895)
11. 『Vivado Design Suite ユーザー ガ イ ド : リ リ ース ノ ー ト 、 イ ン ス ト ールお よ び ラ イ セ ン ス』 (UG973)
12. Vivado Design Suite ビデオ チ ュ ー ト リ アル (http://japan.xilinx.com/training/vivado/index.htm)
13. Vivado Design Suite 資料ページ (http://japan.xilinx.com/support/documentation/dt_vivado2014-4.htm)
14. Vivado Design Suite ユーザー ガ イ ド (http://japan.xilinx.com/support/documentation/dt_vivado2014-4_userguides.htm)
15. Vivado Design Suite リ フ ァ レ ン ス ガ イ ド
(http://japan.xilinx.com/support/documentation/dt_vivado2014-4_referenceguides.htm)
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
166
第 章 : 16. Vivado Design Suite 手法ガ イ ド
(http://japan.xilinx.com/support/documentation/dt_vivado2014-4_methodologyguides.htm)
17. 『UltraFast™ 設計手法 (Vivado Design Suite 用)』 (UG949)
18. Vivado Design Suite 資料ページ (http://japan.xilinx.com/support/documentation/dt_vivado2014-4.htm)
19. ザ イ リ ン ク ス ウ ェ ブサ イ ト のダ ウ ン ロ ー ド セ ン タ ー (http://japan.xilinx.com/support/download/index.htm)
法的通知
The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of Xilinx products.To the maximum extent
permitted by applicable law:(1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES AND
CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort,
including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising under, or in connection
with, the Materials (including your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage
(including loss of data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if such
damage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.Xilinx assumes no obligation to correct any
errors contained in the Materials or to notify you of updates to the Materials or to product specifications.You may not reproduce, modify, distribute,
or publicly display the Materials without prior written consent.Certain products are subject to the terms and conditions of Xilinx’s limited warranty,
please refer to Xilinx’s Terms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos; IP cores may be subject to warranty and
support terms contained in a license issued to you by Xilinx.Xilinx products are not designed or intended to be fail-safe or for use in any application
requiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in such critical applications, please refer to Xilinx’s
Terms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos.
© Copyright 2012-2014 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, and other designated brands
included herein are trademarks of Xilinx in the United States and other countries.All other trademarks are the property of their respective owners.
こ の資料に関す る フ ィ ー ド バ ッ ク お よ び リ ン ク な ど の問題につ き ま し ては、 [email protected] ま で、 ま たは各ページの
右下にあ る [フ ィ ー ド バ ッ ク 送信] ボ タ ン を ク リ ッ ク す る と 表示 さ れ る フ ォ ームか ら お知 ら せ く だ さ い。 フ ィ ー ド バ ッ ク は日本語で
入力可能です。 いただ き ま し た ご意見を参考に早急に対応 さ せていただ き ます。 なお、 こ の メ ール ア ド レ スへのお問い合わせは受
け付けてお り ません。 あ ら か じ めご了承 く だ さ い。
Vivado : System Generator を使用 し たデザイ ン
UG897 (v2014.3) 2014 年 10 月 1 日
japan.xilinx.com
167
Fly UP