Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks...

167
Vivado Design Suite ユーザー ガイド System Generator を使用した モデル ベースの DSP デザイン UG897 (v2014.3) 2014 10 1 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま す。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の 上、最新情報につきましては、必ず最新英語版をご参照ください。

Transcript of Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks...

Page 1: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

Vivado Design Suite ユーザー ガイド

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

UG897 (v2014.3) 2014 年 10 月 1 日

本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。

Page 2: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

Vivado : System Generator を使用したデザイン japan.xilinx.com 2UG897 (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 初版

Page 3: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

目次

第 1章 : 概要ザイ リ ンクス DSP ブロ ッ クセッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

FIR フ ィルターの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

MATLAB のサポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

ハードウェア協調シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

システム統合プラ ッ ト フォーム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

第 2章 : インストールダウンロード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

ザイ リ ンクス インス トーラーの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

インス トール後の操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

第 3章 : ISE から  Vivado IDE へのデザインの移行概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

アップグレード手法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

第 4章 : System Generator を使用したハードウェア設計System Generator を使用したデザイン フロー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

System Generator でのシステム レベルのモデリ ング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

自動コード生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

MATLAB の FPGA へのコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

System Generator デザインの大型システムへのインポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

コンフ ィギャブル サブシステムと System Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

高パフォーマンス FPGA デザインに関する注記 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

高パフォーマンス FPGA デザインに関する注記 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

FDATool を使用したデジタル フ ィルター アプリ ケーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

複数の独立クロ ッ クのハード ウェア デザイン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

AXI インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

AXI-Lite インターフェイス生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

第 5章 : ハードウェア協調シミ ュレーシ ョ ンの使用ハードウェア ボードのインス トール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

ハードウェア協調シ ミ ュレーシ ョ ン用のモデルのコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

ハードウェア協調シ ミ ュレーシ ョ ン ブロッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

ハードウェア協調シ ミ ュレーシ ョ ンのクロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

JTAG ハードウェア協調シ ミ ュレーシ ョ ン用の KC705 ボードのインス トール . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

ポイン ト ツー ポイン ト イーサネッ ト ハードウェア協調シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

ポイン ト ツー ポイン ト イーサネッ ト ハードウェア協調シ ミ ュレーシ ョ ンのための KC705 ボードのインス トール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

ポイン ト ツー ポイン ト イーサネッ ト ハードウェア協調シ ミ ュレーシ ョ ンのための VC705 ボードのインス トール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

Vivado : System Generator を使用したデザイン japan.xilinx.com 3UG897 (v2014.3) 2014 年 10 月 1 日

Page 4: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 6章 : HDL モジュールのインポートブラ ッ ク ボッ クスの HDL の要件と制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

ブラ ッ ク ボッ クス コンフ ィギュレーシ ョ ン ウ ィザード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

ブラ ッ ク ボッ クスのコンフ ィギュレーシ ョ ン M 関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

ブラ ッ ク ボッ クスでの複数の独立クロ ッ ク サポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

HDL 協調シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

第 7章 : System Generator のコンパイル タイプ[HDL Netlist] コンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

[Hardware Co-Simulation] コンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

IP カタログのコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

合成済みチェッ クポイン トのコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

カスタム コンパイル ターゲッ トの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

第 8章 : カスタム コンパイル ターゲッ トの作成xilinx_compilation ベース ク ラス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

新規コンパイル ターゲッ トの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

ベース ク ラスのプロパティおよび API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 : その他のリソースおよび法的通知ザイ リ ンクス リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

ソ リ ューシ ョ ン センター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Vivado : System Generator を使用したデザイン japan.xilinx.com 4UG897 (v2014.3) 2014 年 10 月 1 日

Page 5: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 5UG897 (v2014.3) 2014 年 10 月 1 日

Page 6: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 1 章 : 概要

ザイリンクス DSP ブロックセッ トSimulink 用ザイ リ ンクス DSP ブロ ッ クセッ トには、 90 以上の DSP 構築ブロッ クが含まれます。 これらのブロ ッ クには、 加算器、 乗算器、 レジスタなどのよ く使用される DSP 構築ブロ ッ クが含まれるほか、 フォワード エラー訂正ブロ ッ ク、 FFT、 フ ィルター、 メモ リ などの複雑な DSP 構築ブロッ クのセッ ト も含まれます。 これらのブロ ッ クを使用するこ とで、 ザイ リ ンクス IP 用 CORE Generator で選択したデバイスに 適な結果になるよ うにできます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 6UG897 (v2014.3) 2014 年 10 月 1 日

Page 7: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 1 章 : 概要

FIR フ ィルターの生成System Generator に含まれる 7 シ リーズ デバイスの専用 DSP48E1 ハード ウェア リ ソースをターゲッ ト にする FIRCompiler ブロ ッ クを使用する と、 適なインプリ メンテーシ ョ ンを作成できます。コンフ ィギュレーシ ョ ン オプシ ョンでは、 多相デシメーシ ョ ン、 多相インターポレーシ ョ ン、 オーバーサンプリ ングなどのインプ リ メンテーシ ョ ンが直接生成できます。 fir2 または MathWorks FDAtool のよ う な標準 MATLAB 関数を使用する と、 ザイ リ ン ク ス FIRCompiler の係数が作成できます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 7UG897 (v2014.3) 2014 年 10 月 1 日

Page 8: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 1 章 : 概要

MATLAB のサポートSystem Generator には、 アルゴ リ ズム的ではない MATLAB を使用可能にする MCode ブロ ッ クが含まれ、 単純な制御操作のモデリ ングおよびインプ リ メンテーシ ョ ンに使用されます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 8UG897 (v2014.3) 2014 年 10 月 1 日

Page 9: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 1 章 : 概要

ハードウェア協調シミ ュレーシ ョ ンSystem Generator では、 ハード ウェア協調シ ミ ュレーシ ョ ンを使用してシ ミ ュレーシ ョ ンを速くできます。 SystemGenerator では、デザインのハードウェア シ ミ ュレーシ ョ ン トークンが自動的に作成され、ザイ リ ンクス DSP ブロ ックセッ トに取り込まれ、サポート されるハード ウェア プラ ッ ト フォームで実行されます。このハード ウェアが残りのSimulink システムと一緒に協調シ ミ ュレーシ ョ ンされる と、 大で 1000 倍シ ミ ュレーシ ョ ン パフォーマンスが向上します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 9UG897 (v2014.3) 2014 年 10 月 1 日

Page 10: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 10UG897 (v2014.3) 2014 年 10 月 1 日

Page 11: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 11UG897 (v2014.3) 2014 年 10 月 1 日

Page 12: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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] → [SystemGenerator MATLAB Configurator]

MATLAB があるデザイン ツール、 たとえば ISE Design Suite 用にコンフ ィギュレーシ ョ ンされていて、別のデザインツール、 たとえば Vivado 用にコンフ ィギュレーシ ョ ンし直したい場合は、 [Configured] になっている MATLAB バージ ョ ンのボッ クスをク リ ッ ク し、 [Remove] をク リ ッ ク してから、 Vivado 用にコンフ ィギュレーシ ョ ンし直します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 12UG897 (v2014.3) 2014 年 10 月 1 日

Page 13: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 13UG897 (v2014.3) 2014 年 10 月 1 日

Page 14: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 14UG897 (v2014.3) 2014 年 10 月 1 日

Page 15: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 3 章 : ISE から  Vivado IDE へのデザインの移行

手順 1 : ISE System Generator に含まれる最新バージ ョ ンにブロックをアップグレード

1. 新の ISE System Generator リ リースで System Generator モデルを開きます。

次の表は、 複数のバージ ョ ンがある 新のブロ ッ クを リ ス ト しています。

2. System Generator トークンをダブルク リ ッ ク し、 次の図に示す [Model upgrade] ボタンをク リ ッ ク します。

3. 次の図に示すよ うな生成されたステータス レポートの情報を確認します。

ブロック名 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

Vivado : System Generator を使用したデザイン japan.xilinx.com 15UG897 (v2014.3) 2014 年 10 月 1 日

Page 16: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 16UG897 (v2014.3) 2014 年 10 月 1 日

Page 17: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 3 章 : ISE から  Vivado IDE へのデザインの移行

AXI ではないブロックから  AXI ブロックへのアップグレードする際の推奨事項

このセクシ ョ ンでは、 次の AXI ではないブロ ッ クを AXI ブロ ッ クにアップグレードする場合の推奨事項について、詳細に説明します。

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 で駆動できます。

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

ComplexMultiplier 3.0,3.1, 4.0

Complex Multiplier 5.0

LogiCORE IP Complex Multiplier v5.0

ConvolutionEncoder 6.1, 7.0

Convolution Encoder 8.0

LogiCORE IP Convolution Encoder 8.0

DDSCompiler 4.0

DDS Compiler 5.0

LogiCORE IP DDS Compiler v5.0

DividerGenerator 3.0

Divider Generator 4.0

LogiCORE IP Divider Generator 4.0

FIR Compiler 5.0, 6.0, 6.1,6.2

FIR Compiler 6.3 LogiCORE IP FIR Compiler v6.3

Fast FourierTransform 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-SolomanDecoder 7.0, 7.1

Reed-Soloman Decoder 8.0

LogiCORE IP Reed-Solomon Decoder v8.0

Reed-SolomanEncoder 7.0, 7.1

Reed-Soloman Encoder 8.0

LogiCORE IP Reed-Solomon Encoder v8.0

ViterbiDecoder 6.1, 6.2, 7.0

Viterbi Decoder 8.0

LogiCORE IP Viterbi Decoder v8.0

Vivado : System Generator を使用したデザイン japan.xilinx.com 17UG897 (v2014.3) 2014 年 10 月 1 日

Page 18: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 よ り大きい場合、 AXIComplex 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 を使用したデザイン japan.xilinx.com 18UG897 (v2014.3) 2014 年 10 月 1 日

Page 19: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 のいずれかにマップできます。 これらのポートは、 AXIDivider 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 を使用したデザイン japan.xilinx.com 19UG897 (v2014.3) 2014 年 10 月 1 日

Page 20: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 20UG897 (v2014.3) 2014 年 10 月 1 日

Page 21: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 21UG897 (v2014.3) 2014 年 10 月 1 日

Page 22: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 3 章 : ISE から  Vivado IDE へのデザインの移行

手順 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 非同期ロジッ クを手動で挿入して、 データを複数の独立したクロ ッ ク ド メ インをまたがって転送されるよ うにします。 この方法については、 「複数の独立クロ ッ クのハード ウェア デザイン」 を参照してください。

EDK Processor この機能が今後のリ リースで含まれるよ うになるまで、System Generator 14.7 を使用し続ける

From FIFO、 To FIFO、 From Register、 ToRegister、 Shared Memory、 Shared MemoryRead、 Shared Memory Write

置換機能が今後のリ リースで含まれるよ うになるまで、System Generator 14.7 を使用し続ける

PicoBlaze Instruction DisplayPicoBlaze Microcontroller

System Generator 14.7 を使用し続ける

VDMA Interface 5.3 置換機能が今後のリ リースで含まれるよ うになるまで、System Generator 14.7 を使用し続ける

WaveScope Waveform Viewer を使用する

Vivado IDE と互換性のないブロック 対処

Vivado : System Generator を使用したデザイン japan.xilinx.com 22UG897 (v2014.3) 2014 年 10 月 1 日

Page 23: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 に関する AMBAAXI4 の詳細について説明します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 23UG897 (v2014.3) 2014 年 10 月 1 日

Page 24: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

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 で生成されるファ イルの詳細は、 コンパイル結果を参照して ください。

AXI-Lite インターフェイス生成 System Generator モジ ュール用に標準 AXI4-Lite イ ンターフェイスを作成し、 後で IP インテグレーターを使用して大型デザインに含めるためにそのモジュールをVivado IP カタログにエクスポートする機能について説明します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 24UG897 (v2014.3) 2014 年 10 月 1 日

Page 25: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 25UG897 (v2014.3) 2014 年 10 月 1 日

Page 26: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

System Generator ブロックセッ ト

Simulink ブロ ッ クセッ トは、 Simulink ブロッ ク エディ ターで接続し、ダイナミ ッ クなシステムのファンクシ ョ ン モデルを作成するためのブロ ッ クのライブラ リです。 システムのモデリ ングでは、 System Generator ブロ ッ クセッ ト をその他の Simulink ブロ ッ クセッ ト と同様に使用できます。ブロ ッ クは、数値演算、 ロジッ ク、 メモ リ、 DSP ファンクシ ョ ンなどの抽象表現であ り、高度な信号処理システムやその他のシステムを構築するために使用できます。また、System Generator コード生成ソフ ト ウェアだけでなく、 FDATool、 ModelSim などその他のソフ ト ウェア ツールへのインターフェイス となるブロ ッ ク もあ り ます。

System Generator ブロ ッ クは、 ビッ ト精度およびサイクル精度です。 ビッ ト精度ブロ ッ クは、ハード ウェアで生成される対応する値に一致した値を Simulink で生成し、 サイ クル精度ブロ ッ クは対応する時間に対応する値を生成します。

ザイリンクス ブロックセッ ト

ザイ リ ンクス ブロ ッ クセッ ト (Xilinx Blockset) は、基本的な System Generator ブロ ッ クを含むライブラ リ を集めたものです。デバイス特有のハードウェアにアクセスする低レベルのブロ ッ ク と、 信号処理や高度な通信アルゴ リ ズムなどをインプリ メン トする高レベルのブロ ッ クがあ り ます。Gateway In/Gateway Out ブロ ッ クなど幅広く応用可能なブロ ッ クは、複数のライブラ リに含まれています。Index ライブラ リには、すべてのブロ ッ クが含まれています。次に、これらのライブラ リについて説明します。

注記 :デザインの名前はザイ リ ンクス ブロ ッ ク と同じにならないよ うに注意してください。たとえば、デザインの名前を blackbox.mdl にする と、 System Generator でエラー メ ッセージが表示されるこ とがあ り ます。

ビ ッ ト単位およびサイ クル単位のモデリ ング

System Generator モデルの Simulink ベースのシ ミ ュレーシ ョ ン と、 ハード ウェアでの動作との関係を説明します。

タイ ミ ングと ク ロ ッ ク ク ロ ッ クのハード ウェアへのインプリ メン ト方法、および System Generator でクロ ッ クのインプリ メンテーシ ョンを制御する方法を示します。 System Generator でマルチレー ト Simulink モデルがどのよ う に ク ロ ッ ク同期ハードウェアに変換されるかを説明します。

同期化のメカニズム 高レベル System Generator デザインにおいてデータ パスエレ メン ト間でデータ フローを同期する方法と、制御パス ファンクシ ョ ンをインプ リ メ ン トする方法を説明します。

ブロ ッ ク マスク とパラ メーターの伝搬

Simulink でパラ メーター指定システムおよびサブシステムを作成する方法を説明します。

ライブラリ 説明

AXI4 AXI™4 仕様に準拠するインターフェイスを使用したブロッ ク

Basic Elements デジタル ロジッ クの標準基本ブロッ ク

Communication デジタル通信システムでよ く使用される順方向誤り訂正ブロ ッ クおよびモジュレーター ブロッ ク

Control Logic 制御回路およびステート マシン用のブロッ ク

DSP DSP (デジタル信号処理) ブロッ ク

Data Types データ型を変換するブロ ッ ク (Gateway ブロ ッ クを含む)

Floating-Point 浮動小数点データ型をサポートするブロ ッ ク

Index ザイ リ ンクス ブロッ クセッ トのすべてのブロッ ク

Math 演算ファンクシ ョ ンをインプリ メン トするブロ ッ ク

Vivado : System Generator を使用したデザイン japan.xilinx.com 26UG897 (v2014.3) 2014 年 10 月 1 日

Page 27: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

ザイリンクス リファレンス ブロックセッ ト

ザイ リ ンクス リ ファレンス ブロ ッ クセッ ト (Xilinx Reference Blockset) には、さまざまなファンクシ ョ ンをインプリ メン トする複合 System Generator ブロ ッ クが含まれます。 このブロ ッ クセッ トのブロ ッ クは、 ファンクシ ョ ン別にライブラ リに分類されています。 次に、 これらのライブラ リについて説明します。

このブロ ッ クセッ トの各ブロ ッ クは複合ブロ ッ クであ り、 ブロ ッ クをコンフ ィギュレーシ ョ ンするパラ メーターを使用して、マスク サブシステムと してインプリ メン ト されます。

Memory メモ リ をインプ リ メ ン トするブロ ッ クおよびメモ リにアクセスするブロ ッ ク

Tools コード生成 (System Generator トークン)、 リ ソース予測、 HDL 協調シミ ュレーシ ョ ンなどを実行するユーティ リ ティ ブロッ ク

ライブラリ 説明

Communication デジタル通信システムでよ く使用されるブロ ッ ク

Control Logic 制御回路およびステート マシン用のブロッ ク

DSP DSP (デジタル信号処理) ブロッ ク

Imaging イ メージ処理ブロ ッ ク

Math 演算ファンクシ ョ ンをインプリ メン トするブロ ッ ク

ライブラリ 説明

Vivado : System Generator を使用したデザイン japan.xilinx.com 27UG897 (v2014.3) 2014 年 10 月 1 日

Page 28: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

ラ イブラ リに含まれるブロ ッ クをそのまま使用したり、 類似した特性を持つデザインを構築する際に開始点と して使用できます。 各リ ファレンス ブロッ クには、 インプリ メンテーシ ョ ンの説明およびハードウェア リ ソース要件が含まれています。

Vivado : System Generator を使用したデザイン japan.xilinx.com 28UG897 (v2014.3) 2014 年 10 月 1 日

Page 29: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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] → [SampleTime Colors] をク リ ッ ク )。 これは、 マルチレート デザインを解析するのに有益です。

Vivado : System Generator を使用したデザイン japan.xilinx.com 29UG897 (v2014.3) 2014 年 10 月 1 日

Page 30: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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) です。

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] のいずれかの精度を選択できます。

S X ??????

E0 ? Ex-1

Y ??????

F0 ? FY-1

Vivado : System Generator を使用したデザイン japan.xilinx.com 30UG897 (v2014.3) 2014 年 10 月 1 日

Page 31: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 31UG897 (v2014.3) 2014 年 10 月 1 日

Page 32: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 32UG897 (v2014.3) 2014 年 10 月 1 日

Page 33: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

ビッ ト単位およびサイクル単位のモデリング

System Generator でのシ ミ ュレーシ ョ ンは、ビッ ト単位またはサイ クル単位で実行されます。ビッ ト単位のシ ミ ュレーシ ョ ンとは、 System Generator ブロ ッ ク と System Generator 以外のブロ ッ クの境界で、 シ ミ ュレーシ ョ ンで生成された値がハードウェアで生成された対応する値とビッ ト単位で同一である という こ とです。 サイ クル単位のシ ミ ュレーシ ョ ンとは、 System Generatorブロ ッ ク と System Generator 以外のブロ ッ クの境界で、 対応する値が対応する時間に生成される という こ とです。 デザインの境界は、 System Generator の Gateway ブロ ッ クが配置されている部分です。 デザインがハード ウェアに変換される と、 GatewayIn ブロ ッ クは 上位入力ポート、 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 を使用したデザイン japan.xilinx.com 33UG897 (v2014.3) 2014 年 10 月 1 日

Page 34: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

マルチレート  モデル

System Generator では、 信号が複数のサンプリ ング レートで動作するマルチレート デザインがサポート されています。 マルチレート モデルは、 System Generator で自動的にハードウェアにコンパイルされます。 マルチレート デザインは、 Simulink に適した直接的な方法でインプリ メン ト されます。

レート変換ブロック

System Generator には、 サンプリ ング レート を変換するブロ ッ クが含まれています。 も基本的なレート変換ブロ ッ クは、 UpSample と 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 を使用したデザイン japan.xilinx.com 34UG897 (v2014.3) 2014 年 10 月 1 日

Page 35: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

同期クロック

次の図に示すよ うに、System Generator トークンを使用してデザインをハード ウェアにコンパイルする場合、[Clock Enables] (デフォルト ) オプシ ョ ンがあ り ます。

[Clock Enables] オプシ ョ ン

System Generator で [Clock Enables] オプシ ョ ンをオンにしてモデルをハード ウェアにコンパイルする と、ハード ウェアの対応する部分が適切なレートで動作するよ うにデザインのサンプリ ング レート情報が保持されます。 System Generator は、 ク ロ ッ クと ク ロ ッ ク イネーブル (1 つのレートに 1 つのイネーブル) を組み合わせて、 関連するレート をハード ウェアに生成します。 各クロ ッ ク イネーブルの周期は、 システム ク ロ ッ クの周期の整数倍です。

Simulink 内では、 System Generator デザインの信号と してク ロ ッ クおよびク ロ ッ ク イネーブルは必要あ り ません。 SystemGenerator でデザインをハード ウェアにコンパイルする際、 デザインのサンプル レートから必要なクロ ッ ク イネーブルが推論されます。 具体的には、 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 を使用したデザイン japan.xilinx.com 35UG897 (v2014.3) 2014 年 10 月 1 日

Page 36: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 36UG897 (v2014.3) 2014 年 10 月 1 日

Page 37: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

スペースに保存されます。 マスク ワークスペースは、 マスクが適用されるブロ ッ クでのみ使用され、外部ブロ ッ クからアクセスするこ とはできません。

注記 : マスクでグローバル変数および基本ワークスペースの変数にアクセスするこ とは可能です。 基本ワークスペースの変数にア クセスするには、 MATLAB の evalin 関数を使用し ます。 MATLAB と Simulink のス コーピング ルールの詳細は、 TheMathWorks 社のマニュアル 『Using MATLAB』 および 『Using Simulink』 を参照して ください。

パラメーターの伝搬

マスク サブシステム内のブロッ クに変数を渡す必要があるこ とがよ くあ り ます。変数を渡すこ とによ り、サブシステム内のパラ メーターよ りブロ ッ クのコンフ ィギュレーシ ョ ンを判断させるこ とができます。 この手法は、ザイ リ ンクス ブロ ッ クセッ ト内のブロ ッ クのパラ メーターにも適用されます。 たとえば、 Mult ブロ ッ ク と Accumulator ブロ ッ クで構成されるサブシステムを構築する場合、 結果を切り捨てるか丸めるかを指定するパラ メーターをサブシステム内に作成できます。 次の図では、 このパラ メーターに trunc_round という名前が付けられています。

Mult ブロ ッ ク と Accumulator ブロ ッ クのパラ メーター ダイアログ ボッ クスには、[Truncate] (切り捨て) または [Round] (丸め) を選択するラジオ ボタンがあ り ます。

ラジオ ボタンではなくパラ メーターを使用して選択する場合は、ラジオ ボタンを右ク リ ッ ク して [Define With Expression] をクリ ッ クする と、MATLAB の論理式をパラ メーターの設定に使用できます。次の例では、サブシステム マスクからの trunc_round

Vivado : System Generator を使用したデザイン japan.xilinx.com 37UG897 (v2014.3) 2014 年 10 月 1 日

Page 38: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

パラ メーターを Mult ブロ ッ ク と Accumulator ブロ ッ クの両方で使用し、サブシステムのマスク変数からの同じ設定が適用されるよ うにしています。

自動コード生成System Generator は、デザインを自動的に低レベル表現にコンパイルします。モデルのコンパイル方法は、System Generator トークンの設定によって異なり ます。 ハード ウェアの HDL 記述に加え、 補助ファイルも生成されます。 プロジェク ト ファ イルや制約ファイルなどのファイルはダウンス ト リーム ツールで使用され、VHDL テス トベンチなどのファイルはデザインの検証に使用されます。

System Generator トークンを使用したコンパイルとシミ ュレーシ ョ ン

System Generator は、デザインを自動的に低レベル表現にコンパイルします。デザインをコンパイルまたはシ ミ ュレーシ ョ ンするには、 System Generator トークンを使用します。 このセクシ ョ ンでは、 この トークンの使用法を説明します。

System Generator デザインをシ ミ ュレーシ ョ ンまたはハード ウェアに変換するには、デザインに System Generator トークンを含める必要があ り ます。新しいデザインを作成する際には、System Generator トークンをすぐに追加するよ うにするこ とをお勧めし ます。 System Generator ト ーク ンは、 Xilinx Blockset の Basic Element および Tools ラ イブラ リ に含まれています。 SystemGenerator トークンは、 その他のザイ リ ンクス ブロ ッ ク と同様、 Index ライブラ リにも含まれています。

デザインには、 System Generator トークンを 1 つ以上含める必要があ り、 複数の System Generator トークンを異なるレベルに含める こ とが可能です (レベルごとに 1 つ)。 上位に別の System Generator トークンがある ものはスレーブ、 上位に別の SystemGenerator ブロ ッ クがないものはマスターとな り ます。 1 つの System Generator トークンの適用範囲は、 ブロ ッ クが挿入されているレベルと、そのレベルの下にあるすべてのサブシステムです。 [Simulink system period] などの一部のパラ メーターは、マスターでしか指定できません。

System Generator トークンを使用したコンパイルとシ ミ ュレーシ ョ ン

System Generator トークンを使用してデザインを低レベル HDL にコンパイルする方法を説明します。

コンパイル結果 System Generator ト ーク ンで [HDL Netlist] を選択し て[Generate] ボタンをク リ ッ ク したと きに生成される低レベル ファ イルについて説明します。

HDL テス トベンチ System Generator で生成される VHDL テス トベンチについて説明します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 38UG897 (v2014.3) 2014 年 10 月 1 日

Page 39: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 コ ンパ イ ル結果を保存する デ ィ レ ク ト リ を指定 し ます。 SystemGenerator および FPGA インプリ メンテーシ ョ ン ツールでは多数のファイルが生成されるので、個別のディ レク ト リ (Simulink モデル ファ イルが含まれるディ レ ク ト リ とは別のディ レク ト リ ) を作成する こ と をお勧めします。 ディ レク ト リは、 絶対パス (c:\netlist など) またはモデルを含むディ レク ト リ を基準と した相対パス (netlist など) で指定できます。

Hardware description language

デザインの HDL ネッ ト リ ス ト で使用する言語を指定します。 [VHDL]または [Verilog] を選択できます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 39UG897 (v2014.3) 2014 年 10 月 1 日

Page 40: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

Simulink システム周期

System Generator ブロ ッ クのパラ メーター ダイアログ ボッ クスで、 Simulink システム周期 ([Simulink system period]) を指定する必要があ り ます。 この値は、デザインのシ ミ ュレーシ ョ ンを実行する基準レート を秒で指定します。 Simulink システム周期は、デザインで使用されるすべてのサンプリ ング周期の公約数にする必要があ り ます。 たとえば、 サンプリ ング周期 2、 6、 8 を使用するブロ ッ クを含むデザインでは、 使用可能な 大の Simulink システム周期は 2 ですが、 1 および 0.5 も使用可能です。 サンプリ ング周期は、 明示的に指定するか、 自動的に算出されるか、 内部レート変換が行われるブロ ッ ク内で導出されます。 システム周期のハードウェア ク ロ ッ クへの影響については、 タイ ミ ングと ク ロ ッ クを参照してください。

デザインをシ ミ ュレーシ ョ ンまたはコンパイルする前に、System Generator でシステム周期がデザインのすべてのサンプリ ング周期の公約数になっているかが検証されます。問題が検出された場合は、適切な値を推奨するダイアログ ボッ クスが表示されます。 [Update] ボタンをク リ ッ クする と、 推奨された値が使用されます。 システム周期競合のサマ リ を表示するには、 [ViewConflict Summary] ボタンをク リ ッ ク します。 [Update] をク リ ッ ク した場合は、 シ ミ ュレーシ ョ ンまたはコンパイルを再実行する必要があ り ます。

周期を調整できないために、 System Generator モデルが矛盾したものになる可能性もあ り ます。 たとえば、 システム レートで動作する必要のあるブロ ッ クでUp Sample ブロッ クを駆動する と、 モデルは一貫したものになり ません。 システム周期をアップデート しても競合がレポート される場合は、 モデルに矛盾がある という こ とであ り、 修正が必要です。

周期は階層で制御されます。 詳細は、 「階層制御」 を参照して ください。

[Block icon display]

モデルに表示するブロ ッ クのアイコンの表示を制御します。 モデルをコンパイルした後 (生成またはシ ミ ュレーシ ョ ンを実行、あるいは Ctrl + D を押す)、 ブロ ッ クの情報がこのオプシ ョ ンでの選択に応じて表示されます。

• [Default] : ポートの方向に関する基本的な情報が表示されます。

• [Sample rates] : 各ポートのサンプリ ング レートが表示されます。

• [Pipeline stages] : パイプライン段数が表示されます。

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 ク ロ ッ ク周期 (システム ク ロ ッ ク ) がこのハード ウェア定義の入力から派生するよ うにな り ます。

GUI 説明

Vivado : System Generator を使用したデザイン japan.xilinx.com 40UG897 (v2014.3) 2014 年 10 月 1 日

Page 41: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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] をオフ)、 生成されるファ イルは次のとおりです。

テス トベンチを作成するよ う指定している場合は ([Create testbench] をオン)、上記のファイルに加え、シ ミ ュレーシ ョ ン結果を比較するためのファ イルが生成されます。 Simulink シ ミ ュレーシ ョ ン結果と ModelSim のシ ミ ュレーシ ョ ン結果が比較されます。 生成される追加ファイルは、 次のとおりです。

Sysmte Generator 制約ファイルの使用

デザインをコンパイルする と、 ダウンス ト リーム ツールでのデザインの処理方法を指示する制約が生成されます。 この制約ファイルによ り、 高質のインプリ メンテーシ ョ ンが短時間で生成されます。 制約は、 次の情報を供給します。

• システム ク ロ ッ クの周期

• システム ク ロ ッ クに対するデザインのさまざまな部分のスピード要件

• ポート を配置する必要のあるピン ロケーシ ョ ン

• ポートの動作スピード

ファイル名/タイプ 説明

<design_name>.vhd/.v このファ イルには、 クロ ッ ク /ク ロ ッ ク イネーブル制御と一緒に階層構造ネッ ト リ ス トが含まれます。

<design_name_entity_declarations>.vhd/.v こ のフ ァ イルには、 デザイ ンの sysgen ブロ ッ クのモジュール定義のエンティティが含まれます。

<design_name>.xpr Vivado IDE デザインの属性をすべて記述した Vivado IDEプロジェク ト ファ イル。

ファイル名/タイプ 説明

DAT ファ イル Simulink でのシ ミ ュレーシ ョ ン結果が含まれます。

<design_name>_tb.vhd/.v デザインをラ ップするテス トベンチ。 シ ミ ュレーシ ョ ンを実行する と、 このテス トベンチによ りデジタル シ ミ ュレータのシ ミ ュレーシ ョ ン結果と Simulink のシ ミ ュレーシ ョ ン結果が比較されます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 41UG897 (v2014.3) 2014 年 10 月 1 日

Page 42: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

システム ク ロ ッ ク周期 (デザインで 速のハードウェア ク ロ ッ クの周期) は、System Generator トークンで指定できます。SystemGenerator で指定した周期は、 制約ファイルに記述されます。 ダウンス ト リーム ツールでデザインがインプリ メン ト される際、この周期が目標と して使用されます。

複数サイクル パス制約

多くのデザインは、異なるクロ ッ ク レートで動作する複数の部分で構成されています。 速の部分ではシステム ク ロ ッ クが使用され、その他の部分のクロ ッ ク周期は、 システム ク ロ ッ ク周期の整数倍になり ます。 ダウンス ト リーム ツールに、デザインの各部分で達成する必要のあるスピードを伝達する必要があ り ます。 この情報によ り、 ツールの効率が大幅に向上し、 短いコンパイル時間で高質のハードウェアを実現できます。 デザインの分割、 それぞれの部分のスピードは、 制約ファイルで複数サイクル パス制約を使用して指定されます。

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 を使用したデザイン japan.xilinx.com 42UG897 (v2014.3) 2014 年 10 月 1 日

Page 43: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 > yz = x;

elsez = y;

end

xlmax.m ファ イルは、モデル ファ イルと同じディ レク ト リ または MATLAB パスに保存する必要があ り ます。xlmax.m を適切な場所に保存したら、MCode ブロ ッ クをモデルにド ラ ッグしてパラ メーター ダイアログ ボッ クスを開き、[MATLAB Function] に「xlmax」 と入力します。 [OK] をク リ ッ クする と、 ブロ ッ クに入力ポート x と y、 出力ポート z が表示されます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 43UG897 (v2014.3) 2014 年 10 月 1 日

Page 44: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 44UG897 (v2014.3) 2014 年 10 月 1 日

Page 45: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 45UG897 (v2014.3) 2014 年 10 月 1 日

Page 46: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 46UG897 (v2014.3) 2014 年 10 月 1 日

Page 47: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 47UG897 (v2014.3) 2014 年 10 月 1 日

Page 48: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

ロ ッ クでは、渡されるパラ メーターによ り入力データが Fix_16_8 から Fix_10_5 に変換されます。signed convert2 という MCodeブロ ッ クでは、 渡されるパラ メーターによ り入力データが Fix_16_8 から Fix_8_4 に変換されます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 48UG897 (v2014.3) 2014 年 10 月 1 日

Page 49: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

各 MCode ブロ ッ クにパラ メーターを渡すには、 MCode ブロ ッ クのパラ メーター ダイアログ ボッ クスで [Interface] タブをクリ ッ ク し、 M 関数の引数を設定します。 次に、 MCode ブロッ ク signed convert 1 の設定を示します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 49UG897 (v2014.3) 2014 年 10 月 1 日

Page 50: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

上図の [Iinterface] タブでは、 M 関数の引数 nbits を 10 に、 binpt を 5 に設定しています。 次に、 MCode ブロ ッ ク signed convert2 の設定を示します。

上図の [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 subs = a - b;

elses = a + b;

Vivado : System Generator を使用したデザイン japan.xilinx.com 50UG897 (v2014.3) 2014 年 10 月 1 日

Page 52: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

次に、 add という名前の MCode ブロ ッ クのパラ メーター ダイアログ ボッ クスを示します。

この設定によ り、 入力ポート a と b が使用され、 完全精度の加算が実行されます。 addsub とい う MCode ブロ ッ クでは、 入力パラ メーター sub の [Bind to value] に何も指定されていないので、 addsub ブロ ッ クでは入力ポート a、 b、 および sub が使用され、 入力ポート sub の値に応じて完全精度の加算または減算が実行されます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 52UG897 (v2014.3) 2014 年 10 月 1 日

Page 53: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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; % initial state, if input is 1, switch to seen_1seen_1 = 1; % first 1 has been seen, if input is 0, switch

% seen_10seen_10 = 2; % 10 has been detected, if input is 1, switch to

% seen_1011seen_101 = 3; % now 101 is detected, is input is 1, 1011 is

% detected and the FSM switches to seen_1

% the state is a 2-bit registerpersistent state, state = xl_state(seen_none, {xlUnsigned, 2, 0});

% the default value of matched is falsematched = false;

switch statecase seen_noneif din==1

state = seen_1;else

state = seen_none;end

case seen_1 % seen first 1if din==1

state = seen_1;else

state = seen_10;end

case seen_10 % seen 10

Vivado : System Generator を使用したデザイン japan.xilinx.com 53UG897 (v2014.3) 2014 年 10 月 1 日

Page 54: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

if din==1state = seen_101;

else % no part of sequence seen, go to seen_none state = seen_none;

endcase seen_101if din==1

state = seen_1;matched = true;

elsestate = seen_10;matched = false;

endend

次の図に、 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 rstif load

% reset from the input ports = b;

else% reset from zeros = init;

endelseif ~enelse

% if enabled, update the state

Vivado : System Generator を使用したデザイン japan.xilinx.com 54UG897 (v2014.3) 2014 年 10 月 1 日

Page 55: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

if op==0s = s/feed_back_down_scale + b;

elses = s/feed_back_down_scale - b;

endend

end

次の図に、 M 関数 xl_accum を使用するアキュムレータ MCode ブロ ッ クを含むサブシステムを示します。 MCode ブロ ッ クには、 MCode Accumulator とい う名前が付いています。 サブシステムには、 比較のため、 Accumulator という名前のザイ リ ンクスアキュムレータ ブロ ッ ク も含まれています。 MCode ブロ ッ クは、 ザイ リ ンクス アキュムレータ ブロ ッ ク と同じ機能を持ちますが、 MCode ブロ ッ クのパラ メーターをマスク インターフェイス (パラ メーター ダイアログ ボッ クスの [Interface] タブ) で指定している点が異なり ます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 55UG897 (v2014.3) 2014 年 10 月 1 日

Page 56: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

MCode Accumlator のオプシ ョ ンの入力 rst および load は、 [Interface] タブでディ スエーブルに設定されています。次に、 MCodeAccumulator ブロッ クのパラ メーター ダイアログ ボッ クスを示します。

この例には、 同じ M 関数を使用した MCode ブロッ クのアキュムレータ サブシステムがさらに 2 つ含まれていますが、 異なるパラ メーター設定を使用して、 異なるアキュムレータを作成しています。

Vivado : System Generator を使用したデザイン japan.xilinx.com 56UG897 (v2014.3) 2014 年 10 月 1 日

Page 57: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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);

endy = 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');endlat = lat - 1;persistent dly, if lat <= 0

y = reg_line.back;else

dly = xl_state(zeros(1, lat), out_prec, lat);

Vivado : System Generator を使用したデザイン japan.xilinx.com 57UG897 (v2014.3) 2014 年 10 月 1 日

Page 58: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

y = dly.back;dly.push_front_pop_back(reg_line.back);

endfor idx = len-1:-1:1

reg_line(idx) = reg_line(idx - 1) + coef_vec(len - idx - 1) * x;endreg_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 modcase 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)]);

endif reportif ~eq

error(['two inputs are not equal at time ', num2str(cnt)]);end

endcnt = cnt + 1;

Vivado : System Generator を使用したデザイン japan.xilinx.com 58UG897 (v2014.3) 2014 年 10 月 1 日

Page 60: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 operatoris_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 operatorop = xl_slice(d, 2, 0);% acc the the A registerpersistent acc, acc = xl_state(0, din);% the stack is implemented with a RAM and% an up-down counterpersistent 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 を使用したデザイン japan.xilinx.com 60UG897 (v2014.3) 2014 年 10 月 1 日

Page 61: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 actionOP_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 enif ~is_oper

% enter data, pushif acc_active

stack_pt = xfix(stack_pt_prec, stack_pt + 1);mem(stack_pt) = acc;stack_active = true;

elseacc_active = true;

endacc = din;

elseif op == OP_NEG

% unary op, no stack opacc = -acc;

elseif stack_activeb = mem(stack_pt);

switch double(op)case OP_ADDacc = acc + b;

case OP_SUBacc = b - acc ;

case OP_MULTacc = acc * b;

case OP_DROPacc = b;

endstack_pt = stack_pt - 1;

elseif acc_activeacc_active = false;acc = 0;

endend

endstack_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 を使用したデザイン japan.xilinx.com 61UG897 (v2014.3) 2014 年 10 月 1 日

Page 62: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 62UG897 (v2014.3) 2014 年 10 月 1 日

Page 63: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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.0000001disp(10) is

type:UFix_4_0, binary:1010, double:10.0disp(-10) is

type:Fix_5_0, binary:10110, double:-10.0disp(a) is

type:Fix_11_7, binary:0000.0000000, double:0.000000disp(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 合成を使用した論理合成などのダウンス ト リーム処理を簡略化する補助ファ イルも生成されます。 詳細は、 「SystemGenerator のコンパイル タイプ」 セクシ ョ ンを参照してください。

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 を使用したデザイン japan.xilinx.com 63UG897 (v2014.3) 2014 年 10 月 1 日

Page 64: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

コンフ ィギャブル サブシステムと  System Generatorコンフ ィギャブル サブシステムは、 Simulink の基本パーツと して使用可能なブロ ッ クであ り、 基になるブロ ッ クを複数指定できるブロ ッ クです。 各ブロ ッ クはそれぞれ可能なインプリ メンテーシ ョ ンであ り、 どのインプリ メンテーシ ョ ンを使用するかを自由に選択できます。たとえば、System Generator で汎用 FIR フ ィルターをコンフ ィギャブル サブシステムと して指定し、そのサブシステムの基になるブロ ッ ク と して特定の FIR フ ィルターを複数指定します。高速だがハードウェア リ ソースを多く必要とするフ ィルター、比較的低速だが必要なハードウェア リ ソースが少ないフ ィルターなどを指定できます。 フ ィルターの選択を切り替えるこ とによ り、 ハード ウェア コス ト またはスピードを優先した場合の動作を調べるこ とができます。

コンフ ィギャブル サブシステムの定義

コンフ ィギャブル サブシステムを定義するには、Simulink ライブラ リ を作成します。コンフ ィギャブル サブシステムの基になるブロ ッ クは、 このライブラ リで管理されます。 ライブラ リ を作成するには、 次の手順に従います。

• 空のライブラ リ を作成します。

• 作成したライブラ リに基になるブロ ッ クを追加します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 64UG897 (v2014.3) 2014 年 10 月 1 日

Page 65: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

• テンプレート ブロッ クをライブラ リにド ラ ッグします([Simulink] ライブラ リ → [Ports & Subsystems] にある ConfigurableSubsystem テンプレート をライブラ リに追加します)。

• 必要に応じて、 テンプレート ブロッ クの名前を変更します。

• ラ イブラ リ を保存します。

• テンプレート をダブルク リ ッ ク して開きます。

• [Configuration dialog] ダイアログ ボッ クスで、 必要なブロ ッ クのチェッ ク ボッ クスをオンにします。

• [OK] をク リ ッ ク し、 その後ライブラ リ を保存します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 65UG897 (v2014.3) 2014 年 10 月 1 日

Page 66: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

コンフ ィギャブル サブシステムの使用

デザインでコンフ ィギャブル サブシステムを使用するには、 次の手順に従います。

• コンフ ィギャブル サブシステムを定義するライブラ リ を作成します。

• ラ イブラ リ を開きます。

• ラ イブラ リからテンプレート をデザインの適切な位置にド ラ ッグします。

• ド ラ ッグしたテンプレートが、 コンフ ィギャブル サブシステムのインスタンスになり ます。

• インスタンスを右ク リ ッ ク し、 [Block choice] をク リ ッ ク して、 使用するブロッ クを選択します。

コンフ ィギャブル サブシステムからのブロックの削除

コンフ ィギャブル サブシステムからブロッ クを削除するには、 次の手順に従います。

• コンフ ィギャブル サブシステムのライブラ リ を開き、 ライブラ リのロ ッ クを解除します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 66UG897 (v2014.3) 2014 年 10 月 1 日

Page 67: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

• テンプレート をダブルク リ ッ ク し、 削除するブロ ッ クのチェッ ク ボッ クスをオフにします。

• [OK] をク リ ッ ク し、 その後ブロッ クを削除します。

• ラ イブラ リ を保存します。

• Ctrl + D を押し、 デザインをコンパイルします。

• 必要に応じて、 コンフ ィギャブル サブシステムの各インスタンスの選択をアップデート します。

コンフ ィギャブル サブシステムへのブロックの追加

コンフ ィギャブル サブシステムにブロッ クを追加するには、 次の手順に従います。

• コンフ ィギャブル サブシステムのライブラ リ を開き、 ライブラ リのロ ッ クを解除します。

• ブロ ッ クをライブラ リにド ラ ッグします。

Vivado : System Generator を使用したデザイン japan.xilinx.com 67UG897 (v2014.3) 2014 年 10 月 1 日

Page 68: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

• テンプレート をダブルク リ ッ ク し、 追加したブロ ッ クのチェッ ク ボッ クスをオンにします。

• [OK] をク リ ッ ク し、 その後ライブラ リ を保存します。

• Ctrl + D を押し、 デザインをコンパイルします。

• 必要に応じて、 コンフ ィギャブル サブシステムの各インスタンスの選択をアップデート します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 68UG897 (v2014.3) 2014 年 10 月 1 日

Page 69: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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ブロ ッ クの機能のいずれかを追加する と、 追加のハードウェア リ ソースが必要になり ます。

高パフォーマンス 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 を使用したデザイン japan.xilinx.com 69UG897 (v2014.3) 2014 年 10 月 1 日

Page 70: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 70UG897 (v2014.3) 2014 年 10 月 1 日

Page 71: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 71UG897 (v2014.3) 2014 年 10 月 1 日

Page 72: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

° パイプラインを追加で使用する

BRAM および DSP48 内の出力レジスタおよびパイプライン レジスタを使用する

° パラレルで関数を実行する

遅いクロ ッ ク レートでパラレルに関数を実行する

° リ タ イ ミ ング手法を使用する

組み合わせロジッ クを使用して既存レジスタを移動する

° ハード コアを可能な箇所で使用する

分散 RAM の代わりにブロ ッ ク RAM を使用する

° 関数に対してさまざまなデザイン アプローチを使用する

• デザインに制約を付けすぎない

デザインに制約を付けすぎないで、 適宜、 アップ/ダウン サンプル ブロ ッ クを使用する

• ク リ ティカルなデザイン モジュールの周波数を削減する

• インプリ メンテーシ ョ ン ツールで調整する

° さまざまな合成オプシ ョ ンを試してみる

° ク リ ティカル モジュールをフロアプランする

FDATool を使用したデジタル フ ィルター アプリケーション次の例では、 FDATool ブロ ッ クを使用して FIR フ ィルターを指定、 インプリ メン ト 、 シ ミ ュレーシ ョ ンする 1 つの方法を示します。 FDATool ブロ ッ クをフ ィルターの次数および係数を定義するために使用し、 ザイ リ ンクス ブロ ッ クセッ ト を使用して

Vivado : System Generator を使用したデザイン japan.xilinx.com 72UG897 (v2014.3) 2014 年 10 月 1 日

Page 73: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 73UG897 (v2014.3) 2014 年 10 月 1 日

Page 74: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 74UG897 (v2014.3) 2014 年 10 月 1 日

Page 75: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

MAC Based FIR ブロックのパラ メーター指定

1. MAC Based FIR ブロ ッ クを右ク リ ッ ク し、 [Edit Mask] をク リ ッ ク します。

2. [Parameters] タブをダブルク リ ッ ク し、 coef、 data_width および data_binpt パラ メーターを追加します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 75UG897 (v2014.3) 2014 年 10 月 1 日

Page 76: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

FIR フ ィルターの係数の生成と割り当て

1. [Xilinx Blockset] → [DSP] にある FDATool ブロッ クをド ラ ッグしてモデルに追加します。

2. FDATool ブロ ッ クをダブルク リ ッ ク し、オーディオ システムで高周波数ノ イズを除去するローパス フ ィルタの次の仕様を入力します。

° [Response Type] : Lowpass

° [Filter Order] : Minimum order

° [Frequency Specifications] :

- [Units] : Hz

- [Fs] : 44100

- [Fpass] : 6000

- [Fstop] : 7725

° [Magnitude Specifications] :

- [Units] : dB

- [Apass] : 1

- [Astop] :48

3. [Design Filter] をク リ ッ ク し、 フ ィルタ次数と振幅応答を確認します。

ツールバー ボタンをク リ ッ ク して、 位相応答、 インパルス応答、 フ ィルタ係数なども表示できます。 上記の仕様を満たすには、 43 タ ップ FIR フ ィルター (順番 0-42) が必要であるこ とが示されます。

フ ィルター係数を表示するには、 MATLAB の [Command Window] で次のよ うに入力します。

>> xlfda_numerator('FDATool')

次のコマンドを使用する と、 係数幅と 2 進小数点を正し く指定するための 大係数値および 小係数値を知るこ とができます。

>> max(xlfda_numerator('FDATool'))

Vivado : System Generator を使用したデザイン japan.xilinx.com 76UG897 (v2014.3) 2014 年 10 月 1 日

Page 77: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 77UG897 (v2014.3) 2014 年 10 月 1 日

Page 78: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 78UG897 (v2014.3) 2014 年 10 月 1 日

Page 79: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

フ ィルターの精度を上げたり下げたりするこ とによ り、 デザインの仕様に必要な範囲、 パフォーマンス、 質のバランスを取るこ とができます。

シ ミ ュレーシ ョ ンを停止し、ブロ ッ クのパラ メーター ダイアログ ボッ クスで係数幅を FIX_10_10、データ幅を FIX_8_6 に変更します。 Ctrl + D を押してモデルをアップデート し、 MAC engine ブロ ッ クの階層を表示します。 データパスが、 乗算器の出力では 18 ビッ トに、 アキュムレータでは 20 ビッ トにアップデート されています。

Vivado : System Generator を使用したデザイン japan.xilinx.com 79UG897 (v2014.3) 2014 年 10 月 1 日

Page 80: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

シ ミ ュレーシ ョ ンを再開し、 周波数応答がどのよ うに変化したかを観察します。 固定ワード長によ り、 減衰が悪化しています(40dB 未満)。

Vivado : System Generator を使用したデザイン japan.xilinx.com 80UG897 (v2014.3) 2014 年 10 月 1 日

Page 81: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

複数の独立クロックのハードウェア デザイン

概要

System Generator for DSP は、サイクル精度の高度なハードウェア モデリ ングを使用するインプリ メンテーシ ョ ン ツールで、そのサイ クルの概念はハード ウェアのク ロ ッ クの概念と類似しています。 デザインはサブシステム ブロ ッ クのグループにパーティシ ョ ンでき、各サブシステムではその他のサブシステムのサイクル周期とは独立した共通のサイクル周期が使用されます。このセクシ ョ ンでは、グループを 1 つのサイクルまたはクロ ッ ク ド メ インにま とめる方法と、これらのサイ クル ド メ イン間のデータの転送方法について説明します。 また、 このセクシ ョ ンでは、 「サイ クル」 と 「ク ロ ッ ク」 が同じ意味で使用されます。

クロック  ド メ イン内のブロックのグループ分け

ブロ ッ クは、 「サブシステム」 を使用して System Generator と一緒にまとめられます。 1 つのクロ ッ ク ド メ イン内でブロ ッ クをグループ分けする場合は、 System Generator トークンをク ロ ッ ク ド メ インと してマークするサブシステム内に配置する必要がある点が異なり ます。 これを次の図に示します。

この図では、 src_domain という ク ロ ッ ク ド メ インのサブシステムが作成されて、 System Generator トークンが追加されており、System Generator トークンの [Clocking] タブが選択された状態です。 このタブでは、 FPGA ク ロ ッ ク周期が (1000/368) ns (368MHz) に、 Simulink システム周期が 1 に設定されており、 1 Simulink 秒の前進が FPGA ク ロ ッ クの (1000/368) ns に該当するこ とを意味します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 81UG897 (v2014.3) 2014 年 10 月 1 日

Page 82: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 82UG897 (v2014.3) 2014 年 10 月 1 日

Page 83: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

これらのブロ ッ クは、 デザイン コンテキス トに基づいて Synchronous シングル ク ロ ッ ク ブロ ッ クか Multiple ク ロ ッ ク ブロ ックのいずれかに自動的にコンフ ィギュレーシ ョ ンされます。 このデザインの場合、次の図に示すよ うに、 ク ロ ッ ク ド メ インをまたぐために FIFO ブロッ クが使用されています。

デザインを完了するには、 デザインの 上位の FIFO ブロ ッ ク と追加の System Generator ブロ ッ クを含めて、 コード生成をイネーブルにします。

Vivado : System Generator を使用したデザイン japan.xilinx.com 83UG897 (v2014.3) 2014 年 10 月 1 日

Page 84: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 84UG897 (v2014.3) 2014 年 10 月 1 日

Page 85: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 85UG897 (v2014.3) 2014 年 10 月 1 日

Page 86: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

正しいクロ ッ ク伝搬を承認するには、 次の図に示すよ うに [Sample frequencies] を使用するこ と もできます。

シ ミ ュレーシ ョ ンでハード ウェア ビヘイビアーがクロ ッ クに関してモデリ ングされるよ うにするには、各ド メ インの Simulinkシステム周期対 FPGA ク ロ ッ ク周期の比率が同じである必要があ り ます。 この関係が正しい比率でコンパイルされないと、 次の図のよ うな警告メ ッセージが表示されます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 86UG897 (v2014.3) 2014 年 10 月 1 日

Page 87: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

シミ ュレーシ ョ ン

シ ミ ュレーシ ョ ンを実行する と、 dest_domain スコープと同じ く、 次のよ うな結果になり ます。

上記に示すよ うに、 シ ミ ュレーシ ョ ン結果には取得したデータが予測したデータであるこ とが示されます。

注記 : このクロス ク ロ ッ ク ド メ インのシ ミ ュレーシ ョ ン ビヘイビアーのサイクル精度は高くあ り ません。

複数クロック  ド メ イン信号のデバッグ

System Generator では、 ポップアップ メニューの [Xilinx View Signal] オプシ ョ ンで複数のさまざまなクロ ッ ク ド メ インからの信号の表示がサポート されます。 これによ り、 さまざまなサブシステムからの信号を 1 つのビューで表示するタスクが簡単にな り ます。 また、 波形ビューアーと Simulink ダイアグラム間のク ロスプローブ機能によ り、 デバッグ プロセスもやりやすくなっています。

Vivado : System Generator を使用したデザイン japan.xilinx.com 87UG897 (v2014.3) 2014 年 10 月 1 日

Page 88: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 88UG897 (v2014.3) 2014 年 10 月 1 日

Page 89: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

複数クロックの ISE デザインの Vivado IDE への移行

複数の非同期クロ ッ クを含む ISE デザインを Vivado 環境に移行する方法については、 「複数クロ ッ クの ISE デザインの VivadoIDE への移行」 を参照して ください。

既知の問題

次は、 既知の問題の一部です。

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 を使用したデザイン japan.xilinx.com 89UG897 (v2014.3) 2014 年 10 月 1 日

Page 90: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 90UG897 (v2014.3) 2014 年 10 月 1 日

Page 91: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 91UG897 (v2014.3) 2014 年 10 月 1 日

Page 92: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

メーター ダイアログ ボッ クスの [Display shortened port names] をオフにしてその完全名を表示させるよ うにするこ と もできます。

マルチチャネル TDATA の分割

AXI4-Stream では、 TDATA に複数チャネルのデータを含めるこ とができます。 System Generator では、 TDATA のチャネルが分割されます。 たとえば、 次の dout ポートの TDATA には、 現実と仮想のコンポーネン トの両方が含まれます。

マルチチャネル TDATA を分割してもデザインにロジッ クは追加されません。 これはユーザーの都合を考えて System Generatorで分割されます。 分割された TDATA ポートのデータも正し くバイ ト アライ メン ト されます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 92UG897 (v2014.3) 2014 年 10 月 1 日

Page 93: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 4 章 : System Generator を使用したハードウェア設計

AXI‐Lite インターフェイス生成

概要

System Generator を使用して開発したデザイン モジュールは、通常よ り大きな DSP または Vivado システムのサブシステムを形成します。 これらの System Generator モジュールは、通常 MATLAB/Simulink のよ うな視覚上優れた環境で作成するのが 適な演算およびデータ パスの多いモジュールです。よ り大きなシステムは、通常 Vivado IP カタログの IP からアセンブルされます。これらの IP は、標準ス ト リームを使用し、AXI4-Lite のよ うなインターフェイスを制御します。 よ り大きなシステムでは、VivadoIP インテグレーターのよ うなツールを使用してアセンブルされます。

こ こでは、 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 を使用したデザイン japan.xilinx.com 93UG897 (v2014.3) 2014 年 10 月 1 日

Page 94: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 94UG897 (v2014.3) 2014 年 10 月 1 日

Page 95: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 95UG897 (v2014.3) 2014 年 10 月 1 日

Page 96: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 96UG897 (v2014.3) 2014 年 10 月 1 日

Page 97: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 97UG897 (v2014.3) 2014 年 10 月 1 日

Page 98: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 98UG897 (v2014.3) 2014 年 10 月 1 日

Page 99: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 99UG897 (v2014.3) 2014 年 10 月 1 日

Page 100: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 5章

ハードウェア協調シミ ュレーシ ョ ンの使用

概要

System Generator には、ハード ウェア協調シ ミ ュレーシ ョ ンの機能が含まれ、 FPGA で実行されるデザインを直接 Simulink シ ミ ュレーシ ョ ンに読み込むこ とができます。[Hardware Co-Simulation] コンパイル オプシ ョ ンを選択してコンパイルする と、 ビッ ト ス ト リームが自動的に作成され、 ブロ ッ クに関連付けられます。 デザインが  Simulink でシミ ュレーシ ョ ンされる と、 そのコンパイルされた部分の結果はハードウェアで計算されます。 これによ り、 コンパイルされた部分が実際のハード ウェアでテス ト でき るので、 シ ミ ュレーシ ョ ン時間がかな り速く な り ます。 SystemGenerator では現在のと ころ次のボードがサポート されます。

ハードウェア協調シミ ュレーシ ョ ンへの M コード  アクセス

MATLAB M  コード (M-Hwcosim)  を使用する と、 System Generator ハード ウェア協調シ ミ ュレーシ ョ ン   フローで作成されたハード ウェアをプログラム制御できます。 M-Hwcosim  インターフェイスでは、ハード ウェアに対する  MATLAB オブジェク トが Simulink のフレームワーク とは別に、 純粋な M コードで作成できます。 これで、 これらのオブジェク トがハード ウェアへ読み出しおよび書き込みができるよ うになり ます。 この機能によ り、ハード ウェア協調シ ミ ュレーシ ョ ンにスク リプ ト インターフェイスを含めるこ とができるので、ハード ウェアがスク リプ ト記述されたテス トベンチで使用できたり、 ハード ウェアを M コードでハード ウェア加速と して開発したりできます。

この詳細は、 『Vivado Design Suite リ ファレンス ガイ ド : System Generator を使用したモデル ベースの DSP デザイン』(UG958) の

表 5‐1 : System Generator ハードウェア協調シミ ュレーシ ョ ンのボード  サポート

デバイス ファ ミ リ ボード サポート

Artix-7 AC701 JTAG

Kintex-7 KC705 • JTAG

• ポイン ト ツー ポイン ト イーサネッ ト

Virtex-7 VC707 • JTAG

• ポイン ト ツー ポイン ト イーサネッ ト

Zynq-7000 ZC702ZC706

• JTAG• JTAG

Vivado : System Generator を使用したデザイン japan.xilinx.com 100UG897 (v2014.3) 2014 年 10 月 1 日

Page 101: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 101UG897 (v2014.3) 2014 年 10 月 1 日

Page 102: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 5 章 : ハードウェア協調シミ ュレーシ ョ ンの使用

ネッ ト リ ス ト ファ イルが生成されるだけでなく、 FPGA コンフ ィギュレーシ ョ ン ファ イルを生成するのに必要なダウンス ト リーム ツールも実行されます。

注記 : [Generate] ボタンをク リ ッ クする と、 ステータスを示すダイアログ ボッ クスが表示されます。 コンパイル中は、[Cancel] および [Show Details] ボタンが表示されます。 [Cancel] ボタンをク リ ッ クする と、 コンパイルが停止します。[Show Details] ボタンをク リ ッ クする と、実行中にコンパイルの各段階に関する詳細が表示されます。ダイアログ ボックスの [Hide Details] ボタンをク リ ッ クする と、 コンパイルの詳細を非表示にできます。

コンフ ィギュレーシ ョ ン ビッ ト ス ト リームには、 モデルに関連したハード ウェアが含まれるほか、 ボードおよび PC間の物理的インターフェイスを使用して、 System Generator でデザインと通信ができるよ うにするインターフェイスロジッ ク も追加で含まれます。 このロジッ クには、 メモ リ マップ インターフェイスが含まれ、 System Generator でデザインの入力ポートおよび出力ポートに値を読み出しおよび書き込みができます。 また、 FPGA ボードをターゲッ トにする際に必要なボード特有の回路も含まれます。

ハードウェア協調シミ ュレーシ ョ ン  ブロックデザインが FPGA ビッ ト ス ト リームにコンパイルされたら、 System Generator で新しいハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クが自動的に作成され、 ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クを格納するための Simulink ライブラ リ も作成されます。 この段階では、 ラ イブラ リ からブロ ッ ク を コ ピーして、 ほかの Simulink および SystemGenerator ブロ ッ ク と同様、 System Generator デザインで使用できます。

ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クは、接続元のモデルの外部インターフェイスまたはサブシステムを推測します。 ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クのポート名は元のサブシステムのポート名と同じにな り ます。ポート タイプおよびレート も元のデザインと同じにな り ます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 102UG897 (v2014.3) 2014 年 10 月 1 日

Page 103: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 103UG897 (v2014.3) 2014 年 10 月 1 日

Page 104: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 104UG897 (v2014.3) 2014 年 10 月 1 日

Page 105: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 5 章 : ハードウェア協調シミ ュレーシ ョ ンの使用

KC705 ボードの設定

次の図は、 この JTAG 設定に必要な KC705 コンポーネン ト を示しています。

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] ボタンをク リ ッ ク して、 ハード ウェア協調シ ミ ュレーシ ョ ンを開始します。

??????

???????

LED

JTAG ?????

Vivado : System Generator を使用したデザイン japan.xilinx.com 105UG897 (v2014.3) 2014 年 10 月 1 日

Page 106: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 5 章 : ハードウェア協調シミ ュレーシ ョ ンの使用

ポイン ト  ツー ポイン ト  イーサネッ ト  ハードウェア協調シミ ュレーシ ョ ン

PC でのローカル エリア ネッ トワークの設定

イーサネッ トのポイン ト ツー ポイン ト ハードウェア協調シ ミ ュレーシ ョ ンの場合、 PC に 10/100 高速イーサネッ トまたはギガビッ ト イーサネッ ト アダプターが必要です。 設定をコンフ ィギュレーシ ョ ンするには、 次を実行して ください。

[スタート ] メニューからコン ト ロール パネルを開いて、 [ネッ ト ワーク と共有センター ] → [アダプターの設定の変更] をク リ ッ ク します。

[Local Area Connection] を右ク リ ッ ク して [プロパティ ] をク リ ッ ク します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 106UG897 (v2014.3) 2014 年 10 月 1 日

Page 107: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 5 章 : ハードウェア協調シミ ュレーシ ョ ンの使用

次の図のよ うに [インターネッ ト プロ ト コル バージ ョ ン 4 (TCP/IPv4)] をオンにします。 それ以外はすべてオフにします。

次に [インターネッ ト プロ ト コル バージ ョ ン 4 (TCP/IPv4)] を選択します。[プロパティ ] をク リ ッ ク して [IP アドレス] を 192.168.1.11 に、 [サブネッ ト マスク ] を 255.255.255.0 に設定し、 [OK] をク リ ッ ク します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 107UG897 (v2014.3) 2014 年 10 月 1 日

Page 108: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 5 章 : ハードウェア協調シミ ュレーシ ョ ンの使用

[構成] を ク リ ッ ク し ます。 [詳細設定] タブを ク リ ッ ク し ます。 [Flow Control] を ク リ ッ ク し ます。 値を [Rx and TxEnabled] に設定します。

後に[Speed and Duplex] をク リ ッ ク して値を [Auto Negotiation] に設定し、 [OK] ボタンをク リ ッ ク します。

Linux でのポイン ト  ツー ポイン ト  イーサネッ ト  ハードウェア協調シミ ュレーシ ョ ン

Linux でポイン ト ツー ポイン ト イーサネッ ト ハード ウェア協調シ ミ ュレーシ ョ ンを実行するには、 Linux マシンでsudo アクセスが必要です。 System Generator は、 sudo ユーザーと して起動する必要があ り ます。 複数のネッ ト ワークインターフェイス カードがマシンにない場合、 ネッ ト ワーク スイ ッチを使用できます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 108UG897 (v2014.3) 2014 年 10 月 1 日

Page 109: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 5 章 : ハードウェア協調シミ ュレーシ ョ ンの使用

ポイン ト  ツー ポイン ト  イーサネッ ト  ハードウェア協調シミ ュレーシ ョ ンのための KC705 ボードのインストール次は、 KC705 ボードのポイン ト ツー ポイン トのイーサネッ ト ハードウェア協調シ ミ ュレーシ ョ ンを実行するのに必要なハードウェアをインス トールおよびコンフ ィギュレーシ ョ ンする方法について説明します。

必要なハードウェア

1. ザイ リ ンクス KC705 ボード2. ボードの電源3. ホス ト PC 用のイーサネッ ト ネッ ト ワーク インターフェイス カード (NIC) 4. イーサネッ ト RJ45 Male/Male ケーブル.(ネッ ト ワークまたはクロスオーバー ケーブルなど)5. ビッ ト ス ト リームをダウンロードする Digilent USB ケーブルまたは Platform USB ケーブル

KC705 ボードの設定

上記の図に示すよ うに、 次を実行します。

1. 電力ケーブルを右に接続します。 電源を AC 電源にプラグインします。

2. Digilent USB ケーブルを左上に、 も う一方の先をホス ト PC に接続します。

3. イーサネッ ト ケーブルを KC705 ボードの左下へ、 も う一方の先をホス ト PC に接続します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 109UG897 (v2014.3) 2014 年 10 月 1 日

Page 110: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 5 章 : ハードウェア協調シミ ュレーシ ョ ンの使用

ポイン ト  ツー ポイン ト  イーサネッ ト  ハードウェア協調シミ ュレーシ ョ ンのための VC705 ボードのインストール次は、 VC705 ボードのポイン ト ツー ポイン トのイーサネッ ト ハードウェア協調シ ミ ュレーシ ョ ンを実行するのに必要なハードウェアをインス トールおよびコンフ ィギュレーシ ョ ンする方法について説明します。

必要なハードウェア

1. ザイ リ ンクス VC705 ボード2. ボードの電源3. ホス ト PC 用のイーサネッ ト ネッ ト ワーク インターフェイス カード (NIC) 4. イーサネッ ト RJ45 Male/Male ケーブル.(ネッ ト ワークまたはクロスオーバー ケーブルなど)5. ビッ ト ス ト リームをダウンロードする Digilent USB ケーブルまたは Platform USB ケーブル

VC705 ボードの設定

上記の図に示すよ うに、 次を実行します。

1. 電力ケーブルを右に接続します。 電源を AC 電源にプラグインします。

2. Digilent USB ケーブルを左上に、 も う一方の先をホス ト PC に接続します。

3. イーサネッ ト ケーブルを VC705 ボードの左下へ、 も う一方の先をホス ト PC に接続します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 110UG897 (v2014.3) 2014 年 10 月 1 日

Page 111: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 6章

HDL モジュールのインポートSystem Generator デザインに既存の HDL モジュールを追加するこ とが重要な場合があ り ます。 System Generator BlackBox ブロッ クを使用する と、 VHDL、 Verilog、 および EDIF をデザインに追加できます。 Black Box ブロ ッ クは、 ほかのブロ ッ ク と同様に、 デザインに接続し、 シ ミ ュレーシ ョ ンに含め、 ハード ウ ェアにコンパイルします。 SystemGenerator で Black Box ブロ ッ クをコンパイルする と、 インポート されたモジュールと関連のファイルが周囲のネッ トリ ス トに接続されます。 ブラ ッ ク ボッ クスは、 System Generator トークンの設定に基づいて、 同期クロ ッ ク デザインか複数ハードウェア ク ロ ッ ク デザインのいずれかをサポートするよ うにコンフ ィギュレーシ ョ ンできます。

ブラック  ボックスの HDL の要件と制限ブラ ッ ク ボッ クスに関連する HDL コンポーネン トは、 次の System Generator の要件および制限をすべて満たしている必要があ り ます。

• デザインのほかのエンティティ名とは異なる名前を付けます。

• 双方向ポートは HDL ブラ ッ ク ボッ クスでサポート されますが、 System Generator ではポート と して表示されず、ネッ ト リ ス ト生成後の HDL でのみ表示されます。

• Verilog のブラ ッ ク ボッ クスでは、 モジュール名およびポート名は標準的な VHDL の命名規則に従う よ うにします。

表 6‐1 :

Black Box インターフェイス

ブラ ッ ク ボッ ク スの HDL の要件と制限

ブラ ッ ク ボッ クスに関連する VHDL、 Verilog、 EDIF に対する要件と制限を説明します。

ブラ ッ ク ボッ ク ス コンフ ィ ギュレーシ ョ ン ウ ィザード

ブラ ッ ク ボッ クス コンフ ィギュレーシ ョ ン ウ ィザードの使用法を説明します。

ブラ ッ ク ボッ クスのコンフ ィギュレーシ ョ ン M 関数

ブラ ッ ク ボッ クス コンフ ィギュレーシ ョ ン M 関数の作成方法を説明します。

HDL 協調シミ ュレーシ ョ ン

HDL シ ミ ュレータの設定 Black Box ブロ ッ クの HDL に対して協調シ ミ ュレーシ ョンを実行するために、 Vivado® シ ミ ュレータ またはModelSim を設定する方法を説明します。

複数ブラ ッ ク ボ ッ ク スの協調シミ ュレーシ ョ ン

1 つの HDL シ ミ ュレータ セッシ ョ ンで複数の Black Boxブロ ッ クに対して協調シ ミ ュレーシ ョ ンを実行する方法を説明します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 111UG897 (v2014.3) 2014 年 10 月 1 日

Page 112: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 112UG897 (v2014.3) 2014 年 10 月 1 日

Page 113: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 113UG897 (v2014.3) 2014 年 10 月 1 日

Page 114: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 114UG897 (v2014.3) 2014 年 10 月 1 日

Page 115: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 115UG897 (v2014.3) 2014 年 10 月 1 日

Page 116: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 116UG897 (v2014.3) 2014 年 10 月 1 日

Page 117: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 6 章 : HDL モジュールのインポート

上記の例では、 シ ミ ュレーシ ョ ン中、 テキス ト ファ イル bidi.dat がポートへのスティ ミ ュ ラス と して使用されます。データ ファ イルはテキス ト形式で作成し、 各行に各シ ミ ュレーシ ョ ン サイ クルでポートに駆動する信号を記述します。 たとえば、 3 ビッ トの双方向ポート を駆動する 4 サイ クル分の信号を指定する場合は、 データ ファ イルに次のように記述します。

ZZZ110011XXX

指定したデータ ファ イルが存在しない場合は、 エラーが返されます。

ポートのサンプリング レートの設定

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 を使用したデザイン japan.xilinx.com 117UG897 (v2014.3) 2014 年 10 月 1 日

Page 118: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 118UG897 (v2014.3) 2014 年 10 月 1 日

Page 119: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 119UG897 (v2014.3) 2014 年 10 月 1 日

Page 120: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 6 章 : HDL モジュールのインポート

次の VHDL モジュールは、 非同期ク リ アを持つ 4 ビ ッ ト のア ップ カウ ン ターです (async_counter.vhd)。 これはasync_counter_lib とい う名前のライブラ リにコンパイルされます。

次の VHDL モジ ュールは、 同期ク リ アを持つ 4 ビ ッ ト のア ッ プ カ ウ ン ターです (sync_counter.vhd)。 これはsync_counter_lib とい う名前のライブラ リにコンパイルされます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 120UG897 (v2014.3) 2014 年 10 月 1 日

Page 121: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 6 章 : HDL モジュールのインポート

次の VHDL モジュールは、 上記のモジュールをインスタンシエートする 上位モジュールです。 System Generator モデルにブラ ッ ク ボッ クスを追加する際、 このモジュールを指定する必要があ り ます。

VHDL のインポートでは、 まずブラ ッ ク ボッ クスを使用して 上位エンティティ top_level をインポート します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 121UG897 (v2014.3) 2014 年 10 月 1 日

Page 122: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 122UG897 (v2014.3) 2014 年 10 月 1 日

Page 123: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 123UG897 (v2014.3) 2014 年 10 月 1 日

Page 124: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 124UG897 (v2014.3) 2014 年 10 月 1 日

Page 125: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 125UG897 (v2014.3) 2014 年 10 月 1 日

Page 126: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 6 章 : HDL モジュールのインポート

SysgenPortDescriptor メンバー変数

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 の場合は、 ポート出力が定数であるこ とを示します。

メ ソ ッ ド 説明

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 を使用したデザイン japan.xilinx.com 126UG897 (v2014.3) 2014 年 10 月 1 日

Page 127: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 6 章 : HDL モジュールのインポート

ブラック  ボックスでの複数の独立クロック  サポート

ポート接続の 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)

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) に設定します。

メ ソ ッ ド 説明

Vivado : System Generator を使用したデザイン japan.xilinx.com 127UG897 (v2014.3) 2014 年 10 月 1 日

Page 128: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 128UG897 (v2014.3) 2014 年 10 月 1 日

Page 129: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 6 章 : HDL モジュールのインポート

HDL シミ ュレータの設定 

ブラ ッ ク ボッ クスの HDL は、 Simulink で System Generator インターフェイスを使用して Vivado シ ミ ュレータまたはModelSim にアクセスするこ とによ り、 協調シ ミ ュレーシ ョ ンできます。

ザイリンクス シミ ュレータ

ブラ ッ ク ボッ クスに関連付けられている HDL をザイ リ ンクス シ ミ ュレータで協調シ ミ ュレーシ ョ ンするには、BlackBox ブロ ッ クのパラ メーター ダイアログ ボッ クスで [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 を使用したデザイン japan.xilinx.com 129UG897 (v2014.3) 2014 年 10 月 1 日

Page 130: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 6 章 : HDL モジュールのインポート

ModelSim ブロ ッ クのパラ メータ ダイアログ ボッ クスには、 ModelSim でのシ ミ ュレーシ ョ ン セッシ ョ ンを制御するオプシ ョ ンが含まれています。詳細は、ブロ ッ クのヘルプ ページを参照してください。 これで、 これらのオプシ ョ ンでモデルがシ ミ ュレーシ ョ ンできるよ うになったので、 HDL 協調シ ミ ュレーシ ョ ンが自動的に実行されるよ うになり ます。

複数ブラック  ボックスの協調シミ ュレーシ ョ ン  

System Generator では、多くのブラ ッ ク ボッ クスで同じ ModelSim 協調シ ミ ュレーシ ョ ン セッシ ョ ンが共有できます。たとえば、 同じ ModelSim ブロ ッ クを使用するよ うに多くのブラ ッ ク ボッ クスを設定できます。 この場合、 SystemGenerator では、自動的にすべてのブラ ッ ク ボッ クス HDL コンポーネン トが 1 つの共有の 上位協調シ ミ ュレーシ ョン コンポーネン トにま とめらます。 これはユーザーには見えません。 Simulink シ ミ ュレーシ ョ ンで複数のブラ ッ クボッ クスを協調シ ミ ュレーシ ョ ンするためには、 ModelSim シ ミ ュレーシ ョ ン ラ イセンスが 1 つだけ必要です。

また、 複数のブラ ッ ク ボッ クスは、 各ブラ ッ ク ボッ クスの [Simulation mode] に [Vivado Simulator] オプシ ョ ンを選択するだけで、 Vivado シ ミ ュレータで協調シ ミ ュレーシ ョ ンするこ と もできます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 130UG897 (v2014.3) 2014 年 10 月 1 日

Page 131: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 7章

System Generator のコンパイル タイプSystem Generator では、 複数の方法でデザインを同等のもし くは下位レベルの表記にコンパイルできます。 デザインがコンパイルされる方法は、 [System Generator] ダイアログ ボッ クスの設定によって異な り ます。 異なるコンパイルタイプがサポート されているので、 デザイン環境に合った記述を選択できます。 たとえば、 そのデザインが大規模システムのコンポーネン ト と して使用される場合は、 HDL ネッ ト リ ス ト または IP カタログをターゲッ トにするのが適しています。

[HDL Netlist] コンパイルSystem Generator ではデフォル ト の生成ターゲッ ト と して [HDL Netlist] コンパイル タ イプが使用されます。 [HDLNetlist] コンパイル フローに関する詳細は、 コンパイル結果を参照してください。

次に示すよ うに、 [System Generator] ダイアログ ボッ クスの [Compilation] フ ィールドをク リ ッ ク して [HDL Netlist] を選択します。

[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) を生成する方法について説明します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 131UG897 (v2014.3) 2014 年 10 月 1 日

Page 132: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 7 章 : System Generator のコンパイル タイプ

[Hardware Co‐Simulation] コンパイルSystem Generator では、 Simulink シ ミ ュレーシ ョ ンとのループで使用可能な FPGA ハード ウェアにデザインをコンパイルできます。 この機能については、 ハード ウェア協調シ ミ ュレーシ ョ ンの使用を参照してください。

次に示すよ う に、 [System Generator] ダイ ア ロ グ ボ ッ ク スの [Compilation] フ ィ ール ド を ク リ ッ ク し て [HardwareCo-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 を使用したデザイン japan.xilinx.com 132UG897 (v2014.3) 2014 年 10 月 1 日

Page 133: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 7 章 : System Generator のコンパイル タイプ

[Settings] ボタンがオンにな り ます。 ク リ ッ クする と、 次のよ う なダイアログ ボッ クスが表示され、 Vivado IP カタログに表示されるモジュールに関する情報が入力できます。

[Target directory] フ ィールドでは生成ファ イルのディ レク ト リ を指定できます。 [Generate] ボタンをク リ ッ クする と、IP カタログ フローが開始します。次のよ うな [Compilation status] ウ ィンド ウが表示され、 フローの進捗状況が示されます。 IP カタログ フローが終了したら、 「Generation Completed」 と表示されます。 [Show Details] をク リ ッ クする と、詳細な情報が表示されます。

指定したターゲッ ト ディレク ト リには、ip_catalog という名前のフォルダーができます。 このフォルダーには、SystemGenerator デザインから IP を作成するのに必要なファイルがすべて含まれます。丸で囲んだ ZIP ファ イルには、 SystemGenerator デザインを 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 を使用したデザイン japan.xilinx.com 133UG897 (v2014.3) 2014 年 10 月 1 日

Page 134: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 134UG897 (v2014.3) 2014 年 10 月 1 日

Page 135: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を作成する と きに SystemGenerator で指定したのと同じデバイスをターゲッ トにする既存プロジェク ト を開きます。

注記 : IP はこのプロジェク トからしか使用できません。この IP を使用する新しいプロジェク ト ごとに同じ手順を実行する必要があ り ます。

次に Project Manager の [IP Catalog] をク リ ッ ク し、 [IP Catalog] ビューの空のエ リ アで右ク リ ッ ク します。 [Update IPCatalog] をク リ ッ ク し、 新規 IP を含むディレク ト リ を追加します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 135UG897 (v2014.3) 2014 年 10 月 1 日

Page 136: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 136UG897 (v2014.3) 2014 年 10 月 1 日

Page 137: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 7 章 : System Generator のコンパイル タイプ

カスタム コンパイル ターゲッ トの作成System Generator には、ユーザーが独自のコンパイル ターゲッ ト を作成できるカスタム コンパイル基盤が含まれています。 System Generator デザインから HDL を生成できるだけでな く、 HDL 生成前後どちらの段階も自動化するコンパイル ターゲッ ト プラグインを作成できます。カスタム コンパイル ターゲッ トの作成に関する詳細は、カスタム コンパイル ターゲッ トの作成を参照してください。

Vivado : System Generator を使用したデザイン japan.xilinx.com 137UG897 (v2014.3) 2014 年 10 月 1 日

Page 138: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 8章

カスタム コンパイル ターゲッ トの作成System Generator には、ユーザーが独自のコンパイル ターゲッ ト を作成できるカスタム コンパイル基盤が含まれています。 System Generator デザインから HDL を生成できるだけでなく、 Vivado IDE プロジェク ト生成前後どちらの段階も自動化するコンパイル ターゲッ ト プラグインを作成できます。 カスタム コンパイル ターゲッ ト を作成するには、MATLAB 環境でオブジェク ト指向プログラムの概念について知っておく必要があ り ます。

xilinx_compilation ベース クラスカスタム コンパイル基盤には、 xilinx_compilation というベース ク ラスが提供されています。 このベース ク ラスからは、サブク ラスを作成してそのプロパティを使用し、 メンバー関数を上書きしてユーザーの機能をインプリ メン トできます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 138UG897 (v2014.3) 2014 年 10 月 1 日

Page 139: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 139UG897 (v2014.3) 2014 年 10 月 1 日

Page 140: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 8 章 : カスタム コンパイル ターゲッ トの作成

3. ヘルパー関数によ り MATLAB パスに U:\demo\Impl が追加されるので、 新しいク ラスの Impl が MATLAB に表示されるよ うになり ます。

注記 : target_name にはスペースを含めるこ とができません。ク ラスが作成されたら、ク ラスの target_name プロパティにスペースを追加できます。

新規ボード  ターゲッ トの作成

このインターフェイスを使用する と、 System Generator で新しい開発ボードをサポートできます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 140UG897 (v2014.3) 2014 年 10 月 1 日

Page 141: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 検索パスからターゲッ トへのパスを削除する と削除できます。

ベース クラスのプロパティおよび APIxilinx_compilation ベース ク ラスは、 次のディ レク ト リにあ り ます。

<Vivado Install Path>/scripts/sysgen/matlab/@xilinx_compilation

Vivado : System Generator を使用したデザイン japan.xilinx.com 141UG897 (v2014.3) 2014 年 10 月 1 日

Page 142: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 8 章 : カスタム コンパイル ターゲッ トの作成

System Generator トークン関連のプロパティおよび API

setup_sysgen_token()

この関数は、カスタム コンパイル基盤による System Generator トークン情報を生成するために呼び出されます。SystemGenerator トークンに関する次の関数のいずれかを使用する と、 カスタム ターゲッ トが選択されたと きにデフォルトで トークンがどのよ うになるかを設定できます。デフォルト値のフ ィールド と イネーブル/ディ スエーブルのフ ィールドは、 次の 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 を使用したデザイン japan.xilinx.com 142UG897 (v2014.3) 2014 年 10 月 1 日

Page 143: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 143UG897 (v2014.3) 2014 年 10 月 1 日

Page 145: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 145UG897 (v2014.3) 2014 年 10 月 1 日

Page 146: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 8 章 : カスタム コンパイル ターゲッ トの作成

7. 必要に応じて setup_sysgen_token() 関数を入力します。 この方法を使用する と、 ユーザー定義のカスタム コンパイルが選択された場合に、 イネーブル/ディ スエーブルのフ ィールド も含め、 System Generator トークンがどのように表示されるかをユーザーが制御できます。

8. MATLAB のコマンド ウ ィンド ウに、 次のコマンドを入力する必要があ り ます。

xilinx.environment.rehashCompilationTarget

これによ り、 [Impl] のアップデート されたク ラス定義が使用されるよ うにな り ます。

9. System Generator を一旦閉じて、 開き直します。 [Compilation] ターゲッ ト リ ス トから [Impl] を選択します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 146UG897 (v2014.3) 2014 年 10 月 1 日

Page 147: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 8 章 : カスタム コンパイル ターゲッ トの作成

10. System Generator トークンは次のよ うに表示されます。

11. [Hardware description language] フ ィールドが Impl ク ラスで設定したのと同じになるよ うに変更し、[Implementationstrategy] フ ィールドがユーザーが修正できないよ うになっているこ とを確認します。

12. すべてのユーザー指定のファイルおよび実行するその他の Tcl コマンドは、 Vivado IDE プロジェク トの作成前に知っておく必要があ り ます。 次は、 pre_project_creation() 関数を実行します。

13. MATLAB のコマンド ウ ィンド ウに、 次のよ うに入力します。

Vivado : System Generator を使用したデザイン japan.xilinx.com 147UG897 (v2014.3) 2014 年 10 月 1 日

Page 148: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 148UG897 (v2014.3) 2014 年 10 月 1 日

Page 149: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 149UG897 (v2014.3) 2014 年 10 月 1 日

Page 150: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第 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 を使用したデザイン japan.xilinx.com 150UG897 (v2014.3) 2014 年 10 月 1 日

Page 151: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

付録 A

System Generator の GUI ユーティ リテ ィすばや く System Generator デザインを作成して解析するための Simulink モデルのポップア ップ メ ニューにグ ラフ ィ ッ ク コマンドを追加しました。次のよ うに、 これらのコマンドには、 Simulink モデルのキャンバスで右ク リ ッ クして、 適切なザイ リ ンクス コマンドを選択する とアクセスできます。

その他のザイ リ ンクス コマンドの詳細は、 次を参照してください。

[Xilinx BlockAdd] ザイ リ ンクス ブロ ッ クを Simulink モデルにすばやく追加できる機能です。

[Xilinx Tools] → [Save as blockAdddefault]

ブロ ッ クを前もってコンフ ィギュレーシ ョ ンして、 そのブロ ッ クの複数コピーを BlockAdd 機能を使用して追加する機能です。

[Xilinx BlockConnect] Simulink モデル内でブロ ッ クをすばやく接続する機能です。

[Xilinx Tools] → [Terminate] オープン出力ポートに Simulink ターミネーター ブロ ッ クをすばやく追加したり、オープン入力ポートにザイ リ ンクス Constant ブロ ッ クをすばやく追加する機能です。

[Xilinx View Signal] Simulink シ ミ ュレーシ ョ ンの実行後に選択した信号の波形図を生成できるよ うにする機能です。

Vivado : System Generator を使用したデザイン japan.xilinx.com 151UG897 (v2014.3) 2014 年 10 月 1 日

Page 152: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : System Generator の GUI ユーティ リテ ィ

[Xilinx BlockAdd]

ザイ リ ンクス ブロ ッ クを Simulink モデルにすばやく追加できる機能です。

起動方法

方法 1 :

Simulink キャンバスを右ク リ ッ ク して [Xilinx BlockAdd] を選択します。

方法 2 :

シ ョート カッ ト 、 Ctrl + 1 を押します。

方法 3 :

Simulink モデルのプルダウン メニューから次をク リ ッ ク します。

[Tools] → [Xilinx] → [BlockAdd Ctrl 1]

使用方法

Simulink キャンバスを右ク リ ッ ク して [Xilinx BlockAdd] を選択します。

Simulink キャンバスを右ク リ ッ ク して [Xilinx BlockAdd] を選択します。

1. 右クリ ック 2. 選択

2. ダブルクリ ック 1. ブロックまでスクロール

Vivado : System Generator を使用したデザイン japan.xilinx.com 152UG897 (v2014.3) 2014 年 10 月 1 日

Page 153: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : System Generator の GUI ユーティ リテ ィ

次の図に示すよ うに、 ブロ ッ クまですばやく スクロールするよ うにするには、 そのブロ ッ ク名の 初の何文字かを一番上のテキス ト ボッ クスに入力します。 複数のブロ ッ クを追加するには、 Shift キーを押しながらブロ ッ クをク リ ック していき、 Enter キーを押します。

同じブロ ッ クのコピーを複数追加するには、 ブロ ッ クを追加してから、 そのブロ ッ クを選択して Ctrl + C を押してから、 Ctrl + V を押していきます。

[Add block] ウ ィンド ウを消すには、 Esc キーを押します。

2.Shift + クリ ッ ク 1. 文字を入力3.Enter を押す

Vivado : System Generator を使用したデザイン japan.xilinx.com 153UG897 (v2014.3) 2014 年 10 月 1 日

Page 154: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : 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 を使用したデザイン japan.xilinx.com 154UG897 (v2014.3) 2014 年 10 月 1 日

Page 155: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : System Generator の GUI ユーティ リテ ィ

[Xilinx BlockConnect]

Simulink モデル内でブロ ッ クをすばやく接続する機能です。

単純な接続

1. 次の図に示すよ うに、 ブロ ッ クのオープン ポート を選択して右ク リ ッ ク し、 [Xilinx BlockConnect] をク リ ッ ク します。

2. BlockConnect が も近い接続を緑の線で提案します。 了承するには、 表内で接続をダブルク リ ッ ク します。 接続される と、 線が黒に変わり ます。 別の接続にする場合は、 表内で別の接続をク リ ッ ク して、 緑の接続線が問題ないかど うか確認します。

1. 右クリ ック2. 選択

2. ダブルクリ ッ ク1. 接続を確認

Vivado : System Generator を使用したデザイン japan.xilinx.com 155UG897 (v2014.3) 2014 年 10 月 1 日

Page 156: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : System Generator の GUI ユーティ リテ ィ

スマート接続

次の図に示すよ うな稲妻アイコンは、 スマート接続を意味します。 スマート接続には、 接続を管理しやすく したインテ リジェンスがビルト インされています。 たとえば、 AXI インターフェイスを含むブロ ッ クを右ク リ ッ クする と、(1) AXI 信号からバスまでの接続をまとめたり、分けたりできるか、 (2) 同じ数の AXI 接続を含むその他のポートへ接続したりできます。

ポートのデータ型のチェッ ク ボッ クスは実行されず、 同じポート数の AXI ポートはすべて接続できます。

次の別のスマート接続の例では、 Accumulator ブロ ッ ク出力を右ク リ ッ ク し、 BlockConnect を選択し、 Scope をダブルク リ ッ ク して Scope ブロ ッ クへのスマート接続を作成しています。 Gateway Out ブロ ッ クは自動的に追加されます。

2 つ目の接続でこの Scope ブロ ッ クへ接続される と、 2 つ目のポートが Scope ブロ ッ クに自動的に追加されます。 この駆動信号名が Scope を駆動する信号の名前にも使用されます。

「スマート」 接続を示す

Vivado : System Generator を使用したデザイン japan.xilinx.com 156UG897 (v2014.3) 2014 年 10 月 1 日

Page 157: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : System Generator の GUI ユーティ リテ ィ

[Xilinx Tools] → [Terminate]オープン出力ポートに Simulink ターミネーター ブロ ッ クをすばやく追加したり、 オープン入力ポートにザイ リ ンクス Constant ブロ ッ クをすばやく追加する機能です。

使用方法

オープン出力の終端

オープン入力および出力ポート を含む次のモデルを例に説明します。

この例の場合、 DDS Compiler 5.0 ブロッ クを右ク リ ッ ク して、 次をク リ ッ ク します。

[Xilinx Tools] → [Terminate] → [Output]

Vivado : System Generator を使用したデザイン japan.xilinx.com 157UG897 (v2014.3) 2014 年 10 月 1 日

Page 158: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : System Generator の GUI ユーティ リテ ィ

次の図は、 この結果、 終端処理された出力を示しています。

オープン入力の終端

オープン入力ポート を含む次のモデルを例に説明します。

DDS Compiler 5.0 ブロ ッ クを右ク リ ッ ク して、 次をク リ ッ ク します。

[Xilinx Tools] → [Terminate] → [Input]

Vivado : System Generator を使用したデザイン japan.xilinx.com 158UG897 (v2014.3) 2014 年 10 月 1 日

Page 159: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : 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 を使用したデザイン japan.xilinx.com 159UG897 (v2014.3) 2014 年 10 月 1 日

Page 160: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : System Generator の GUI ユーティ リテ ィ

[Xilinx View Signal]

Simulink シ ミ ュレーシ ョ ンの実行後に選択した信号の波形図を生成できるよ うにする機能です。

使用方法

1 つの信号選択

1. 次の図に示すよ うに、 表示する信号を選択して右ク リ ッ ク します。

2. [Xilinx View Signal] をク リ ッ ク します。

複数の信号選択

1. デザイン内の空白部分を右ク リ ッ ク します。

2. [Xilinx View Signals] をク リ ッ ク して信号を選択するダイアログ ボッ クスを表示します。 このダイアログ ボッ クスの左側には選択可能な信号がすべて リ ス ト され、 右側に選択した信号が入力されます。

1. 右クリ ック

2. 選択

1. 右クリ ッ ク2. 選択

Vivado : System Generator を使用したデザイン japan.xilinx.com 160UG897 (v2014.3) 2014 年 10 月 1 日

Page 161: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : System Generator の GUI ユーティ リテ ィ

3. 信号をダブルク リ ッ クする と、 リ ス トに信号が追加されるか、 リ ス トから信号が削除されます。

4. [OK] をク リ ッ ク して選択を確認する と、 選択した信号がハイライ ト されます。

ダブルクリ ック

Vivado : System Generator を使用したデザイン japan.xilinx.com 161UG897 (v2014.3) 2014 年 10 月 1 日

Page 162: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : System Generator の GUI ユーティ リテ ィ

波形ビューアーでの信号の表示

追加した信号を波形ビューアーで表示するには、シ ミ ュレーシ ョ ンを実行してシ ミ ュレーシ ョ ン データを生成する必要があ り ます。

シ ミ ュレーシ ョ ン ボタンをク リ ッ ク してシ ミ ュレーシ ョ ンを実行します。

シ ミ ュレーシ ョ ンが終了したら、 生成された波形データが波形ビューアーに表示されます。

System Generator セッシ ョ ン中は、 共通波形ビューアーは閉じる必要はあ り ません。 共通波形ビューアーには、 新のシ ミ ュレーシ ョ ン信号が表示されます。 これは、 System Generator を終了する と閉じます。

波形ビューアーとモデル間のクロス プローブ

波形ビューアーで信号名を選択する と、 同じ信号が System Generator モデルでオレンジ色でハイライ ト されます。 このハイライ ト機能によ り、 波形とモデル内のワイヤを関連付けやすくなり ます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 162UG897 (v2014.3) 2014 年 10 月 1 日

Page 163: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : 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 を使用したデザイン japan.xilinx.com 163UG897 (v2014.3) 2014 年 10 月 1 日

Page 164: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : System Generator の GUI ユーティ リテ ィ

廃止予定の WaveScope 信号名のアップグレード方法

デザインに廃止予定の WaveScope ブロ ッ クが含まれる場合、 このブロ ッ クからの既存のモニター信号名をアップグレード したブロ ッ クのものに移行する必要があ り ます。

1. 次の図に示すよ うに、 WaveScope ブロ ッ クを右ク リ ッ ク します。

2. [Xilinx Tools] → [Upgrade block] をク リ ッ ク します。

• アップグレードが実行されます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 164UG897 (v2014.3) 2014 年 10 月 1 日

Page 165: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : System Generator の GUI ユーティ リテ ィ

• アップグレードが実行されたら、 次の図のよ うに、 廃止予定の WaveScope ブロ ッ クがモデルから削除され、MATLAB コンソールにサマリが記述されます。

• 後にシ ミ ュレーシ ョ ン ボタンをク リ ッ ク してシ ミ ュレーシ ョ ンを実行します。

• シ ミ ュレーシ ョ ンが終了したら、廃止予定の WaveScope ブロ ッ クからの信号名が波形ビューアーに表示されるようになり ます。

Vivado : System Generator を使用したデザイン japan.xilinx.com 165UG897 (v2014.3) 2014 年 10 月 1 日

Page 166: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

付録 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 を使用したデザイン japan.xilinx.com 166UG897 (v2014.3) 2014 年 10 月 1 日

Page 167: Vivado Design Suite - japan. · PDF file直接生成できます。fir2 または MathWorks FDAtool のような標準 MATLAB 関数を使用すると、ザイリンクス FIR Compiler

第  章 : 

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 extentpermitted by applicable law:(1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES ANDCONDITIONS, 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 connectionwith, 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 suchdamage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.Xilinx assumes no obligation to correct anyerrors 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 andsupport 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 applicationrequiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in such critical applications, please refer to Xilinx’sTerms 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 brandsincluded 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 を使用したデザイン japan.xilinx.com 167UG897 (v2014.3) 2014 年 10 月 1 日