System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド...

350
R 本資料は英語版 (v10.1.2) を翻訳したものです。 英語の更新バージ ョ ンがリ リースされている場合には、 最新の英語 版を必ずご参照 く ださい。 System Generator for DSP ユーザー ガイド リリース 10.1.2 2008 6

Transcript of System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド...

Page 1: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

R

本資料は英語版 (v10.1.2) を翻訳したものです。 英語の更新バージョ ンがリ リースされている場合には、 新の英語

版を必ずご参照ください。

System Generator for DSP

ユーザー ガイド

リ リース 10.1.2 2008 年 6 月

Page 2: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

System Generator for DSP ユーザー ガイド japan.xilinx.com リ リース 10.1.2 2008 年 6 月

Xilinx is disclosing this user guide, manual, release note, and/or specification (the "Documentation") to you solely for use in thedevelopment of designs to operate with Xilinx hardware devices. You may not reproduce, distribute, republish, download,display, post, or transmit the Documentation in any form or by any means including, but not limited to, electronic, mechanical,photocopying, recording, or otherwise, without the prior written consent of Xilinx. Xilinx expressly disclaims any liabilityarising out of your use of the Documentation. Xilinx reserves the right, at its sole discretion, to change the Documentationwithout notice at any time. Xilinx assumes no obligation to correct any errors contained in the Documentation, or to advise youof any corrections or updates. Xilinx expressly disclaims any liability in connection with technical support or assistance that maybe provided to you in connection with the Information.

THE DOCUMENTATION IS DISCLOSED TO YOU "AS-IS" WITH NO WARRANTY OF ANY KIND. XILINX MAKESNO OTHER WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, REGARDING THEDOCUMENTATION, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULARPURPOSE, OR NONINFRINGEMENT OF THIRD-PARTY RIGHTS. IN NO EVENT WILL XILINX BE LIABLE FOR ANYCONSEQUENTIAL, INDIRECT, EXEMPLARY, SPECIAL, OR INCIDENTAL DAMAGES, INCLUDING ANY LOSS OFDATA OR LOST PROFITS, ARISING FROM YOUR USE OF THE DOCUMENTATION.

© Copyright 2002-2008 Xilinx, Inc. All rights reserved.

Xilinx, the Xilinx logo, the Brand Window, Virtex, Spartan, CoolRunner, ISE, and other designated brands included herein aretrademarks of Xilinx, Inc. Certain other third-party trademarks are used under license, for further information, seehttp://japan.xilinx.com/legal.htm. All other trademarks are the property of their respective owners.

この日本語訳 (参考のみ) は、 http://japan.xilinx.com/support/documentation/disclaimer.htm を参照して ください。

R

Page 3: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

System Generator for DSP ユーザー ガイド japan.xilinx.com 3リ リース 10.1.2 2008 年 6 月

このマニュアルについて

マニュアルの内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

System Generator の PDF マニュアル セッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

その他のリ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

表記規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

書体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

オンライン マニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

第 1 章 : System Generator を使用した

ハードウェア設計

FPGA の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

DSP 設計者へのメモ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

ハードウェア設計者へのメモ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

System Generator を使用したデザイン フロー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

アルゴ リズムの解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

大型デザインの一部と してインプ リ メン ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

完成したデザインのインプ リ メン ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

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

System Generator ブロ ッ クセッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

信号型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

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

タイ ミ ングと ク ロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

同期化のメカニズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

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

リ ソースの予測 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

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

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

コンパイル結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

HDL テス トベンチ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

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

単純なセレク タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

単純な数値演算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

レイテンシのある複素乗算器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

シフ ト操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

MCode ブロ ッ クへパラ メータを渡す . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

オプシ ョ ンの入力ポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

有限ステートマシン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

パラ メータ指定アキュムレータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

FIR とシステム検証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

RPN カ リ キュレータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

disp 関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

目次

Page 4: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

4 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

目次R

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

HDL ネッ ト リ ス トのコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

デザインの統合に関する規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

System Generator と Project Navigator の統合フロー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

手順の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

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

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

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

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

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

コンフ ィギャブル サブシステムからのハード ウェアの生成 . . . . . . . . . . . . . . . . . . . . . . . . . 85

高パフォーマンス FPGA デザインに関する メモ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

ブロ ッ クのパラ メータ ダイアログ ボッ クスに含まれている 「Hardware notes」 を読む . . . 87

デザインの入力と出力にレジスタを付ける . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

パイプライン レジスタを挿入する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

[Saturate] および [Round] オプシ ョ ンは必要な場合以外は使用しない . . . . . . . . . . . . . . . . . 87

System Generator のタイ ミ ング解析ツールを使用する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

すべての Gateway ブロ ッ クでデータ レート オプシ ョ ンを設定する . . . . . . . . . . . . . . . . . . 88

ク ロ ッ ク イネーブル (CE) のファンアウ ト を低減する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

FPGA 物理デザイン ツールを使用した System Generator デザインの処理 . . . . . . . . . . . . . . . . . . 89

HDL シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

FPGA ビッ ト ス ト リームの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

自動生成されたクロッ ク イネーブル ロジッ クのリセッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

ce_clr とレート変更ブロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

ce_clr の使用に関する推奨事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

DSP48 の設計手法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

DSP48 について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

標準コンポーネン ト を使用したデザイン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

合成可能な Mult、 Mux、 AddSub ブロ ッ クを使用したデザイン . . . . . . . . . . . . . . . . . . . . 100

DSP48 および DSP48 Macro ブロ ッ クを使用したデザイン . . . . . . . . . . . . . . . . . . . . . . . . 101

DSP48 設計手法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

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

デザインの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

FIR フ ィルタの係数の生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

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

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

ザイ リ ンクス フ ィルタ ブロ ッ クの理解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

シ ミ ュレーシ ョ ンの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

複数クロッ クのサイクル単位アイランドの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

複数クロ ッ ク アプリ ケーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

ク ロ ッ ク ド メ インの分割 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

ク ロ ッ ク ド メ インの切り替え . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

複数クロ ッ ク デザインのネッ ト リ ス ト生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

手順の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

上位ラ ッパの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

ChipScope Pro Analyzer を使用した リ アルタイム ハード ウェア デバッグ . . . . . . . . . . . . . . . . . 125

Page 5: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

System Generator for DSP ユーザー ガイド japan.xilinx.com 5リ リース 10.1.2 2008 年 6 月

目次R

ChipScope Pro の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

System Generator 内での ChipScope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

リ アルタイム デバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

ChipScope から MATLAB ワークスペースへのデータのインポート . . . . . . . . . . . . . . . . . 135

第 2 章 : ハードウェア/ソフ トウェア協調設計

System Generator でのハードウェア/ソフ ト ウェア協調設計 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

Black Box ブロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

PicoBlaze Microcontroller ブロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

EDK Processor ブロ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

プロセッサのカスタム ロジッ クへの統合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

メモ リ マップの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

ハードウェアの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

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

ソフ ト ウェア ド ラ イバの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

EDK プロセッサのソフ ト ウェア記述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

EDK プロセッサでの非同期のサポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

EDK サポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

EDK プロセッサのインポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

System Generator へのプロセッサ ポートの追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

pcore のエクスポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計 . . . . . . . . . . . . . . . . . . . . . 147

PicoBlaze マイク ロコン ト ローラ アプリ ケーシ ョ ンの設計 . . . . . . . . . . . . . . . . . . . . . . . . . 147

MicroBlaze プロセッサ ペリ フェラルの設計とエクスポート . . . . . . . . . . . . . . . . . . . . . . . 154

チュート リ アル : MicroBlaze プロセッサ システムの設計とシ ミ ュレーシ ョ ン . . . . . . . . . 158

XPS の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

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

ハード ウェア プラ ッ ト フォームのインス トール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

イーサネッ ト ベース ハード ウェア協調シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . 175

JTAG ベース ハード ウェア協調シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

サードバーティ ハード ウェア協調シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

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

コンパイル ターゲッ トの選択 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

コードの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

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

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

ク ロ ッ ク周波数の選択 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

ク ロ ッ ク モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

ク ロ ッ ク モードの選択 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

ボード専用 I/O ポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

ハードウェア協調シ ミ ュレーシ ョ ンでの I/O ポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

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

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

ネッ ト ワーク ベースのイーサネッ ト ハード ウェア協調シ ミ ュレーシ ョ ン . . . . . . . . . . . . . 187

共有メモリのサポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

Page 6: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

6 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

目次R

ハードウェア協調シ ミ ュレーシ ョ ン用の共有メモ リのコンパイル . . . . . . . . . . . . . . . . . . . 190

非保護の共有メモ リの協調シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

ロ ッ ク共有メモ リの協調シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

共有レジスタの協調シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

共有 FIFO の協調シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

共有メモ リの制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

ザイ リ ンクス ツール フローの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

ハード ウェア協調シ ミ ュレーシ ョ ンを使用したフレーム ベースの

シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

共有メモ リ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

デザインへのバッファの追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

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

ユーザー ベクタ転送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

ハード ウェア協調シ ミ ュレーシ ョ ンを使用した リ アルタイム信号処理 . . . . . . . . . . . . . . . . . . . . 213

共有メモ リ I/O バッファの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

5x5 フ ィルタ データ パスの挿入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

5x5 フ ィルタ カーネル テス トベンチ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

カーネルの再読み込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

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

イーサネッ ト ハード ウェア協調シ ミ ュレーシ ョ ン用の ML402 プラ ッ ト フォームの

インス トール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

イーサネッ ト ハード ウェア協調シ ミ ュレーシ ョ ン用の ML506 プラ ッ ト フォームの

インス トール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

イーサネッ ト ハード ウェア協調シ ミ ュレーシ ョ ン用の Spartan-3A DSP 1800A スタータ プラ ッ ト フォームのインス トール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

イーサネッ ト ハード ウェア協調シ ミ ュレーシ ョ ン用の Spartan-3A DSP 3400A 開発プラ ッ ト フォームのインス トール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

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

JTAG ハード ウェア協調シ ミ ュレーシ ョ ン用の新規プラ ッ ト フォームの

サポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

ハードウェア要件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

新規プラ ッ ト フォームのサポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

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

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

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

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

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

概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

HDL シ ミ ュレータの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

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

ブラ ッ ク ボッ クスの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

CORE Generator モジュールのインポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

VHDL モジュールのインポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

Verilog モジュールのインポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306

ダイナミ ッ ク ブラ ッ ク ボッ クス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

複数のブラ ッ ク ボッ クスの同時シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

Page 7: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

System Generator for DSP ユーザー ガイド japan.xilinx.com 7リ リース 10.1.2 2008 年 6 月

目次R

ModelSim を使用したアドバンス ブラ ッ ク ボッ クスの例 . . . . . . . . . . . . . . . . . . . . . . . . . . 312

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

HDL ネッ ト リ ス トへのコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

NGC ネッ ト リ ス トへのコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

ビッ ト ス ト リームへのコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

XFLOW のオプシ ョ ン ファ イル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

追加の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

EDK Processor ブロ ッ クに含まれるソフ ト ウェア プログラムのビッ ト ス ト リームへの

再コンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324EDK Export Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

pcore エクスポート用のカスタム バス インターフェイスの作成 . . . . . . . . . . . . . . . . . . . . 326

pcore と して EDK にエクスポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

System Generator ポート を EDK の 上位ポート と して使用 . . . . . . . . . . . . . . . . . . . . . . . 328

サポート されるプロセッサと制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

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

タイ ミ ング解析用のコンパイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

タイ ミ ング解析の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

タイ ミ ング解析ツールの機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

コンパイル ターゲッ トの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

新規コンパイル ターゲッ トの定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

Page 8: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

8 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

目次R

Page 9: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

R

このマニュアルについて

このマニュアルには、 System Generator を理解し、使用するために重要な ト ピッ クが含まれていま

す。 また、『System Generator for DSP 入門ガイ ド』 には掲載しきれなかった例やチュート リ アルも

含まれています。

マニュアルの内容

このマニュアルは、 次の章から構成されています。

• 第 1 章 「System Generator を使用した ハード ウェア設計」

• 第 2 章 「ハード ウェア/ソフ ト ウェア協調設計」

• 第 3 章 「ハード ウェア協調シ ミ ュレーシ ョ ンの使用」

• 第 4 章 「HDL モジュールのインポート」

• 第 5 章 「System Generator のコンパイル タイプ」

System Generator の PDF マニュアル セッ ト

こ のマニュ アルは System Generator の Help システム (英語版) と し て参照でき、 また SystemGenerator の PDF マニュアル セッ ト の一部です。 こ の PDF マニュアル セッ ト には、 次のマニュ

アルが含まれています。

• System Generator for DSP 入門ガイ ド

• System Generator for DSP ユーザー ガイ ド

• System Generator for DSP リ ファレンス ガイ ド

メモ : これらのマニュアル間のハイパーリ ンクは、PDF ファ イルが同じフォルダにある場合にのみ

機能します。 Adobe Reader でハイパーリ ンクをク リ ッ ク した場合、Alt キーと左方向キー (←) を同

時に押すと、 前に表示していたページに戻るこ とができます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 9リ リース 10.1.2 2008 年 6 月

Page 10: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

このマニュアルについてR

その他のリソース

追加の資料は、 次の Web サイ トから参照できます。

http://japan.xilinx.com/literature

シ リ コンやソフ ト ウェア、 IP に関するアンサー データベースを検索したり、 テクニカル サポート

のウェブ ケースを開く場合は、 次の Web サイ トにアクセスして ください。

http://japan.xilinx.com/support

表記規則

このマニュアルでは、 次の表記規則を使用しています。 各規則について、 例を挙げて説明します。

書体

次の規則は、 すべてのマニュアルで使用されています。

表記規則 使用箇所 例

Courier フォン トシステムが表示する メ ッセージ、プロンプ ト、 プログラム ファ イルを表示します。

speed grade: - 100

Courier フォン ト ( 太字 )

構文内で入力するコマンドを示します。

ngdbuild design_name

イタ リ ッ ク フォン トユーザーが値を入力する必要のある構文内の変数に使用します。

ngdbuild design_name

二重 / 一重かぎかっこ『 』、 「」

『 』 はマニュアル名を、 「 」 はセクシ ョ ン名を示します。

詳細については、 『開発システム リ ファレンス ガイ ド』 の 「PAR」を参照して ください。

角かっこ [ ]

オプシ ョ ンの入力またはパラメータを示しますが、bus[7:0] のよ うなバス仕様では必ず使用します。 また、 GUI 表記にも使用します。

ngdbuild [option_name] design_name

[File] → [Open] をク リ ッ ク します。

中かっこ { }1 つ以上の項目を選択するためのリ ス ト を示します。

lowpwr ={on|off}

縦棒 |選択する リ ス トの項目を分離します。

lowpwr ={on|off}

縦の省略記号...

繰り返し項目が省略されているこ とを示します。

IOB #1: Name = QOUT’ IOB #2: Name = CLKIN’...

横の省略記号 . . . 繰り返し項目が省略されているこ とを示します。

allow block block_name loc1 loc2 ... locn;

10 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 11: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

表記規則R

オンライン マニュアル

このマニュアルでは、 次の規則が使用されています。

表記規則 使用箇所 例

青色の文字マニュアル内の相互参照を示します。

詳細は、 「その他の リ ソース」 を参照して ください。

詳細は、第 1 章 「タイ トル フォーマッ ト 」 を参照して ください。

赤色の文字ほかのマニュアルへの相互参照を示します。

詳細は、 『Virtex-II Platform FPGA ユーザー ガイ ド』 の図 2-5 を参照して ください。

青色の下線付き文字Web サイ ト (URL) へのハイパーリ ンクです。

新のスピード ファ イルは、http://japan.xilinx.com から入手できます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 11リ リース 10.1.2 2008 年 6 月

Page 12: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

このマニュアルについてR

12 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 13: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

R

第 1 章

System Generator を使用したハードウェア設計

System Generator は、 FPGA ハード ウェアを設計するためのシステム レベルのモデリ ング ツール

です。 Simulink がさまざまな面で拡張されており、 ハードウェア設計に適したモデリ ング環境を提

供します。 デザインは高い抽象度で記述され、ボタンをク リ ッ クするだけで FPGA にコンパイルさ

れます。 低い抽象度によ り FPGA リ ソースにもアクセスできるので、効率的な FPGA デザインを構

築できます。

FPGA の概要 FPGA の基礎概念を示し、 System Generator を使用す

る場合のコンパイル、プログラム、 アーキテクチャに関

する考慮事項を説明します。

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 GeneratorSystem Generator でのコンフィ ギャブル サブシステム

の使用方法を示します。 コンフィ ギャブル サブシステム

の定義、ブロッ クの削除と 追加、コンフィ ギャブル サブ

システムを使用したコンパイル結果の System Generatorデザインへのインポート 方法について説明します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 13リ リース 10.1.2 2008 年 6 月

Page 14: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

FPGA の概要

FPGA (Field Programmable Gate Array) は、デバイス製造業者ではなく、設計者がプログラムする

汎用集積回路です。 ASIC (Application-Specific Integrated Circuit) とは異なり、 FPGA はシステム

に組み込まれた後でも再プログラム可能です。

FPGA は、 ビッ ト ス ト リームと呼ばれるコンフ ィギュレーシ ョ ン プログラムをスタティ ッ ク オン

チップ RAM にダウンロードするこ とによ りプログラムします。 このビッ ト ス ト リームは、 マイ ク

ロプロセッサのオブジェク ト コード と同様に、 コンパイル ツールで設計者が作成した抽象度の高

い記述を低レベルの実行可能なコードに変換する こ とによ り生成されます。 ザイ リ ンクス SystemGenerator は、 高レベルの Simulink モデルから FPGA プログラムをコンパイルできるよ うにした

ツールです。

FPGA は、さまざな演算ファンクシ ョ ンおよびロジッ ク ファンクシ ョ ンをインプ リ メン ト可能なコ

ンフ ィギャブル リ ソースの 2 次元のアレイで構成されています。 これらの リ ソースには、 DSP ブロ ッ ク、乗算器、デュアル ポート メモ リ、ルッ クアップ テーブル (LUT)、 レジスタ、 ト ライステー

ト バッファ、マルチプレクサ、デジタル クロ ッ ク マネージャ (DCM) などがあ り ます。 ザイ リ ンク

ス FPGA にはさらに、広範囲のバンド幅および電圧要件に対応できる高度な I/O 機構が含まれてい

ます。 Virtex-4 および Virtex-II Pro フ ァ ミ リ FPGA には、 エンベデッ ド マイ ク ロ コン ト ローラ

(IBM PowerPC 405) およびマルチギガビッ ト シ リ アル ト ランシーバが組み込まれています。 演算

および I/O リ ソースはプログラマブル インターコネク ト で接続されており、 ビッ ト ス ト リームに

従ってシステム内で配線されます。

FPGA は、 高パフォーマンスのデータ処理デバイスです。 FPGA ではデータ処理にパラレル構造を

使用できるので、高パフォーマンスの DSP を達成できます。 パフォーマンスがプロセッサで実行可

能なクロ ッ ク レートに依存するマイク ロプロセッサまたは DSP プロセッサとは異なり、 FPGA のパフォーマンスは、 信号処理システムを構成するアルゴ リズムに導入可能なパラレル構造の量に依

高パフォーマンス FPGA デザイン

に関する メモ

FPGA に効率的で高パフォーマンスのデザインをイン

プ リ メン トするための、System Generator での設計手法

を示します。

FPGA 物理デザイン ツールを使用

した System Generator デザインの

処理

System Generator で生成し た低レ ベルの HDL をProject Navigator、 ModelSim、 および Synplify などの

ツールで使用する方法を説明します。

自動生成されたクロ ッ ク イネーブ

ル ロジッ クの リセッ ト

System Generator ラ イ ブラ リ のレ ート 変更ブロ ッ ク

の、 再同期化用に ce_clr を使用した場合の動作を説明

します。

DSP48 の設計手法 System Generator で DSP48 (XtremeDSP スライス) をインプ リ メン ト し、コンフ ィギュレーシ ョ ンする方法を

説明します。

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

FDATool ブロ ッ クを使用して、FIR フ ィルタを指定、イ

ンプ リ メン ト 、およびシ ミ ュレーシ ョ ンする方法を説明

します。

複数ク ロ ッ クのサイ クル単位アイ

ランドの生成

System Generator でマルチクロ ッ ク デザインをインプ

リ メン トする方法を説明します。

ChipScope Pro Analyzer を使用し

た リ アルタ イム ハード ウ ェア デバッグ

ザイ リ ンク スのデバッグ ツールである ChipScope Proを System Generator 内で接続し、 使用する方法を説明

します。

14 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 15: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

FPGA の概要R

存します。 高システム ク ロ ッ ク レート (現在では 100 ~ 200MHz のシステム周波数が一般的) および高度に分散された メモ リ構造によ り、 データ ス ト リームで動作する DSP やその他のアプ リ

ケーシ ョ ンでパラレル構造を利用できます。 たとえば、150MHz のクロ ッ ク レートで動作する大型

FPGA のメモ リ バンド幅は、 毎秒数百テラ バイ トにも達します。

デジタル アップ/ダウン コンバータなど、 カスタム集積回路 (IC) のみまたは 1 つの FPGA にイン

プリ メン トできる DSP アプリケーシ ョ ンもあ り ますが、 フォン ノ イマン プロセッサでは、 演算機

能およびメモ リのバンド幅の両方において不十分です。 FPGA を使用する と、 カスタム IC と比べ

て NRE (Non-Recurring Engineering) コス ト を大幅に削減し (FPGA は市販の既製デバイス)、 タイ

ム ト ゥ マーケッ ト を短縮でき、 またコンフ ィギャブルであるこ とからエンド アプリ ケーシ ョ ンに

設置した後にでもデザインに変更を加えるこ とができます。

System Generator を使用する際は、FPGA には信号処理ファンクシ ョ ンをインプリ メン トするのに

さまざまなレベルでの柔軟性があるこ とを頭に入れておく こ とが重要です。 たとえば、 システム内

で異なるデータ パス幅を定義し、 システム要件に応じて MAC エンジンなどの個別のデータ プロ

セッサを使用できます。 System Generator では、 インプリ メン トするアルゴ リズムを考慮するだけ

で FPGA 用のデザインを設計できますが、 FPGA に関する理解を深めるこ とによ り、高パフォーマ

ンスを達成するための FPGA 特有の機能を利用できるよ うにな り ます。

このセクシ ョ ンの残りの部分では、FPGA で利用可能な一部のロジッ ク リ ソースについて簡単に説

明します。

上図は、 Virtex-4 FPGA の物理的な構造を表しています。 FPGA は、 コンフ ィギャブル インターコ

ネク トの網に埋め込まれたロジッ ク スライスの二次元配列とハード マクロ ブロ ッ ク (ブロ ッ ク メモ リおよび演算ブロ ッ ク ) の列で構成されている と考えるこ とができ、 DSP ファンクシ ョ ンのイン

プリ メンテーシ ョ ンに適しています。 Virtex-4 FPGA の DSP ブロ ッ ク (次の図を参照) は 450MHz以上で動作可能であ り、 さまざまなワード数 (BRAM ごとの合計 18Kb) にコンフ ィギュレーシ ョ

ン可能なデュアル ポート メモ リ ブロッ ク (BRAM) と周期が一致しています。 Virtex-4 SX55 デバ

イスには、 512 個の DSP ブロ ッ ク と BRAM が含まれています。 System Generator では、演算およ

びロジッ クの抽象記述を使用してこれらのリ ソースすべてにアクセス可能で、 高パフォーマンスの

デジタル フ ィルタ、 FFT、 およびその他の演算ファンクシ ョ ンや信号処理ファンクシ ョ ンを構築で

きます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 15リ リース 10.1.2 2008 年 6 月

Page 16: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

DSP 設計者は、Virtex-4 DSP ブロ ッ クでサポート されている積和演算 (MAC) ファンクシ ョ ンに精

通しているかも知れませんが、 Virtex ファ ミ リの基本ユニッ トであるロジッ ク スライス (下図を参

照) を理解しておく こ とは有益です。

各ロジッ ク スライスには、2 つの 4 入力ルッ クアップ テーブル (LUT)、2 つのコンフ ィギャブル Dフ リ ップフロ ップ、 マルチプレクサ、 専用キャ リー ロジッ ク、 およびスライス ベースの乗算器を

作成するためのゲートが含まれています。 1 つの LUT には、 任意の 4 入力ブール ファンクシ ョ ン

をインプ リ メ ン ト できます。 高速キャ リー回路をインプ リ メ ン トする専用ロジッ ク と LUT を組み

合わせる こ とによ り、 任意のワード数の高速加減算器や乗算器を構築できます。 ブール ファンク

シ ョ ンのインプ リ メンテーシ ョ ンに加え、 各 LUT は 16 X 1 ビッ ト RAM またはシフ ト レジスタ

(SRL16) と してもコンフ ィギュレーシ ョ ンできます。 SRL16 シフ ト レジスタは 16X1 ビッ トの同

期遅延ラインで、 動的にタ ップ ポイン ト を指定可能です。

16 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 17: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

FPGA の概要R

System Generator では、 これらの異なる メモリ オプシ ョ ンが高度な抽象記述で表現されています。

D フ リ ップフロ ップ プリ ミ ティブの代わりに、 任意のサイズのレジスタが提供されています。 任意の幅、ワード数の遅延ラインをインプリ メン トするブロ ッ クが 2 つあ り、SRL16 に直接マップさ

れます。 遅延ブロッ クは、パイプライン構造のバランスを取るため、または時分割多重 (TDM) デー

タ ス ト リームに使用できます。 次の図に示すAddressable Shift Register (ASR) ブロ ッ クは、 任意

の幅、 ワード数のタ ップ遅延ラインをインプリ メン ト します。 このブロ ッ クは、 タ ップ遅延ライン

をインプ リ メン トするだけでなく、TDM データ ス ト リームをスイープするために使用できるので、

DSP 設計で特に有益です。

RAM は BRAM または LUT (RAM16X1) プリ ミ ティブを使用して構築できますが、大型システム

にプリ ミ ティブを正し く組み込むには、 効率的にマップされるよ うにするなど、 通常詳細な注意が

必要です。 System Generator ではそのよ うな配慮は不要です。

たとえば、次の図に示す Dual Port RAM (DPRAM) ブロ ッ クでは、必要なメモ リ をインプ リ メン ト

するため、 デバイスに任意の数の RAM または RAM16X1 コンポーネン ト を効率的にマップでき

ます。 このブロ ッ クのパラ メータ ダイアログ ボッ ク スで、 メモ リ のタ イプ (BRAM または分散

RAM)、ワード数 (データ幅は入力ポート を駆動する Simulink 信号から推論)、 メモ リの初期内容な

どを設定できます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 17リ リース 10.1.2 2008 年 6 月

Page 18: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

通常 System Generator で抽象記述がデバイスのプ リ ミ テ ィブに適切にマップされるので、 プ リ ミ

ティブ間の接続を考慮する必要はあ り ません。 また、 ブロ ッ ク ライブラ リのファンクシ ョ ンは必要

に応じて IP ラ イブラ リ を利用して効率的にインプ リ メ ン ト されるので、 FPGA の詳細な知識は必

要あ り ません。 ただし、 FPGA の知識を活用して、 加算器、 レジスタ、 メモ リ などの基本ファンク

シ ョ ン使用したアルゴ リズムを、 すべての信号を明示的に制御せずにインプ リ メン トするこ と も可

能です。

この後のセクシ ョ ンで、 System Generator ブロ ッ ク と Simulink からハード ウェアへのマップにつ

いて詳細に説明します。 FPGA の詳細情報は、 http://japan.xilinx.com からデータシー ト、 アプ リ

ケーシ ョ ン ノート、 ホワイ ト ペーパー、 その他の技術資料を参照してください。

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 のデータ解析および可視化の機能を 大限に活用できます。

18 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 19: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

System Generator を使用したデザイン フローR

System Generator を使用したデザイン フロー

System Generator は、 さまざまな状況で有益です。 デザインをハードウェアに変換せずにアルゴ リ

ズムを解析する場合、 System Generator デザイ ンを大型デザイ ンの一部と して使用する場合、

System Generator デザインをそれのみで完成させ、 FPGA ハード ウェアで使用する場合があ り ま

す。 これらの 3 つの状況について説明します。

アルゴリズムの解析

System Generator は、 特にアルゴ リズムの解析、 デザインのプロ ト タイプ作成、 モデル解析で有益

です。 これらが目的である場合は、 ツールを使用してアルゴ リ ズムを具体化し、 デザインで発生す

る可能性のある問題を調べた り、 ハード ウェアへのインプ リ メ ンテーシ ョ ンにおけるコス トやパ

フォーマンスを予測できます。 これらの作業は準備のためであ り、 デザインをハード ウェアに変換

する必要はほとんどあ り ません。

この状況では、 詳細なインプ リ メンテーシ ョ ンを考慮するこ となく、 デザインの主な部分を組み立

てます。 Simulink ブロ ッ ク と MATLAB の M コードによ り、 シ ミ ュレーシ ョ ンおよび結果の解析

用にスティ ミ ュラスを供給します。 リ ソースの予測では、 ハード ウェアにインプ リ メン ト したデザ

インのコス ト を概算します。 ハード ウェア生成を使用したテス ト によ り、 可能なハード ウェア スピードが示されます。

有効な方法が決まったら、 デザインを具体化します。 System Generator では、 調整を段階的に行う

こ とができるので、 デザインの一部はハード ウェアにインプ リ メ ン トする準備が完了していても、

その他の部分を抽象記述のままにしておく こ とができます。 System Generator のハード ウェア協

調シ ミ ュレーシ ョ ン機能は、 デザインを部分的に調整している場合に特に有益です。

大型デザインの一部としてインプリ メン ト

System Generator は、大型デザインの一部をインプ リ メン トするのによ く使用されます。 たとえば、

System Generator はデータ パスおよび制御をインプリ メン トするのには適していますが、厳密なタ

イ ミ ング要件を持つ高度な外部インターフェイスにはそれほど適していません。 この場合、 SystemGenerator を使用してデザインの一部をインプ リ メ ン ト し、 ほかの部分をその他のツールでインプ

リ メン ト して、 これらを組み合わせて 1 つの大型デザインを構成できます。

このフローでは、 デザイン全体を表す HDL ラ ッパを作成し、 System Generator の部分をコンポー

ネン ト と して使用するのが一般的な方法です。 ほかのツールで作成した部分も、 コンポーネン ト

と してラ ッパに含めるか、 ラ ッパに直接インスタンシエートできます。

完成したデザインのインプリ メン ト

デザインに必要なものがすべて System Generator に含まれている場合があ り ます。 この場合、

System Generator トークンのパラ メータ ダイアログ ボッ クスで [Generate] ボタンをク リ ッ クする

だけで、デザインを HDL に変換し、ダウンス ト リーム ツールを使用して HDL の処理に必要なファ

イルを生成できます。 生成されるファイルは、 次のとおりです。

• デザインをインプ リ メン トする HDL ファ イル。

• デザインを含むクロ ッ ク ラ ッパ。 このク ロ ッ ク ラ ッパは、デザインで必要なクロ ッ クおよびク

ロ ッ ク イネーブル信号を生成します。

• ク ロ ッ ク ラ ッパを含む HDL テス トベンチ。 このテス トベンチを使用する と、Simulink シ ミ ュ

レーシ ョ ンの結果をロジッ ク シ ミ ュレータの結果と比較できます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 19リ リース 10.1.2 2008 年 6 月

Page 20: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

• XST や Synplify Pro などの合成ツールで System Generator HDL を処理できるよ うにするプ

ロジェク ト ファ イルとスク リプ ト。

• System Generator HDL を Project Navigator のプロジェク ト と して使用できるよ うにするファ

イル。

System Generator で生成されるファ イルの詳細は、 「コンパイル結果」 を参照して ください。

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

System Generator では、 デバイス特有のハード ウェア デザインを柔軟な高レベルのシステム モデ

リ ング環境で構築できます。 System Generator デザインでは、 信号は単なるビッ トではなく、 符号

付きまたは符号なしの固定小数点値にするこ とができ、 デザインに変更を加える と、 信号型も自動

的に適切な型に変換されます。 ブロ ッ クは単にハード ウェアの代わりではなく、 その周辺に応じて

自動的に生成結果および 終的なハードウェアが調整されます。

System Generator では、さまざまな要素からデザインを構築できます。 データ フロー モデル、ハー

ド ウェア設計言語 (VHDL、 Verilog、 EDIF)、 および MATLAB プログラム言語による関数を同時

に使用、 シ ミ ュレーシ ョ ン、 およびハードウェアに合成できます。 System Generator のシ ミ ュレー

シ ョ ン結果は、ビッ ト精度およびサイクル精度であ り、 ハード ウェアでの結果と厳密に一致します。

System Generator のシ ミ ュレーシ ョ ンは従来の HDL シ ミ ュレータでのシ ミ ュレーシ ョ ンよ り も高

速で、 結果も解析しやすくなっています。

System Generator ブロ ッ クセッ ト System Generator ブロ ッ クのライブラ リへの分類方法、

ブロ ッ クのパラ メータ設定方法および使用方法を示し

ます。

信号型 System Generator で使用されるデータ型と、ツールで自

動的にデータ型を割り当てる方法を説明します。

ビ ッ ト単位およびサイ クル単位の

モデリ ング

System Generator モデルの Simulink ベースのシ ミ ュ

レーシ ョ ンと、ハードウェアでの動作との関係を説明し

ます。

タイ ミ ングと ク ロ ッ ク クロ ッ クのハード ウェアへのインプ リ メン ト方法、およ

び System Generator でク ロ ッ クのイ ンプ リ メ ンテー

シ ョ ンを制御する方法を示し ます。 System Generatorでマルチレート Simulink モデルがどのよ うにクロ ッ ク

同期ハード ウェアに変換されるかを説明します。

同期化のメカニズム 高レベル System Generator デザインにおいてデータ パス エレ メ ン ト間でデータ フローを同期化する方法と、

制御パス ファンクシ ョ ンをインプ リ メ ン トする方法を

説明します。

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

伝搬

Simulink でパラ メータ指定システムおよびサブシステ

ムを作成する方法を説明します。

リ ソースの予測 System Generator デザインをインプ リ メ ン トするのに

必要なハード ウェアの予測方法を説明します。

20 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 21: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

System Generator ブロックセッ ト

Simulink ブロ ッ クセッ トは、Simulink ブロ ッ ク エディ タで接続し、ダイナミ ッ クなシステムのファ

ン クシ ョ ン モデルを作成するためのブロ ッ クのラ イブラ リ です。 システムのモデ リ ングでは、

System Generator ブロ ッ クセッ ト をその他の Simulink ブロ ッ クセッ ト と同様に使用できます。 ブロ ッ クは、 数値演算、 ロジッ ク、 メモ リ、 DSP ファンクシ ョ ンなどの抽象表現であ り、 高度な信号

処理システムやその他のシステムを構築するために使用できます。 また、 System Generator コード

生成ソフ ト ウェアだけでな く、 FDATool、 ModelSim などその他のソフ ト ウェア ツールへのイン

ターフェイス となるブロ ッ ク もあ り ます。

System Generator ブロ ッ クは、 ビッ ト精度およびサイクル精度です。 ビッ ト精度ブロ ッ クは、 ハー

ド ウェアで生成される対応する値に一致した値を Simulink で生成し、 サイ クル精度ブロ ッ クは対

応する時間に対応する値を生成します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 21リ リース 10.1.2 2008 年 6 月

Page 22: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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

ザイ リ ンクス ブロ ッ クセッ ト (Xilinx Blockset) は、 基本的な System Generator ブロ ッ クを含むラ

イブラ リ を集めたものです。 デバイス特有のハード ウェアにアクセスする低レベルのブロ ッ ク と、

信号処理や高度な通信アルゴ リ ズムなどをインプ リ メ ン トする高レベルのブロ ッ クがあ り ます。

Gateway In/Gateway Out ブロ ッ クなど幅広く応用可能なブロ ッ クは、 複数のラ イブラ リに含まれ

ています。 Index ラ イブラ リには、すべてのブロ ッ クが含まれています。 次に、 これらのライブラ リ

について説明します。

メモ : ブロ ッ クに関する詳細は、 「ザイ リ ンクス ブロ ッ クセッ ト 」 を参照して ください。

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

ザイ リ ンクス リ ファレンス ブロ ッ クセッ ト (Xilinx Reference Blockset) には、さまざまなファンク

シ ョ ンをインプ リ メ ン トする複合 System Generator ブロ ッ クが含まれます。 このブロ ッ クセッ ト

のブロ ッ クは、 ファンクシ ョ ン別にライブラ リに分類されています。 次に、 これらのライブラ リに

ついて説明します。

ライブラリ 説明

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

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

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

びモジュレータ ブロ ッ ク

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

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

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

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

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

ロ ッ ク

Shared Memory ザイ リ ンクス共有メモ リ をインプ リ メン トするブロ ッ クおよび共有メ

モ リにアクセスするブロ ッ ク

Tools コード生成 (System Generator トークン)、 リ ソース予測、HDL 協調シ

ミ ュレーシ ョ ンなどを実行するユーティ リ ティ ブロ ッ ク

ライブラリ 説明

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

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

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

Imaging イ メージ処理ブロ ッ ク

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

22 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 23: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

このブロ ッ クセッ トの各ブロ ッ クは複合ブロ ッ クであ り、 ブロ ッ クをコンフ ィギュレーシ ョ ンする

パラ メータでマスク サブシステムと してインプリ メン ト されます。

ライブラ リに含まれるブロ ッ クをそのまま使用するか、 類似した特性を持つデザインを構築する際

に開始点と して使用できます。 各リ ファレンス ブロ ッ クには、 インプ リ メンテーシ ョ ンの説明およ

びハード ウェア リ ソース要件が含まれています。 各ブロッ クの詳細は、 「ザイ リ ンクス リ ファレン

ス ブロッ クセッ ト 」 にも含まれています。

信号型

ハードウェアのビッ ト精度シ ミ ュレーシ ョ ンを実行するには、System Generator ブロ ッ クがブール

値および任意の精度の固定小数点値で動作する必要があ り ますが、 Simulink の基本的なスカラ信号

型は、 倍精度浮動小数点です。 ザイ リ ンクス ブロ ッ ク とザイ リ ンクス以外のブロ ッ クの間の接続に

は、Gateway ブロ ッ クを使用します。 Gateway In ブロ ッ クは倍精度の信号をザイ リ ンクス信号に変

換し、Gateway Out ブロ ッ クはザイ リ ンクス信号を倍精度の信号に変換します。 Simulink の連続タ

イ ミ ング信号は、 Gateway In ブロ ッ クでサンプリ ングします。

ほとんどのザイ リ ンクス ブロ ッ クは多様型であ り、 入力型に応じて適切な出力型を推測できます。

ブロ ッ クのパラ メータ ダイアログ ボッ クスで完全精度が指定されている場合は、 精度が失われな

いよ うに出力型が選択されます。 必要に応じて、 符号拡張および 0 のパディングが自動的に行われ

ます。 ユーザー指定の精度も使用できます。 この設定では、ブロ ッ クの出力型と、量子化およびオー

バーフローの処理方法を指定できます。 量子化の処理方法と しては、 正または負の無限大への不偏

丸め (符号によって異なる) または切り捨てがあ り ます。 オーバーフローの処理方法には、 正または

負の 大値を使用するか、切り捨てるか、オーバーフローをエラーと してレポートするかのオプシ ョ

ンがあ り ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 23リ リース 10.1.2 2008 年 6 月

Page 24: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

メモ : System Generator のデータ型は、 Simulink で [書式] → [ポート /信号の表示] → [端子のデー

タタイプ] をク リ ッ クする と表示されます。 データ型を表示する と、モデルの精度を簡単に判断でき

ます。 たとえば、 ポート のデータ型が Fix_11_9 の場合は、 信号は小数点以下のビッ トが 9 桁の 2の補数符号付き 11 ビ ッ ト値であ り、 Ufix_5_3 の場合は小数点以下のビッ ト が 3 桁の符号なし 5ビッ ト値です。

Simulink モデルの System Generator 部分では、すべての信号をサンプリ ングする必要があ り ます。

サンプ リ ング時間は、 Simulink の伝搬ルールによ り自動的に設定されるよ うにするか、ブロ ッ クの

パラ メータ ダイアログ ボ ッ ク スで明示的に設定でき ます。 フ ィードバッ ク ループがある と、

System Generator でサンプリ ング周期および信号型を推論できない場合もあ り、その場合はエラー

メ ッセージが表示されます。 フ ィードバッ ク ループには Assert ブロ ッ クを挿入して、この問題を回

避する必要があ り ます。 ループ内のすべてのポイン トに Assert ブロ ッ クを追加する必要はあ り ませ

ん。 通常、 ループの 1 箇所に追加するだけで十分です。

メモ : Simulink では、ブロ ッ ク と信号を実行レートに応じて色分けして表示できます (Simulink メニューから [書式] → [ポート /信号の表示] → [サンプル時間の色分け表示] をク リ ッ ク )。 これは、マ

ルチレート デザインを解析するのに有益です。

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

System Generator でのシ ミ ュレーシ ョ ンは、 ビッ ト単位またはサイクル単位で実行されます。 ビッ

ト単位のシ ミ ュレーシ ョ ンとは、 System Generator ブロ ッ ク と System Generator 以外のブロ ッ ク

の境界で、 シ ミ ュレーシ ョ ンで生成された値がハードウェアで生成された対応する値とビッ ト単位

で同一である という こ とです。 サイクル単位のシ ミ ュレーシ ョ ンとは、 System Generator ブロ ッ ク

と System Generator 以外のブロ ッ クの境界で、対応する値が対応する時間に生成される という こ と

です。 デザインの境界は、System Generator の Gateway ブロ ッ クが配置されている部分です。 デザ

インがハード ウェアに変換される と、 Gateway In ブロ ッ クは 上位入力ポート、 Gateway Out ブロ ッ クは 上位出力ポートになり ます。

タイ ミ ングとクロック

離散時間システム

System Generator のデザインは離散時間システムであるので、 信号とその信号を生成するブロ ッ ク

にはサンプ リ ング レート があ り ます。 ブロ ッ クのサンプ リ ング レー トは、 ブロ ッ クのステート が

アップデート される頻度を決定します。 System Generator では、ほとんどのサンプリ ング レートが

自動的に設定されますが、 サンプリ ング レート を明示的または暗示的に設定する必要のあるブロ ッ

ク もあ り ます。

メモ : Simulink の離散時間システム とサンプ リ ング時間の詳細は、 MathWorks 社のマニュアル

『Using Simulink』 を参照してください。

単純な System Generator モデルで、離散時間システムの動作を示します。 次の図に示すモデルがあ

る と します。 Simulink ソース (Sine Wave) によ り Gateway In ブロ ッ クが駆動され、 Gateway Outブロ ッ クで Simulink シンク (Scope) が駆動されています。

24 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 25: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

Gateway In ブロ ッ クは、 1 秒のサンプ リ ング周期でコ ンフ ィ ギ ュ レーシ ョ ン されています。

Gateway Out ブロ ッ クは、 ザイ リ ンクス固定小数点信号を Simulink の Scope で解析できるよ うに

倍精度に変換しますが、サンプ リ ング レートは変更しません。 Scope の出力は、サンプ リ ング レー

トが変更されていない、 サンプ リ ングされたサイン波となり ます。

マルチレート モデル

System Generator では、信号が複数のサンプリ ング レート で動作するマルチレート デザインがサ

ポート さ れています。 マルチレート モデルは、 System Generator で自動的にハード ウェアにコン

パイルさ れます。 マルチレート デザインは、 Simulink に適した直接的な方法でインプリ メ ント さ

れます。

レート変換ブロック

System Generator には、サンプ リ ング レート を変換するブロ ッ クが含まれています。 も基本的な

レート変換ブロ ッ クは、 Up Sample と Down Sample ブロ ッ クです。 これらのブロ ッ クは、 次の図

に示すよ うにパラ メータ ダイアログ ボッ クスで指定した固定の値を乗算するこ とによ り、 レート

を変換します。

Parallel To Serial や Serial To Parallel などのその他のブロ ッ クは、 ブロ ッ クのパラ メータ指定に応

じて非間接的にレート を変換します。

次のよ う な単純なマルチレート システムがある と します。 このモデルでは、 SP1 と SP2 の 2 つの

サンプリ ング周期が使用されます。 サンプリ ング周期 SP1 は、 Gateway In のパラ メータ ダイアロ

グ ボッ クスで指定します。 Down Sample ブロ ッ クによ りモデルのレートが変更され、SP1 の 1/2 である新しいレート SP2 が作成されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 25リ リース 10.1.2 2008 年 6 月

Page 26: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ハードウェア オーバーサンプリング

一部の System Generator ブロ ッ クは、 そのブロ ッ クのデータ レート よ り高速のレート で内部処理

が行われます (オーバーサンプリ ング)。 ハード ウェアでは、 これはデータ サンプルを処理するのに

複数のクロ ッ ク サイクルが必要であるこ とを意味します。 Simulink では、これらのブロ ッ クのサン

プリ ング レートに計測される変化はあ り ません。

オーバーサンプリ ングされるブロ ッ クの 1 つに DAFIR FIR フ ィルタがあ り ます。 サンプルはシ リ

アルに処理されるので、高速レートで動作しますが、使用されるハードウェアは少なくてすみます。

Simulink ではオーバーサンプリ ングされるブロ ッ クでサンプリ ング レート が変化するこ とはあ り

ませんが、 System Generator では、 ハード ウェア インプ リ メンテーシ ョ ン用のクロ ッ ク ロジッ ク

を生成する際に、 サンプ リ ング レー ト と共に内部ブロ ッ ク レー ト も考慮されるので、 SystemGenerator トークンのパラ メータ ダイアログ ボッ ク スで Simulink のシステム周期を指定する際

に、 オーバーサンプリ ングされるブロ ッ クの内部処理時間も考慮する必要があ り ます。

非同期クロッ ク

System Generator は、 1 つのク ロ ッ クに同期するハード ウェアの設計に適していますが、 場合に

よっては、 複数のクロ ッ クを使用するシステムの設計にも使用できます。 この場合、 デザインをク

ロ ッ ク ド メ インに分割し、 ド メ イン間での情報転送をデュアル ポート メモ リおよび FIFO で制御

します。 System Generator では、 Simulink でシ ミ ュレーシ ョ ンし、完全なハードウェア記述を生成

するこ と も含め、 このよ うなマルチ クロ ッ ク デザインがサポート されています。 詳細は、 「複数ク

ロ ッ クのサイ クル単位アイ ラン ドの生成」 を参照して ください。 このセクシ ョ ンの残りの部分で、

System Generator のクロ ッ ク同期について説明します。 この内容は、 1 つのクロ ッ クのデザインお

よび複数クロ ッ クのデザインの両方に関係します。

同期クロッ ク

System Generator トークンを使用してデザインをハード ウェアにコンパイルする場合、次の図に示

すよ う に、 マルチレー ト イ ンプ リ メ ンテーシ ョ ン用に [Clock Enables] (デフォル ト )、 [HybridDCM-CE]、 および [Expose Clock Ports] の 3 つのクロ ッ ク供給オプシ ョ ンがあ り ます。

26 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 27: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

[Clock Enables] オプシ ョ ン

System Generator で [Clock Enables] オプシ ョ ンを選択してモデルをハード ウェアにコンパイルす

る と、ハード ウェアの対応する部分が適切なレートで動作するよ うにデザインのサンプリ ング レー

ト情報が保持されます。 System Generator は、 ク ロ ッ ク と ク ロ ッ ク イネーブル (1 つのレートに 1つのイネーブル) を組み合わせて、 関連するレート をハード ウェアに生成します。 各ク ロ ッ ク イネーブルの周期は、 システム ク ロ ッ クの周期の整数倍です。

Simulink 内では、 System Generator デザインの信号と してク ロ ッ クおよびクロ ッ ク イネーブルを

明示的に追加する必要はあ り ません。 System Generator でデザインをハードウェアにコンパイルす

る際、デザインのサンプル レート (具体的には System Generator トークンの 2 つのユーザー指定値

である Simulink システム周期と FPGA ク ロ ッ ク周期) から必要なクロッ ク イネーブルが推論され

ます。 これらの値は、 Simulink シ ミ ュレーシ ョ ンの時間と実際のハード ウェア インプ リ メ ンテー

シ ョ ンでの時間のスケーリ ング係数を定義します。 Simulink システム周期は、 モデルに含まれるサ

ンプリ ング周期の 大公約数 (gcd) にする必要があ り、 FPGA のクロ ッ ク周期 (ns) はシステム クロ ッ クの周期です。 Simulink システム周期を p、 FPGA システム ク ロ ッ ク周期を c とする と、

Simulink で kp かかる処理は、 ハード ウェアではシステム ク ロ ッ クの k サイクル分 (kc ナノ秒) になり ます。

たとえば、 3 つの Simulink サンプリ ング周期 2、 3、 4 を含むモデルがある と します。 これらのサ

ンプリ ング周期の gcd は 1 です。 FPGA クロ ッ ク周期は 10ns に設定されている と します。 これらの

情報から、 ハードウェアでの対応するク ロ ッ ク イネーブルの周期を決定できます。

Simulink のサンプ リ ング周期 2、 3、 4 に対応するハード ウェアでのクロ ッ ク イネーブルを CE2、CE3、 CE4 と します。 各ク ロ ッ ク イネーブルの周期とシステム ク ロ ッ ク周期の関係は、 対応する

Simulink サンプ リ ング周期を Simulink システム周期で割る こ とによ り求められます。 この結果、

CE2、 CE3、 CE4 の周期はそれぞれ 2、 3、 4 システム ク ロ ッ ク周期になり ます。 次の図に、 これら

のク ロ ッ ク イネーブル信号のタイ ミ ングを示します。

[Hybrid DCM-CE] オプシ ョ ン

インプ リ メ ンテーシ ョ ン ターゲッ ト がデジタル ク ロ ッ ク マネージャ (DCM) を含む FPGA の場

合、 ク ロ ッ ク ツ リーを DCM で駆動できます。 DCM を使用する と、 ク ロ ッ ク イネーブル ネッ ト

のファンアウ トが大き く、 タイ ミ ング ク ロージャの達成が困難な場合に有益です。

System Generator では DCM が 上位 HDL ク ロ ッ ク ラ ッパにインスタンシエート され、 異なる

レート のク ロ ッ ク ポート を Virtex-4 および Virtex-5 では 3 つまで、 Spartan-3A DSP では 2 つま

で供給できます。 デザインに DCM でサポート可能な数以上のクロ ッ ク ポートが含まれる場合は、

残りのク ロ ッ クは CE (ク ロ ッ ク イネーブル) コンフ ィギュレーシ ョ ンでサポート されます。レート

は、 CLK0 > CLK2x > CLKdv > CLKfx とい う優先順で DCM 出力にマップされます。 ク ロ ッ ク

レートの高いものが DCM でサポート されます。

dcm_reset 入力ポートは 上位ラ ッパに含まれ、 ビッ ト ス ト リーム コンフ ィギュレーシ ョ ン後に外

部デザインで DCM を リセッ ト できるよ うになっています。 dcm_locked 出力も 上位ラ ッパに含

まれており、 外部デザインで入力データを 1 つの clk 入力ポートに同期させるのに役立ちます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 27リ リース 10.1.2 2008 年 6 月

Page 28: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

既知の制限 : 次の System Generator ブロ ッ クでは、 [Hybrid DCM-CE] オプシ ョ ンはサポート され

ていません。

• Clock Enable Probe

• Clock Probe

• DAFIR

• Down Sample ([First value of frame] がオンの場合)

• FIR Compiler (コア レートが入力サンプリ ング レート と異なる場合)

• Parallel to Serial ([Latency] が 0 に設定されている場合)

• Time Division Demultiplexer

• Time Division Multiplexer

• Up Sample ([Copy samples (otherwise zeros are inserted)] がオフの場合)

メモ : 10.1.2 リ リースでは、[Hybrid DCM-CE] オプシ ョ ンは 400MHz で動作する Virtex-4 および

Virtex-5、 190MHz で動作する Spartan-3A DSP のハード ウェアでテス ト されています。

[Expose Clock Ports] オプシ ョ ン

このオプシ ョ ンを選択する と、各レートのク ロ ッ ク ポート を含む 上位ラ ッパが作成されます。 こ

れによ り、 デザインの外部にクロ ッ ク ジェネレータを手動でインスタンシエート して、 ク ロ ッ ク

ポート を駆動できます。

チュート リアル : [Hybrid DCM-CE] オプシ ョ ンの使用

次の例では、 [Hybrid DCM-CE] オプシ ョ ンを選択し、 HDL デザインのネッ ト リ ス ト を作成して

ISE でデザインをインプ リ メン ト し、 デザインをシ ミ ュレーシ ョ ンして、 DCM が適切にインスタ

ンシエート され、 コンフ ィギュレーシ ョ ンされているこ とをファ イルおよびレポート を参照して検

証します。

hybrid_dcm_ce_case1.mdl デザイン例は、 <path_to_sysgen>\examples\clocking_options\hybrid_dcm_ce_case1\hybrid_dcm_ce_case1.mdl にあ り ます。

1. MATLAB でモデルを開き、 次のブロ ッ クを確認します。

• Addressable Shift Register (ASR) : 入力遅延バッファをインプ リ メン トするために使用されま

す。 アドレス ポートはデータ ポートの n 倍の速度で動作します。 n はフ ィルタ タ ップの数で、

この例では 5 です。

• Coefficient ROM : フ ィルタ係数を保存するのに使用されます。

• Counter : ROM および ASR のアドレスを生成するのに使用されます。

• Comparator : リセッ ト信号およびイネーブル信号を生成するのに使用されます。

• MAC Engine : フ ィルタの積和演算子と して使用されます。

28 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 29: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

2. System Generator ト ークンをダブルク リ ッ ク してパラメ ータ ダイアログ ボッ クスを開きます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 29リ リース 10.1.2 2008 年 6 月

Page 30: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

[Hybrid DCM-CE] を選択し、[Generate] をク リ ッ ク します。現在の作業ディ レク ト リに hdl_netlistというサブディ レク ト リが作成され、 生成されたファイルが保存されます。

3. MATLAB の [Current Directory] ウ ィンド ウで、hybrid_dcm_ce_case1_sysgen.log ファ イルを

ダブルク リ ッ ク します。次の図に示すよ うに、DCM ク ロ ッ クが 初にリ ス ト され ( 高レート

から順にリ ス ト )、 次に CE で駆動されるク ロ ッ クが リ ス ト されます。

4. ISE を起動し、 <path_to_sysgen>\examples\clocking_options\hybrid_dcm_ce_case1\hdl_netlist\hybrid_dcm_ce_case1_dcm_mcw.ise とい う ISE プロジェク ト を開きます。

5. Project Navigator の [Processes] タブで、 [Implement Design] をダブルク リ ッ クします。

6. Project Navigator の [Sources] タブで次の操作を実行します。

a. hybrid_dcm_ce_case1_dcm_mcw.vhd をダブルク リ ッ ク して開き、 次の VHDL コードに

示す DCM コンポーネン ト宣言の部分にスクロールします。

b. System Generator によ り DCM インスタンスが自動的にインスタンシエート され、 ク ロ ッ

ク出力の要件に応じてパラ メータが設定されているこ とを確認します。

c. VHDL ファ イルを閉じます。

次に、ISE タイ ミ ング レポート を参照してク ロッ クの伝搬を調べます。まず、レポート を生成します。

7. [Processes] タブで [Implement Design] → [Place & Route] → [Generate Post-Place & RouteStatic Timing] を展開表示します。

30 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 31: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

8. [Analyze Post-Place & Route Static Timing] をダブルク リ ッ ク しします。 次のよ う な情報が表

示されます。

このデザインでは、 10ns のグローバル ク ロ ッ ク制約を基準と した 6 つのクロ ッ ク レート (1、2、 4、 8、 20、 40) が使用されています。 タイ ミ ング レポートでは、 System Generator によ り

次のクロ ッ クが正し く生成され、 伝搬されているこ とが示されます。

♦ DCM ベースのクロ ッ ク : clk_1 (CLK0 -> 10ns)、 clk_2 (CLKFX -> 20ns)、 clk_4(CLKDIV -> 40ns) を 10ns のグローバル ク ロ ッ ク入力を基準に DCM を使用して生成

♦ ク ロ ッ ク イネーブル ベースのクロ ッ ク : ce_8 (80ns)、 ce_20 (200ns)、 ce_40 (400ns) をclk_4 ク ロ ッ ク入力を基準にクロ ッ ク イネーブルを使用して生成

次に、 ModelSim を使用してビヘイビア シ ミ ュレーシ ョ ンを実行します。

9. 次の図に示すよ うに、 [Sources] タブの [Sources for] ド ロ ップダウン リ ス トから [BehavioralSimulation] を選択します。

メモ : System Generator では、 上位ラ ッパ VHDL テス トベンチ、 スク リプ ト ファ イル、 お

よび入力/出力スティ ミ ュラス データ ファ イルが自動的に生成されます。 [Processes] タブに表

示されるプロセスは、 [Sources] タブで選択したソース タイプによって異なり ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 31リ リース 10.1.2 2008 年 6 月

Page 32: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

10. [Processes] タブで [Simulate Behavioral Model] をダブルク リ ッ ク し、 シ ミ ュレーシ ョ ンを実

行します。

11. シ ミ ュレーシ ョ ンが終了する と、 次の図に示すよ う な波形が表示されます。

すべての DCM ク ロ ッ ク (clk_1、 clk_2、および clk_4) は、 上位ラ ッパ テス トベンチ ファ イ

ル (hybrid_dcm_ce_case1_dcm_mcw_tb.vhd) に含まれています。

2. ダブルクリ ック

1. 選択

32 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 33: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

まとめ

[Hybrid DCM-CE] オプシ ョ ンを選択する と、 System Generator によ り自動的に DCM がインスタ

ンシエート され、手動で調整する必要はあ り ません。 また、異なるク ロッ ク レートが DCM および

CE を使用して適切に生成され、 適な QoR および低消費電力を達成できます。属性を設定したり

DCM クロ ッ ク出力を指定したりする必要はあ り ません。[Hybrid DCM-CE] オプシ ョ ンを選択する

と、 [Clock Enables] オプシ ョ ンを選択した場合と比較して、 ク ロ ッ ク スキューを 小限に抑える

こ とができます。

チュート リアル : [Expose Clock Ports] オプシ ョ ンの使用

次の例では、 [Expose Clock Ports] オプシ ョ ンを選択し、 HDL デザインのネッ ト リ ス ト を作成して

ISE でデザインをインプ リ メン ト し、 デザインをシ ミ ュレーシ ョ ンして、 ファ イルおよびレポート

を参照してデザインを検証します。

expose_clock_ports_case1 デザイン例は、 <path_to_sysgen>\examples\clocking_options\expose_clock_ports_case1\expose_clock_ports_case1.mdl にあ り ます。

1. MATLAB でモデルを開き、 次のブロ ッ クを確認します。

• Addressable Shift Register (ASR) : 入力遅延バッファをインプ リ メン トするために使用されま

す。 アドレス ポートはデータ ポートの n 倍の速度で動作します。 n はフ ィルタ タ ップの数で、

この例では 5 です。

• Coefficient ROM : フ ィルタ係数を保存するのに使用されます。

• Counter : ROM および ASR のアドレスを生成するのに使用されます。

• Comparator : リセッ ト信号およびイネーブル信号を生成するのに使用されます。

• MAC Engine : フ ィルタの積和演算子と して使用されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 33リ リース 10.1.2 2008 年 6 月

Page 34: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

2. System Generator トークンをダブルク リ ッ ク して次のダイアログ ボッ クスを開きます。

[Expose Clock Ports] を選択し、 [Generate] を ク リ ッ ク し ます。 現在の作業デ ィ レ ク ト リ に

hdl_netlist とい うサブディ レク ト リが作成され、 生成されたファイルが保存されます。

3. ISE を起動し、 <path_to_sysgen>\examples\clocking_options\expose_clock_ports_case1\hdl_netlist\expose_clock_ports_case1_mcw.ise とい う ISE プロジェク ト を開きます。

4. Project Navigator の [Processes] タブで、 [Implement Design] をダブルク リ ッ クします。

5. Project Navigator の [Sources] タブで次の操作を実行します。

a. expost_clock_ports_case1_mcw.vhd をダブルク リ ッ ク して開き、 次の VHDL コードに示

す expose_clock_ports_case1_mcw とい うエンティティの部分にスクロールします。

b. System Generator により 異なるレート に基づく ク ロッ クが挿入され、 上位ラッ パにク

ロッ ク ポート が含まれているこ と を確認します。このデザインでは 2 つのク ロッ ク レート

が使用されるので、 clk_1 と clk_5 の 2 つのク ロッ クが 上位ラッ パに含まれています。こ

れにより 、複数の同期クロッ クを System Generator デザインの外部から直接駆動できます。

c. VHDL ファ イルを閉じます。

次に、 ModelSim を使用してビヘイビア シ ミ ュレーシ ョ ンを実行します。

34 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 35: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

6. 次の図に示すよ うに、 [Sources] タブの [Sources for] ド ロ ップダウン リ ス トから [BehavioralSimulation] を選択します。

メモ : System Generator では、 上位ラ ッパ VHDL テス トベンチ、 スク リプ ト ファ イル、 お

よび入力/出力スティ ミ ュラス データ ファ イルが自動的に生成されます。 [Processes] タブに表

示されるプロセスは、 [Sources] タブで選択したソース タイプによって異なり ます。

7. [Processes] タブで [Simulate Behavioral Model] をダブルク リ ッ ク し、 シ ミ ュレーシ ョ ンを実

行します。

8. シ ミ ュレーシ ョ ンが終了する と、 次の図に示すよ う なシ ミ ュレーシ ョ ン波形が表示されます。

まとめ

[Expose Clock Ports] オプシ ョ ンを選択する と、 System Generator によ り自動的にデザイン レート

に適切なクロ ッ クが挿入され、 クロ ッ ク ポートが 上位ラ ッパに含まれます。 ク ロ ッ ク レートは、

[Clock Enables] オプシ ョ ンを選択した場合と同じ方法で判断されます。 これによ り、 上位ラ ッパ

に含まれるク ロ ッ ク ポート を、 外部同期クロッ ク ソースで駆動できます。

2. ダブルクリ ッ ク

1. 選択

System Generator for DSP ユーザー ガイド japan.xilinx.com 35リ リース 10.1.2 2008 年 6 月

Page 36: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

同期化のメカニズム

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 ブロ ッ クに適用されるスコーピング ルールとパラ メータ伝搬ルールは、 SystemGenerator ブロ ッ クにも適用されます。 つま り、 ザイ リ ン ク ス ブロ ッ クセッ ト 内のブロ ッ クは、

MATLAB の変数および論理式を使用してパラ メータ指定できます。 この機能によ り、MATLAB 言語の表現能力および計算能力を活用した高度なパラ メータ指定デザインを作成できます。

ブロック マスク

Simulink では、 マスク と呼ばれる メカニズムでブロ ッ クのパラ メータを指定します。 実際には、 ブ

ロ ッ クにマスク変数を割り当て、 この変数の値をダイアログ ボッ クスで指定するか、マスク初期化

コマンドで算出します。 この変数は、 マスク ワークスペースに保存されます。 マスク ワークスペー

スは、 マスクが適用されるブロ ッ クでのみ使用され、 外部ブロ ッ クからアクセスするこ とはできま

せん。

36 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 37: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

メモ : マスクでグローバル変数および基本ワークスペースの変数にアクセスするこ とは可能です。

基本ワークスペースの変数にアクセスするには、MATLAB の evalin 関数を使用します。 MATLABと Simulink のスコーピング ルールの詳細は、 The Mathworks 社のマニュアル 『Using MATLAB』

および 『Using Simulink』 を参照して ください。

パラ メータの伝搬

マスク サブシステム内のブロ ッ クに変数を渡す必要があるこ とがよ くあ り ます。 変数を渡すこ とに

よ り、 サブシステム内のパラ メータによ りブロ ッ クのコンフ ィギュレーシ ョ ンを判断させるこ とが

できます。 この手法は、ザイ リ ンクス ブロ ッ クセッ ト内のブロ ッ クのパラ メータにも適用されます。

たとえば、 Mult ブロ ッ ク と Accumulator ブロ ッ クで構成されるサブシステムを構築する場合、 結

果を切り捨てるか丸めるかを指定するパラ メータをサブシステム内に作成できます。 次の図では、

このパラ メータに trunc_round という名前が付けられています。

Mult ブロ ッ ク と Accumulator ブロ ッ クのパラ メータ ダイアログ ボッ クスには、[Truncate] (切り捨

て) または [Round] (丸め) を選択するラジオ ボタンがあ り ます。

ラジオ ボタンではな くパラ メータを使用して選択する場合は、 ラジオ ボタンを右ク リ ッ ク して

[Define With Expression] をク リ ッ クする と、 MATLAB の論理式をパラ メータの設定に使用できま

す。 次の例では、 サブシステム マス ク からの trunc_round パラ メ ータ を Mult ブロ ッ ク と

Accumulator ブロ ッ クの両方で使用し、 サブシステムのマスク変数からの同じ設定が適用されるよ

うにしています。

System Generator for DSP ユーザー ガイド japan.xilinx.com 37リ リース 10.1.2 2008 年 6 月

Page 38: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

リソースの予測

System Generator では、 デザインをインプリ メン トするのに必要な FPGA ハード ウェア リ ソース

を予測するツールが提供されています。 スライス、 ルッ クアップ テーブル、 フ リ ップフロ ップ、 ブ

ロ ッ ク メモ リ、 エンベデッ ド乗算器、 I/O ブロ ッ ク、 ト ラ イステート バッファの数が予測されま

す。 これらの予測によ り、 デザインの選択がハード ウェア要件に与える影響を調べるこ とができま

す。 サブシステムに必要な リ ソースを予測するには、 サブシステムに Resource Estimator ブロ ッ ク

をド ラ ッグし、 このブロ ッ クをダブルク リ ッ ク して [Estimate] ボタンをク リ ッ ク します。

自動コード生成

System Generator は、 デザインを自動的に低レベル表現にコンパイルします。 モデルのコンパイル

方法は、 System Generator トークンでの設定によって異なり ます。 ハード ウェアの HDL 記述に加

え、 補助ファイルも生成されます。 プロジェク ト ファ イルや制約ファイルなどのファイルはダウン

ス ト リーム ツールで使用され、 VHDL テス トベンチなどのファ イルはデザインの検証に使用され

ます。

System Generator ト ーク ン を 使

用し たコ ンパイ ルと シミ ュ レ ー

ショ ン

System Generator トークンを使用してデザインを低レ

ベル HDL にコンパイルする方法を説明します。

コンパイル結果 System Generator トークンで [HDL Netlist] を選択して

[Generate] ボタンをク リ ッ ク した と きに生成される低

レベル ファ イルについて説明します。

HDL テス トベンチ System Generator で生成される VHDL テス トベンチに

ついて説明します。

38 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 39: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

自動コード生成R

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

System Generator は、 デザインを自動的に低レベル表現にコンパイルします。 デザインをコンパイ

ルまたはシ ミ ュレーシ ョ ンするには、 System Generator トークンを使用します。 このセクシ ョ ンで

は、 このブロ ッ クの使用法を説明します。

System Generator デザインをシ ミ ュレーシ ョ ンまたはハード ウェアに変換するには、 デザインに

System Generator トークンを含める必要があ り ます。 新しいデザインを作成する際には、 SystemGenerator トークンをすぐに追加するよ うにするこ とをお勧めします。 System Generator トークン

は、 Xilinx Blockset の Basic Element および Tools ラ イブラ リに含まれています。 また、 その他の

ザイ リ ンクス ブロッ ク と同様 Index ラ イブラ リにも含まれています。

デザインには、 System Generator ト ークンを少な く と も 1 つ含める必要があ り、 複数の SystemGenerator ト ーク ンを異なるレベルに含める こ とが可能です (レベルご とに 1 つ)。 上位に別の

System Generator トークンがあるものはスレーブ、 上位に別の System Generator トークンがない

ものはマスタ となり ます。 1 つの System Generator トークンの適用範囲は、 トークンが挿入されて

いるレベルと、そのレベルの下にあるすべてのサブシステムです。 [Simulink system period] などの

一部のパラ メータは、 マスタでしか指定できません。

System Generator トークンを追加したら、 コードの生成およびシ ミ ュレーシ ョ ンの処理方法を指定

できます。 次の図に、 System Generator トークンのパラ メータ ダイアログ ボッ クスを示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 39リ リース 10.1.2 2008 年 6 月

Page 40: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

コンパイル タイプと [Generate] ボタン

[Generate] ボタンをク リ ッ クする と、 System Generator でデザインの一部が低レベルにコンパイル

されます。 コンパイルされる部分は、ブロ ッ クを含むサブシステムがルート となっている部分です。

デザイン全体をコンパイルするには、 System Generator トークンをデザインの 上位に配置しま

す。 コンパイル タイプ ([Compilation]) は、生成する結果のタイプを指定します。 次のオプシ ョ ン

があ り ます。

• [HDL Netlist]、 [NGC Netlist] : HDL ネッ ト リ ス ト 、 NGC ネッ ト リ ス ト を生成します。

• [Bitstream] : ハードウェア FPGA プラ ッ ト フォームで実行可能な FPGA コンフ ィギュレー

シ ョ ン ビッ ト ス ト リームを生成します。

• [EDK Export Tool] : ザイ リ ンクス エンベデッ ド開発キッ ト (EDK) にエクスポートするファ

イルを生成します。

• [Hardware Co-Simulation] : ハードウェア協調シ ミ ュレーシ ョ ン用のファイルを生成します。

• [Timing Analysis] : デザインのタイ ミ ングに関するレポート を生成します。

[HDL Netlist] が も頻繁に使用されます。 この場合、 HDL ファ イルおよび EDIF ファ イルと、 ダ

ウンス ト リームの処理を簡略化するための補助ファ イルが生成されます。 HDL フ ァ イルおよび

EDIF ファ イルは XST などの合成ツールで処理し、 ザイ リ ンクス インプリ メンテーシ ョ ン ツール

(NGDBuild、 MAP、 PAR、 BitGen) に入力して、 ザイ リ ンクス FPGA 用のコンフ ィギュレーシ ョ

ン ビッ ト ス ト リームを生成できます。 生成されるファ イルの詳細は、 「コンパイル結果」 を参照し

てください。

[NGC Netlist] は [HDL Netlist] と似ていますが、 HDL ファ イルの代わりに NGC ファ イルが生成

されます。

[Hardware Co-Simulation] のいずれかを選択している場合は、選択したハード ウェア FPGA プラ ッ

ト フォームで実行可能なコンフ ィ ギュレーシ ョ ン ビ ッ ト ス ト リームが生成されます。 たとえば、

[Hardware Co-Simulation] → [XtremeDSP Development Kit] → [PCI and USB] を選択する と、

XtremeDSP ボード (ザイ リ ンクスから別途購入可能) 用のビッ ト ス ト リームが生成されます。 ハー

ドウェア協調シ ミ ュレーシ ョ ン ブロッ ク も生成され、 ビッ ト ス ト リームに関連付けられます。 この

ブロ ッ クは、 Simulink シ ミ ュレーシ ョ ンにも使用されます。 機能的には、 このブロ ッ クが生成され

たデザインの部分と同等ですが、 ビッ ト ス ト リームでインプ リ メン ト されます。 シ ミ ュレーシ ョ ン

でこのブロ ッ クが生成する結果は、その部分が生成するシ ミ ュレーシ ョ ン結果と同じにな り ますが、

結果は動作中のハードウェアから算出されます。

メモ : [Compilation] のオプシ ョ ンの リ ス ト をカスタマイズできます。 詳細は、 「ハード ウェア協調

シ ミ ュレーシ ョ ン用のインス トール」 を参照してください。

その他のコンパイル パラ メータを、 次の表に示します。 一部のパラ メータは、 [Compilation] に[HDL Netlist] を選択した場合にのみ設定可能です。 たとえば、 ク ロ ッ ク ピンのロケーシ ョ ンは各

ハード ウェア FPGA プラ ッ ト フォームで固定されているので、 [Hardware Co-Simulation] の 1 つを選択している場合は [Clock pin location] は設定できません。

40 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 41: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

自動コード生成R

オプシ ョ ン 説明

Part 使用する FPGA デバイスを指定します。

Target directory コ ンパイル結果を保存するデ ィ レ ク ト リ を指定し ます。 SystemGenerator および FPGA インプ リ メ ンテーシ ョ ン ツールでは多数の

フ ァ イルが生成されるので、 個別のディ レ ク ト リ (Simulink モデル

ファ イルが含まれるディ レ ク ト リ とは別のディ レク ト リ ) を作成する

こ とをお勧めします。 ディ レク ト リは、 絶対パス (c:\netlist など) また

はモデルを含むディレク ト リ を基準と した相対パス (netlist など) で指

定できます。

Synthesis tool デザインの合成に使用するツールを指定します。 [XST]、 [Synplify]、または [Synplify Pro] を選択できます。

Hardware descriptionlanguage

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

Create testbench HDL テス トベンチを作成するよ う指定します。 HDL シ ミ ュレータで

テス トベンチをシ ミ ュレーシ ョ ンし、 コンパイルされたデザインのシ

ミ ュレーシ ョ ン結果を Simulink シ ミ ュレーシ ョ ン結果と比較します。

System Generator では、 デザインを Simulink でシ ミ ュレーシ ョ ンし、

Gateway ブロッ クで検出される値を保存するこ とによ り、テス ト ベク

タ を作成し ます。 テス ト ベンチの 上位 HDL フ ァ イルの名前は、

<name>_testbench.vhd/.v とな り ます (<name> はテス トするデザイン

の部分から導出された名前、 拡張子はハード ウェア記述言語によ り異

なる)。

Import as configurablesubsystem

コンパイル結果を関連付けるブロ ッ クを作成し、 ブロ ッ ク と このブ

ロ ッ クが作成された元のサブシステムを含むコンフ ィギャブル サブ

システムを作成します。 詳細は、 「コンフ ィギャブル サブシステムと

System Generator」 を参照して ください。

FPGA clock period システム ク ロ ッ クの周期を ns で指定します。 値は整数である必要は

あ り ません。 こ こで指定し た周期は、 制約フ ァ イルでグ ローバル

PERIOD 制約と して設定され、ザイ リ ンクス インプ リ メンテーシ ョ ン

ツールに渡されます。 複数サイクル パスは、 この値の整数倍で制約さ

れます。

Clock pin location ハード ウェア ク ロ ッ クのピン ロケーシ ョ ンを指定します。 この情報

は、制約ファイルを介してザイ リ ンクス インプリ メンテーシ ョ ン ツー

ルに渡されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 41リ リース 10.1.2 2008 年 6 月

Page 42: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

[Simulink system period]

System Generator ト ーク ンのパラ メ ータ ダ イ ア ロ グ ボ ッ ク スで、 Simulink システム周期

([Simulink system period]) を指定する必要があ り ます。 この値は、 デザインのシ ミ ュレーシ ョ ンを

実行する基準レート を秒単位で指定します。 Simulink システム周期は、 デザインで使用されるすべ

てのサンプリ ング周期の公約数にする必要があ り ます。 たとえば、 サンプリ ング周期 2、 6、 8 を使

用するブロ ッ クを含むデザインでは、 使用可能な 大の Simulink システム周期は 2 ですが、 1 および 0.5 も使用可能です。 サンプリ ング周期は、 明示的に指定するか、 自動的に算出されるか、 内

部レート変換が行われるブロ ッ ク内で導出されます。 システム周期のハード ウェア ク ロ ッ クへの影

響については、 「タ イ ミ ングと クロ ッ ク」 を参照して ください。

デザインをシ ミ ュレーシ ョ ンまたはコンパイルする前に、System Generator でシステム周期がデザ

インのすべてのサンプリ ング周期の公約数になっているかが検証されます。 問題が検出された場合

は、 適切な値を推奨するダイアログ ボッ クスが表示されます。 [Update] ボタンをク リ ッ クする と、

推奨された値が使用されます。 システム周期競合のサマ リ を表示するには、 [View ConflictSummary] ボタンをク リ ッ ク します。 [Update] をク リ ッ ク した場合は、 シ ミ ュレーシ ョ ンまたはコ

ンパイルを再実行する必要があ り ます。

Multirate implementation

[Clock Enables] (デフォルト ) : ク ロ ッ ク イネーブル ジェネレータ回路

を作成してマルチレート デザインを駆動します。

[Hybrid DCM-CE] : DCM を使用したク ロ ッ ク ラ ッパを作成します。

DCM は、 異なるレートのク ロ ッ ク ポート を Virtex-4 およびVirtex-5では 3 つまで、 Spartan-3A DSP では 2 つまで駆動できます。 レート

は、 CLK0 > CLK2x > CLKdv > CLKfx とい う優先順で DCM 出力

ポー ト にマップされます。 ク ロ ッ ク レー ト の高いものが DCM でサ

ポート されます。 デザインに DCM でサポート可能な数以上のクロ ッ

ク ポートが含まれる場合は、残りのクロ ッ クはクロ ッ ク イネーブル コンフ ィギュレーシ ョ ンでサポート されます。

リセッ ト入力ポートは DCM ク ロ ッ ク ラ ッパに含まれるので DCM を外部から リセッ トできるよ うになっています。また、ロ ッ ク出力も ラ ッ

パに含まれており、 外部デザインで入力データを 1 つの clk 入力ポー

トに同期させるのに役立ちます。

[Expose Clock Ports] : 複数のクロ ッ ク ポート を System Generator デザインの 上位に含め、 デザインの外部から複数の同期クロ ッ ク入力

を供給できるよ うにします。

DCM input clock period (ns)

[FPGA clock period (ns)] オプシ ョ ン (システム ク ロ ッ ク ) と異なる場

合に指定します。FPGA ク ロ ッ ク周期 (システム クロ ッ ク ) はこのハー

ド ウェア定義入力から生成されます。

Provide clock enable clear pin

上位ク ロ ッ ク ラ ッパに ce_clr ポー ト を含める よ う 指定し ます。

ce_clr 信号は、 ク ロ ッ ク イネーブル生成ロジッ クを リセッ トするのに

使用されます。 ク ロ ッ ク イネーブル生成ロジッ クを リセッ トできるよ

う にする と、 データ パスのサンプ リ ングの開始を動的に指定できま

す。 詳細は、 「自動生成されたクロ ッ ク イネーブル ロジッ クの リセッ

ト 」 を参照してください。

オプシ ョ ン 説明

42 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 43: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

自動コード生成R

周期を調整できないために、 System Generator モデルが矛盾したものになる可能性もあ り ます。 たとえば、 システム レートで動作する必要のあるブロ ッ クで Up Sample ブロ ッ クを駆動する と、 モ

デルが矛盾したものにな り ます。 システム周期をアップデート しても競合がレポート される場合

は、 モデルに矛盾がある という こ とであ り、 修正が必要です。

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

[Block icon display]

モデルに表示するブロ ッ クのアイコンの表示を制御します。 モデルをコンパイルした後 (生成また

はシ ミ ュレーシ ョ ンを実行、 あるいは Ctrl + D を押す)、 ブロ ッ クの情報がこのオプシ ョ ンでの選

択に応じて表示されます。

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

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

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

• [HDL port names] : ポート名が表示されます。

• [Input data types] : 各ポートの入力データ型が表示されます。

• [Output data types] : 各ポートの出力データ型が表示されます。

階層制御

System Generator トークンの [Simulink system period] オプシ ョ ン (「[Simulink system period]」 を参照) は、 階層で制御されます。 設定は、 System Generator トークンが適用される範囲にのみ適用

され、下位にある System Generator トークンで変更されます。 たとえば、デザインの 上位にある

System Generator トークンで [Simulink system period] が設定されており、 サブシステムに配置さ

れている System Generator トークンでは別の値が設定されている と します。この場合、サブシステ

ムでは 2 番目のシステム周期が使用されますが、 デザインのその他の部分では 上位の SystemGenerator トークンで設定されたシステム周期が使用されます。

コンパイル結果

このセクシ ョ ンでは、System Generator トークンで [HDL Netlist] を選択して [Generate] ボタンを

ク リ ッ ク したと きに生成される低レベル ファ イルについて説明します。 このコンパイル タイプで

は、 デザインのインプ リ メ ンテーシ ョ ンに使用される HDL、 NGC、 EDIF ファ イルと、 ダウンス

ト リーム処理を簡略化する補助ファ イルと して、 Project Navigator にデザインを組み込むための

ファ イル、 HDL シ ミ ュレータでシ ミ ュレーシ ョ ンするためのファイル、 さまざまな合成ツールを

使用して合成するためのフ ァ イルなどが生成されます。 すべてのフ ァ イルは、 System Generatorトークンで指定したディ レク ト リに生成されます。 テス トベンチを作成するよ う指定していない場

合 ([Create testbench] をオフ)、 生成されるファ イルは次のとおりです。

ファイル名/タイプ 説明

<design>.vhd/.v デザインのほとんどの HDL 記述が含まれます。

<design>_cw.vhd/.v <design>_files.vhd/.v の HDL ラ ッパ。 ク ロ ッ クおよびク ロ ッ ク

イネーブルを駆動します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 43リ リース 10.1.2 2008 年 6 月

Page 44: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

テス トベンチを作成するよ う指定している場合は ([Create testbench] をオン)、上記のファイルに加

え、 シ ミ ュレーシ ョ ン結果を比較するためのファイルが生成されます。 Simulink シ ミ ュレーシ ョ ン

結果と ModelSim のシ ミ ュレーシ ョ ン結果が比較されます。 生成される追加ファイルは、 次のとお

りです。

EDN および NGC ファ イル System Generator は、 CORE Generator を使用してデザインの一

部をインプ リ メン ト します。 CORE Generator では、

multiplier_virtex2_6_0_83438798287b830b.edn と い う よ う な名

前の EDIF ファ イルが生成されます。 その他の必要なファイルが、

NGC ファ イルと して生成される場合もあ り ます。

globals デザインを記述するキー /値のペアが含まれます。 このファ イルは

Perl ハッシュ テーブルと して構成されており、Perl の eval 関数を

使用するこ とによ り Perl スク リプ トでキーと値を使用できます。

<design>_cw.xcf

(または .ncf)タイ ミ ング制約およびポート ロケーシ ョ ン制約が含まれます。 これらの制約は、ザイ リ ンクスの合成ツール XST およびザイ リ ンク

ス インプ リ メ ンテーシ ョ ン ツールで使用されます。 XST 以外の

合成ツールを指定した場合は、 拡張子は .ncf とな り ます。

<design>_cw.ise ザイ リ ン ク スのプロ ジェ ク ト 管理ツール Project Navigator でHDL および EDIF ファ イルを処理するためのプロジェク ト ファ

イル。

hdlFiles System Generator で生成される HDL ファ イルのリ ス トが含まれ

ます。 ファ イルは、 通常の HDL 依存順でリ ス ト されています。

synplify_<design>.prj

または xst_<design>.pr

指定した合成ツールでデザインをコンパイルでき る よ う にする

ファ イル。

vcom.do ModelSim でデザイ ンのビヘイ ビア シミ ュ レーショ ンを実行す

るために HDL をコンパイルするのに使用できるスク リ プト ファ

イル。

ファイル名/タイプ 説明

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

<design>_tb.vhd/.v デザインを ラ ップするテス ト ベンチ。 ModelSim でシ ミ ュ レー

シ ョ ンを実行する と、このテス トベンチによ り Simulink のシ ミ ュ

レーシ ョ ン結果と ModelSim のシ ミ ュレーシ ョ ン結果が比較され

ます。

vsim.do ModelSim でテス トベンチ シ ミ ュレーシ ョ ンを実行するために使

用するスク リプ ト 。

pn_behavioral.do、pn_postmap.do、pn_postpar.do、pn_posttranslate.do

Project Navigator から ModelSim シ ミ ュレーシ ョ ンを開始できる

よ うにするファ イル。

ファイル名/タイプ 説明

44 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 45: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

自動コード生成R

Sysmte Generator 制約ファイルの使用

デザインをコンパイルする と、 ダウンス ト リーム ツールでのデザインの処理方法を指示する制約

ファイルが生成されます。 この制約ファ イルによ り、 高質のインプ リ メンテーシ ョ ンが短時間で生

成されます。 制約は、 次の情報を供給します。

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

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

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

• ポートの動作スピード

ファ イルのフォーマッ トは、 System Generator トークンで指定した合成ツールによって異な り ま

す。 XST を選択した場合は XCF フォーマッ トで記述され、 Synplify または Synplify Pro を選択し

た場合は NCF フォーマッ トで記述されます。 フォーマッ トに応じて、 ファ イルの拡張子は .xcf または .ncf になり ます。

システム クロッ ク周期

システム ク ロッ ク 周期 (デザインで 速のハード ウェア ク ロッ クの周期) は、System Generator ト ー

クンで指定できます。 System Generator で指定した周期は、制約ファ イルに記述されます。 ダウンス

ト リ ーム ツールでデザインがインプリ メ ント される際、 この周期が目標と して使用されます。

複数サイクル パス制約

多くのデザインは、 異なるクロ ッ ク レートで動作する複数の部分で構成されています。 速の部分

ではシステム ク ロ ッ クが使用され、 その他の部分のクロ ッ ク周期は、システム ク ロ ッ ク周期の整数

倍になり ます。 ダウンス ト リーム ツールに、 デザインの各部分で達成する必要のあるスピードを伝

達する必要があ り ます。 この情報によ り、 ツールの効率が大幅に向上し、 短いコンパイル時間で高

質のハード ウェアを実現できます。 デザインの分割、 それぞれの部分のスピードは、 制約ファイル

で複数サイクル パス制約を使用して指定されます。

IOB タイ ミング制約と配置制約

System Generator の Gateway In と Gateway Out ブロ ッ クは、 ハード ウェアに変換される と入力

ポート と出力ポートになり ます。 これらのポートの位置とスピードは、Gateway In および GatewayOut ブロ ッ クのパラ メータ ダイアログ ボッ クスで入力します。

詳細は、 「Gateway In」 および 「Gateway Out」 を参照して ください。 ポー ト のロケーシ ョ ン と ス

ピードは、 制約ファイルで IOB タイ ミ ングごとに指定されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 45リ リース 10.1.2 2008 年 6 月

Page 46: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

制約の例

次の図に、 小型のマルチレート デザインと、 このデザインに対して System Generator で生成され

る制約を示します。

Up Sample ブロ ッ クでレート を 2 倍にし、 Down Sample でレート を 1/3 にしています。 システム

ク ロ ッ ク周期は 10ns である と します。 FIR ブロ ッ クのク ロ ッ ク周期は 10ns、 入力レジスタ InRegブロ ッ クのク ロ ッ ク周期は 20ns、 出力レジスタ OutReg ブロ ッ クのク ロ ッ ク周期は 30ns です。 次に、 この情報を表す制約を説明します。

システム ク ロ ッ ク周期が 10ns であるこ とを示す行は、 次のとおりです。

# Global period constraint NET "clk" TNM_NET = "clk_392b7670"; TIMESPEC "TS_clk_392b7670" = PERIOD "clk_392b7670" 10.0 ns HIGH 50 %;

タイ ミ ング制約を作成するため、 デザインのブロ ッ クをタイ ミ ング グループに分割します。 2 つの

ブロ ッ クは、 同じサンプリ ング レートで動作する場合のみ、 同じタイ ミ ング グループに含めます。

このデザインには、 3 つのレートに対応した 3 つのタイ ミ ング グループがあ り ます。 速のグルー

プには、 名前は必要あ り ません。 残り の 2 つのタ イ ミ ング グループは、 周期が 20ns のものは

ce_2_392b7670_group、 30ns のものは ce_3_392b7670_group と します。

FIR はシステム レート ( 速) で動作するので、 前述のグローバル周期制約を使用して制約します。

ク ロ ッ クを生成するのに使用されるロジッ クは、 常にシステム レートで動作し、 システム レート

に制約されます。

ce_2_392b7670_group には、 システム レー ト の 1/2 で動作する InReg ブロ ッ ク と Up Sample ブロ ッ クが含まれ、 ce2_sysgen とい う ク ロ ッ ク イネーブル ネッ ト で駆動されます。 このグループを

定義する制約は、 次のとおりです。

# ce_2_392b7670_group and inner group constraint Net "ce_2_sg_x0*" TNM_NET = "ce_2_392b7670_group"; TIMESPEC "TS_ce_2_392b7670_group_to_ce_2_392b7670_group" = FROM "ce_2_392b7670_group" TO "ce_2_392b7670_group" 20.0 ns;

メモ : ネッ ト名にワイルドカードを使用するこ とによ り、ク ロ ッ ク イネーブル ロジッ クが複製され

たと きに生成されるコピーにも、制約が適用されるよ うにしています。 ク ロ ッ ク イネーブル ネッ ト

の 大ファンアウ ト数は、 合成ツールで制御できます。

46 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 47: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

自動コード生成R

ce_3_392b7670_group は、システム レートの 1/3 で動作します。 Down Sample ブロ ッ ク と OutRegブロ ッ クが含まれ、 ce_2_392b7670_group と同様に定義されます。

# ce_3_392b7670_group and inner group constraint Net "ce_3_sg_x0*" TNM_NET = "ce_3_392b7670_group"; TIMESPEC "TS_ce_3_392b7670_group_to_ce_3_392b7670_group" = FROM "ce_3_392b7670_group" TO "ce_3_392b7670_group" 30.0 ns;

グループ間制約は、 グループ同士の相対的なスピード関係を定義します。 次の制約は、

ce_2_392b7670_group と ce_3_392b7670_group のスピード関係を確立します。

# Group-to-group constraints TIMESPEC "TS_ce_2_392b7670_group_to_ce_3_392b7670_group" = FROM "ce_2_392b7670_group" TO "ce_3_392b7670_group" 20.0 ns; TIMESPEC "TS_ce_3_392b7670_group_to_ce_2_392b7670_group" = FROM "ce_3_392b7670_group" TO "ce_2_392b7670_group" 20.0 ns;

ポートのタイ ミ ング要件は、Gateway ブロ ッ クのパラ メータ ダイアログ ボッ クスで設定できます。

これらの要件は、 次に示すよ う なポート制約に変換されます。 この例では、 3 ビッ トの din 入力を

Gateway のサンプリ ング レート (周期 20ns) で動作するよ うに制約されます。 FAST 属性は、 遅延

を削減するハード ウェアを使用してポート をインプ リ メン トする必要があるこ とを示します。 遅延

を削減する と、 ノ イズや消費電力が増加するこ とがあ り ます。

# Offset in constraints NET "din(0)" OFFSET = IN : 20.0 : BEFORE "clk"; NET "din(0)" FAST; NET "din(1)" OFFSET = IN : 20.0 : BEFORE "clk"; NET "din(1)" FAST; NET "din(2)" OFFSET = IN : 20.0 : BEFORE "clk"; NET "din(2)" FAST;

Gateway ブロ ッ クで [Specify IOB location constraints] をオンにする と、 ポート ロケーシ ョ ンを指

定できます。 ポート ロケーシ ョ ンは、 [IOB pad locations] ボッ クスに文字列のセル配列と して入力

します。 ロケーシ ョ ンは、パッケージによって異なり ます。この例では、FG680 パッケージで Virtex-E 2000 を使用しています。 din バスのロケーシ ョ ン制約は、Gateway ブロ ッ クのパラ メータ ダイア

ログ ボッ クスでは 「{'D35', 'B36', 'C35' }」 と入力します。 これは、 XCF (または NCF) ファ イルで

は次のよ う な制約に変換されます。

# Loc constraints NET "din(2)" LOC = "D35"; NET "din(1)" LOC = "B36"; NET "din(0)" LOC = "C35"; Clock Handling in HDL

HDL でのクロッ クの処理

このセク ショ ンでは、 System Generator で生成される HDL でハード ウェア ク ロッ ク がどのよう に

処理されるかを説明します。 <design> と いう 名前のデザインがあり 、この名前は HDL 識別子と して

有効であると します。 System Generator でデザインをコンパイルすると 、複数の HDL エンティ ティ

またはモジュールが記述され、 上位のものに <design> と いう 名前が付けられ、<design>.vhd/.v という ファ イルに保存されます。

ク ロ ッ ク と ク ロ ッ ク イネーブルは、 ペアで 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 for DSP ユーザー ガイド japan.xilinx.com 47リ リース 10.1.2 2008 年 6 月

Page 48: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

この ク ロ ッ ク と ク ロ ッ ク イ ネーブルを生成する ため、 System Generator で ク ロ ッ ク ラ ッ パ

(<design>_cw.vhd/.v) が記述されます。 このラ ッパは、 前述のファイルの外部とな り ます。 これは、

HDL に柔軟性を持たせるのが目的です。 アプリケーシ ョ ンによっては、前述のファイルが大型デザ

インに追加され、 ク ロ ッ ク ラ ッパが除外されるこ とがあ り ます。 この場合、 クロ ッ ク と クロ ッ ク イネーブルが生成されるよ うにする必要があ り ますが、 詳細な制御が可能です。 クロ ッ ク ラ ッパがア

プ リ ケーシ ョ ンに適している場合は、 含めます。 System Generator では、 ク ロ ッ ク ラ ッパを含む

DCM ラ ッパ (<design>_dw_vhd/_v) も生成されるので、便利です。 DCM ラ ッパは、ハードウェア

FPGA クロ ッ クのスキューを調整します。 System Generator で生成された HDL を大型デザインに

組み込む場合は、 次が可能です。

• System Generator で生成された HDL は使用するが、クロ ッ ク ラ ッパおよび DCM ラ ッパは除

外する。

• System Generator で生成さ れた HDL と ク ロッ ク ラ ッ パは使用するが、 DCM ラ ッ パは除外

する。

• System Generator で生成された HDL、ク ロッ ク ラッ パ、および DCM ラッ パをすべて使用する。

DCM ラッ パを使用する場合は、ファ イル名の _vhd または _v を .vhd または .v に変更してく ださい。

System Generator で生成された HDL に含まれる ク ロ ッ ク と ク ロ ッ ク イネーブルの名前から、 ク

ロ ッ ク供給は完全に汎用である よ うに見えますが、 そ うではあ り ません。 たとえば、 デザインに

clk_1 と clk_2 とい う クロ ッ クが含まれており、 対応するクロ ッ ク イネーブルが ce_1 および ce_2である と します。 この場合、ハード ウェアで ce_1 および ce_2 信号を High にし、clk_2 を clk_1 の1/2 のレート である ク ロ ッ ク信号で駆動すればいいと思うかも知れませんが、 ほとんどの SystemGenerator デザインではこれではう ま くいきません。 その代わり、 clk_1 と clk_2 を同じク ロ ッ クで

駆動し、 ce_1 を High に固定して、 ce_2 を clk_1 と clk_2 の 1/2 のレートにします。

ク ロ ッ ク ラ ッパには、デザインそのものと、クロ ッ クおよびクロ ッ ク イネーブルを生成するク ロ ッ

ク ド ラ イバ コンポーネン ト の 2 つのコンポーネン ト で構成されます。 ク ロ ッ ク ド ラ イバは、

<design>_cw.vhd/.v とい う ファ イルに含まれます。 <design>_cw に含まれるロジッ クは、 ce_x 信号を生成します。 System Generator トークンのパラ メータ ダイアログ ボッ クスで [Provide clockenable clear pin] をオンにする と、 オプシ ョ ンの ce_clr ポート も生成されます。 ク ロ ッ クまたはク

ロ ッ ク イネーブルでないポートは、 ク ロ ッ ク ラ ッパの外部に送られます。 ク ロ ッ ク ラ ッパを回路

図で示すと、 次のよ うになり ます。

メモ : ク ロ ッ ク ラ ッパには ce とい うポート もあ り ますが、 このポートはラ ッパ上の clk ポートに付

随しているだけで機能はあ り ません。 このポートは、System Generator デザインでクロ ッ ク ラ ッパ

をブラ ッ ク ボッ クス と して使用できるよ うにするために追加されています。

48 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 49: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

自動コード生成R

コアのキャッシュ

System Generator では、 CORE Generator で生成されたコアを使用してデザインの一部をインプ リ

メン ト します。 コアの生成には時間がかかるこ とがあるので、 System Generator ではあらかじめ生

成されたコアをキャ ッシュします。 CORE Generator を呼び出す前にキャ ッシュ内を検索して、 コ

アが既に生成されている場合は、 それを再利用します。

デフォル トでは、 キャ ッシュのディ レク ト リは $TEMP/sg_core_cache で、 2,000 個までのコアが

保存さ れます。 こ の制限に達すると 、 新し いコアを保存するためにキャッ シュにあるコアが削除

さ れます。

メモ : キャ ッシュの場所およびサイズを変更するには、 環境変数を使用します。 次に、 これらの変

数を示します。

HDL テストベンチ

通常、 System Generator デザインはビッ ト精度およびサイ クル精度であ り、 Simulink でのシ ミ ュ

レーシ ョ ン結果はハード ウェアでの動作と完全に一致します。 場合によっては、 Simulink シ ミ ュ

レーシ ョ ンの結果と HDL シ ミ ュレータでのシ ミ ュレーシ ョ ン結果を比較する と有益であるこ とが

あ り ます。 デザインにブラ ッ ク ボッ ク スが含まれている場合は、 特に意味があ り ます。 SystemGenerator トークンのパラ メータ ダイアログ ボッ クスで [Create testbench] をオンにする と、 これ

が可能です。

デザインの名前が <design> で、 上位に System Generator トークンが配置されている と します。

このブロ ッ クのパラ メータ ダイアログ ボッ クスでは、 [Compilation] が [HDL Netlist] に設定され

ており、 [Create testbench] がオンになっています。 [Generate] をク リ ッ クする と、 通常デザインに

対して生成されるファ イルに加え、 次のファイルが生成されます。

1. テス トベンチ HDL エンティティを含む <design>_tb.vhd/.v

2. HDL テス トベンチ シ ミ ュレーシ ョ ンで使用するベス ト ベクタを含む DAT ファ イル

3. ModelSim でテス トベンチをコンパイルおよびシ ミ ュレーシ ョ ンし、Simulink のテス ト ベクタ

と HDL で生成されたテス ト ベク タを比較するために使用する vcom.do および vsim.do スク

リプ ト ファ イル

DAT ファ イルには、Gateway ブロ ッ クを通過する値が保存されます。 HDL シ ミ ュレーシ ョ ンでは、

DAT ファ イルからの入力値がスティ ミ ュラス、出力値が予測結果とな り ます。 テス トベンチは、デ

ザインの HDL にスティ ミ ュラスを供給し、 HDL の結果と予測結果を比較するためのラ ッパです。

環境変数 説明

SGCORECACHE キャ ッシュ ファ イルを保存する場所を指定します。 この変数に

ブランク文字列を指定する と、 コアはキャ ッシュされません。

SGCORECACHELIMIT キャ ッシュするコアの 大数を指定します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 49リ リース 10.1.2 2008 年 6 月

Page 50: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

MATLAB の FPGA へのコンパイル

System Generator では、 MCode ブロ ッ クによ り MATLAB が直接的にサポー ト されています。

MCode ブロ ッ クは、入力値を M 関数に適用し、ザイ リ ンクスの固定小数点データ型を評価します。

評価は、サンプ リ ング周期ごとに行われます。 MCode ブロ ッ クでは、持続型変数を使用するこ とに

よ り、 内部ステート を保持できます。 入力ポートは指定の M 関数の入力引数、 出力ポートは M 関数の出力引数によ り決定されます。 MCode ブロ ッ クは、 有限ステート マシン、 制御ロジッ ク、 演

算処理の多いシステムを構築するのに便利です。

MCode ブロ ッ クを使用するには、 M 関数を記述する必要があ り ます。 M ファ イルは、 M ファ イル

を使用するモデルのディ レク ト リ または MATLAB パスに配置します。

このセクシ ョ ンでは、 MCode ブロ ッ クを使用する例を示します。

• 例 1 : 単純なセレクタ - 入力の 大値を返すファンクシ ョ ンをインプ リ メン トする方法を示し

ます。

• 例 2 : 単純な数値演算 - 単純な演算処理をインプリ メン トする方法を示します。

• 例 3 : レイテンシのある複素乗算器 - レイテンシを持つ複素乗算器を構築する方法を示します。

• 例 4 : シフ ト操作 - シフ ト操作をインプリ メン トする方法を示します。

• 例 5 : MCode ブロ ッ クへパラ メータを渡す - MCode ブロ ッ クにパラ メータを渡す方法を示し

ます。

• 例 6 : オプシ ョ ンの入力ポート - MCode ブロ ッ クにオプシ ョ ンの入力ポート をインプ リ メン ト

する方法を示します。

• 例 7 : 有限ステートマシン - 有限ステート マシンのインプ リ メン ト方法を示します。

• 例 8 : パラ メータ指定アキュムレータ - パラ メータ指定アキュムレータを構築する方法を示し

ます。

• 例 9 : FIR とシステム検証 - FIR ブロ ッ クをモデリ ングし、 システム検証を実行する方法を示

します。

• 例 10 : RPN カ リキュレータ - RPN カ リ キュレータ (スタ ッ ク マシン) をモデリ ングする方法

を示します。

• 例 11 : disp 関数 - disp 関数を使用して変数値をプリ ン トする方法を示します。

例 1 と 2 は、 System Generator のインス トール ディ レク ト リの examples\mcode_block ディ レク

ト リにある mcode_block_tutorial.mdl ファ イルに、 例 3 と 4 は mcode_block_tutorial2.mdl ファ イ

ルに、 例 5 と 6 は mcode_block_tutorial3.mdl ファ イルに、 例 7 と 8 は mcode_block_tutorial4.mdlファ イルに、 例 9 は mcode_block_verify_fir.mdl ファ イルに、 例 10 は mcode_block_rpn_calculator.mdl に含まれています。

単純なセレクタ

この例では、 2 つの入力の 大値を出力に割り当てる、 単純なデータ パス コン ト ローラを示しま

す。 M 関数は次のよ うに定義され、 xlmax.m とい う M ファ イルに保存されます。

function z = xlmax(x, y)if x > y

z = x;else

z = y;end

50 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 51: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

MATLAB の FPGA へのコンパイルR

xlmax.m ファ イルは、モデル ファ イルと同じディ レク ト リ または MATLAB パスに保存する必要が

あ り ます。 xlmax.m を適切な場所に保存したら、MCode ブロ ッ クをモデルにド ラ ッグしてパラ メー

タ ダイアログ ボッ クスを開き、 [MATLAB Function] に 「xlmax」 と入力します。 [OK] をク リ ッ ク

する と、 ブロ ッ クに入力ポート x と y、 出力ポート z が表示されます。

次の図に、モデルをコンパイルした後のブロ ッ クを示します。 ブロ ッ クで計算が実行され、出力ポー

トに必要な固定小数点データ型が設定されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 51リ リース 10.1.2 2008 年 6 月

Page 52: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

単純な数値演算

この例では、 単純な数値演算 と型変換を示し ます。 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 ブロ ッ クで、 自動的に適切な固定小数点値に変換されます。

52 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 53: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

MATLAB の FPGA へのコンパイルR

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 関数呼び出しが必要です。

System Generator for DSP ユーザー ガイド japan.xilinx.com 53リ リース 10.1.2 2008 年 6 月

Page 54: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

レイテンシのある複素乗算器

この例では、 複素乗算器の作成方法を示します。 xlcpxmult 関数を定義する xlcpxmult.m ファ イル

の内容は、 次のとおりです。

function [xr, xi] = xlcpxmult(ar, ai, br, bi)xr = ar * br - ai * bi;xi = ar * bi + ai * br;

次の図に、 サブシステムを示します。

MCode ブロ ッ クの後に、2 つの Delay ブロッ クが追加されています。 Delay ブロ ッ クのパラ メータ

ダイアログ ボッ クスの [Implementation] タブで [Implement using behavioral HDL] をオンにする

と、 ダウンス ト リームのロジッ ク合成ツールで、 高パフォーマンスを達成するために適切な 適化

を実行できます。

54 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 55: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

MATLAB の FPGA へのコンパイルR

シフ ト操作

この例では、 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;

次の図に、 コンパイル後のサブシステムを示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 55リ リース 10.1.2 2008 年 6 月

Page 56: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

MCode ブロックへパラ メータを渡す

この例では、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 convert 1 とい う MCode ブロ ッ クでは、渡されるパラ メータによ り

入力データが Fix_16_8 から Fix_10_5 に変換されます。 signed convert 2 とい う MCode ブロ ッ ク

では、 渡されるパラ メータによ り入力データが Fix_16_8 から Fix_8_4 に変換されます。

56 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 57: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

MATLAB の FPGA へのコンパイルR

各 MCode ブロ ッ クにパラ メータを渡すには、 MCode ブロ ッ クのパラ メータ ダイアログ ボッ クス

で [Interface] タブを ク リ ッ ク し、 M 関数の引数を設定し ます。 次に、 MCode ブロ ッ ク signedconvert 1 の設定を示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 57リ リース 10.1.2 2008 年 6 月

Page 58: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

上図の [Interface] タブでは、 M 関数の引数 nbits を 10 に、 binpt を 5 に設定しています。 次に、

MCode ブロ ッ ク signed convert 2 の設定を示します。

上図の [Iinterface] タブでは、 M 関数の引数 nbits を 8 に、 binpt を 4 に設定しています。

58 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 59: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

MATLAB の FPGA へのコンパイルR

オプシ ョ ンの入力ポート

この例では、 MCode ブロ ッ クにパラ メータを渡す機能を使用して、 MCode ブロ ッ クでオプシ ョ ン

の入力ポート を使用するかど うかを指定する方法を示します。

次の M コードは、 xl_m_addsub.m に含まれる M 関数 xl_m_addsub を定義します。

function s = xl_m_addsub(a, b, sub)if sub

s = a - b;else

s = a + b;end

次の図に、M 関数 xl_m_addsub を使用する 2 つの MCode ブロッ クを含むサブシステムを示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 59リ リース 10.1.2 2008 年 6 月

Page 60: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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

この設定によ り、 入力ポート a と b が使用され、 完全精度の加算が実行されます。 addsub とい う

MCode ブロッ クでは、入力パラ メータ sub の [Bind to value] に何も指定されていないので、 addsubブロ ッ クでは入力ポート a、 b、および sub が使用され、入力ポート sub の値に応じて完全精度の加

算または減算が実行されます。

60 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 61: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

MATLAB の FPGA へのコンパイルR

有限ステートマシン

この例では、 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;

System Generator for DSP ユーザー ガイド japan.xilinx.com 61リ リース 10.1.2 2008 年 6 月

Page 62: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

elsestate = seen_10;

endcase seen_10 % seen 10if din==1

state = 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 zero

62 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 63: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

MATLAB の FPGA へのコンパイルR

s = init;endelseif ~enelse

% if enabled, update the stateif op==0

s = s/feed_back_down_scale + b;else

s = s/feed_back_down_scale - b;end

endend

次の図に、 M 関数 xl_accum を使用するアキュムレータ MCode ブロ ッ クを含むサブシステムを示

します。 MCode ブロ ッ クには、 MCode Accumulator とい う名前が付いています。 サブシステムに

は、比較のため、 Accumulator とい う名前のザイ リ ンクスアキュムレータ ブロ ッ ク も含まれていま

す。 MCode ブロ ッ クは、 ザイ リ ンクス アキュムレータ ブロ ッ ク と同じ機能を持ちますが、 MCodeブロ ッ クのパラ メータをマスク インターフェイス (パラ メータ ダイアログ ボッ クスの [Interface]タブ) で指定している点が異なり ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 63リ リース 10.1.2 2008 年 6 月

Page 64: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

MCode Accumlator のオプショ ンの入力 rst および load は、[Interface] タブでディ スエーブルに設定

されています。 次に、 MCode Accumulator ブロッ クのパラ メ ータ ダイアログ ボッ クスを示します。

64 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 65: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

MATLAB の FPGA へのコンパイルR

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

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

System Generator for DSP ユーザー ガイド japan.xilinx.com 65リ リース 10.1.2 2008 年 6 月

Page 66: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

if lat <= 0error('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);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;

パラ メータは、 次のよ うに設定されます。

66 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 67: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

MATLAB の FPGA へのコンパイルR

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)]);endendcnt = cnt + 1;

このブロ ッ クは、 次のよ うに設定されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 67リ リース 10.1.2 2008 年 6 月

Page 68: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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, ...

{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;

68 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 69: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

MATLAB の FPGA へのコンパイルR

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;

endendendstack_active = stack_pt ~= 0;

System Generator for DSP ユーザー ガイド japan.xilinx.com 69リ リース 10.1.2 2008 年 6 月

Page 70: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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);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 withdisp] をオンにする必要があ り ます。

70 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 71: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

MATLAB の FPGA へのコンパイルR

次に、 初のシ ミ ュレーシ ョ ン ステップで 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,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 for DSP ユーザー ガイド japan.xilinx.com 71リ リース 10.1.2 2008 年 6 月

Page 72: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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

System Generator デザインは、 多くの場合サブシステムと して大型の HDL デザインに組み込まれ

ます。 このセクシ ョ ンでは、 2 つの System Generator デザインを大型デザインに組み込む方法、

System Generator で作成した VHDL をシステム全体のシ ミ ュレーシ ョ ン モデルに組み込む方法を

示します。

System Generator 10.1 から、 System Generator (Sysgen) と Project Navigator (ProjNav) の統合フ

ローが導入されています。 現時点では、 次の操作を実行できます。

• System Generator デザインをサブレベルと して大型デザインに追加する。

• System Generator の制約を 上位デザインに統合し、 関連付ける。

• Project Navigator から System Generator デザインの一部の操作を実行可能。

HDL ネッ ト リス トのコンパイル

System Generator トークンのパラ メータ ダイアログ ボッ クスで [Compilation] に [HDL Netlist] を選択する と、HDL とデザインのインプリ メンテーシ ョ ンに必要な関連のファイル (NGC ファ イル、

EDIF ファ イルなど) が生成されます。また、ダウンス ト リーム処理を簡略化する補助ファイルと し

て、Project Navigator にデザインを組み込むためのファイル、HDL シ ミ ュレータでシ ミ ュレーシ ョ

ンするためのファイル、 さまざまな合成ツールを使用して合成するためのファイルなどが生成され

ます。 詳細は、 「System Generator のコンパイル タイプ」 を参照して ください。

10.1 から、 System Generator プロジェク ト の情報は、 選択したク ロ ッ ク供給オプシ ョ ンに応じて

<design_name>_cw.sgp または <design_name>_mcw.sgp とい う ファ イルに含まれるよ うにな り ま

した。 このセクシ ョ ンでは、複数の System Generator デザインをサブモジュールと して大型デザイ

ンに組み込む方法を説明します。

デザインの統合に関する規則

System Generator モデルを大型デザインに組み込む場合、 次の 2 つの規則に従う必要があ り ます。

規則 1 : Gateway ブロッ クまたは System Generator トークンで IOB/CLK ロケーシ ョ ン制約を指定

しないでください。 これらのブロ ッ クで IOB/CLK ロケーシ ョ ン制約を指定する と、 NGDBuild で次のよ う な警告メ ッセージが表示されます。

WARNING:NgdBuild:483 - Attribute "LOC" on "clk" is on the wrong type of object. Please see the Constraints Guide for more information on this attribute.

規則 2 : System Generator デザインから I/O ポート を 上位デザインに含める必要がある場合は、

上位 HDL コードに適切なバッファをインスタンシエートする必要があ り ます。

System Generator と Project Navigator の統合フロー

次の図は、 複数の System Generator デザインを下位デザインと して Project Navigator に組み込む

フローを示します。 System Generator によ り拡張子が .sgp のプロジェク ト ファ イルが生成され、

このプロジェク ト ファ イルを System Generator ソース タイプと して Project Navigator に追加しま

す。 このファイルには、 ファ イルの場所、 制約ファイルなど、 System Generator デザインに関する

必要な情報がすべて含まれています。 10.1 よ り前の Project Navigator では、 UCF ファ イルの制約

を手動で 上位デザインに統合し、 関連付ける必要があ り ましたが、 現在のリ リースでは ProjectNavigator でインプ リ メンテーシ ョ ンを実行する際に自動的に実行されます。

72 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 73: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

手順の例

この例では、 System Generator で生成した 2 つの HDL ネッ ト リ ス ト を 1 つの大型 VHDL デザイ

ンに統合します。 デザイン 1 は SPRAM、デザイン 2 は MAC_FIR とい う名前です。 上位 VHDLエンティティでは、SPRAM デザインの 2 つのデータ ポート と制御信号を使用して双方向バスを作

成します。 また、 上位 VHDL には MAC_FIR デザインをインスタンシエート し、 別のクロ ッ ク

clk2 を供給します。 次に、 このデザインのブロ ッ ク図を示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 73リ リース 10.1.2 2008 年 6 月

Page 74: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

この例のファイルは、<path_to_sysgen>\examples\projnav\mult_diff_designs に含まれています。 次のファイルが含まれています。

• spram.mdl : System Generator デザイン 1

• mac_fir.mdl : System Generator デザイン 2

top_level とい うサブディレク ト リに含まれるファ イル :

• top_level.ise : top_level デザインをコンパイルするための Project Navigator プロジェク ト

• top_level.vhd : 上位 VHDL ファ イル

• top_level_testbench.do : カスタム ModelSim DO ファ イル

• top_level_testbench.vhd : 上位 VHDL テス トベンチ ファ イル

• wave.do : 波形を表示するために top_level_testbench.do によ り呼び出される ModelSim DOファ イル

System Generator デザインの HDL ファイルの生成

HDL ファ イルを生成するには、 次の手順に従います。

1. MATLAB でデザイン 1 である spram.mdl を開きます。 これはマルチレート デザインであ り、

Single Port RAM ブロ ッ クの出力の後に Down Sample ブロ ッ クが配置されています。

2. System Generator トークンをダブルク リ ッ ク し、 [Compilation] で [HDL Netlist] を選択して、

[Generate] ボタンをク リ ッ ク し ます。 [Generate] ボタンをク リ ッ クする と、 このデザインの

HDL ファ イルが <path_to_sysgen>\examples\projnav\mult_diff_designs\hdl_netlist1 ディ レク

ト リに作成されます。

3. mac_fir.mdl に対して、 手順 1 ~ 2 を実行します。 このデザインの HDL ファ イルが、

<path_to_sysgen>\examples\projnav\mult_diff_designs\hdl_netlist2 ディ レ ク ト リ に生成され

ます。

これで、 System Generator によ り HDL ネッ ト リ ス トが生成されました。

HDL ライブラリ名の変更

複数の System Generator デザインを大型デザインに組み込む場合、シ ミ ュレーシ ョ ンの名前の競合

やその他の不正な動作を回避するため、HDL ライブラ リの名前を変更する必要があ り ます。SystemGenerator には、 System Generator デザインのすべてのファ イルでラ イブラ リ名を変更するユー

ティ リ ティが含まれています。 また、 元のライブラ リ名に戻す必要がある場合を考慮して、 バッ ク

アップ コピーも作成されます。 このユーティ リ ティの構文は、 次のとおりです。

構文 :

xlSwitchLibrary(<target_dir_pathname>, <from_lib_name>, <to_lib_name>)

<target_dir_pathname> : デザインの場所

<from_lib_name> : 元の HDL ラ イブラ リ名

<to_lib_name> : 新しい HDL ラ イブラ リ名

1. MATLAB の [Dommand Window] に次のコマンドを入力します。

xlSwitchLibrary('hdl_netlist1','work','design1_lib')

2. 次のコマンドを入力します。

xlSwitchLibrary('hdl_netlist2','work','design2_lib')

74 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 75: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

次のよ う なメ ッセージが表示されます。

System Generator ソースの 上位デザインへの追加

top_level デザインを合成するには、 次の手順に従います。

1. ISE を起動し、 ISE プロジェク ト <path_to_sysgen>\examples\projnav\mult_diff_designs\top_level\top_level.ise の を開きます。

メモ : この時点では、 この Project Navigator プロジェ ク ト は次の図に示すよ う になっています。

spram_cw および mac_fir_cw インスタンスは 上位デザインにインスタンシエート されています

が、 上位デザインと同じディ レク ト リに含まれていないので、 これらのインスタンス /モジュール

が見つからないこ とを示すクエスチョ ン マーク (?) アイコンが表示されています。

System Generator for DSP ユーザー ガイド japan.xilinx.com 75リ リース 10.1.2 2008 年 6 月

Page 76: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

:

2. [Sources] タブで u_spram_cw を右ク リ ッ ク して [Add Source] をク リ ッ ク し、

<path_to_sysgen>\examples\projnav\mult_diff_designs\hdl_netlist1\spram_cw.sgp ファ イルを

選択して [開く ] をク リ ッ ク します。

3. u_mac_fir に対して同じ操作を実行します。 選択するファイルは <path_to_sysgen>\examples\projnav\mult_diff_designs\hdl_netlist2\mac_fir_cw.sgp です。

4. [Sources] タブで top_level を選択し、 [Processes] タブで [Implement Design] をダブルク リ ッ

ク します。 インプリ メンテーシ ョ ンが終了する と、 Project Navigator の表示は次の図のよ うに

なり ます。

76 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 77: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

5. [Processes] タブで [Implement Design] → [Place & Route] → [Place & Route Report] をダブル

ク リ ッ ク し、 PAR レポート ファ イルでタイ ミ ング制約を確認します。

PAR レポート を見る と、 マルチレート制約が満たされているこ とが示されています。

各 System Generator の制約は、 System Generator で作成され、 UCF (ユーザー制約ファイル) に変

換されています。 これらの UCF 制約ファイルは、 ISE インプ リ メ ンテーシ ョ ン (NGDBuild) の段

階で統合され、 関連付けられます。 これらの制約は、 次のとおりです。

両方のデザインの System Generator トークンで、 システム サンプリ ング周期 100ns が設定されて

います。

1

2

3

4

System Generator for DSP ユーザー ガイド japan.xilinx.com 77リ リース 10.1.2 2008 年 6 月

Page 78: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

• TS_clk_f488215c2 制約は、 SRAM デザインのものです (1)。

• TS_clk_c4b7e2441 制約は、 FIR デザインのものです (2)。

• TS_ce_16_c4b7e244_group_to_ce_16_cb47e244_group1 制約は、Down Sample ブロ ッ ク以降

の同期エレ メン トすべてに適用されます。 システム サンプリ ング周期の 16 倍に設定されてい

ます (3)。

• SRAM デザインの Down Sample ブロ ッ クは、サンプリ ング レート を 1/2 にします。TS_ce_2_f488215c_group_to_ce_2_f488215c_group2 制約は、Down Sample ブロ ッ ク以降の同期エレ メ

ン トすべてに適用されます。 システム サンプリ ング周期の 2 倍に設定されています (4)。

System Generator と Project Navigator の統合フローでは、 Project Navigator により これらの制約が

上位デザインに統合され、 関連付けられます。 このフローは、 10.1 以降でのみサポート されます。

デザイン全体のシミ ュレーシ ョ ン

top_level デザインのビヘイビア シ ミ ュレーシ ョ ンを実行するには、 次の手順に従います。

1. System Generator は、VHDL ファ イルを作成し、選択されたロジッ ク合成ツールを起動して HDLネッ ト リ スト を生成します。 上位デザインをシミ ュレーショ ンするには、これらの VHDL ファ

イルを使用します。 生成されるデザインの VHDL ファイルの名前は、 <design>_cw.vhd または

<design>.vhd です。 top_level_testbench.do と いう ModelSim DO ファ イルを開き、VHDL ファイ

ルがどのよう に参照されているかを確認します。

シ ミ ュレーシ ョ ンに使用する メモ リ初期化ファイル (MIF) と係数ファ イル (COE) は、 上位

VHDL ファ イルと同じディ レク ト リに配置する必要があ り ます。 この例では、 ModelSim DOファ イル (top_level_testbench.do) の次の記述によ り、hdl_netlist1 および hdl_netlist2 サブフォ

ルダから MIF ファ イルがコピーされます。

foreach i [glob ../hdl_netlist1/*.mif] {file copy -force $i .

係数ファイルも存在する場合は、 DO ファ イルに同様の記述を追加する と、 ファ イルを 上位

VHDL ファ イルのディ レク ト リにコピーできます。

2. Project Navigator で、 [Sources] タブの [Sources for] で [Behavioral Simulation] を選択し、

[top_level_testbench - structural (top_level.vhd)] を選択します。 このファ イルはプロジェク ト

にテス トベンチ ファ イルと してインポート されており、シ ミ ュレータを使用してデザインをシ

ミ ュレーシ ョ ンできるよ うにします。

3. [Processes] タブで [Simulate Behavioral Model] を右ク リ ッ ク し、 [Properties] をク リ ッ ク しま

す。 [Process Properties] ダイアログ ボッ クスが開きます。 次の図に示すよ うに、 [Custom DoFile] が指定されています。

78 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 79: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

上図は、 System Generator で生成された VHDL コードをコンパイルする ModelSim コマンドを示

します。 top_level デザインをシ ミ ュレーシ ョ ンするには、 [Simulate Behavioral Model] をダブル

ク リ ッ ク します。 ModelSim DO ファ イルによ り VHDL コードがコンパイルされ、シ ミ ュレーシ ョ

ンが 1000ns 間実行されます。 シ ミ ュレーシ ョ ン結果の波形を次に示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 79リ リース 10.1.2 2008 年 6 月

Page 80: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

まとめ

このセクシ ョ ンでは、System Generator デザインを大型システムにインポートする方法を示しまし

た。 プロセスの各段階で、 注意すべき事項がいくつかあ り ます。

System Generator デザインの作成 :

• Gateway In ブロ ッ クおよび System Generator トークンで IOB 制約およびクロ ッ ク ピン ロケーシ ョ ンを指定しないでください。

• System Generator トークンのパラ メータ ダイアログ ボッ クスの [Compilation] で [HDLNetlist] を選択します。 System Generator で生成される HDL ネッ ト リ ス ト には、 デザインの

RTL、 EDIF、 および制約に関する情報が含まれています。

top_level HDL への System Generator デザインのインスタンシエーシ ョ ン :

• ブラ ッ ク ボッ クスを使用し、 適切なブラ ッ ク ボッ クス属性を指定します。 ce ポートは、 デザ

イン内のレジスタには接続されていません。 これは、 VHDL ファ イルを System Generator 内にブラ ッ ク ボッ クス と してインポートするためのものです。

上位シ ミ ュレーシ ョ ン :

• System Generator で生成された VHDL ファ イルをコンパイルするため、 カスタム ModelSimDO ファ イルを使用します。 Project Navigator のプロパティを、 カスタム DO ファ イルを使用

するよ う変更します。

新機能 :

• System Generator プロジェク ト ファ イル (SGP) をサブモジュールと して Project Navigator に追加可能

• System Generator 制約を自動的に 上位デザインに統合および関連付け

• MATLAB および System Generator MDL を Project Navigator から起動し、デザインの一部の

プロセスを実行

80 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 81: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

コンフ ィギャブル サブシステムと System GeneratorR

コンフ ィギャブル サブシステムと System Generatorコンフ ィギャブル サブシステムは、Simulink の基本パーツと して使用可能なブロ ッ クであ り、 基に

なるブロ ッ クを複数指定できるブロ ッ クです。 各ブロッ クはそれぞれ可能なインプリ メ ンテーシ ョ

ンであ り、 どのインプ リ メ ンテーシ ョ ンを使用するかを自由に選択できます。 たとえば、 SystemGenerator で汎用 FIR フ ィルタをコンフ ィギャブル サブシステムと して指定し、そのサブシステム

の基になるブロ ッ ク と して特定の FIR フ ィルタを複数指定します。 高速だがハード ウェア リ ソー

スを多く必要とするフ ィルタ、比較的低速だが必要なハード ウェア リ ソースが少ないフ ィルタなど

を指定できます。 フ ィルタの選択を切り替えるこ とによ り、 ハード ウェア コス ト またはスピードを

優先した場合の動作を調べるこ とができます。

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

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

ブル サブシステムの基になるブロッ クは、 このライブラ リで管理されます。 ライブラ リ を作成する

には、 次の手順に従います。

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

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

System Generator for DSP ユーザー ガイド japan.xilinx.com 81リ リース 10.1.2 2008 年 6 月

Page 82: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

• [Simulink] ライブラ リ → [Ports & Subsystems] にある Configurable Subsystem テンプレート

をライブラ リに追加します。

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

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

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

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

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

82 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 83: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

コンフ ィギャブル サブシステムと System GeneratorR

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

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

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

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

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

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

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

ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 83リ リース 10.1.2 2008 年 6 月

Page 84: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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

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

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

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

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

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

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

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

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

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

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

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

84 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 85: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

コンフ ィギャブル サブシステムと System GeneratorR

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

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

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

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

コンフ ィギャブル サブシステムからのハードウェアの生成

System Generator では、 ブロ ッ クはシ ミ ュレーシ ョ ン とハード ウェア生成の両方に使用されます。

コンフ ィ ギャブル サブシステムが含まれる場合、 シ ミ ュレーシ ョ ンで 1 つのブロ ッ クを使用し、

ハードウェア生成で別のブロ ッ クを使用するこ とがあ り ます。 たとえば、 シ ミ ュレーシ ョ ンを実行

するのに通常の System Generator ブロ ッ クを使用し、対応する HDL を生成するのにブラ ッ ク ボッ

クスを使用する場合などです。 System Generator の Configurable Subsystem Manager ブロ ッ クを

使用する と、シ ミ ュレーシ ョ ンで通常のコンフ ィギャブル サブシステムを使用し、ハードウェア生

成では別のブロ ッ クを使用するこ とが可能です。

Configurable Subsystem Manager ブロッ クを使用するには、 次の手順に従います。

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

• ライブラ リのブロ ッ クの 1 つをダブルク リ ッ ク して開きます。 テンプレート以外のブロ ッ ク

で、 サブシステムである ものを選択して ください。 ラ イブラ リにサブシステムがない場合は、

Configurable Subsystem Manager は使用できません。

System Generator for DSP ユーザー ガイド japan.xilinx.com 85リ リース 10.1.2 2008 年 6 月

Page 86: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

• 開いたサブシステムに、 Configurable Subsystem Manager ブロッ クをド ラ ッグします。

Configurable Subsystem Manager ブロッ クは、 [Xilinx Blockset] → [Tools] にあ り ます。

• Configurable Subsystem Manager ブロ ッ クをダブルク リ ッ クしてダイアログ ボッ クスを開き、

ハードウェア生成に使用するブロ ッ クを選択します。

• [OK] をク リ ッ ク し、 その後サブシステムおよびライブラ リ を保存します。

コンフ ィギャブル サブシステムに関する The Mathworks 社の説明は、 次のサイ トに掲載されてい

ます。

http://www.mathworks.com/access/helpdesk/help/toolbox/simulink/slref/configurablesubsystem.shtml

86 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 87: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

高パフォーマンス FPGA デザインに関するメモR

高パフォーマンス FPGA デザインに関するメモ

次の推奨事項に従う と、System Generator で効率的な高パフォーマンスのハードウェアを実現でき

ます。

ブロックのパラメータ ダイアログ ボックスに含まれている 「Hardware notes」 を読む

ブロ ッ クのパラ メータ ダイアログ ボッ クスに含まれている 「Hardware notes」 を読むよ うにしてく

ださい。 Xilinx Blockset ラ イブラ リの多くのブロ ッ クでは、 も効率の良いハード ウェア インプ リ

メンテーシ ョ ンを達成する方法が記載されています。 たとえば、Scale ブロ ッ クにはこのブロ ッ クに

ハード ウェア コス ト がかからないこ とが記述されていますが、 同じ目的で使用する こ とのある

Shift ブロ ッ クでは場合によってハードウェアが使用されるこ とが記述されています。

デザインの入力と出力にレジスタを付ける

デザインの入力および出力にレジスタを付けて ください。 レジスタを付けるには、 Gateway In ブロ ッ クの後および Gateway Out ブロ ッ クの前に、 レイテンシ 1 の Delay ブロ ッ クまたは Registerブロ ッ クを配置します。 Register ブロ ッ クの機能のいずれかを使用する と、 追加のハードウェア リソースが必要になり ます。

I/O に 2 つのレジスタを付ける と、 有益な場合があ り ます。 この場合、 Register ブロ ッ クを 2 つイ

ンスタンシエートするか、レイテンシが 1 の Delay ブロ ッ クを 2 つインスタンシエート します。 こ

のよ うにする と、 1 つのレジスタが IOB 内に配置され、 も う 1 つのレジスタが FPGA のロジッ ク

の横に配置されます。 Delay ブロ ッ クのレイテンシを 2 にする と、SRL16 を使用してインプ リ メン

ト されるので、 IOB 内に配置されません。

パイプライン レジスタを挿入する

可能な限り、 パイプライン レジスタを挿入してください。 パイプラインは、 Delay ブロ ッ クを使用

して効率的にインプ リ メン トできます (SRL16 プリ ミ ティブが使用される)。レジスタに初期値を指

定する必要がある場合は、 Register ブロ ッ クを使用してください。

[Saturate] および [Round] オプシ ョ ンは必要な場合以外は使用しない

これらのオプシ ョ ンを使用する と、 リ ソースが多く使用され、 パフォーマンスが低下します。 必要

な場合にのみ使用してください。

System Generator のタイ ミング解析ツールを使用する

タ イ ミ ング要件を満たすため、 System Generator のタ イ ミ ング解析ツールを使用して ください。

System Generator では、 タイ ミ ング問題を解決するのに役立つタイ ミ ング解析ツールが提供されて

います。 このツールを使用する と、 も遅いパス、 タイ ミ ング要件を満たしていないパスが表示さ

れます。 詳細は、 「タイ ミ ング解析用のコンパイル」 を参照して ください。

System Generator for DSP ユーザー ガイド japan.xilinx.com 87リ リース 10.1.2 2008 年 6 月

Page 88: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

すべての Gateway ブロックでデータ レート オプシ ョ ンを設定する

Gateway In ブロ ッ ク と Gateway Out ブロ ッ クのパラ メータ ダイアログ ボッ クスで、 [IOB timingconstraint] に [Data rate] を選択します。 このオプシ ョ ンを選択する と、IOB が動作するデータ レー

トで制約されます。 このレートは、 System Generator トークンの [Simulink system period (sec)] の値、 およびデザイン内のその他のサンプ リ ング周期に対する Gateway ブロ ッ クのサンプ リ ング

レートによって決定されます。

クロック イネーブル (CE) のファンアウト を低減する

ISE の MAP ツールで使用されるアルゴ リズムでは、 ファンアウ トの大きいネッ トでロードを繰り

返し分割する こ とによ り レジスタの複製および配置が行われるので、 CE のファンアウ トが大きい

System Generator デザインで FMAX が向上しています。

System Generator ではこの機能がデフォルトでイネーブルになっていますが、ファンアウ トの低減

は ISE でのマップ プロセス時に実行されるので、 次のマップ オプシ ョ ンをオンにする必要があ り

ます。

• [Perform Timing-Driven Packing and Placement] : オン

• [Map Effort Level] : [High]

• [Register Duplication] : オン

ISE Project Navigator フローを使用している場合は、これらのマップ オプシ ョ ンはデフォルトでオ

ンになっていますが、 ビ ッ ト ス ト リーム生成などの System Generator フローを使用する場合は、

bitstream.opt ファ イルを変更するか独自の OPT ファ イルを使用して、 これらのマップ オプシ ョ ン

をオンにする必要があ り ます。 詳細は、 「XFLOW のオプシ ョ ン ファ イル」 を参照して ください。

88 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 89: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

FPGA 物理デザイン ツールを使用した System Generator デザインの処理R

FPGA 物理デザイン ツールを使用した System Generator デザインの処理

HDL シミ ュレーシ ョ ン System Generator では、生成されたプロジェク ト と ModelSim シ ミ ュレータで使用されるカスタム

DO フ ァ イルが生成されます。 これらの DO フ ァ イルを使用するには、 ModelSim (PE または

EE/SE) または ModelSim Xilinx Edition (MXE) が必要です。 シ ミ ュレーシ ョ ンは、ModelSim をス

タンドアロンで起動して実行するか、 ISE Project Navigator で ModelSim を指定し、 インプ リ メン

テーシ ョ ン フローの一部と して実行できます。

IP のコンパイル

デザインをシ ミ ュレーシ ョ ンする前に、IP (コア) ライブラ リ を ModelSim 用にコンパイルする必要

があ り ます。

ModelSim (PE または EE/SE)

IP ラ イブラ リ をコンパイルする方法は、複数あ り ます。 COMPXLIB の実行方法は、『開発システム

リ ファレンス ガイ ド』 の 「COMPXLIB」 の章を参照して ください。

Windows のコマンド プロンプ トから、COMPXLIB を使用して必要な HDL ライブラ リ をコンパイ

ルできます。 たとえば、すべての HDL ラ イブラ リ を ModelSim SE 用にコンパイルするには、次の

コマンドを使用します。

compxlib -s mti_se -f all -l all

xlDoc

ModelSim XE (Xilinx Edition) を使用する場合は、 コンパイル済みの MXE ライブラ リ をザイ リ ン

クス Web サイ トからダウンロード してください。 新のライブラ リは、次のサイ トからダウンロー

ドできます。

http://japan.xilinx.com/ise/optional_prod/mxe.htm

ダウンロード した MXE ラ イブラ リ を、MXE のインス トール ディレク ト リ (C:\Modeltech_XE\ など) で解凍します。 MXE は、この場所からコンパイル済みのザイ リ ンクス ライブラ リ を検索するよ

う設定されているので、 modelsim.ini ファ イルを変更する必要はあ り ません。 正しいインス トール

場所が指定されているはずです。

System Generator for DSP ユーザー ガイド japan.xilinx.com 89リ リース 10.1.2 2008 年 6 月

Page 90: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

Project Navigator からの ModelSim を使用したシミ ュレーシ ョ ンの実行

Project Navigator から ModelSim を起動するには、 ModelSim (MXE または EE/SE/PE) のインス

トール場所を指定する必要があ り ます。 ModelSim のインス ト ール場所を指定するには、 ProjectNavigator で [Edit] → [Preferences] を ク リ ッ ク し、 [Preferences] ダイ ア ロ グ ボ ッ ク スの

[Category] で [ISE General] → [Integrated Tools] を ク リ ッ ク し、 [Model Tech Simulator] にModelSim への完全なパスを入力します。 このパスには、 実行ファイルの名前も含める必要があ り

ます。

Project Navigator プロジェク トは、 インプリ メンテーシ ョ ンの 4 つの段階でシ ミ ュレーシ ョ ンを実

行できるよ う設定されています。 System Generator トークンのパラ メータ ダイアログ ボッ クスで

[Create testbench] をオンにする と、 次の 4 つの DO ファ イルが生成されます。

• pn_behavioral.do : HDL ファ イルに対するビヘイビア (HDL) シ ミ ュレーシ ョ ン用 (合成およ

びインプ リ メンテーシ ョ ン前)。

• pn_posttranslate.do : 変換 (NGDBuild) 後のシ ミ ュレーシ ョ ン用。

• pn_postmap.do : マップ後のシ ミ ュレーシ ョ ン用。 このファ イルには、バッ クアノテート された

シ ミ ュレーシ ョ ンも含まれます。

• pn_postpar.do : 配置配線後のシ ミ ュレーシ ョ ン用。 このファ イルには、 バッ クアノテート され

たシ ミ ュレーシ ョ ンも含まれます。

90 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 91: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

FPGA 物理デザイン ツールを使用した System Generator デザインの処理R

Project Navigator の [Sources] タブで、 [Sources for] ド ロ ップダウン メ ニューから [BehavioralSimulation] (pn_behavioral.do に対応)、 [Post-Translate Simulation] (pn_posttranslate.do に対応)、[Post-Map Simulation] (pn_postmap.do に対応)、または [Post-Route Simulation] (pn_postpar.do に対応) を選択します。

Project Navigator の [Sources] タブで <your design>_tb.vhd/.v を選択する と、 [Processes] タブに

ModelSim のプロセスを含む [ModelSim Simulator] が表示されます。 [ModelSim Simulator] の左

側にあるプラス記号 (+) をク リ ッ クする と、 ModelSim のプロセスが表示されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 91リ リース 10.1.2 2008 年 6 月

Page 92: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

[Process Properties] ダイアログ ボッ クスでは、 既に System Generator で生成された DO ファ イル

がカスタム DO ファ イルと して指定されています。

シ ミ ュレーシ ョ ン プロセスをダブルク リ ッ クする と、 ModelSim コンソールが開き、 カスタム DOファ イルが使用されて、 System Generator テス トベンチがコンパイルおよび実行されます。 テス ト

ベンチでは Simulink で生成された入力ステ ィ ミ ュ ラス と同じ ものが使用され、 HDL シ ミ ュレー

シ ョ ンの結果が Simulink シ ミ ュレーシ ョ ンの結果と比較されます。 デザインにエラーがなければ、

ModelSim によ りシ ミ ュレーシ ョ ンが正常に終了したこ とが示されます。

FPGA ビッ トス ト リームの生成

ザイリンクス ISE Project Navigator

System Generator では、 コード生成の際にザイ リ ンクス ツールおよびパートナー ツールで使用さ

れるプロジェク ト ファ イルが生成されます。 これらのプロジェク ト ファ イルの 1 つは、ザイ リ ンク

ス ISE Project Navigator 用です。 このプロジェク ト ファ イルを開く と、System Generator デザイン

を Project Navigator にインポート し、 Project Navigator からデザインを合成、 シ ミ ュレーシ ョ ン、

インプ リ メ ン ト できます。 このプロジェ ク ト フ ァ イルは <design_name>_cw.ise とい う名前で、

System Generator トークンで指定したターゲッ ト ディ レク ト リに保存されます。

メモ : この後の説明では、 my_project_cw.ise とい う名前を使用します。

System Generator プロジェク ト を開く

Windows エクスプローラから ISE ファ イルをダブルク リ ッ クします。 Project Navigator が起動し、

my_project_cw.ise が開きます。 また、 Project Navigator を起動してから、 [File] → [Open Project]をク リ ッ ク し、 my_project_cw.ise を選択して開く こ と もできます。

92 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 93: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

FPGA 物理デザイン ツールを使用した System Generator デザインの処理R

System Generator プロジェク トのカスタマイズ

System Generator プロジェク ト を開く と、System Generator トークンで指定した合成ツール、デバ

イス、 パッケージ、 およびスピード グレードが既に設定されています。 これらの設定を変更するに

は、 [Sources] タブでデバイス名を右ク リ ッ ク し、 [Properties] をク リ ッ ク します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 93リ リース 10.1.2 2008 年 6 月

Page 94: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

[Project Properties] ダイアログ ボッ クスが開きます。 このダイアログ ボッ クスで、デバイス、 パッ

ケージ、 スピード グレード、 合成ツールなどを変更できます。 デバイス ファ ミ リ を変更した場合

は、 System Generator で生成し た IP コアを再生成する必要があ り ます。 この場合、 SystemGenerator に戻ってプロジェク ト を再生成するこ とをお勧めします。

94 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 95: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

FPGA 物理デザイン ツールを使用した System Generator デザインの処理R

デザインのインプリ メンテーシ ョ ン

Project Navigator では、 プロジェク ト を作業するのにさまざまなオプシ ョ ンが提供されています。

Floorplanner、 Constraints Editor、 レポート ビューアなどのツールを起動できます。 デザインをイ

ンプ リ メン トするには、 合成からビッ ト ス ト リーム生成までのプロセスを実行するよ う指示するだ

けです。 [Sources] タブで、 上位 HDL モジュールを選択します。 この例では、 上位 HDL モジュールの名前は my_project_cw - structural です。 [Processes] タブに 上位 HDL モジュールに対

して実行可能なプロセスが表示されます。

[Processes] タブで [Generate Programming File] を右ク リ ッ ク して [Run] をク リ ッ クする と、 選択

した HDL ソースからプログラム ファ イル (FPGA ビッ ト ス ト リーム) を生成するのに必要なプロ

セスが実行されます。 [Console] タブに、 合成、 変換、 マップ、 配置配線、 ビッ ト ス ト リームの生成

などが実行されているこ とが表示されます。

デザインのビッ ト ス ト リームを生成したら、 それまでに生成されたすべてのファイルにアクセスで

きます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 95リ リース 10.1.2 2008 年 6 月

Page 96: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

自動生成されたクロック イネーブル ロジックのリセッ ト

System Generator では、 Simulink 環境で FPGA ハードウェアのビッ ト精度およびサイクル精度の

モデリ ングを提供します。 デフォルトの [Clock Enables] オプシ ョ ンに加え、 複数のク ロ ッ ク供給

オプシ ョ ンがあ り ます。 [Clock Enables] オプシ ョ ンを選択する と、 System Generator では 1 つの

クロ ッ ク と ク ロ ッ ク イネーブル (ce) を使用して、 さまざまなサンプリ ング ド メ インが同期化され

ます。 マルチレート ク ロ ッ ク供給については、 「コンパイル結果」 を参照して ください。 多くの場

合、System Generator モデルは大型システム デザインの一部と して組み込まれますが、大型システ

ム デザインでは、 データ パス サンプリ ングの開始を指定するために動的な制御が必要です。 大型

システム デザインで動的な制御を可能にするため、 上位 HDL ク ロ ッ ク ラ ッパに、 ク ロ ッ ク イネーブル生成ロジッ クを リセッ トするためのオプシ ョ ンの ce_clr ポート を含めるこ とができます。

次の図は、ce_clr 信号がディアサート された後に CE4 信号生成ロジッ クが リセッ ト される様子を示

します。

ce_clr 信号を使用した場合の動作は、元の System Generator デザインを使用してシ ミ ュレーシ ョ ン

するこ とはできません。 Simulink 内でこの動作をモデリ ングするには、 次の手順に従います。

1. System Generator トークンのパラ メータ ダイアログ ボッ クスで、 [NGC Netlist] ( 「NGC ネッ

ト リ ス トへのコンパイル」 を参照) を選択し、 [Provide clock enable clear pin] をオンにします。

2. [Generate] ボタンをク リ ッ ク します。

3. MATLAB の [Command Window] に次のコマンドを入力し、変換後の VHDL ネッ ト リ ス ト を

生成します。 Verilog ネッ ト リ ス ト を生成する場合は、 「-ofmt verilog」 を使用してください。

>> !netgen -ofmt vhdl ./<target_directory>/<design_name>_cw.ngc

4. 変換後の VHDL/Verilog ファ イルをブラ ッ ク ボッ クス と して Simulink に取り込み、 HDL 協調シ ミ ュレーシ ョ ンを使用して、 ce_clr 信号をアサート した場合のデザインへの影響をモデリ

ングします。

96 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 97: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

自動生成されたクロック イネーブル ロジックのリセッ トR

ce_clr とレート変更ブロック ce_clr 信号は、 すべてのサンプ リ ング データ信号のサンプリ ング位相を変更します。 これによ り、

ce 信号を使用して周期的な動作を達成しているレー ト変更ブロ ッ クの機能が変更される可能性が

あ り ます。 次の表に、 ce_clr 信号をディアサート した場合の各レート変更ブロ ッ クの動作を示しま

す。 これらのブロ ッ クは、 変換後の HDL モデルをブラ ッ ク ボッ クス と してインポート し、 シ ミ ュ

レーシ ョ ンするこ とによ り、 特性化されています。

ブロック名 ce_clr に同期

ce_clr がディア

サート されると、

ce に同期 (1 サンプリング サイクル遅延)

ce_clr がディアサート された後、

次の ce パルスまでの動作

Down Sample ([Last value of

frame] をオン)

する なし 新しい ce 信号が到着するまで 後のサ

ンプル値が保持されます。

Down Sample ([First value of

frame] をオン)

しない しない ce_clr 信号がディアサート された後、再

同期は行われません。

Up Sample ([Copy samples]

をオン)

する なし ハードウェアでは、 ワイヤと してインプ

リ メン ト されます。

Up Sample ([Copy samples]

をオフ、 ゼロを

挿入)

しない する 次の ce 信号が到着するまで、 後の値 (ゼロまたはサンプル値) が保持され

ます。

Time Division Multiplexer

しない する 残 り の入力チャネルがすべてサンプ リ

ングされた後、 次の ce が到着するまで

出力が 0 に設定されます。 ce 信号が到着

する と、出力が新しいフレーム定義に再

同期化されます。

Time Division Demultiplexer

しない する 次の ce 信号が到着するまで出力チャネ

ルが同じ値に保持されます。 ce 信号が

到着する と、出力が新しいフレーム定義

に再同期化されます。

Parallel to Serial しない する 残りのデータ ワードがすべてサンプ リ

ングされた後、 次の ce 信号が到着する

まで 後のサンプル ワードが保持され

ます。 ce 信号が到着する と、 パラ レル

データからシ リ アル データへの変換が

開始します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 97リ リース 10.1.2 2008 年 6 月

Page 98: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ce_clr の使用に関する推奨事項

上記の結果から、 ce_clr 信号を使用する場合は次の推奨事項に従ってください。

• Down Sample ブロッ クで [First value of frame] をオンにしている場合は、 [Last value offrame] をオンにした Down Sample ブロッ クを使用した等価回路に置き換えてください。

• ce_clr がディアサート された後に、N クロ ッ ク サイクル間無効なデータが出力されるこ とを考

慮してください。 N は、 ブロ ッ クの も遅い ce です。

• Down Sample ブロ ッ クでは [Last value of frame] をオンにし、Up Sample ブロ ッ クでは [Copysamples] をオンにします。

• N サイクル間無効なデータが出力されるのが好まし くない場合は、 Parallel to Serial、 Serial toParallel、 Time Division Multiplexer、 Time Division Demultiplexer ブロ ッ ク の代わ り に、

Counter、Mux、Up Sample、Down Sample ブロ ッ クを使用して等価回路を作成して ください。

等価回路では、 リセッ ト ポート を 上位に含め、 ce_clr ポート を駆動する信号に接続します。

• 積和演算などの演算を実行するのに使用されるカウンタを リセッ トするには、 ce_clr 信号に接

続されたユーザー リセッ ト と、 Clock Enable Probe ブロ ッ クからの ce 信号を組み合わせて使

用します。

• ce_clr 信号のデザインへの影響を、 変換後の HDL モデルをブラ ッ ク ボッ クス と してインポー

ト し、 シ ミ ュレーシ ョ ンして確認します。

Serial to Parallel しない する ce_clr 信号がアサート される と、出力が

保持されます。 ce_clr がディアサート さ

れる と、入力サンプル フレームの 後の

値がサンプ リ ングされ、 次の ce 信号で

出力レートに対応して出力が現れます。

Addressable Shift Register (ASR)

しない する ce_clr 信号がアサート される と、 シフ ト

レジスタの値が保持されます。 ce_clr がディアサート される と、保存されていた

値がシフ ト アウ ト され、新しい値がシフ

ト レジスタに入力されます。

Polyphase FIR しない しない オプシ ョ ンの リ セッ ト ポー ト を使用し

ない場合、 ce_clr 信号は機能しません。

オプシ ョ ンの リ セッ ト ポー ト を使用す

る と、 ce_clr 信号がディアサート された

後に FIR がリセッ ト されます。

ブロック名 ce_clr に同期

ce_clr がディア

サート されると、

ce に同期 (1 サンプリング サイクル遅延)

ce_clr がディアサート された後、

次の ce パルスまでの動作

98 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 99: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

DSP48 の設計手法R

DSP48 の設計手法

DSP48 について

ザイ リ ンクス Virtex-4 および Virtex-5 デバイスには、 DSP48 (XtremeDSP スライス と も呼ばれる )とい う DSP アプ リ ケーシ ョ ン用の効率的な機能ブロ ッ クが含まれています。 DSP48 は、 SystemGenerator のブロ ッ ク と して提供されています。 このブロ ッ クは、 DSP48 UNISIM プリ ミ ティブの

ラ ッパです。 このプ リ ミ テ ィ ブのアーキテクチャおよび使用方法は、 『XtremeDSP for Virtex-4FPGAs User Guide』 を参照して ください。 DSP48 はすべての Virtex-4 デバイスに含まれており、

特に SX シ リーズ デバイスでは 512 個までの DSP48 ブロ ッ クが含まれています。

DSP48 では、 48 ビッ ト加算器を含む 18X18 ビッ トの符号付き乗算器とプログラマブル マルチプ

レクサを組み合わせて、加算器の入力を選択しています。 基本演算 p=a*b +(c+cin) をインプ リ メン

ト しますが、 ほかの演算も動的に選択できます。 オプシ ョ ンの入力および乗算器パイプライン レジ

スタも含まれており、 高スピードを達成するために使用できます。 また、隣接する DSP48 ブロ ッ

ク との間に高パフォーマンス ローカル インターコネク ト もあ り ます (BCIN、 BCOUT、 PCIN-PCOUT)。 DSP48 では、 対称丸めもサポート されます。 これらの機能によ り、 500MHz 以上で動作

可能な高速 DSP システムを構築するこ とが可能です。

System Generator で DSP48 をプログラムするには、 次の 3 つの方法があ り ます。

• 標準コンポーネン ト を使用する : Mult や AddSub ブロ ッ クを使用するか、 MACFIR フ ィルタ

などの IP コア を使用します。 この方法は、 デザインを Virtex-II Pro や Spartan-3 などでコン

パイルする必要がある場合や、 低速クロ ッ クを使用しており DSP48 にマップする必要がない

場合に有益です。

• 合成可能なブロ ッ クを使用する : デザインが DSP48 の内部アーキテクチャにマップされるよ

う構成し、 合成可能な Mult、 AddSub、 Mux、 Delay ブロ ッ クを使用してデザインを作成しま

す。 この方法では、 ロジッ ク合成によ り適切な場所に DSP48 が推論されるので、 柔軟性が増

し、 多くの場合高パフォーマンスを達成できます。

• DSP48 ブロ ッ クを使用する : System Generator の DSP48 および DSP48 Macro ブロ ッ クを使

用して、DSP48 ベースのデザインを直接インプリ メン ト します。 この方法では 高のパフォー

マンスを達成できますが、 DSP48 を使用して 高パフォーマンスおよび 小エ リ アを達成す

るには、 ターゲッ ト アルゴ リズムを DSP の内部アーキテクチャに注意深くマップする必要が

あ り、 またデザインの物理設計も必要です。

P, PCOUT 48

18

18

BCOUT 18

B, BCIN

A

C

48

48

PCIN

Op

11

= optional register with optional reset and clock enable to various

control ports

System Generator for DSP ユーザー ガイド japan.xilinx.com 99リ リース 10.1.2 2008 年 6 月

Page 100: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

標準コンポーネン ト を使用したデザイン Virtex-II Pro や Spartan-3 などのザイ リ ンクス FPGA 用のデザインは、 Virtex-4 デバイスにコンパ

イルできます。 乗算器は DSP48 ブロ ッ クにマップされますが、加算器およびマルチプレクサはコア

と して供給され、 合成でロジッ クを 適化できないため、 加算器およびマルチプレクサを DSP48ブロ ッ クに含めるこ とができません。 配置配線では MULT18X18S および MULT18X18 は DSP48ブロ ッ クに配置されますが、 加算器およびマルチプレクサは DSP48 ブロ ッ クに配置されません (マルチプレクサは LUT ベースの加算器に配置される )。

高のパフォーマンスを得るには、 乗算器のレイテンシを 3 に設定し、 入力レジスタを追加して、

DSP48 の出力から加算器への遅延に対処するよう にします。 この回路のパフォーマンスは、Virtex-4-11 デバイスで 200 ~ 300MHz の範囲であ り、 加算器のスピードによ り制限されます。 Virtex-4 デバイスでは、 Virtex-II Pro および Spartan-3 デバイス と異な り、 乗算速度はビッ ト幅に依存しませ

ん。 中程度の速度のデザインは、 この方法でう ま くいきます。

CORE Generator で提供されている MACFIR ブロ ッ クなど、 DSP48 用に 適化された IP ブロ ッ

クを使用する方法や、Architecture Wizard を使用して DSP48 をカスタマイズする方法もあ り ます。

これらの方法では、 DSP48 を含むロジッ クをブラ ッ ク ボッ クス と して System Generator にイン

ポートする必要があ り ます。 シ ミ ュレーシ ョ ンは、ModelSim の HDL 協調シ ミ ュレーシ ョ ンで実行

する必要があ り ます。

合成可能な Mult、 Mux、 AddSub ブロックを使用したデザイン 合成ツールで DSP48 ロジッ クを推論できます。 合成ツールで推論させる と、加算器、乗算器、マル

チプレクサを DSP48 ブロ ッ クに配置でき、 リ タ イ ミ ングやレジスタの複製などの合成手法も可能

になり ます。

合成可能なブロ ッ クでデザインを作成する と、 Synplify Pro および XST の両方で DSP48 が推論さ

れ、 DSP48 のローカル インターコネク ト バス (PCOUT、 PCIN、 BCOUT、 BCIN) が利用されま

す。 上記の例では、 3 つのブロ ッ クが次の M 関数で定義された MCode ブロ ッ クを使用して作成さ

れています。

function o = xlsynmux2(i0,i1,sel) if (sel==0) o=i0; else o=i1; end

function p = xlsynmult(a,b) p=a*b;

function s = xlsynadd(a,b) s=a+b;

100 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 101: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

DSP48 の設計手法R

正し く合成されるよ うにするには、DSP48 にマップ可能な回路を作成し、信号のビッ ト幅を DSP48の対応するバス幅以下にする必要があ り ます。

ロジッ ク合成ツールは急速に向上しており、DSP48 の推論が必ずしも公式どおりに行われない場合

があ り ます。 たとえば、 マップ可能なデザインであってもマップが効率的でなかったり、 マップ結

果が一貫しないこ とがあ り ます。 Synplify Pro のゲート レベル テク ノ ロジ ビューアなどのツール

を使用して、 合成後のネッ ト リ ス トでデザインが正し くマップされているかを確認する必要があ り

ます。 正し くマップされていない場合は、 修正します。 完全に合成可能な FIR フ ィルタのモデル例

が、 System Generator のインス トール ディ レク ト リの次のパスに含まれています。

<path_to_sysgen>\examples\dsp48\synth_fir\synth_fir_tb.mdl

DSP48 および DSP48 Macro ブロックを使用したデザイン

DSP48 ブロック

DSP48 ブロ ッ クは、DSP48 UNISIM プリ ミ ティブのラ ッパであるので、 可能な DSP48 デザインで

あればどんなデザインでもインプ リ メン トできます。 ただし、 この低レベル インプ リ メンテーシ ョ

ンでは、11 ビッ トのバイナリ opmode を DSP48 の制御ポートに配線する必要があ り ます。 Constantブロ ッ クには、DSP 制御フィールドの生成を可能にする特別なモードが含まれています。 DSP48 のパイプライン モードおよびローカル インターコネク ト バス (PCOUT、PCIN、BCOUT、BCIN) の使用を指定するには、 DSP48 ブロッ クのパラ メータ ダイアログ ボッ クスを使用します。 DSP48 ブロ ッ クを使用した Simulink モデルの例が、 System Generator のインス トール ディ レク ト リの次の

パスに含まれています。

<path_to_sysgen>\examples\dsp48\dsp48_primitive.mdl

System Generator for DSP ユーザー ガイド japan.xilinx.com 101リ リース 10.1.2 2008 年 6 月

Page 102: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

DSP48 のダイナミ ッ ク制御

DSP48 には、サイクルごとに操作を変更する機能があ り ます。 この機能は、複数のタ ップが 1 つの

乗算器でインプ リ メン ト されている FIR フ ィルタなどのよ うに、 DSP48 を リ ソース共有モードで

使用するアプリ ケーシ ョ ンで有益です。 このよ う な制御パターンを生成するには、 ク ロ ッ クごとに

DSP48 命令を選択するマルチプレクサを使用するのが簡単な方法です。

上図の例では、 DSP48 ブロ ッ ク と Constant ブロ ッ クを使用して、 35X35 ビッ ト乗算器 (4 ク ロ ッ

ク サイクル) をインプリ メン ト しています。 合成のロジッ ク 適化によ り、Mux および Constant ロジッ クが縮小されます。 上図の例では、 DSP48 ブロ ッ ク と 4:1 Mux ブロ ッ クが 2 つの 4 入力 LUTにインプ リ メン ト されます。 パラレルおよびシーケンシャル 35X35 ビッ ト乗算器 (シーケンシャル

モードにダイナ ミ ッ ク操作を使用) を インプ リ メ ン ト する方法を示す Simulink モデルの例が、

System Generator のインス トール ディ レク ト リの次のパスに含まれています。

<path_to_sysgen>\examples\dsp48\mult35x35\mult35x35_tb.mdl

DSP48 Macro ブロック

102 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 103: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

DSP48 の設計手法R

DSP48 Macro ブロ ッ クは、DSP48 命令 (ダイナミ ッ ク命令) のシーケンスを簡単にインプ リ メン ト

できるよ うにした DSP48 ブロ ッ クのラ ッパです。 このブロ ッ クでは、入力および出力のデータ型を

指定できます。 上図の例では、 DSP48 Macro ブロ ッ クが、 4 つの異なる命令のシーケンスを使用し

た複素乗算器をインプ リ メン トするよ う設定されています。 命令は、DSP48 Macro ブロ ッ クのパラ

メータ ダイアログ ボッ クスで入力します。 DSP48 Macro ブロ ッ クを使用したモデル例が、 SystemGenerator のインス トール ディ レク ト リの次のパスに含まれています。

<path_to_sysgen>\examples\dsp48\dsp48_macro.mdl

DSP48 設計手法

DSP48 を使用したフ ィルタの設計

DSP48 ブロ ッ クは、FIR フ ィルタをインプ リ メン トするのに適しています。 タイプ 1 およびタイプ

2 の FIR フ ィルタに DSP48 ブロ ッ クを使用する方法を示したモデル例が、 System Generator のイ

ンス トール ディ レク ト リの次のパスに含まれています。

<path_to_sysgen>\examples\firs\dsp48_firs_tb.mdl

高パフォーマンスデザインの設計手法

DSP48 ベースのデザインには、通常 I/O、 BRAM、およびスライス ロジッ クが必要です。 スライス

ロジッ クは、 遅延レジスタ、 SRL16、 マルチプレクサ、 カウンタ、 および制御ロジッ クをインプ リ

メン トするのに使用されます。 DSP48 ブロ ッ クは、500MHz 以上のスピードで動作する と予測され

るので、 ほかのコンポーネン ト も同じスピードで動作する必要があ り ます。 そのため、 DSP48 以外

のロジッ クに対して特別な設計手法が必要になり ます。

500MHz では、 各クロ ッ ク サイクルは 2ns です。 Virtex-4 -11 デバイスでは、 レジスタの clock-to-out に約 300ps、セッ ト アップに約 300ps 必要です。 LUT 遅延は 166ps です。 クロ ッ ク イネーブル

や DSP48 および BRAM の信号など特殊な入力/出力では、 clock-to-out タイムはほぼ 500ps です。

ク ロ ッ ク スキューおよびジッ タを含める と、 ネッ ト遅延に許容されるのは約 1ns です。 この制限に

よ り、 各パスに 1 ネッ ト しか使用できず、 かな り短い必要があ り ます。

DSP48 のスピードで確実に動作するよ うにするためのガイ ド ラ インがあ り ます。 その一部を次に

示します。

SRL16 BRAM

BRAM +

DSP48

+

3) PCOUT-PCIN bus

+

4) Use extra registers to cover distance greater than 20-40 slices

2) Extra output regs

lut

6) Use input and output regs with LUTs

5) Limit fanout to 4-8 loads

1) Pipeline regs

8) srl16 as control pattern generator

1) use input and output regs 7) Limit to 1 level of logic

9) dsp48 as counter, adder

System Generator for DSP ユーザー ガイド japan.xilinx.com 103リ リース 10.1.2 2008 年 6 月

Page 104: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

1. DSP48、BRAM16、FIFO16 には、常に入力レジスタ、乗算器、および出力レジスタを使用する。

2. 必要に応じて、 DSP48 および BRAM の出力にフ リ ップフロ ップを追加する。

3. PCOUT と PCIN バスを使用し、 DSP48 をチェーン接続できるよ うにする。

4. 20 ~ 40 個以上のスライスが連続する場合は、 パスにレジスタを追加する。

5. 20 個のスライス内にあるファンアウ ト を 32 個のロードに制限する。

6. LUT ベースのロジッ クに出力レジスタを追加する。

7. LUT を 1 レベルまたは 4:1 マルチプレクサに制限し、 入力または出力でローカル レジスタが

使用されるよ うにする。

8. 制御パターンを生成するには、 ステート マシンではなく RAM または SRL16 を使用する。

9. 8 ~ 16 ビッ ト以上のカウンタおよび加算器インプ リ メン トするには DSP48 を使用する。

10. エリア制約 「INST ff1* LOC = SLICE_X0Y8:SLICE_X1Y23;」 を使用する。

DSP48 ベースのデザインの物理設計

DSP48 を使用して高集積度、 高パフォーマンスのデザインを達成するには、 正しい配置が必要で

す。 配置配線ツールで適切な配置を達成する こ とは可能ですが、 適な結果を得るには手動で

DSP48 および RAM ブロ ッ クを配置する必要がある場合があ り ます。 DSP48 を使用する際には、追

加の考慮事項がいくつかあ り ます。

カスケード接続バス

隣接する DSP48 ブロ ッ クは、PCOUT および BCOUT とい う 2 つのローカル バスで接続されます。

PCOUT バスは、 1 つの DSP48 から次の DSP48 に累積データを送信します。 BCOUT バスは、 遅

延された B 入力のデータを次の DSP48 に送信します。 DSP48 および DSP48 Macro ブロ ッ クは、

両方と も PCOUT と BCOUT バスをサポート します。 上の図はパイプライン 4 タ ップ タイプ 1 FIRフ ィルタであ り、 これらのバスの使用法を示します。

C 入力の共有

DSP48 の各ペアでは、 1 つの C 入力が共有されます。 リ ソースの使用を計画する際、 このこ とを考

慮する必要があ り ます。 配置ツールで C 入力を共有するための 適な配置を見つけられる とは限ら

ないので、 可能な限り C 入力は使用しないよ うにします。

104 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 105: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

DSP48 の設計手法R

加算器ツリー

ツ リー ベースのフ ィルタ ト ポロジは、 DSP48 の効率的なインプ リ メンテーシ ョ ンの妨げとなり ま

す。 加算器ツ リーには、 分離された 2 入力加算器が必要です。 2 入力の 36 ビッ ト加算器は、 1 つの

DSP48 を使用してインプ リ メン トできますが、 これには C 入力が必要であ り、 乗算器が使用でき

な く な り ます。 また、 DSP48 間の長い信号に追加のパイプラ イン段が必要な場合もあ り ます。 ツリー構造をパイプライン カスケード接続に変換するこ とをお勧めします。

配置

ほとんどのデザインは、 DSP48 および BRAM を一部配線するこ とで向上します。 エリア制約を使

用して LUT ロジッ クの配置を制約する と、 有益な場合があ り ます。

信号の長さ

500MHz では、 信号の長さを 20 スライス程度に制限する必要があ り ます。 長い信号には、 複数の

パイプライン段を使用してください。

クロック イネーブル

[Clock Enables] オプシ ョ ンを使用する と、 高周波数ではクロ ッ ク イネーブルが制限パスになるこ

とが良くあ り ます。 これは、 System Generator で LUT を使用して、 デスティネーシ ョ ンでク ロ ッ

クをゲート処理しているからです。 ク リ ティカル パスでクロ ッ ク イネーブルを回避するには、 UpSample および Down Sample を介したク ロ ッ ク ド メ インを使用しないよ うにして ください。 これ

には、 システム ク ロ ッ ク レート未満で動作するロジッ クにク ロ ッ ク イネーブルを手動で追加する

必要があ り ます。

配置配線フロー

• map -timing コマンドをエフォート レベル High で使用し、 マップと配置を実行します。

• trce -v 100 を使用してタイ ミ ングを満たしていないネッ ト を確認し、 xflow/design.twr ファ イ

ルでデザインのタイ ミ ングを理解します。

• bitstream_v4.opt ファ イルは、 examples\dsp48 ディ レク ト リにあ り ます。 このファ イルは、

System Generator トークンのパラ メータ ダイアログ ボッ クスで [Compilation] を [Bitstream]を選択した場合に、 PAR オプシ ョ ンを設定するために使用できます。

合成フロー

• すべての LUT と信号を手動でパイプライン化するのを回避するため、 Synplify Pro を使用す

る際はリ タイ ミ ングおよびパイプライン処理をイネーブルにします。

• Synplify Pro では、 ファンアウ ト を 32 に制限し、 ネッ ト遅延が長くなるのを回避します。

• Synplify Pro でコンパイルしたプロジェク ト を開き、RTL レベルおよびゲート レベルの表示を

使用して生成されたロジッ クを確認します。

• syn.pl ファイルは、examples\dsp48 ディ レク ト リ にあり ます。 このファ イルを <path_to_sysgen>\scripts ディ レク ト リ に配置し、 System Generator の合成オプショ ンを変更します。

ロジックのレベル数

次のガイ ド ラ インに従う と、 Virtex-4 -11 デバイスを使用した場合に LUT を 450MHz で動作させ

るこ とが可能です。

System Generator for DSP ユーザー ガイド japan.xilinx.com 105リ リース 10.1.2 2008 年 6 月

Page 106: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

• 450MHz のク リティカル パスでは 1 つのネッ ト しか許容されません。 4:1 マルチプレクサから

レジスタ、 4 入力 LUT からレジスタ、 または LUT を介したネッ ト を直接 DSP48 に接続でき

ます。

• 16 ビッ ト までのカウンタを使用できますが、 カウン ト制限のあるカウンタを使用する場合は、

パイプラインを追加します。

• アキュムレータまたはカウンタを使用する場合は、 イネーブル ラ インを反転してアク ティ ブ

Low にし、 ク リ ティ カル パスに余分な LUT が挿入さ れるのを回避します。

• 加算器には、ローカル入力レジスタを付ける必要があ り ます。 スピードを達成するため、DSP48に制御カウンタを配置するこ とが必要な場合があ り ます。

ファンアウト

ファンアウ ト を 32 個の LUT、 8 個の DSP48、 または 8 個の BRAM 以内にします。 これらの信号

パスにパイプライン レジスタを追加する と、 ファンアウ トがこれ以上になるのを回避できます。

レジスタのリ タイ ミ ング

Delay ブロ ッ クの リ タイ ミ ングを確認し、 パイプライン用のレジスタ と して使用できるよ うにしま

す。 Synplify Pro または XST でリ タイ ミ ングをイネーブルにし、レジスタが 適な位置に移動でき

るよ うにします。

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

次の例では、FDATool ブロ ッ クを使用して FIR フ ィルタを指定、 インプ リ メン ト 、シ ミ ュレーシ ョ

ンする 1 つの方法を示します。 FDATool ブロ ッ クをフ ィルタの次数および係数を定義するために

使用し、 ザイ リ ンクス ブロ ッ クセッ ト を使用して MAC ベースの FIR フ ィルタを 1 つの MAC エンジンでインプ リ メン ト します。 その後、 周波数応答の質を倍精度の Simulink フ ィルタ モデルと

比較するこ とによ り検証します。

106 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 107: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

この例では 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] にあ る RandomSource ブロ ッ クを使用し、 FIR フ ィルタの 2 つのインプリ メンテーシ ョ ンを駆動します。

• 初のフィルタは、 ザイ リ ンクス デバイスにインプリ メン ト します。 このフ ィルタは、 デュア

ル ポート ブロ ッ ク メモ リ と MAC を使用してインプリ メン ト された、固定小数点 FIR フ ィル

タです。

• 2 つ目のフィルタは Reference Filter で、 倍精度の直接型 II 転置フ ィルタです。

各フィルタの周波数応答は、 伝達関数スコープで表示されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 107リ リース 10.1.2 2008 年 6 月

Page 108: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

FIR フ ィルタの係数の生成

1. MATLAB の [Command Window] で、 cd コマンドを使用して <path_to_sysgen>\examples\mac_fir ディ レク ト リに移動します。

2. [Command Window] に 「mac_df2t」 と入力し、 デザイン モデルを開きます。

このチュート リ アルの目的のため、 変数 coef、 coef_width、 coef_binpt、 data_width、 data_binpt、および Fs は定義されていません。 これらの変数は、MAC ブロ ッ クのマスク パラ メータ と して使用

し、 FDATool を使用してフ ィルタを設計し、 割り当てます。 完全に機能するモデルが、 同じディ レ

ク ト リに mac_df2t_soln.mdl とい う名前で含まれています。

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

1. MAC Based FIR ブロ ッ クを右ク リ ッ ク し、 [マスクの編集] をク リ ッ ク します。

108 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 109: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

2. [マスクエディ タ ] ダイアログ ボッ クスの [パラ メータ ] タブで、 次の図に示すよ うに coef、data_width、 および data_binpt を追加します。

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

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

4. FDATool ブロ ッ クをダブルク リ ッ ク し、 オーディオ システムで高周波数ノ イズを除去する

ローパス フ ィルタの次の仕様を入力します。

♦ [周波数仕様] : Fs (サンプリ ング周波数) = 44.1KHz

♦ Fpass (パスバンド周波数) = 6KHz

♦ Fstop (ス ト ップバンド周波数) = 7.725KHz

♦ [振幅仕様] : Apass (パスバンド リ ップル) = 1dB

♦ Astop (ス ト ップバンド リ ップル) = 48dB

5. [フ ィルタの設計] をク リ ッ ク し、 フ ィルタ次数と振幅応答を確認します。

ツールバー ボタンをク リ ッ ク して、 位相応答、 インパルス応答、 フ ィルタ係数なども表示でき

ます。 上記の仕様を満たすには、 43 タ ップ FIR フ ィルタが必要であるこ とが示されます。

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

>> xlfda_numerator('FDATool')

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

小係数値を知るこ とができます。

>> max(xlfda_numerator('FDATool'))>> min(xlfda_numerator('FDATool'))

System Generator for DSP ユーザー ガイド japan.xilinx.com 109リ リース 10.1.2 2008 年 6 月

Page 110: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

このチュート リ アルでは、 係数タイプは 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 ビッ ト 失われます。

6. Reference Filter ブロ ッ ク と MAC Based FIR のパラ メータ ダイアログ ボッ クスで、 次に示す

よ うに coef、 coef_width、 coef_binpt、 data_width、 data_binpt、 Fs の値を入力します。

係数値を毎回 FDATool で再生成せずに読み込むよ うにするため、 mac_df2t.mdl モデルをファ

イルに保存します。

ザイリンクス フ ィルタ ブロックの理解

次に、 このチュート リ アルの MAC Based FIR をインプリ メン ト したブロ ッ ク図を示します。

110 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 111: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

この時点では、 MAC Based FIR は 10 ビッ トの符号付き入力データ (Fix_10_8)、 12 ビッ トの符号

付き係数 (Fix_12_12)、43 タ ップに設定されています。 これらのパラ メータは、MAC Based FIR ブロ ッ クのパラ メータ ダイアログ ボッ クスで直接変更できます。 係数とデータは、 メモ リ システム

に保存する必要があ り ます。 このチュート リ アルでは、データ と係数の保存にデュアル ポート メモ

リ を使用します。 データのキャプチャおよび読み出しには、 循環 RAM バッ ファ を使用します。

RAM は混合モード コンフ ィギュレーシ ョ ンで使用され、ポート A で値の書き込みおよび読み出し

が行われ (RAM モード )、 ポート B で係数の読み出しのみが行われます (ROM モード )。

乗算器は、 速のパフォーマンスを達成するため、 ザイ リ ンクス Virtex-II および Virtex-II Pro デバイスに含まれているエンベデッ ド乗算器リ ソースを使用し、 レイテンシが 3 になるよ う設定され

ています。 乗算器およびアキュムレータに必要な精度は、フ ィルタ タ ップ (係数) と タ ップ数の関数

です。 これらの数値は設計時に固定されるので、 フ ィルタ仕様を満たすよ うハード ウェア リ ソース

を調整できます。 アキュムレータの精度は、 フ ィルタ タ ップに対して 大入力を累積するのに十分

であればよ く、 次の式で算出されます。

acc_nbits = ceil(log2(sum(abs(coef*2^coef_width_bp)))) + data_width+ 1;

アキュムレータを リセッ トする と、 0 ではな く現在の入力値に初期化されるので、 MAC エンジン

でデータを停止するこ とな く送信し続けるこ とができます。 MAC エンジンは、 出力サンプルの

後の部分積を算出した後アキュムレータに入力サンプルを読み込むので、 ス ト リーミ ング操作では

キャプチャ レジスタが必要です。

後に、 Down Sample ブロ ッ クでキャプチャ レジスタのサンプリ ング周期を出力サンプリ ング周

期に変換します。 効率的なハードウェア インプリ メンテーシ ョ ンを達成するため、 このブロ ッ クは

レイテンシを持つよ う コンフ ィギュレーシ ョ ンされます。 サンプリ ング レートは、 係数アレイの長

さ と同じです。

シミ ュレーシ ョ ンの実行

シ ミ ュ レーシ ョ ンを実行する と、 次の図に示すよ う な メ ッ セージが表示されます。 SystemGenerator では、 din という Gateway In ブロ ッ クから入力サンプリ ング周期を取得しますが、 この

周期は 1/Fs に設定されています。 MAC Based FIR フ ィルタは、 タ ップ数に応じてオーバーサンプ

リ ングされるので、 システム ク ロ ッ ク周期は常に 1 (フ ィルタ タ ップ数 X Fs) です。 [Update] をク

リ ッ ク して、 システム ク ロ ッ ク周期を 5.273427e-007 = 1/(43 * 44100) に指定して ください。

これで、 シ ミ ュレーシ ョ ンが実行されます。 MAC Based FIR フ ィルタのザイ リ ンクス インプ リ メ

ンテーシ ョ ンは元のフ ィルタの仕様を満たしており、 周波数応答は倍精度の Simulink モデルとほ

ぼ同一です。

System Generator for DSP ユーザー ガイド japan.xilinx.com 111リ リース 10.1.2 2008 年 6 月

Page 112: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

フ ィルタのパスバンド応答と 0 が明確に示されています。 FIR フ ィルタは完璧です。

フ ィルタの精度を上げたり下げたりするこ とによ り、 デザインの仕様に必要な範囲、 パフォーマン

ス、 質のバランスを取るこ とができます。

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

20 ビッ トにアップデート されています。

112 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 113: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

複数クロックのサイクル単位アイランドの生成R

シ ミ ュレーシ ョ ンを再開し、 周波数応答がどのよ うに変化したかを観察します。 固定ワード長によ

り、 減衰が悪化しています (40dB 未満)。

複数クロックのサイクル単位アイランドの生成

System Generator の共有メモ リ インターフェイスを使用する と、 複数のクロ ッ ク ソースで駆動す

るデザインをインプ リ メン トできます。 複数クロ ッ ク デザインでは、 異なるク ロ ッ クおよび派生ク

ロ ッ クを使用して、 1 つのデザイン環境で高度なクロ ッ ク供給方法をインプ リ メ ン トできます。 このセクシ ョ ンでは、System Generator で複数クロ ッ ク デザインをインプ リ メン トする方法を、次の

内容をとおして説明します。

• 複数クロ ッ クを使用するこ とが利点となるデザイン

• 階層を使用して System Generator モデルを複数のクロ ッ ク ド メ インに分割

• 共有メモ リ を使用したク ロ ッ ク ド メ インの切り替え

• 複数クロ ッ ク デザインのシ ミ ュレーシ ョ ンおよびネッ ト リ ス ト作成

• ザイ リ ンクス Multiple Subsystem Generator ブロ ッ クを使用した複数のクロ ッ ク ド メ インの

配線

これらの内容を、 例を使用して説明します。 この例では 2 つのクロ ッ クを使用していますが、 こ こ

に示す概念は、 ク ロ ッ ク ソースがいくつのデザインにも応用できます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 113リ リース 10.1.2 2008 年 6 月

Page 114: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

まず、System Generator での標準のクロ ッ ク供給手法およびインプ リ メンテーシ ョ ン手法を理解し

ておく と有益です。 これらの情報は、 「タ イ ミ ングと ク ロ ッ ク」 で詳細に説明されています。 通常

System Generator デザインは 1 つのシステム ク ロ ッ ク ソースで駆動し、 複数のレートはシステム

ク ロ ッ ク ソースにクロ ッ ク イネーブルを使用するこ とによ り生成しますが、 複数のクロ ッ ク ソー

スで駆動するデザインをインプ リ メン トするこ と も可能です。

大まかに言う と、 次の手法が使用されます。

デザインを複数のサブシステムに分割し、 それぞれを異なる ク ロ ッ クで駆動します。 この例では、

これらのサブシステムを 「非同期クロ ッ ク アイランド」 と呼びます。 ザイ リ ンクスの共有メモリ ブロ ッ クを、 クロ ッ ク アイランド間のブリ ッジと して使用します。 デザインを分割したら、 ザイ リ ン

クス Multiple Subsystem Generator ブロ ッ クを使用して、デザインを複数のクロ ッ ク ソースを使用

するハードウェアに変換できます。

複数クロック アプリケーシ ョ ン

複数のクロ ッ ク ド メ インは、異なるクロ ッ ク レートで動作する複数の外部ハードウェアのインター

フェイスによ く使用されます。 たとえば、 マイ ク ロプロセッサに複数の I/O レジスタを接続し、 個

別のクロ ッ クに同期するこれらのレジスタに対してマイク ロプロセッサで読み出しおよび書き込み

を実行する場合や、 クロ ッ ク /データ リ カバリ ユニッ トからデータを取得し、 このデータをローカ

ル ク ロ ッ ク ド メ インに再同期化する必要がある場合、 システム ク ロ ッ ク とは異なるサンプ リ ング

レートで動作する必要のある DA コンバータにデータを供給する場合があ り ます。

複数クロ ッ ク ド メ インのその他の重要なアプリ ケーシ ョ ンと して、 高速処理ユニッ トがあ り ます。

たとえば、補間 FIR フ ィルタを考えてみます。 このフ ィルタは、外部ユニッ トからシンボル データ

を取得し、4X の補間を実行して各入力シンボルに 4 つの出力サンプルを作成します。 出力サンプル

は、 サンプ リ ング レートで動作する DA コンバータ (DAC) に供給されます。

FIR フ ィルタは、 複数のレートのいずれかで動作させるこ とができます。 シンボル レートで動作さ

せる場合、各サイクルで 4 つのサンプルを作成し、これらのサンプルをサンプリ ング レートで DACに供給します。 このパラレル インプリ メンテーシ ョ ンでは、ハード ウェア リ ソースが多く必要とな

り、 サンプリ ング レートが非常に高速な場合にのみ採用されます。 別の方法と しては、 FIR フ ィル

タをサンプリ ング レートで動作させ、サイ クルごとに 1 つのサンプルを作成します。 この場合、ハー

ドウェア リ ソースの使用量は中程度であ り、中速のサンプリ ング レートで使用されます。 サンプリ

ング レートが低速である場合は、 FIR フ ィルタをサンプリ ング レート の数倍で動作させる こ と も

できます (DCM を使用してサンプリ ング レート ク ロ ッ クを逓倍)。 このよ うにする と、 FIR フ ィル

タの MAC ユニッ ト を各サンプル出力の計算で複数回使用でき、ハード ウェア リ ソースの量を 小

限に抑えるこ とができます。 この 後の方法では、 シンボル レート ク ロ ッ ク ド メ イン、 高速処理

クロ ッ ク ド メ イン、 およびサンプリ ング レート ク ロ ッ ク ド メ インを使用します。

FPGA の設計では、 FPGA デバイスの各リ ソースをできるだけ高速に動作させ、 ハードウェアの使

用量を 適化するよ うにするこ とが推奨されます。 通常は、可能な限り 1 つのクロ ッ ク ド メ インを

使用し、 ク ロ ッ ク イネーブルを使用して低速の回路へのクロ ッ ク供給を調整し、 複数サイ クル パスを作成します。 この方法の欠点は、 消費電力が増加し、 高速クロ ッ ク イネーブルを配線するのが

困難な場合があるこ とです。 そのため、 場合によっては、 高速処理用のド メ インを別に作成する方

が適切です。 また、 非同期データ入力および出力を使用する場合は、 複数のクロ ッ ク ド メ インを使

用せざるを得ないこ とがあ り ます。

114 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 115: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

複数クロックのサイクル単位アイランドの生成R

クロック ド メ インの分割

FPGA デザインでは、複数クロ ッ ク デザインを複数のド メ インに分割するこ とが重要です。 SystemGenerator では、 デザイン階層を使用してク ロ ッ ク ド メ インの分割をサポート しています。 具体的

には、デザインで複数のクロ ッ ク ド メ インを使用する場合、各クロ ッ ク ド メ インに関連するロジッ

クを Simulink サブシステムと してグループ化します。

サブシステム (この場合は同期アイランド ) はサイ クル単位であ り、アイ ランドに生成されるハード

ウェアはアイランド モデルの Simulink の動作に忠実です。 ビッ ト精度およびサイクル精度は、 各

同期アイランド内でのみ保持されます。 同期アイランドを含む 終的なデザインは、 アイラン ドを

非同期クロ ッ クで駆動するので、サイ クル単位とは限り ません。 System Generator および Simulinkでは、理想的なクロ ッ ク ソースを使用してデザインをシ ミ ュレーシ ョ ンできますが、非同期クロ ッ

ク供給システムは複雑であるため、ソフ ト ウェア シ ミ ュレーシ ョ ンとハード ウェア シ ミ ュレーシ ョ

ンの結果が異なるものになる場合があ り ます。

サブシステムを使用したデザインの分割には、 次のよ う な利点があ り ます。

• 物理クロ ッ ク ラ インがブロッ ク図から省略されます。

• ク ロ ッ ク ド メ インが切り替わる転送が明確に定義され、 ザイ リ ンクス ブロ ッ クセッ トに含ま

れる メ タステーブルにならないブロ ッ クで処理できます。

• ド メ インが明確に定義されるので、System Generator で同期アイランドのタイ ミ ング制約を正

確に生成できます。

System Generator の抽象度によ り、一般的なデザイン エラーを犯す可能性が減少します。 これらの

デザイン エラーには、 次のよ うなものがあ り ます。

• ゲーティ ッ ド ク ロ ッ ク : System Generator のクロ ッ クは、 ハードウェア生成中に推論される

ので、 ク ロ ッ ク以外のラインをク ロ ッ ク入力に接続する (ゲーティ ッ ド ク ロ ッ ク ) のは不可能

です。

• 非同期ク リア : System Generator の非同期リセッ トはハード ウェア生成中に推論されるので、

非同期リセッ ト を使用して同期ロジッ クをク リ アするよ う指定するこ とはできません。 このよ

うに指定する と、 多くの場合タイ ミ ングの問題が発生します。

• ラ ッチの推論 : System Generator デザインからラ ッチは生成されません。

クロック ド メ インの切り替え

ク ロ ッ ク ド メ インが切り替わる場合は、System Generator の共有メモ リブロ ッ クを使用する必要が

あ り ます。 ク ロ ッ ク ド メ インが切り替わるデータ転送用にいくつかのブロ ッ クが用意されており、

[Xilinx Blockset] → [Shared Memory] に含まれています。

• Shared Memory

• To FIFO / FIR Compiler 4.0

• To Register / From Register

System Generator for DSP ユーザー ガイド japan.xilinx.com 115リ リース 10.1.2 2008 年 6 月

Page 116: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ク ロ ッ ク ド メ インの切り替えにこれらの共有メモ リ ブロ ッ クを使用する際は、 ペアになっている

ブロ ッ ク と対にして使用します。

To FIFO ブロ ッ クはこのブロ ッ クに書き込みを行う ド メ インに配置し、 From FIFO ブロ ッ クはこの

ブロ ッ クから読み出しを行う ド メ インに配置します。 同じ名前の 2 つのブロ ッ クは、 リ ンク されま

す。 FIFO は、 ザイ リ ンクス FIFO Generator コアを使用してハードウェアにインプ リ メン ト されま

す。 ク ロ ッ ク ド メ インの切り替えには、 FIFO ブロ ッ クを使用するのが も確実で簡単であ り、 バ

ンド幅の広いシーケンシャル データ転送に 適です。

Shared Memory ブロ ッ クのペアは、 ザイ リ ンクス Dual-Port Block RAM コアと してインプ リ メン

ト されます。 同じ名前の Shared Memory ブロ ッ クは リ ンク されます。 ペアとなっている 2 つのブ

ロ ッ クは、 異なる ド メ インに配置されます。 RAM はデュアル ポー ト であるので、 各ド メ インで

RAM に書き込みを実行できます。 セマフォやロジッ クを使用して、2 つの書き込みまたは読み出し

と書き込みが、 同じアドレスに対して同時に行われないよ うにする必要があ り ます。 たとえば、 ド

メ イン B が読み出しを行っている メモ リ ロケーシ ョ ンに対して同時にド メ イン A で書き込みを行

う と、データ読み出しが無効になる可能性があ り ます。 共有メモリはザイ リ ンクス Dual Port BlockMemory コアを使用してインプ リ メ ン ト され、 大型メモリが複数の BRAM に効率的にマップされ

ます。

116 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 117: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

複数クロックのサイクル単位アイランドの生成R

To Register ブロッ クはこのブロッ クに書き込みを行う ド メ インに配置し、 From Register ブロ ッ ク

はこのブロ ッ クから読み出しを行う ド メ インに配置します。 同じ名前のブロ ッ クは リ ンク されま

す。 To Register ブロ ッ クは、 そのド メ インから同時に読み出すこ とができます。 レジスタの幅は可

変にするこ とができ、フ リ ップフロ ップと して合成されます。 1 ビッ トの To Register/From Registerペアは、 1 つのフ リ ップフロ ップと して合成されます。

メモ : この方法でド メ インを切り替えるのは安全でない可能性があ り、 複数ビッ トの転送にはメ タ

ステーブル状態を削減する同期化フ リ ップフロ ップおよびセマフォを使用する必要があ り ます。 この手法は、 ハードウェアで犯しやすいエラーをよ く理解した上で使用してください。

複数クロック デザインのネッ ト リス ト生成

各クロ ッ ク ド メ インは、 System Generator デザイン内の 1 つのサブシステムとする必要があ り ま

す。 次の図に、2 つのド メ インを含むデザインを示します。 上位ブロッ クには、Multiple SubsystemGenerator ブロ ッ ク と、 それぞれク ロ ッ ク ド メ インを構成する 2 つのサブシステムが含まれます。

各サブシステムには、 その ク ロ ッ ク ド メ イ ンのシステム ク ロ ッ ク周期を設定する SystemGenerator トークンが含まれます。

次の図は、 サブシステムにド メ インを切り替えるブロ ッ クを配置する概念を示します。 複数のド メ

インを含むデザインのネッ ト リ ス ト を生成する と、 System Generator で次の処理が実行されます。

• To FIFO ブロ ッ クを除外したド メ イン 0 (左側) の HDL ファ イルを作成し、 ネッ ト リ スタを呼

び出してブラ ッ ク ボッ クス ネッ ト リ ス ト (NGC ファ イル) を生成します。

• From FIFO ブロ ッ クを除外したド メ イン 1 (右側) の HDL ファ イルを作成し、ネッ ト リ スタを

呼び出してブラ ッ ク ボッ クス ネッ ト リ ス ト (NGC ファ イル) を生成します。

• CORE Generator を起動し、 FIFO ブロ ッ ク (中央) のコアを生成します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 117リ リース 10.1.2 2008 年 6 月

Page 118: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

• これら 3 つのブロ ッ ク コンポーネン ト をインスタンシエートする 上位 HDL ラ ッパを作成

します。

手順の例 この例では、 デザイン階層を使用して System Generator デザインを複数の非同期クロ ッ ク アイラ

ン ドに分割する方法、 Shared Memory ブロ ッ ク をアイ ラン ド間の通信に使用する方法、 および

Multiple Subsystem Generator ブロ ッ クを使用して複数クロ ッ ク デザインのネッ ト リ ス ト を生成す

る方法を示します。

1. MATLAB ウ ィンド ウで、 次のディ レク ト リに移動します。

<path_to_sysgen>\examples\multiple_clocks\

2. two_async_clks フォルダにある two_async_clks.mdl を開き、 一時的なディ レク ト リに保存し

ます。

こ の例ではサブシステム階層を使用してデザインを 2 つの同期ク ロ ッ ク ド メ イ ン (A と B) に分

割し ています。 こ れら のク ロ ッ ク ド メ イ ンはそれぞれ 1 つのク ロ ッ ク に同期し ていますが、 ド

メ イ ン同士は非同期です。 デザイ ンには ss_clk_domainA およ び ss_clk_domainB と いう 2 つのサブシステムがあり 、 それぞれク ロ ッ ク ド メ イ ン (A と B) に関連するロ ジッ ク が含まれてい

ま す。 ss_clk_domainA サブシス テムに含ま れる ブロ ッ ク はク ロ ッ ク ド メ イ ン A で動作し 、

ss_clk_domainB サブシステムに含まれるブロ ッ ク はク ロ ッ ク ド メ イ ン B で動作し ます。

これら 2 つの非同期サブシステムは、Shared Memory ブロ ッ クのペアを使用してインプ リ メン ト さ

れた共有 メ モ リ イ ン ターフ ェ イ ス を介し て通信し ます。 Shared Memory ブロ ッ ク の 1 つは

ss_clk_domainA 内に、 も う 1 つは ss_clk_domainB 内に配置されています。 この 2 つのブロ ッ ク

には、 bram_iface とい う同じ名前が付けられています。 このよ うにするこ とで、 シ ミ ュレーシ ョ ン

中に両方の Shared Memory ブロ ッ クで同じアドレス空間にアクセスできます。 ダイアグラムでは、

2 つのブロ ッ クの間に物理的な接続は示されていません。 これは、 2 つの Shared Memory ブロ ッ ク

の接続が、 同じオブジェク ト名を指定するこ とによ り、 アドレス空間を共有するよ うに暗示的に定

義されているからです。 2 つのサブシステムがワイヤで接続され、 ハード ウェアに変換される と、 2つの Shared Memory ブロ ッ クはサブシステムから移動され、 1 つのブロ ッ ク RAM に統合されま

す。 詳細は、 Multiple Subsystem Generatorを参照して ください。

同期アイランドは、 異なる入力ソースをサンプリ ングします。 サブシステム ss_clk_domainA では

sinusoid 入力がサンプリ ングされ、ss_clk_domainB ではのこぎり波がサンプリ ングされます。 各サ

ブシステムは、 サンプルをも う 1 方の共有メモ リに書き込みます。 メモ リがフルになる と、 も う 1方のメモ リからサンプルを読み出します。 デザインをシ ミ ュレーシ ョ ンする と、 モデルの動作を可

視化できます。

118 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 119: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

複数クロックのサイクル単位アイランドの生成R

3. Simulink モデルのツールバーで [シ ミ ュレーシ ョ ンの開始] をク リ ッ ク し、 デザインのシ ミ ュ

レーシ ョ ンを実行します。

4. Scope ブロ ッ クを開いて、 出力信号を表示します。

Scope ダイアログ ボッ クスには、2 つのクロ ッ ク clk_A および clk_B が表示されます。デフォルト

の尺度では、 2 つのクロ ッ クを区別するのは困難です。 拡大表示して、 詳細が確認できるよ うにし

ます。

clk_A と clk_B は、周期が異なり、位相が揃っていません。 System Generator では 1 つのデザイン

に 1 つのクロ ッ ク ソースが使用される と説明しましたが、 こ こでは 2 つの異なるク ロ ッ クが使用さ

れています。

これは、 デザインが階層構造になっているからです。 すべてのブロ ッ クは、 サブシステムを使用し

た階層レベルに配置されています。 上位に System Generator トークンが含まれていないため、各

サブシステムは完全に個別の System Generator デザインである と考える こ とができます。 このモ

デルでは、 ss_clk_domainA と ss_clk_domainB サブシステムに異なる Simulink システム周期を設

定して、2 つのクロ ッ ク ド メ インを定義しています。 サブシステムを異なる System Generator デザ

インと して扱っているため、これが可能です。 ss_clk_domainA と ss_clk_domainB サブシステム内

のクロ ッ ク プローブは、 それぞれの Simulink システム周期を使用して出力が決定されるので、 異

なるシステム周期によ り異なるシステム ク ロ ッ クが得られます。

こ こで、 ss_clk_domainA および ss_clk_domainB サブシステムの System Generator トークンで定

義されているク ロ ッ クを確認します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 119リ リース 10.1.2 2008 年 6 月

Page 120: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

5. ss_clk_domainA および ss_clk_domainB サブシステムに含まれる System Generator トークン

のパラ メータ ダイアログ ボッ クスを開きます。

ss_clk_domainA サブシステムの FPGA ク ロ ッ ク周期は 10ns (周波数 100MHz) です。 モデル内の

サンプリ ング周期の値を単純にするため、10ns クロ ッ クは Simulink システム周期の値 2s に正規化

されています。 ss_clk_domainB サブシステムの FPGA ク ロ ッ ク周期は 15ns (周波数 66.7MHz) です。 このク ロ ッ ク周期を正規化する と、 Simulink システム周期 3s になり ます。

この例の 2 つのサブシステムでは複数の同期した System Generator ド メ インをインプ リ メ ン トす

るので、 Multiple Subsystem Generator ブロ ッ クを使用してサブシステムを接続し、 2 つのクロ ッ

ク ポート を持つ 1 つの HDL 上位コンポーネン ト を作成します。 Multiple Subsystem Generatorブロ ッ クがデザインをハードウェアに変換する際、 各サブシステム対してそれぞれ NGC ネッ ト リ

ス ト ファ イルが生成されます。 サブシステム ネッ ト リ ス ト ファ イルをブラ ッ ク ボッ クス と してイ

ンスタンシエートする 上位 VHDL コンポーネン ト または Verilog モジュールも生成し、共有メモ

リ コアをク ロ ッ ク ド メ イン ブリ ッジと して使用して 2 つを接続します。

Multiple Subsystem Generator ブロ ッ クを使用して、ss_clk_domainA および ss_clk_domainB サブ

システムのネッ ト リ ス ト を生成します。

6. two_async_clks モデルの 上位に含まれている Multiple Subsystem Generator ブロ ッ クをダ

ブルク リ ッ ク して、 [Multiple Subsystem Generator] ダイアログ ボッ クスを開きます。

7. [Target Directory] でターゲッ ト ディ レク ト リ を指定します。 デフォルトのディ レク ト リは、

netlist です。

120 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 121: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

複数クロックのサイクル単位アイランドの生成R

8. [Generate] ボタンをク リ ッ ク します。 [Part]、 [Synthesis Tool]、 [Hardware DescriptionLanguage] は、 そのままにします。

Multiple Subsystem Generator の実行が終了する と、 生成が完了したこ とを示すダイアログ ボッ ク

スが表示されます。 生成された結果を確認します。

9. cd コマンドを使用してデザインのターゲッ ト ディ レク ト リ netlist に移動します。

このディ レク ト リには、 2 つの NGC ファ イル ss_clk_domaina_cw.ngc と ss_clk_domainb_cw.ngcがあ り ます。 これらのファ イルは、 それぞれ ss_clk_domainA および ss_clk_domainB サブシステ

ムのネッ ト リ ス トおよび制約情報を含みます。 これらの NGC ファ イルには、 そのサブシステムに

関連する ク ロ ッ ク ラ ッパ レイヤ ロジッ クが含まれています。 マルチレート デザインに必要なク

ロ ッ ク イネーブル ロジッ クが含まれているこ とを確認する必要があ り ます。 デザインのク ロ ッ ク

ラ ッパ レイヤを使用するこ とによ り、 対応するク ロ ッ ク ド ラ イバ コンポーネン トが自動的にネッ

ト リ ス トに含まれます。

このディ レク ト リには、dual_port_block_memory_virtex2_6_1_ef64ec122427b7be.edn という名前

のデュアル ポート コアのネッ ト リ ス ト ファ イルも含まれます。 このコアは、 元のデザインで使用

されている Shared Memory ブロ ッ クのハードウェア インプ リ メンテーシ ョ ンです。 このメモ リの

幅と ワード数は、 Shared Memory ブロ ッ クの設定値に基づきます。

こ こで、 Multiple Subsystem Generator で生成された 上位 HDL コンポーネン ト を確認します。

10. テキス ト エディ タで two_async_clks.vhd ファ イルを開きます。

このファ イルでは、 two_async_clks モデルの 上位 HDL が定義されています。

entity two_async_clks is port ( din_a: in std_logic_vector(7 downto 0); din_b: in std_logic_vector(7 downto 0); ss_clk_domaina_cw_ce: in std_logic := '1'; ss_clk_domaina_cw_clk: in std_logic; ss_clk_domainb_cw_ce: in std_logic := '1'; ss_clk_domainb_cw_clk: in std_logic; dout_a: out std_logic_vector(7 downto 0); dout_b: out std_logic_vector(7 downto 0) );

end two_async_clks;

System Generator for DSP ユーザー ガイド japan.xilinx.com 121リ リース 10.1.2 2008 年 6 月

Page 122: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ポート インターフェイスに関して、 特出すべき こ とがい くつかあ り ます。 まず、 2 つのク ロ ッ ク

ポートがあ り ます。 これらのクロ ッ ク ポートは、 サブシステム名に基づいて名前が付けられており

(ss_clk_domaina など)、 対応するサブシステム NGC ネッ ト リ ス ト ファ イルに接続されています。

また、各サブシステムの 上位ポート (din_a、 dout_a など) がポート インターフェイスに含まれて

います。

Multiple Subsystem Generator は、複数のクロ ッ ク ソースを生成する回路 (DCM など) は生成しま

せん。 上位 HDL を変更してク ロ ッ ク回路を含めるか、 上位 HDL をコンポーネン ト と してク

ロ ッ ク回路を含む別のラ ッパにインスタンシエート します。

上位ラッパの作成

複数クロ ッ ク System Generator デザインの 上位ラ ッパを作成する場合は、 低でも次のタスクを

実行する必要があ り ます。

• System Generator 上位コンポーネン ト をその他のラ ッパ ロジッ ク (DCM など) と共にイン

スタンシエート します。

• System Generator コンポーネン ト をその他のロジッ クに接続します。

• System Generator コンポーネン トの 上位ポート マップの代わり となる新しい 上位ポート

マップを作成します。

次に、 ク ロ ッ ク回路をインスタンシエートする 上位 HDL の例を示します。 この例では、 前のセ

ク シ ョ ンで Multiple Subsystem Generator ブロ ッ ク で生成し た出力を使用し ます。 SystemGenerator デザインは two_async_clks、 上位 HDL は top_wrapper です (VHDL 合成の場合)。

ク ロ ッ ク ラ インおよびクロ ッ ク イネーブルは推論されるので、 ク ロ ッ ク と ク ロ ッ ク イネーブルの

名前はそのク ロ ッ クが推論されたサブシステムの名前に接頭辞 (_clk と _ce) を付けたものになっ

ています。 dout_a などその他のポート名は、 System Generator デザインの Gateway ブロ ッ クで指

定された名前が使用されます。

次に、エンティティ two_async_clks をインスタンシエートする VHDL 上位ラ ッパの例を示しま

す (明確にするため削除されている部分もあ り )。 このラ ッパでは、 DCM コンポーネン ト を使用し

て System Generator デザインに必要な 2 つのクロ ッ クを生成しています。

----------------------------------------------------------------------------- -- top_wrapper.vhd -- Example Top Level Wrapper -- -- This is an example top-level wrapper for instantiating a System Generator -- design along with a DCM. In this example, the DCM connects the two clock -- inputs of the System Generator block ('two_async_clks') to two buffered -- outputs of the DCM, namely, CLK0 and CLKFX. CLK0 is the same frequency -- and phase as the input clock, and CLKFX is configured to be twice the -- frequency of the input clock. ------------------------------------------------------------------------------- library IEEE; library unisim; use IEEE.std_logic_1164.all; use unisim.vcomponents.all; entity top_wrapper is

122 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 123: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

複数クロックのサイクル単位アイランドの生成R

port ( clk : in std_logic; din_a : in std_logic_vector(7 downto 0); din_b : in std_logic_vector(7 downto 0); dout_a : out std_logic_vector(7 downto 0); dout_b : out std_logic_vector(7 downto 0)

); end top_wrapper;

architecture structural of top_wrapper is -------------------------------------- -- SysGen Model Component Declaration -------------------------------------- component two_async_clks

port ( din_a: in std_logic_vector(7 downto 0); din_b: in std_logic_vector(7 downto 0); ss_clk_domaina_cw_ce: in std_logic := '1'; ss_clk_domaina_cw_clk: in std_logic; ss_clk_domainb_cw_ce: in std_logic := '1'; ss_clk_domainb_cw_clk: in std_logic; dout_a: out std_logic_vector(7 downto 0); dout_b: out std_logic_vector(7 downto 0) );

end component; component bufg

port(i: in std_logic; o: out std_logic);

end component; -------------------------------------- -- DCM Component Declaration -------------------------------------- component dcm

-- synopsys translate_off generic (clkout_phase_shift : string := "fixed";

dll_frequency_mode : string := "low"; duty_cycle_correction : boolean := true; clkdv_divide : real := 3; clkfx_multiply : integer := 2; clkfx_divide : integer := 1);

-- synopsys translate_on port (clkin : in std_logic;

clkfb : in std_logic; dssen : in std_logic; psincdec : in std_logic; psen : in std_logic; psclk : in std_logic; rst : in std_logic; clk0 : out std_logic; clk90 : out std_logic; clk180 : out std_logic; clk270 : out std_logic; clk2x : out std_logic; clk2x180 : out std_logic; clkdv : out std_logic; clkfx : out std_logic; clkfx180 : out std_logic; locked : out std_logic; psdone : out std_logic;

System Generator for DSP ユーザー ガイド japan.xilinx.com 123リ リース 10.1.2 2008 年 6 月

Page 124: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

status : out std_ulogic_vector(7 downto 0)); end component; -------------------------------------- -- DCM Attributes -------------------------------------- attribute dll_frequency_mode : string; attribute duty_cycle_correction : string; attribute startup_wait : string; attribute clkdv_divide : string; attribute clkfx_multiply : string; attribute clkfx_divide : string; attribute clkin_period : string;

attribute duty_cycle_correction of dcm0 : label is "true"; attribute startup_wait of dcm0 : label is "false"; attribute dll_frequency_mode of dcm0 : label is "low"; attribute clkdv_divide of dcm0 : label is "3"; attribute clkfx_multiply of dcm0 : label is "2"; attribute clkfx_divide of dcm0 : label is "1"; attribute clkin_period of dcm0 : label is "10";

signal clk0unbuf : std_logic; signal clk0buf : std_logic; signal clkfxbuf : std_logic; signal clk2xunbuf : std_logic; signal clkfxunbuf : std_logic; signal clkdvunbuf : std_logic; signal clkdvbuf : std_logic; signal ff1,ff2,ff3,ff4 : std_logic; signal dcm_rst : std_logic; signal intlock : std_logic;

------------------------------------------------------------------------------- -- The top level instantiates the SysGen design, a DCM, and two BUFGs. -- The DCM generates two clocks of different frequencies. -- These two clocks are used to drive the two different clock domains -- in the SysGen block. ------------------------------------------------------------------------------- begin

dcm0: dcm -- synopsys translate_off generic map (dll_frequency_mode => frequency_mode,

clkdv_divide => clkdv_divide_generic, clkfx_multiply => clkfx_multiply_generic, clkfx_divide => clkfx_divide_generic)

-- synopsys translate_on port map (clkin => clk,

clkfb => clk0buf, dssen => '0', psincdec => '0', psen => '0', psclk => '0', rst => dcm_rst, clk0 => clk0unbuf, clk2x => clk2xunbuf, clkfx => clkfxunbuf, clkdv => clkdvunbuf,

124 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 125: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ChipScope Pro Analyzer を使用したリアルタイム ハードウェア デバッグR

locked => intlock); bufg_clk0: bufg port map (i => clk0unbuf,

o => clk0buf); bufg_clkfx: bufg port map (i => clkfxunbuf,

o => clkfxbuf);

-------------------------------------------------------------------- -- This is the DCM reset. It is a four-cycle shift register used to -- hold the DCM in reset for a few cycles after programming. --------------------------------------------------------------------flop1: FDS port map (D => '0', C => clk, Q => ff1, S => '0'); flop2: FD port map (D => ff1, C => clk, Q => ff2); flop3: FD port map (D => ff2, C => clk, Q => ff3); flop4: FD port map (D => ff3, C => clk, Q => ff4); dcm_rst <= ff2 or ff3 or ff4;

------------------------------------------------------------ -- SysGen Component Port Mapping -- One clock input is being connected to clk0 of the DCM, -- and the other clock is being connected to clkfx. ------------------------------------------------------------ two_async_clks: two_async_clks port map (

din_a => din_a, din_b => din_b, ss_clk_domaina_cw_ce => '1', ss_clk_domaina_cw_clk => clk0buf, ss_clk_domainb_cw_ce => '1', ss_clk_domainb_cw_clk => clkfxbuf, dout_b => dout_b);

end structural;

ChipScope Pro Analyzer を使用したリアルタイム ハード ウェア デバッ グ

ザイ リ ンクスのデバッグ ツールである ChipScope Pro を System Generator 内で接続し、 使用する

方法を示します。 System Generator に ChipScope Pro を統合したこのフローでは、システム スピー

ドで リ アルタイムのデバッグが可能です。 ChipScope ブロ ッ クを System Generator デザインに挿

入するこ とによ り、 FPGA のすべての内部信号およびノードをデバッグおよび検証できます。 この

セクシ ョ ンでは、 ChipScope Pro デバッ グ ツールについて説明した後、 ChipScope ブロ ッ ク を

Simulink モデルに追加し、 ハード ウェア プラ ッ ト フォームで実行して内部信号をプローブする方

法を手順を追って示します。

このセクシ ョ ンには、 次の内容が含まれます。

• ChipScope Pro の概要

• System Generator 内での ChipScope

• リ アルタイム デバッグ (ChipScope Pro Analyzer を使用)

• ChipScope から MATLAB ワークスペースへのデータのインポート

必要なソフ ト ウェア : 「ソフ ト ウェア要件」 を参照して ください。

必要なハード ウェア : JTAG ポー ト のあるハード ウェア デモ ボード (このチュー ト リ アルでは、

XtremeDSP 開発キッ ト を使用)

System Generator for DSP ユーザー ガイド japan.xilinx.com 125リ リース 10.1.2 2008 年 6 月

Page 126: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ChipScope Pro の概要

FPGA デバイスの集積度の向上に伴い、テス ト プローブをデバイスに取り付けるのは実用的ではな

くなり ました。 ChipScope Pro は、ロジッ ク解析ハードウェア コンポーネン ト をザイ リ ンクス デバ

イス内に統合します。 システム動作中にこれらのコンポーネン ト と通信し、ザイ リ ンクス FPGA 内のノードのロジッ ク解析を可能にします。 ChipScope では、大容量ト レース メモ リ、高速クロッ ク、

さまざまな ト リガ オプシ ョ ンが提供されます。 このツールを使用する と、大きなロジッ ク スペース

を割いたり、 複雑な手法を探したり、 追加の I/O ピンを割り当てたりするこ となく、 FPGA 内の信

号の動作を簡単にキャプチャし、 表示できます。 データ サンプルは、 ユーザー定義のト リガ条件に

基づいてキャプチャされ、 内部ブロ ッ ク メモ リに保存されます。 制御信号およびデータ信号はすべ

て JTAG ポート を介して転送され、 I/O ピンを使用してデータをオフチップに駆動する必要はあ り

ません。

ChipScope Pro の詳細は、 次の Web サイ ト を参照して ください。

http://japan.xilinx.com/ise/optional_prod/cspro.htm

System Generator 内での ChipScopeこの例では、 Simulink モデルを変更して ChipScope ブロ ッ クを統合し、 デバッグ用にキャプチャ

し、 表示するデータを選択する方法を説明します。 次の手順に従います。

1. MATLAB ウ ィンド ウで、 <path_to_sysgen>\examples\chipscope ディ レク ト リに移動します。

このディ レク ト リには、 次のファイルが含まれています。

♦ chip.mdl : 作業モデル

♦ chip_soln.mdl : ChipScope ブロッ クを含む完成したモデル

♦ osc_clock_2v80.bit : XtremeDSP 開発キッ トの XC2V80 デバイスをプログラムするビッ

ト ス ト リーム。 このデバイスはクロ ッ ク制御に使用され、 適切な動作に必要です。

2. chip.mdl を開きます。 このモデルは、 8 ビッ ト カウンタで駆動される単純なサイン/コサイン

テーブルです。 sine 関数と cosine 関数が選択されており、両方の波形をプローブおよび表示で

きます。

3. 8 ビッ ト カウンタは、 モジュロ 255 をカウン ト します。 Slice ブロ ッ クで 上位ビッ ト を取り

出し、 XtremeDSP ボードの LED を駆動します。

126 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 127: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ChipScope Pro Analyzer を使用したリアルタイム ハードウェア デバッグR

4. Simulink モデルのツールバーで [シ ミ ュレーシ ョ ンの開始] をク リ ッ ク し、モデルのシ ミ ュ

レーシ ョ ンを開始します。 モデルを変更していないこの時点では、 次の波形が表示されます。

♦ 1 番上の波形は、 8 ビッ ト カウンタの 上位ビッ ト を示します。 カウンタ出力が 128 ~255 になる と、 MSB が 1 になり ます。

♦ 2 番目の波形は、 カウンタの完全な出力です。

♦ 3 番目の波形は、 サイン波を示します。 開始点を拡大する と、 SineCosine ブロ ッ クにイン

プ リ メン ト されたパイプラインによ り 2 クロ ッ ク サイクルの遅延があるのがわかり ます。

♦ 4 番目の波形は、 コサイン波を示します。 この出力にも、 サイン波と同じ 2 ク ロ ッ ク サイ

クルの遅延があ り ます。

5. ChipScope を Simulink モデルに組み込みます。 ChipScope ブロ ッ クは、 Simulink LibraryBrowser の [Xilinx Blockset] → [Tools] にあ り ます。 ChipScope ブロ ッ クを chip Simulink モデルにド ラ ッグします。

6. ChipScope ブロ ッ クをダブルク リ ッ ク し、 次のパラ メータを設定します。

♦ [Number of trigger ports] : 複数のト リ ガ ポート を使用する と、検出されるイベン トの範囲

が拡大し、保存する必要のある値の数を削減できます。 16 個までの ト リガ ポート を選択で

きます。 この例で使用する ト リガ ポートは 1 個のみです。

♦ [Display settings for trigger port] : 各ト リガ ポートに対し、 一致ユニッ トの数と、 一致タ

イプを設定する必要があ り ます。 このオプシ ョ ンでは、 表示オプシ ョ ンを設定する ト リ ガ

ポー ト を ド ロ ップダウン リ ス ト から指定します。 N 個のポー ト に対し、 ト リ ガ ポー ト

0 ~ N-1 の ト リ ガ ポートの表示オプシ ョ ンが表示されます。 この例では、 Trig0 とい う名

前のト リガ ポートが 1 個使用されるので、 このオプシ ョ ンは 0 に設定します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 127リ リース 10.1.2 2008 年 6 月

Page 128: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

♦ [Number of match units] : ト リ ガ ポート ごとに複数の一致ユニッ ト を使用する と、イベン

ト検出の柔軟性が向上します。 ト リ ガ イベン ト をテス トするため、 1 ~ 4 つの一致ユニッ

ト を使用できます。 この例では、 1 つの条件 (8 ビッ ト カウンタの値) のみをチェッ クする

ので、 このオプシ ョ ンは 1 に設定します。 ト リ ガ値は、 ChipScope Pro Analyzer の実行時

に設定します。

♦ [Match type] : このオプシ ョ ンは、 次の 6 つのいずれかに設定できます。

1. [Basic] : = または <> 比較を実行します。

2. [Basic with edges] : [Basic] の操作に加え、 High から Low、 Low から High への遷移

も検出します。

3. [Extended] : = または <>、 >、 <、 <=、 >= 比較を実行します。

4. [Extended with edges] : [Extended] の操作に加え、High から Low、Low から High への遷移も検出します。

5. [Rnage] : =、 <>、 >、 >=、 <、 <=、 範囲内、 範囲外比較を実行します。

6. [Range with edges] : [Range] の操作に加え、 High から Low、 Low から High への遷

移も検出します。

この例では、 [Basic with edges] に設定します。

♦ [Number of data ports] : サンプルごとに 256 ビッ ト までをキャプチャできます。 すべての

ポー ト で使用されるビ ッ ト 数の合計を 256 ビ ッ ト 以下にする必要があ り ます。 SystemGenerator ではデータ幅が自動的に伝搬されるので、データ ポートの数のみを指定します。

この例では、 サイン波と コサイン波を表示するので、 2 に設定します。

♦ [Depth of capture buffer] : このオプショ ンは、2 のべき乗で設定します。Virtex-II、Virtex-IIPro、および Spartan-3 デバイス ファ ミ リでは 16384 までの値、Virtex、Virtex-E、Spartan-II、 および Spartan-IIE デバイス ファ ミ リ では 4096 までの値を設定できます。 この例で

は、 512 に設定します。

128 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 129: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ChipScope Pro Analyzer を使用したリアルタイム ハードウェア デバッグR

これらのオプシ ョ ンを設定する と、 ChipScope ブロ ッ クのパラ メータ ダイアログ ボッ クスは

次のよ うになり ます。

7. ChipScope ブロ ッ クの接続

ChipScope を ト リガするのに使用する信号は、カウンタの出力です。 Sine/Cosine ブロ ッ クから

のサイン波と コサイン波の 2 つのバスをプローブします。 次の図のよ うに、信号を接続します。

ChipScope ブロ ッ ク上のポート名は、 ブロ ッ クに接続した信号の名前 (Sin、 Cos など) になり

ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 129リ リース 10.1.2 2008 年 6 月

Page 130: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

8. ロケーシ ョ ン制約

デザインをインプ リ メン ト し、 シ ミ ュレーシ ョ ンしたら、ハード ウェア ターゲッ トに接続する

準備をします。 デザインはどのハード ウェア プラ ッ ト フォームでも動作しますが、 こ こでは

XtremeDSP 開発キッ トに接続する場合の手順を説明します。

このデザインでは、 LED ピンと ク ロ ッ ク ピンを固定する必要があ り ます。

♦ LED ピン : Gateway Out1 ブロ ッ クをダブルク リ ッ ク し、 [Specify IOB location constraints] をオンにして、[IOB pad locations] に 「{'Y11'}」 (一重引用符が必要) と入力し

ます。

♦ ク ロ ッ ク ピン : System Generator トークンをダブルク リ ッ ク し、 [FPGA clock period] を25ns に、 [Clock pin location] を Y13 に設定します。

別のボード を使用している場合は、 ピン ロケーショ ンはボード に応じて変更する必要があり

ます。

9. System Generator トークンの設定

ビッ ト ス ト リームを生成する前に、 ターゲッ ト デバイス と コンパイル ターゲッ ト を設定する

必要があ り ます。

♦ System Generator トークンをダブルク リ ッ ク し、 [Part] をボード上にあるデバイスに応じ

て [Virtex2 xc2v2000-4fg676] または [Virtex2 xc2v3000-4fg676] に設定します。

♦ [Compilation] を [Bitstream] に設定します。

130 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 131: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ChipScope Pro Analyzer を使用したリアルタイム ハードウェア デバッグR

♦ System Generator トークンのパラ メータが、次の図のよ うに設定されているこ とを確認し

ます。

10. ビッ ト ス ト リームの生成

System Generator は、 CORE Generator および ChipScope Core Generator を自動的に呼び出

し、 ネッ ト リ ス トおよびコアを生成します。 [Compilation] に [Bitstream] を設定している場合

は、 ビッ ト ス ト リームも生成されます。

♦ System Generator トークンのパラ メータ ダイアログ ボッ クスの下部にある [Generate] ボタンをク リ ッ ク して、 ビッ ト ス ト リームを生成します。

♦ CORE Generator が呼び出され、 Sine/Cosine ブロ ッ ク と Counter ブロ ッ クのネッ ト リ ス

ト が生成されます。 ChipScope Core Generator が呼び出され、 JTAG ポー ト を介し て

ChipScope Pro と通信する ILA (Integrated Logic Analyzer) コアと ICON コアが生成され

ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 131リ リース 10.1.2 2008 年 6 月

Page 132: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

リアルタイム デバッグ

次に、 XtremeDSP 開発キッ ト上でデザインを実行し、 ChipScope Pro Analyzer でプローブ出力を

表示します。

1. パラレル ケーブル IV を、 XtremeDSP 開発キッ トの Genral JTAG (J13) ヘッダに接続します。

VCC ピンは、ボード上辺に近い、 PCI コネク タから も離れたと ころにあるピンです。 電源を

供給するため、 VCC ピンを USB ポートに接続する必要があ り ます。

2. FUSE を起動してボードに電源を入れます。

XtremeDSP キッ ト では、FUSE ソ フト ウェアを使用してボード の電源を入れる必要があり ます。

♦ [スタート ] → [プログラム] → [FUSE] → [Software] → [FUSE Probe] をク リ ッ ク します。

♦ FUSE で、 [Card Control] → [Open Card] をク リ ッ ク します。 [Interface] に [USB] を選択

し、 [Locate Card] をク リ ッ ク します。 BenOne カードが検索され、 FUSE ウ ィンド ウの左

上に表示されます。

132 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 133: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ChipScope Pro Analyzer を使用したリアルタイム ハードウェア デバッグR

この手順で問題があった場合は、 『XtremeDSP Development Kit Pro User Guide』 を参照して

ください。

3. ChipScope Pro Analyzer を開きます (使用するバージョ ンの詳細は「ソフ ト ウェア要件」を参照)。

♦ アイコンをク リ ッ クするか、 [JTAG Chain] → [Xilinx Parallel Cable] をク リ ッ ク して

[Xilinx Parallel IV Cable] を選択し、 JTAG チェーンを開きます。

XtremeDSP キッ トで使用可能な Virtex-II デバイスを含むインデッ クスは、XC2V2000 または

XC2V3000 は index 3、 XC2V80 は index 4 です。

4. FPGA をコンフ ィギュレーシ ョ ンします。

♦ [New Project] ウ ィンド ウで [Device 3] を右ク リ ッ ク し、 [Congigure] → [Device 3] をク

リ ッ ク します。 こ こで、前のセクシ ョ ンの手順 10 で生成したビッ ト ス ト リームを指定する

必要があ り ます。 [Select New File] を ク リ ッ ク し、 プロ ジェ ク ト デ ィ レ ク ト リ

<path_to_sysgen>\examples\chipscope\netlist\chip_cw.bit を選択し ます。 コ ンフ ィ ギ ュ

レーシ ョ ン後、 ChipScope Analyzer の下部に JTAG チェーンに ChipScope コアが見つ

かったこ とが示されます。

♦ 同様に、Device 4 を選択して osc_clock_2v80.bit ファ イルでコンフ ィギュレーシ ョ ンしま

す。 この 2 番目のビッ ト ス ト リームは、 ボード上のク ロ ッ ク ド ラ イバ FPGA をプログラ

ムします。

5. ChipScope プロジェク ト ファ イルをインポート します。

System Generator では、 データ信号をバスにグループ化するために ChipScope のプロジェク

ト ファ イルを作成します。 バスは各データ ポートに対して作成され、 Simulink 環境でと同様

に (符号および精度) 表示できるよ うにしています。

[File] → [Import] → [Select New File] をク リ ッ ク し、 <path_to_sysgen>\examples\chipscope\netlist\temp\chip_chipscope.cdc を選択して、 このプロジェク ト ファ イルを読み込みます。

6. サイン波を表示します。

[New Project] ウ ィンド ウの [Device 3] → [Unit 0 ILA] の下にある [Bus Plot] をダブルク リ ッ

ク します。

[Bus Plot] ウ ィンド ウが開きます。 [Bus Selection] で Cos および Sin を選択し、 ボタンをク

リ ッ ク します。 ト リ ガ条件を設定していないので、 値はすぐにキャプチャされます。 サイン波

と コサイン波が次のよ うに表示されます。 波形を点、 ライン、 またはその両方で表すよ う表示

オプシ ョ ンを選択できます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 133リ リース 10.1.2 2008 年 6 月

Page 134: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

7. ト リ ガを設定します。

[Trigger Setup] ウ ィンド ウで、XXXX-XXXX をすべて 0000-0000 に変更します。カウンタが

0 になる と、 ChipScope が値をキャプチャし始めます。 バッファを 512 に設定しているので、

ChipScope で 512 個のデータ ポイン ト を表示できます。

ボタンをク リ ッ ク して、 データを再度キャプチャします。

SineCos テーブルを通過する 2 ク ロ ッ クのレイテンシがあるので、サイン波の始めに 2 ク ロ ッ

ク サイ クルの遅延があ り ます。 ト リ ガ値を 0000-0010 (10 進数 2) に変更し、 データをキャプ

チャし直します。 これで、 サイン波と コサイン波がそれぞれ 0 と 1 で開始します。

134 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 135: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ChipScope Pro Analyzer を使用したリアルタイム ハードウェア デバッグR

ChipScope から MATLAB ワークスペースへのデータのインポート

ChipScope でキャプチャしたデータを MATLAB ワークスペースにインポート します。

1. ChipScope Pro Analyzer からデータをエクスポート します。

♦ ChipScope Pro Analyzer で [File] → [Export] をク リ ッ ク します。 [Format] で [ASCII] をオンにし、 [Signals to Export] で [Bus Plot Buses] を選択します。 [Export] をク リ ッ ク し、

ファ イルを sinecos.prn という名前で保存します。

2. MATLAB を起動し、 sinecos.prn を保存したディ レク ト リに移動します。

♦ 「xlLoadChipScopeData('sinecos.prn');」 と入力します。 このコマンドを実行する と、 PRNファ イルからのデータが MATLAB ワーク スペースに読み込まれます。 ワーク スペース

に、 Sin および Cos という 2 つの新しいアレイが表示されます。

3. これらの値を、 MATLAB の plot 関数を使用して波形と して表示できます。

♦ 「plot(1:512, Sin, 1:512, Cos)」 と入力する と、 次の曲線が生成されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 135リ リース 10.1.2 2008 年 6 月

Page 136: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

136 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 137: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

R

第 2 章

ハードウェア/ソフ トウェア協調設計

この章では、System Generator を使用したソフト ウェアと ハード ウェアの設計について説明します。

System Generator でのハードウェア/ソフ トウェア協調設計

System Generator では、 Black Box ブロ ッ ク、 PicoBlaze Microcontroller ブロ ッ ク、 または EDKProcessor ブロ ッ クをインポートするこ とによ り、 プロセッサをモデルに含めるこ とができます。

Black Box ブロック

Black Box ブロ ッ クを使用する と、 も柔軟な設計が可能ですが、 デザインの複雑性が増します。

この方法では、 どんなプロセッサ HDL でも System Generator デザインに組み込むこ とができま

す。 プロセッサのすべてのポー ト とバスを System Generator のブロ ッ ク図に追加し、 その他の

System Generator ブロ ッ ク と接続します。 ソフ ト ウェアのコンパイルの問題も、 完全に制御できま

す。 詳細は、 「HDL モジュールのインポート 」 を参照して ください。

PicoBlaze Microcontroller ブロック

PicoBlaze Microcontroller ブロ ッ クを使用する と、柔軟性は低くな り ますが、使用は も簡単です。

PicoBlaze Microcontroller ブロ ッ クは、 PicoBlaze マクロを使用して 8 ビッ トのエンベデッ ド マイ

ク ロコン ト ローラをインプ リ メ ン ト し、 System Generator への固定のインターフェイスを含みま

す。 通常は、 1024 X 8 ビッ ト のブロ ッ ク ROM 1 つにプログラムを保存できます。 PicoBlaze は、

PicoBlaze アセンブリ言語を使用してプログラムできます。 このフローの詳細は、 「PicoBlaze マイ

ク ロコン ト ローラ アプリ ケーシ ョ ンの設計」 を参照して ください。

System Generator でのハードウェ

ア/ソフ ト ウェア協調設計

System Generator を使用したハード ウェア/ソフ ト ウェ

ア協調設計の概要を示します。

プロセッサのカスタム ロジッ クへ

の統合

プロセッサをカスタム ロジッ クに統合する方法を説明

します。

EDK サポート ザイ リ ンクス エンベデッ ド開発キッ トのサポートにつ

いて説明します。

エンベデッ ド プロセッサおよびマ

イク ロプロセッサを使用した設計

PicoBlaze および MicroBlaze を使用したデザインの設

計について説明します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 137リ リース 10.1.2 2008 年 6 月

Page 138: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

EDK Processor ブロック

EDK Processor ブロ ッ クは、Xilinx Platform Studio (XPS) で作成した MicroBlaze プロセッサへの

インターフェイスを提供します。 このブロ ッ クを使用する と、 System Generator の共有メモ リ ブロ ッ ク (From Register、 To Register、 From FIFO、 To FIFO、 Shared Memory ブロ ッ ク ) を自動生

成されたメモ リ マップ インターフェイスを介してプロセッサに接続できます。 接続したメモ リは、

MicroBlaze プロセッサで実行しているソフ ト ウェアで読み出しおよび書き込みできます。 このフ

ローの詳細は、 「プロセッサのカスタム ロジッ クへの統合」 を参照してください。

EDK Processor ブロ ッ クを使用する と、 Xilinx Platform Studio (XPS) および Base System Builderを使用して作成した EDK プロジェク トで指定した MicroBlaze をインポートできます。 また、EDKProcessor ブロ ッ クを含む System Generator デザインを EDK プロジェク トにエクスポートするこ

と も可能です。

エクスポート を実行する と PLB ベースまたは FSL ベースの pcore が作成され、 これを XPS プロ

ジェク トに追加して MicroBlaze または PowerPC と通信させるこ とができます。

プロセッサのカスタム ロジックへの統合

プロセッサをユーザー定義ロジッ ク と統合するのは、 通常かなり複雑です。 プロセッサとカスタム

ハードウェア間の通信は共有バスを介して行われ、通信される情報には、処理用データ、ハードウェ

アの状態を表すデータ、 処理モードに関連するデータなど、 異なるタイプのデータが含まれます。

これらのデータをプロセッサとカスタム ロジッ ク間でどのよ うに転送するかを計画するのは、時間

がかかり、 エラーの原因と もなるので、 自動化する と有益です。 接続だけではな く、 カスタム ロジッ ク との通信を実行するソフ ト ウェアを記述するのも簡単ではあ り ません。

EDK Processor ブロ ッ クを使用する と、これらの作業を自動的に実行できます。 このブロッ クでは、

プロセッサとカスタム ロジッ ク間のインターフェイスを共有メモ リで指定するこ とが推奨されま

す。 共有メモ リは、 名前で参照可能な格納場所と して使用され、 これによ り メモ リ マップと ソフ ト

ウェア ド ラ イバの生成が可能になり ます。

ブロ ッ クの使用方法については、EDK Processor ブロ ッ クに関する記述を参照して ください。 次に、

メモ リ マップと生成される ド ラ イバの機能を説明します。

メモ リ マップの作成 プロセッサに共有メモ リ を追加した場合に生成される

メモ リ マップについて説明します。

ハードウェアの生成 ハードウェア生成オプシ ョ ンについて説明します。

ハード ウェア協調シミ ュレーショ ン EDK Processor ブロ ッ クのハードウェア協調シ ミ ュ

レーシ ョ ン モデルの作成方法を説明します。

ソフ ト ウェア ド ラ イバの生成 ソフ ト ウェア ド ラ イバの作成方法を説明します。

EDK プロセッサのソフ ト ウェア

記述

System Generator で作成したハード ウェアを制御する

ソフ ト ウェアを記述するプロセスを説明します。

EDK プロセッサでの非同期のサ

ポート

プロセッサと System Generator デザインを異なるク

ロ ッ クで動作させるこ とができるよ うにする System Generator の機能についてインポート モードおよびエ

クスポート モードの両方で説明します。

138 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 139: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

プロセッサのカスタム ロジックへの統合R

メモリ マップの作成

上図の右下に、 System Generator モデルが示されています。 この System Generator モデルが、

MicroBlaze プロセッサに統合するカスタム ロジッ クです。 モデルの作成では、 ソフ ト ウェア アク

セスが必要な部分に共有メモ リ を使用します。 たとえば、 ハード ウェアのステータスはレジスタに

保存できますが、 この情報をプロセッサに認識させるには、 レジスタの代わりに名前の付いた共有

レジスタを使用します。 この共有レジスタに status とい う名前を付けるこ とによ り、 メモ リの内容

に名前を付けるこ とができ、 ソフ ト ウェア開発の際に有益です。

EDK Processor ブロッ クのパラ メータ ダイアログ ボッ クスでは、 プロセッサのメモリ マップに共

有メモ リ を追加できます (上図の左下)。 上図の上部は、 データ フローを示します。 共有メモリ をプ

ロセッサのメモリ マップに追加する と、対応する共有メモリが作成され、 EDK Processor ブロ ッ ク

用に生成される メモ リ マップに添付されます。 このメモ リ マップは、 バス アダプタを使用して

MicroBlaze プロセッサに接続されます。

ハードウェアを生成する と、各共有メモリのペアが 1 つの物理メモリ と してインプリ メン ト されま

す。 共有メモ リの各ク ラスのインプ リ メ ンテーシ ョ ンについては、 「ハード ウェア協調シ ミ ュレー

シ ョ ンの使用」 の章の 「共有メモリのサポート 」 を参照して ください。

System Generator for DSP ユーザー ガイド japan.xilinx.com 139リ リース 10.1.2 2008 年 6 月

Page 140: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

ハードウェアの生成

EDK Processor ブロ ッ クでは、 EDK pcore 生成 ([EDK pcore generation]) と HDL ネッ ト リ ス ト生

成 ([HDL netlisting]) の 2 つのモードがサポート されています。 次の図に、 これらのモードを示し

ます。 モードは、 EDK Processor ブロ ッ クのパラ メータ ダイアログ ボッ クスで選択できます。

EDK pcore 生成モード

ザイ リ ンクスのエンベデッ ド開発キッ ト (EDK) では、 作成したプロセッサにペリ フェラルを接続

できます。 これらのペリ フェラルは、 pcore と してま とめられます。 各 pcore には、ペリ フェラルの

ハードウェア記述、 ソフ ト ウェア ド ラ イバおよびバス接続を記述するファイル、ペリ フェラルに関

する情報が含まれます。

EDK pcore 生成モードに設定し、 System Generator トークンで EDK Export Tool を指定する と、

System Generator モデルから pcore が生成されます。 上図は、 pcore と して生成したモデルの一部

を示しています。 このモードに設定する と、 モデルに追加される MicroBlaze はプレースホルダで

ある と認識されます。 実際のインプ リ メ ンテーシ ョ ンは、 ペリ フェラルが EDK に追加されたと き

に EDK によ り供給されます。 pcore 自体は、 カスタム ロジッ ク、 生成されたメモリ マップ、 カス

タム ロジッ クへの仮想接続、 およびバス アダプタで構成されています。

HDL ネッ ト リス ト生成モード

HDL ネッ ト リ ス ト生成モードを選択する と、 EDK プロセッサを System Generator モデルに組み

込むこ とができます。 EDK Processor ブロ ッ クで HDL ネッ ト リ ス ト生成モードを設定するのは、

EDK プロジェク ト をブロ ッ クに供給する場合のみです。 HDL ネッ ト リ ス ト生成モードでは、 EDKプロジェク トで記述されたプロセッサを System Generator にブラ ッ ク ボッ クス と してインポート

します。 インポート された EDK プロジェク トには、 System Generator メモ リ マップをプロセッサ

に接続するのに必要なバス イ ン ターフ ェ イ ス も追加されます。 ネ ッ ト リ ス ト を生成する と、

MicroBlaze と メモ リ マップ ハードウェアがハードウェアに組み込まれます。

140 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 141: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

プロセッサのカスタム ロジックへの統合R

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

EDK Processor ブロ ッ クでは、ハードウェア協調シ ミ ュレーシ ョ ンによ り、ハード ウェア ベースの

シ ミ ュレーシ ョ ンがサポート されています。 ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クは、「ハー

ドウェア協調シ ミ ュレーシ ョ ンの使用」 に説明されている標準の協調シ ミ ュレーシ ョ ン フローで作

成できます。 違いは、 インポート した XPS プロジェク トの 上位ポートの処理のみです。

System Generator に XPS プロジェ ク ト をインポー トする と、 インポート ウ ィザードではハード

ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クを作成したと きにすべてのポートが適切に制約されている

と想定されます。 たとえば、 XPS システムの 上位エンティティに FPGA のパッ ドに接続されて

いるポートが含まれている場合、ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クをコンパイルする際

これらのポートは FPGA 上のパッ ドに接続されたまま とな り、ハードウェア協調シ ミ ュレーシ ョ ン

ブロ ッ クにポート と して含まれません。 同様に、 インポート した XPS システムの 上位ポートに

ビッ ト ス ト リーム フロー制約が設定されている場合、 この制約は保持されます。

パッ ドに接続されていない 上位ポート がある場合や、 ポート が制約されていない場合は、 EDKProcessor ブロ ッ クの [Advanced] タブにある [Processor Port Interface] 表を使用してポー ト が

System Generator で認識されるよ うにするこ とができます。

ソフ ト ウェアの記述およびコンパイルには EDK の XPS を使用できますが、 シ ミ ュレーシ ョ ンの前

に協調シ ミ ュレーシ ョ ン ブロ ッ クの [Software] タブで [Compile and update bitstream] ボタンをク

リ ッ ク して、 コンパイルした C コードをビッ ト ス ト リームに組み込む必要があ り ます。

ネッ ト ワーク ベースのハード ウェア協調シミ ュレーショ ンでサポート されているハード ウェア ボー

ド を使用すると 、 FPGA 上の JTAG ポート を XMD でのソフト ウェア デバッ グに使用できます。

ソフ トウェア ド ライバの生成

どちらの動作モードでも、 メモ リ マップを生成する と、 ソフ ト ウェア ド ラ イバ テンプレートが自

動的に作成されます。 ド ラ イバ テンプレートは、 EDK でソフ ト ウェア ラ イブラ リがコンパイルさ

れる際に生成されます。 これは、EDK から実行可能です。 ソフ ト ウェア ライブラ リがコンパイルさ

れる と、 ド ライバを参照できるよ うになり、 ド ライバの情報にもアクセスできます。

EDK Processor ブロ ッ ク を EDK pcore 生成モード にする と 、 ソ フ ト ウ ェ ア ド ラ イ バの生成は

pcore のイ ンスタンス名に依存します。 たと えば、 System Generator で作成した pcore の名前が

sysgen_fft_sm だと する と 、 こ れがペリ フェラ ル名になり ます。 EDK プロセッ サには複数のペリ

フェラ ルを追加できるので、 各イ ンスタンス名は固有のも のにする必要があり ます。 EDK では、

ペリ フ ェ ラ ル名に自動的に接尾番号が追加さ れま す。 1 つ目のペ リ フ ェ ラルを追加する と、

sysgen_fft_sm_0 という よ う な名前が付けられ、これがペリ フェラルのインスタンス名になり ます。

ペリ フェラルのインスタンス名は変更できます。 詳細は、 EDK XPS の資料を参照して ください。

EDK Processor ブロ ッ ク を HDL ネ ッ ト リ ス ト 生成モード にし、 EDK プロジェ ク ト を SystemGenerator モデルにインポートする と、 System Generator によ り特別なペリ フェラルが EDK プロ

ジェ ク ト に追加されます。 このペ リ フェ ラルは xlsg_iface とい う名前で、 MicroBlaze と SystemGenerator モデル間の接続を指定します。 このペリ フェラルは、1 つのインスタンスしか追加できま

せん。 EDK プロジェク トに関連付けるこ とのできる EDK Processor ブロ ッ クは 1 つのみです。

System Generator for DSP ユーザー ガイド japan.xilinx.com 141リ リース 10.1.2 2008 年 6 月

Page 142: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

EDK プロセッサのソフ トウェア記述

ペリ フェ ラルのソフ ト ウ ェア ド ラ イバおよびその情報は、 すべてのソフ ト ウ ェア ラ イブラ リ が

EDK でコンパイルされた後に生成されます。 コンパイル後、 EDK から ソフ ト ウェア ド ライバの情

報にアクセスできます。

上図は、 EDK XPS の GUI を示しています。 [System Assembly View] タブで System Generator ペリ フェラルを右ク リ ッ ク し、 [Driver] → [View API Documentation] をク リ ッ クする と、ペリ フェラ

ルの情報が表示されます。 このオプシ ョ ンがない場合は、 ド ラ イバをコンパイルする必要があ り ま

す。 ド ライバをコンパイルするには、XPS で [Software] → [Generate Libraries and BSPs] をク リ ッ

ク します。

ヘッダ ファ イルの情報、 ド ラ イバの呼び出し、 メモ リ マップ、 サンプル コードは、 生成された情

報を参照してください。

生成されたソフ ト ウェア ド ラ イバには、共有メモリにアクセスする 4 つの基本関数があ り ます。 次の表で、 <inst> はペリ フェラルのインスタンス名を表します。

int <inst>_Read (unsigned int memName, unsigned int addr, unsigned int* val);

int <inst>_ArrayRead (unsigned int memName, unsigned int startAddr, unsigned int transferLength, unsigned int** valBuf);

int <inst>_Write (unsigned int memName, unsigned int addr, unsigned int val);

int <inst>_ArrayWrite (unsigned int memName, unsigned int startAddr, unsigned int transferLength, const unsigned int* valBuf);

EDK プロセッサでの非同期のサポート

プロセッサでの非同期のサポートによ り、 プロセッサとプロセッサに接続されているハードウェア

アクセラレータに異なるク ロ ッ クを使用できます。 これによ り、ハード ウェア アクセラレータを外

部ペリ フェラルと接続する必要がある場合に、 速のクロ ッ ク レート または正しい動作に必要なク

ロ ッ ク レートで動作させるこ とができます。

142 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 143: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

プロセッサのカスタム ロジックへの統合R

こ の機能は、EDK Processor ブロッ ク のパラ メ ータ ダイアログ ボッ ク スの [Implementation] タブ

で [Dual Clock] をオンにすると イネーブルになり ます。 次の図は、 インポート およびエク スポー

ト フロ ーでク ロ ッ ク がどのよ う に接続さ れる かを示し ま す。 エク ス ポート フロ ーには、 MB(MicroBlaze) ブロッ ク はあり ません。 基本的に、 System Generator のカスタム ロジッ ク デザイ

ンは clk ク ロ ッ ク で駆動さ れ、 プロ セッ サ シス テム は xps_clk ク ロ ッ ク で駆動さ れま す。

MicroBlaze プロセッ サ システムの PLB バスを駆動するク ロッ ク ソースが抽出さ れ、バス アダプ

タ 、メ モリ マッ プ、共有メ モリ の ペアを駆動します。共有メ モリ はこれら 2 つのク ロッ ク ド メ イ

ン (clk ド メ イ ンと plb_clock ド メ イ ン ) にまたがっており 、 こ れら 両方のク ロ ッ ク で駆動さ れま

す。こ のフローでは、共有レジスタはサポート されません。XPS プロジェク ト を System Generatorにインポート するインポート フローでは、プロセッ サ上の PLB バスを xps_clk 信号と 同じク ロッ

ク で駆動する必要があり ます。

[Dual Clock] をイネーブルにし、 ハードウェア協調シ ミ ュレーシ ョ ン用のネッ ト リ ス ト を作成する

と、 多少異なるク ロ ッ ク接続方法が使用されます。 これを次の図に示します。 ボードからのク ロ ッ

ク ソースは 2 つに分岐されます。 1 つの分岐は clk に接続される前にハードウェア協調シ ミ ュレー

シ ョ ン モジュールに供給され、 も う 1 つの分岐はクロ ッ ク バッファを介して xps_clk 信号に接続

されます。

この接続方法では、MicroBlaze をフ リー ランニング モードで動作させながら System Generator で設計したカスタム ロジッ クをシングル ステップ クロ ッ ク モードで実行できます。これによ り、ハー

ド ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クをシングル ステップ ク ロ ッ ク モードに設定した場合に、

RS232 UARTS などのクロ ッ クの影響を受けやすいペリ フェラルを機能させるこ とができます。

ハードウェア協調シ ミ ュレーシ ョ ンでは、プロセッサ サブシステムはボードのク ロ ッ クで直接駆動

されます。 これは、プロセッサ サブシステムがこのク ロ ッ クで設定された要件を満たす必要がある

という こ とです。 ハードウェア協調シ ミ ュレーシ ョ ンでは、 入力ボード周波数に基づいて異なるク

ロ ッ ク比のク ロ ッ ク周波数を選択できます。 このハード ウェア協調シ ミ ュレーシ ョ ン ク ロ ッ クは

ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ ク内で生成され、 プロセッサ サブシステムでは使用で

きません。

System Generator for DSP ユーザー ガイド japan.xilinx.com 143リ リース 10.1.2 2008 年 6 月

Page 144: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

たとえば、入力ボード周波数が 125MHz で、ハードウェア協調シ ミ ュレーシ ョ ンの周波数が 33MHzに設定されている場合、MicroBlaze は 125MHz で動作する必要があ り ます。MicroBlaze がこの速

度でタイ ミ ングを満たさない場合、XPS にクロ ッ ク生成ペリ フェラルをインスタンシエート してク

ロ ッ クの速度を下げる必要があ り ます。

EDK サポート

EDK プロセッサのインポート

EDK に含まれる Xilinx Platform Studio (XPS) を使用して作成したプロセッサは、 EDK ImportWizard を使用して System Generator にインポートできます。

EDK Processor ブロ ッ クから EDK Import Wizard を起動するには、 [Import] ボタンをク リ ッ クす

るか、 [EDK project] を空にして [HDL netlisting] を選択します。

メモ : EDK プロジェク ト を System Generator にインポートする と、EDK プロジェク トが変更され

ます。 これら変更について、 次に説明します。

EDK プロセッサのインポート EDK プロジェク ト を EDK Import Wizard を使用して System Generator にインポートする方法を説明します。

System Generator へのプロセッサ ポートの追加

EDK の 上位ポート を System Generator に配線する

方法を説明します。

pcore のエクスポート System Generator デザインを pcore と して EDK にエク

スポートする方法を説明します。

144 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 145: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

EDK サポートR

EDK Import Wizard

EDK Import Wizard が起動する と、 EDK プロジェク ト ファ イル (XMP ファ イル) を指定するダイ

アログ ボッ クスが表示されます。

[Import] ボタンをク リ ッ クする と、 インポートが開始します。

メモ : インポート を実行する と、 EDK プロジェク トが System Generator 内で機能するよ う変更さ

れます。 変更されていない元の EDK プロジェク ト を保持する場合は、 インポート を実行する前に

コピーを作成してください。 System Generator では、 EDK プロジェク トのハード ウェア プラ ッ ト

フォーム仕様 (MHS ファ イル) およびソフ ト ウェア プラ ッ ト フォーム仕様 (MSS ファ イル) を拡張

子が .bak のファイルに自動的にバッ クアップします。

EDK プロジェク ト を System Generator にインポートする と、 EDK Processor ブロ ッ クで設定した

オプシ ョ ンによって、 FSL のペアまたは PLB46 インターフェイスも追加されます。 インターフェ

イスのソフ ト ウェア ド ラ イバと して、pcore (FSL の場合は xlsg_iface、PLB の場合は xlsg_plbiface)が追加されます。 EDK プロジェク トに含まれる MHS および MSS ファ イルが変更され、 プロセッ

サを記述する HDL ファ イルが生成されて System Generator プロジェク トに リ ンク されます。

インポート後のプロセッサ ハードウェアの変更

EDK プロ ジェ ク ト を イ ンポー ト した後に EDK 内でハード ウ ェアに加えた変更は、 SystemGenerator 内には反映されません。 ハードウェアの構成は、インポート した時点で固定されます。 プロセッサ ハード ウェアに変更を加えた場合は、EDK プロジェク ト を EDK Import Wizard を使用し

てインポート し直す必要があ り ます。

EDK プロジェク ト を変更した場合は、インポート し直すこ とをお勧めします。 System Generator での以前のインポー ト で自動的に追加された PLB または FSL インターフェ イ スおよび関連する

pcore は EDK Processor ブロ ッ クで認識されるので、XPS プロジェク トにハードウェアまたはソフ

ト ウェアが重複して追加されるこ とはあ り ません。

制限

現在のと ころ、EDK Import Wizard でインポートできるのはプロセッサが 1 つのプロジェク トのみ

で、 MicroBlaze プロセッサのみがサポート されます。 プロセッサに追加されているペリ フェ ラル

は、その他の System Generator サービスで使用される リ ソース と競合させるこ とはできません。 たとえば、ネッ ト ワーク ベースのハード ウェア協調シ ミ ュレーシ ョ ンを使用する場合、EDK プロジェ

ク トでイーサネッ ト MAC を使用するペリ フェラルは使用できません。

System Generator for DSP ユーザー ガイド japan.xilinx.com 145リ リース 10.1.2 2008 年 6 月

Page 146: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

System Generator へのプロセッサ ポートの追加

プロセッサと System Generator 間でデータを転送するのには、共有メモ リ を介する方法が推奨され

ますが、 System Generator にプロセッサの 上位ポート を追加するこ と も可能です。

上図の右上は、 XPS での EDK プロジェク ト を示します。 外部ポート リ ス トには、 myExternalPortというユーザー定義のポートが含まれます。

EDK プロジェク ト をインポート した後、 System Generator でプロセッサのパラ メータ ダイアログ

ボッ クスを開きます。 [Advanced] タブをク リ ッ ク し、 プロセッサ ポート インターフェイスの リ ス

ト を表示します。

ポート リ ス トには、プロセッサで使用可能な 上位ポートが表示されます。 ク ロ ッ ク ポート、およ

びメモ リ マップ インターフェイスをインプ リ メン トするために System Generator で使用される信

号は表示されません。 上図の例では、 RS232 のポー ト、 sys_rst_pin、 myexternalport ポー ト をブ

ロ ッ クの 上位に追加できます。 [Expose] チェ ッ ク ボッ クスをオンにする と、 EDK Processor ブロ ッ クにポートが表示されます。 元の名前が長すぎる場合は、 上図に示すよ うに、 ポートの表示名

を変更できます。

この方法では、System Generator で生成されたメモ リ マップを介するこ となく、プロセッサのポー

ト を System Generator デザインに直接接続できます。 プロセッサのリセッ ト ポート、割り込みポー

ト を System Generator ダイアグラムに直接接続する場合などにこの方法を使用できます。

146 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 147: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

pcore のエクスポート

EDK Processor ブロ ッ ク を含む System Generator デザイ ンは、 System Generator ト ーク ンの

[Compilation] を [EDK Export Tool] に設定するこ とによ り、 EDK pcore と してエクスポートでき

ます。

EDK に pcore と してエクスポートするには、 EDK Processor ブロ ッ クを EDK pcore 生成モードで

コンフ ィギュレーシ ョ ンする必要があ り ます。 これには、 EDK Processor ブロ ッ クのパラ メータ ダイアログ ボッ クスで [Configure processor for] を [EDK pcore gneration] に設定します。

詳細は、 「EDK Export Tool」 を参照してください。

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計

PicoBlaze マイクロコン トローラ アプリケーシ ョ ンの設計

System Generator の PicoBlaze Microconstroller ブロ ッ クは、 8 ビッ ト マイク ロコン ト ローラをイ

ンプ リ メン ト します。 このブロ ッ クは、 複雑だがタイ ミ ングがク リ ティカルでないステート マシン

を必要とするアプリ ケーシ ョ ンや、 データ処理アプリ ケーシ ョ ンなどで使用できます。 マイ ク ロコ

ン ト ローラは完全にデバイスに組み込まれており、 外部サポートは必要あ り ません。 追加のロジッ

クはデバイス内のマイク ロコン ト ローラに接続できるので、 柔軟な設計が可能です。

PicoBlaze の概要

次の例では、 リ ソース使用量を少なくするよ う 適化された PicoBlaze 3 (以下単に PicoBlaze) を使用します。 メモ リ ブロ ッ クは、 1024 個までの命令を保存するために使用されます。

信号 方向 説明

in_port[7:0] 入力 入力データ ポート。 入力操作の際、

データがこのポートからレジスタに

転送されます。

brk 入力 割り込み。 2 ク ロ ッ ク サイ クル以上

にする必要があ り ます。

rst 入力 リセッ ト 。

instr[17:0] 入力 命令入力。

out_port[7:0] 出力 出力データ ポート。

System Generator for DSP ユーザー ガイド japan.xilinx.com 147リ リース 10.1.2 2008 年 6 月

Page 148: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

アーキテクチャ

• 予測可能なパフォーマンス、 各命令ごとに 2 クロ ッ ク サイクル

• 43 ~ 66 MIPS (デバイスのタイプおよびスピード グレードによ り異なる )

• 割り込み応答が高速

• 96 個のスライス、 0.5 ~ 1 個のブロ ッ ク RAM

• 16 個の 8 ビッ ト汎用レジスタ

• 64 バイ トの内部 RAM

• 内部 31 ロケーシ ョ ン CALL/RETURN スタ ッ ク

• 256 個の入力ポート と 256 個の出力ポート

PicoBlaze 命令セッ ト アーキテクチャ

PicoBlaze は、 ハード ウェア中心のマイク ロコン ト ローラで、 アセンブ リ コードを使用してプログ

ラムできます。 命令数が 1024 個までのプログラムがサポート されます。 これ以上のプログラムが

必要な場合は、 通常複数のマイク ロコン ト ローラを使用します。

16 個の汎用レジスタ

s0 ~ sF に指定された 16 個の 8 ビッ ト汎用レジスタがあ り ます。

port_id[7:0] 出力 ポートのアドレス。

rs 出力 読み出しス ト ローブ。

ws 出力 書き込みス ト ローブ。

addr[9:0] 出力 次の命令のアドレス。

ack 出力 割り込み確認 (ACK)。

信号 方向 説明

s0 s1 s2 s3s4 s5 s6 s7s8 s9 sA sBsC sD sE sF

Z

C

Zero

Carry

OUT_PORT

PORT_ID

IN_PORT

64-Byte Scratchpad RAM

InstructionDecoder

1Kx18Instruction

PROM

Pro

gram

Cou

nter

(PC

)

31x1

0C

ALL

/RE

TU

RN

S

tack

INTERRUPT16 Byte-Wide Registers

ALUOperand 1

Operand 2

IE Enable

FlagsConstants

148 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 149: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

ALU

論理演算ユニッ ト (ALU) は、 add、 sub、 load、 and、 or、 xor、 shift、 rotate、 compare、 test など

の演算を実行します。 各命令の 初のオペランドは、結果を保存するレジスタです。 2 つ目のオペラ

ンドが必要な演算では、 2 つ目のレジスタまたは 8 ビッ トの定数値を指定できます。

フラグおよびプログラム制御

ALU 演算の結果は、ゼロ フラグおよびキャ リー フラグのステータスによ り判断されます。 ゼロ フラグは結果が 0 の場合に 1 になり、 キャ リー フラグは演算でオーバーフローが発生した場合に 1 になり ます。 これらのフラグのステータスから、 jump や call などの条件プログラム フロー制御命令

を使用してプログラムの実行シーケンスを決定します。

入力/出力

256 個の入力ポート と 256 個の出力ポートがあ り ます。 アクセスするポートは、port_id の 8 ビッ ト

アドレス値で指定されます。 ポート アドレスは、 プログラム内で絶対値または間接的にレジスタの

値と して指定できます。 入力操作では、 in_port の値が 16 個のレジスタのいずれかに転送され、 出力操作ではデータがレジスタから out_port に転送されます。

割り込み

プロセッサには、 brk とい う割り込み入力ポート が 1 つあ り ます。 割り込みがイネーブルの場合、

brk を 1 にする と、 プログラム カウンタが割り込みサービス ルーチンへのジャンプ ベクタが保存

されている メモ リ ロケーシ ョ ン 0x3FF に設定されます。 この時点で ack ポート でパルスが生成さ

れ (brk がアサート された 2 ク ロ ッ ク サイクル後)、 制御フラグが保持されて、 それ以外の割り込み

がディ スエーブルになり ます。 return 命令によ り、 割り込みルーチンが終了したと きに制御フラグ

のステータスが復元され、 その後の割り込みをイネーブルにするかど うかが指定されます。

機能および命令セッ トの詳細は、 ザイ リ ンクス Web サイ トの PicoBlaze User Resources のページ

を参照してください。

チュート リアル : System Generator での PicoBlaze の使用

次のチュート リ アルでは、割り込み中の DDS (Direct Digital Synthesizer) の出力周波数を変更する

よ う PicoBlaze プログラムを変更します。

Simulink モデルと PicoBlaze アセンブラ コードが提供されていますが、 変更が必要です。

1. MATLAB ウ ィンド ウで、 <path_to_sysgen>\examples\picoblaze ディ レク ト リに移動します。

このディ レク ト リには、 次のファイルが含まれています。

♦ Pico_dds.mdl : 未完成の Simulink モデル

♦ Pico_code.psm : 未完成の PicoBlaze コード

2. Pico_dds.mdl を開きます。

3. デザインを変更します。

a. [Xilinx Blockset Library] → [Index] または [Control Logic] にある PicoBlazeMicrocontroller ブロ ッ クを指定の場所に追加します。 デフォルトの設定では、 ブロ ッ クの

ポート数はモデルで必要なポート数と異な り ます。 これを次の手順に従って変更します。

ブロ ッ クに割り当てられたスペースに収まるよ う、ブロ ッ クのサイズを変更して ください。

b. PicoBlaze Microcontroller ブロ ッ クをダブルク リ ッ ク し、 [Version] で [PicoBlaze 3] をオ

ンにします。 [Display internal state] はオフにします。 ポート をモデルに描かれているライ

ンに接続します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 149リ リース 10.1.2 2008 年 6 月

Page 150: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

c. [Xilinx Blockset Library] → [Index] ラ イブラ リにある PicoBlaze Instruction Display ブロ ッ クを指定の場所に追加します。 次の図に示すよ うに接続されている こ と を確認しま

す。

d. PicoBlaze Instruction Display ブロ ッ クをダブルク リ ッ ク し、[Version] を [PicoBlaze 3] に設定します。 [Disable Display] をオンにします。 このオプシ ョ ンをオンにする と、 シ ミ ュ

レーシ ョ ンをブロ ッ ク表示をアップデートせずに実行できます。

150 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 151: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

e. [Xilinx Blockset Library] → [Index] または [Memory] ライブラ リ にある ROM ブロッ ク を

指定の場所に追加します。 ROM ブロッ ク を右ク リ ッ ク し、[書式] → [ブロッ クの反転] をク

リ ッ ク してブロッ クを反転します。 ポート をモデルに描かれているラインに接続します。

f. Single-Step Simulation ブロ ッ クをダブルク リ ッ ク して、 [Continuous] モードにします。

4. ROM をダブルク リ ッ ク して次のよ うに設定し、 プログラムの保存をコンフ ィギュレーシ ョ ン

します。

[Basic] タブで、 次のよ うに設定します。

a. この ROM ブロ ッ クには、 PicoBlaze の命令を保存します。 [Depth] は 1024 に設定する必

要があ り ます。 これは、 プログラムで割り込みが使用され、 brk を 1 にしたと きにプログ

ラム カウンタが 0x3FF に設定されるからです。

b. 手順 5 でコードを編集し、 fill_pico_code_program_store.m という メモ リの初期化ファイ

ルを生成するので、 [Initial value vector] は fill_pico_code_program_store に設定します。

c. 同期デザインのパフォーマンスを向上させるため、 [Latency] は 1 に設定します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 151リ リース 10.1.2 2008 年 6 月

Page 152: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

[Output Type] タブをク リ ッ ク し、 次のよ うに設定します。

a. [Word type] で [Unsigned] をオンにし、 [Number of bits] を 18、 [Binary Point] を 0 に設

定します。

5. PicoBlaze アセンブリ プログラムを編集します。

a. Pico_code.psm を開きます。

b. このファ イルの説明に従って命令を追加します。 PicoBlaze の命令セッ トに関する詳細情

報は、アプ リケーシ ョ ン ノート XAPP627 (http://japan.xilinx.com/support/documentation/application_notes.htm) を参照してください。

c. ファ イルを保存します。

6. アセンブラを実行して、 メモ リ初期化ファイルを生成します。

MATLAB の [Command Window] に、 次のよ うに入力します。

>> xlpb_as -p pico_code.psm

xlpb_as は、 ザイ リ ンクスの PicoBlaze アセンブラです。

fill_pico_code_program_store.m という ファ イルが生成されます。

7. Simulink モデルをシ ミ ュレーシ ョ ンします。

Simulink モデルのツールバーで [シ ミ ュレーシ ョ ンの開始] をク リ ッ ク し、 シ ミ ュレーシ ョ ンを開

始します。

152 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 153: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

次のよ う な出力が表示されます。

位相の増加に比例して、 波形の周波数が増加しています。

8. デバッグ ツールを使用します。

プログラムが正常に機能しない場合は、 デバッグにいくつかのツールを利用できます。 PicoBlazeInstruction Display ブロッ クで [Disable Display] をオフにする と、各クロ ッ ク サイクルでプログラ

ム カウンタ と命令がアップデート されます。 また、 PicoBlaze Microcontroller ブロ ッ クで [Displayinternal state] をオンにする と、 レジス タおよび制御フ ラ グの値を表示でき ます。 Single-StepSimulation ブロ ッ ク をダブルク リ ッ ク して [Single-Step] モードにする と、 シ ミ ュ レーシ ョ ンを

1 行ずつ実行してデバッグできます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 153リ リース 10.1.2 2008 年 6 月

Page 154: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

MicroBlaze プロセッサ ペリフェラルの設計とエクスポート

Xilinx Platform Studio (XPS) を使用する と、 カスタマイズされた MicroBlaze および PowerPC プロセッサ システムを設計できます。 プロセッサ システムのハード ウェア ペリ フェラルは pcore と呼ばれ、特定のディ レク ト リ構造で配置されたデザイン ファ イルで構成されています。 これらのデ

ザイン ファ イルには、 XPS pcore のハード ウェア インプ リ メンテーシ ョ ン、 接続インターフェイ

ス、 ソフ ト ウェア ド ラ イバなどが記述されています。

EDK Processor ブロ ッ クで EDK Export Tool を設定する と、 System Generator でカスタマイズさ

れたプロセッサ ハード ウェア ペリ フェ ラルを設計できます。 System Generator デザインは XPSpcore と してエクスポート し、 XPS プロジェク トに含めて使用できます。

次のチュート リ アルで、System Generator で XPS pcore を作成する方法を示します。このチュート

リ アルで使用するフ ァ イルは、 <path_to_sysgen>\examples\EDK\rgb2gray (<path_to_sysgen> はSystem Generator のインス トール ディ レク ト リ ) に含まれています 。

チュート リアル : System Generator での MicroBlaze ペリフ ェラルの作成

メモ : このチュート リ アルを完了するには、 EDK がインス トールされている必要があ り ます。

1. <path_to_sysgen>\examples\EDK\rgb2gray から rgb2gray.mdl を開きます。

このペリ フェラルには、 赤、 緑、 青のピクセル値を表す 32 ビッ ト の入力が 3 つあり ます。 これらの

値が 32 ビッ ト グレースケール値に変換されます。 赤、 緑、 青の値は、 red、 green、 blue と いう 名前

の 3 つの共有レジスタから供給され、 変換結果が result と いう 共有レジスタに書き込まれます。

154 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 155: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

2. pcore をエクスポートできるよ うに準備します。 EDK Processor ブロ ッ クをモデルにド ラ ッグ

します。 EDK Processor ブロ ッ クをダブルク リ ッ ク して、 次のよ うに設定します。

[Available Memories] を [<all>] に設定し、[Add] をク リ ッ ク してモデルに含まれるすべての共有メ

モ リ を EDK Processor ブロ ッ クに追加します。 [Configure processor for] を [EDK pcore generation]に設定します。 [OK] をク リ ッ ク します。 これで、EDK Processor ブロ ッ クによ り共有メモ リのメモ

リ マップが生成されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 155リ リース 10.1.2 2008 年 6 月

Page 156: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

3. pcore をエクスポート します。 System Generator トークンをダブルク リ ッ ク して、 パラ メータ

ダイアログ ボッ クスを開きます。 この例では、 EDK Export Tool を使用して pcore を作成しま

す。 EDK Export Tool のオプシ ョ ンの詳細は、 「System Generator のコンパイル タイプ」 を参

照してください。

[Compilation] を [Export as a pcore to EDK] に設定します。 [Settings] をク リ ッ ク し、 [EDK exportsettings] ダイアログ ボッ クスを開きます。 [Export pcore to] で [System Generator target directory]をオンにし (デフォルト )、 pcore がモデルのターゲッ ト ディ レク ト リにエクスポート されるよ うに

します。

[Generate] ボタンをク リ ッ ク し、 エクスポート を開始します。

4. エクスポート した pcore を XPS に統合します。

XPS プロジェク ト を作成し、 そのプロジェク ト に pcore を統合します。 「XPS の使用」 の手順に

従って、 XPS プロジェク ト を作成して ください。

XPS プロジェク ト を作成したら、System Generator で生成した pcore をローカル pcore リ ポジ ト リ

にコピーします。 前の手順で pcore を System Generator のターゲッ ト ディ レク ト リに保存するよ

う指定したので、 ターゲッ ト ディ レク ト リ内に pcore とい う名前のディ レク ト リがあるはずです。

ディ レク ト リの内容を XPS プロジェク トの対応する pcore ディ レク ト リにコピーします。 XPS プロジェク トに pcore ディレク ト リがない場合は、 作成してください。

XPS で、[Project] → [Rescan User Repositories] をク リ ッ ク します。 System Generator でエクスポー

ト した rgb2gray_plbw という pcore が EDK ペリ フェラルのリ ス トに表示されます。

「XPS の使用」 の手順に従い、 EDK で pcore を MicroBlaze プロセッサに接続します。

pcore を接続したら、 [Hardware] → [Generate Netlist] をク リ ッ ク してネッ ト リ ス ト をコンパイル

します。

156 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 157: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

ソフ トウェアの記述

XPS プロジェク トでソフ ト ウェア アプリ ケーシ ョ ンを作成します。 ソフ ト ウェア アプ リ ケーシ ョ

ンの作成方法の詳細は、 「XPS の使用」 を参照して ください。 アプリ ケーシ ョ ンに次のコードを追

加して、 ソフ ト ウェアをコンパイルします。

#include "xparameters.h"#include "stdio.h"#include "xutil.h"

// header file of System Generator Pcore#include "rgb2gray_plbw.h"

int main (void) { int i; uint32_t gray, red, green, blue;

print("-- Entering main() --\n\r");

xc_iface_t *iface; xc_from_reg_t *fromreg_gray; xc_to_reg_t *toreg_red, *toreg_green, *toreg_blue;

// initialize the software driver xc_create(&iface, &RGB2GRAY_PLBW_ConfigTable[0]);

// obtain the memory locations xc_get_shmem(iface, "result", (void **) &fromreg_gray); xc_get_shmem(iface, "red", (void **) &toreg_red); xc_get_shmem(iface, "green", (void **) &toreg_green); xc_get_shmem(iface, "blue", (void **) &toreg_blue);

for (i=15; i<30; i++){ red = i; green = i + 10; blue = i + 20;

// Write RGB value to peripheral xc_write(iface, toreg_red->din, red); xc_write(iface, toreg_green->din, green); xc_write(iface, toreg_blue->din, blue); xil_printf("R = 0x%x, G = 0x%x, B = 0x%x -- ", red, green, blue);

xc_read(iface, fromreg_gray->dout, &gray);

xil_printf("Gray = %x \n\r", gray); }

print("-- Exiting main() --\n\r"); return 0;}

System Generator for DSP ユーザー ガイド japan.xilinx.com 157リ リース 10.1.2 2008 年 6 月

Page 158: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

XPS プロジェク トには System Generator pcore の複数のインスタンスを含めるこ とができます。各

インスタンスにはデバイス ID が関連付けられており、 xparameter.h に記述されています。

xparameter.h の次の情報から、この例のインスタンスのデバイス ID が 0 であるこ とがわかり ます。

/* Definitions for driver SG_PLBIFACE */#define XPAR_SG_PLBIFACE_NUM_INSTANCES 1

/* Definitions for peripheral SG_PLBIFACE_0 */#define XPAR_SG_PLBIFACE_0_DEVICE_ID 0

System Generator pcore インスタンスのデバイス ID を使用して、RGB2GRAY_PLBW_ConfigTableの対応する項目を選択します。この項目は xc_create に供給され、特定の System Generator pcore インスタンスの設定情報が取得されます。

ハード ウェアの接続方法、 その他のソフ ト ウェアの問題に関する詳細は、 「プロセッサのカスタム

ロジッ クへの統合」 を参照してください。

コードを実行する と、 RS232 ターミナルに次のよ うに表示されます。

チュート リアル : MicroBlaze プロセッサ システムの設計とシミ ュレーシ ョ ン

このチュート リ アルでは、 MicroBlaze プロセッサを含む System Generator モデルの設計方法とシ

ミ ュレーシ ョ ン方法を示します。 DSP48 コプロセッサを System Generator を使用して設計します。

EDK Processor ブロ ッ ク を使用し、 XPS でカス タマイズした MicroBlaze プロセッサを SystemGenerator モデルにインポート します。 その後、 EDK Processor ブロ ッ クの自動メモ リ マップ機能

を使用して、 インポート した MicroBlaze プロセッサに DSP48 コプロセッサを接続します。

このチュー ト リ アルでは、 ハード ウェア協調シ ミ ュレーシ ョ ンを使用してデザインをシ ミ ュレー

シ ョ ンおよび検証します。 MicroBlaze プロセッサをハード ウェアにコンパイルし、 DSP48 コプロ

セッサ モデルは System Generator ダイアグラムに残してソフ ト ウェア シ ミ ュレーシ ョ ンを実行し

ます。 このチュート リ アルでは、 ポイン ト ツーポイン ト イーサネッ ト協調シ ミ ュレーシ ョ ン手法を

使用して、 ハードウェア シ ミ ュレーシ ョ ンと ソフ ト ウェア シ ミ ュレーシ ョ ンを通信させます。

158 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 159: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

このチュート リ アルは、 次のセクシ ョ ンから構成されています。

• XPS プロジェク トの作成

• DSP48 コプロセッサ モデルの作成

• XPS プロジェク トのインポート

• メモ リ マップ インターフェイスのコンフ ィギュレーシ ョ ン

• ソフ ト ウェア プログラムの記述

• ハードウェア協調シ ミ ュレーシ ョ ン ブロッ クの作成

• テス トベンチ モデルの作成

• コンパイルされたソフ ト ウェアで協調シ ミ ュレーシ ョ ン ブロ ッ クをアップデート

• シ ミ ュレーシ ョ ンの実行

このチュート リ アルでは、 ザイ リ ンクス Virtex-4 ML402 評価プラ ッ ト フォームを使用します。

このチュート リ アルで使用するファイルは、 <path_to_sysgen>\examples\EDK\DSP48CoProcessor(<path_to_sysgen> は System Generator のインス トール ディレク ト リ ) に含まれています 。

XPS プロジェク トの作成

まず、 PLB ベースの UART ペリ フェ ラルを含む XPS プロジェ ク ト を作成する必要があ り ます。

XPS プロジェク トの作成方法は、 「XPS の使用」 を参照してください。

DSP48 コプロセッサ モデルの作成

System Generator for DSP ユーザー ガイド japan.xilinx.com 159リ リース 10.1.2 2008 年 6 月

Page 160: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

<path_to_sysgen>\examples\EDK\DSP48CoProcessor フォルダにある DSP48CoProcessor.mdl を一時作業ファイルにコピーし、 開きます。

このモデルには DSP48 ブロッ ク が含まれており 、 a、 b、 c ポート に対応する名前の From Registerブロッ ク が接続されています。 op ポート にはマルチプレク サから信号が供給されており 、 このマル

チプレクサのセレク ト ラインには instr と いう 名前の From FIFO ブロッ ク から信号が共有されます。

DSP48 ブロッ クの出力ポート p は、BitBasher ブロッ クを介して 2 つに分割され、上位 16 ビッ ト は

overflow と いう To Register ブロッ ク 、下位 32 ビッ ト は result と いう To Register に入力されます。

XPS プロジェク トのインポート

MicroBlaze プロセッサを含む XPS プロジェク ト を、 DSP48 コプロセッサ モデルにインポート し

ます。 Processor Subsystem とい うサブシステムをダブルク リ ッ ク して表示します。 このサブシステ

ムには、 System Generator トークンと、 EDK Processor ブロ ッ クのプレースホルダである青いボッ

クスが含まれています。 [Xilinx Blockset] → [Index] ライブラ リから EDK Processor ブロ ッ クをサ

ブシステムにド ラ ッグします。 サブシステムは、 次の図のよ うになり ます。

EDK Processor ブロ ッ クをコンフ ィギュレーシ ョ ンして XPS プロジェ ク ト をインポート します。

インポート を実行する と、XPS プロジェク トが変更されます。 インポート を開始する前に、XPS プロジェク トが XPS で開いていないこ とを確認して ください。

EDK Processor ブロ ッ ク をダブルク リ ッ ク し、 パラ メ ータ ダイア ロ グ ボ ッ ク スを開き ます。

[Configure processor for] を [HDL netlisting] に設定します。 この設定によ り、 [Import] ボタンが有

効になり ます。

[EDK pcore generation] を設定した場合、[Import] ボタンは無効になり ます。 [EDK pcore generation]モード は、 System Generator で pcore を作成してエクスポート し、 別の XPS プロジェク ト で使用す

る場合に使用します。 この場合、 EDK Processor ブロッ ク 内にプロセッ サ インスタンスは含まれま

せん。 [HDL netlisting] モード は、XPS プロジェク ト を System Generator モデルにインポート し、そ

の他の System Generator ブロッ ク と 共にネッ ト リ スト を作成する場合に使用します。

XPS プロジェク ト をインポート しない場合、 [HDL netlisting] に設定するこ とによ り EDK ImportWizard が自動的に起動されます。 [Import] をク リ ッ クする と、EDK Import Wizard を手動で起動で

きます。

160 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 161: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

[Import EDK project] ダイアログ ボッ クスで、 前の手順で作成した XPS プロジェク ト を選択しま

す。 XPS プロジェ ク ト (XMP ファ イル) を選択する と、 インポート プロセスが開始します。 イン

ポート プロセスでは、必要なファイルが XPS プロジェク トにコピーされ、MicroBlaze プロセッサ

が System Generator モデルと通信できるよ うにプロジェク トが変更されます。

インポート された XPS プロジェク トにソフ ト ウェア アプリ ケーシ ョ ンが含まれている場合、 これ

らのアプリケーシ ョ ンはインポート中にコンパイルされません。

メモリ マップ インターフェイスのコンフ ィギュレーシ ョ ン

EDK Processor ブロ ッ クのパラ メータ ダイアログ ボッ クスを開きます。 [Available memories] で[<all>] を選択し、 [Add] をク リ ッ ク して、 モデル内のすべての共有メモ リ をプロセッサのメモ リ

マップに追加します。 EDK Processor ブロ ッ クのパラ メータ ダイアログ ボッ クスは、次のよ うにな

るはずです。 [OK] をク リ ッ ク します。

ソフ トウェア プログラムの記述

MicroBlaze で実行するソフ ト ウェア プログラムを記述します。 このソフ ト ウェア プログラムは、

共有メモ リ から読み出し、 共有メモ リ に書き込みます。 XPS で XPS プロジェ ク ト を開きます。

MyProject とい う ソフ ト ウェア アプリ ケーシ ョ ンを作成します。 [Mark to Initialize BRAMs] オプ

シ ョ ンを、 MyProject ではオンにし、 その他のソフ ト ウェア アプリ ケーシ ョ ンではオフにします。

EDK プロジェク ト にソフ ト ウェア アプリ ケーシ ョ ンを追加する方法は、 「XPS の使用」 を参照し

てください。

System Generator for DSP ユーザー ガイド japan.xilinx.com 161リ リース 10.1.2 2008 年 6 月

Page 162: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

MyProject のソース コード ファ イル MyProject.c を作成し、 XPS コード エディ タで開きます。

上図は、 XPS で開いた XPS プロジェク トの [System Assembly View] タブの一部を示しています。

System Generator のインポートが正常に完了する と、 sg_plbiface ペリ フェラルが XPS プロジェク

トに自動的に追加されます。 sg_plbiface ペリ フェラルは、 インポート された MicroBlaze プロセッ

サに接続されている PLB バスを メモ リ マップ インターフェイスを介して System Generator モデ

ルに接続し、 対応するデバイ ス ソ フ ト ウ ェア ド ラ イバを生成するための情報を取得し ます。

[System Assembly View] タブで sg_plbiface を右ク リ ッ ク し、 [Driver] → [View APIDocumentation] をク リ ッ ク して API 資料を開きます。

API 資料を参照して MyProject.c に次のヘッダ ファ イルを追加し、 ソフ ト ウェア ド ラ イバを初期

化します。

#include "sg_plbiface.h"

xc_iface_t *iface;

// initialize the software driverxc_create(&iface, &SG_PLBIFACE_ConfigTable[0]);

プロセッサで実行するコードを確認する前に、 モデルの a レジスタにデータを書き込む方法を考え

ます。 DSP48 コプロセッサ モデルを見る と、 DSP48 ブロ ッ クの a ポートは、 同じ名前の共有レジ

スタの出力で駆動されています。 この共有レジスタに、 MicroBlaze コード内から値を書き込みま

す。 ド ラ イバ API を参照する と、 a とい う共有メモ リは xc_to_reg_t アクセス データ型を使用する

To Register で、 次のデータ フ ィールドを含むこ とがわかり ます。

typedef struct { xc_w_addr_t din; uint32_t n_bits; uint32_t bin_pt;} xc_to_reg_t;

162 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 163: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

ソフ ト ウェア ド ラ イバが初期化される と、din に共有メモリ a の din ポートのメモリ マップ アドレ

スが保存され、 n_bits および bin_pt にビッ ト数と 2 進小数点情報が保存されます。

共有レジスタ a に値を書き込むには、まず xc_get_shmem を使用してその設定を取得する必要があ

り ます。

xc_to_reg_t *toreg_a; xc_get_shmem(iface, "a", (void **) &toreg_a);

メモ : xc_get_shmem は、 時間がかかり ます。 返される toreg_a を後で使用できるよ う キャ ッシュ

し、 プログラムで xc_get_shmem を複数回呼び出す必要がないよ うにしてください。

共有レジスタ a に値を書き込むには、 次の 1 ワード アクセス関数を使用します。

// -- Set the a port register to 2 xc_write(iface, toreg_a->din, 2);

MyProject.c の完全なコードは、 次のとおりです。

#include "xparameters.h"#include "stdio.h"#include "xutil.h"// header file of System Generator Pcore#include "sg_plbiface.h"int main (void) { uint32_t result, overflow; char c; xc_iface_t *iface; xc_from_reg_t *fromreg_result, *fromreg_overflow; xc_to_reg_t *toreg_a, *toreg_b, *toreg_c, *toreg_instr; // initialize the software driver xc_create(&iface, &SG_PLBIFACE_ConfigTable[0]); print("Performing p=2*4\r\n"); xc_get_shmem(iface, "result", (void **) &fromreg_result); xc_get_shmem(iface, "overflow", (void **) &fromreg_overflow); xc_get_shmem(iface, "a", (void **) &toreg_a); xc_get_shmem(iface, "b", (void **) &toreg_b); xc_get_shmem(iface, "c", (void **) &toreg_c); xc_get_shmem(iface, "instr", (void **) &toreg_instr); // -- Set the a port register to 2 xc_write(iface, toreg_a->din, 2); // -- Set the b port register to 4 xc_write(iface, toreg_b->din, 4);

System Generator for DSP ユーザー ガイド japan.xilinx.com 163リ リース 10.1.2 2008 年 6 月

Page 164: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

// -- Set the instr register to 2: p=a*b xc_write(iface, toreg_instr->din, 2); print("Press a key to read back result\n\r"); c = inbyte(); // -- Read back the result register xc_read(iface, fromreg_result->dout, &result); // -- Read back the overflow register xc_read(iface, fromreg_overflow->dout, &overflow); xil_printf("Read back: result=%d, overflow=%d\n\r", result, overflow); print("Performing p=c+(a:b)\r\n"); // -- Set the a port register to 262140 xc_write(iface, toreg_a->din, 262140); // -- Set the b port register to 262140 xc_write(iface, toreg_b->din, 262140); // -- Set the cport register to 1 xc_write(iface, toreg_c->din, 1); // -- Set the instr register to 3: p=c+(a:b) xc_write(iface, toreg_instr->din, 3); print("Press a key to read back result\n\r"); c = inbyte(); // -- Read back the result register xc_read(iface, fromreg_result->dout, &result); // -- Read back the overflow register xc_read(iface, fromreg_overflow->dout, &overflow); xil_printf("Read back: result=%d, overflow=%d\n\r", result, overflow); return 0;}

このコードを MyProject.c にコピーします。

ハードウェア協調シミ ュレーシ ョ ン ブロッ クの作成

完全な Simulink モデルは、 ハード ウェア協調シ ミ ュレーシ ョ ンを使用してシ ミ ュレーシ ョ ンでき

ます。 EDK Processor ブロ ッ クのパラ メータ ダイアログ ボッ クスの [Basic] タブで [Memory Map]に共有メモ リ を追加し、[Configure processor for] で [HDL netlisting] を選択しているこ とを確認し

てください。 ハードウェア協調シ ミ ュレーシ ョ ンでは、 これらの設定が必要です。

EDK Processor ブロ ッ クを含むサブシステムにある System Generator トークンのパラ メータ ダイ

アログ ボッ クスを開きます。 ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クはモデルのこのレベル

で作成し、 インポート された MicroBlaze プロセッサのみがハード ウェアで実行され、 その他の部

分は Simulink に保持してソフ ト ウェア シ ミ ュレーシ ョ ンが実行されるよ うにします。

164 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 165: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

[Compilation] で [Hardware Co-Simulation] → [ML402] → [Ethernet] → [Point-to-point] を選択し

ます。 [Generate] ボタンをク リ ッ ク し、 コンパイルを開始します。 この処理には、 多少時間がかか

る場合があ り ます。 コンパイルが完了する と、 MicroBlaze プロセッサを含むハードウェア協調シ

ミ ュレーシ ョ ン ブロッ クが作成されます。

テス トベンチ モデルの作成

作成した協調シ ミ ュレーシ ョ ン ブロ ッ クを使用するためのテス ト ベンチ モデルを作成します。

DSP48CoProcessor.mdl を開き、 Processor Subsystem を削除し て、 先ほど作成し た ProcessorSubsystem hwcosim ブロ ッ クを追加します。 モデルを DSP48CoProcessor_testbench.mdl という名

前で保存します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 165リ リース 10.1.2 2008 年 6 月

Page 166: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

コンパイルされたソフ トウェアで協調シミ ュレーシ ョ ン ブロックをアップデート

テス トベンチ モデルを開きます。 Processor Subsystem hwcosim ブロ ッ クをダブルク リ ッ ク し、 パ

ラ メータ ダイアログ ボッ クスを開きます。 [Software] タブで [Compile and update bitstream] をク

リ ッ ク し、 リ ス ト されている XPS プロジェク ト に含まれるソフ ト ウェアをコンパイルして、 ハー

ドウェア協調シ ミ ュレーシ ョ ン ビッ ト ス ト リームに読み込みます。

ポイン ト ツーポイン ト イーサネッ ト協調シ ミ ュレーシ ョ ンを選択しているので、 イーサネッ ト インターフェ イ ス と Processor Subsystem hwcosim ブロ ッ クのコンフ ィ ギュレーシ ョ ン インター

フェイスをコンフ ィギュレーシ ョ ンする必要があ り ます。 イーサネッ ト通信に有効なホス ト イン

ターフェイスを選択し、 コンフ ィギュレーシ ョ ン インターフェイスをポイン ト ツーポイン ト イー

サネッ トに設定します。 ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クの使用方法の詳細は、 「ハー

ドウェア協調シ ミ ュレーシ ョ ンの使用」 を参照してください。

シミ ュレーシ ョ ンの実行

シ ミ ュレーシ ョ ンを開始する前に、 コンピュータの COM ポートに接続するターミナルを設定する

必要があ り ます。 これによ り、 テキス ト入力および出力を RS232 ポート を介して MicroBalze で読

み出しおよび書き込みできるよ うになり ます。

使用するターミナル プログラムを開きます。 Windows には、ハイパーターミナルという アプ リケー

シ ョ ンが含まれています。 このアプ リ ケーシ ョ ンを開くには、 [スタート ] → [すべてのプログラム]→ [アクセサ リ ] → [通信] → [ハイパーターミナル] をク リ ッ ク します。 ターミナル プログラムを、

RS232 に接続した COM ポート と通信するよ う設定します。

166 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 167: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

ターミナルを次のよ うに設定します。

• ボー レート = 115200

• データ = 8 ビッ ト

• パリティ = なし

• 停止 = 1 ビッ ト

• フロー制御 = なし

テス トベンチ モデルのシ ミ ュレーシ ョ ン時間を inf に設定し、シ ミ ュレーシ ョ ン時間が MicroBlazeプロセッサが動作を開始して応答するのに十分であるよ うにします。

XPS の使用

このセクシ ョ ンでは、 ザイ リ ンクスのエンベデッ ド開発キッ ト (EDK) のいくつかの機能について

簡単に説明します。 詳細な説明およびチュート リ アルは、 EDK の資料を参照してください。

チュート リアル : 新規 XPS プロジェク トの作成

EDK の Base System Builder を使用する と、完全にコンフ ィギュレーシ ョ ンされた EDK プロジェ

ク ト を簡単に作成できます。 このチュート リ アルでは、ザイ リ ンクス ML402 ハードウェア開発ボー

ドで実行する MicroBlaze プロセッサを含む EDK プロジェク ト を作成します。

1. Windows の [スタート ] メニューから XPS を起動します。

2. XPS を起動する と、 次のダイアログ ボッ クスが表示されます。 [Base System Builder wizard(recommended)] をオンにし、 [OK] をク リ ッ ク します。

3. プロジェク ト ファ イル名を指定して [OK] をク リ ッ ク します。 次の画面で [I would like tocreate a new design] をオンにして新規デザインを作成するこ とを指定し、 [Next] をク リ ッ ク し

ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 167リ リース 10.1.2 2008 年 6 月

Page 168: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

4. [Base System Builder - Select Board] ダイアログ ボッ クスで使用するボードを選択し、 [Next]をク リ ッ ク します。

5. [Base System Builder - Select a processor] ダイアログ ボッ クスで、使用するプロセッサと して

[MicroBlaze] を選択し、 [Next] をク リ ッ ク します。

168 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 169: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

6. [Base System Builder - Configure MicroBlaze] ダイアログ ボッ クスで、MicroBlaze をコンフ ィ

ギュレーシ ョ ンします。 次の図に、 [Base System Builder - Configure MicroBlaze] ダイアログ

ボッ クスを示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 169リ リース 10.1.2 2008 年 6 月

Page 170: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

7. [Base System Builder - Configure IO Interfaces] ダイアログ ボッ ク スで、 IO インターフェイス

をコンフィ ギュレーショ ンします。 必要なのは、RS232 インターフェイスのみです。 次の図に示

すよう に RS232_Uart のパラメ ータを設定し、 その他の IO インターフェイスをオフにします。

8. 次のダイアログ ボッ クスには、 ボードでサポート されるその他の IO インターフェイスが表示

されます。 選択したボードでサポート される IO インターフェイスの数に応じて、複数のダイア

ログ ボッ クスが表示されます。 すべての IO インターフェイスをオフにし、 [Next] をク リ ッ ク

します。

9. [Base System Builder - Add Internal Peripherals] ダイアログ ボッ クスが表示されます。 追加す

る内部ペリ フェラルはあ り ません。 [Next] をク リ ッ ク します。

10. [Base System Builder - Software Setup] ダイアログ ボッ クスで、 STDIN および STDOUT の入力と出力を選択します。 デフォルトでは、RS232_Uart が選択されています。 また、サンプル

コードを生成するよ う選択できます。 [Next] をク リ ッ ク します。

11. [Base System Builder - System Created] ダイアログ ボッ クスに、選択したオプシ ョ ンのサマ リ

が表示されます。 [Generate] をク リ ッ ク して、 EDK プロジェク ト を作成します。

170 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 171: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

12. [Base System Builder - Finish] ダイアログ ボッ クスが表示され、 ファ イルの生成が完了したこ

とが示されます。 [Finish] をク リ ッ ク して、 Base System Builder を終了します。 これで、 基本

的な EDK システムが完成しました。

ソフ トウェア アプリケーシ ョ ンの追加

1. EDK プロジェク トに新しいソフ ト ウェア アプリ ケーシ ョ ンを追加するには、EDK でプロジェ

ク ト を開きます。

2. [Project Information Area] で、 [Applications] タブをク リ ッ ク します。

3. [Add Software Application Project] をダブルク リ ッ ク し、 [Add Software Application Project]ダイアログ ボッ クスを開きます。 プロジェク ト名を入力し、 [OK] をク リ ッ ク します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 171リ リース 10.1.2 2008 年 6 月

Page 172: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

4. デフォルトでは、BRAM に初期化されるよ う設定されていません。 [Mark to Initialize BRAMs]をオンにして、 BRAM にプロジェク トが初期化されるよ うにして ください。 このオプシ ョ ン

をオフのままにする と、 ソフ ト ウェア コードはコンパイルされず、 ビッ ト ス ト リームに追加さ

れません。 複数のアプ リ ケーシ ョ ンがある場合は、 その他のアプ リ ケーシ ョ ンでは [Mark toInitialize BRAMs] をオフにしてください。

5. ソース ファ イルまたはヘッダ ファ イルを作成します。 [Project] ツ リーの下にある [Source] をダブルク リ ッ ク し、 [Select Source/Header File to Add to Project] ダイアログ ボッ クスを開き

ます。 EDK プロジェク トのディ レク ト リが表示されています。 プロジェク ト を表す名前のディ

レク ト リ (この場合は MyProject) を作成し、ソース ファ イルおよびヘッダ ファ イルをそのディ

レク ト リに保存します。 XMP ファ イルと同じディレク ト リにディレク ト リ を作成します。

EDK プロジェク トへの pcore の追加

1. EDK プロジェク トの pcore は、 ユーザー レポジ ト リ、 または EDK プロジェク ト ファ イルと

同じディ レク ト リ レベルにある pcores ディ レク ト リに配置する必要があ り ます。

2. pcore が確実に読み込まれるよ うにするには、 XPS で [Project] → [Rescan User Repositories]をク リ ッ ク します。

172 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 173: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

エンベデッ ド プロセッサおよびマイクロプロセッサを使用した設計R

3. System Generator の pcore は FSL ベースであるので、 Configure Coprocessor ツールを使用で

きます。 Configure Coprocessor を起動するには、 [Hardware] → [Configure Coprocessor] をク

リ ッ ク します。

使用可能な FSL ベースの pcore が、 右側のボッ ク スに表示されます。 使用する pcore を選択し、

[Add] をク リ ッ ク します。 Configure Coprocessor ツールでは、FSL バスのクロ ッ ク信号と リセッ ト

信号が接続されますが、 ユーザー信号は手動で接続する必要があ り ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 173リ リース 10.1.2 2008 年 6 月

Page 174: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

第 2 章 : ハードウェア/ソフ トウェア協調設計R

174 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 175: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

R

第 3 章

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

System Generator ではハード ウェア協調シ ミ ュレーシ ョ ンがサポート されており、FPGA で実行す

るデザインを直接 Simulink シ ミ ュレーシ ョ ンに組み込むこ とができます。 コンパイルのターゲッ

ト と してハードウェア協調シ ミ ュレーシ ョ ンを選択する と、 ビッ ト ス ト リームが作成され、 ブロ ッ

クに関連付けられます。 デザインを Simulink でシ ミ ュレーシ ョ ンする と、コンパイルされた部分の

結果はハードウェアで算出されます。 コンパイルされた部分は実際のハード ウェアでテス ト される

ので、 シ ミ ュレーシ ョ ンを大幅に高速化できます。

ハードウェア プラッ ト フォームのインストール

ハードウェア協調シ ミ ュレーシ ョ ンを実行するには、ハード ウェア プラ ッ ト フォームをインス トー

ルし、 セッ ト アップする必要があ り ます。 次のト ピッ クは、 ザイ リ ンクスでサポート されるプラ ッ

ト フォームのインス トールおよびセッ ト アップ手順を示しています。

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

イーサネッ ト ハード ウ ェア協調シ ミ ュレーシ ョ ン用の ML402 プラ ッ ト フォームのインス

トール

イーサネッ ト ハード ウ ェア協調シ ミ ュレーシ ョ ン用の ML506 プラ ッ ト フォームのインス

トール

イーサネッ ト ハード ウェア協調シ ミ ュレーシ ョ ン用の Spartan-3A DSP 1800A スタータ プラ ッ ト

フォームのインス トール

イーサネ ッ ト ハード ウ ェア協調シ ミ ュ レーシ ョ ン用の Spartan-3A DSP 3400A 開発プラ ッ ト

フォームのインス トール

メモ : 上記のプラ ッ ト フォーム以外のインス トール手順は、ご使用のプラ ッ ト フォーム キッ トに付

属のインス トール ガイ ドを参照して ください。

JTAG ベース ハードウェア協調シミ ュレーシ ョ ン

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

サードバーティ ハードウェア協調シミ ュレーシ ョ ン

ザイ リ ンクスでは、 XtremeDSP™ ソ リ ューシ ョ ンの一環と して、 多数の代理店および OEM と協

力して、さまざまな DSP プロ ト タイプの作成およびプラ ッ ト フォームの開発を行っています。 使用

可能なプラ ッ ト フォームの詳細は、 ザイ リ ンクス Web サイ トの次のページを参照してください。

http://japan.xilinx.com/technology/dsp/thirdparty_devboards.htm

System Generator for DSP ユーザー ガイド japan.xilinx.com 175リ リース 10.1.2 2008 年 6 月

Page 176: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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

ハードウェア プラ ッ ト フォームをインス トールしたら、ハードウェア協調シ ミ ュレーシ ョ ンはハー

ドウェアで実行する System Generator モデルまたはサブシステムから開始します。 モデルは、ハー

ドウェア プラ ッ ト フォームの要件を満たしていれば、 協調シ ミ ュレーシ ョ ンできます。 このモデル

には、 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 コンフ ィギュレーシ ョ ン ビッ ト ス

ト リームが生成されます。 コンパイル プロセスでは、 HDL ファ イルおよびネッ ト リ ス ト ファ イル

が生成されるだけでなく、FPGA コンフ ィギュレーシ ョ ン ファ イルを生成するのに必要なダウンス

ト リーム ツールも実行されます。

176 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 177: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

メモ : [Generate] をク リ ッ クする と、 次のよ うなステータス ダイアログ ボッ クスが表示されます。

コ ンパイル中にこのダイアログ ボ ッ ク スの [Cancel] を ク リ ッ クする と コ ンパイルが停止し、

[Show Details] をク リ ッ クする と コンパイルの各フェーズの詳細が表示されます。 詳細を表示して

いる場合、 [Hide Details] をク リ ッ クする と詳細が非表示になり ます。

コンフ ィギュレーシ ョ ン ビッ ト ス ト リームには、モデルに関連するハード ウェアに加え、プラ ッ ト

フォーム と PC 間の物理インターフェイスを使用した System Generator とデザインを通信させる

ためインターフェイス ロジッ クが含まれています。 このロジッ クには、System Generator でデザイ

ンの入力ポート と出力ポートに対して値の読み出しおよび書き込みを実行する メモ リ マップ イン

ターフェ イ ス、 ターゲッ ト FPGA プラ ッ ト フォームを正し く機能させるために必要なプラ ッ ト

フォーム専用の回路 (DCM、 外部コンポーネン ト配線など) が含まれます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 177リ リース 10.1.2 2008 年 6 月

Page 178: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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

System Generator では、 デザインの FPGA ビッ ト ス ト リームへのコンパイルが終了する と、 ハー

ド ウェア協調シ ミ ュレーシ ョ ン ブロ ッ ク と、 ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クを保存

する Simulink ラ イブラ リが作成されます。 作成されたハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ

クは、 ほかの Simulink および System Generator のブロ ッ ク と同様に、 ラ イブラ リ から SystemGenerator デザインにコピーして使用できます。

ハードウェア協調シ ミ ュレーシ ョ ン ブロッ クは、そのブロ ッ クの基になるモデルまたはサブシステ

ムの外部インターフェイス と して機能します。 ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クのポー

ト名、 ポート タイプ、 レートは、 元のサブシステムのものと一致します。

178 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 179: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クは、 Simulink デザインでその他のブロ ッ ク と同様に

使用されます。 シ ミ ュレーシ ョ ンでは、 FPGA プラ ッ ト フォームと通信し、 デバイス コンフ ィギュ

レーシ ョ ン、 データ転送、 クロ ッ ク供給などを自動化します。 ハード ウェア協調シ ミ ュレーシ ョ ン

ブロ ッ クでは、 ほかの System Generator ブロ ッ ク と同じ型の信号を使用します。 ブロ ッ クの入力

ポートに値が書き込まれる と、 対応するデータがハード ウェアの適切な場所に送信され、 出力ポー

トでイベン トが発生する と、 ハードウェアからデータが取得されます。

ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クは、 ザイ リ ンクスの固定小数点信号、 Simulink の固

定小数点信号、または Simulink の倍精度信号で駆動できます。 出力ポートでは、駆動するブロ ッ ク

に適切な信号型が使用されます。 出力ポート を System Generator ブロ ッ クに接続する と、ザイ リ ン

クスの固定小数点信号が生成され、 ポートが Simulink ブロッ クを駆動する場合は Simulink データ

型が使用されます。

メ モ : ブロ ッ ク信号型と し て Simulink データ型が使用される場合、 入力データの量子化は

[Round]、 オーバーフローは [Saturate] に設定されます。

ハードウェア協調シ ミ ュレーシ ョ ン ブロッ クでは、その他の System Generator ブロッ ク と同様に、

パラ メータ ダイアログ ボッ クスでパラ メータを設定できます。 ハード ウェア協調シ ミ ュレーシ ョ

ン ブロ ッ クのパラ メータは、 ブロ ッ クがインプ リ メ ン ト される FPGA プラ ッ ト フォームによって

異なり ます (各 FPGA プラ ッ ト フォームで独自のカスタマイズされたハードウェア協調ブロ ッ クが

提供される)。

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

クロック周波数の選択

ザイ リ ンクス ML402 または ML506 プラ ッ ト フォームを使用する場合、 ターゲッ ト デザインのク

ロ ッ ク周波数 (システム ク ロ ッ ク周波数以下) を選択できます。 次の表に、選択可能な周波数を示し

ます。

プラッ ト フォーム インターフェイスシステム

クロック周波数選択可能な周波数

ザイ リ ンクス ML402

JTAG

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

ネッ ト ワーク ベースのイーサネッ ト

100MHz 100MHz

66.7MHz

50MHz

33.3MHz

ザイ リ ンクス ML506

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

ネッ ト ワーク ベースのイーサネッ ト

200MHz 100MHz

66.7MHz

50MHz

33.3MHz

System Generator for DSP ユーザー ガイド japan.xilinx.com 179リ リース 10.1.2 2008 年 6 月

Page 180: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ク ロッ ク周波数を設定するには、 次の図に示すよう に、 System Generator ト ーク ンのパラメ ータ ダイアログ ボッ クスで [Settings] ボタンをク リ ッ ク し、プルダウン メ ニューから周波数を選択します。

クロック モード

System Generator ハードウェア協調シ ミ ュレーシ ョ ン ブロ ッ クを FPGA ハード ウェアと同期化す

るには、いくつかの方法があ り ます。シングル ステップ ク ロ ッ ク モードでは、FPGA には Simulinkからク ロ ッ クが供給されます。 フ リー ランニング ク ロ ッ ク モードでは、 FPGA は内部クロ ッ クで

動作し、 Simulink がハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クを起動する と、 非同期にサンプ

リ ングされます。

シングル ステップ クロック

シングル ステップ クロ ッ ク モードでは、ハード ウェアはソフ ト ウェア シ ミ ュレーシ ョ ンと同じス

テップで実行されます。 これは、各シ ミ ュレーシ ョ ン サイクルごとにハードウェアに 1 クロ ッ ク パルス (入力/出力レートに対して FPGA の周波数を高く している場合は複数のクロ ッ ク パルス) を供

給するこ とで達成します。 このモードでは、 ハード ウェア協調シ ミ ュレーシ ョ ンは元のモデルに対

してビッ ト単位およびサイクル単位です。

ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クは、 Simulink によ り起動された場合にのみ FPGAハード ウェアに対してク ロ ッ ク信号を生成するので、 Simulink モデルの残りの部分のシ ミ ュレー

シ ョ ンに関するオーバーヘッ ドおよび Simulink と FPGA プラ ッ ト フォーム間の通信オーバーヘッ

ド (バス レイテンシなど) によ りハード ウェアで達成可能なパフォーマンスが大幅に制限されます。

一般的には、 FPGA 内での処理量が通信オーバーヘッ ド よ り もかな り大きい場合は (ロジッ クが大

きい、ハード ウェアの周波数を大幅に高く している場合など)、ハードウェアでのシ ミ ュレーシ ョ ン

は高速になり ます。

2. 選択

1. ク リ ッ ク

180 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 181: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

フリーランニング クロック

フ リーランニング ク ロ ッ ク モードでは、 ハード ウェアはソフ ト ウェア シ ミ ュレーシ ョ ン とは非同

期に実行されます。 Simulink で FPGA ク ロ ッ クが生成されるシングル ステップ クロ ッ ク モード と

は異なり、 ハードウェア ク ロ ッ クは FPGA 内で連続的に動作します。

このモードでは、シ ミ ュレーシ ョ ンは元のモデルに対してビッ ト単位およびサイクル単位ではなく、

Simulink がハード ウェア協調シ ミ ュレーシ ョ ンを起動したと きにのみハード ウェアの内部ステー

トがサンプリ ングされます。 FPGA ポート I/O は、 Simulink のイベン ト と同期しません。 Simulinkのポートでイベン トが発生する と、 その時点でハードウェアの対応するポートに対して読み出しま

たは書き込みが実行されます。 ポート イベン ト間でのクロ ッ ク サイ クル数は不明なので、 ハード

ウェアの現在のステート を元の System Generator モデルに調整する こ とはできません。 このモー

ドでは、 FPGA をフル スピードで動作させ、 必要に応じて Simulink と同期化するので、 多くのス

ト リーミ ング アプリ ケーシ ョ ンに適しています。

フ リーランニング モードでは、 System Generator モデルに同期化機構を構築する必要があ り ます。

簡単な例と しては、 ステータス レジスタがあ り ます。 このステータス レジスタを出力ポート と し

てハードウェア協調シ ミ ュレーシ ョ ン ブロッ クに追加し、条件が満たされたと きにハードウェアで

セッ ト されるよ うにします。 System Generator モデルの残りの部分では、 このステータス レジスタ

をポーリ ングしてハードウェアのステート を判断できます。

クロック モードの選択

すべてのハード ウェア プラ ッ ト フォームでフ リーランニング ク ロ ッ クをサポート しているわけで

はあ り ませんが、 サポート しているプラ ッ ト フォームでは、 ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クのパラ メータ ダイアログ ボ ッ ク スでク ロ ッ ク モード を選択でき ます。 [Basic] タブの

[Clocking] で、 [Single stepped] または [Free running] をオンにします。

メモ : ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クのクロ ッ ク オプシ ョ ンは、 使用する FPGA プラ ッ ト フォームによ り異なり ます。フ リーランニング ク ロ ッ クがサポート されないプラ ッ ト フォー

ムでは、 ダイアログ ボッ クスで選択できません。

System Generator for DSP ユーザー ガイド japan.xilinx.com 181リ リース 10.1.2 2008 年 6 月

Page 182: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ボード専用 I/O ポート

FPGA プラ ッ ト フォームには、 FPGA と 通信可能なさ まざまなオンボード デバイス (外部メ モリ 、

AD コンバータなど ) が含まれます。 こ れらのコンポーネント を System Generator モデル内で接続

し、ハード ウェア協調シミ ュレーショ ンで使用すると 有益な場合があり ます。 たと えば、ボード に外

部メ モリ が含まれる場合、 System Generator デザインでこのメ モリ に制御ロジッ ク およびインター

フェイス ロジッ ク を定義し、 ハード ウェア協調シミ ュレーショ ンで物理メ モリ を使用できます。

これらのコンポーネン ト を接続するには、System Generator モデルにボード専用 I/O ポート を含め

ます。 ボード専用ポートは、 モデルをハード ウェア協調シ ミ ュレーシ ョ ン用にコンパイルしたと き

に FPGA パッ ドに配線されます。 これらのポートは、ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ ク

のポートで制御される標準の協調シ ミ ュレーシ ョ ン ポート とは異なり ます。

ボード専用 I/O ポートは、メモ リにマップされない特殊な Gateway ブロ ッ クを使用してインプ リ メ

ン ト します。 このブロ ッ クによ り、 モデルをハード ウェアにコンパイルしたと きに信号が適切な

FPGA ピンに配線されます。 System Generator 信号をボード専用ポートに接続するには、 ワイヤを

この特殊な Gateway ブロ ッ クに接続します。

多くの場合、 メモ リにマップされない Gateway ブロ ッ クは、 Simulink サブシステムまたはライブ

ラ リに含まれています。 たとえば、XtremeDSP 開発キッ トでは、AD コンバータ、DA コンバータ、

LED、 外部メモ リ を含む外部デバイス インターフェイス サブシステムのライブラ リが提供されて

います。 インターフェイス サブシステムは、 ボード専用ポート接続を指定する Gateway ブロ ッ ク

を使用して構築されています。 シ ミ ュレーシ ョ ン中、 これらのサブシステムはその他の SystemGenerator サブシステムと同様に処理されます (倍精度からザイ リ ンク ス固定小数点型への変換を

実行)。 System Generator でデザインがハードウェアにコンパイルされる と、Gateway ブロ ッ クに関

連する信号がハードウェアで指定した外部デバイスに接続されます。

182 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 183: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ハードウェア協調シミ ュレーシ ョ ンでの I/O ポート

ハードウェア協調シ ミ ュレーシ ョ ン ブロッ クには、外部インターフェイスにボード専用ポートは含

まれません。 これは、 モデルにボード専用ポートに対応する Gateway ブロッ クがある場合、デザイ

ンをハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルしたと きに、 対応するポートが実際のハー

ド ウェアではな くシ ミ ュレーシ ョ ン モデルに接続されます。 ポート を実際のポート に接続するに

は、 メモ リにマップされない Gateway ブロ ッ クを使用する必要があ り ます。 メモ リにマップされな

いポートについては、 「新規プラ ッ ト フォームのサポート 」 を参照して ください。

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

System Generator では、 イーサネッ ト接続を介した FPGA プラ ッ ト フォームとの高スループッ ト

通信を可能にするハードウェア協調シ ミ ュレーシ ョ ン インターフェイスが提供されています。 これ

らのインターフェイスでは、プログラム ケーブルを使用した場合の通信範囲の制限をなく し、 リ ア

ルタ イム アプ リ ケーシ ョ ンでのバン ド幅も広く な り ます。 デバイス コンフ ィ ギュレーシ ョ ンを

イーサネッ トでサポート されるので、 プログラム ケーブルは必要あ り ません。

2 種類のイーサネッ ト ハード ウェア協調シ ミ ュレーシ ョ ンがサポート されています。 ポイン ト ツー

ポイン ト イーサネッ ト協調シ ミ ュレーシ ョ ンでは、PC と FPGA プラ ッ ト フォーム間で直接的なポ

イン ト ツーポイン ト イーサネッ ト接続を使用して、高パフォーマンス協調シ ミ ュレーシ ョ ン環境が

提供されます。 ネッ ト ワーク ベースのイーサネッ ト協調シ ミ ュレーシ ョ ンでは、IPv4 ネッ ト ワーク

インフラス ト ラ クチャを介して リモート FPGA との通信が可能です。

System Generator for DSP ユーザー ガイド japan.xilinx.com 183リ リース 10.1.2 2008 年 6 月

Page 184: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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

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

をそのまま使用した協調シ ミ ュレーシ ョ ン インターフェイスが提供されます。 このイーサネッ ト接

続はレイヤ 2 (データ リ ンク層) イーサネッ ト接続であ り、FPGA 開発ボード とホス ト PC をネッ ト

ワーク ルート装置なしで接続します。 広く普及した高度なイーサネッ ト技術を活用する こ とによ

り、 外部 FPGA デバイスに対してバンド幅の広い協調シ ミ ュレーシ ョ ンを実行可能です。

インターフェイスの機能

インターフェイスでは、 10/100/1000Mbps の半二重/全二重モードがサポート されています。 ギガ

ビッ ト イーサネッ ト では、 元の接続でイネーブルになっていれば、 ジャンボ フレームもサポート

されます。 FPGA デバイス コンフ ィギュレーシ ョ ンでは、ザイ リ ンクス パラレル ケーブル IV また

はザイ リ ンクス プラ ッ ト フォーム ケーブル USB を介した JTAG ベースのコンフ ィギュレーシ ョ

ン、あるいは協調シ ミ ュレーシ ョ ンと同じポイン ト ツーポイン ト イーサネッ ト接続を介したイーサ

ネッ ト ベースのコンフ ィギュレーシ ョ ンがサポート されます。

メモ : この協調シ ミ ュレーシ ョ ン インターフェイスでは、評価版のイーサネッ ト MAC コアを使用

しています。 評価版であるため、 ターゲッ ト FPGA で連続的に長時間 (約 7 時間) 使用する と、 動

作しな くな り ます。 シ ミ ュレーシ ョ ンを再開する と、 コアは再び動作するよ うにな り ます。 コアの

正規版の入手方法は、 次の Web サイ ト を参照してください。

http://japan.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=TEMAC

サポート される FPGA 開発プラ ッ ト フォーム

「イーサネッ ト ベース ハードウェア協調シ ミ ュレーシ ョ ン」 に、ポイン ト ツーポイン ト イーサネッ

ト ハード ウェア協調シ ミ ュレーシ ョ ンをサポー ト する開発プラ ッ ト フォームおよびそのインス

トール手順へのリ ンクが リ ス ト されています。

協調シミ ュレーシ ョ ン ブロッ クのパラ メータ設定

ポイン ト ツーポイン ト イーサネッ ト協調シ ミ ュレーシ ョ ン インターフェイスに特有のパラ メータ

がいくつかあ り ます。 このセクシ ョ ンでは、 これらのパラ メータの設定方法を説明します。 すべて

のブロ ッ ク パラ メータの詳細は、 「Point-to-point Ethernet Co-Simulation」 を参照してください。

1. [Basic] タブで、 協調シ ミ ュレーシ ョ ンのク ロッ ク ソースを選択します。

クロックを選択

184 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 185: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

2. [Configuration] タブで、 コンフ ィギュレーシ ョ ン方法を選択します。

♦ [Download cable] で、 [Point-to-point Ethernet] をオンにします。

♦ JTAG ベースのダウンロード ケーブル ([Parallel Cable IV] または [Platform USB]) を選

択した場合は、 ケーブル スピードを適切な値に変更します。

♦ [Configuration timeout (ms)] は、必要な場合にのみ変更します。 ほとんどの場合は、デフォ

ル ト値で十分です。 デバイスのコンフ ィギュレーシ ョ ンが完了した後に FPGA プラ ッ ト

フォームとのネッ ト ワーク接続を再確立するのに時間がかかる場合は、 この値を大き くす

る必要があ り ます。

♦ ML402 ボードにビデオ I/O ドータ カードが接続されている場合は、 [Configurationprofile] で [Video I/O daughter card (VIODC)] を選択します。

3. [Ethernet] タブで、 イーサネッ ト インターフェイス設定を選択します。

♦ [Host interface] で、 協調シミ ュレーショ ン用のネッ ト ワーク インターフェイスを選択し

ます。

インターフ ェイスを選択

System Generator for DSP ユーザー ガイド japan.xilinx.com 185リ リース 10.1.2 2008 年 6 月

Page 186: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

メモ : ド ロ ップダウン リ ス トには、ホス トにインス トールされているイーサネッ ト互換の

ネッ ト ワーク インターフェイスで、 10/100/1000Mbps をサポート し、 現在イネーブルで

アクテ ィブ イーサネッ ト セグ メン トに接続されているもののみが表示されます。 予測さ

れるターゲッ ト インターフェイスが表示されない場合は、 接続を確認して [Refresh] をク

リ ッ ク し、 リ ス ト をアップデート してください。

♦ ド ロ ップダウン リ ス トの下のボッ クスに、選択したインターフェイスに関する情報が表示

されます。 情報を参照して適切なインターフェイスが選択されているこ とを確認し、 必要

に応じて OS のネッ ト ワーク設定を変更します。

4. 選択したコンフ ィギュレーシ ョ ン方法によって、[FPGA interface] の [MAC address] の変更が

必要な場合があ り ます。

a. ポイン ト ツーポイン ト イーサネッ ト ベースのコンフ ィギュレーシ ョ ンでは、MAC アドレ

スを次のよ うに確認します。

コンフ ィギュレーシ ョ ン ブート ローダを実行している と きに、ターゲッ ト ボードの LCD に表

示される MAC アドレスを確認します。 協調シ ミ ュレーシ ョ ン ブロ ッ クのデフォルト値が一致

していない場合は、[MAC address] を変更します。 ML402 ボードの MAC アドレスの設定につ

いては、 「イーサネッ ト MAC アドレス と IPv4 アドレスの設定 (オプシ ョ ン)」 を参照してくだ

さい。

メモ : MAC アド レスは、 2 桁の 16 進数 6 個をコロンで区切って指定します (00:0a:35:11:22:33など )。

デザインの協調シミ ュレーシ ョ ン

ブロ ッ ク パラ メータを設定したら、 Simulink モデルのツールバーで [シ ミ ュレーシ ョ ンの開始] をク リ ッ ク して協調シ ミ ュレーシ ョ ンを開始します。 System Generator で自動的にデバイスのコン

フ ィギュレーシ ョ ンが実行され、 協調シ ミ ュレーシ ョ ン用にテス ト中のデザイン (DUT) が FPGAデバイスに転送されます。 プロセスのステータスを示すダイアログ ボッ クスが表示されます。

1. ブロ ッ ク パラ メータで指定した入力ビッ ト ス ト リームに基づいて、 終的なコンフ ィギュレー

シ ョ ン ファ イルが生成されます。

186 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 187: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

2. 終的なコンフ ィギュレーシ ョ ン ファ イルが選択したダウンロード ケーブルを使用してター

ゲッ ト ボードに転送され、 FPGA デバイスのコンフ ィギュレーシ ョ ンに使用されます。 ポイン

ト ツーポイン ト イーサネッ ト接続を介したコンフ ィギュレーシ ョ ンの進行状況がダイアログ

ボッ クスに表示されます。

3. デバイスのコンフ ィギュレーシ ョ ンが完了する と、協調シ ミ ュレーシ ョ ン エンジンでターゲッ

ト ボードへの接続が再確立され、 デザインの協調がシ ミ ュレーシ ョ ンが開始します。

既知の問題

• ポイン ト ツーポイン ト イーサネッ ト接続でのデータ転送で問題が発生した場合や、安定性の問

題が発生した場合は、Intel プラ ッ ト フォームのハイパースレッディングをディ スエーブルして

ください。

• IP フラグメンテーシ ョ ンは、 ネッ ト ワーク ベースのイーサネッ ト コンフ ィギュレーシ ョ ンで

サポート されていません。 ホス ト と ターゲッ ト FPGA プラ ッ ト フォーム間の接続で、 フラグメ

ンテーシ ョ ンなしで 1300 バイ ト以上の MTU (Maximum Transmission Unit) を処理できるこ

とを確認してください。

ネッ トワーク ベースのイーサネッ ト ハードウェア協調シミ ュレーシ ョ ン

インターフェイスの機能

インターフェイスでは、10/100/1000Mbps の半二重/全二重モードがサポート されています。 FPGAデバイスのコンフ ィギュレーシ ョ ンでは、 協調シ ミ ュレーシ ョ ンと同じネッ ト ワーク接続を介した

イーサネッ ト ベースのコンフ ィギュレーシ ョ ンがサポート されており、 プログラム ケーブル (パラ

レル ケーブル IV など) は必要あ り ません。

メモ : この協調シ ミ ュレーシ ョ ン インターフェイスでは、評価版のイーサネッ ト MAC コアを使用

しています。 評価版であるため、 ターゲッ ト FPGA で連続的に長時間 (約 7 時間) 使用する と、 動

作しな くな り ます。 シ ミ ュレーシ ョ ンを再開する と、 コアは再び動作するよ うにな り ます。 コアの

正規版の入手方法は、 次の Web サイ ト を参照してください。

http://japan.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=TEMAC

System Generator for DSP ユーザー ガイド japan.xilinx.com 187リ リース 10.1.2 2008 年 6 月

Page 188: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

サポート される FPGA 開発ボード

ネッ ト ワーク ベースのイーサネッ ト 協調シ ミ ュ レーシ ョ ンでは、 ザイ リ ン ク ス ML402 および

ML506 開発プラ ッ ト フォームがサポート されています。

セッ トアップ手順

1. ネッ ト ワーク ベースのイーサネッ ト協調シ ミ ュレーシ ョ ンでは、 ネッ ト ワーク コンフ ィギュ

レーシ ョ ンを介してデバイスがコンフ ィギュレーシ ョ ンされます。 ネッ ト ワーク コンフ ィギュ

レーシ ョ ンを使用する前に、 IP アドレス、 MAC アドレス、 コンフ ィギュレーシ ョ ン サーバー

が System ACE CompactFlash で適切に設定する必要があ り ます。 設定方法の詳細は、「イーサ

ネッ ト MAC アドレス と IPv4 アドレスの設定 (オプシ ョ ン)」 を参照してください。

2. ターゲッ ト FPGA は、 UDP ポート 9999 から信号を受信します。 ネッ ト ワークで関連する通

信が遮断されていないこ とを確認してください。

既知の問題

IP フラグメンテーシ ョ ンは、 ネッ ト ワーク ベースのイーサネッ ト協調シ ミ ュレーシ ョ ン インター

フェイスでサポート されていません。 ホス ト と ターゲッ ト FPGA プラ ッ ト フォーム間の接続で、 フ

ラグメンテーシ ョ ンなしで 1300 バイ ト以上の MTU (Maximum Transmission Unit) を処理できる

こ とを確認してください。

188 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 189: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

共有メモリのサポートR

共有メモリのサポート

System Generator のハード ウェア協調シ ミ ュレーシ ョ ン インターフェ イスでは、 共有メモ リ ブロ ッ クおよび共有メモ リ ブロ ッ クから作成されたブロ ッ ク (共有 FIFO、 共有レジス タなど) をFPGA ハードウェアにコンパイルし、 協調シ ミ ュレーシ ョ ンできます。 これらのインターフェイス

によ り、ハード ウェア ベースの共有メモ リ リ ソースを、ホス ト PC の共通アドレス空間にマップす

るこ とが可能です。 共有メモ リ を System Generator 協調シ ミ ュレーシ ョ ン ハード ウェアに適用す

る と、 PC と FPGA 間でデータを高速に転送でき、 リ アルタイム ハードウェア協調シ ミ ュレーシ ョ

ン機能が強化されます。 このセクシ ョ ンでは、 System Generator のハード ウェア協調シ ミ ュレー

シ ョ ンで共有メモ リ を使用する方法を説明します。

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

ン用の共有メモリのコンパイル

System Generator デザインに共有メモリ ブロ ッ クが含

まれている際に、 デザインをハードウェア協調シ ミ ュ

レーシ ョ ン用にコンパイルする方法を説明します。

非保護の共有メモリの協調シ ミ ュ

レーシ ョ ン

非保護のアクセス モードに設定された共有メモリ ブロ ッ クが、 ハードウェア協調シ ミ ュレーシ ョ ン中にど

のよ うに動作するかを説明します。

ロ ッ ク共有メモリの協調シ ミ ュ

レーシ ョ ン

ロ ッ ク アクセス モードに設定された共有メモ リ ブロ ッ

クが、 ハードウェア協調シ ミ ュレーシ ョ ン中にどのよ

うに動作するかを説明します。

共有レジスタの協調シ ミ ュレー

シ ョ ン

System Generator デザインに共有レジスタが含まれて

いる際に、 デザインをハードウェア協調シ ミ ュレー

シ ョ ン用にコンパイルする方法を説明します。

共有 FIFO の協調シミ ュレーショ ン System Generator デザインに共有 FIFO が含まれてい

る際に、 デザインをハードウェア協調シ ミ ュレーシ ョ

ン用にコンパイルする方法を説明します。

共有メモリの制限 ハードウェア協調シ ミ ュレーシ ョ ンで共有メモ リ ブロ ッ クを使用する際の制限を示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 189リ リース 10.1.2 2008 年 6 月

Page 190: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ハードウェア協調シミ ュレーシ ョ ン用の共有メモリのコンパイル

System Generator では、 共有メモ リ ブロ ッ クおよび共有メモリ ブロ ッ クから作成されたブロ ッ ク

(共有 FIFO、共有レジスタなど) をハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルできます。 共有メモ リ を含むデザインをハード ウェア協調シ ミ ュレーシ ョ ン用にコンパイルするには、 通常の

System Generator デザインと同様に、 System Generator トークンのパラ メータ ダイアログ ボッ ク

スでコンパイル ターゲッ ト を設定し、[Generate] ボタンをク リ ッ ク します。 共有メモリ ブロ ッ クを

含むデザインは、「共有メモ リの制限」 に示す要件を満たしていれば、ハードウェア協調シ ミ ュレー

シ ョ ン用にコンパイルできます。

共有メモ リ をハード ウェア協調シ ミ ュレーシ ョ ン用にコンパイルする と、 コアまたは HDL コン

ポーネン トによ りハードウェアにインプ リ メン ト されます。 次の表に、 共有メモリ ブロ ッ クがハー

ドウェア インプリ メンテーシ ョ ンにどのよ うにマップされるかを示します。

共有メモ リ をハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルするには、2 つの方法があ り ます。

コンパイル方法は、 共有メモ リの名前がデザイン内で固有であるか、 同じ名前のパートナーがある

かによって異なり ます。 次に、 これらのコンパイル方法について説明します。

単一の共有メモリのコンパイル

共有メモ リ ブロッ クの名前がデザイン内で固有であれば、 単一である と判断されます。 単一の共有

メモ リ をハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルする と、System Generator でペアにな

る メモ リ が作成され、 ネッ ト リ ス ト に組み込まれます。 メモ リに PC と通信するためのインター

フェイス ロジッ クが追加されます。 共有メモリで協調シ ミ ュレーシ ョ ンを実行する と、 一方のメモ

リはSystem Generator デザインのロジッ クで使用され、 も う一方のメモリは PC インターフェイス

ロジッ ク と通信するために使用されます (下図を参照)。 このよ うになっているこ とで、 シ ミ ュレー

シ ョ ンを実行中に FPGA 内に組み込まれた共有メモリ との通信が可能になり ます。

To ブロック From ブロック ハードウェア インプリ メンテーシ ョ ン

Shared Memory Shared Memory Dual Port Block Memory 6.1

To FIFO To FIFO FIFO Generator 2.1

To Register To Register synth_reg_w_init.(vhd,v)

190 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 191: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

共有メモリのサポートR

共有メモ リ ハード ウェアと インターフェイス ロジッ クは、 デザインに生成されたハード ウェア協

調シ ミ ュレーシ ョ ン ブロ ッ クに完全に含まれます。 共有メモ リ を含むハードウェア協調シ ミ ュレー

シ ョ ン ブロ ッ クで協調シ ミ ュレーシ ョ ンを実行する と、 デザインのロジッ ク とホス ト PC ソフ ト

ウェアで FPGA 上の共通アドレス空間を共有できます。

メモ : ハードウェア共有メモリの名前は、元の共有メモリ ブロ ッ クで使用された共有メモ リの名前

と同じです。 たとえば、 共有メモ リ ブロ ッ クの名前が my_memory である場合、 このブロ ッ クの

ハードウェア インプリ メンテーシ ョ ンには my_memory という名前を使用してアクセスします。

FPGA 内に組み込まれたすべての共有メモ リは、それぞれの協調シ ミ ュレーシ ョ ン ブロ ッ クによ り

シ ミ ュレーシ ョ ンの前に自動的に作成され、 初期化されます。 これは、 ハード ウェア共有メモ リに

アクセスするその他の共有メモリ オブジェク トでは、 [Ownership and initialization] パラ メータを

[Owned and initialized elsewhere] に設定する必要があ り ます。 このよ うに設定する と、ソフ ト ウェ

ア ベースの共有メモリが FPGA 内の共有メモリに関連付けられます。

共有メモリ ペアのコンパイル

共有メモ リのペア (同じ名前の 2 つの共有メモ リ ) をハード ウェア協調シ ミ ュレーシ ョ ン用にコン

パイルするこ と も可能です。 この場合、 これらの 2 つの共有メモリはコンパイル中に 1 つのハード

ウェア インプリ メンテーシ ョ ンに統合されます。 単一共有メモリ とは異なり、共有メモリ ペアの両

側が System Generator ユーザー デザイン ロジッ クに接続されます。 たとえば次の図では、To FIFOと From FIFO の共有メモリ ペアのハード ウェア インプ リ メンテーシ ョ ンを示します。

共有メモ リの両側がユーザー デザイン ロジッ クに接続されるので、 これらの共有メモ リにホス ト

PC から直接通信するこ とは不可能です。

System Generator for DSP ユーザー ガイド japan.xilinx.com 191リ リース 10.1.2 2008 年 6 月

Page 192: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

共有メモリ情報の表示

ハードウェア協調シ ミ ュレーシ ョ ン ブロッ クでは、デザインの一部と してコンパイルされている共

有メモ リに関する情報を表示できます。 共有メモ リ を含むハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クのパラ メータ ダイアログ ボッ クスには、 次に示すよ うに [Shared Memories] タブがあ り ま

す。 このタブをク リ ッ クする と、 デザインに含まれる各共有メモ リの情報が表示されます。

共有メモ リの情報には、 デザインに含まれる各共有メモ リのタイプ、 ビッ ト幅、 ワード数が示され

ています。 Shared Memory ブロ ッ クの場合は、 [Access Protection] モード も示されます。 共有メモ

リ アイコンの横にあるプラス記号 (+) またはマイナス記号 (-) をク リ ッ クする と、 そのメモ リの情

報を表示または非表示にできます。

次の表に、 各共有メモ リのアイコンを示します。

メモリ タイプ アイコン

Shared Memory

From FIFO/To FIFO

From Register/To Register

192 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 193: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

共有メモリのサポートR

非保護の共有メモリの協調シミ ュレーシ ョ ン

非保護の共有メモ リ ブロッ クは、いつでも書き込みまたは読み出しを実行できます。 このタイプの

メモ リでは、 アクセスは排他的ではあ り ません。 非保護のハード ウェア共有メモ リに対するデータ

転送は、 ロ ッ ク共有メモ リで使用される高速データ転送とは異なり、 ワードごとに行われます。 ソフ ト ウェアとハードウェアの間でデータに一貫性を持たせるため、 ハードウェアと ソフ ト ウェアで

共有メモ リ データの 1 つのイ メージが共有されます。 このイ メージは、 デュアル ポート メモ リ を

使用して FPGA に保存されます。 System Generator では、 ハードウェア デザイン ロジッ ク とホス

ト PC 上のその他のソフ ト ウェア ベースの共有メモリ オブジェク ト で、 共有メモ リ データに同時

にアクセスするこ とが可能です。 ソフ ト ウェア共有メモ リ オブジェク トで共有メモ リに対してデー

タの読み出しまたは書き込みが実行される と、 プロキシによ りハード ウェア メモ リ リ ソース との

通信が処理されます。

次の図に、 ホス ト PC で実行される 3 つの共有メモリ と通信する、 FPGA にインプ リ メン ト された

非保護の共有メモ リの例を示します。 この例では、 ソフ ト ウェア共有メモ リ オブジェク トは、 同じ

共有メモ リ名 my_mem を指定するこ とによ り、ハードウェア共有メモリにアクセスします。 ソフ ト

ウェア共有メモ リの視点からは、共有メモリ リ ソースのインプ リ メンテーシ ョ ンは関係なく、ハー

ドウェア共有メモ リはほかの共有メモ リ オブジェク ト と同様に扱われます。 共有メモ リに対する読

み出しおよび書き込みは、 共有メモ リ API で実行されます。

メモ : すべての共有メモリ オブジェク ト を Simulink 環境で作成し、実行する必要はあ り ません。 次の図の C++ アプリ ケーシ ョ ンは、 共有メモリ API を使用してハードウェア共有メモリ と通信する

外部アプリケーシ ョ ンの単なる 1 例です。

ロック共有メモリの協調シミ ュレーシ ョ ン

ロ ッ ク アクセス モードでは、 System Generator 協調シ ミ ュレーシ ョ ン ハードウェアで共有メモ リ

オブジェク トの内容にアクセスする際、 ロ ッ クを取得する必要があ り ます。 ハード ウェアで共有メ

モ リのロ ッ クが取得される と、 メモ リの内容が高速データ転送を使用して FPGA に転送されます。

この方法では、 メモ リ バンド幅の広い System Generator ハード ウェア協調シ ミ ュレーシ ョ ン デザ

インをインプ リ メン トできます。 この方法の詳細は、「ハードウェア協調シ ミ ュレーシ ョ ンを使用し

た リアルタイム信号処理」 を参照してください。

System Generator for DSP ユーザー ガイド japan.xilinx.com 193リ リース 10.1.2 2008 年 6 月

Page 194: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ロ ッ ク共有メモ リで協調シ ミ ュレーシ ョ ンを実行する際は、 非保護の共有メモ リ とは異なり、 共有

メモ リ データの 2 つのイ メージが使用されます。 1 つのイ メージは、 FPGA のデュアル ポート メモ リ を使用して保存されます。 このイ メージは、 System Generator ハード ウェア協調シ ミ ュレー

シ ョ ン デザインと協調シ ミ ュレーシ ョ ン インターフェイス ロジッ クによ り アクセスされます。 もう 1 つのイ メージは、 ホス ト PC の共有メモ リ オブジェク ト と してインプ リ メン ト されます。 この

ソフ ト ウェア共有メモ リ イ メージは、 デザインで使用されるソフ ト ウェア共有メモ リ オブジェク

トによ りアクセスされます。

ロ ッ ク アクセス モードでは、 共有メモリにアクセスするソフ ト ウェア プロセスまたはハードウェ

ア回路は、 まずロ ッ クを取得する必要があ り ます。 ハード ウェアがメモ リのロ ッ クを保持している

場合は、 ソフ ト ウェア オブジェク トでメモ リの内容にアクセスできません。 同様に、 ソフ ト ウェア

オブジェク トがメモ リに対して操作を実行している場合は、 ハードウェアでメモ リに対して読み出

しまたは書き込みを実行するこ とはできません。 ロ ッ ク ハードウェア共有メモリには、 排他的なア

クセスを制御するための追加ロジッ クが含まれます。 ハード ウェアおよびソフ ト ウェアのロ ッ ク共

有メモ リのやり取り を、 次の図に示します。

赤色の丸は、 ロ ッ ク トークンを示します。 この トークンは、 ハードウェアまたはソフ ト ウェアのど

ちらにインプ リ メン ト されているかにかかわらず、どの共有メモリ オブジェク トにも渡すこ とがで

きます。 破線の丸はロッ クのプレースホルダを示し、 そのブロ ッ クにロ ッ クを渡すこ とができるこ

とを示します。 黄色のひし形は、 変更可能な トークンを示します。 この トークンは、 ハード ウェア

がメモ リのロ ッ クを保持している場合、ハード ウェア共有メモリ イ メージが変更可能であるこ とを

示します。 同様に、 ソフ ト ウェア共有メモ リ オブジェ ク ト がロ ッ クを保持している場合、 ソフ ト

ウェア共有メモ リ イ メージが変更可能です。

194 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 195: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

共有メモリのサポートR

2 つの共有メモリ イ メージがあるため、 イ メージが一貫するよ う ソフ ト ウェアとハードウェアの間

で同期化が必要になり ます。 この同期化は、 ロ ッ ク転送の際にソフ ト ウェアとハード ウェアの間で

メモ リ イ メージを転送するこ とによ り行われます。 System Generator は、ホス ト PC と FPGA 間で

高速データ転送を実行します。 次の図に、 これらの転送に関するセマンティ クスを示します。

共有レジスタの協調シミ ュレーシ ョ ン

To Register と From Register の共有レジスタのペアを生成し、 FPGA ハード ウェアで協調シ ミ ュ

レーシ ョ ンを実行できます。 共有レジスタ ペアと して認識させるには、 To Register ブロ ッ ク と

From Register ブロ ッ クに同じ名前を付けます。 ハード ウェアでは、共有レジスタは合成可能なレジ

スタ コンポーネン ト (VHDL) またはモジュール (Verilog) でインプ リ メ ン ト されます。 このセク

シ ョ ンでは、 単一の共有レジスタ と共有レジスタのペアが、 ハードウェア協調シ ミ ュレーシ ョ ンで

どのよ うに動作するかを説明します。

共有レジスタのペアを含むデザインをハード ウェア協調シ ミ ュレーシ ョ ン用にコンパイルする と、

ペアは 1 つのレジスタ インスタンスに置き換えられ、 レジスタの両側が元の System Generator ロジッ クからのユーザー デザイン ロジッ クに接続されます。 Multiple Subsystem Generator ブロ ッ ク

を使用してコンパイルしたデザインとは異なり、ハード ウェア レジスタのすべてのポートが同じ ク

ロ ッ ク ド メ インの信号に接続されます。 この場合、 すべてのレジスタ ポートがユーザー デザイン

ロジッ クに接続されているので、レジスタの制御は PC と FPGA ハードウェアの間で共有されませ

ん。 共有レジスタのペアをハードウェアにコンパイルするのは、 System Generator の Register また

は Delay ブロ ッ クをコンパイルするのと同等です。

単一の To Register または From Register ブロ ッ クをハード ウェア協調シ ミ ュレーシ ョ ン用にコン

パイルした場合、 インプ リ メンテーシ ョ ンは異なり ます。 To Register または From Register ブロ ッ

クは 1 つのレジスタに置き換えられますが、 レジスタは PC インターフェイス と FPGA ロジッ クの

両方に接続されます。 元のモデルのレジスタ側はユーザー デザイン ロジッ クに接続され、 も う一方

は PC と通信するデータ ポートおよび制御ポートに接続されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 195リ リース 10.1.2 2008 年 6 月

Page 196: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

たとえば次の図では、 From Register ブロ ッ クをハード ウェア協調シ ミ ュレーシ ョ ン用にコンパイ

ルする と、 dout レジスタ ポートはユーザー デザインに接続され、 din、 ce、 clk レジスタ ポートは

PC と通信する制御ポー ト およびデータ ポー ト に接続されます。 この方法では、 PC で SystemGenerator のハードウェア協調シ ミ ュレーシ ョ ン インターフェイスを使用してレジスタに書き込み

を実行するこ とが可能です。

To Register ブロッ クをハード ウェア協調シ ミ ュレーシ ョ ン用にコンパイルする と、次の図に示すよ

うに、入力ポートがユーザー ロジッ クに接続され、出力ポートが PC インターフェイス ロジッ クに

接続されます。 ハード ウェア協調シ ミ ュレーシ ョ ン中、 も う一方の共有レジスタ (To Register また

は From Register ブロ ッ ク )、 C プログラムまたは実行ファイル (System Generator API)、 あるいは

MATLAB プログラムを使用して共有レジスタにアクセスできます。

ハード ウェア協調シ ミ ュレーシ ョ ンを使用するデザインでは、 通常共有レジスタのペアはソフ ト

ウェアと FPGA ハード ウェアに分散されます。 つま り、 ペアの一方は FPGA にインプ リ メン ト さ

れ、も う一方は To Register または From Register を使用してソフ ト ウェアでシ ミ ュレーシ ョ ンされ

ます。 ソフ ト ウェアの To Register ブロ ッ クにデータが書き込まれる と、 ハード ウェア レジスタに

同じデータが書き込まれ、 データがハード ウェア レジスタに書き込まれる と、 同じデータが FromRegister ブロ ッ クによ り読み出されます。 ソフ ト ウェア共有レジスタは、 ハード ウェア協調シ ミ ュ

レーシ ョ ン用にコンパイルされた共有レジスタの名前を指定するこ とによ り、 ハードウェア共有レ

ジスタ と接続できます。

メモ : FPGA 協調シ ミ ュレーシ ョ ン デザインに組み込まれたすべての共有メモリの名前は、ハード

ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クのパラ メータ ダイアログ ボッ クスの [Shared Memories] タブに示されます。

ソ フ ト ウ ェア/ハード ウ ェア共有 メ モ リ ペアで協調シ ミ ュ レーシ ョ ンを実行する と、 SystemGenerator で PC と FPGA ハードウェア間の ト ランザクシ ョ ンが制御されます。 ソフ ト ウェアでシ

ミ ュレーシ ョ ンされる共有レジスタ ペアの動作は、PC と FPGA ハードウェアに分散された共有レ

ジスタ ペアと同じになるはずです。

196 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 197: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

共有メモリのサポートR

共有 FIFO の協調シミ ュレーシ ョ ン

To FIFO と FIR Compiler 4.0 の共有 FIFO のペアを生成し、ハードウェアで協調シ ミ ュレーシ ョ ン

を実行できます。 共有 FIFO ペアと して認識させるには、To FIFO ブロ ッ ク と From FIFO ブロ ッ ク

に同じ名前を付けます。 共有 FIFO は、 FIFO Generator コアを使用してハードウェアにインプ リ メ

ン ト されます。 このコアは、独立したクロ ッ ク (非同期) とデータ保存用にブロ ッ ク メモ リ を使用し

てコンフ ィギュレーシ ョ ンされます。 このセクシ ョ ンでは、 共有 FIFO の協調シ ミ ュレーシ ョ ンが

有益な理由と、 これらのブロ ッ クのハードウェアでの動作を説明します。

非同期 FIFO は、一般的に複数クロ ッ ク アプリ ケーシ ョ ンでクロ ッ ク ド メ インを切り替えるために

使用されます。 ハード ウェア協調シ ミ ュレーシ ョ ンでフ リーランニング ク ロ ッ ク モードを使用し

ている場合、 FPGA は Simulink シ ミ ュレーシ ョ ン とは非同期に動作します。 フ リーランニング クロ ッ ク モードを使用する と、Simulink シ ミ ュレーシ ョ ン ク ロ ッ ク ド メ インと FPGA フ リーランニ

ング クロ ッ ク ド メ インの 2 つのクロ ッ ク ド メ インができるこ とにな り ます。 これらのデザインで

共有 FIFO を使用する と、ホス ト PC と FPGA プラ ッ ト フォームの間で安全に確実にデータを転送

できます。

共有 FIFO は、 協調シ ミ ュレーシ ョ ン中のバース ト転送もサポートするので、 データのベクタまた

はフレームを作成し、 1 つの ト ランザクシ ョ ンで FPGA に転送するこ とが可能です。 これらのイン

ターフェイスを使用して、通常のハード ウェア協調シ ミ ュレーシ ョ ンで可能なシ ミ ュレーシ ョ ン スピード以上のスピードを達成できます。 詳細は、「ハードウェア協調シ ミ ュレーシ ョ ンを使用したフ

レーム ベースの シ ミ ュレーシ ョ ン」 を参照してください。

共有 FIFO ペアを協調シ ミ ュレーシ ョ ン用に生成する と、 2 つの共有 FIFO ブロ ッ クが 1 つの非同

期 FIFO コアに置き換えられます。 次の図に示すよ うに、 FIFO の読み出し /書き込み側は、 FromFIFO および To FIFO ブロ ッ クに接続されたユーザー デザイン ロジッ ク (元の System Generatorモデルから作成されたロジッ ク ) に接続されます。 FIFO の両側がハード ウェアのユーザー ロジッ

クに接続されるので、 PC とデザインで FIFO の制御は共有されず、 FIFO は通常の FIFO ブロ ッ ク

を含む System Generator デザインと同様に動作します。

FIFO にはそれぞれ独立したク ロ ッ ク ポートがあ り ますが、 FIFO ペアをコンパイルする と、 両方

のクロ ッ ク ポートが同じ協調シ ミ ュレーシ ョ ン クロ ッ クで駆動されます。 これは、共有 FIFO ペア

を Multiple Subsystem Generator ブロ ッ クを使用してコンパイルする場合と異なり ます。この場合、

ク ロ ッ クは異なるク ロ ッ ク ド メ インから供給されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 197リ リース 10.1.2 2008 年 6 月

Page 198: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

1 つの共有 FIFO ブロ ッ クは、共有 FIFO ペアとは処理が異なり ます。 1 つの To FIFO または FromFIFO ブロ ッ クをハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルする と、1 つの非同期 FIFO コアに置き換えられ、 FIFO の一方 (System Generator で使用されていない共有 FIFO 側) は PC イン

ターフェイス ロジッ クに接続され、 も う一方は元の To FIFO または From FIFO ブロ ッ クに接続さ

れたユーザー ロジッ ク デザインに接続されます。 この方法では、FIFO は PC と FPGA デザインの

両方で制御されます。

次の図に示すよ うに、To Register ブロ ッ クをハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルす

る と、FIFO の書き込み側はユーザー デザインの To FIFO に接続された同じロジッ クに接続されま

す。 読み出し側は PC インターフェイスに接続され、シ ミ ュレーシ ョ ン中に PC で FIFO からデータ

を読み出すこ とができます。

次の図は、From FIFO ブロ ッ クがハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルした場合を示

しており、 接続は逆になっています。 FIFO の書き込み側が PC インターフェイス ロジッ クに接続

され、読み出し側がユーザー デザイン ロジッ クに接続されます。 ホス ト PC によ り FIFO にデータ

が書き込まれ、 デザイン ロジッ クで FIFO からのデータを読み出すこ とができます。

198 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 199: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ザイリンクス ツール フローの設定R

ハードウェア協調シ ミ ュレーシ ョ ンを使用するデザインでは、 通常共有 FIFO のペアはソフ ト ウェ

アと FPGA ハードウェアに分散されます。 つま り、ペアの一方は FPGA にインプ リ メン ト され、も

う一方は To FIFO または From FIFO を使用してソフ ト ウェアでシ ミ ュレーシ ョ ンされます。 ソフ

ト ウェア部分とハード ウェア部分で、 1 つの完全な非同期 FIFO が構成されます。 ソフ ト ウェア/ハード ウェア共有 FIFO ペアで協調シ ミ ュレーシ ョ ンを実行する と、 System Generator で PC とFPGA ハード ウェア間のト ランザクシ ョ ンが制御されます。

シ ミ ュレーシ ョ ン中にソフ ト ウェアの To FIFO ブロ ッ クにデータが書き込まれる と、ハードウェア

FIFO に同じデータが書き込まれ、 FIFO を読み出すこ とによ りハードウェアのデザインでこのデー

タを取得できます。 同様に、 データがハード ウェア FIFO に書き込まれる と、 同じデータを FromRegister ブロ ッ ク によ り 読み出すこ と ができ ます。 共有 FIFO ブロ ッ ク の empty、 full、rd_data_cout、 wr_data_count によ り、対応するハード ウェア FIFO のステート を判断できます。 ソフ ト ウェア共有 FIFO は、 ハード ウェア協調シ ミ ュレーシ ョ ン用にコンパイルされた共有 FIFO の名前を指定するこ とによ り、 ハードウェア共有 FIFO と接続できます。

メモ : FPGA 協調シ ミ ュレーシ ョ ン デザインに組み込まれたすべての共有メモリの名前は、ハード

ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クのパラ メータ ダイアログ ボッ クスの [Shared Memories] タブに示されます。

共有メモリの制限

共有メモ リ、 共有レジスタ、 共有 FIFO ブロ ッ クをハード ウェア協調シ ミ ュレーシ ョ ンで使用する

System Generator デザインには、 次の制限が適用されます。

• 共有メモ リのアクセス保護モードは、 ハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルした

後は変更できません。

• 共有メモ リのアドレス ポートの幅は 24 ビッ ト以下で、 16,777,216 ワードのアドレス空間にア

クセスできます。

• 共有メモ リ、 レジスタ、 FIFO のデータ ポート幅は、 現在のと ころ 32 ビッ ト以下に制限され

ています。

• 共有メモ リおよび FIFO は、ハード ウェアではブロ ッ ク メモ リ を使用してインプ リ メン ト され

ます。 分散メモ リ または外部メモ リでのインプ リ メンテーシ ョ ンはサポート されていません。

• 同じ名前の共有メモ リ を 3 つ以上ハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルするこ

とはできません。

• 同じ共有メモ リ名を持つハードウェア協調シ ミ ュレーシ ョ ン ブロ ッ クを、同じデザインで同時

に 2 つ以上使用するこ とはできません。

ザイリンクス ツール フローの設定

デザインを System Generator ハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルする と、XFLOWという コマンド ラ イン ツールを使用して、 デザインが選択した FPGA プラ ッ ト フォーム用にイン

プ リ メン トおよびコンフ ィギュレーシ ョ ンされます。 XFLOW では、 コンパイルでデザインに実行

する必要のあるプログラムのシーケンスを指定するさまざまなフローが定義されています。 必要な

出力 (ハード ウェア協調シ ミ ュレーシ ョ ンの場合はコンフ ィギュレーシ ョ ン ビッ ト ス ト リーム) を得るためには、 通常複数のフローを実行する必要があ り ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 199リ リース 10.1.2 2008 年 6 月

Page 200: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

コンフ ィギュレーシ ョ ン ビッ ト ス ト リームの生成には、 インプ リ メ ンテーシ ョ ン と コンフ ィギュ

レーシ ョ ンの 2 つのフローが使用されます。 インプ リ メ ンテーシ ョ ン フローでは、 合成ツールの

ネッ ト リ ス ト出力 (EDIF または NGC) が配置配線された NCD ファ イルにコンパイルされます。 これには、 ザイ リ ンクス ツール NGDBuild、 MAP、および PAR が使用されます。 インプ リ メンテー

シ ョ ン フローではタイ ミ ング解析のために TRACE も実行できますが、 通常のコンパイル プロセ

スでは実行されません。 コンフ ィギュレーシ ョ ン フローでは、 配置配線された NCD ファ イルを入

力と して使用して、 FPGA ビッ ト ス ト リームを作成するのに必要なツールが実行されます。

インプ リ メ ンテーシ ョ ン フローと コンフ ィギュレーシ ョ ン フローには、 それぞれ XFLOW オプ

シ ョ ン ファ イルが関連付けられています。 XFLOW オプシ ョ ン ファ イルでは、 そのフローで実行

する必要のあるプログラム と コマン ド ラ イン オプシ ョ ンが定義されます。 ハード ウェア協調シ

ミ ュレーシ ョ ンの各コンパイル ターゲッ ト に対して、 デフォルトのコンフ ィギュレーシ ョ ン オプ

シ ョ ンを定義するオプシ ョ ン ファ イルが提供されています。 場合によって、 デフォルトのオプシ ョ

ン ファ イルとは異なる設定を使用する こ とがあ り ます (PAR の配置エフォート レベルを上げるな

ど)。 そのよ うな場合は、 独自のオプシ ョ ン ファ イルを作成するか、 デフォルトのオプシ ョ ン ファ

イルを変更します。

次の図に示す [Hardware Co-Simulation Settings] ダイアログ ボッ クスで、使用するオプシ ョ ン ファ

イルを指定できます。

[Hardware Co-Simulation Settings] ダイアログ ボッ クスのパラ メータは、 次のとおりです。

• [Implementation Flow] : インプ リ メンテーシ ョ ン フローで使用するオプシ ョ ン ファ イルを指

定します。 デフォルトでは、 コンパイル ターゲッ トに提供されているインプ リ メンテーシ ョ ン

オプシ ョ ン ファ イルが使用されます。

• [Configuration Flow] : コンフ ィギュレーシ ョ ン フローで使用するオプシ ョ ン ファ イルを指定

します。 デフォルトでは、コンパイル ターゲッ トに提供されているコンフ ィギュレーシ ョ ン オプシ ョ ン ファ イルが使用されます。

ザイ リ ンクス ISE に、XFLOW オプシ ョ ン ファ イルの例が含まれています。 これらの ファ イルは、

ISE のイ ン ス ト ール デ ィ レ ク ト リ (C:\Xilinx\10.1\ISE など) の xilinx\data デ ィ レ ク ト リ

(C:\Xilinx\10.1\ISE\xilinx\data など) に含まれています。 よ く使用されるインプ リ メ ンテーシ ョ ン

オプシ ョ ン ファ イルは、 次のとおりです。

• balanced.opt

• fast_runtime.opt

• high_effort.opt

200 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 201: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ンを使用したフレーム ベースの シミ ュレーシ ョ ンR

メモ : 指定したオプシ ョ ン ファ イルによ り、System Generator のハードウェア協調シ ミ ュレーシ ョ

ン フローでエラーが発生する こ とがあるので、 デフォル ト のオプシ ョ ン ファ イルを変更する場合

はバッ クアップ コピーを作成して ください。 また、ほとんどの FPGA ハード ウェア プラ ッ ト フォー

ムには特定のコンフ ィギュレーシ ョ ン パラ メータ要件があるので、 コンフ ィギュレーシ ョ ン オプ

シ ョ ン ファ イルを変更する際は注意が必要です。

ハードウェア協調シミ ュレーシ ョ ンを使用したフレーム ベースのシミ ュレーシ ョ ン

プログラマブル デバイスの大型化および処理能力の向上に伴い、シ ミ ュレーシ ョ ン時間が長くなっ

ています。 デザインのサイズおよび複雑さによっては、 シ ミ ュレーシ ョ ンに数日かかるこ と もあ り

ます。 ほとんどのシステムでは、デザインが正常に機能し、使用できるよ うにするためには、シ ミ ュ

レーシ ョ ンを何回も実行する必要があるので、これは深刻な問題です。 そのため、System Generatorでは、 FPGA デザインのシ ミ ュレーシ ョ ンを大幅に高速化するハードウェア協調シ ミ ュレーシ ョ ン

インターフェイスが提供されています。

ハードウェア協調シ ミ ュレーシ ョ ンを使用してどの程度の高速化を達成できるかには、 デザインの

サイズ、 モデルのポート数、 ハード ウェアのオーバーサンプリ ング レート など、 いくつかの要素が

影響します。 通常の操作では、 Simulink の各シ ミ ュレーシ ョ ン サイ クルごとに PC が FPGA と通

信します。 このソフ ト ウェアとハード ウェア間の ト ランザクシ ョ ンは大きなオーバーヘッ ド とな

り、シ ミ ュレーシ ョ ン パフォーマンスを制限します。 使用する協調シ ミ ュレーシ ョ ン インターフェ

イスも影響を及ぼします。 PCI などのインターフェイスは、 JTAG などのほかのインターフェイス

よ り も高速です。 ある程度大型のデザインでは、 通常ハードウェア協調シ ミ ュレーシ ョ ンによ りシ

ミ ュレーシ ョ ンが 1 桁高速化されます。

上記の点を考慮した上で、シ ミ ュレーシ ョ ン パフォーマンスをさ らに向上させる方法がいくつかあ

り ます。 PC がハード ウェアと通信するたびに、 オーバーヘッ ドが発生します。 FPGA ト ランザク

シ ョ ンの数を削減するには、Simulink ベクタ とフレーム信号を使用するのが 1 つの方法です。 この

セクシ ョ ンでは、 Simulink ベクタ とフレーム信号を使用する FPGA ト ランザクシ ョ ンを 「ベク タ

転送」 と呼びます。 この方法では、 できるだけ多くの入力データ サンプルを 1 つにまとめ、 FPGAでこれらを 1 つの ト ランザクシ ョ ンで処理させます。 FPGA での ト ランザクシ ョ ンの数が減れば、

シ ミ ュレーシ ョ ン パフォーマンスが向上します。

このチュート リ アルでは、 Simulink ベク タ と フレーム信号を使用して、 通常ハード ウェア協調シ

ミ ュレーシ ョ ン以上のシ ミ ュレーシ ョ ン パフォーマンスを達成します。 この方法を、フ ィルタ デザ

イン例を使用して説明します。

詳細を説明する前に、 どのよ うにこれを達成するかの概念を説明します。 要約する と、 Simulink のシ ミ ュレーシ ョ ンで次を実行するこ とになり ます。

• 複数のスカラ入力データ値をバッファを介して Simulink ベクタに格納します。

• バース ト転送を使用して、 ベク タ データを FPGA 上のバッファに転送します。

• FPGA をフ リーランニング ク ロ ッ ク モードを使用して、入力バッファ全体を順に処理します。

• FPGA でデータを出力バッファに書き込みます。

• 出力バッファの内容を Simulink に転送し、 Simulink ベクタのデータを構築します。

• ベクタを複数の出力スカラ値に変換します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 201リ リース 10.1.2 2008 年 6 月

Page 202: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

共有メモリ

System Generator でベクタ転送を使用できるよ うにするには、入力バッファ と出力バッファを追加

する必要があ り ます。 ハード ウェアでは、 これらのバッファは内部メモ リ (BRAM など) を使用し

てインプ リ メン ト され、PC によ り FPGA に書き込まれるシ ミ ュレーシ ョ ン データおよび FPGA から読み出されるシ ミ ュレーシ ョ ン データのベクタを格納するのに使用されます。 バッファの 大サ

イズは、 ターゲッ ト デバイス上で使用可能な内部メモ リ の容量によって制限されます。 SystemGenerator では、 これらのバッファをインプ リ メ ン トする インターフェイス と して共有メモ リ ブロ ッ クが提供されています。

標準の FIFO またはメモリ ブロ ッ クを使用しないのは、 ハードウェア協調シ ミ ュレーシ ョ ンで使用

されるバッファは、標準の FIFO およびメモリ とは異なり、PC および FPGA ユーザー デザイン ロジッ クの両方で制御する必要があるからです。 System Generator で提供されている標準の FIFO およびメモ リ ブロッ クは、 ユーザー デザイン ロジッ クにしか接続できません。

この制御が可能な共有メモ リには、 ロ ッ ク共有メモ リ と共有 FIFO があ り ます。 これらのブロ ッ ク

のデータ格納方法、および FPGA とのバース ト転送のタイ ミ ングと方法を指定するハンドシェーク

プロ ト コルは異な り ます。 このチュート リ アルでは、 主に共有 FIFO バッファに焦点を置きます。

ロ ッ ク共有メモ リの使用方法の例は、「ハードウェア協調シ ミ ュレーシ ョ ンを使用した リアルタイム

信号処理」 を参照して く ださい。 ロ ッ ク共有メ モ リ と FIFO ブロ ッ クは、 [Xilinx Blockset] →[Shared Memory ] ラ イブラ リにあ り ます。

共有 FIFO はベクタ転送を可能にする上で重要な役割を果たすので、 まず共有 FIFO の動作につい

て簡単に説明します。 共有 FIFO のペアは、同じ名前 (上図では Bar) を指定した To FIFO ブロ ッ ク

と From FIFO ブロ ッ クで構成されます。 To FIFO ブロ ッ クは書き込み側の制御信号を供給し、FromFIFO ブロ ッ クは書き込み側の制御信号を供給します。 共有 FIFO のペアは概念的には 1 つの FIFOと同じで、 両側の制御信号はグラフ ィ ッ ク上では接続されていませんが、 同じ FIFO メモ リ空間を

共有します。 たとえば、To FIFO ブロ ッ クにデータを書き込むと、同じデータを From FIFO ブロ ッ

クから読み出すこ とができます。 ペアの 2 つのブロ ッ ク間の接続は、Simulink ワイヤで明示的に指

定されているわけではなく、 名前によって関連付けられます。

共有 FIFO および共有メモ リは、 ハード ウェア協調シ ミ ュレーシ ョ ン用にコンパイルできます。 このチュート リ アルでも共有 FIFO の協調シ ミ ュレーシ ョ ン方法については簡単に説明しますが、 詳

細は「共有 FIFO の協調シ ミ ュレーシ ョ ン」を参照して ください。 共有ブロッ クの一方がハードウェ

ア協調シ ミ ュレーシ ョ ン用にコンパイルされる と、FIFO ブロ ッ ク全体が FIFO Generator コアを使

用して FPGA に組み込まれます。 FIFO の一方はユーザー デザイン ロジッ ク (共有 FIFO ロジッ ク

に接続されている System Generator ロジッ ク ) に接続され、 も う一方は PC と通信するためのイン

ターフェイス ロジッ ク と接続されます。 FIFO のインターフェイス ロジッ ク と接続された側は、 そ

の他の System Generator ソフ ト ウェア モデル ロジッ ク (共有 FIFO のも う一方など)、 C プログラ

ムまたはソフ ト ウェア実行ファ イル、 あるいは MATLAB プログラムで制御できます。 共有 FIFOをハード ウェア協調シ ミ ュレーシ ョ ン用にコンパイルする と、 PC で直接制御可能なエンベデッ ド

FIFO スタイルのバッファが FPGA に作成されます。

202 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 203: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ンを使用したフレーム ベースの シミ ュレーシ ョ ンR

FPGA 内に組み込まれた共有 FIFO と通信するには、 いくつかの方法があ り ます。 も一般的なの

は、 共有 FIFO のも う一方を System Generator デザインに含める方法です。 また、 C プログラムま

たは MATLAB プログラムを使用して共有 FIFO と通信するこ と も可能です。 System Generator では、FIFO とのベクタ転送をサポートするブロ ッ クが提供されています。 これらのブロ ッ クについて

は、 このチュート リ アルの後の方で説明します。 これらのブロ ッ クは、 FPGA とのバース ト転送を

サポートするのに重要な役割を果たします。

デザインへのバッファの追加

これらのバッファを FPGA での高速ベクタ処理に使用するデザインを構築します。

FPGA データ パスをベクタ転送を使用して高速化する と します。 この場合、 PC によ り書き込まれ

るデータ入力サンプルを保存する入力バッファを FPGA に含める必要があ り ます。 また、 PC でデータが読み出されるまで FPGA で処理済のデータを格納する出力バッファ も必要です。 入力デー

タ バッファのインプリ メン トには From FIFO ブロ ッ クを使用し、出力データ バッファのインプ リ

メン トには To FIFO ブロ ッ クを使用します。 次の図に示すモデルでは、 データが入力 FIFO に示さ

れる とすぐにデータ パスに書き込まれます。 データ パス ブロ ッ クには、 新規データ用の制御ポー

ト (nd) とデータ バリ ッ ド制御ポート (vld) があ り ます。 これらのポートは、新規データが入力され、

有効なデータが出力されるこ とを判断するために使用されます。 入力 FIFO にデータが示される と

nd 信号がアサート され、 データ パスに有効なデータが存在する と、出力 FIFO にデータが書き込ま

れます。

共有 FIFO がどのよ うに使用されるかを理解するため、 MAC フ ィルタ デザインを高速化するため

にベクタ転送を使用する例を示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 203リ リース 10.1.2 2008 年 6 月

Page 204: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

1. MATLAB ウ ィンド ウで、 <path_to_sysgen>\examples\shared_memory\hardware_cosim\frame_acc ディ レク ト リに移動します。

2. macfir_sw_w_fifos.mdl を開きます。

このデザイン例は、 sinusoid 入力ソースからホワイ ト ノ イズを除去する 32 タ ップ MAC FIR フ ィ

ルタをインプ リ メ ン ト します。 シ ミ ュレーシ ョ ン前またはシ ミ ュレーシ ョ ン中に Slider Gain 制御

バーを動かすこ とによ り、 ホワイ ト ノ イズの量を動的に変更できます。 出力スコープは、 フ ィルタ

された出力データ とフ ィルタ前の入力データを比較します。 MAC フ ィルタ自体は、hw_cosim とい

うサブシステムに含まれています。 このサブシステムには、 ハード ウェア協調シ ミ ュレーシ ョ ン用

に FPGA にコンパイルされるロジッ クがすべて含まれています。 デザインのその他のコンポーネン

ト ( 上位のすべてのブロ ッ ク ) は、 デザイン テス トベンチである と考えるこ とができます。

204 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 205: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ンを使用したフレーム ベースの シミ ュレーシ ョ ンR

hw_cosim サブシステムを開く と、 デザイン データ パスをインプ リ メ ン トする n-tap MAC FIRFilter ブロ ッ クがあ り ます。 フ ィルタの前後には、 入力バッファ となる From FIFO と出力バッファ

と な る To FIFO ブロ ッ クがあ り ます。 このデザイ ンの MAC フ ィ ルタは、 [Xilinx ReferenceBlockset] → [DSP] ラ イブラ リに含まれる n-tap MAC FIR Filter ブロ ッ クを変更したもので、 FIFOフロー制御をサポートするためにバリ ッ ド入力ポート とバリ ッ ド出力ポートが追加されています。

このデザインには、 CA および VA 共有 FIFO ペアを定義する 4 つの共有メモリ ブロ ッ クがあ り ま

す。 このデザインをハード ウ ェア協調シ ミ ュ レーシ ョ ン用にコンパイルするのに必要なのは、

hw_cosim サブシステムに含まれる共有 FIFO ブロ ッ クのみですが、 FPGA ハード ウェアを含む完

全なデザインをシ ミ ュレーシ ョ ンするので、 テス トベンチ ロジッ クには To FIFO ブロ ッ ク CA とFrom FIFO ブロ ッ ク VA が含まれています。 これらの共有 FIFO ブロ ッ クは、 hw_cosim サブシス

テム内の共有 FIFO に対してテス ト データの書き込みおよび読み出しを実行します。

Gateway In ブロ ッ ク din から入力されたフ ィルタ前のデータは、To FIFO ブロ ッ ク CA に書き込ま

れます。 この時点で、 hw_cosim サブシステム内の From FIFO ブロ ッ ク CA が FIFO からデータを

読み出し、MAC フ ィルタに書き込みます。 MAC フ ィルタはこのデータを処理し、出力バッファで

ある To FIFO ブロ ッ ク VA に書き込みます。 後に、 上位の From FIFO ブロ ッ ク VA がデータ

を読み出し、 Scope ブロ ッ クに送信します。

この例では、 大バッファ サイズ 4K が選択されています。 このパラ メータを設定するには、 FromFIFO ブロ ッ ク CA と To FIFO ブロ ッ ク VA のパラ メータ ダイアログ ボッ クスを開き、[Depth] を[4K] に設定します。 共有 FIFO は非同期 FIFO Generator コアを使用してインプ リ メン ト されるの

で、 ハード ウェア FIFO の実際のワード数は n-1 (n はダイアログ ボッ クスで指定したワード数) になり ます。

デザインのシ ミ ュレーシ ョ ンを実行して、 ソフ ト ウェアでの速度を調べます。

3. Simulink モデルのツールバーで [シ ミ ュレーシ ョ ンの開始] をク リ ッ ク し、 ソフ ト ウェアでデ

ザインのシ ミ ュレーシ ョ ンを開始します。

4. デザインを 10000 サイクル間シ ミ ュレーシ ョ ンするのにかかる時間を記録します。 正確に測定

するため、 Scope ブロ ッ クを閉じておく こ とをお勧めします。 グラフ ィ ッ クのアップデートが

シ ミ ュレーシ ョ ン パフォーマンスに影響する可能性があ り ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 205リ リース 10.1.2 2008 年 6 月

Page 206: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

シ ミ ュレーシ ョ ン中に Slider Gain バーを動かし、 ノ イズが追加された場合のフ ィルタ パフォーマ

ンスへの影響を確認します。 フ ィルタ前のデータ とフ ィルタ後のデータは、 出力 Scope ブロ ッ クで

表示できます。 フ ィルタ前の入力データが上部に、 フ ィルタ後のデータが下部に表示されます。

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

デザインをハード ウェア協調シ ミ ュレーシ ョ ン用にコンパイルします。 次の手順を実行する前に、

System Generator に適切なハード ウェア協調シ ミ ュレーシ ョ ン プラ ッ ト フォームがインス トール

されており、PC に接続されているこ とを確認してください。 この例では、デザインの hw_cosim サブシステムに含まれる部分のみをコンパイルします。 これは、To FIFO ブロ ッ ク CA と From FIFOブロ ッ ク VA をデザイン テス トベンチの一部と してソフ ト ウェアに保持するからです (パートナー

の共有 FIFO ブロ ッ クは FPGA ロジッ クにコンパイル)。

5. hw_cosim サブシステム内の System Generator トークンをダブルク リ ッ クして、パラ メータ ダイアログ ボッ クスを開きます。

6. [Compilation] で、 適切なハードウェア協調シ ミ ュレーシ ョ ン ターゲッ ト を選択します。 この

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

イスを使用しますが、 インス トールされているハード ウェア協調シ ミ ュレーシ ョ ン プラ ッ ト

フォーム (JTAG 協調シ ミ ュレーシ ョ ンをサポートするボード ) であれば問題あ り ません。

7. [Generate] ボタンをク リ ッ ク します。

206 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 207: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ンを使用したフレーム ベースの シミ ュレーシ ョ ンR

デザインのコンパイルが完了する と、 新しいハード ウェア協調シ ミ ュレーシ ョ ン ラ イブラ リ とブ

ロ ッ クが作成されます。 新しいハードウェア協調シ ミ ュレーシ ョ ン ブロ ッ クには、 入力ポートおよ

び出力ポートはあ り ません。 これは、 サブシステムに Gateway ブロ ッ クまたは Simulink ポートが

含まれていないからです。 ほかの Simulink ブロッ ク との接続は、FPGA にコンパイルされた共有メ

モ リ を介して処理されます。 To FIFO ブロ ッ ク と From FIFO ブロ ッ クをソフ ト ウェア テス トベン

チの一部と して保持しているので、 シ ミ ュレーシ ョ ンの開始時にソフ ト ウェア FIFO が自動的に

ハードウェア FIFO に接続されます。

通常、 ハード ウェア協調シ ミ ュレーシ ョ ン用にコンパイルされた共有メモ リのタ イプと コンフ ィ

ギュレーシ ョ ンを確認する必要があ り ます。 各共有メモ リ に関する情報は、 ハード ウェア協調シ

ミ ュレーシ ョ ン ブロ ッ クのパラ メータ ダイアログ ボッ クスの [Shared Memories] タブに示されま

す。 このタブには、 デザインに含まれる各共有メモ リに対して情報がツ リー表示で示されます。

8. ハードウェア協調シ ミ ュレーシ ョ ン ブロ ッ クをダブルク リ ッ ク して、 パラ メータ ダイアログ

ボッ クスを開きます。

9. [Shared Memories] タブをク リ ッ ク します。

共有 FIFO ブロ ッ ク CA と VA の情報が表示されます。 協調シ ミ ュレーシ ョ ン デザインにほかの共

有メモ リ ブロッ クが含まれる場合は、 それらのブロ ッ クの情報も こ こに表示されます。 共有メモ リ

の横にあるプラス記号 (+) またはマイナス記号 (-) をク リ ッ クする と、 共有メモ リの情報を表示ま

たは非表示にできます。

10. パラ メータ ダイアログ ボッ クスを閉じます。

ハードウェア協調シ ミ ュレーシ ョ ン ブロ ッ クを元のデザインに挿入します。 元のデザインに変更を

加えるので、次の手順を実行する前に、デザインの名前を変更するか、 バッ クアップ コピーを作成

するこ とをお勧めします。

11. デザインから hw_cosim サブシステムを削除します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 207リ リース 10.1.2 2008 年 6 月

Page 208: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

12. hw_cosim サブシステムのあった場所に、 ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クを追加

します。

13. ハードウェア協調シ ミ ュレーシ ョ ン ブロ ッ クのパラ メータ ダイアログ ボッ クスで、 [Singlestepped] をオンにし、 その他の必要なパラ メータを設定します。

14. Simulink モデルのツールバーで [シ ミ ュレーシ ョ ンの開始] をク リ ッ ク し、 デザインのシ ミ ュ

レーシ ョ ンを開始します。

15. デザインを 10000 サイ クル間シ ミ ュレーシ ョ ンするのにかかる時間を記録します。

16. デザインを閉じます。ハードウェア協調シ ミ ュレーシ ョ ン ラ イブラ リは、次の手順で使用する

ので開いたままにしてください。

上記のシ ミ ュレーシ ョ ンでは単一ワード転送を使用しているので、 読み出すシ ミ ュレーシ ョ ン値が

ある場合、 ハード ウェア協調シ ミ ュレーシ ョ ンに書き込む値がある場合ごとに、 PC によ り FPGAとの ト ランザクシ ョ ンが実行されます。 次のセクシ ョ ンでは、 シ ミ ュレーシ ョ ン速度を向上するた

め、 ハードウェア協調シ ミ ュレーシ ョ ンのバンド幅をよ り効率的に使用してベクタ転送を実行する

方法を示します。

ユーザー ベクタ転送

System Generator の Shared Memory Read および Shared Memory Write ブロ ッ クを使用する と、

ハード ウェア協調シ ミ ュレーシ ョ ンでベク タ転送を使用できます。 これらのブロ ッ クは、 [XilinxBlockset] → [Shared Memory] ラ イブラ リに含まれています。

208 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 209: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ンを使用したフレーム ベースの シミ ュレーシ ョ ンR

Shared Memory Write ブロ ッ クは、 Simulink のスカラ、 ベク タ、 マ ト リ ッ ク ス、 またはフレーム

データを受信し、 データを順に共有メモリに書き込みます。 Simulink 信号のすべての内容が、 1 シミ ュレーシ ョ ン サイ クルで共有メモ リに書き込まれます。 ほかの共有メモ リ ブロ ッ ク と同様に、

Shared Memory Read ブロ ッ クまたは Shared Memory Write ブロ ッ ク とほかの共有メモ リは、同じ

名前を指定するこ とによ り関連付けられます。

マ ト リ ッ クス型では列優先順が使用され、 データを共有メモリに順次書き込む場合、 まず列のすべ

てのエレ メン トが書き込まれてから次の列が書き込まれます。 たとえば、 次のよ うなマ ト リ ッ クス

データがある と します。 シ ミ ュレーシ ョ ン中、このマ ト リ ッ クス データは次のよ うに FIFO (または

共有メモ リ ) に書き込まれます。

これらのブロ ッ クを使用し、 次の条件を満たしていれば、 共有メモ リにに対して完全なベクタ、 フ

レーム、 またはマ ト リ ッ クス信号の読み出しまたは書き込みを実行できます。

• Shared Memory Write ブロ ッ クには、 8 ビッ ト 、 16 ビッ ト 、 32 ビッ トの符号付きまたは符号

なしの整数型の信号を入力します。

• ベクタまたはマト リ ッ クスのエレメ ント 数は、共有メ モリ または FIFO のワード 数以内にします。

• Shared Memory Read または Shared Memory Write ブロ ッ クのデータ幅 (スカラのビッ ト幅、

ベク タまたはマ ト リ ッ クスのエレ メン ト ) は、 共有メモ リ または FIFO のデータ幅と同じにし

ます。

これらのブロ ッ クをデザイン例で使用して、 ソフ ト ウェア/ハード ウェアの 1 ト ランザクシ ョ ンで

MAC フ ィルタに対してデータ サンプルのベクタの読み出しおよび書き込みを実行できます。

17. macfir_hw_w_frames_tb.mdl を開きます。

このデザインは前のセクシ ョ ンのデザイン と似ていますが、 Shared Memory Read および SharedMemory Write ブロ ッ クをサポー トするための変更が加えられています。 デザインをシ ミ ュレー

シ ョ ンする前に、 これらの変更について説明します。 まず、To FIFO および From FIFO ブロ ッ クの

代わりに Shared Memory Write および Shared Memory Read ブロ ッ クが使用されています。 SharedMemory Write ブロ ッ クの名前が CA、 Shared Memory Read ブロ ッ クの名前が VA になっている

ので、 シ ミ ュレーシ ョ ン中 FPGA ハード ウェアに含まれる入力 FIFO バッファ と出力 FIFO バッ

ファに関連付けられます。

Simulink の Buffer ブロ ッ クは、 フ ィルタ前の入力データを順に格納するこ とによ り、 スカラ入力

サンプルのフレームを作成します。 この Buffer ブロ ッ クは、 シ リ アル データからパラレル データ

への変換を実行する と考える こ とができます。 FIFO バッファはワード数 4K でコンパイルしたの

で、 フレーム サイズは 4095 にします。

System Generator for DSP ユーザー ガイド japan.xilinx.com 209リ リース 10.1.2 2008 年 6 月

Page 210: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

Buffer ブロ ッ クによ り、 デザインのサンプリ ング データが変更されます。 4095 個の入力ごとに出

力が 1 つ生成されるので、 データ入力のサンプリ ング周期が 1 の場合、 データ出力のサンプリ ング

周期は 4095 になり ます。つま り、 Shared Memory Write ブロッ クからの FPGA へのデータ フレー

ム送信は、 4095 シ ミ ュレーシ ョ ン サイクルごとに実行されるこ とにな り ます。 これは、 各シ ミ ュ

レーシ ョ ン サイクルでハード ウェア ト ランザクシ ョ ンを実行するのに比べてかなり効率的です。

Buffer ブロ ッ クでサンプリ ング レートが変更されるので、 この遅いサンプ リ ング レートに合わせ

てダウンス ト リーム ブロ ッ クを調整する必要があ り ます。 まず、 Shared Memory Read ブロ ッ クで

データ フレームが 4095 シ ミ ュレーシ ョ ン サイ クルごとに読み出されるよ うにします。

18. Shared Memory Read ブロ ッ クをダブルク リ ッ ク して、パラ メータ ダイアログ ボッ クスを開き

ます。

[Basic] タブの [Type] で [FIFO] をオンにします。 フレームが適切なタイ ミ ングで読み出されるよ

うにするため、 [Sample time] を 4095 に設定します。

Shared Memory Read ブロ ッ クでは、 出力データの型と次元を設定します。

19. パラ メータ ダイアログ ボッ クスで、 [Output Type] タブをク リ ッ ク します。

このタブで、 いくつかのパラ メータを設定します。 まず、 [Data type] を [int32] に設定して、 フ ィ

ルタのデータ パスの出力幅 32 ビッ トに一致するよ うにします。 データ幅が一致していないと、 デ

ザインをシ ミ ュレーシ ョ ンできません。 次に、[Output dimensions] を 4095 ワードに設定します。 後に、 ダウンス ト リームの Unbuffer ブロ ッ クでフレーム ベースの出力が必要なので、 [Use frame-based output] をオンにします。

20. パラ メータ ダイアログ ボッ クスを閉じます。

210 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 211: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ンを使用したフレーム ベースの シミ ュレーシ ョ ンR

Simulink の Unbuffer ブロ ッ クは、 Shared Memory Read ブロ ッ クからのフレーム データをシーケ

ンシャルなスカラ値に変換します。 Unbuffer ブロ ッ クでも、デザインのサンプリ ング データが変更

されます。 Unbuffer ブロ ッ クへの入力サンプ リ ング周期は 4095 であ り、 フレーム サイズが 4095ワードであるので、 出力サンプリ ング周期は 1 になり ます。 これによ り、 システム全体の有効サン

プリ ング周期は 1 になり ます。

Shared Memory Write および Shared Memory Read ブロ ッ クは整数値を処理するので、Simulink の型変換ブロッ クを追加して、 モデルのさまざまな部分でデータが正し く処理されるよ うにする必要

があ り ます。 in_data_conv サブシステムは、Simulink の倍精度値を、FPGA ハードウェアで適切に

処理可能な 16 ビッ トの整数値に変換します。 出力側の out_data_conv サブシステムは、 32 ビッ ト

の整数値を 32 ビッ トの Simulink 固定小数点精度値に変換します。

デザインをシ ミ ュレーシ ョ ンする前に、 前のセクシ ョ ンで作成したハード ウェア協調シ ミ ュレー

シ ョ ン ブロッ クを追加します。

21. 次の図に示すよ うに、 ハードウェア協調シ ミ ュレーシ ョ ン ブロ ッ クを追加します。

前述のとおり、 Shared Memory Write ブロ ッ クは 4095 ワードの入力フレームを 4095 クロ ッ ク サイ クルご とに書き込み、 Shared Memory Read ブロ ッ クは 4095 ワードの出力フレームを 4095 クロ ッ ク サイクルごとに読み出します。 そのため、FPGA でフレーム全体を 1 サイクルで処理する必

要があ り ます。

まず、 FPGA をフリ ーランニング ク ロッ ク モード にコンフィ ギュレーショ ンします。 このモード に

設定すると 、 Simulink シミ ュレーショ ンと 同じステッ プで実行する場合に比べて、 データがかなり

高速に処理されます。 シングル ステッ プ モード では、 Simulink の 1 サイク ルごと に FPGA で 1 つのデータしか処理されませんが、 フリ ーランニング ク ロッ ク モード では、 FPGA の処理速度を制限

するのはシステム ク ロッ ク の周波数のみです。 それでも 、バッ ファのサイズが大きいと 、次のブロッ

クが起動するまでに、FPGA でバッ ファのデータすべてを処理できない可能性があり ます。 FPGA でバッ ファのデータ全体を処理し終えるまで、 シミ ュレーショ ンを待機させる方法が必要です。

System Generator for DSP ユーザー ガイド japan.xilinx.com 211リ リース 10.1.2 2008 年 6 月

Page 212: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

Shared Memory Read ブロ ッ クは、フレームの読み出しを実行する前に、出力バッファにある FIFOのワード数をチェッ ク します。 バッファ内のワード数が不十分な場合は、 短時間待機し、 ワード数

が十分になったかど うかを再びチェッ ク します。 出力バッファにすべてのワードが揃う まで (この

例の場合は 4095 ワード )、 フレームの読み出しは実行されません。 Shared Memory Read ブロ ッ ク

は、 このよ うにして、 FPGA でフレームが完全に処理されるまでシ ミ ュレーシ ョ ンを停止します。

次の図に、 シ ミ ュレーシ ョ ンでのデータ フローを示します。

Simulink フレーム信号を使用してシ ミ ュレーシ ョ ンを実行するには、 次の手順に従います。

22. ハードウェア協調シ ミ ュレーシ ョ ン ブロ ッ クをダブルク リ ッ ク して、 パラ メータ ダイアログ

ボッ クスを開きます。

23. 次の図に示すよ うに、 [Free running] をオンにします。

24. ハードウェア協調シ ミ ュレーシ ョ ン ブロ ッ クのパラ メータ ダイアログ ボッ クスで、 使用する

協調シ ミ ュレーシ ョ ン プラ ッ ト フォームで必要なその他のパラ メータを設定します。

25. Simulink モデルのツールバーで [シ ミ ュレーシ ョ ンの開始] をク リ ッ ク し、 デザインのシ ミ ュ

レーシ ョ ンを開始します。

26. デザインを 10000 サイ クル間シ ミ ュレーシ ョ ンするのにかかる時間を記録します。

212 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 213: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ンを使用したリアルタイム信号処理R

ハードウェア協調シミ ュレーシ ョ ンを使用したリアルタイム信号処理

System Generator で使用可能な共有メモ リ インターフェイスでは、バンド幅が広く、大型メモ リが

必要な信号処理デザインを、 FPGA ハードウェアを使用して協調シ ミ ュレーシ ョ ンできます。 この

インターフェイスを Shared Memory Read および Shared Memory Write ブロ ッ ク と共に使用する

と、 ハード ウェア協調シ ミ ュレーシ ョ ン デザインで Simulink ベクタおよびマ ト リ ッ クス信号を 1シ ミ ュレーシ ョ ン サイクルで処理できます。 Simulink と FPGA 間の大型データ ト ランザクシ ョ ン

は、バース ト転送を使用して実現され、協調シ ミ ュレーシ ョ ン インターフェイスによってはリアル

タイム信号処理アプリケーシ ョ ンに十分なスループッ トが得られます。

FPGA ハード ウェアにコンパイルしたと きにバース ト転送をサポートする System Generator イン

ターフェイスは、 2 種類あ り ます。 これらのインターフェイスには、 ロ ッ ク共有メモリ と共有 FIFOブロ ッ クが含まれます。 これらのブロ ッ クでは、 FPGA とホス ト PC 間のト ランザクシ ョ ンの方法

と タイ ミ ングを定義するのに異なるハンドシェーク プロ ト コルが使用されます。 これらのブロ ッ ク

を使用する前に、 ハードウェア協調シ ミ ュレーシ ョ ンでどのよ うに機能するかを理解しておく と有

益です。 詳細は、 次のセクシ ョ ンを参照してください。

• ロ ッ ク共有メモ リの協調シ ミ ュレーシ ョ ン

• 共有 FIFO の協調シ ミ ュレーシ ョ ン

このマニュアルでは、 System Generator モデルと してインプ リ メ ン ト された高速協調シ ミ ュレー

シ ョ ン バッファ インターフェイスについて説明します。 このインターフェイス例では、ロ ッ ク共有

メモ リ を使用して必要なバッファをインプ リ メン ト します。 フロー制御ロジッ クで共有メモ リの代

わりに共有 FIFO を使用するよ う変更するのは、 比較的簡単です。

まず高速バッファ インターフェイスについて説明し、 5x5 フ ィルタ カーネルを使用したビデオ スト リームのリ アルタイム処理をサポートするインターフェイスの例を示します。 後に、 非保護共

有メモ リ をシステムに追加して、協調シ ミ ュレーシ ョ ン中にイ メージ カーネルの動的な再読み込み

をサポートする方法を示します。

共有メモリ I/O バッファの例

ロ ッ ク共有メモ リ をハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルする と、 排他的処理が行わ

れるよ うにするため FPGA に回路が追加されます。 この回路には、FPGA がメモ リのロ ッ クを取得

または解除したと きに、 メモ リ イ メージの高速転送を可能にするロジッ クが含まれています。 ロ ッ

ク共有メモ リの排他的な処理を利用して、 ハード ウェア協調シ ミ ュレーシ ョ ン用の高速 I/O バッ

ファ インターフェイスをインプリ メン ト します。 このセクシ ョ ンでは、System Generator のサンプ

ル モデルと して含まれているこのインターフェイスについて説明します。

1. MATLAB ウ ィンド ウで、 <path_to_sysgen>\examples\shared_memory\hardware_cosim\io_buffering ディ レク ト リに移動します。

2. highspeed_iobuf_ex.mdl を開きます。

I/O バッ フ ァ イ ン ターフェ イ スを使用する と、 ハード ウ ェア協調シ ミ ュ レーシ ョ ンで SystemGenerator 信号処理データ パスを介してデータを格納およびス ト リーミ ングできます。 このデザイ

ン例は、 入力バッファをインプ リ メン トする Input Buffer サブシステムと出力バッファをインプ リ

メン トする Output Buffer サブシステムで構成されています。 中央の水色の四角は、このチュート リ

アルで挿入する信号処理データ パスのプレースホルダです。

System Generator for DSP ユーザー ガイド japan.xilinx.com 213リ リース 10.1.2 2008 年 6 月

Page 214: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

各バッファ サブシステムでは、バッファ と してロ ッ ク共有メモ リ ブロ ッ クを使用しています。 共有

メモ リの周辺には、 ホス ト PC からのデータ フローを制御し、 ホス ト PC に送信するロジッ クがあ

り ます。 I/O バッファ インターフェイスの動作を次に示します。

バッファ インターフェイス デザインには、 複数のデータ バリ ッ ド ポートが含まれています。 これ

らのポート をデータ フロー制御に使用します。 新しいデータがデータ パスで処理可能になる と、

Input Buffer サブシステムの dout_valid 出力が High になり ます。 同様に、 データ パスでデータ処

理が終了する と、 Output Buffer サブシステムの din_valid ポートが High になり、 出力データが有

効であるこ とを示します。 din_valid ポートは、 ライ ト イネーブル制御信号と似ています。

214 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 215: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ンを使用したリアルタイム信号処理R

デザイン例に含まれているプレースホルダは、System Generator のデータ パスに置き換える必要が

あ り ます。 バッファ インターフェイスには、 前述の有効な信号の条件を満たしていれば、 どのデー

タ パスでも挿入できます。

メモ : 出力バッ フ ァ共有メモ リ では、 出力バッ フ ァがフルになるまでロ ッ クは解除されません。

デッ ド ロ ッ ク状態になるのを回避するため、データ パスによるバリ ッ ド信号のアサートの数が、処

理サイクルの出力メモ リ バッファのサイズと同じになるよ うにします。

5x5 フ ィルタ データ パスの挿入

I/O バッファ インターフェイスにデータ パスを挿入し、128X128 の 8 ビッ ト グレースケール ビデ

オ ス ト リームを リ アルタイムで処理できるシステムにします。 高速バッファ インターフェイスの

データ パス部分のインプリ メン トには、5x5 イ メージ処理カーネルを使用します。 フ ィルタ カーネ

ルの詳細は、 sysgenConv5x5 とい う System Generator のデモを参照して ください。 まず、 デザイ

ン インプリ メンテーシ ョ ンのさまざまな面を考慮します。

3. MATLAB ウ ィンド ウで、 <path_to_sysgen>\examples\shared_memory\hardware_cosim\conv5x5_video ディ レク ト リに移動します。

4. conv5x5_video_ex.mdl を開きます。

バッファ とデータ パスのコンフ ィギュレーシ ョ ン

フレーム と ピ クセルの制限を考慮して、 Input Buffer と Output Buffer のパラ メータ ダイアログ

ボッ クスでは、 ワード数が 128x128 (16K)、 ワード幅が 8 ビッ トに設定されています。 このワード

数の設定によ り、インターフェイスで 1 つのフレームを 1 つのシ ミ ュレーシ ョ ン サイクルで処理す

るこ とが可能になり ます。 これらのコンフ ィギュレーシ ョ ン パラ メータは、 バッファにインプ リ メ

ン ト される自動的にロ ッ ク共有メモ リにも自動的に適用されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 215リ リース 10.1.2 2008 年 6 月

Page 216: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

データ パスではライン バッファを使用し、データ サンプルがフ ィルタ カーネルで適切に揃う よ う

にします。 これらのライン バッファのサイズは、異なるフレーム サイズに対応するよ うパラ メータ

指定されています。 この例では、 ライン バッファは conv5x5_video_ex の 5x5_filter サブシステム

に含まれる Virtex2 5 Line Buffer にインプ リ メ ン ト され、 ラ イン サイズが 128 に設定されていま

す。 異なるサイズのフレームを処理する場合は、 このブロ ッ クのパラ メータ ダイアログ ボッ クス

で [Line Size] を変更します。

バリ ッ ド ビッ トの生成

データ パスには、 Output Buffer ブロ ッ クの din_valid ポート を駆動する valid_generator というサ

ブシステムが含まれます。 このサブシステムには、 valid_in と offset の 2 つの入力があ り ます。

valid_in ポートは、 Input Buffer ブロ ッ クの dout_valid 信号で駆動され、 可変なサイクル数遅延し

た後 valid_out ポート を駆動します。 次の図に、 valied_generator サブシステムに含まれるロジッ ク

を示します。

ASR (Addressable Shift Register) ブロ ッ クは、 バ リ ッ ド ビ ッ ド を遅延させるために使用します。

offset ポートは、 ASR ブロ ッ クのアドレスを制御するために使用され、 ASR ブロ ッ クでバリ ッ ド

ビ ッ ト で発生させるレイテンシの量を制御します。 Input Buffer ブロ ッ クで生成されるバ リ ッ ド

ビッ ト を単に遅延させるこ とによ り、 Output Buffer に書き込まれるワード数が常にバッファ サイ

ズと等し く なるよ うにします。 デザインをハード ウェアで実行する と、 offset の値の変化によ り、

フ ィルタされたイ メージの垂直アライ メン トが変更されます。

216 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 217: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ンを使用したリアルタイム信号処理R

係数の再読み込み

カーネル データ パスには、 ランタ イムに係数を動的に再読み込みできる とい う特徴があ り ます。

5x5 Filter ブロ ッ クには Load と Coef 制御ポートがあ り、coefficient_memory サブシステムで駆動

されます。

coefficient_memory サブシステムには、 も 近読み込まれたフ ィルタ係数のコピーが含まれてお

り、 coef_buffer とい う非保護の共有メモリに保存されています。 このサブシステムは、 ランタイム

に共有メモリの内容をモニタし、 変化が検出される と再読み込みシーケンスを開始します。 非保護

の共有メモ リ で協調シ ミ ュレーシ ョ ンを実行する と、 ホス ト PC の任意のプロセスで共有メモ リ

coef_buffer に新しいカーネル係数を書き込むこ とができます。 FPGA ハード ウェアとの通信は共

有メモ リ API を介して完全に抽象化されるので、 このインターフェイスは便利です。

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

完全なフ ィルタ カーネル デザインをシ ミ ュレーシ ョ ンするには、ハードウェア協調シ ミ ュレーシ ョ

ン用にコンパイルする必要があ り ます。

5. conv5x5_video_ex.mdl に含まれる System Generator トークンをダブルク リ ッ ク します。

6. [Compilation] で、 適切なハード ウェア協調シ ミ ュレーシ ョ ン ターゲッ ト を選択します。

7. [Generate] をク リ ッ ク し、デザインをハード ウェア協調シミ ュレーショ ン用にコンパイルします。

デザインのコンパイルが完了する と、新しいハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クが作成さ

れます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 217リ リース 10.1.2 2008 年 6 月

Page 218: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ハードウェア協調シ ミ ュレーシ ョ ン ブロッ クでは、デザインの一部と してコンパイルされている共

有メモ リ、 レジスタ、 FIFO に関する情報を表示できます。 この情報を表示するには、ハードウェア

協調シ ミ ュレーシ ョ ン ブロ ッ クをダブルク リ ッ ク してパラ メータ ダイアログ ボッ ク スを開き、

[Shared Memories] タブをク リ ッ ク します。

ハードウェア協調シ ミ ュレーシ ョ ン ラ イブラ リは開いたままにします。 次のセクシ ョ ンで、 ハード

ウェア協調シ ミ ュレーシ ョ ン ブロッ クをビデオ処理テス トベンチ デザインに追加します。

5x5 フ ィルタ カーネル テストベンチ

デザイン例には、 ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クを使用してループ ビデオ シーケン

スをフ ィルタする Simulink テス トベンチ モデルが含まれています。

8. MATLAB ウ ィンド ウで、 <path_to_sysgen>\examples\shared_memory\hardware_cosim\conv5x5_video ディ レク ト リに移動します。

このテス トベンチ モデルは、From Workshop ブロ ッ クを使用してループ ビデオ シーケンスを生成

します。 ビデオ シーケンスの各フレームは 128X128 の uint8 Simulink マ ト リ ッ クスで表現されま

す。 モデルを開く と、 preload 関数によ り ビデオ シーケンスが読み込まれ、 初期化されます。 ビデ

オ フレームは FPGA Processing サブシステムに書き込まれ、 各シ ミ ュレーシ ョ ン サイクルごとに

1 フレーム フ ィルタされます。 フ ィルタされた出力は Matrix Viewer ブロ ッ クに書き込まれ、 解析

されます。

218 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 219: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ンを使用したリアルタイム信号処理R

FPGA Processing サブシステムには、ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クのプレースホル

ダ、 Shared Memory Read ブロ ッ ク、 および Shared Memory Write ブロ ッ クが含まれています。 この例では、 Shared Memory Read ブロ ッ クおよび Shared Memory Write ブロ ッ クによ り FPGA 内の共有メモ リ とのビデオ フレーム I/O の送受信を制御します。 これらのブロ ッ クの動作を次に説明

します。

a. Shared Memory Write ブロ ッ クが起動し、入力バッファのロ ッ ク共有メモリ Foo のロ ッ ク

を要求します。 ロ ッ クが許可される と、ビデオ フレーム データ入力をロ ッ ク共有メモ リに

書き込み、 ロ ッ クを解除します。

b. ハードウェア協調シ ミ ュレーシ ョ ン ブロッ クが起動し、入力および出力バッファのロ ッ ク

共有メモ リ Foo および Bar のロ ッ クを要求します。 ホス ト PC の共有メモ リ イ メージが

FPGA に転送され、 ロ ッ クが許可されます。 FPGA が入力バッファ データを処理し、出力

を出力バッファに書き込みます。 FPGA での Foo と Bar のロ ッ クが解除され、FPGA の共

有メモ リ イ メージがホス ト PC に転送されます。

c. Shared Memory Read ブロ ッ クが起動し、 出力バッファのロ ッ ク共有メモリ Bar のロ ッ ク

を要求します。 出力バッファからビデオを読み出し、処理済のビデオ フレームを出力ポー

トに送信します。

上記の手順では、 ハード ウェア協調シ ミ ュレーシ ョ ン、 Shared Memory Read ブロ ッ ク、 SharedMemory Write ブロ ッ クが特定のシーケンスで動作する こ とが必要です。 これらのブロ ッ クが正し

いシーケンスで動作するよ うにするには、 ブロ ッ クの優先度を設定できます。 シ ミ ュレーシ ョ ンで

は、 優先度の低いブロ ッ クから起動します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 219リ リース 10.1.2 2008 年 6 月

Page 220: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

9. FPGA Processing サブシステム内の水色のプレースホルダに、 ハードウェア協調シ ミ ュレー

シ ョ ン ブロッ クを追加します。

テス トベンチ内の Shared Memory Write ブロ ッ クは優先度 1、 Shared Memory Read ブロ ッ クは優

先度 3 でコンフ ィギュレーシ ョ ンされています。ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クをシ

ミ ュレーシ ョ ン シーケンスで 2 番目に起動させる必要があるので、 ハード ウェア協調シ ミ ュレー

シ ョ ン ブロッ クの優先度は 2 に設定します。

10. ハードウェア協調シ ミ ュレーシ ョ ン ブロッ クを右ク リ ッ ク し、[ブロ ッ クプロパティ ] をク リ ッ

ク します。

220 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 221: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ンを使用したリアルタイム信号処理R

11. [モデルプロパティ ] ダイアログ ボッ クスで、 [優先度] を 2 に設定します。

高速処理アプリケーシ ョ ンでは、ハード ウェア協調シ ミ ュレーシ ョ ン ブロ ッ クをフ リーランニング

ク ロ ッ ク モードに設定する必要があ り ます。 このモードを使用する と、 FPGA と Simulink 間の同

期は、 ロ ッ ク共有メモリで行われます。 FPGA をフ リーランニング モードで実行する と、 FPGA が1 Simulink サイクルで 1 つのビデオ フレームを処理するのに十分な速度で動作します。 ハードウェ

ア協調シ ミ ュレーシ ョ ン ブロッ クは、 ロ ッ クを取得してからデータ処理を開始します。 ハードウェ

ア協調シ ミ ュレーシ ョ ン ブロッ クが起動するまでロッ クは与えられないので、入力バッファに新し

いデータが示されるまで FPGA はアイ ドル状態になり ます。

12. ハードウェア協調シ ミ ュレーシ ョ ン ブロ ッ クをダブルク リ ッ ク して、 パラ メータ ダイアログ

ボッ クスの [Basic] タブで [Free running] をオンにします。

これで、 デバイスをシ ミ ュレーシ ョ ンする準備ができました。

13. Simulink モデルのツールバーで [シ ミ ュレーシ ョ ンの開始] をク リ ッ ク し、 デザインのシ ミ ュ

レーシ ョ ンを開始します。

2 つのウィ ンド ウが開き、元のビデオ スト リ ームと フィ ルタ後のビデオ スト リ ームが表示されます。

左側は元のビデオ フレームで、 右側は同じフレームを smooth フ ィルタ カーネルを使用して処理し

たものです。 平滑化フィルタは、 ビデオ ソースに適用可能なフ ィルタの 1 つです。

System Generator for DSP ユーザー ガイド japan.xilinx.com 221リ リース 10.1.2 2008 年 6 月

Page 222: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

カーネルの再読み込み

フ ィルタ データ パスは、 ハード ウェア協調シ ミ ュレーシ ョ ンを実行中に、 フ ィルタ カーネルを動

的に再読み込みできるよ うに設計されています。 シ ミ ュレーシ ョ ンの実行中は、xlReloadFilterCoef関数を使用して新しいカーネルを読み込みます。 この関数は、文字列カーネル識別子 (sobelxy など)を入力パラ メータ と して使用し ます。 使用可能なフ ィルタ カーネルの リ ス ト は、 MATLAB の[Command Window] に 「xlReloadFilterCoef」 と入力する と表示されます。 この関数は MATLABソース ファ イルと して提供されており、 <path_to_sysgen>\examples\shared_memory\hardware_cosim\conv5x5_video ディ レク ト リにあ り ます。

メモ : フ ィルタを再読み込みしたら、 係数利得を調整できます。 この利得は、 テス トベンチ モデル

の 上位にある Coefficient Adjust ブロ ッ クを使用して調整できます。 これは、System Generator のポート ベースのハード ウェア協調シ ミ ュレーシ ョ ン インターフェイスを共有メモ リのハード ウェ

ア協調シ ミ ュレーシ ョ ン インターフェイス と共に使用する方法も示しています。

System Generator では、共有メモリ オブジェク トへのアクセスに MATLAB オブジェク ト インター

フェイスを使用します。 xlReloadFilterCoef 関数は、 このオブジェク ト インターフェイスを使用し

て、 FPGA 上の非保護共有メモ リ coef_buffer に新しい係数値を書き込みます。 この関数には、 共

有メモ リオブジェク トの作成方法、 書き込み方法、 操作が完了した際の解除方法を示す説明が付属

しています。

メモ : MATLAB オブジェク ト インターフェイスのソース コードは、 <path_to_sysgen>\examples\shared_memory\mex_function ディ レク ト リにあ り ます。 このディ レク ト リには、 mex 関数ソース

コードの構築方法を示す MATLAB の M コード も含まれています。

14. テスト ベンチ デザインが実行されているこ と を確認したら、MATLAB の [Command Window]に 「xlReloadFilterCoef('sobelxy')」 と入力し、 SobelXY フ ィルタ カーネルを読み込みます。

SobelXY カーネルを使用したビデオ出力が表示されます。

222 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 223: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

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

メモ : ご使用のプラ ッ ト フォームのインス トール手順がない場合は、プラ ッ ト フォーム キッ トに付

属のインス トール ガイ ドを参照して ください。

イーサネッ ト ハードウェア協調シミ ュレーシ ョ ン用の ML402 プラ ッ トフォームのインストール

次に、 ML402 ボードでイーサネッ ト ハード ウェア協調シ ミ ュレーシ ョ ンを実行するために必要な

ハードウェアおよびソフ ト ウェアのインス トール方法および設定方法を説明します。

必要なハードウェア

1. ザイ リ ンクス Virtex-4 SX ML402 プラ ッ ト フォームには、 次のものが含まれています。

a. Virtex-4 ML402 ボード

b. ML402 キッ トに含まれる 5V 電源

c. コンパク ト フラ ッシュ カード

2. 次のものも必要です。

a. ホス ト PC 用のイーサネッ ト ネッ ト ワーク インターフェイス カード (NIC)

b. イーサネッ ト RJ45 オス /オス ケーブル (ネッ ト ワーク ケーブルまたはクロスオーバー

ケーブルを使用可)

c. PC 用のコンパク ト フラ ッシュ リーダ

ホス ト PC へのソフ トウェアのインス トール

次のソフ ト ウェアが PC にインス トールされているこ とを確認してください。

• 現在の System Generator リ リース ノートで指定されている System Generator のバージ ョ ン

• 現在の System Generator リ リース ノートで指定されているザイ リ ンクス ISE のバージ ョ ン

• WinPcap バージ ョ ン 4.0 (System Generator のインス トーラでインス トールするか、

http://www.winpcap.org から入手)

PC 上の LAN (ローカル エリア ネッ トワーク ) の設定

PC 上に、10/100 高速イーサネッ ト またはギガビッ ト イーサネッ ト アダプタが必要です。 次の手順

に従って設定します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 223リ リース 10.1.2 2008 年 6 月

Page 224: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

1. [スタート ] → [コン ト ロール パネル] をク リ ッ ク して [ネッ ト ワーク接続] をダブルク リ ッ ク

し、 [ローカル エリア接続] を右ク リ ッ ク して [プロパティ ] をク リ ッ ク します。

2. [インターネッ ト プロ ト コル (TCP/IP)] を選択し、 [プロパティ ] ボタンをク リ ッ ク します。 [インターネッ ト プロ ト コル (TCP/IP) のプロパティ ] ダイアログ ボッ クスで [次の IP アドレスを

使う ] をオンにし、 [IP アドレス] を 192.168.8.2 に、 [サブネッ ト マスク ] を 255.255.255.0 に設定します。 ML402 のデフォルトの IP アドレスは 192.168.8.1 であるので、 IP アドレスの

後の桁は 1 以外にする必要があ り ます。 詳細は、 「System Generator ML402 ハードウェア協調

シ ミ ュレーシ ョ ン コンフ ィギュレーシ ョ ン ファ イルの読み込み」 を参照してください。

224 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 225: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

3. [構成] ボタンをク リ ッ ク し、 [詳細設定] タブをク リ ッ ク して [Flow Control] を [Auto] に設定

します。

4. [Speed & Duplex] を [Auto] に設定し、 [OK] をク リ ッ ク します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 225リ リース 10.1.2 2008 年 6 月

Page 226: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

System Generator ML402 ハードウェア協調シミ ュレーシ ョ ン コンフ ィギュ

レーシ ョ ン ファイルの読み込み

System Generator ではハード ウェア協調シ ミ ュレーシ ョ ン コンフ ィギュレーシ ョ ン ファ イルが提

供されており、 コンパク ト フラ ッシュ リーダで ML402 コンパク ト フラ ッシュ カードに読み込む

必要があ り ます。

1. ML402 デモ ファ イルのバッ クアップを作成します (オプシ ョ ン)。

ML402 コンパク ト フラ ッシュ カードには、複数のデモ ファ イルが含まれており、読み込んで使用

できます。

a. コンパク ト フラ ッシュ リーダを PC に接続します。 これには、 通常 USB ポート を使用し

ます。

b. コンパク ト フラ ッシュ カードをコンパク ト フラ ッシュ リーダに挿入します。

c. [マイ コンピュータ ] をダブルク リ ッ クし、コンパク ト フラ ッシュ リーダを表す [ リ ムーバ

ブル ディ スク ] を選択します。

d. PC でバッ クアップ フォルダを作成または開き、コンパク ト フラ ッシュ カードの内容をコ

ピーします。

メモ : この後の手順では、 E: をコンパク ト フラ ッシュ リーダのド ラ イブ名と します。

2. コンパク ト フラ ッシュ カードを再フォーマッ ト します。

System Generator ファ イルを転送できるよ うにするには、 カードを FAT16 ファ イル システムに再

フォーマッ トする必要があ り ます。 カードをフォーマッ トするには、 mkdosfs ユーティ リ ティ を使

用します。

a. 次のザイ リ ンクス Web サイ トから mkdosfs ユーティ リ ティ をダウンロード します。

http://japan.xilinx.com/products/boards/ml310/current/utilities/mkdosfs.zip

b. ダウンロード した ZIP ファ イルを C:\mkdosfs に解凍します。

c. [スタート ] → [ファ イル名を指定して実行] をク リ ッ ク し、 「cmd」 と入力して [OK] をク

リ ッ ク します。

d. Windows コマンド プロンプ トで、 次のよ うに入力して mkdosfs フォルダに移動します。

cd C:\mkdosfs

注意 次のステップで、 ド ラ イブ名がコンパク ト フラ ッシュの リ ムーバブル ディ スク (この例では E:) に指定されているこ とを確認して ください。 ド ラ イブ名が正し く指定されていないと、 間違って指定したド

ラ イブが消去され、 再フォーマッ ト されます。

e. 次の mkdosfs コマンドを入力します。

mkdosfs -v -F 16 e:

コンパク ト フラ ッシュ カードの内容が消去され、 再フォーマッ ト されます。

3. System Generator コンフ ィギュレーシ ョ ン ファ イルをコンパク ト フラ ッシュ カードにコピー

します。

メモ : System Generator コンフ ィギュレーシ ョ ン ファ イルは、 次の場所にあ り ます。

...<path_to_sysgen>\plugins\bin\ML402_sysace_cf.zip

MATLAB を起動し、 [Command Window] に次のコマンドを入力します。

unzip(fullfile(xlFindSysgenRoot,'plugins/bin/ML402_sysace_cf.zip'),'e:/')

226 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 227: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

コンパク ト フラ ッシュのド ラ イブに、 次のファイルとフォルダが表示されます。

イーサネッ ト MAC アドレスと IPv4 アドレスの設定 (オプシ ョ ン)

メモ : デフォル トの MAC アドレス と IP アドレスがデフォルトのネッ ト ワーク設定と競合する場

合、 または複数の ML402 ボードを同時に協調シ ミ ュレーシ ョ ンする場合は、次の手順が必要です。

競合していない場合は、 次のセクシ ョ ンに進んでください。

データをカードに書き込むと、カードのルート ディ レク ト リに mac.dat および ip.dat ファ イル

があ り ます。 これらのファイルは、ボードに関連付けるイーサネッ ト MAC アドレス と IPv4 アドレスを指定します。 これらのアドレスは、 イーサネッ ト ハードウェア協調シ ミ ュレーシ ョ ン

中にターゲッ ト ボードを識別するために使用されます。

a. mac.dat ファ イルをテキス ト エディ タで開き、イーサネッ ト MAC アドレスを変更します。

MAC アドレスは、 2 桁の 16 進数 6 個をコロンで区切って指定します (00:0a:35:11:22:33など)。 すべて 0、 ブロードキャス ト 、 マルチキャス ト MAC アドレスはサポート されてい

ません。

b. ip.dat ファ イルをテキス ト エディ タで開き、 IP アドレスを変更します。 IP アドレスは、10進数をピ リオドで区切った表記方法 (192.168.8.1 など) で指定します。 すべて 0、ブロード

キャス ト 、マルチキャス ト、ループバッ ク IP アドレスはサポート されていません。 ML402ボードの IP アドレスを変更したら、 「PC 上の LAN (ローカル エリア ネッ ト ワーク ) の設

定」 の手順に従って PC のネッ ト ワーク接続の IP アドレスも変更します。 直接接続するに

は、ML402 と PC を同じサブネッ トにする必要があ り ます。 同じサブネッ トにしない場合

は、 ML402 の IP アドレスに PC から、 PC の IP アドレスに ML402 からアクセスできる

よ うにしてください。

System Generator for DSP ユーザー ガイド japan.xilinx.com 227リ リース 10.1.2 2008 年 6 月

Page 228: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ML402 ボードの設定

次の図に、 この設定手順に関連する ML402 コンポーネン ト を示します。

1. ML402 ボードを、 Virtex-4 とザイ リ ンクスのロゴがボードの上部になるよ うに配置します。

2. 電源スイ ッチが右上にあ り、 オフになっているこ とを確認します。

3. 次の図に示すよ うに、 コンパク ト フラ ッシュ リーダのリ ムーバブル ディ スクを右ク リ ッ ク し

て [取り出し ] をク リ ッ ク します。

4. コンパク ト フラ ッシュ カードをコンパク ト フラ ッシュ リーダから取り出します。

5. コンパク ト フラ ッシュ カードのスロ ッ ト (ML402 ボードの裏側) に、 コンパク ト フラ ッシュ

カードをラベルがボード と反対側になるよ うに挿入します。 次の図に、 ボードの裏側にコンパ

ク ト フラ ッシュ カードを正し く挿入した様子を示します。

メモ : ボードに含まれるコンパク ト フラ ッシュ カードが、 写真のものと異なるこ とがあ り ます。

228 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 229: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

注意 コンパク ト フラ ッ シュ カード は無理に挿入したり 取り 出したり せず、 取り 扱いに注意してく ださい。

6. AC 電源コードを電源装置に接続し、 電源アダプタ ケーブルを ML402 ボードに接続し、 電源

を AC 電源に接続します。

注意 正しい電圧および電力定格の適切な電源を使用しているこ とを確認して ください。

7. RJ45 オス/オス イーサネッ ト ケーブルを使用して、ML402 ボード上のイーサネッ ト コネク タ

をホス ト PC 上のイーサネッ ト コネク タに接続します。

8. コンフ ィギュレーシ ョ ン アドレス DIP スイ ッチを設定します。

次の図に示すよ うに、 1 をオン、 2 をオフ、 3 をオフ、 4 をオン、 5 をオフ、 6 をオンにします。

9. コンフ ィギュレーシ ョ ン ソース セレクタ スイ ッチを設定します。

次の図に示すよ うに、 SYS ACE に設定します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 229リ リース 10.1.2 2008 年 6 月

Page 230: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

10. コンフ ィギュレーシ ョ ン設定を確認します。

a. ボードの電源をオンにします。

b. ボード上のステータス LED で、 FPGA がコンフ ィギュレーシ ョ ンされているこ とを確認

します。 コンフ ィギュレーシ ョ ンが正常に完了した場合は、 DONE LED がオン、 エラー

LED がオフになっているはずです。

c. ボード上の 16 文字、 2 行の LCD に表示されている情報を確認します (次の図を参照)。 エラーが発生していない場合は、 1 行目にイーサネッ ト MAC アドレス (コロンなし)、 2 行目に IPv4 アドレスが表示されます。

d. LCD にこれらの情報が表示されない場合は、 System ACE リセッ ト ボタンを押して、

FPGA を リ コンフ ィギュレーシ ョ ンします。

e. ステータス LED で、 コンフ ィギュレーシ ョ ン シーケンスが正し く完了したこ とを確認し

ます。

11. イーサネッ ト インターフェイス と接続ステータスを確認します。

a. ボードのイーサネッ ト インターフェイスをネッ ト ワークまたは直接ホス トに接続します。

b. オンボード イーサネッ トのステータス LED で、 イーサネッ ト インターフェイスがアク

ティブ イーサネッ ト セグメン トに割り当てられているこ とを確認します。 LED は、 イン

ターフェイスが動作している リ ンク スピード と二重モードを示しているはずです。 ネッ ト

ワーク ト ラフ ィ ッ クに応じて、 TX および RX LED がオン/オフになり ます。 LED がオン

にならない場合は、CPU リセッ ト ボタンを押して FPGA を リセッ ト し、 イーサネッ ト セグメン トがアクティブであるかど うかを確認します。

230 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 231: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

c. ホス トから ICMP ping を発行して、ボードがホス トからアクセス可能であるこ とを確認し

ます。 たとえば、コンソールで 「ping 192.168.8.1」 と入力する と、IP アドレス 192.168.8.1でのボードへの接続をテス トできます。

d. ターゲッ ト FPGA は、 UDP ポート 9999 から信号を受信します。 ネッ ト ワーク ベースの

イーサネッ ト コンフ ィギュレーシ ョ ンを使用する場合は、ネッ ト ワークで関連する通信が

遮断されていないこ とを確認してください。 これは、 ポイン ト ツーポイン ト イーサネッ ト

コンフ ィギュレーシ ョ ンには影響しません。

イーサネッ ト ハードウェア協調シミ ュレーシ ョ ン用の ML506 プラ ッ トフォームのインストール

次に、 ML506 ボードでポイン ト ツーポイン ト イーサネッ ト ハードウェア協調シ ミ ュレーシ ョ ンを

実行するために必要なハードウェアおよびソフ ト ウェアのインス トール方法および設定方法を説明

します。

必要なハードウェア

1. ザイ リ ンクス Virtex-5 SX ML506 プラ ッ ト フォームには、 次のものが含まれています。

a. Virtex-5 ML506 ボード

b. ML506 キッ トに含まれる 5V 電源

c. コンパク ト フラ ッシュ カード

2. 次のものも必要です。

a. ホス ト PC 用のイーサネッ ト ネッ ト ワーク インターフェイス カード (NIC)

b. イーサネッ ト RJ45 オス /オス ケーブル (ネッ ト ワーク ケーブルまたはクロスオーバー

ケーブルを使用可)

c. PC 用のコンパク ト フラ ッシュ リーダ

System Generator for DSP ユーザー ガイド japan.xilinx.com 231リ リース 10.1.2 2008 年 6 月

Page 232: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ホス ト PC へのソフ トウェアのインス トール

次のソフ ト ウェアが PC にインス トールされているこ とを確認してください。

• 現在の System Generator リ リース ノートで指定されている System Generator のバージ ョ ン

• 現在の System Generator リ リース ノートで指定されているザイ リ ンクス ISE のバージ ョ ン

• WinPcap バージ ョ ン 4.0 (System Generator のインス トーラでインス トールするか、

http://www.winpcap.org から入手)

PC 上の LAN (ローカル エリア ネッ トワーク ) の設定

PC 上に、10/100 高速イーサネッ ト またはギガビッ ト イーサネッ ト アダプタが必要です。 次の手順

に従って設定します。

1. [スタート ] → [コン ト ロール パネル] をク リ ッ ク して [ネッ ト ワーク接続] をダブルク リ ッ ク

し、 [ローカル エリア接続] を右ク リ ッ ク して [プロパティ ] をク リ ッ ク します。

2. [インターネッ ト プロ ト コル (TCP/IP)] を選択し、 [プロパティ ] ボタンをク リ ッ ク します。

[インターネッ ト プロ ト コル (TCP/IP) のプロパティ ] ダイアログ ボッ クスで [次の IP アドレ

スを使う ] をオンにし、[IP アドレス] を 192.168.8.2 に、[サブネッ ト マスク ] を 255.255.255.0に設定します。 ML506 のデフォルトの IP アドレスは 192.168.8.1 であるので、 IP アドレスの

後の桁は 1 以外にする必要があ り ます。 詳細は、 「System Generator ML506 ハードウェア協

調シ ミ ュレーシ ョ ン コンフ ィギュレーシ ョ ン ファ イルの読み込み」 を参照してください。

232 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 233: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

3. [構成] ボタンをク リ ッ ク し、 [詳細設定] タブをク リ ッ ク して [Flow Control] を [Auto] に設定

します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 233リ リース 10.1.2 2008 年 6 月

Page 234: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

4. [Speed & Duplex] を [Auto] に設定し、 [OK] をク リ ッ ク します。

System Generator ML506 ハードウェア協調シミ ュレーシ ョ ン コンフ ィギュ

レーシ ョ ン ファイルの読み込み

System Generator ではハード ウェア協調シ ミ ュレーシ ョ ン コンフ ィギュレーシ ョ ン ファ イルが提

供されており、 コンパク ト フラ ッシュ リーダで ML506 コンパク ト フラ ッシュ カードに読み込む

必要があ り ます。

1. ML506 デモ ファ イルのバッ クアップを作成します (オプシ ョ ン)。

ML506 コンパク ト フラ ッシュ カードには、複数のデモ ファ イルが含まれており、読み込んで使用

できます。

a. コンパク ト フラ ッシュ リーダを PC に接続します。 これには、 通常 USB ポート を使用し

ます。

b. コンパク ト フラ ッシュ カードをコンパク ト フラ ッシュ リーダに挿入します。

c. [マイ コンピュータ ] をダブルク リ ッ クし、コンパク ト フラ ッシュ リーダを表す [ リ ムーバ

ブル ディ スク ] を選択します。

d. PC でバッ クアップ フォルダを作成または開き、コンパク ト フラ ッシュ カードの内容をコ

ピーします。

メモ : この後の手順では、 E: をコンパク ト フラ ッシュ リーダのド ラ イブ名と します。

2. コンパク ト フラ ッシュ カードを再フォーマッ ト します。

System Generator ファ イルを転送できるよ うにするには、 カードを FAT16 ファ イル システムに再

フォーマッ トする必要があ り ます。 カードをフォーマッ トするには、 mkdosfs ユーティ リ ティ を使

用します。

a. 次のザイ リ ンクス Web サイ トから mkdosfs ユーティ リ ティ をダウンロード します。

http://japan.xilinx.com/products/boards/ml310/current/utilities/mkdosfs.zip

234 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 235: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

b. ダウンロード した ZIP ファ イルを C:\mkdosfs に解凍します。

c. [スタート ] → [ファ イル名を指定して実行] をク リ ッ ク し、 「cmd」 と入力して [OK] をク

リ ッ ク します。

d. Windows コマンド プロンプ トで、 次のよ うに入力して mkdosfs フォルダに移動します。

cd C:\mkdosfs

注意 次のステップで、 ド ラ イブ名がコンパク ト フラ ッシュの リ ムーバブル ディ スク (この例では E:) に指定されているこ とを確認して ください。 ド ラ イブ名が正し く指定されていないと、 間違って指定したド

ラ イブが消去され、 再フォーマッ ト されます。

e. 次の mkdosfs コマンドを入力します。

mkdosfs -v -F 16 e:

コンパク ト フラ ッシュ カードの内容が消去され、 再フォーマッ ト されます。

3. System Generator コンフ ィギュレーシ ョ ン ファ イルをコンパク ト フラ ッシュ カードにコピー

します。

メモ : System Generator コンフ ィギュレーシ ョ ン ファ イルは、 次の場所にあ り ます。

...<path_to_sysgen>\plugins\bin\ML506_sysace_cf.zip

MATLAB を起動し、 [Command Window] に次のコマンドを入力します。

unzip(fullfile(xlFindSysgenRoot,'plugins/bin/ML506_sysace_cf.zip'),'e:/')

コンパク ト フラ ッシュのド ラ イブに、 次のファイルとフォルダが表示されます。

イーサネッ ト MAC アドレスと IPv4 アドレスの設定 (オプシ ョ ン)

メモ : デフォル トの MAC アドレス と IP アドレスがデフォルトのネッ ト ワーク設定と競合する場

合、 または複数の ML506 ボードを同時に協調シ ミ ュレーシ ョ ンする場合は、次の手順が必要です。

競合していない場合は、 次のセクシ ョ ンに進んでください。

データをカードに書き込むと、カードのルート ディ レク ト リに mac.dat および ip.dat ファ イル

があ り ます。 これらのファイルは、ボードに関連付けるイーサネッ ト MAC アドレス と IPv4 アドレスを指定します。 これらのアドレスは、 イーサネッ ト ハードウェア協調シ ミ ュレーシ ョ ン

中にターゲッ ト ボードを識別するために使用されます。

a. mac.dat ファ イルをテキス ト エディ タで開き、イーサネッ ト MAC アドレスを変更します。

MAC アドレスは、 2 桁の 16 進数 6 個をコロンで区切って指定します (00:0a:35:11:22:33など)。 すべて 0、 ブロードキャス ト 、 マルチキャス ト MAC アドレスはサポート されてい

ません。

System Generator for DSP ユーザー ガイド japan.xilinx.com 235リ リース 10.1.2 2008 年 6 月

Page 236: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

b. ip.dat ファ イルをテキス ト エディ タで開き、 IP アドレスを変更します。 IP アドレスは、10進数をピ リオドで区切った表記方法 (192.168.8.1 など) で指定します。 すべて 0、ブロード

キャス ト 、マルチキャス ト、ループバッ ク IP アドレスはサポート されていません。 ML506ボードの IP アドレスを変更したら、 「PC 上の LAN (ローカル エリア ネッ ト ワーク ) の設

定」 の手順に従って PC のネッ ト ワーク接続の IP アドレスも変更します。 直接接続するに

は、ML506 と PC を同じサブネッ トにする必要があ り ます。 同じサブネッ トにしない場合

は、 ML506 の IP アドレスに PC から、 PC の IP アドレスに ML506 からアクセスできる

よ うにしてください。

ML506 ボードの設定

次の図に、 この設定手順に関連する ML506 コンポーネン ト を示します。

1. ML506 ボードを、 ザイ リ ンクスのロゴがボードの左下になるよ うに配置します。

2. 電源スイ ッチが右上にあ り、 オフになっているこ とを確認します。

イーサネッ ト

電源コネクタ電源スイッチ

LCDイーサネッ ト ステータス LED

コンフ ィギュレーシ ョ ン アドレスDIP スイッチ (SW3)

イーサネッ ト モデル セレク トジャンパ (J22 と J23)

236 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 237: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

3. 次の図に示すよ うに、 コンパク ト フラ ッシュ リーダのリ ムーバブル ディ スクを右ク リ ッ ク し

て [取り出し ] をク リ ッ ク します。

4. コンパク ト フラ ッシュ カードをコンパク ト フラ ッシュ リーダから取り出します。

5. コンパク ト フラ ッシュ カードのスロ ッ ト (ML506 ボードの裏側) に、 コンパク ト フラ ッシュ

カードをラベルがボード と反対側になるよ うに挿入します。 次の図に、 ボードの裏側にコンパ

ク ト フラ ッシュ カードを正し く挿入した様子を示します。

メモ : ボードに含まれるコンパク ト フラ ッシュ カードが、 写真のものと異なるこ とがあ り ます。

注意 コンパク ト フラ ッ シュ カード は無理に挿入したり 取り 出したり せず、 取り 扱いに注意してく ださい。

6. AC 電源コードを電源装置に接続し、 5V 電源アダプタ ケーブルを ML506 ボードに接続し、 電源を AC 電源に接続します。

注意 正しい電圧および電力定格の適切な電源を使用しているこ とを確認して ください。

7. RJ45 オス/オス イーサネッ ト ケーブルを使用して、ML506 ボード上のイーサネッ ト コネク タ

をホス ト PC 上のイーサネッ ト コネク タに接続します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 237リ リース 10.1.2 2008 年 6 月

Page 238: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

8. コンフ ィギュレーシ ョ ン アドレス DIP スイ ッチ SW3 を設定します。

1 をオン、 2 をオフ、 3 をオフ、 4 をオン、 5 をオフ、 6 をオン、 7 をオフ、 8 をオンにします。

9. イーサネッ ト モード セレク ト ジャンパを設定します。

次の図に示すよ うに、 両方のイーサネッ ト モード セレク ト ジャンパ (J22 と J23) で、 ピン 1と 2 を接続します。

10. コンフ ィギュレーシ ョ ン設定を確認します。

a. ボードの電源をオンにします。

b. ボード上のステータス LED で、 FPGA がコンフ ィギュレーシ ョ ンされているこ とを確認

します。 コンフ ィギュレーシ ョ ンが正常に完了した場合は、 DONE LED がオン、 エラー

LED がオフになっているはずです。

c. ボード上の 16 文字、 2 行の LCD に表示されている情報を確認します (次の図を参照)。 エラーが発生していない場合は、 1 行目にイーサネッ ト MAC アドレス (コロンなし)、 2 行目に IPv4 アドレスが表示されます。

SW3 コンフ ィギュレーシ ョ ン アドレスDIP スイッチ ( 設定前 )

イーサネッ ト モデル セレク トジャンパ (J22 と J23)

238 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 239: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

d. LCD にこれらの情報が表示されない場合は、 System ACE リセッ ト ボタンを押して、

FPGA を リ コンフ ィギュレーシ ョ ンします。

e. ステータス LED で、 コンフ ィギュレーシ ョ ン シーケンスが正し く完了したこ とを確認し

ます。

11. イーサネッ ト インターフェイス と接続ステータスを確認します。

a. ボードのイーサネッ ト インターフェイスをネッ ト ワークまたは直接ホス トに接続します。

b. オンボード イーサネッ トのステータス LED で、 イーサネッ ト インターフェイスがアク

ティブ イーサネッ ト セグメン トに割り当てられているこ とを確認します。 LED は、 イン

ターフェイスが動作している リ ンク スピード と二重モードを示しているはずです。 ネッ ト

ワーク ト ラフ ィ ッ クに応じて、 TX および RX LED がオン/オフになり ます。 LED がオン

にならない場合は、CPU リセッ ト ボタンを押して FPGA を リセッ ト し、 イーサネッ ト セグメン トがアクティブであるかど うかを確認します。

c. ホス トから ICMP ping を発行して、ボードがホス トからアクセス可能であるこ とを確認し

ます。 たとえば、コンソールで 「ping 192.168.8.1」 と入力する と、IP アドレス 192.168.8.1でのボードへの接続をテス トできます。

System ACE リセッ ト

System Generator for DSP ユーザー ガイド japan.xilinx.com 239リ リース 10.1.2 2008 年 6 月

Page 240: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

d. ターゲッ ト FPGA は、 UDP ポート 9999 から信号を受信します。 ネッ ト ワーク ベースの

イーサネッ ト コンフ ィギュレーシ ョ ンを使用する場合は、ネッ ト ワークで関連する通信が

遮断されていないこ とを確認してください。 これは、 ポイン ト ツーポイン ト イーサネッ ト

コンフ ィギュレーシ ョ ンには影響しません。

イーサネッ ト ハードウェア協調シミ ュレーシ ョ ン用の Spartan-3A DSP 1800A スタータ プラッ ト フォームのインストール

次に、Spartan-3A DSP 1800A スタータ プラ ッ ト フォームでハードウェア協調シ ミ ュレーシ ョ ンを

実行するために必要なハードウェアおよびソフ ト ウェアのインス トール方法および設定方法を説明

します。 このプラ ッ ト フォームは、 コンフ ィギュレーシ ョ ン ビッ ト ス ト リームのダウンロードに

System ACE ではなく JTAG ケーブルを使用します。

必要なハードウェア

1. ザイ リ ンクス Spartan-3A DSP 1800A スタータ プラ ッ ト フォームには、次のものが含まれてい

ます。

a. Spartan-3A DSP 1800A スタータ プラ ッ ト フォーム

b. 開発キッ トに含まれる 5V 電源

2. 次のものも必要です。

a. ホス ト PC 用のイーサネッ ト ネッ ト ワーク インターフェイス カード (NIC)

b. イーサネッ ト RJ45 オス /オス ケーブル (ネッ ト ワーク ケーブルまたはクロスオーバー

ケーブルを使用可)

c. ザイ リ ンクス パラレル ケーブル IV と Power Jack スプ リ ッ タ ケーブル、 またはザイ リ ン

クス プラ ッ ト フォーム USB ケーブルと 14 ピン リ ボン ケーブル

ホス ト PC へのソフ トウェアのインス トール

次のソフ ト ウェアが PC にインス トールされているこ とを確認してください。

• 現在の System Generator リ リース ノートで指定されている System Generator のバージ ョ ン

• 現在の System Generator リ リース ノートで指定されているザイ リ ンクス ISE のバージ ョ ン

• WinPcap バージ ョ ン 4.0 (System Generator のインス トーラでインス トールするか、

http://www.winpcap.org から入手)

PC 上の LAN (ローカル エリア ネッ トワーク ) の設定

PC 上に、10/100 高速イーサネッ ト またはギガビッ ト イーサネッ ト アダプタが必要です。 次の手順

に従って設定します。

240 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 241: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

1. [スタート ] → [コン ト ロール パネル] をク リ ッ ク して [ネッ ト ワーク接続] をダブルク リ ッ ク

し、 [ローカル エリア接続] を右ク リ ッ ク して [プロパティ ] をク リ ッ ク します。

2. [インターネッ ト プロ ト コル (TCP/IP)] を選択し、 [プロパティ ] ボタンをク リ ッ ク します。 [インターネッ ト プロ ト コル (TCP/IP) のプロパティ ] ダイアログ ボッ クスで [次の IP アドレスを

使う ] をオンにし、 [IP アドレス] を 192.168.8.2 に、 [サブネッ ト マスク ] を 255.255.255.0 に設定します。 スタータ プラ ッ ト フォームのデフォルト の IP アド レスは 192.168.8.1 であるの

で、 IP アドレスの 後の桁は 1 以外にする必要があ り ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 241リ リース 10.1.2 2008 年 6 月

Page 242: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

3. [構成] ボタンをク リ ッ ク し、 [詳細設定] タブをク リ ッ ク して [Flow Control] を [Auto] に設定

します。

4. [Speed & Duplex] を [Auto] に設定し、 [OK] をク リ ッ ク します。

242 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 243: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

Spartan-3A DSP 1800A スタータ プラ ッ ト フォームの設定

1. Spartan-3A DSP 1800A スタータ プラ ッ ト フォームを、ザイ リ ンクスのロゴの右側が上になる

よ うにし、 プラ ッ ト フォームの右下の 1/4 区画に配置します。

2. 電源スイ ッチが右上にあ り、 オフになっているこ とを確認します。

3. ザイ リ ンクス パラレル ケーブル IV を使用する場合は、 次の手順 a ~ d に従います。

a. ザイ リ ンクス パラレル ケーブル IV の DB25 プラグ コネク タを IEEE-1284 準拠の PC パラレル (プリ ンタ ) ポート コネク タに接続します。

b. 14 ピンの 6 インチ高パフォーマンス リ ボン ケーブルを使用して、ザイ リ ンクス パラレル

ケーブル IV のポッ ド エンドをスタータ プラ ッ ト フォームの JTAG ポート (J2) に接続し

ます。

c. Power Jack ケーブルを PC のキーボード /マウス コネク タに接続します。

d. 必要に応じて、キーボード /マウス ケーブルのオス側をザイ リ ンクス Power Jack ケーブル

(スプ リ ッ タ ケーブル) のメ ス コネク タに接続します。

4. ザイ リ ンクス プラ ッ ト フォーム ケーブル USB を使用する場合は、次の手順 a ~ b に従います。

a. ザイ リ ンクス プラ ッ ト フォーム USB を PC 上の USB ポートに接続します。

b. 14 ピンの 6 インチ高パフォーマンス リ ボン ケーブルを使用して、ザイ リ ンクス プラ ッ ト

フォーム ケーブル USB のポッ ド エン ド をスタータ プラ ッ ト フォームの JTAG ポー ト

(J2) に接続します。

5. AC 電源コードを電源装置に接続し、 5V 電源アダプタ ケーブルをスタータ ボードの 5V DCONLY コネクタ (J5) に接続し、 電源コードを AC 電源に接続します。

注意 正しい電圧および電力定格の適切な電源を使用しているこ とを確認して ください。

6. Spartan-3A DSP 1800A スタータ プラ ッ ト フォームの電源をオンにします。

イーサネッ ト ハードウェア協調シミ ュレーシ ョ ン用の Spartan-3A DSP 3400A 開発プラッ ト フォームのインストール

次に、Spartan-3A DSP 3400A 開発プラ ッ ト フォームでポイン ト ツーポイン ト イーサネッ ト ハード

ウェア協調シ ミ ュレーシ ョ ンを実行するために必要なハード ウェアおよびソフ ト ウェアのインス

トール方法および設定方法を説明します。

必要なハードウェア

1. ザイ リ ンクス Spartan-3A DSP 3400A 開発プラ ッ ト フォームには、次のものが含まれています。

a. Spartan-3A DSP 3400A 開発ボード

b. ボード LYR178-101C (Rev C) に含まれる +12V 電源、 またはボード LYR178-101D (RevD) に含まれる +5V 電源

c. コンパク ト フラ ッシュ カード

2. 次のものも必要です。

a. ホス ト PC 用のイーサネッ ト ネッ ト ワーク インターフェイス カード (NIC)

b. イーサネッ ト RJ45 オス /オス ケーブル (ネッ ト ワーク ケーブルまたはクロスオーバー

ケーブルを使用可)

c. PC 用のコンパク ト フラ ッシュ リーダ

System Generator for DSP ユーザー ガイド japan.xilinx.com 243リ リース 10.1.2 2008 年 6 月

Page 244: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ホス ト PC へのソフ トウェアのインス トール

次のソフ ト ウェアが PC にインス トールされているこ とを確認してください。

• 現在の System Generator リ リース ノートで指定されている System Generator のバージ ョ ン

• 現在の System Generator リ リース ノートで指定されているザイ リ ンクス ISE のバージ ョ ン

• WinPcap バージ ョ ン 4.0 (System Generator のインス トーラでインス トールするか、

http://www.winpcap.org から入手)

PC 上の LAN (ローカル エリア ネッ トワーク ) の設定

PC 上に、10/100 高速イーサネッ ト またはギガビッ ト イーサネッ ト アダプタが必要です。 次の手順

に従って設定します。

1. [スタート ] → [コン ト ロール パネル] をク リ ッ ク して [ネッ ト ワーク接続] をダブルク リ ッ ク

し、 [ローカル エリア接続] を右ク リ ッ ク して [プロパティ ] をク リ ッ ク します。

2. [インターネッ ト プロ ト コル (TCP/IP)] を選択し、 [プロパティ ] ボタンをク リ ッ ク します。 [インターネッ ト プロ ト コル (TCP/IP) のプロパティ ] ダイアログ ボッ クスで [次の IP アドレスを

使う ] をオンにし、 [IP アドレス] を 192.168.8.2 に、 [サブネッ ト マスク ] を 255.255.255.0 に設定します。 ML506 のデフォルトの IP アドレスは 192.168.8.1 であるので、 IP アドレスの

後の桁は 1 以外にする必要があ り ます。詳細は、「System Generator ML506 ハードウェア協調

シ ミ ュレーシ ョ ン コンフ ィギュレーシ ョ ン ファ イルの読み込み」 を参照してください。

244 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 245: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

3. [構成] ボタンをク リ ッ ク し、 [詳細設定] タブをク リ ッ ク して [Flow Control] を [Auto] に設定

します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 245リ リース 10.1.2 2008 年 6 月

Page 246: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

4. [Speed & Duplex] を [Auto] に設定し、 [OK] をク リ ッ ク します。

System Generator Spartan-3A DSP 3400A ハードウェア協調シミ ュレーシ ョ

ン コンフ ィギュレーシ ョ ン ファイルの読み込み

System Generator ではハード ウェア協調シ ミ ュレーシ ョ ン コンフ ィギュレーシ ョ ン ファ イルが提

供されており、 コンパク ト フラ ッシュ リーダで Spartan-3A DSP 3400A コンパク ト フラ ッシュ

カードに読み込む必要があ り ます。

1. Spartan-3A DSP 3400A デモ ファ イルのバッ クアップを作成します (オプシ ョ ン)。

Spartan-3A DSP 3400A コンパク ト フラ ッシュ カードには、複数のデモ ファ イルが含まれており、

読み込んで使用できます。

a. コンパク ト フラ ッシュ リーダを PC に接続します。 これには、 通常 USB ポート を使用し

ます。

b. コンパク ト フラ ッシュ カードをコンパク ト フラ ッシュ リーダに挿入します。

c. [マイ コンピュータ ] をダブルク リ ッ クし、コンパク ト フラ ッシュ リーダを表す [ リ ムーバ

ブル ディ スク ] を選択します。

d. PC でバッ クアップ フォルダを作成または開き、コンパク ト フラ ッシュ カードの内容をコ

ピーします。

メモ : この後の手順では、 E: をコンパク ト フラ ッシュ リーダのド ラ イブ名と します。

2. コンパク ト フラ ッシュ カードを再フォーマッ ト します。

System Generator ファ イルを転送できるよ うにするには、 カードを FAT16 ファ イル システムに再

フォーマッ トする必要があ り ます。 カードをフォーマッ トするには、 mkdosfs ユーティ リ ティ を使

用します。

a. 次のザイ リ ンクス Web サイ トから mkdosfs ユーティ リ ティ をダウンロード します。

http://japan.xilinx.com/products/boards/ml310/current/utilities/mkdosfs.zip

246 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 247: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

b. ダウンロード した ZIP ファ イルを C:\mkdosfs に解凍します。

c. [スタート ] → [ファ イル名を指定して実行] をク リ ッ ク し、 「cmd」 と入力して [OK] をク

リ ッ ク します。

d. Windows コマンド プロンプ トで、 次のよ うに入力して mkdosfs フォルダに移動します。

cd C:\mkdosfs

注意 次のステップで、 ド ラ イブ名がコンパク ト フラ ッシュの リ ムーバブル ディ スク (この例では E:) に指定されているこ とを確認して ください。 ド ラ イブ名が正し く指定されていないと、 間違って指定したド

ラ イブが消去され、 再フォーマッ ト されます。

e. 次の mkdosfs コマンドを入力します。

mkdosfs -v -F 16 e:

コンパク ト フラ ッシュ カードの内容が消去され、 再フォーマッ ト されます。

3. System Generator コンフ ィギュレーシ ョ ン ファ イルをコンパク ト フラ ッシュ カードにコピー

します。

メモ : System Generator コンフ ィギュレーシ ョ ン ファ イルは、 次の場所にあ り ます。

...<path_to_sysgen>\plugins\bin\S3ADSP_DB_sysace_cf.zip

MATLAB を起動し、 [Command Window] に次のコマンドを入力します。

unzip(fullfile(xlFindSysgenRoot,'plugins/bin/S3ADSP_DB_sysace_cf.zip'),'e:/')

イーサネッ ト MAC アドレスと IPv4 アドレスの設定 (オプシ ョ ン)

メモ : デフォル トの MAC アドレス と IP アドレスがデフォルトのネッ ト ワーク設定と競合する場

合、 または複数の ML506 ボードを同時に協調シ ミ ュレーシ ョ ンする場合は、次の手順が必要です。

競合していない場合は、 次のセクシ ョ ンに進んでください。

データをカードに書き込むと、カードのルート ディ レク ト リに mac.dat および ip.dat ファ イル

があ り ます。 これらのファイルは、ボードに関連付けるイーサネッ ト MAC アドレス と IPv4 アドレスを指定します。 これらのアドレスは、 イーサネッ ト ハードウェア協調シ ミ ュレーシ ョ ン

中にターゲッ ト ボードを識別するために使用されます。

a. mac.dat ファ イルをテキス ト エディ タで開き、イーサネッ ト MAC アドレスを変更します。

MAC アドレスは、 2 桁の 16 進数 6 個をコロンで区切って指定します (00:0a:35:11:22:33など)。 すべて 0、 ブロードキャス ト 、 マルチキャス ト MAC アドレスはサポート されてい

ません。

b. ip.dat ファ イルをテキス ト エディ タで開き、 IP アドレスを変更します。 IP アドレスは、10進数をピ リオドで区切った表記方法 (192.168.8.1 など) で指定します。 すべて 0、ブロード

キャス ト 、マルチキャス ト、ループバッ ク IP アドレスはサポート されていません。 ML506ボードの IP アドレスを変更したら、 「PC 上の LAN (ローカル エリア ネッ ト ワーク ) の設

定」 の手順に従って PC のネッ ト ワーク接続の IP アドレスも変更します。 直接接続するに

は、ML506 と PC を同じサブネッ トにする必要があ り ます。 同じサブネッ トにしない場合

は、 ML506 の IP アドレスに PC から、 PC の IP アドレスに ML506 からアクセスできる

よ うにしてください。

System Generator for DSP ユーザー ガイド japan.xilinx.com 247リ リース 10.1.2 2008 年 6 月

Page 248: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

Spartan-3A DSP 3400A 開発ボードの設定

次の図に、この設定手順に関連する Spartan-3A DSP 3400A ボード (Rev C) コンポーネン ト を示し

ます。

+12V 電源コネクタ

イーサネッ ト ポート

電源スイッチ

LCD

コンフ ィギュレーシ ョ ン アドレス DIP スイッチ (S2)

イーサネッ ト モード セレク ト ジャンパ (JP2)

コンパク ト フラ ッシュ カード

System ACEリセッ ト ボタン

LYR178-101C (Rev C)

248 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 249: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

次の図に、この設定手順に関連する Spartan-3A DSP 3400A ボード (Rev D) コンポーネン ト を示し

ます。

1. Spartan-3A 3400A 開発ボードを、上図に示すよ うに LCD ディ スプレイが下になるよ うに配置

します。

2. 電源スイ ッチがオフになっているこ とを確認します。

イーサネッ ト ポート

電源スイッチLCD

コンフ ィギュレーシ ョ ン アドレス DIP スイッチ (S2)

イーサネッ ト モード セレク ト ジャンパ (JP2)

コンパク ト フラ ッシュ カード

System ACEリセッ ト ボタン

+5V 電源コネクタ

LYR178-101D (Rev D)

System Generator for DSP ユーザー ガイド japan.xilinx.com 249リ リース 10.1.2 2008 年 6 月

Page 250: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

3. 次の図に示すよ うに、 コンパク ト フラ ッシュ リーダのリ ムーバブル ディ スクを右ク リ ッ ク し

て [取り出し ] をク リ ッ ク します。

4. コンパク ト フラ ッシュ カードをコンパク ト フラ ッシュ リーダから取り出します。

5. コンパク ト フラ ッシュ カードのスロ ッ ト (Spartan-3A DSP 3400A ボードの裏側) に、 コンパ

ク ト フラ ッシュ カードをラベルがボード と反対側になるよ うに挿入します。 次の図に、ボード

の裏側にコンパク ト フラ ッシュ カードを正し く挿入した様子を示します。

メモ : ボードに含まれるコンパク ト フラ ッシュ カードが、 写真のものと異なるこ とがあ り ます。

注意 コンパク ト フラ ッ シュ カード は無理に挿入したり 取り 出したり せず、 取り 扱いに注意してく ださい。

6. Rev C の 3400A 開発プラ ッ ト フォームを使用している場合は、 +12V 電源アダプタ ケーブル

を電源コネクタに接続し、 電源を AC 電源に接続します。

Rev D の 3400A 開発プラ ッ ト フォームを使用している場合は、+5V 電源アダプタ ケーブルを

電源コネクタに接続し、 電源を AC 電源に接続します。

注意 正しい電圧および電力定格の適切な電源を使用しているこ とを確認して ください。

7. RJ45 オス/オス イーサネッ ト ケーブルを使用して、Spartan-3A DSP 3400A ボード上のイーサ

ネッ ト コネク タをホス ト PC 上のイーサネッ ト コネクタに接続します。

8. コンフ ィギュレーシ ョ ン アドレス DIP スイ ッチ S2 を、 1 をオフ、 2 をオン、 3 をオフ、 4 をオン、 5 をオフ、 6 をオン、 7 をオフ、 8 をオフにします。

250 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 251: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ハードウェア協調シミ ュレーシ ョ ン ボードのインス トールR

9. イーサネッ ト モード セレク ト ジャンパ JP2 で、ピン 1 と 2 を接続します (デフォルト GMII)。

10. コンフ ィギュレーシ ョ ン設定を確認します。

a. ターゲッ ト ボードの電源をオンにします。

b. ボード上の 16 文字、 2 行の LCD に表示されている情報を確認します (次の図を参照)。 エラーが発生していない場合は、 1 行目にイーサネッ ト MAC アドレス (コロンなし)、 2 行目に IPv4 アドレスが表示されます。

c. LCD にこれらの情報が表示されない場合は、 System ACE リセッ ト ボタンを押して、

FPGA を リ コンフ ィギュレーシ ョ ンします。

11. イーサネッ ト インターフェイス と接続ステータスを確認します。

a. ホス トから ICMP ping を発行して、ボードがホス トからアクセス可能であるこ とを確認し

ます。 たとえば、コンソールで 「ping 192.168.8.1」 と入力する と、IP アドレス 192.168.8.1でのボードへの接続をテス トできます。

b. ターゲッ ト FPGA は、 UDP ポート 9999 から信号を受信します。 ネッ ト ワーク ベースの

イーサネッ ト コンフ ィギュレーシ ョ ンを使用する場合は、ネッ ト ワークで関連する通信が

遮断されていないこ とを確認してください。 これは、 ポイン ト ツーポイン ト イーサネッ ト

コンフ ィギュレーシ ョ ンには影響しません。

Spartan-3A DSP 3400A 開発プラ ッ ト フォームの詳細情報は、次のサイ トから『XtremeDSP Spartan-3A DSP Development Board Technical Reference Guide』 を参照してください。

http://japan.xilinx.com/bvdocs/ipcenter/user_guide_user_manual/s3a-dsp-3400a-userguide.pdf

System Generator for DSP ユーザー ガイド japan.xilinx.com 251リ リース 10.1.2 2008 年 6 月

Page 252: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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

次に、 ML402 ボードで JTAG ハード ウェア協調シ ミ ュレーシ ョ ンを実行するために必要なハード

ウェアおよびソフ ト ウェアのインス トール方法および設定方法を説明します。

必要なハードウェア

1. ザイ リ ンクス Virtex-4 SX ML402 プラ ッ ト フォームには、 次のものが含まれています。

a. Virtex-4 ML402 ボード

b. ML402 キッ トに含まれる 5V 電源

c. コンパク ト フラ ッシュ カード

2. 次のものも必要です。

a. ザイ リ ンクス パラレル ケーブル IV と Power Jack スプ リ ッ タ ケーブル、 またはザイ リ ン

クス プラ ッ ト フォーム USB ケーブルと 14 ピン リ ボン ケーブル

b. PC 用のコンパク ト フラ ッシュ リーダ

ホス ト PC へのソフ トウェアのインス トール

• 現在の System Generator リ リース ノートで指定されている System Generator のバージ ョ ン

• 現在の System Generator リ リース ノートで指定されているザイ リ ンクス ISE のバージ ョ ン

ML402 ボードの設定

次の図に、 この JTAG 設定手順に関連する ML402 コンポーネン ト を示します。

1. ML402 ボードを、 Virtex-4 とザイ リ ンクスのロゴがボードの上部になるよ うに配置します。

2. 電源スイ ッチが右上にあ り、 オフになっているこ とを確認します。

FPGA および CPLDデバッグ ポート

252 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 253: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

JTAG ハードウェア協調シミ ュレーシ ョ ン用の新規プラッ ト フォームの サポートR

3. ザイ リ ンクス パラレル ケーブル IV を使用する場合は、 次の手順 a ~ d に従います。

a. ザイ リ ンクス パラレル ケーブル IV の DB25 プラグ コネク タを IEEE-1284 準拠の PC パラレル (プリ ンタ ) ポート コネク タに接続します。

b. 14 ピンの 6 インチ高パフォーマンス リ ボン ケーブルを使用して、ザイ リ ンクス パラレル

ケーブル IV のポッ ド エンドを ML402 ボードの FPGA および CPU デバッグ ポート (上図を参照) に接続します。

c. Power Jack ケーブルを PC のキーボード /マウス コネク タに接続します。

d. 必要に応じて、キーボード /マウス ケーブルのオス側をザイ リ ンクス Power Jack ケーブル

(スプ リ ッ タ ケーブル) のメ ス コネク タに接続します。

4. ザイ リ ンクス プラ ッ ト フォーム ケーブル USB を使用する場合は、次の手順 a ~ b に従います。

a. ザイ リ ンクス プラ ッ ト フォーム USB を PC 上の USB ポートに接続します。

b. 14 ピンの 6 インチ高パフォーマンス リ ボン ケーブルを使用して、ザイ リ ンクス プラ ッ ト

フォーム ケーブル USB のポッ ド エンドを ML402 ボードの FPGA および CPU デバッグ

ポート (上図を参照) に接続します。

5. AC 電源コードを電源装置に接続し、 電源アダプタ ケーブルを ML402 ボードに接続し、 電源

を AC 電源に接続します。

注意 正しい電圧および電力定格の適切な電源を使用しているこ とを確認して ください。

6. ML402 ボードの電源をオンにします。

JTAG ハードウェア協調シミ ュレーシ ョ ン用の新規プラッ ト フォームのサポート

System Generator では、JTAG とザイ リ ンクス プログラム ケーブル (パラレル ケーブル IV、プラ ッ

ト フォーム ケーブル USB など) を使用して FPGA ハードウェアと通信する汎用インターフェイス

が提供されています。 このインターフェ イ スは、 JTAG の機能を活用して System Generator のHardware in the Loop シ ミ ュレーシ ョ ンをほかのさまざまな FPGA プラ ッ ト フォームに拡張してい

ます。

ハードウェア要件

FPGA プラ ッ ト フォームでは、次のハード ウェア コンポーネン トが含まれていれば、 JTAG ハード

ウェア協調シ ミ ュレーシ ョ ン インターフェイスをサポートできます。

• System Generator でサポート されているザイ リ ンクス FPGA デバイス (System Generatorトークンのパラ メータ ダイアログ ボッ クスの [Part] で選択可能なデバイス)

• FPGA にフ リーランニング ク ロ ッ ク ソースを共有するオンボード オシレータ

• FPGA へのアクセスを提供する JTAG ヘッダ

新規プラッ ト フォームのサポート

JTAG ハード ウェア協調シ ミ ュレーシ ョ ン インターフェイスは汎用ですが、FPGA プラ ッ ト フォー

ムを System Generator でサポート させるためには、独自のボード サポート パッケージが必要です。

ボード サポート パッケージは、 ボード (プラ ッ ト フォーム) の情報を含む 4 つのファイルで構成さ

れます。 多くの FPGA プラ ッ ト フォームには、 既にボード サポート パッケージが用意されていま

す。 これらのファイルをダウンロードする方法は、「ハードウェア協調シ ミ ュレーシ ョ ン用のインス

トール」 を参照してください。

System Generator for DSP ユーザー ガイド japan.xilinx.com 253リ リース 10.1.2 2008 年 6 月

Page 254: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ハードウェア協調シ ミ ュレーシ ョ ン ボード サポート パッケージの提供されていない FPGA プラ ッ

ト フォームを使用する場合は、 プラ ッ ト フォームがハード ウェア要件を満たしていれば、 独自の

ボード サポート パッケージを作成できます。 プラ ッ ト フォームのボード サポート パッケージの作

成は簡単です。 System Generator では、System Generator Board Description Builder (SBDBuilder)とい うユーテ ィ リ テ ィが提供されており、 新規ボード サポー ト パッケージをグラフ ィ カル イン

ターフェイスを使用して作成できます。 System Generator に含まれているテンプレート ファ イル

を手動で編集し、 ボード サポート パッケージを作成するこ と も可能です。

SBDBuilder を起動するには、 MATLAB の [Command Window] に 「xlSBDBuilder」 と入力する

か、System Generator トークンの [Compilation] で [Hardware Co-Simulation] → [New CompilationTarget] をク リ ッ ク します。

SBDBuilder のダイアログ ボックス

SBDBuilder を起動する と、 次のよ う なダイアログ ボッ クスが開きます。

このダイアログ ボッ クスで次に説明するよ うにパラ メータを指定して、 ボード サポート パッケー

ジを作成します。

[Board Name] : ボード名を指定します。 この名前が、 System Generator トークンの [Compilation]で JTAG ハードウェア協調シ ミ ュレーシ ョ ン プラ ッ ト フォームと して リ ス ト されます。

[System Clock] : JTAG ハード ウェア協調シミ ュレーショ ンでは、System Generator デザインを駆動

するオンボード ク ロッ クが必要です。 ボード のシステム ク ロッ クについて、次の情報を指定します。

• [Frequency (MHz)] : オンボードのシステム ク ロ ッ クの周波数を MHz で指定します。

• [Pin Location] : システム ク ロ ッ クを接続する FPGA 入力ピンを指定します。

254 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 255: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

JTAG ハードウェア協調シミ ュレーシ ョ ン用の新規プラッ ト フォームの サポートR

[JTAG Options] : System Generator でハードウェア協調シ ミ ュレーシ ョ ン用に FPGA をプログラ

ムするには、 FPGA ボードの JTAG チェーンに関する情報が必要です。 これらの情報を見つける方

法は、 「プラ ッ ト フォームの情報の取得」 を参照して ください。 ボードの仕様がはっき りわからない

場合は、製造業者のマニュアルを参照してください。 [JTAG Options] では、次の情報を入力します。

• [Boundary Scan Position] : JTAG チェーンでのターゲッ ト FPGA の位置を指定します。 チェー

ンのデバイスには 1 から番号が付けられています ( 初のデバイスは 1、 2 番目のデバイスは 2など )。

• [IR Lengths] : JTAG チェーン上のすべてのデバイスに対して命令レジスタの幅を指定します。

値の間は、 スペース、 カンマ、 またはセミ コロンで区切り ます。

• [Detect] : このボタンをク リ ッ クする と、FPGA ボードにアクセスして自動的に IR 幅が検出さ

れます。 この機能を使用するには、 ボードの電源をオンにし、 パラレル ケーブル IV に接続し

ておく必要があ り ます。 JTAG チェーン上の不明のデバイスの IR 幅はクエスチョ ン マーク (?)で示されるので、 手動で指定する必要があ り ます。

[Targetable Devices] : この表には、ボード上の FPGA でプログラム可能なものがリ ス ト されます。

JTAG チェーンのすべてのデバイスがリ ス ト されるわけではなく、指定したバウンダ リ スキャン位

置に存在する可能なデバイスがリ ス ト されます。 ほとんどのボードでは、 指定する必要のあるデバ

イスは 1 のみですが、 ボードによっては複数のデバイスから選択可能です (同じ ソケッ ト にある

XCV1000 または XCV2000 など)。 次のよ うに [Add] および [Delete] ボタンを使用して、デバイス

リ ス ト を作成します。

• [Add] : ボード上のデバイスを選択する メニューが表示されます。 次の図に示すよ うに、 デバ

イスはファ ミ リ、 パーツ名、 スピード、 パッケージ タイプで分類されています。

• [Delete] : リ ス トから選択したデバイスを削除します。

[Non-Memory-Mapped Ports] : ボード専用ポート のサポー ト を追加できます。 ボード専用ポート

は、ハード ウェア協調シ ミ ュレーシ ョ ン中に FPGA でアクセスする必要のあるオンボード コンポー

ネン ト (外部メモリ、 DAC、 ADC など) がある場合に便利です。 ボード専用ポートは、 ハードウェ

ア協調シ ミ ュレーシ ョ ン用にデザインをコンパイルしたと きに、Simulink ポートが作成されるので

はな く物理的な場所にマップされるので、 [Non-Memory-Mapped Ports] (メモ リ マップされない

ポート ) と示されています。 詳細は、 「メモ リ マップされないポートの指定」 を参照して ください。

[Add]、 [Edit]、 および [Delete] ボタンを使用して、 ボード専用ポート を設定します。

• [Add] : ポートの情報を入力するダイアログ ボッ クスが表示されます。

• [Edit] : 選択したポートに変更を加えます。

• [Delete] : リ ス トから選択したポート を削除します。

[Help] : このマニュアルを表示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 255リ リース 10.1.2 2008 年 6 月

Page 256: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

[Load] : 読み込む SBDBuilder Saved Description (保存された記述) XML ファ イルを選択します。

このファイルは、プラグインを作成するたびに保存されます。以前のプラグイン ファ イルを読み込

んで、 編集する場合に便利です。

[Save Zip] : System Generator のプラグイン ファ イルすべて含む ZIP ファ イルを作成します。開い

たダイアログ ボッ クスで、ファ イル名とパス名を指定します。 作成される ZIP ファ イルは、SystemGenerator の xlInstallPlugin 関数に渡すのに適切なフォーマッ トです。

[Exit] : アプリ ケーシ ョ ンを終了します。

メモリ マップされないポートの指定

SBDBuilder を使用して、FPGA プラ ッ ト フォームのメモリ マップされないポート を指定できます。

SBDBuilder の メ インのダイアログ ボッ ク スで、 [Non-Memory-Mapped Ports] の [Add] または

[Edit] をク リ ッ クする と、 次の図に示す [Configure a Port] ダイアログ ボッ クスが表示されます。

このダイアログ ボッ クスで、 ポートに関する次の情報を設定します。

[Port Options] : ポート全体に影響するオプシ ョ ンを指定します。

• [Port Name] : System Generator で表示するポート名を指定します。 MATLAB に準拠した名

前を付ける必要があ り ます ( 初の文字はアルファベッ ト 、 その後の文字は英数字またはアン

ダースコア)。

• [Input]/[Output] : ポートの方向を指定します。

[New Pin] : ポートに追加するピンの情報を入力します。 ポートは、ブール値の単一ピン、またはベ

クタまたはバスの複数ピンで構成されます。

• [Pin LOC] : FPGA 上のピンの絶対位置をロケーシ ョ ン制約によ り定義します。 FPGA プログ

ラムを実際のハードウェア接続に正し く対応させるため、 各ピンに対して定義する必要があ り

ます。

• [PULLUP] : ピンに PULLUP 制約を設定します。 この制約を設定する と ロジッ ク レベルが

High になり、ト ラ イステート ネッ トが駆動されていない場合でもフロート状態になり ません。

• [FAST] : ピンに FAST 制約を設定します。 この制約を設定する と、 IOB 出力の速度が上がり

ますが、 ノ イズおよび消費電力が増加する場合があ り ます。

256 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 257: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

JTAG ハードウェア協調シミ ュレーシ ョ ン用の新規プラッ ト フォームの サポートR

• [Add Pin] : ピンをポートに追加します。 このボタンをク リ ッ ク しないと、ピンがポートに追加

されません。

メモ : [Pin LOC] にカーソルがあると きに Enter キーを押しても 、ピンがポート に追加されます。

[Pin List] :

• [Index] : 直接変更できません。 ポートは複数ビッ トにできるので、 ピンのベクタで表されま

す。 [Index] は、 ポートにおける特定のピンのビッ ト位置を示します。 0 が 下位ビッ トです。

• [Move Up]/[Move Down] : ピン リ ス トで選択したピンを上または下に移動します。 ポートの

ベクタ ビッ ト順を修正するのに便利です。

• [Delete Pin] : リ ス トから選択したピンを削除します。

[Save and Start New] : ポート をボード サポート パッケージに保存します。 入力した情報がク リ ア

され、 新しいポートの情報を入力できるよ うになり ます。

[Save and Close] : ポート をボード サポート パッケージに保存し、メ インのダイアログ ボッ クスに

戻り ます。

[Cancel] : 現在のポートの情報を破棄し、 メ インのダイアログ ボッ クスに戻り ます。

ポートの入力が終了する と、 ダイアログ ボッ クスは次のよ うにな り ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 257リ リース 10.1.2 2008 年 6 月

Page 258: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

プラグイン ファイルの保存

プラ ッ ト フォームに関する情報をダイアログ ボッ クスに入力する と、 ダイアログ ボッ クスは次の

よ うになり ます。

こ こで、ボード サポート パッケージを System Generator のプラグイン ZIP ファ イルに保存するか、

「ボード サポー ト パッケージ ファ イル」 に説明されているよ うに、 ボード サポート パッケージ

ファイルをそのまま保存します。 次の SBDBuilder ファ イルも作成されます。

• yourboard.xml : SBDBuilder Saved Description ファ イル。 以前に作成したプラグインを再読

み込みする際に使用します。 このファ イルに指定した名前 (yourboard) がほかのファ イルにも

使用されます。

• yourboard_libgen.m : デバイス上のメモ リ マップされないポート用にゲート ウェイを自動的

に作成するスク リプ ト。 このスク リプ ト を実行する と、 次の図のよ う なライブラ リが作成され

ます。

258 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 259: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

JTAG ハードウェア協調シミ ュレーシ ョ ン用の新規プラッ ト フォームの サポートR

ボード サポート パッケージ フ ァイル

JTAG ハード ウ ェア協調シ ミ ュレーシ ョ ンをサポー ト する FPGA プラ ッ ト フォームは、 SystemGenerator でボード サポート パッケージによ り定義されます。 このボード サポート パッケージに

は、 デバイス設定や、 プラ ッ ト フォームで提供される JTAG およびバウンダ リ スキャン インター

フェイスに関する情報など、 プラ ッ ト フォームに関する有益な情報が含まれます。 ボード サポート

パッケージは、 次のファイルで構成されます。

メモ : このマニュアルでは、3 つのファイル名の頭に yourboard が付いています。 この部分は、ボー

ドに適切な名前 (xtremedspkit、 mblazedemo など) に置き換えてください。

1. xltarget.m : FPGA プラ ッ ト フォームがコンパイル ターゲッ トであるこ とを System Generatorに示します。 各コンパイル ターゲッ ト にそれぞれ xltarget.m ファ イルがあ り ます。 この関数

は、 コンパイル ターゲッ トの名前 (System Generator トークンのパラ メータ ダイアログ ボッ

クスに表示される名前)、 ボードに関する情報を検索する関数の名前をツールに示します。

2. yourboard_target.m : デバイス情報、ク ロ ッ ク周波数、クロ ッ ク ピンのロケーシ ョ ンなど、FPGAプラ ッ ト フォームに関する情報を System Generator トークンのパラ メータ ダイアログ ボッ ク

スで設定します。

3. yourboard_postgeneration.m : HDL ネッ ト リ ス ト生成後にプラ ッ ト フォーム用に FPGA コン

フ ィ ギュレーシ ョ ン フ ァ イルを生成するために実行するス ク リ プ ト を示し ます。 プラ ッ ト

フォームのバウンダ リ スキャン チェーンでのデバイス位置、 各デバイスの命令レジスタ幅な

ど、 System Generator トークンのパラ メータ ダイアログ ボッ クスに含まれない情報も指定し

ます。 この関数は、 post-generation 関数と して参照されます。

4. yourboard.ucf : FPGA プラ ッ ト フォームのユーザー制約ファイル (UCF)。 ク ロ ッ ク ピン ロケーシ ョ ンおよび周波数、 ボード専用ポートの制約を指定します。

System Generator のインス トール ディ レク ト リには、 上記のファイルのテンプレートがあ り ます。

4 つのテンプレート ファ イルをプラ ッ ト フォームに関する情報に変更する と、新規ボードのボード

サポート パッケージを作成できます。 yourboard を適切な名前に変更してください。

各テンプレートには、 変更する必要のあるフ ィールド、 それらのフ ィールドの値を示す手順が含ま

れています。 変更が必要なフ ィールドは、~~~ の下線で示されています。 テンプレート ファ イルは、

<path_to_sysgen>\hwcosim\jtag\templates にあ り ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 259リ リース 10.1.2 2008 年 6 月

Page 260: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

プラ ッ ト フォームの情報の取得

SBDBuilder (またはボード サポート パッケージのテンプレート ファ イル) では、 FPGA プラ ッ ト

フォームに関する情報が必要です。 次の表に、 必要な情報を示します。

ク ロ ッ ク ピン ロケーシ ョ ン と周期は、 ベンダーのマニュアル、 既存の制約ファ イル、 ベンダーの

オンライン資料/サポート など、 さまざまなソースから取得できます。

プラ ッ ト フォームのバウンダ リ スキャン チェーンにどのデバイスがあるのかわからない場合は、

iMPACT を使用して調べるこ とができます。 iMPACT はザイ リ ンクス ISE に含まれているツール

で、 デバイスのコンフ ィギュレーシ ョ ンおよびファイルの生成を実行します。 iMPACT を起動する

と、プラ ッ ト フォームのバウンダ リ スキャン チェーンが自動的に検出され、次のよ うにグラフ ィ ッ

クで示されます。

情報 説明

ク ロ ッ ク ピン ロケーシ ョ ン

FPGA システム ク ロ ッ ク ソースのピン ロケーシ ョ ン制約。

ク ロ ッ ク周期 FPGA システム ク ロ ッ ク ソースの PERIOD 制約。

バウンダ リ スキャン チェーンでのデバイス

の位置

プラ ッ ト フォームのバウンダ リ スキャン チェーンでのターゲッ ト

FPGA の位置を指定します。 チェーンのデバイスには 1 から番号が付

けられており、 初のデバイスは 1 になり ます。

命令レジスタ幅 バウンダ リ スキャン チェーンの各デバイスの命令レジスタ幅。

260 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 261: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

JTAG ハードウェア協調シミ ュレーシ ョ ン用の新規プラッ ト フォームの サポートR

バウンダ リ スキャン チェーンのデバイスを特定したら、 各デバイスの命令レジスタ幅を判断する

必要があ り ます。 次の表に、 ザイ リ ンクス ファ ミ リの命令レジスタ幅を示します。 命令レジスタ幅

は、SBDBuilder の自動検出機能を使用して調べるこ と もできます。 この機能で命令レジスタ幅を判

断できない場合は、 次の表を参照してください。

デバイス ファ ミ リ IR 幅

XC9500 / XC9500XL / XC9500XV 8

XC1800 / XC18V00 8

XC4000XL/XLA 3

Spartan-XL 3

System_ACE-CF 8

Virtex / Virtex-E(EM) 5

Spartan-II / Spartan-IIE 5

Virtex-II 6

Spartan-3 6

Spartan-3E 6

Spartan-3A/Spartan-3AN 6

Spartan-3A DSP 6

Virtex-II Pro 2、 4、 7 10

Virtex-II Pro 20、 30、 40、 50、 70、 100 14

Virtex-II Pro 125 16

Virtex-4 LX 10

Virtex-4 SX 10

Virtex-4 FX 12、 20 10

Virtex-4 FX 40、 60、 100、 140 14

Virtex-5 LX 10

XCR3000XL 5

XCR3000A / XCR3128 4

XCR3320 / XCR3960 5

XCR5128 / XCR5032C / XCR5064C / XCR5128C 4

CoolRunner-II 8

Platform Flash XCFxxS 8

Platform Flash XCFxxP 16

System Generator for DSP ユーザー ガイド japan.xilinx.com 261リ リース 10.1.2 2008 年 6 月

Page 262: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ボード専用ポートの手動指定

ボード サポート パッケージを作成する際に、 ボード専用ポート を手動で指定できます。 FPGA プラ ッ ト フォームのボード専用ポート を定義するには、 次の操作を実行します。

• yourboard.ucf テンプレート ファ イルにボード専用ポート を追加します。 各制約には、 「<port>contingent」 (<port> はボード専用ポー ト の名前) とい う コ メ ン ト をつける必要があ り ます。

System Generator でハードウェアのモデルをコンパイルする と、 カスタム UCF ファ イルが作

成されます。 モデルで使用されない信号に関連付けられている制約は、カスタム UCF ファ イル

から削除されます。

次に、 ポート adc1_d(0) と adc1_d(1) の例を示します。

net adc1_d(0) loc = af20; # adc1_d contingent net adc1_d(1) loc = ad18; # adc1_d contingent

• yourboard_postgeneration.m 関数で、 すべてのボード専用ポート を宣言します。

メモ : 双方向ポートは、 現在サポート されていません。

yourboard_postgeneration.m 関数に次の行を含めます。

params.('non_memory_mapped_ports') = non_mm_ports;

• ボード専用ポートの情報で Gateway ブロ ッ クをカスタマイズします。

♦ ライブラ リ を作成し、 Gateway ブロ ッ クを作成します。

♦ Gateway にボード専用ポートの名前を付けます。 この名前は、 post-generation 関数および

UCF ファ イルで使用したポート名と一致している必要があ り ます。

♦ Gateway ブロ ッ クをク リ ッ ク します。

♦ MATLAB の [Command Window] に、 次のよ うに入力します。

> xlSetNonMemMap(gcb, 'Xilinx', 'jtaghwcosim')

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

これで、System Generator でボード専用の Gateway を使用できます。 モデルにこの Gateway ブロ ッ

クを含める場合は、Gateway を駆動する信号または Gateway で駆動される信号の幅が、ハードウェ

アのポー ト の幅と一致する よ う にして ください。 Gateway Out ブロ ッ クを駆動する信号の幅は、

Convert ブロ ッ クを使用して強制できます。

non_mm_ports.('adc1_d') = ('in',14);

ポート名幅

方向

(UCF と一致 )

262 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 263: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

JTAG ハードウェア協調シミ ュレーシ ョ ン用の新規プラッ ト フォームの サポートR

メモ : 次の図に示すよ うに、サブシステムを使用し Gateway Out ブロ ッ ク と Convert ブロ ッ クのペ

アを保存する と便利です。

上位コンポーネン トの作成

モデルを JTAG ハードウェア協調シ ミ ュレーシ ョ ン用にコンパイルする と、System Generator でデ

ザインの 上位 HDL エンティティが生成されます。 このエンティティには、モデルで必要なロジッ

ク と、 JTAG ハード ウェア協調シ ミ ュレーシ ョ ンで必要なインターフェイス ロジッ クがインスタン

シエート されています。

プラ ッ ト フォームの特定の要件によ り、 この生成された 上位 HDL エンティティ を使用できない

場合があ り ます。 たとえば、プラ ッ ト フォーム FPGA の DCM で生成したクロ ッ クを使用するコン

ポーネン トがプラ ッ ト フォームにある場合などです。 この場合、 モデルをハード ウェアにコンパイ

ルする と きに独自の 上位コンポーネン ト を作成できます。

メモ : 独自の 上位コンポーネン ト を使用する場合は、 System Generator に合成済みのネッ ト リ ス

ト (NGC、 EDF、 EDN) を供給する必要があ り ます。

メモ : 独自の 上位コンポーネン ト には、 生成された汎用の JTAG ハード ウェア協調シ ミ ュレー

シ ョ ン 上位コンポーネン ト をインスタンシエートする必要があ り ます。 コンポーネン トのインス

タンシエーシ ョ ンには、 必要なクロ ッ ク信号、 ボード専用 I/O ポート を含める必要があ り ます。 次に、 コンポーネン トのインスタンシエーシ ョ ンの例を示します。

component jtagcosim_top port ( -- required clocking ports sys_clk : in std_logic; cosim_clk : out std_logic; sys_clk_buf : out std_logic; -- board specific ports adc1_d : in std_logic_vector(13 downto 0); dac1_d : out std_logic_vector(13 downto 0); dac1_div0 : out std_logic; dac1_div1 : out std_logic; dac1_mod0 : out std_logic; dac1_mod1 : out std_logic; dac1_reset : out std_logic );

end component;

System Generator for DSP ユーザー ガイド japan.xilinx.com 263リ リース 10.1.2 2008 年 6 月

Page 264: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

上位ネッ ト リ ス トは、 yourboard_postgeneration.m で次のよ うに指定します。

params.vendor_toplevel = 'yourboard_toplevel';

こ こで yourboard_toplevel は、System Generator で使用するコンパイル済みの 上位ネッ ト リ ス ト

コンポーネン トの名前です。 上位コンポーネン トに関連付けられているネッ ト リ ス ト ファ イルの

名前も指定する必要があ り ます。 これらのファ イルは、 yourboard_postgeneration.m で次のよ うに

指定します。

params.vendor_netlists = {'yourboard_toplevel.ngc','foo.edf'};

ボード サポート パッケージのインス トール

SBDBuilder では、 System Generator で提供される xlInstallPlugin ユーティ リ ティ を使用して自動

的にインス トール可能なボード サポート パッケージのプラグイン ZIP ファ イルを作成できます。

適切なプラグイン ZIP ファ イルがない場合は、 ボード サポート パッケージを手動でインス トール

できます。 次に、 System Generator のインス トール ディ レク ト リにボード サポート パッケージを

インス トールする方法を示します。

プラグイン ディ レク ト リ

System Generator のインス ト ール ディ レク ト リ には、 新しいコンパイルターゲッ ト のボード サポート パッケージのファイルを保存するディ レク ト リがあ り ます。 このディ レク ト リ (plugins\compilation) は System Generator コンパイル ターゲッ ト プラグインのレポジ ト リ と して使用さ

れ、独特の特性があ り ます。 System Generator のインス トール ディ レク ト リは、次のよ うになって

いるはずです。

プラ ッ ト フォームのボード サポート パッケージ ファ イルは、 plugins\compilation ディ レク ト リ内

にサブディ レク ト リ を作成して保存します。

メモ : ボード サポート パッケージに関連付けられているコンフ ィギュレーシ ョ ン ファ イルはすべ

て、 同じディ レク ト リに保存します。

System Generator では、 コンパイル ターゲッ トに対してこのディ レク ト リ (およびサブディ レク ト

リ ) を検索します。 前述のとおり、xltarget.m ファ イルは FPGA プラ ッ ト フォームがコンパイル ター

ゲッ トであるこ とを System Generator に示します。 System Generator は、plugins\compilation ディ

レク ト リ を検索し、 各 xltarget.m ファ イルに対して System Generator トークンのパラ メータ ダイ

アログ ボッ クスにある [Complilation] のリ ス トに追加します。

264 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 265: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

JTAG ハードウェア協調シミ ュレーシ ョ ン用の新規プラッ ト フォームの サポートR

System Generator ト ーク ンのパラ メ ータ ダイ アロ グ ボ ッ ク スにあ る [Compilation] のサブ メ

ニューは、 plugins\compilation ディレク ト リのディ レク ト リ構造を反映しています。 ボード サポー

ト パッケージの新しいディ レク ト リ を作成する と、 その名前が [Compilation] のサブメニューに表

示されます。

新規パッケージの検出

System Generator で新規ターゲ ッ ト が認識される よ う にするには、 MATLAB の [CommandWindow] に新規ターゲッ ト を検索する次のコマンドを入力します。

xlrehash_xltarget_cache

これで、新規 FPGA プラ ッ ト フォームが System Generator トークンのパラ メータ ダイアログ ボッ

クスで選択できるよ うになり ます。

メモ : このコマンドを実行したと きに System Generator トークンのパラ メータ ダイアログ ボッ ク

スが開いている場合、ダイアログ ボッ クスを一度閉じて開き直さないと、新規ターゲッ トは表示さ

れません。

System Generator for DSP ユーザー ガイド japan.xilinx.com 265リ リース 10.1.2 2008 年 6 月

Page 266: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

266 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 267: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

R

第 4 章

HDL モジュールのインポート

既存の HDL モジュールを System Generator デザインに追加する必要がある場合があ り ます。

System Generator の Black Box ブロ ッ クを使用する と、 VHDL、 Verilog、 EDIF をデザインに追

加できます。 Black Box ブロ ッ クは、ほかのブロ ッ ク と同様に、デザインに接続し、シ ミ ュレーシ ョ

ンに含め、ハード ウェアにコンパイルします。 System Generator で Black Box ブロ ッ クをコンパイ

ルする と、 インポート されたモジュールと関連のファイルが周囲のネッ ト リ ス トに接続されます。

Black Box インターフェイス

ブラ ッ ク ボッ クスの HDL の要件

と制限

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

ブラ ッ ク ボッ クス コンフ ィギュ

レーシ ョ ン ウ ィザード

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

の使用法を説明します。

ブラ ッ ク ボッ クスのコンフ ィギュ

レーシ ョ ン M 関数

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

作成方法を説明します。

HDL 協調シミ ュレーシ ョ ン

HDL シ ミ ュレータの設定 Black Box ブロ ッ クの HDL に対して協調シ ミ ュレー

シ ョ ンを実行するために、 ISE Simulator または

ModelSim を設定する方法を説明します。

複数のブラ ッ ク ボッ クスの協調シ

ミ ュレーシ ョ ン

1 つの HDL シ ミ ュレータ セッシ ョ ンで複数の BlackBox ブロ ッ クに対して協調シ ミ ュレーシ ョ ンを実行す

る方法を説明します。

ブラ ッ ク ボッ クスの例 1 : ブラ ッ

ク ボッ クスの HDL 要件を満たし

た CORE Generator モジュールの

インポート

System Generator のブラ ッ ク ボッ ク ス コンフ ィ ギュ

レーシ ョ ン ウ ィザードを使用した例を示します。

ブラッ ク ボッ クスの例 2 : ブラッ

ク ボッ クスの HDL 要件を満たす VHDL ラッ パが必要な CORE Generator モジュールのインポート

VHDL コア ラ ッパが必要な例を示します。 シ ミ ュレー

シ ョ ン問題の解決方法も示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 267リ リース 10.1.2 2008 年 6 月

Page 268: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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

ブラ ッ ク ボッ クスに関連する HDL コンポーネン トは、 すべての次の System Generator の要件お

よび制限を満たしている必要があ り ます。

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

• HDL ブラ ッ ク ボッ クスで双方向ポートはサポート されますが、 System Generator にポート と

しては表示されません。 生成された HDL にのみ含まれます。

• Verilog のブラ ッ ク ボッ ク スの場合、 モジュール名やポート 名は必ず小文字にし 、 標準的な

VHDL の命名規則に従う よ う にし ます。

• ク ロッ ク ポート またはクロッ ク イネーブル ポート のタイプは必ず std_logic にします。 Verilogのブラッ ク ボッ ク スの場合、 ポート はベクタではない入力にします (例 : input clk)。

• ブラ ッ ク ボッ クスの HDL のクロ ッ ク ポート と クロ ッ ク イネーブル ポートは、 次のよ うに記

述します。 ク ロ ッ ク と クロ ッ ク イネーブルはペアで記述する必要があ り ます。 つま り、 ク ロ ッ

クご とに対応する ク ロ ッ ク イネーブルが必要です。 ブラ ッ ク ボッ ク スにク ロ ッ ク ポー ト が

1 つ以上含まれるこ と もあ り ますが、各クロ ッ ク ポート を駆動するために使用されるク ロ ッ ク

ソースは 1 つだけです。 異なるのは、 クロ ッ ク イネーブルのレートだけです。

• ク ロッ ク 名には clk (my_clk_1 など )、 ク ロッ ク イネーブル名には ce (my_ce_1 など ) を含め

ます。

• ク ロ ッ ク イネーブルの名前は、 対応するク ロ ッ ク と同じにする必要があ り ますが、 clk の部分

は ce にします。 たとえば、 ク ロ ッ ク名が src_clk_1 の場合、 ク ロ ッ ク イネーブルは src_ce_1にする必要があ り ます。

• 立ち下がりエッジで ト リガされる出力データは使用できません。

ブラ ッ ク ボッ クスの例 3 : VHDL モジュールのインポート

Black Box ブロ ッ クを使用して VHDL を System Generator デザインにインポート し、 ModelSim を使用

して協調シ ミ ュレーシ ョ ンを実行する方法を示します。

ブラ ッ ク ボッ クスの例 4 : Verilog モジュールのインポート

Verilog ブラ ッ ク ボッ クスを System Generator で使用

し、 ModelSim を使用して協調シ ミ ュレーシ ョ ンする

方法を示します。

ブラ ッ ク ボッ クスの例 5 : ダイナ

ミ ッ ク ブラ ッ ク ボッ クス

入力幅の変化に応じて動的に調整される転置型 FIR フ ィルタ ブラ ッ ク ボッ クスを使用したダイナミ ッ ク ブラ ッ ク ボッ クスを示します。

ブラ ッ ク ボッ クスの例 6 : 複数の

ブラ ッ ク ボッ クスの同時シ ミ ュ

レーシ ョ ン

1 つの ModelSim ライセンスを使用し、 複数の Black Box ブロ ッ クに対して同時に協調シ ミ ュレーシ ョ ンを

実行する方法を示します。

ブラ ッ ク ボッ クスの例 7 : ModelSim を使用したアドバンス ブラ ッ ク ボッ クス

ダイナミ ッ ク ポート インターフェイスを含む Black Box ブロ ッ クを設計し、 マスク パラ メータを使用して

ブラ ッ ク ボッ クスをコンフ ィギュレーシ ョ ンする方法

を示します。 入力ポートのデータ型に基づいてジェネ

リ ッ ク値を割り当て、 後で再利用するために Black Box ブロ ッ クを Simulink ラ イブラ リに保存する方法も

示します。 ModelSim HDL 協調シ ミ ュレーシ ョ ン用の

カスタム スク リプ トの指定方法についても説明します。

268 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 269: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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

System Generator には、 Verilog または VHDL モジュールを Black Box ブロ ッ クに関連付けるた

めのコンフ ィギュレーシ ョ ン ウ ィザードが含まれています。 このウ ィザードは、 インポートする

VHDL または Verilog モジュールを解析してコンフ ィギュレーシ ョ ン M 関数を作成し、 この M 関数をモデルの Black Box ブロ ッ クに関連付けます。 コンフ ィギュレーシ ョ ン M 関数を使用できる

かど うかは、 インポートする HDL の複雑度によって決ま り ます。 ウ ィザードで検出されなかった

詳細を設定するため、 コンフ ィギュレーシ ョ ン M 関数を手動でカスタマイズする必要がある場合

もあ り ます。 コンフ ィギュレーシ ョ ン M 関数の詳細は、 「ブラ ッ ク ボッ クスのコンフ ィギュレー

シ ョ ン M 関数」 を参照して ください。

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

Black Box ブロ ッ クをモデルに追加する と、 ブラ ッ ク ボッ クス コンフ ィギュレーシ ョ ン ウ ィザー

ドが起動します。

メモ : ブラ ッ ク ボッ クス コンフ ィ ギュレーシ ョ ン ウ ィザード を起動する前に、 インポー トする

VHDL または Verilog がブラ ッ ク ボッ クスの HDL の要件と制限を満たしているこ とを確認して く

ださい。

ウ ィザードでモジュールが検索されるよ うにするには、 インポートするモジュールと同じディ レク

ト リにモデルを保存する必要があ り ます。

メモ : ウ ィザードは、 ファ イルと して保存されているモデルに Black Box ブロ ッ クを追加した場合

にのみ実行されます。 モデルが保存されていない場合は、 ウ ィザードでファ イルの検索場所が判断

できず、 次のよ うな警告メ ッセージが表示されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 269リ リース 10.1.2 2008 年 6 月

Page 270: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ウ ィザードはモデルのディ レク ト リで 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 関数は次の情報を定義します。

• モジュールの 上位エンティティの名前

• VHDL または Verilog の選択

• ポートの説明

270 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 271: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

• モジュールで必要なジェネ リ ッ ク

• ク ロ ッ ク レートおよびサンプリ ング レート

• モジュールに関連したファイル

• モジュールに組み合わせパスが含まれるかど うか

ブラ ッ ク ボッ クスに関連付けられるコンフ ィギュレーシ ョ ン 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 関数を生成する際に適切な言語が自動的に選択されます。

上位エンテ ィテ ィの指定

ブラ ッ ク ボッ ク スに関連付ける 上位エンティ ティ の名前を指定する必要があり ます。

SysgenBlockDescriptor には、 上位エンティティの名前を指定する setEntityName メ ソ ッ ドが含

まれています。

メモ : エンティティ名は、 小文字を使用して指定します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 271リ リース 10.1.2 2008 年 6 月

Page 272: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

たとえば次のコードでは、 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 にのみ含まれます。双方向ポートは、 HDL を生成する

際にのみ追加するよ うにして ください。 双方向ポート を追加するコードには、 if-end 文を使用

して条件を付けるよ うにしてください。

1 つのメ ソ ッ ド呼び出しで入力ポート と出力ポートの両方を定義するこ と も可能です。

setSimulinkPorts メ ソ ッ ドでは、2 つのパラ メータを指定できます。 1 つ目のパラ メータはブロ ッ ク

の入力ポート名を定義する文字列のセル配列、 2 つ目のパラ メータはブロ ッ クの出力ポート名を定

義する文字列のセル配列です。

メモ : ブラ ッ ク ボッ クス コンフ ィギュレーシ ョ ン ウ ィザードでは、コンフ ィギュレーシ ョ ン M 関数を生成する際にポート名が自動的に設定されます。

272 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 273: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ポート オブジェク トの取得

ブロ ッ ク ディ スク リプタにポート を追加したら、 ポートの属性を設定する必要があ り ます。 ポート

を コ ンフ ィ ギ ュ レーシ ョ ンする前に、 ポー ト のデ ィ ス ク リ プタ を取得する必要があ り ます。

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 モジュールがサポー ト されます。 SystemGenerator では、デフォルトでポートがベクタで宣言されている と想定されます。 ディ スク リプタの

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 フェーズでのみ追加されるよ うに、 条件文を使用して ください。

System Generator for DSP ユーザー ガイド japan.xilinx.com 273リ リース 10.1.2 2008 年 6 月

Page 274: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

if (strcmpi(this_block.getConfigPhaseString,'config_netlist_interface')) bidi_port = this_block.port('bidi'); bidi_port.setGatewayFileName('bidi.dat');end

上記の例では、 テキス ト ファ イル 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には、 ポート設定を判断できる メ ンバー変数が含まれています。 出力ポートのタイプまたはレート

を、 ブロ ッ クの入力ポートのメンバー変数を調べるこ とによ り設定できます。

274 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 275: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

たとえば次の例のよ うに、 ポート 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) 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 for DSP ユーザー ガイド japan.xilinx.com 275リ リース 10.1.2 2008 年 6 月

Page 276: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

たとえば、 ce_3 という クロ ッ ク イネーブル ポートのサンプリ ング周期をシステム ク ロ ッ ク周期の

3 倍に設定する場合、 次のコードを使用します。

addClkCEPair('clk_3','ce_3',3);

System Generator でブラ ッ ク ボッ ク スをハード ウェアにコンパイルする と、 適切なク ロ ッ ク イネーブル信号が生成され、 適切なクロ ッ ク イネーブル ポートに配線されます。

組み合わせパス

インポートするモジュールに組み合わせパスがある場合 (入力の変化がクロ ッ ク イベン ト なしで出

力ポートに影響する)、 コンフ ィギュレーシ ョ ン M 関数で指定する必要があ り ます。

SysgenBlockDescriptor オブジェ ク ト には、 モジ ュールに組み合わせパスがあ る こ と を示す

tagAsCombinational メ ソ ッ ドが含まれています。 コンフ ィギュレーシ ョ ン M 関数内では、 このメ

ソ ッ ドを次のよ うに起動する必要があ り ます。

this_block.tagAsCombinational;

VHDL ジェネリ ックおよび Verilog パラ メータの指定

System Generator でモデルを HDL にコンパイルする際に、 モジュールに渡すジェネ リ ッ クの リ ス

ト を指定できます。 これらのジェネ リ ッ クに割り当てる値は、 マスク パラ メータおよび伝搬された

ポート情報 (ポート幅、 タイプ、 レート など) から抽出されます。 このよ うに柔軟にジェネ リ ッ クを

割り当てる こ とができ るので、 ブラ ッ ク ボッ ク スの周辺環境に基づいてカスタマイズされるモ

ジュールがサポート されます。

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

276 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 277: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

メモ : ブラ ッ ク ボッ クスに独自のパラ メータを追加するには (ジェネ リ ッ ク値を指定する値など)、次の手順に従います。

• Black Box ブロ ッ クを Simulink ライブラ リ またはモデルにコピーします。

• Black Box ブロ ッ クのリ ンクを解除します。

• Black Box ブロ ッ クのダイアログ ボッ クスにパラ メータを追加します。

エラーのチェ ック

通常、 ブラ ッ ク ボッ クスのポート タイプ、 レート、 マスク パラ メータでエラー チェッ クを実行す

る必要があ り ます。 SysgenBlockDescriptor には、表示されるエラー メ ッセージを指定する setErrorメ ソ ッ ドが含まれています。 setError に渡される文字列パラ メータが、ユーザーに表示されるエラー

メ ッセージです。

ブラ ック ボックスの API

SysgenBlockDescriptor メンバー変数

データ型 メンバー 説明

文字列 entityName エンティティ またはモジュールの名前

文字列 blockName Black Box ブロ ッ クの名前

整数 numSimulinkInports ブラ ッ ク ボッ クス上の入力ポートの数

整数 numSimulinkOutports ブラ ッ ク ボッ クス上の出力ポートの数

ブール代数 inputTypesKnown すべての入力タイプが定義されている場合は true、されていない場合は false

ブール代数 inputRatesKnown すべての入力レートが定義されている場合は true、されていない場合は false

倍精度値の配列 inputRates 入力ポー ト (inport(indx) と してインデッ ク ス) のサンプ リ ング周期の配列。 サンプ リ ング周期は、

System Generator トークンのパラ メータ ダイアロ

グ ボッ クスで指定された Simulink のシステム周

期の倍数を整数で指定します。

ブール代数 error エラーが検出された場合は true、されなかった場合

は false

文字列のセル配列 errorMessages ブロ ッ クのすべてのエラー メ ッセージ

System Generator for DSP ユーザー ガイド japan.xilinx.com 277リ リース 10.1.2 2008 年 6 月

Page 278: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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 を返し

ます。 name はポート名を指定します。

inport(indx) 指定の入力ポート を説明する SysgenPortDescriptor を返し ます。 index はポー ト のイ ンデッ ク ス (1 ~

numInputPorts) を指定します。

outport(indx) 指定の出力ポート を説明する SysgenPortDescriptor を返し ます。 index はポー ト のイ ンデッ ク ス (1 ~

numOutputPorts) を指定します。

278 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 279: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

addGeneric(identifier, value) ブロ ッ クのジェネ リ ッ ク (Verilog の場合はパラ メー

タ) を指定します。 identifier はジェネ リ ッ ク名を指定

し、 value はジェネ リ ッ クの値を倍精度値または文字

列で指定します。 ジェネ リ ッ クのデータ型は、value のデータ型から判断されます。 value が倍精度の整数 (40など) の場合は integer に、 倍精度の非整数の場合は

real に設定されます。 value が 0 と 1 のみを含む文字列

('0101' など) の場合は bit_vector に、 その他の文字列

の場合は string に設定されます。

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 は表示するエラー メ ッセージ

を指定します。

メ ソッ ド 説明

System Generator for DSP ユーザー ガイド japan.xilinx.com 279リ リース 10.1.2 2008 年 6 月

Page 280: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

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 の場合は、 ポート出力が定数で

あるこ とを示します。

280 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 281: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

SysgenPortDescriptor のメソ ッ ド

メソ ッ ド 説明

setName(name) ポートの HDL 名を指定します。

setSimulinkPortNumber(num) Simulink でポー ト に関連付ける インデッ ク スを設定

します。 num はインデッ クスを指定します。 インデッ

クスは 1 から開始します。

setType(typeName) ポート のデータ型を設定します。 Bool、UFix_<n>_<b>、 Fix_<n>_<b>、 signed、 または

unsigned のいずれかに設定し ま す。 signed およ び

unsigned では、幅と 2 進小数点位置は変更されません。

setWidth(w) ポート幅を w に設定します。

setBinpt(bp) ポートの 2 進小数点位置を bp に設定します。

makeBool() ポートのデータ型を Bool にします。

makeSigned() ポートのデータ型を signed にします。

makeUnsigned() ポートのデータ型を unsigned にします。

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

System Generator for DSP ユーザー ガイド japan.xilinx.com 281リ リース 10.1.2 2008 年 6 月

Page 282: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

HDL 協調シミ ュレーシ ョ ン

概要

このセクシ ョ ンでは、ザイ リ ンクス ブロ ッ ク、 HDL モジュール、 Simulink ブロ ッ ク ダイアグラム

を含むデザインに対して、 混合言語フローを実行する方法を説明します。

System Generator は、ブラ ッ ク ボッ クスをシ ミ ュレーシ ョ ンする際、自動的に HDL シ ミ ュレータ

を起動して必要な追加の HDL (HDL テス トベンチ) を生成し、 HDL をコンパイルし、 シ ミ ュレー

シ ョ ン イベン ト をスケジュールし、 Simulink と HDL シ ミ ュレータの間のデータ交換を制御しま

す。 これを HDL 協調シ ミ ュレーシ ョ ンと呼びます。

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

ISE Simulator

協調シ ミ ュレーシ ョ ンに ISE Simulator を使用するには、 次の図に示すよ うに、 Black Box ブロ ッ

クのパラ メータ ダイアログ ボッ クスで [Simulation mode] を [ISE Simulator] に設定します。 これ

で、 HDL 協調シ ミ ュレーシ ョ ンを実行できます。

282 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 283: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

HDL 協調シミ ュレーシ ョ ンR

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 など) を入力します。

ModelSim ブロ ッ クのパラ メータ ダイアログ ボッ クスには、ModelSim でのシ ミ ュレーシ ョ ン セッ

シ ョ ンを制御するオプシ ョ ンが含まれています。 詳細は、 ModelSim ブロ ッ クのヘルプを参照して

ください。 これで、 HDL 協調シ ミ ュレーシ ョ ンを実行できます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 283リ リース 10.1.2 2008 年 6 月

Page 284: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

複数のブラック ボックスの協調シミ ュレーシ ョ ン System Generator では、 同じ ModelSim 協調シ ミ ュレーシ ョ ン セッシ ョ ンで複数の Black Box ブロ ッ クをシ ミ ュレーシ ョ ンできます。 つま り、複数の Black Box ブロ ッ クで同じ ModelSim ブロ ッ

クを使用するよ う設定できます。 この場合、 すべての Black Box ブロ ッ クの HDL コンポーネン ト

が 1 つの 上位協調シ ミ ュレーシ ョ ン コンポーネン ト に統合されます。 これは自動的に行われま

す。 このよ う なシ ミ ュレーシ ョ ンでは、 1 つの ModelSim シ ミ ュレーシ ョ ン ラ イセンスで複数の

Black Box ブロ ッ クに対して協調シ ミ ュレーシ ョ ンを実行できます。

複数の Black Box ブロ ッ クに対して同時に協調シ ミ ュレーシ ョ ンを実行する方法は、 「複数のブ

ラ ッ ク ボッ クスの同時シ ミ ュレーシ ョ ン」 を参照して ください。

ISE Simulator でも、複数の Black Box ブロ ッ クに対して協調シ ミ ュレーシ ョ ンを実行できます。こ

れには、 各 Black Box ブロ ッ クで [Simulation mode] を [ISE Simulator] に設定します。

ブラック ボックスの例

ブラ ッ ク ボッ クスの例 1 : ブラ ッ

ク ボッ クスの HDL 要件を満たし

た CORE Generator モジュールの

インポート

System Generator のブラ ッ ク ボッ クス コンフ ィギュ

レーシ ョ ン ウ ィザードを使用した例を示します。

ブラッ ク ボッ クスの例 2 : ブラッ

ク ボッ クスの HDL 要件を満たす VHDL ラッ パが必要な CORE Generator モジュールのインポート

VHDL コア ラ ッパが必要な例を示します。 シ ミ ュレー

シ ョ ン問題の解決方法も示します。

ブラ ッ ク ボッ クスの例 3 : VHDL モジュールのインポート

Black Box ブロ ッ クを使用して VHDL を System Generator デザインにインポート し、 ModelSim を使用

して協調シ ミ ュレーシ ョ ンを実行する方法を示します。

ブラ ッ ク ボッ クスの例 4 : Verilog モジュールのインポート

Verilog ブラ ッ ク ボッ クスを System Generator で使用

し、 ModelSim を使用して協調シ ミ ュレーシ ョ ンする

方法を示します。

ブラ ッ ク ボッ クスの例 5 : ダイナ

ミ ッ ク ブラ ッ ク ボッ クス

入力幅の変化に応じて動的に調整される転置型 FIR フ ィルタ ブラ ッ ク ボッ クスを使用したダイナミ ッ ク ブラ ッ ク ボッ クスを示します。

ブラ ッ ク ボッ クスの例 6 : 複数の

ブラ ッ ク ボッ クスの同時シ ミ ュ

レーシ ョ ン

1 つの ModelSim ライセンスを使用し、 複数の Black Box ブロ ッ クに対して同時に協調シ ミ ュレーシ ョ ンを

実行する方法を示します。

ブラ ッ ク ボッ クスの例 7 : ModelSim を使用したアドバンス ブラ ッ ク ボッ クス

ダイナミ ッ ク ポート インターフェイスを含む Black Box ブロ ッ クを設計し、 マスク パラ メータを使用して

ブラ ッ ク ボッ クスをコンフ ィギュレーシ ョ ンする方法

を示します。 入力ポートのデータ型に基づいてジェネ

リ ッ ク値を割り当て、 後で再利用するために Black Box ブロ ッ クを Simulink ラ イブラ リに保存する方法も

示します。 ModelSim HDL 協調シ ミ ュレーシ ョ ン用の

カスタム スク リプ トの指定方法についても説明します。

284 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 285: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

CORE Generator モジュールのインポート

このセクシ ョ ンでは、CORE Generator モジュールをブラ ッ ク ボッ クス と して System Generator にインポートする 2 つの方法を示します。 1 つ目の方法では、 ブラ ッ ク ボッ クスの HDL の要件と制

限を満たしているブラ ッ ク ボッ クスをインポートする方法を示します。 2 つ目の方法では、 VHDLラ ッパを記述して CORE Generator モジュールをブラ ッ ク ボッ クス と してインポートする方法を

示します。 次に、 CORE Generator モジュールのインポート フローを示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 285リ リース 10.1.2 2008 年 6 月

Page 286: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ブラ ック ボックスの例 1 : ブラッ ク ボックスの HDL 要件を満たした CORE Generator モジュールのインポート

1. CORE Generator を起動し、 次の CORE Generator プロジェク ト ファ イルを開きます。

<path_to_sysgen>\examples\coregen_import\example1\

coregen_import_example1.cgp

2. [View by Function] タブで [Digital Signal Processing] → [Building Blocks] の下にある

[CORDIC 3.0] をダブルク リ ッ ク し、 カスタマイズ ウ ィンド ウを開きます。

286 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 287: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

3. 次の図に示すよ うに、 [Component Name] を cordic_sincos、 [Functional Selection] で [Sin andCos] をオン、 残りのオプシ ョ ンはデフォルト値に設定します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 287リ リース 10.1.2 2008 年 6 月

Page 288: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

4. [Generate] をク リ ッ ク します。 CORE Generator で、 次のファイルが生成されます。

♦ cordic_sincos.edn : インプ リ メンテーシ ョ ン ネッ ト リ ス ト

♦ cordic_sincos.vhd : ビヘイビア シ ミ ュレーシ ョ ン用の VHDL ラ ッパ

♦ cordic_sincos.vho : コア インスタンシエーシ ョ ン テンプレート

♦ cordic_sincos.xco : コアの生成に選択されたパラ メータ

5. Simulink を起動し、デザイン ファ イル <path_to_sysgen>\examples\coregen_import\example1\coregen_import_example1.mdl を開きます。

288 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 289: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

6. [Xilinx Blockset] → [Basic Elements] ラ イブラ リから Black Box ブロ ッ クを

coregen_import_example1.mdl にド ラ ッグします。 上位 HDL ファ イルと して

cordic_sincos.vhd を選択します。

7. Black Box ブロ ッ クの入力ポートおよび出力ポート をワイヤに接続します。

8. cordic_sincos_config.m を開き、 ファ イルのリ ス トに次の図に示すよ うに EDIF ネッ ト リ ス ト

を追加します。 デザインの System Generator ネッ ト リ ス トが作成される際に、このファイルが

含まれます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 289リ リース 10.1.2 2008 年 6 月

Page 290: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

9. Black Box ブロッ クのパラ メータ ダイアログ ボッ クスを開き、 [Simulation mode] を [ISESimulator] に設定します。

290 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 291: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

10. Simulink モデルで [シ ミ ュレーシ ョ ンの開始] をク リ ッ ク し、 ISE Simulator を使用して

CORDIC コアに対して協調シ ミ ュレーシ ョ ンを実行します。 次のよ う なシ ミ ュレーシ ョ ン結

果が表示されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 291リ リース 10.1.2 2008 年 6 月

Page 292: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ブラ ック ボックスの例 2 : ブラッ ク ボックスの HDL 要件を満たす VHDL ラ ッ

パが必要な CORE Generator モジュールのインポート

1. CORE Generator を起動し、 次の CORE Generator プロジェク ト ファ イルを開きます。

<path_to_sysgen>\examples\coregen_import\example2\

coregen_import_example2.cgp

2. [View by Function] タブで [Digital Signal Processing] → [Filters] の下にある [MAC FIR Filter5.1] をダブルク リ ッ ク し、 カスタマイズ ウ ィンド ウを開きます。

3. 次のオプシ ョ ンを設定し、 [Generate] をク リ ッ ク してコアを生成します。

♦ [Component Name] : mac_fir_8tap

♦ [Taps] : 8

♦ [Impulse Response] : [Symmetric]

♦ [Load Coefficients] をク リ ッ ク : モデルのディ レク ト リにある mac_fir_8tap.coe ファ イ

ルを選択

♦ [System Clock Rate] : 100MHz、 [Input Sample Rate] : 25MHz

292 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 293: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

♦ その他のオプシ ョ ンは、 デフォルト値を使用します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 293リ リース 10.1.2 2008 年 6 月

Page 294: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

294 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 295: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

4. [Generate] をク リ ッ ク します。 CORE Generator で、 次のファイルが生成されます。

♦ mac_fir_8tap.edn : インプリ メンテーシ ョ ン ネッ ト リ ス ト

♦ mac_fir_8tap.vhd : ビヘイビア シ ミ ュレーシ ョ ン用の VHDL ラ ッパ

♦ mac_fir_8tap.vho : コア インスタンシエーシ ョ ン テンプレート

♦ mac_fir_8tap.xco : コアの生成に選択されたパラ メータ

♦ mac_fir_8tap.mif、 DATA_COEF_BUFFER_A1.mif、 DATA_COEF_BUFFER_B1.mif : 論理シ ミ ュレーシ ョ ン用のメモ リ初期化ファイル

5. System Generator のブラ ッ ク ボッ クスにはクロ ッ ク と クロ ッ ク イネーブルのペアが必要です

が、 MAC FIR Filter コアにはクロ ッ ク イネーブルがないので、 コア ラ ッパを指定して 上位

にクロ ッ ク イネーブル ポート を追加する必要があ り ます。

6. 次の空のテンプレート ラ ッパ ファ イルを開きます。

<path_to_sysgen>\examples\coregen_import\example2\

mac_fir_8tap_wrapper.vhd

このファ イルには、 空のエンティティ宣言が含まれています。

7. 次の手順に従って、 テンプレート ラ ッパを変更します。

♦ mac_fir_8tap.vho ファ イルを開きます。

♦ mac_fir_8tap.vho からコンポーネン ト宣言部分をコピーし、mac_fir_8tap_wrapper.vhd のコンポーネン ト宣言エリア ( 「-- Add Component Declaration from VHO file ----」 の後) に貼り付けます。

♦ mac_fir_8tap.vho からコア インスタンシエーシ ョ ン テンプレート をコピーし、

mac_fir_8tap_wrapper.vhd のアーキテ クチャ本体 ( 「---- ADD INSTANTIATIONTemplate ----」 の後) に貼り付けます。

♦ component mac_fir_8tap のポート宣言をコピーし、 mac_fir_8tap エンティティ宣言 ( 「---- Add Port declaration for entity ----」 の後) に貼り付けます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 295リ リース 10.1.2 2008 年 6 月

Page 296: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

♦ 上位エンティティ宣言に ce ポート を追加し、 「CLK」 を 「clk」 に変更します。

8. Simulink を起動し、 次のデザイン ファ イルを開きます。

<path_to_sysgen>\examples\coregen_import\example2\

coregen_import_example2.mdl

296 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 297: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

9. [Xilinx Blockset] → [Basic Elements] ラ イブラ リから Black Box ブロ ッ クを

coregen_import_example2.mdl にド ラ ッグします。 上位 HDL ファ イルと して mac_fir_8tap_wrapper.vhd を選択します。

10. Black Box ブロ ッ クのポート をワイヤに接続します。

11. mac_fir_8tap_wrapper_config.m を開き、ファ イルのリ ス トに次の図に示すよ うに VHDL ファ

イル、 EDIF ネッ ト リ ス ト、 MIF ファ イルを追加します。 デザインの System Generator ネッ ト

リ ス トが作成される際に、 これらのファイルが含まれます。

メモ : ファ イルは、 こ こにリ ス ト した順序で合成およびシ ミ ュレーシ ョ ンされます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 297リ リース 10.1.2 2008 年 6 月

Page 298: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

12. Black Box ブロッ クのパラ メータ ダイアログ ボッ クスを開き、 [Simulation mode] を [ISESimulator] に設定します。

13. Simulink モデルで [シ ミ ュレーシ ョ ンの開始] をク リ ッ ク し、 ISE Simulator を使用して MACFIR Filter コアに対して協調シ ミ ュレーシ ョ ンを実行します。 次のよ う なシ ミ ュレーシ ョ ン結

果が表示されます。

298 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 299: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

VHDL モジュールのインポート

ブラ ック ボックスの例 3 : VHDL モジュールのインポート

このセクシ ョ ンでは、 Black Box ブロ ッ クを使用して VHDL を System Generator デザインにイン

ポート し、 ModelSim を使用して協調シ ミ ュレーシ ョ ンを実行する方法を示します。

1. MATLAB ウ ィンド ウで、 <path_to_sysgen>\examples\black_box\intro ディ レク ト リに移動し

ます。

このディ レク ト リには、 次のファイルが含まれています。

♦ black_box_intro.mdl : ブラ ッ ク ボッ クスの例を含む Simulink モデル

♦ transpose_fir.vhd : 転置型 FIR フ ィルタの 上位 VHDL。ブラ ッ ク ボッ クスに関連付ける

VHDL です。

♦ mac.vhd : 転置型 FIR フ ィルタを構築する際に使用する MAC コンポーネン ト

2. MATLAB の [Command Window] に次のよ うに入力し、 black_box_intro.mdl を開きます。

>> black_box_intro

3. Down Converter サブシステムに含まれる Transpose FIR Filter Black Box というサブシステム

を開きます。 このサブシステムには、2 つの入力ポート と 1 つの出力ポートが含まれています。

次の図に、 Transpose FIR Filter Black Box サブシステムを示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 299リ リース 10.1.2 2008 年 6 月

Page 300: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

4. Transpose FIR Filter Black Box サブシステムに、Simulink Library Browser から Black Box ブロ ッ クを追加します。 Black Box ブロ ッ クは、 [Xilinx Blockset] → [Basic Elements] ラ イブラ

リに含まれています。 Black Box ブロ ッ クをサブシステムに追加する と、ブラ ッ ク ボッ クス コンフ ィギュレーシ ョ ン ウ ィザードが起動します。 上位 VHDL ファ イル transpose_fir.vhd を選択します。 これを次の図に示します。

メモ : ウ ィザードは、 ファ イルと して保存されているモデルに Black Box ブロ ッ クを追加した場合

にのみ実行されます。 モデルが保存されていない場合は、 ウ ィザードでファイルの検索場所が判断

できず、 次のよ う な警告メ ッセージが表示されます。

5. ウ ィザードで VHDL が解析され、 Black Box ブロッ クのコンフ ィギュレーシ ョ ン M 関数が生

成されます。 これは MATLAB スク リプ トであ り、 Black Box ブロ ッ クを VHDL に関連付け、

ポート を作成します。 関数を実行する と、Black Box ブロ ッ ク上のポートが 上位 VHDL エン

ティティ と一致します (ク ロ ッ ク ポートおよびクロ ッ ク イネーブル ポート を除く )。 これを次

に示します。

300 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 301: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

この例で作業する際は、 次の規則を考慮する必要があ り ます。

♦ Black Box に関連付けられている同期 HDL デザインに、 1 つ以上のクロッ ク ポートおよ

びクロ ッ ク イネーブル ポートが含まれているこ とが必要です。 これらのポートは、ペアで

指定する必要があ り ます (1 つのクロ ッ クに 1 つのクロ ッ ク イネーブル)。 各ポートのデー

タ型は、 std_logic に設定します。 ク ロ ッ ク ポー ト名には、 clk を含めます。 ク ロ ッ ク イネーブルのポート名は、 対応する ク ロ ッ ク と同じにする必要があ り ますが、 clk の部分は

ce にします。

♦ System Generator のクロ ッ ク イネーブル ポートは特殊で、 汎用のユーザー イネーブルと

は異なり ます。 詳細は、 「ブラ ッ ク ボッ クスの HDL の要件と制限」 を参照して ください。

6. Black Box ブロッ クをダブルク リ ッ ク します。 次のよう なダイアログ ボッ クスが表示されます。

このダイアログ ボッ クスには、 次のフ ィールドが含まれます。

♦ [Block configuration M-function] : ブラ ッ ク ボッ クスのコンフ ィギュレーシ ョ ン M 関数

の名前を指定します。 この例では、 ブラ ッ ク ボッ クス コンフ ィギュレーシ ョ ン ウ ィザー

ドで生成された関数の名前が入力されています。 デフォルトでは、 ウ ィザードで生成され

た関数が使用されます。 独自の関数を指定するこ と も可能です。 コンフ ィギュレーシ ョ ン

M 関数の詳細は、 「ブラ ッ ク ボッ クスのコンフ ィギュレーシ ョ ン M 関数」 を参照して く

ださい。

♦ [Simulation mode] : 次のいずれかのシ ミ ュレーシ ョ ン モードを選択します。

- [Inactive] : シ ミ ュレーシ ョ ンの際に入力が無視され、0 が生成されます。 この設定は、

通常ブラ ッ ク ボッ クスに別のシ ミ ュレーシ ョ ン モデルがある場合に使用されます。こ

のシ ミ ュレーシ ョ ン モデルは、 シ ミ ュレーシ ョ ン マルチプレクサを使用して、 BlackBox ブロ ッ ク と並列に接続されます。この方法は、「ブラ ッ ク ボッ クスの例 1 : ブラ ッ

ク ボッ クスの HDL 要件を満たした CORE Generator モジュールのインポート 」 に示

されています。

- [ISE Simulator] : ブラ ッ ク ボッ クスのシ ミ ュレーシ ョ ン結果が、ブラ ッ ク ボッ クスに

関連付けられた HDL で協調シ ミ ュレーシ ョ ンを使用して作成されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 301リ リース 10.1.2 2008 年 6 月

Page 302: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

- [External co-simulator] : このオプシ ョ ンを設定した場合は、デザインに ModelSim ブロ ッ クを追加し、 [HDL co-simulator to use] に ModelSim ブロ ッ クの名前を入力する

必要があ り ます。 ブラ ッ ク ボッ クスは、HDL 協調シ ミ ュレーシ ョ ンを使用してシ ミ ュ

レーシ ョ ンされます。

♦ [FPGA Area Estimation] : ブラ ッ ク ボッ クスの HDL で使用される FPGA リ ソースの予

測量を入力します。 これらの値は、 手動で入力する必要があ り ます。 これらの数値は、

System Generator で提供されている リ ソース予測ユーティ リ テ ィ を使用する場合にのみ

使用します。 詳細は、 「 リ ソースの予測」 を参照して ください。

チュート リ アルを続行するには、 パラ メータ設定をそのままにします。

7. Black Box ブロ ッ クのポート を、 対応するサブシステムのポートに接続します。

8. Simulink モデルのツールバーで [シ ミ ュレーシ ョ ンの開始] をク リ ッ ク し、 Scope ブロ ッ クを

ダブルク リ ッ ク します。 [Output Signal] が 0 であるこ とに注意して ください。 シ ミ ュレーシ ョ

ン中 Black Box ブロ ッ クが非アクティブになるよ うに設定されているので、 この結果は予測ど

おりです。

302 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 303: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

9. Transpose FIR Filter Black Box サブシステムに、Simulink Library Browser から ModelSim ブロ ッ クを追加します。 ModelSim ブロ ッ クは、[Xilinx Blockset] → [Tools] ライブラ リに含まれ

ています。 このブロ ッ クは、 Black Box ブロ ッ クを ModelSim シ ミ ュレータ と通信できるよ う

にします。 ModelSim ブロ ッ クをダブルク リ ッ ク して、パラ メータ ダイアログ ボッ クスを開き

ます。

10. パラ メータ設定が上図と同じになるよ うにします。 ダイアログ ボッ クスを閉じます。

11. Simulink メニューで、 [書式] → [ポート /信号の表示] → [端子のデータタイプ] をク リ ッ ク して

Black Box ブロ ッ クのポートのデータ型を表示します。 Ctrl + D キーを押してモデルをコンパ

イルし、 新のポー ト のデータ型が表示される よ う にし ます。 出力ポー ト のデータ型は

UFix_26_0 で、 これは 26 ビッ ト幅の符号なし信号であ り、 2 進小数点が 0 位置で 下位ビッ

トの左側にあるこ とを示します。

12. コンフ ィギュレーシ ョ ン M 関数 transpose_fir_config.m を開き、出力のデータ型を UFix_26_0から Fix_26_12 に変更します。 変更後の行は、 次のよ うにな り ます。

dout_port.setType('Fix_26_12');

13. コンフ ィギュレーシ ョ ン M 関数に、Black Box ブロ ッ クに関連付ける HDL ファ イルを追加し

ます。 次の行を検索します。

this_block.addFile('transpose_fir.vhd');

この行の上に、 次の行を追加します。

this_block.addFile('mac.vhd');

System Generator for DSP ユーザー ガイド japan.xilinx.com 303リ リース 10.1.2 2008 年 6 月

Page 304: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

14. コンフ ィギュレーシ ョ ン M 関数に加えた変更を保存し、Ctrl + D キーを押してモデルをコンパ

イルします。 サブシステムは、 次のよ うになり ます。

15. Black Box ブロ ッ クのパラ メータ ダイアログ ボッ クスで、 [Simulation mode] を [External co-simulator] に変更し、 [HDL co-simulator to use] に 「ModelSim」 と入力します。 こ こには、 モ

デルに追加した ModelSim ブロッ クの名前を入力します。 Black Box ブロ ッ クのパラ メータ ダイアログ ボッ クスは、 次のよ うにな り ます。

メモ : メモ : System Generator では、 ModelSim XE および SE のみがサポート されています。

304 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 305: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

16. シ ミ ュレーシ ョ ンを実行します。 ModelSim のコマンド ウ ィンド ウ と波形ビューアが開きま

す。 VHDL は ModelSim でシ ミ ュレーシ ョ ンされ、 シ ミ ュレーシ ョ ン全体は Simulink で制御

されます。 出力波形は次のよ うになり ます。

次の警告メ ッセージは、 無視しても問題あ り ません。

# ** Warning: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the result will be 'X'(es). # Time: 0 ps Iteration: 0 Instance: / xlcosim_black_box_ex1_down_converter_transpose_fir_filter_bl ack_box_modelsim/ black_box_ex1_down_converter_transpose_fir_filter_black_box_ black_box/g0__22/g_last/m2

このメ ッセージは、 Black Box ブロ ッ クの VHDL でシ ミ ュレーシ ョ ン開始時の初期値が指定

されていないために表示されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 305リ リース 10.1.2 2008 年 6 月

Page 306: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

17. シ ミ ュレーシ ョ ンが完了したら、 Scope ブロ ッ クの出力を確認します。 [Simulation mode] を[Inactive] に設定したと きは [Output Signal] が 0 でしたが、 [External co-simulator] に変更した

結果、 0 ではなく、 ModelSim シ ミ ュレーシ ョ ンの結果が表示されるよ うにな り ました。

Verilog モジュールのインポート

このセクシ ョ ンでは、 Verilog ブラ ッ ク ボッ クスを System Generator で使用し、 ModelSim を使用

して協調シ ミ ュレーシ ョ ンする方法を示します。 Verilog モジュールは、 VHDL モジュールと同様

にインポートできます。 モジュールのインポート方法の詳細は、 「ブラ ッ ク ボッ クス コンフ ィギュ

レーシ ョ ン ウ ィザード」 および 「ブラ ッ ク ボッ クスのコンフ ィギュレーシ ョ ン M 関数」 を参照し

てください。 System Generator では、 Verilog ブラ ッ ク ボッ クスをハード ウェアおよび協調シ ミ ュ

レーシ ョ ン HDL に組み込むのに必要なコードがすべて提供されています。 また、 Verilog ブラ ッ ク

ボッ クスのパラ メータ も設定できます。 この例では、 これらの機能を示します。 この例のファ イル

は、 次のディ レク ト リに含まれています。

<path_to_sysgen>\examples\black_box\example4

このディ レク ト リには、 次のファイルが含まれます。

• black_box_ex4.mdl : VHDL を使用するブラ ッ ク ボッ クス と Verilog を使用するブラ ッ ク

ボッ クスの 2 つのブラ ッ ク ボッ クスを含む Simulink モデル。

• word_parity_block.vhd : ワード パリ ティ 例のステート マシンの組み合わせ部分を表す VHDL。この部分は完全に組み合わせブロッ ク で、 各入力ワード のパリ ティ を算出し、 パリ ティ ビッ ト

を出力します。 ジェネリ ッ ク を使用してパラ メ ータ指定されており 、どの入力型でも処理できま

す。 ジェネリ ッ クについては、 ダイナミ ッ ク ブラッ ク ボッ クスの説明を参照してく ださい。

• word_parity_block_config.m : VHDL ブラ ッ ク ボッ クスのコンフ ィギュレーシ ョ ン M 関数 (ジェネ リ ッ ク設定を含む)。 この関数では、 Simulink で正し くシ ミ ュレーシ ョ ンされるよ う、

ブロ ッ クが組み合わせであるこ とが示されています。

• shutter.v : 単純な動機ラ ッチの Verilog。 入力ポート din に任意の幅を使用できるよ う設定され

ています。

306 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 307: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

• shutter_config.m : Verilog ブラ ッ ク ボッ クスのコンフ ィギュレーシ ョ ン M 関数 (パラ メータ

設定を含む)。 Verilog ブラ ッ ク ボッ クスをコンフ ィギュレーシ ョ ンするため、VHDL 構文を参

照する メ ソ ッ ドが含まれます。 次の行が含まれています。

this_block.setEntityName('shutter'); this_block.addGeneric('din_width', dwidth);

ブラ ック ボックスの例 4 : Verilog モジュールのインポート

1. example4 に移動し、 black_box_ex4.mdl を開きます。

これは、 VHDL ブラ ッ ク ボッ クス と Verilog ブラ ッ ク ボッ クスの 2 つのブラ ッ ク ボッ クスを

含む単純なデザインです。 VHDL ブラ ッ ク ボッ ク スは各入力ワードのパ リ テ ィ を算出し、

Verilog ブラ ッ ク ボッ クスは奇数のパリティを持つワードを格納します。 ブラ ッ ク ボッ クスの

動作を算出するのに Simulink モデルは使用せず、 HDL 協調シ ミ ュレーシ ョ ンを使用します。

次の図に、 このデザイン例を示します。

この例でシ ミ ュレーシ ョ ンを実行するには、ModelSim の混合モード シ ミ ュレーシ ョ ンのライ

センスが必要です。 ラ イセンスがある場合、 シ ミ ュ レーシ ョ ンを実行する と、 次のよ う な

ModelSim の波形ビ ューアが表示され、 両方のブ ラ ッ ク ボ ッ ク スの動作が示されます。

ModelSim でデザインの構造を調べる と、System Generator で 2 つのブラ ッ ク ボッ クスがどの

よ うに統合されているかがわかり ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 307リ リース 10.1.2 2008 年 6 月

Page 308: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

2. 入力のデータ型を arbitrary に変更し、 シ ミ ュレーシ ョ ンを再実行します。 変更に応じてブラ ッ

ク ボッ クスが調整されます。

ダイナミ ック ブラック ボックス

この例では、 転置型 FIR フ ィルタ ブラ ッ ク ボッ クスを拡張し、 入力幅の変化に応じて動的に調整

されるよ うにします。 この例のファイルは、 <path_to_sysgen>\examples\black_box\example3 に含

まれています。 この例を正し く実行するには、 MATLAB の [Command Window] で cd コマンドを

使用してこのディ レク ト リに移動する必要があ り ます。

このディ レク ト リには、 次のファイルが含まれています。

• black_box_ex3.mdl : ダイナミ ッ ク ブラ ッ ク ボッ クスを含む Simulink モデル

• transpose_fir_parametric.vhd : 転置型 FIR フ ィルタの VHDL

• mac.vhd : 転置型 FIR フ ィルタを構築する際に使用する MAC コンポーネン ト

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

ブラ ック ボックスの例 5 : ダイナミ ッ ク ブラ ック ボックス

1. MATLAB の [Command Window] に 「black_box_ex3」 と入力し、 モデルを開きます。

2. 上位モデルからシ ミ ュレーシ ョ ンを実行し、 Scope ブロ ッ クで結果を表示します。

308 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 309: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

3. Gateway In ブロ ッ ク Din のパラ メータ ダイアログ ボッ クスで、 [Number of bits] を 16 から

12 に、 [Binary point] を 14 から 10 に変更して、 シ ミ ュレーシ ョ ンを再実行します。 ブラ ッ ク

ボッ クスの入力幅と出力幅は、自動的に調整されます。 Parametetric Filter Black Box サブシス

テムとシ ミ ュレーシ ョ ン結果は、 次のよ うになり ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 309リ リース 10.1.2 2008 年 6 月

Page 310: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

4. コンフ ィギュレーシ ョ ン M 関数での定義によ り、 入力幅の変更に応じてブラ ッ ク ボッ クスが

調整されます。 これを機能させるため、 M 関数を変更する必要があ り ます。 コンフ ィギュレー

シ ョ ン M 関数 transpose_fir_parametric.m を開きます。 重要な点は、 次のとおりです。

• 入力データ幅の取得 :

input_bitwidth = this_block.port('din').width;

• 出力幅の算出 :

output_bitwidth = ceil(log2(2^(input_bitwidth-1)*2^(coef_bitwidth-1) * number_of_coef));

• 出力のデータ型の設定 :

dout_port.makeSigned; dout_port.width = output_bitwidth; dout_port.binpt = 12;

• 入力と出力のビッ ト幅を VHDL にジェネ リ ッ ク と して渡す :

this_block.addGeneric('input_bitwidth',this_block.port('din').width); this_block.addGeneric('output_bitwidth',output_bitwidth);

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

レーシ ョ ン M 関数」 を参照して ください。

ブラ ッ ク ボ ッ ク スの VHDL フ ァ イル transpose_fir_parametric.vhd を見る と、 ジ ェネ リ ッ ク

input_bitwidth で入力幅、output_bitwidth で出力幅が指定されています。 これらのジェネ リ ッ クは、

下位の VHDL コンポーネン トに伝搬されます。

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

1 つの ModelSim ライセンスを使用し、複数の Black Box ブロ ッ クに対して同時に協調シ ミ ュレー

シ ョ ンを実行できます。 次の例では、この方法を示します。 この例のファイルは、<path_to_sysgen>\examples\black_box\example2 ディレク ト リに含まれています。

このディ レク ト リには、 次のファイルが含まれています。

• black_box_ex2.mdl : 2 つのブラ ッ ク ボッ クスを含む Simulink モデル

• parity_block.vhd : 8 ビッ トの入力ワードのランニング パリティをモニタする単純なステート

マシンの VHDL

• parity_block_config.m : ブラ ッ ク ボッ クスのコンフ ィギュレーシ ョ ン M 関数。 ブラ ッ ク ボッ

クス コンフ ィギュレーシ ョ ン ウ ィザードで生成されたコンフ ィギュレーシ ョ ン M 関数から、

組み合わせパスが含まれる こ と を示すメ ソ ッ ド (this_block.tagAsCombinational) を削除した

ものです。

ブラ ック ボックスの例 6 : 複数のブラ ック ボックスの同時シミ ュレーシ ョ ン

example2 に移動し、 black_box_ex2.mdl を開きます。 これは、 ステート マシンをインプ リ メ ン ト

する 2 つのブラ ッ ク ボッ クスを含む単純なモデルです。 このステート マシンは、入力のランニング

パリティを算出します。 1 つのブラ ッ ク ボッ クスにはモデルの入力ス ト リームを入力し、 も う 1 つのブラ ッ ク ボッ クスには入力ス ト リームをシ リ アラ イズおよびデシ リ アラ イズしたものを入力し

ます。 どちらのステート マシンにも、シ ミ ュレーシ ョ ン モデルではなく、 HDL 協調シ ミ ュレーシ ョ

ンを使用してシ ミ ュレーシ ョ ン結果を生成します。 ModelSim ブロ ッ クは、 ModelSim でブラ ッ ク

ボッ クスにアクセスできるよ うにします。 次の図に、 このデザイン例を示します。

310 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 311: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

シ ミ ュレーシ ョ ンを実行する と、 Simulink の Scope ブロ ッ ク と ModelSim の波形ビューアは次の

よ うになり ます。 Scope ブロ ッ クでは、 両方のブラ ッ ク ボッ クスで同じパリティ結果が生成される

こ とを示していますが、 1 ク ロ ッ ク サイクルのずれがあ り ます。 ModelSim の波形ビューアでも同

じ結果が表示されますが、 2 進数で表示されます。 System Generator で波形ビューアが自動的に設

定されており、 各ブラ ッ ク ボッ クスの入力信号と出力信号が表示されます。 ModelSim でデザイン

の構造を調べる と、 System Generator で 2 つのブラ ッ ク ボッ クスがどのよ うに統合されているか

がわかり ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 311リ リース 10.1.2 2008 年 6 月

Page 312: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ModelSim を使用したアドバンス ブラック ボックスの例

この例では、 次の内容について説明します。

• ダイナミ ッ ク ポート インターフェイスを使用したブラ ッ ク ボッ クスの設計

• マスク パラ メータを使用してブラ ッ ク ボッ クスを設定する方法

• 入力ポートのデータ型に基づいてジェネ リ ッ ク値を割り当てる方法

• ブラ ッ ク ボッ クスを再利用できるよ う Simulink ライブラ リに保存する方法

• ModelSim HDL 協調シ ミ ュレーシ ョ ン用のカスタム スク リプ トの指定方法

この例では、ブラ ッ ク ボッ クスからの信号を表示する方法も示します。 Simulink では、波形は通常

Scope ブロ ッ クで表示します。 バージ ョ ン 8.1 以降の System Generator では、 WaveScope ブロ ッ

ク も使用できます。 ModelSim の波形ビューアを使用して波形を表示するこ と もできます。 この例

では、ブラ ッ ク ボッ クスをザイ リ ンクスの固定小数点信号を表示する特別な ModelSim 波形スコー

プと してコンフ ィギュレーシ ョ ンしています。 このブラ ッ ク ボッ クス スコープを使用するモデル

をシ ミ ュレーシ ョ ンする と、 ブラ ッ ク ボッ クスを駆動する信号が ModelSim に表示されます。

この例のファイルは、 次のディ レク ト リに含まれています。

<path_to_sysgen>\examples\black_box\example5

このディ レク ト リには、 次のファイルが含まれています。

• black_box_ex5.mdl : ブラ ッ ク ボッ クス スコープを含む Simulink モデル

• scope_lib.mdl : ブラ ッ ク ボッ クス スコープを含む Simulink ライブラ リ

• scope_config.m : ブラ ッ ク ボッ クス スコープのコンフ ィギュレーシ ョ ン M 関数

• scope1.vhd、 scope2.vhd、 scope3.vhd、 scope4.vhd : 入力信号を 1 つ、 2 つ、 3 つ、 4 つ受信

できるブラ ッ ク ボッ クス スコープの VHDL

• waveform.do : シ ミ ュレーシ ョ ン中に ModelSim でどのよ うに信号を表示するかを指定するス

ク リプ ト

312 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 313: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

ブラ ック ボックスの例 7 : ModelSim を使用したアドバンス ブラック ボックス

1. example5 に移動し、 black_box_ex5.mdl を開きます。 このモデルには、 2 つの Gateway In ブロ ッ クで駆動される加算器が含まれています。 Gateway In ブロ ッ クは、 2 進小数点の右側に

6 ビッ ト ある符号付きの 8 ビッ ト値を生成するよ う設定されています。 サイン波ジェネレータ

からの出力で駆動されます。 このモデルには、 waveform scope というブラ ッ ク も含まれます。

このブロ ッ クは、 1 つの入力は加算器の出力で駆動され、 残りの 2 つの入力は加算器への入力

で駆動されます。 ModelSim ブロ ッ クは、HDL 協調シ ミ ュレーシ ョ ンを実行できるよ うにしま

す。 このモデルを次に示します。

2. black_box_ex5 モデルをシ ミ ュレーシ ョ ンします。 ModelSim ウ ィンド ウが開き、 シ ミ ュレー

シ ョ ンに必要なフ ァ イルがコンパイルされます。 コンパイルが終了する と、 MATLAB とModelSim の両方でシ ミ ュレーシ ョ ンが開始します。 ModelSim の波形ビューアが開き、4 つの

信号が表示されます。 初の入力 sig1 は、 加算器の出力で駆動されます。 この信号は、

ModelSim の波形ビューアでは 2 進数とアナログで表示されます。 次の図に、 black_box_ex5のシ ミ ュレーシ ョ ンの ModelSim 波形を示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 313リ リース 10.1.2 2008 年 6 月

Page 314: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

3. モデルで Simulink の Scope ブロ ッ クをダブルク リ ッ ク します。 表示される出力は、ModelSimの波形ビューアのアナログ信号に類似しています。

この例のブラ ッ ク ボッ クスは、 マスク パラ メータを使用してコンフ ィギュレーシ ョ ンされて

います。 この方法は、 さまざまな状況で有益です。 この場合は、 マスク パラ メータを使用して

ブラ ッ ク ボッ クスの入力ポートの数 (waveform scope の入力数) を指定しています。

314 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 315: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

4. waveform scope ブラ ッ ク ボッ クスをダブルク リ ッ ク します。 パラ メータ ダイアログ ボッ クス

に入力ポートの数を指定する [Number of input ports] が含まれており、ブラ ッ ク ボッ クスのイ

ンスタンスごとに個別の値を指定できます。 次の図に、 waveform scope のパラ メータ ダイア

ログ ボッ クスを示します。

5. [Number of input ports] を 3 から 4 に変更し、[適用] ボタンをク リ ッ ク して変更を適用します。

ブラ ッ ク ボッ クスに sig4 という入力ポートが追加され、 次の図のよ うにな り ます。

各ブラ ッ ク ボッ クスには、マスク パラ メータの標準リ ス トがあ り ます。 この例のブラ ッ ク ボッ

クスでは、ユーザーが選択した入力ポートの数を保存する nports という追加のマスク パラ メー

タがあ り ます。 ブラ ッ ク ボッ クスのマスク パラ メータを変更するには、ライブラ リへのリ ンク

を解除する必要があ り ます。 このよ うにブラ ッ ク ボッ クスを変更する場合は、 ライブラ リのブ

ラ ッ ク ボッ クスを保存するこ とをお勧めします。 ラ イブラ リの詳細は、Simulink のマニュアル

を参照して ください。 scope_lib.mdl ラ イブラ リには、 この例で使用する変更されたブラ ッ ク

ボッ ク スが含まれています。 ブラ ッ ク ボッ ク スのコンフ ィ ギュ レーシ ョ ン M 関数に HDLファ イルを追加する場合、 このファイルへのパスはライブラ リが保存されているディ レク ト リ

を基準と した相対パスで指定できます。 相対パスを使用する と、HDL をモデルと同じディ レク

ト リにコピーする必要がなくなり ます。

ブラ ッ ク ボッ ク スのパラ メータ ダイアログ ボッ クスに変更が加えられるたびに、 コンフ ィ

ギュレーシ ョ ン M 関数が実行されます。 これによ り、 コンフ ィギュレーシ ョ ン M 関数でマス

ク パラ メータがチェ ッ ク され、 それに応じてブラ ッ ク ボッ クスがコンフ ィギュレーシ ョ ンさ

れます。 この例では、M 関数によ り、マスクで指定された nports パラ メータに基づいてブロ ッ

クの入力ポートの数が調整されます。

6. ブラ ッ ク ボッ クスのコンフ ィギュレーシ ョ ン M 関数を定義する scope_config.m を開きます。

次の行を検索します。

simulink_block = this_block.blockName;

この行は、 ブラ ッ ク ボッ クスの名前を取得し、 simulink_block 変数に割り当てます。 この名前

は、 MATLAB 関数でブロ ッ クを変更する際に必要なハンドルです。

System Generator for DSP ユーザー ガイド japan.xilinx.com 315リ リース 10.1.2 2008 年 6 月

Page 316: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

7. 次の行を検索します。

nports = eval(get_param(simulink_block,'nports'));

マスク パラ メータ nports の値は、 get_param コマン ドを使用して取得します。 このコマンド

は、ポート数を含む文字列を返します。 get_param を含む eval は、文字列を nports 変数に割り

当てる整数に変換します。

8. 入力ポートが取得される と、 ブラ ッ ク ボッ クスに入力ポートが追加されます。 これを実行する

コードを次に示します。

for i=1:nports this_block.addSimulinkInport(sprintf('sig%d',i));

end

scope1.vhd、 scope2.vhd、 scope3.vhd、 scope4.vhd とい う、 この例のブラ ッ ク ボッ クスで使用

可能な VHDL ファ イルが 4 つあ り ます。 ブラ ッ ク ボッ クスは、適切なポート数を宣言するファ

イルに関連付けられます。

9. コンフ ィギュレーシ ョ ン M 関数で、ブラ ッ ク ボッ クスに適切な VHDL ファ イルが選択されま

す。 scope_config.mで、 次の行を検索します。

entityName = sprintf('scope%d',nports);

ブラ ッ ク ボッ クスの HDL エンテ ィテ ィ名は、 scope に nports の値を追加したものです。 ブラ ッ ク ボッ クスに VHDL を関連付ける行は、 次のとおりです。

this_block.addFile(['vhdl/' entityName '.vhd']);

10. 各 VHDL エンティティの入力ポート幅は、ジェネ リ ッ クを使用して割り当てられます。 ジェネ

リ ッ ク名から、 幅を割り当てる入力ポート を特定できます。 たとえば width3 ジェネ リ ッ クは、

3 番目の入力の幅を指定します。 scope_config.m で、 ジェネ リ ッ ク名とその値は次のよ うに設

定されます。

% ----------------------------- if (this_block.inputTypesKnown) for i=1:nports width = this_block.inport(i).width; this_block.addGeneric(sprintf('width%d',i),width); end end % if(inputTypesKnown)

% -----------------------------

316 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 317: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ブラック ボックスの例R

11. シ ミ ュレーシ ョ ン中に ModelSim での信号波形の表示方法は、 ModelSim ブロ ッ クのカスタム

tcl スク リプ ト を使用して変更できます。 black_box_ex5 モデルで ModelSim ブロ ッ クをダブ

ルク リ ッ ク します。 次のよ う なダイアログ ボッ クスが表示されます。

カスタム スク リプ ト を指定するには、 [Advanced] タブで [Add custom scripts] をオンにしま

す。 この例では、[Script to run after "vsim"] で waveform.do という スク リプ トが指定されてい

ます。 このスク リプ トには、 加算器の出力をアナログ波形で表示するための ModelSim コマン

ドが含まれます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 317リ リース 10.1.2 2008 年 6 月

Page 318: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

318 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 319: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

R

第 5 章

System Generator のコンパイル タイプ

System Generator では、 複数の方法でデザインを等価の下位表現にコンパイルできます。 コンパイ

ル方法は、 System Generator トークンのパラ メータ ダイアログ ボッ クスで指定します。 複数のコ

ンパイル方法が提供されているので、 デザインの環境に応じて適切な表現を選択できます。 たとえ

ば、デザインをコンポーネン ト と して大型のシステムで使用する場合は、HDL または NGC ネッ ト

リ ス ト が適していますが、 システム全体を System Generator でモデル化する場合は、 FPGA コン

フ ィギュレーシ ョ ン ビッ ト ス ト リームにコンパイルします。 また、System Generator 外部のアプリ

ケーシ ョ ンで特定の機能を実行する等価の高レベル モジュールにデザインをコンパイルする場合

もあ り ます (ModelSim ハード ウェア 協調シ ミ ュレーシ ョ ンなど)。

HDL ネッ ト リ スト へのコンパイル System Generator では、デフォルトで [Compilation] が[HDL Netlist] に設定されています。 HDL ネッ ト リ ス ト

コンパイル フローの詳細は、 「コンパイル結果」 を参照

してください。

NGC ネッ ト リ スト へのコンパイル デザインをスタンドアロン NGC ファ イルにコンパイル

する方法を説明します。

ビッ ト ス ト リームへのコンパイル デザインを FPGA コンフ ィギュレーシ ョ ン ビッ ト ス ト

リームにコンパイルする方法を説明します。

EDK Export Tool デザインを選択したデバイスに適した FPGA コンフ ィ

ギュレーシ ョ ン ビッ ト ス ト リームにコンパイルする方

法を説明します。

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

ン用のコンパイル

デザイ ンを Simulink およ び ModelSim で使用可能な

FPGA ハード ウェアにコンパイルする方法を説明します。

タイ ミ ング解析用のコンパイル System Generator のタイ ミ ング解析ツールを使用する

方法を説明します。

コンパイル ターゲッ トの作成 System Generator トークンにカスタム コンパイル ター

ゲッ ト を追加する方法を説明します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 319リ リース 10.1.2 2008 年 6 月

Page 320: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

HDL ネッ ト リス トへのコンパイル

System Generator では、 デフォルトで [Compilation] が [HDL Netlist] に設定されています。 HDLネッ ト リ ス ト コンパイル フローの詳細は、 「コンパイル結果」 を参照して ください。

次の図に示すよ う に、 System Generator ト ーク ンのパラ メ ータ ダイ ア ロ グ ボ ッ ク スで

[Compilation] のボッ クスの左側にある [>] ボタンをク リ ッ ク し、 プルダウン メニューから [HDLNetlist] を選択します。

NGC ネッ ト リストへのコンパイル

[Compilation] を [NGC Netlist] に設定する と、デザインをスタンドアロンのザイ リ ンクス NGC バイナリ ネッ ト リ ス ト ファ イルにコンパイルできます。 System Generator で生成される NGC ネッ ト

リ ス トには、デザインのロジッ ク と制約に関する情報が含まれています。 つま り、System Generatorデザインに関する HDL、 コア、 制約ファイルが、 1 つのファイルに含まれています。

デザインにクロ ッ ク ラ ッパ ロジッ クを含める場合、 ネッ ト リ ス ト ファ イルは <design>_cw.ngc という名前で保存されます。 ク ロ ッ ク ラ ッパ ロジッ クを含めない場合は、ファ イル名は <design>.ngcになり ます。 こ こで、 <design> はコンパイルするデザイン部分から得られた名前です。 このファ イ

ルは、モジュールと して大型のデザインで使用するか、完全なデザインである場合は NGDBuild の入力と して使用できます System Generator デザインを大型デザインのコンポーネン ト と して使用

する例は、 「System Generator デザインの大型システムへのインポート 」 を参照して ください。

コンパイル ターゲッ ト を NGC ネッ ト リ ス トにした場合、 HDL コンポーネン ト インスタンシエー

シ ョ ン テンプレートが作成され、System Generator デザインをコンポーネン ト と して大型デザイン

に簡単に組み込むこ とができます。 VHDL のテンプレー ト は、 ク ロ ッ ク ラ ッパを含める場合は

<design>_cw.vho に保存され、 ク ロ ッ ク ラ ッパを含めない場合は <design>.vho に保存されます。

Verilog のテンプレートでは、 拡張子は .veo です。 インスタンシエート テンプレートは、 デザイン

のターゲッ ト ディ レク ト リに保存されます。

System Generator では、 コンパイルで次の処理を実行して NGC ネッ ト リ スト ファ イルを生成し

ます。

1. デザインの HDL ネッ ト リ ス ト を生成します。

2. 選択された合成ツールを実行して、下位ネッ ト リ ス ト を生成します。 ネッ ト リ ス トのタイプは、

選択された合成ツールによって異なり ます (Synplify または Synplify Pro の場合は EDIF、XSTの場合は NGC)。

メモ : メモ : 合成中、 デザインに I/O バッファは挿入されません。

3. 合成結果、 コアのネッ ト リ ス ト 、 ブラ ッ ク ボッ クスのネッ ト リ ス ト 、およびオプシ ョ ンで制約

ファイルを統合して、 1 つの NGC ファ イルを生成します。

320 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 321: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ビッ トス ト リームへのコンパイルR

次の図に示すよ う に、 System Generator ト ーク ンのパラ メ ータ ダイ ア ロ グ ボ ッ ク スで

[Compilation] のボッ クスの左側にある [>] ボタンをク リ ッ ク し、 プルダウン メニューから [NGCNetlist] を選択します。

[Compilation] を [NGC Netlist] に設定した場合、 [Settings] ボタンをク リ ッ ク して NGC ネッ ト リ

ス ト専用の追加のパラ メータを設定できます。 [Settings] ボタンをク リ ッ ク して開く [NGC NetlistSettings] ダイアログ ボッ クスには、 次のパラ メータが含まれています。

• [Include Clock Wrapper] : オンにする と、 NGC ネッ ト リ ス ト ファ イルにデザインのクロ ッ ク

ラ ッパが含まれます。 ク ロ ッ ク ラ ッパの詳細は、 「コンパイル結果」 を参照して ください。

メモ : マルチレート デザインにクロ ッ ク ラ ッパを含めない場合は、 上位デザインの適切な信

号でクロ ッ ク イネーブル ポート を駆動する必要があ り ます。

• [Include Constraints File] : オンにする と、NGC ネッ ト リ ス ト ファ イルにデザインに関連付け

られた制約ファイルが含まれます。

メモ : 制約ファイルを含めない場合、System Generator デザインの複数サイクル パスが適切に

制約されるよ う、 独自の制約を設定する必要があ り ます。

ビッ トス ト リームへのコンパイル

[Compilation] を [Bitstream] に設定する と、 System Generator トークンのパラ メータ ダイアログ

ボッ クスで選択した FPGA デバイス用のザイ リ ンクス コンフ ィギュレーシ ョ ン ビッ ト ス ト リーム

フ ァ イルにデザイ ンがコ ンパイルされます。 ビ ッ ト ス ト リ ーム フ ァ イルは、 <design>_cw.bit(<design> はコンパイルされたデザインから取得された名前) という名前で、デザインのターゲッ ト

ディ レク ト リに保存されます。

System Generator では、コンパイルで次の処理を実行してビッ ト スト リ ーム ファ イルを生成します。

1. デザインの HDL ネッ ト リ ス ト を生成します。

2. 選択された合成ツールを実行して、下位ネッ ト リ ス ト を生成します。 ネッ ト リ ス トのタイプは、

選択された合成ツールによって異なり ます (Synplify または Synplify Pro の場合は EDIF、XSTの場合は NGC)。

3. XFLOW を実行して、 コンフ ィギュレーシ ョ ン ビッ ト ス ト リームを生成します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 321リ リース 10.1.2 2008 年 6 月

Page 322: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

次の図に示すよ う に、 System Generator ト ーク ンのパラ メ ータ ダイ ア ロ グ ボ ッ ク スで

[Compilation] のボ ッ ク スの左側にあ る [>] ボ タ ンを ク リ ッ ク し、 プルダウ ン メ ニ ューから

[Bitstream] を選択します。

System Generator では、 XFLOW を実行してコンフ ィギュレーシ ョ ン ビッ ト ス ト リームの生成に

必要なツールを実行します。 XFLOW では、 インプ リ メンテーシ ョ ンと コンフ ィギュレーシ ョ ンの

2 つのフローが実行されます。

インプ リ メンテーシ ョ ン フローでは、 合成ツールのネッ ト リ ス ト出力 (EDIF または NGC) が配置

配線された NCD ファ イルにコンパイルされます。 次の処理が実行されます。

1. NGDBuild を使用して、 合成結果、 コアのネッ ト リ ス ト 、 ブラ ッ ク ボッ クスのネッ ト リ ス ト、

および制約ファイルを統合します。

2. MAP、 PAR、 TRACE をこの順に実行します。

コンフ ィギュレーシ ョ ン フローでは、配置配線された NCD ファ イルを入力と して使用して、FPGAビッ ト ス ト リームを作成するのに必要なツール (BitGen など) が実行されます。

XFLOW のオプシ ョ ン ファイル

インプ リ メ ンテーシ ョ ン フローと コンフ ィギュレーシ ョ ン フローには、 それぞれ XFLOW オプ

シ ョ ン ファ イルが関連付けられています。 XFLOW オプシ ョ ン ファ イルでは、 そのフローで実行

する必要のあるプログラム と コマンド ラ イン オプシ ョ ンが定義されます。 ザイ リ ンク ス ISE に、

XFLOW オプシ ョ ン ファ イルの例が含まれています。 これらの ファ イルは、 ISE のインス トール

ディ レク ト リ (C:\Xilinx\10.1\ISE など) の xilinx\data ディ レク ト リ (C:\Xilinx\10.1\ISE\xilinx\dataなど) に含まれています。 よ く使用されるインプ リ メンテーシ ョ ン オプシ ョ ン ファ イルは、 次のと

おりです。

• balanced.opt

• fast_runtime.opt

• high_effort.opt

メモ : デフォルトでは、 インプリ メンテーシ ョ ン フローに balanced.opt ファ イルが使用され、 コン

フ ィギュレーシ ョ ン フローに bitgen.opt ファ イルが使用されます。

場合によって、 デフォルトのオプシ ョ ン ファ イルとは異なる設定を使用するこ とがあ り ます (PARの配置エフォート レベルを上げるなど)。 そのよ う な場合は、 独自のオプシ ョ ン ファ イルを作成す

るか、デフォルトのオプシ ョ ン ファ イルを変更します。 System Generator トークンのパラ メータ ダイアログ ボッ クスで [Compilation] を [Bitstream] に設定して [Settings] をク リ ッ クする と、 オプ

シ ョ ン ファ イルを指定できます。

322 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 323: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

ビッ トス ト リームへのコンパイルR

追加の設定

[Compilation] を [Bitstream] に設定した場合、 [Settings] ボタンをク リ ッ ク してビッ ト ス ト リーム

専用の追加のパラ メータ を設定でき ます。 [Settings] ボタ ンを ク リ ッ ク し て開 く [CompilationTarget Settings] ダイアログ ボッ クスには、 次のパラ メータが含まれています。

• [Import Top-level Netlist] : オンにする と、 デザインの System Generator 部分をモジュールと

して含める 上位ネッ ト リ ス ト を指定できます。 System Generator ク ロ ッ ク ラ ッパをコン

ポーネン ト と してインスタンシエートする大型デザインがある場合は、 その 上位ネッ ト リ ス

ト を選択できます。 クロ ッ ク ラ ッパの詳細は、「コンパイル結果」 を参照してください。 この

上位ネッ ト リ ス トは、 コンパイル時に生成されるビッ ト ス ト リーム ファ イルに含まれます。 このチェッ ク ボッ クスをオンにする と、 [Top-level Netlist File (EDIF or NGC)] と [Search Pathfor Additional Netlist and Constraint Files] が有効になり ます。

♦ [Top-level Netlist File (EDIF or NGC)] : コンパイルで含める 上位ネッ ト リ ス ト ファ イ

ルの名前と場所を指定します。 上位ネッ ト リ ス トで使用される HDL コンポーネン ト ( 上位自身も含む) がネッ ト リ ス ト ファ イルに合成されているこ とが必要です。

♦ [Search Path for Additional Netlist and Constraint Files] : 上位ネッ ト リ ス ト ファ イルに

関連した追加のネッ ト リ ス ト ファ イルおよび制約ファ イルを検索するディ レク ト リ を指

定します。 このディ レク ト リ を指定する と、すべてのネッ ト リ ス ト ファ イル (EDN、EDF、NGC など) および制約ファイル (UCF、 XCF、 NCF など) が implementation ディ レク ト

リにコピーされます。 ディ レク ト リ を指定しない場合は、 [Top-level Netlist File (EDIF orNGC)] で指定されたネッ ト リ ス ト ファ イルのみがコピーされます。

• [Specify Alternate Clock Wrapper] : オンにする と、 System Generator で生成されたクロ ッ ク

ラ ッ パの代わ り に独自の ク ロ ッ ク ラ ッパを指定でき ます。 ク ロ ッ ク ラ ッパは SystemGenerator デザイン用に作成された 上位 HDL ファ イルのレベルであ り、デザインのクロ ッ ク

信号およびクロ ッ ク イネーブル信号を駆動します。 デザインに複数のクロ ッ ク信号がある場合

や、 デザインでインターフェイス と して使用するボード専用のハード ウェアがある場合など、

独自のクロ ッ ク ラ ッパを使用する必要がある場合があ り ます。

メモ : 独自のクロ ッ ク ラ ッパ ファ イルを使用する場合は、 ファ イル名を <design>_cw.vhd または <design>_cw.v にしないと、 ビッ ト ス ト リームの生成で使用されません。

• [XFLOW Option Files] : デザインを System Generator ハードウェア協調シ ミ ュレーシ ョ ン用

にコンパイルする と、 XFLOW とい う コマンド ラ イン ツールを使用して、 デザインが選択し

た FPGA プラ ッ ト フォーム用にインプ リ メ ン ト およびコンフ ィ ギュ レーシ ョ ン されます。

XFLOW では、 コンパイルでデザインに実行する必要のあるプログラムのシーケンスを指定す

るさまざまなフローが定義されています。 必要な出力 (ハード ウェア協調シ ミ ュレーシ ョ ンの

場合はコンフ ィギュレーシ ョ ン ビッ ト ス ト リーム) を得るためには、 通常複数のフローを実行

する必要があ り ます。

♦ [Implementation Phase (NBDBuild, MAP, PAR, TRACE)] : インプ リ メンテーシ ョ ン フローで使用するオプシ ョ ン ファ イルを指定します。 デフォルトでは、コンパイル ターゲッ

トに提供されているインプ リ メンテーシ ョ ン オプシ ョ ン ファ イルが使用されます。

♦ [Configuration Phase (BitGen)] : コンフ ィギュレーシ ョ ン フローで使用するオプシ ョ ン

ファ イルを指定します。 デフォル ト では、 コンパイル ターゲッ ト に提供されているコン

フ ィギュレーシ ョ ン オプシ ョ ン ファ イルが使用されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 323リ リース 10.1.2 2008 年 6 月

Page 324: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

EDK Processor ブロックに含まれるソフ トウェア プログラムのビッ トス トリームへの再コンパイル

EDK Processor ブロ ッ クを含む System Generator デザインのビッ ト ス ト リームをコンパイルする

と、 インポート された EDK プロジェク ト と、 System Generator デザインと MicroBlaze プロセッ

サの間にある共有メモ リがネッ ト リ ス ト処理され、 ビッ ト ス ト リームに含まれます。

System Generator では、インポート された EDK プロジェク トに含まれるアクティブ ソフ ト ウェア

プログラムもコンパイルされます。 アクテ ィブ ソフ ト ウェア プログラムのコンパイルが正常に完

了する と、 data2bram ユーティ リ テ ィが起動され、 コンパイルされたソフ ト ウェア プログラムが

ビッ ト ス ト リームに含まれます。

メモ : ソフ ト ウェア プログラムのコンパイル中またはビッ ト ス ト リームをコンパイルされたソフ

ト ウェア プログラムでアップデートする際にエラーが発生しても、 エラー メ ッセージまたは警告

メ ッセージは表示されません。

インポート された EDK プロジェク トでソフ ト ウェア プログラムを変更した場合、 次のコマンドを

使用してソフ ト ウェア プログラムをコンパイルし、System Generator ビッ ト ス ト リームをコンパイ

ルされたソフ ト ウェア プログラムでアップデートできます。

xlProcBlockCallbacks('updatebitstream', [], xmp_file, bit_file, bmm_file);

xmp_file : インポート された EDK プロジェク ト ファ イルへのパス名

bit_file : System Generator のビッ ト ファ イルへのパス名

bmm_file : ビ ッ ト ス ト リームのコンパイル時に System Generator で生成されるバッ クア ノ

テート された BMM ファ イルへのパス名

インポート された EDK プロジェク ト に imported_edk_project.bmm と いう 名前の BMM ファ イルが

含まれている場合、 System Generator により imported_edk_project_bd.bmm と いう 名前のバッ ク ア

ノ テート された BMM ファ イルが生成されます。ビッ ト スト リ ームを正しく アッ プデート するには、

上記のコマンド で 新のバッ クアノ テート された BMM ファ イルを指定する必要があり ます。

EDK Export ToolEDK Export Tool を使用する と、System Generator デザインをザイ リ ンクス エンベデッ ド開発キッ

ト EDK プロジェク トにエクスポートできます。 このツールは、 EDK に必要なファイルを自動的に

生成するこ とによ り、 ペリ フェラルの作成プロセスを簡略化します。

324 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 325: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

EDK Export ToolR

次の図に示すよ う に、 System Generator ト ーク ンのパラ メ ータ ダイ ア ロ グ ボ ッ ク スで

[Compilation] のボッ クスの左側にある [>] ボタンをク リ ッ ク し、 プルダウン メニューから [EDKExport Tool] を選択します。 [EDK Export Tool] を選択する と、[Settings] ボタンが有効になり ます。

[Settings] をク リ ッ クする と、 [EDK export settings] ダイアログ ボッ クスが開きます。

このダイアログ ボッ クスの [pcore options] では、 次を設定できます。

• pcore のバージ ョ ン番号

• [Pcore under development] オプシ ョ ン

このオプシ ョ ンは、FSL ベースおよび PLB ベースの pcore のエクスポートで設定できます。こ

のオプシ ョ ンをオンにする と、この pcore に対して生成される HDL はキャッシュされません。

この機能は、 System Generator で pcore を開発中に XPS でテス トする場合に有益です。 この

チェッ ク ボッ クスをオンにし、System Generator で変更を加え、XPS でコンパイルする と、常

に生成された pcore がコンパイルされ、 XPS キャ ッシュを空にする必要はあ り ません (キャ ッ

シュにはほかのペリ フェラルも含まれているので、 空にしてしま う と 終的なビッ ト ス ト リー

ムのコンパイル時間が長くなる)。

• [Enable custom bus interfaces] オプシ ョ ン

このオプシ ョ ンは、 FSL ベースおよび PLB ベースの pcore のエクスポート で設定できます。

XPS で認識可能なカスタム バス インターフェイスを使用できるよ うにします。

System Generator for DSP ユーザー ガイド japan.xilinx.com 325リ リース 10.1.2 2008 年 6 月

Page 326: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

pcore エクスポート用のカスタム バス インターフェイスの作成

次の図のモデルに示すよ うに、 XPS に pcore と してエクスポートするデザインが 1 つある と しま

す。 このデザインには、 Pixel Enable、 Y、 Cr、 Cb とい う出力ポートがあ り ます。 これらの信号を

バスにま とめ、 XPS への接続を簡略化します。

上記の手順に従い、 [Bus Interface] ダイアログ ボッ クスを開きます。 このダイアログ ボッ クスで、

名前が vid_out、バス規格が myVideoBus 、バス タイプが INITIATOR の新しいバス インターフェ

イ ス を定義し ます。 バス タ イプには、 INITIATOR 以外に TARGET、 MASTER、 SLAVE、MASTER_SLAVE、 MONITOR を指定できます。 次に、 [Port-Bus Mapping] 表でバスに必要なす

べてのゲート ウェイを入力し、それぞれバス インターフェイス名を指定します。バス インターフェ

イスの定義を完了したら、 デザインを pcore と してエクスポート します。 この pcore バスには出力

が含まれているので、 INITIATOR と定義されているこ とに注意して ください。

1. ダブルクリ ック4. 選択

3. クリ ッ ク2. 選択

5. ク リ ッ ク

6. データを入力

326 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 327: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

EDK Export ToolR

次の図に示す別のモデルで、 対応する入力ゲート ウェイを作成します。 このバスには、 バス規格を

同じ く myVideoBus、バス タイプを TARGET に設定します。 XPS では、バス規格名を使用して異

なるバス インターフェイスを一致させ、 バス インターフェイス名が同じ入力と出力を接続します。

この pcore を XPS プロジェク ト と してエクスポート します。 これら 2 つの pcore を同じ XPS プロ

ジェク トで使用する と、XPS でバスに互換性があるこ とが認識されるので、必要に応じて接続でき

ます。

pcore と して EDK にエクスポート

System Generator デザインを EDK にエクスポートする と、 PLC v6.4 バスを指定した場合、 pcore(プロセッサ コア) 名はモデル名に「_plbw」 を追加したものになり ます。 たとえば、mul_accumulateというモデルを EDK にエクスポートする と、EDK での名前は mul_accumulate_plbw とな り ます。

高速シンプレッ クス リ ンクを指定した場合は、 pcore 名はモデル名に 「_sm」 を追加したものにな

り ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 327リ リース 10.1.2 2008 年 6 月

Page 328: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

次の表に、 System Generator で生成される pcore のサブディ レク ト リ構造を示します。

System Generator ポート を EDK の 上位ポート と して使用

System Generator で作成された入力ポート と出力ポートは、 EDK でペリ フェラルのポート と して

使用できます。 これらのポー ト は、 EDK デザインの 上位ポー ト と して使用できます。 これは、

System Generator デザインに FPGA デバイス上の入力/出力パッ ドに接続されるポートがある場合

に便利です。

サポート されるプロセッサと制限

現在のと こ ろ、 EDK Export Tool を使用してエク スポート できるのは MicroBlaze プロセッ サへの

PLB v4.6 メ モリ マッ プ リ ンクおよび FSL メ モリ マッ プで、 EDK Processor ブロッ クのインスタン

スを 1 つのみ含むこと ができます。

関連項目

EDK Processor

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

System Generator では、 デザインを Simulink シ ミ ュレーシ ョ ンとの協調シ ミ ュレーシ ョ ンで使用

可能な FPGA ハード ウェアにコンパイルできます。 この機能については、「ハードウェア協調シ ミ ュ

レーシ ョ ンの使用」 を参照してください。

System Generator トークンのパラ メータ ダイアログ ボッ クスで [Compilation] のボッ クスの左側

にある [>] ボタンをク リ ッ ク し、 プルダウン メニューで [Hardware Co-Simulation] の下にある リ

ス ト からハード ウェア協調シ ミ ュレーシ ョ ン プラ ッ ト フォーム を選択します。 選択可能なプラ ッ

ト フォームは、システムにインス トールされているハード ウェア協調シ ミ ュレーシ ョ ン プラグイン

によって異なり ます。

ディ レク ト リ 説明

data BBD、 PAO、 MPD、 TCL の 4 つのファイルが含まれます。

• BBD (Black Box Definition) ファ イル : デザインで使用する EDN または NGC ファ イルを定義します。

• PAO (Peripheral Analyze Order) ファ イル : HDL ファ イルの解

析順を定義します。

• MPD (Microprocessor Peripheral Description) ファ イル : ペリ

フェラルのプロセッサへの接続方法を定義します。

• TCL ファ イル : ペリ フェラルのソフ ト ウェア ド ライバを生成

する際に Libgen で使用されます。

doc HTML 形式の文書ファイルが含まれます。

hdl System Geenrator で生成された HDL ファ イルが含まれます。

netlist BBD ファ イルにリ ス ト されている EDN ファ イルおよび NGC ファ イルが含まれます。

src ソフ ト ウェア ド ラ イバのソース ファ イルが含まれます。

328 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 329: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

タイ ミング解析用のコンパイルR

メモ : コンパイル ターゲッ ト と して リ ス ト されていない FPGA プラ ッ ト フォームがある場合は、

FPGA ハード ウェアと JTAG を介して通信する新しいコンパイル ターゲッ ト を作成できます。 この方法については、 「新規プラ ッ ト フォームのサポート 」 を参照して ください。

タイ ミング解析用のコンパイル

System Generator で生成されたハード ウ ェアがタ イ ミ ング要件を満たさない場合があ り ます。

System Generator では、 タイ ミ ング問題を解決するのに役立つタイ ミ ング解析ツールが提供されて

います。 このツールを使用する と、 グラフ ィ ッ クおよびテキス ト形式の両方で、 も遅いパス、 タ

イ ミ ング要件を満たしていないパスが表示されるので、 これらの情報を利用してデザインを調整で

きます。 このセクシ ョ ンでは、 この方法を説明します。 System Generator のタイ ミ ング解析ツール

は、ISE でタイ ミ ング解析に使用される TRACE とい う ソフ ト ウェア アプリケーシ ョ ンに基づいて

います。

次の図に示すよ う に、 System Generator ト ーク ンのパラ メ ータ ダイ ア ロ グ ボ ッ ク スで

[Compilation] のボッ クスの左側にある [>] ボタンをク リ ッ ク し、プルダウン メニューから [TimingAnalysis] を選択します。 [Part] で使用するデバイスを指定します。 デバイスのサイズおよびスピー

ドがパス遅延に影響するので、正しいデバイスを選択する必要があ り ます。 解析結果のファイルは、

[Target Directory] で指定されたディレク ト リに保存されます。 [FPGA Clock Period] の値が、 配置

配線中に使用されます。

パラ メータ ダイアログ ボッ ク スでパラ メータを指定して [Generate] ボタンをク リ ッ クする と、

System Generator が次の処理を実行します。

1. Simulink を使用してデザインをコンパイルします。

2. デザインの HDL ソースを生成します。

3. [Synthesis tool] で指定した合成ツールを呼び出し、HDL を EDIF (Synplify/Synplify Pro) また

は NGC (XST) ネッ ト リ ス トに変換します。

4. NGDBuild を呼び出し、 ネッ ト リ ス ト を NGD ファ イルに変換します。

5. MAP を呼び出し、ロジッ クのエレ メン ト をスライスにマップし、NCD ファ イルを生成します。

6. PAR を呼び出し、 スラ イスおよびエレ メン ト をザイ リ ンクス デバイスに配置し、 スライス間

を配線します。 これらの情報は、 別の NCD ファ イルに保存されます。

7. TRACE を呼び出し、 NCD を解析してスラ ッ クが 小のパスを見つけ、 TRACE レポート を作

成します。

8. System Generator のタイ ミ ング解析ツールを表示し、TRACE レポートのデータを表示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 329リ リース 10.1.2 2008 年 6 月

Page 330: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

メ モ : この方法を使用してタ イ ミ ング データ を生成し、 後でこのデータ を表示する場合は、

MATLAB の [Command Window] に次のコマンドを入力します。

>>xlTimingAnalysis('timing')

こ こで、 timing は以前のタイ ミ ング解析結果が保存されているディ レク ト リです。

タイ ミ ング解析の概要

このセクシ ョ ンでは、 ロジッ ク パス解析の概要を説明します。

周期とスラッ ク

タイ ミ ングが満たされないという こ とは、通常デザインにセッ ト アップ タイム違反があるこ とを意

味します。 セッ ト アップ タイム違反は、ある信号が 1 つの同期エレ メン トの出力から別の同期エレ

メ ン ト の入力に要求されたク ロ ッ ク周期内に到達する こ とができず、 2 番目の同期エレ メ ン ト の

セッ ト アップ タイム要件が満たされない状況です。 次の図に、 典型的なパスを示します。

この図では、 左側のレジスタ (register3) の Q 出力から右側のレジスタ (parity_reg) の D 入力まで

のパスを示しています。 このパスは、4 入力 XOR ゲート と してコンフ ィギュレーシ ョ ンされている

2 つの LUT を通過します。 ロジッ ク レベル数は 2 で、 2 つの組み合わせエレメン ト (LUT) を通過

するこ とを意味します。

このパスに要求される周期は 10ns で、 タイ ミ ングを簡単に満たすこ とができます。 各ロジッ ク エレ メン トの上に表示されているカンマで区切られた赤色の 2 つの数値のうち 2 番目の値は、パスの

スラ ッ クを示します。 スラ ッ クは、 パスがタイ ミ ングをどの程度満たしているかを示します。 上図

の例のスラ ッ クは 7.79ns で、 パスが 7.79ns 遅くても 10ns の周期要件が満たされるこ とを意味しま

す。 負のスラ ッ ク値は、 パスがタイ ミ ングを満たしておらず、 セッ ト アップ (またはホールド ) タイ

ム違反が発生しているこ とを示します。

パス解析の例

こ こで、 このパスを詳細に調べてみます。 register3 の上に示されている 初の値は 0.35ns です。 これは、 このレジスタの clock-to-out タイムが 0.35ns であるこ とを示しており、 ク ロ ッ ク信号の立ち

上がりエッジの 0.35ns 後に Q にデータが出力されます。 ク ロ ッ ク信号は、 この図には示されてい

ませんが、 両方のレジスタの C 入力を駆動します。

LUT y_4[0] の各入力には、 2 つの値が表示されています。 初の値 0.98ns は信号の到着時間です。

これは、 クロ ッ クの立ち上がりエッジの 0.98ns 後に信号が入力に到着する という こ となので、 ネッ

ト遅延は 0.98ns - 0.35ns = 0.63ns です。 パス遅延は、 ネッ ト遅延と ロジッ ク遅延に分けるこ とがで

きます。 FPGA では、 通常ネッ ト遅延がパス遅延の大部分を占めます。 これは、 FPGA のコンフ ィ

ギャブル配線構造のため、ネッ トがデスティネーシ ョ ンに到達するために多数のスイ ッチ ボッ クス

を通過する必要があるからです。

330 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 331: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

タイ ミング解析用のコンパイルR

y_4[0] からのパスは、y[0] への別のネッ ト を通過します。 y[0] の出力に示されている 2 つの数値の

うち 初の値 1.62ns は、 この LUT の出力に信号が到着する時間を示しています。 この後信号は

後のネッ ト を 0.26ns のネッ ト遅延で通過し、parity_reg の D 入力にクロ ッ ク エッジの 1.88ns 後に

到着します。 このレジスタのセッ ト アップ タイム要件は 0.33ns です。 これは、次のクロ ッ クの立ち

上がりエッジの 0.33ns 前に、 信号が D 入力に到着する必要がある とい う こ とです。 そのため、 こ

のパスに必要な合計時間は 1.88ns + 0.33ns = 2.21ns です。 10ns からこの値を引く と、 7.79ns のス

ラ ッ ク値が得られます。

クロック スキューとジッ タ

こ こに示されているネッ ト遅延は、 Synplify による予測値です。 実際のネッ ト遅延は配置配線後で

ないと確定できないので、 合成ツールでは実際の遅延は判断できません。 実際のパスでは、 ク ロ ッ

ク スキューやク ロ ッ ク ジッ タなど、 その他の要素も考慮する必要があ り ます。 ク ロ ッ ク スキュー

は、 1 つのクロ ッ ク信号が複数のデスティネーシ ョ ン同期エレ メン ト に到着する時間の差です。 クロ ッ ク ジッ タは、サイ クル間のクロ ッ ク周期の変動を示します。 ジッタは、DCM (デジタル ク ロ ッ

ク マネージャ ) やその他の要因で発生します。 タイ ミ ング解析は、デバイスのワース ト ケースの遅

延値、 ジッ タ、 スキュー、 および温度を使用して行われます。

タイ ミ ング解析ツールの機能

遅いパスの表示

[Slow Paths] をク リ ッ クする と、各タイ ミ ング制約に対してスラ ッ クが 小のパスが表示されます。

次の図は、 その例です。

このウ ィンド ウの上部には遅いパスのリ ス トが表示され、 下部には選択したパスの詳細が表示され

ます。 次に、 このウ ィンド ウの各項目を説明します。

• [Timing constraint] : すべてのタイ ミ ング制約のパスを表示するか、1 つの制約のパスを表示す

るかを選択します。 典型的な System Generator デザインでは、 システム ク ロ ッ クの周期を定

義するタイ ミ ング制約が 1 つ定義されており、 この例ではその制約のパスが表示されていま

す。 TS_clk_a5c9593d は制約名で、複数の System Generator デザインをコンポーネン ト と して

大型のデザインで使用する際に固有の名前になるよ うにするため、 後にハッシュ値が追加さ

れています。 clk_a5c9593 は同期ロジッ クのタイ ミ ング グループで、 同様にハッシュ値が追加

されています。 この例でのタイ ミ ング グループには、 デザインのすべての同期エレ メン トが含

まれます。 ク ロ ッ ク周期は 10ns で、 デューティ サイクルは 50% です。

• [Source] : パスを駆動する System Generator ブロ ッ クを示します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 331リ リース 10.1.2 2008 年 6 月

Page 332: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

• [Destination] : パスをデスティネーシ ョ ンとなる System Generator ブロ ッ クを示します。

• [Slack] : パスのスラ ッ クを示します。 詳細は、 「周期とスラ ッ ク」 を参照して ください。

• [Delay] (パス) : セッ ト アップ タイム要件を含むパス全体の遅延を示します。

• [% Route Delay] : 遅延全体に対する配線 (ネッ ト ) 遅延の割合を示します。 残りの遅延はロ

ジッ ク遅延です。

• [Levels of Logic] : パスの組み合わせロジッ クのレベル数を示します。 組み合わせロジッ クに

は、 LUT、 F5MUX、 キャ リー チェーン マルチプレクサなどがあ り ます。

• [Path Element] : 選択されたパスのロジッ ク とネッ ト エレ メン ト を示します。

• [Delay] (エレ メン ト ) : 選択されたパスでロジッ クおよびネッ ト エレ メン ト通過する際に発生

する遅延を示します。

• [Type of Delay] : パス エレ メン トで発生する遅延のタイプを示します。 これらの値は、 ザイ リ

ンクス デバイスのデータシート で定義されています。 上図の例では、 Tcko はフ リ ップフロ ッ

プの clock-to-out タイム、 net はネッ ト遅延、 Tilo は LUT を通過する際の遅延、 Tas はフ リ ッ

プフロ ップのセッ ト アップ タイムです。

列ヘッダをク リ ッ クする と、 データをその列を基準に並べ替えるこ とができます。 タイ ミ ングを満

たしていないパスは、 赤/ピンクでハイライ ト されます。

名前の関連付けと下位レベル名の表示

System Generator のタイ ミ ング解析ツールには、System Generator コンポーネン ト をザイ リ ンクス

インプ リ メ ンテーシ ョ ン ツールで生成された下位コンポーネン ト名と自動的に関連付ける非常に

有益な機能があ り ます。 これらのコンポーネン ト名は通常大き く異なっており、 System Generatorモデルに表示されるロジッ ク ブロッ ク と ワイヤと、合成で生成される実際にロジッ ク とには多少の

関係がある程度です。 System Generator のタイ ミ ング解析ツールでは、 TRACE レポートに表示さ

れるロジッ ク エレ メン トおよびネッ トの名前と System Generator モデルのブロ ッ ク と ワイヤを関

連付ける必要があ り ます。

このプロセスで、 関連付けが判断できない場合もあ り ます。 先ほどの図で、 パス エレ メン ト #2 と#4 の [Path Element] にはクエスチ ョ ン マークが表示されています。 これは、 タイ ミ ング解析ツー

ルで TRACE レポートのエレ メン ト名と System Generator のブロ ッ クを関連付けるこ とができな

かったという こ とです。

TRACE レポー ト の実際の名前を表示するには、 [Display low-level names] をオンにし ます。

TRACE レポートの名前が表示されます。 これによ り、TRACE レポートの名前と System Generatorエレ メン ト を関連付けるこ とができる場合があ り ます。

332 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 333: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

タイ ミング解析用のコンパイルR

クロスプローブ

[Slow Paths] ビューでパスを選択する と、 System Generator モデルでパス上のブロ ッ クがハイライ

ト されます。 パスのソース ブロ ッ ク、デスティネーシ ョ ン ブロ ッ ク、パスが通過する組み合わせブ

ロ ッ ク が赤でハイ ラ イ ト されます。 次の図に、 ソースが Registerc でデステ ィ ネーシ ョ ンが

parity_reg のパスを選択したと きに、 モデルがどのよ うに表示されるかを示します。 パスの一部で

ある xor_1b、 xor_2a、 xor_3a もハイライ ト されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 333リ リース 10.1.2 2008 年 6 月

Page 334: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

ヒス トグラム

[Charts] をク リ ッ クする と、 遅いパスのヒ ス ト グラムが表示されます。 このヒ ス ト グラムは、 デザ

インの解析に便利です。 たとえば、 100MHz で動作する必要のあるデザインが 99MHz で動作して

いる と します。 タイ ミ ング要件にどれだけ近いか、 要件を満たすためにはどの程度の作業が必要か

を、 ヒ ス ト グラムから予測できます。 たとえば、 単純なデザインに対して次のよ う な ヒ ス ト グラム

が示されたと します。

このヒ ス ト グラムから、 遅いパスのほとんどが 1.5ns 周辺に集中しており、 も遅いパスは 2.35nsである こ とがわか り ます。 ヒ ス ト グ ラ ムの縦軸は、 遅延範囲内のパスの数を示し ます。 遅延が

2.31ns ~ 2.39ns の範囲内のパスは 1 つだけで、 その右側の範囲 (1.81ns ~ 2.31ns) にはパスはあ り

ません。 つま り、 も遅いパスのみが離れていて、 たとえばタイ ミ ング要件が周期 2ns である とす

る と、 このパスの遅延を削減するだけでタイ ミ ング要件を満たすこ とができます。

334 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 335: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

タイ ミング解析用のコンパイルR

ヒス トグラムの詳細

[Histogram Detail] スライダー バーを使用する と、 ヒ ス ト グラムの表示幅を調整でき、 必要に応じ

て詳細を表示できます。 次の図に、 遅延の範囲が広い別のデザインのヒ ス ト グラムを示します。

このヒ ス ト グラムでは、 パスが 3 つの領域にグループ化されており、 それぞれおおよそ釣鐘型の曲

線となっています。 これらのグループは回路の異なる部分からのものか、 異なるク ロ ッ ク領域から

の異なるタイ ミ ング制約のものである と考えられます。 1 つのタイ ミ ング制約のパスを解析する場

合は、 [Timing constraint] ド ロ ップダウン メニューから制約を選択します。

赤で示された部分に注目して ください。 これらのパスはスラ ッ クが負であ り、 タイ ミ ング制約を満

たしていません。 この例では、 いくつかのパスで制約が満たされていませんが、 それほど大き く離

れているわけではなく、 デザインをある程度変更すればタイ ミ ングが満たされる と考えるこ とがで

きます。

統計

[Statistics] をク リ ッ クする と、 制約の数、 解析されたパスの数、 デザインの 大周波数など、 デザ

インに関する統計情報が表示されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 335リ リース 10.1.2 2008 年 6 月

Page 336: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

TRACE レポート

[TRACE] をク リ ッ クする と、 TRACE レポートが表示されます。 このファ イルには、解析されたパ

スの詳細が含まれています。 解析された各パスに対して、 ネッ トおよびロジッ ク遅延、 クロ ッ ク スキュー、 ク ロ ッ ク誤差に関する情報が示されます。 このウ ィン ド ウの左下には、 TRACE レポート

のパス名が示されます。

タイ ミングを満たしていないパスの向上

タイ ミ ングを満たしていないパスがある場合にど うすれば向上できるかは簡単に答えるこ とができ

る質問ではなく、 FPGA デザインの下位レベルを検証する必要のある場合があ り ます。

通常、 タイ ミ ングを満たすための手順は、 次のとおりです。

1. ソース デザインの変更 : どんなタイ ミ ング問題も ソース デザインを変更するこ とで解決でき、

これが回路のスピードを向上させる も簡単な方法です。 ただし、 多くの場合、 高速のデバイ

スに変更するなど、 手っ取り早い解決策が使用されているのが現実です。 ソース デザインは、

いくつかの方法で変更できます。

a. パイプライン : これはスピードを確実に向上できる方法ですが、 注意が必要です。 パイプ

ライン レジスタを追加する と、 レイテンシが増加します。 フ ィードバッ クを使用するデザ

インでは、 デザインの一部でパイプラ インのバランスを取る必要がある場合があ り ます。

パイプラインの詳細は、 後に示す例を参照してください。

b. 並列化 : これは、 スピードを向上させるためにおそら く 2 番目に重要な変更です。 要求さ

れるスピードで動作していない FIR フ ィルタがある場合、 半分のレートで動作する 2 つの

FIR フ ィルタを並列に使用し、 出力をインターリーブします。 ただし、 この方法を使用す

る と、 エ リ アが増加します。

c. リ タイ ミ ング : 組み合わせロジッ ク内でレジスタの位置を移動するこ と により 、 パスの遅

延を均等に分配します。 この方法は、スラッ クが足り ない部分と 余っている部分がある場合

に効果的です。 合成ツールによっては、ある程度のリ タイ ミ ングを自動的に実行できます。

d. 複製 : レジスタまたはバッファを複製する と、 ロジッ クの使用量は増加しますが、 複製し

たオブジェク トのファンアウ ト を減少させるこ とができます。 これによ り、 ネッ トのキャ

パシタンスが減少し、 ネッ ト遅延も減少します。 複製したレジスタは、 フロアプランして

これらのレジスタが駆動するロジッ ク グループの近くに配置できます。 System Generatorのよ う な高レベルのデザイン環境では、 複製は通常ツールによ り自動的に実行され、 手動

で実行するこ とは一般的ではあ り ません。

336 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 337: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

タイ ミング解析用のコンパイルR

e. シャ ノン展開 : この方法では、低速のロジッ クへの依存を回避するため、 ク リ ティカル パスの高速ロジッ クを複製します。 この操作は、 合成ツールで自動的に実行される場合があ

り ます。

f. ハード コアの使用 : ROM のインプリ メン トに分散 RAM の代わりにブロ ッ ク メモ リ

ハード コアを使用したり、 多入力加算器を 500MHz で動作可能な DSP48 ブロ ッ クにイン

プ リ メン トするなど、 エンベデッ ド ハード コアを利用する とデザインを高速にできます。

g. 新しい考え方 : 大きな遅延を作成する必要がある場合、 長いキャ リー チェーンを持つカウ

ンタを使用する代わりに、 SRL16 を使用してカスケード接続したジ ョ ンソン リ ングを構

成したり、 LFSR を使用して遅延を作成できます。 どちらの方法でもキャ リー チェーンは

不要で、 スピードが大幅に向上します。 デザイン エレ メン トによっては、 その設計を 1 から考え直すこ とが必要な場合があ り ます。

2. 過度の制約を削除 : デザインのエレ メン ト を低いサンプリ ング レートで動作させればよい場

合には、 System Generator で Down Sample および Up Sample ブロッ クを使用して ください。

これらのブロ ッ クを使用しないと、 System Generator でデザインのその部分のサンプ リ ング

レートが低くてよいこ とが認識されず、 デザインに過度の制約が適用される結果となり ます。

3. 制約の変更 : デザインを低いクロ ッ ク速度で実行可能な場合は、 要件を満たすのにこれが も

簡単な方法です。 ただし、 通常デザイン要件は厳しいので、 この方法はほとんどの場合適用で

きません。

4. PAR のエフォート レベルの増加 : ISE の MAP および PAR ツールでは、エフォート レベルを

引数と して指定できます。 ISE を使用する際、 MAP の -timing オプシ ョ ンを使用してみてくだ

さい。 また、 PAR のエフォート レベルを増加する と、 PAR の実行時間は長くな り ますが、 よ

り高速なデザインが得られる場合があ り ます。

5. 配置配線の複数回実行 (MPPR) : PAR の実行では、初期条件が 終的な結果に大き く影響しま

す。 初期条件は、 コス ト テーブルというシード値を使用して決定されます。 この値は、 ProjectNavigator で変更できます。 また、 配置配線の複数回実行 (MPPR) を使用して、 異なるコス ト

テーブル値で PAR を複数回実行するこ と も可能です。 この方法は時間がかかり ますが、効果的

です。

6. フロアプラン : この方法はできるだけ使用しないこ とをお勧めしますが、デザインが大き く向

上する可能性があ り ます。 PAR による配置を変更し、ク リ ティカル エレ メン ト をデバイス上で

近い位置に配置して、 ネッ ト遅延を削減します。 これには、 ISE の PACE および Floorplannerを使用します。 ザイ リ ンクスから別途入手可能なよ り高度なツールである PlanAhead も、 この

作業に役立ちます。

7. 高速のデバイスを使用 : この方法が 初に適用されるこ とがよ くあ り ますが、 コス トのかかる

解決策でもあ り ます。 以前のデバイスの代わりに新しい高速デバイスを使用する と、 新しいデ

バイスは以前のデバイスに比べて安価である場合があるので、 コス ト を削減できる可能性があ

り ます。 同じファ ミ リの高速デバイスに移行する と、 通常コス トが増加し、 1 ~ 6 の方法を適

用すればほとんどの場合必要あ り ません。

System Generator for DSP ユーザー ガイド japan.xilinx.com 337リ リース 10.1.2 2008 年 6 月

Page 338: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

タイ ミング解析のチュート リアル

System Generator で生成されたハードウェアがタイ ミ ング要件を満たさない場合があ り ます。 これ

は、 通常デザインにセッ ト アップ タ イム違反がある こ とを意味します。 セッ ト アップ タ イム違反

は、 ある信号が 1 つの同期エレ メン トの出力から別の同期エレ メン トの入力に要求されたクロ ッ ク

周期内に到達するこ とができず、 2 番目の同期エレメン トのセッ ト アップ タイム要件が満たされな

い状況です。

このセクシ ョ ンでは、タイ ミ ング解析を使用して回路のパフォーマンスを向上させる例を示します。

この例で使用するデザインは、 8 入力 XOR を使用してバイ トのパリティを算出するパリティ カ リ

キュレータです。 このデザインは、 次の場所にあ り ます。

<path_to_sysgen>/examples/timing_analysis/parity_test.mdl

このデザインには、 8 つの 1 ビッ ト Gateway In ブロ ッ クがあ り、 その入力がそれぞれ 1 ビッ ト レジスタに取り込まれ、 7 つの 2 入力 XOR ブロ ッ クで処理されます。 これらの XOR ブロ ッ クのレイ

テンシは 0 で、純粋な組み合わせです。 後のレジスタ parity_reg には 終的な結果 (パリティ ) が取り込まれ、 Gateway Out ブロ ッ クに接続されています。 各パスは 3 つの XOR ブロ ッ クを介して

parity_reg に到達するので、 このデザインのロジッ ク レベル数は 3 である と考えられます。

338 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 339: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

タイ ミング解析用のコンパイルR

デザイン例の生成

このデザインを、 [Compilation] を [Timing Analysis] に、 周期を 1.4ns (714MHz) に設定して生成

します。 周波数を非常に高く設定するのは、 タイ ミ ングを向上させる手順を示すため、 タイ ミ ング

を満たさないパスを作るこ とが目的です。 これらのパラ メータは、 System Generator トークンで設

定します。

遅いパスの検証

[Generate] をク リ ッ クする と、 次のよ うな [Timing Analyzer] ウ ィンド ウが表示されます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 339リ リース 10.1.2 2008 年 6 月

Page 340: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

タイ ミ ングを満たしていないパスは 2 つあ り、 赤/ピンクでハイライ ト されています。 上図では、一

番上のパスは選択しているのでグレーになっています。 負のスラ ッ ク値は、太字で示されています。

も遅いパスは、 96ps の差でタイ ミ ング要件を満たしていません。

System Generator モデルではすべてのパスのロジッ ク レベル数 3 であるよ うに見えますが、 タイ

ミ ング解析の結果ではロジッ ク レベル数が 2 になっています。 これは、 インプ リ メン ト されたデザ

インが System Generator モデルとは正確に一致していないからです。 この例では、合成ツールで一

部の 2 ビッ ト XOR ブロ ッ クが 4 入力 LUT に配置され、次の Synplify Pro の回路図に示すよ うに、

8 ビッ ト XOR が 2 段のロジッ ク レベルで作成されているからです。

ネッ ト およびブロッ ク の下位レベル名を表示してみてく ださい ([Display low-level names] をオン )。タイ ミ ング解析ツールの名前の関連付け機能が非常に有益であるこ と がわかり ます。

選択されたパスの詳細を確認して ください。 ロジッ ク遅延は削減できません。 ネッ ト遅延の 1 つが

813ps です。 これは、 フロアプラン、 配置配線の複数回実行、 または PAR のエフォート レベルを

上げるこ とで削減できる可能性があ り ます。

デザインの向上

こ こでは、ソース デザインを変更するこ と で、より 確実な修正を試みます。 このデザインにはフィ ー

ド バッ ク パスがないので、 デザインに 1 サイクルのレイテンシを追加してパイプライン化するこ と

ができると 想定します。 タイ ミ ングを満たしていないパスのロジッ ク レベル数は 2 です。 論理的に

は、どんなデザインも 1 段のロジッ ク レベルでインプリ メ ント できます。 こ こで、それを実行します。

パイプライン段を追加するには、一部の XOR ブロ ッ クにレイテンシを追加します。 XOR ブロ ッ ク

をダブルク リ ッ ク し、 パラ メータ ダイアログ ボッ クスで [Latency] を 1 に設定します。

xor_3a_y_net[0:0]registere_q_net[0:0]registerf_q_net[0:0]registerg_q_net[0:0]registerh_q_net[0:0]

registera_q_net[0:0]registerb_q_net[0:0]registerc_q_net[0:0]registerd_q_net[0:0]

LUT2_L_6

y[0]

LUT4_6996

y_5[0]

LUT4_6996

y_4[0]

340 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 341: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

タイ ミング解析用のコンパイルR

レイテンシを追加するこ とによ り、XOR ゲートの後にレジスタが追加されます。 こ こでは、xor_2aと xor_2b のレイテンシを変更します。 Synplify Pro の回路図から、合成済みのデザインではこれら

のブロ ッ クの出力が 初のロジッ ク レベルの出力であるこ とがわかっています。 変更後の SystemGenerator モデルでは、 2 つの XOR ブロ ッ クに Z-1 と表示されており、新しいレイテンシが示され

ています。

このデザインを先ほどと同様に生成し、 遅いパスを検証します。

System Generator for DSP ユーザー ガイド japan.xilinx.com 341リ リース 10.1.2 2008 年 6 月

Page 342: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

すべてのパスでタイ ミ ングが満たされました。 デザインは、 コス トのかかるデバイスに移行するこ

となく、 短時間で修正できました。

すべてのパスのロジッ ク レベル数が 1 になっています。 ど ういう構造になっているかを、 SynplifyPro の回路図で確認してみます。

2 つのロジッ ク レベルの間に、 レジスタ (赤色) が追加されています。 回路は修正前と同様に機能し

ますが、 1 サイクルのレイテンシが追加されています。

リ タイ ミングを使用したデザインの向上

レイテンシを元のデザインと同じにする必要がある場合は、 後の出力レジスタまたは入力レジス

タを削除する こ とでこれを達成できる可能性があ り ます。 これは、 ザイ リ ンク ス チップ外のパス

(PCB の銅線パス) の制約を増加させるこ とにな り ますが、 ボード レベルにパス遅延によっては実

現可能です。 これはリ タイ ミ ングの例であ り、 レイテンシは同じままレジスタを移動します。

コンパイル ターゲッ トの作成

System Generator でデザインをハード ウェアにコンパイルする際に生成される HDL ファ イルと

ネッ ト リ ス ト ファ イルから、 使用する FPGA に適したコンフ ィギュレーシ ョ ン ビッ ト ス ト リーム

ファ イルを生成するには、 追加のツールを実行する必要があ り ます。 通常は、 FPGA コンフ ィギュ

レーシ ョ ン ファ イルを生成するのに Project Navigator を使用しますが、 ほかの方法もあ り ます。 たとえば、 デザインをコンパイルする際にコンフ ィギュレーシ ョ ン ファ イルを生成するのに必要な

ツールが自動的に実行される よ う に、 System Generator を設定でき ます。 このよ う にする と、

System Generator からビッ ト ス ト リームの生成までを実行できるので便利です。 また、 コンフ ィ

ギュレーシ ョ ン ファ イルが作成された後、 別のツール (ChipScope Pro Analyzer、 iMPACT など)を実行するよ う設定するこ と もできます。

System Generator でモデルをハード ウェアにコンパイルする方法は、選択したコンパイル ターゲッ

トによって異なり ます。 も頻繁に使用されるのは [HDL Netlist] で、デザインの HDL ネッ ト リ ス

ト と コアが生成されます。 この設定を拡張して、 生成された HDL ネッ ト リ ス ト ファ イルに追加の

ツールを実行する新しいコンパイル ターゲッ ト を作成できます。

parity_reg_3123b0b42f

parity_reg

xor_2a_8d6908ffef

xor_2a

xor_2b_f0fd230c1d

xor_2b

xor_3a_7e73f4292b

xor_3a

1.18,-0.06LUT2_L_6

y[0]

1.18,0.45LUT4_L_6996

fully_2_1_bit[0]

1.18,0.45LUT4_L_6996

fully_2_1_bit[0]

1.43,-0.06

FD

op_mem_19_20_0_

0.35,-0.06

FD

latency_pipe_5_26_0_

0.35,-0.06

FD

latency_pipe_5_26_0_

0.98,-0.06

0.98,-0.06

1.18,-0.06

1.18,0.45 DC 0.35,-0.06Q

0.98,0.45

0.98,0.45

0.98,0.45

0.98,0.45

1.18,0.45

1.18,0.45 DC 0.35,-0.06Q

0.98,0.45

0.98,0.45

0.98,0.45

0.98,0.45

1.18,0.45

1.43,-0.06 DC Q

342 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 343: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

コンパイル ターゲッ トの作成R

このセクシ ョ ンでは、 [HDL Netlist] ターゲッ ト を拡張して、 FPGA ハード ウェアの生成およびコ

ンフ ィギュレーシ ョ ンを実行する新規コンパイル ターゲッ ト を作成する方法を示します。 具体的に

は、 モデルのビッ ト ス ト リームを生成し、 そのビッ ト ス ト リームに対してさまざまなツールを実行

するよ う System Generator を設定します。

新規コンパイル ターゲッ トの定義

[HDL Netlist] 設定で生成される出力ファイルに対してツールを実行する新規コンパイル ターゲッ

ト を作成します。 コンパイル ターゲッ トは、 2 つ以上の MATLAB 関数で定義されます。 初の関

数 xltarget.m は、 ターゲッ ト を System Generator トークンのパラ メータ ダイアログ ボッ クスで選

択できるよ うにし、 ターゲッ トに関する詳細情報が含まれる MATLAB 関数を指定します。 この関

数は、 target info 関数と呼ばれます。 ターゲッ トに関する情報を定義するこの target info 関数には、

任意の名前を付ける こ とができますが、 xltarget.m 関数で正し く指定する必要があ り ます。 targetinfo 関数で、post-generation 関数が定義されている場合があ り ます。 この関数は、通常の HDL ネッ

ト リ ス ト コンパイルが終了した後にツールまたはスク リプ ト を実行します。 次に、 これらの関数の

詳細を説明します。

xltarget 関数

xltarget 関数は、System Generator でサポートする必要のある 1 つ以上のコンパイル ターゲッ ト を

指定します。 ターゲッ トに関する詳細情報の場所も指定します。

メモ : System Generator では、System Generator のインスト ール ディ レク ト リ の plugins\compilationおよびそのサブディ レク ト リ から xltarget.m ファ イルを検索して、 サポート されているコンパイル

ターゲッ ト を判断します。

xltarget 関数では複数のターゲッ ト を指定できますが、各コンパイル ターゲッ トにそれぞれ xltarget関数を指定するのが一般的です。 これらの関数が保存されるディ レク ト リによ り、 ターゲッ トが区

別されます。 これは、各 xltarget.m ファ イルを plugins\compilation ディ レク ト リの下に配置した独

自のサブディ レク ト リに保存する必要があ り ます。

xltarget 関数は、 ターゲッ ト情報のセル配列を返します。 このセル配列の各要素は、異なるコンパイ

ル ターゲッ ト を定義します。 これらの要素は、 次の 2 つのパラ メータを定義する MATLAB structです。

1. System Generator トークンのパラ メータ ダイアログ ボッ クスの [Compilation] に表示される

コンパイル ターゲッ トの名前

System Generator for DSP ユーザー ガイド japan.xilinx.com 343リ リース 10.1.2 2008 年 6 月

Page 344: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

2. ターゲッ ト に関する詳細情報 (System Generator ト ークンのパラメ ータ、使用する post-generation関数など ) を見つけるために起動する MATLAB 関数の名前

次のコードは、 Standalone Bitstream、 MPACT、 ChipScope Pro Analyzer とい う 3 つのコンパイル

ターゲッ ト を定義する例を示します。

function s = xltarget s = {}; target_1.('name') = 'Standalone Bitstream'; target_1.('target_info') = 'xltools_target'; target_2.('name') = 'iMPACT'; target_2.('target_info') = 'xltools_target'; target_3.('name') = 'ChipScope Pro Analyzer'; target_3.('target_info') = 'xltools_target'; s = {target_1, target_2, target_3};

上記のコードの name フ ィールドは、 System Generator トークンのパラ メータ ダイアログ ボッ ク

スの [Compilation] に表示されるコンパイル ターゲッ トの名前を指定します。

target_1.('name') = 'Standalone Bitstream';

target_info フ ィールドは、 ターゲッ トに関する情報を見つけるために呼び出す target info 関数を指

定します。 この関数には、 任意の名前を付けるこ とができますが、 対応する xltarget.m ファ イルと

同じディ レク ト リか、 MATLAB パスに保存する必要があ り ます。

target_1.('target_info') = 'xltools_target';

メモ : xltarget 関数のサンプル ファ イルが、 <path_to_sysgen>\examples\comp_targets ディ レク ト

リにあ り ます。 この関数を変更して、 ビッ ト ス ト リームに関するコンパイル ターゲッ ト を定義でき

ます。

target info 関数

上記のコードで target_info フ ィールドで指定される target info 関数には、 次の 2 つの役割があ り

ます。

• System Generator トークンのデフォルト設定と選択可能な設定を定義します。

• 標準のコード生成プロセスの前後で呼び出す必要のある関数を指定します。

メモ : target info 関数、 xltools_target.m ファ イルのサンプル ファ イルが、 <path_to_sysgen>\examples\comp_targets ディレク ト リにあ り ます。

これらの関数の 1 つに、 post-generation 関数があ り ます。 post-generation 関数は、 標準のコード生

成の後に実行されます。 次のコードは、 target info 関数で post-generation 関数を指定する方法を示

します。

settings.('postgeneration_fcn') = 'xltools_postgeneration';

post-generation 関数

System Generator でのコンパイルを拡張するには、post-generation 関数を指定するコンパイルを定

義します。 post-generation 関数は、 HDL ファ イルおよびネッ ト リ ス ト ファ イルを生成した後にこ

れらのフ ァ イルを処理する方法を指定する MATLAB 関数です。 この関数は、 [Compilation] を[HDL Netlist] に設定したと きに System Generator で実行される通常のコード生成プロセスが終了

した後に実行されます。 たとえば、 ハードウェア協調シ ミ ュレーシ ョ ン ターゲッ トでは、 Simulinkシ ミ ュ レーシ ョ ンで使用可能なハード ウ ェアを生成するために必要なツールを実行する post-generation 関数を定義します。

344 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 345: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

コンパイル ターゲッ トの作成R

メモ : xlBitstreamPostGeneration.m および xltools_postgeneration.m とい う 2 つの post-generation関数が、 <path_to_sysgen>examples/comp_targets ディ レク ト リにあ り ます。

xlBitstreamPostGeneration.m

この post-generation 関数の例は、 モデルを System Generator トークンのパラ メータ ダイアログ

ボッ クスで指定した設定 (FPGA デバイス、 ク ロ ッ ク周波数、 ク ロ ッ ク ピン ロケーシ ョ ンなど) に適したコンフ ィギュレーシ ョ ン ビッ ト ス ト リームにコンパイルします。

この関数では、 XFLOW を使用して FPGA コンフ ィギュレーシ ョ ン ビッ ト ス ト リームを生成する

のに必要なザイ リ ンクス ツールを実行します。

XFLOW で実行する各ツールの設定を指定できます。 この方法の詳細は、 「XFLOW の使用」 を参

照してください。

xltools_postgeneration.m

コンフ ィギュレーシ ョ ン ビッ ト ス ト リームを生成した後、FPGA をコンフ ィギュレーシ ョ ンし、実

行する ツール (iMPACT、 ChipScope Pro Analyzer など) を実行する場合があ り ます。

xltools_postgeneration 関数は、 まず xlBitstreamGeneration 関数を呼び出してビッ ト ス ト リームを

生成し、 選択したコンパイル ターゲッ トに応じて適切なツールを実行します。

たとえば、 ビッ ト ス ト リームの生成後に iMPACT を実行するコンパイル ターゲッ ト を作成する場

合、 次のコードを使用します (iMPACT がシステム パスにある場合)。

if (strcmp(params.compilation, 'iMPACT')) dos('impact');

end;

初の行はコンパイル ターゲッ トの名前をチェッ ク し、 2 番目の行は iMPACT を起動する DOS コマンドを指定します。 ChipScope Pro Analyzer も、 同様に起動できます。

if (strcmp(params.compilation, 'ChipScope Pro Analyzer')) xlCallChipScopeAnalyzer;

end;

メモ : xlCallChipScopeAnalyzer は、ChipScope を起動するために System Generator で提供されて

いる MATLAB 関数です。

コンパイル ターゲッ トの設定とインス トール

次に、 ビッ ト ス ト リームを生成する新規コンパイル ターゲッ ト を設定し、 インス トールする手順を

示します。

1. examples\comp_targets ディ レク ト リ から xltarget.m、xltools_postgeneration.m、xltools_target.mファ イルを一時ディ レク ト リ にコピーします。

2. 上記のファイルの権限を変更して、 編集できるよ うにします。

3. xltarget.m ファ イルにコンパイル ターゲッ ト (iMPACT、ChipScope Analyzer Pro など) を追加

します。

4. xltools_postgeneration.m ファ イルに、 ツールの起動コードを追加します。

5. plugins\compilation ディ レク ト リに新規ディ レク ト リ (Bitstream など) を作成します。 この

ディ レク ト リに、 xltarget.m、 xltools_postgeneration.m、 xltools_target.m ファ イルをコピーし

ます。

System Generator for DSP ユーザー ガイド japan.xilinx.com 345リ リース 10.1.2 2008 年 6 月

Page 346: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

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

メモ : System Generator トークンのパラ メータ ダイアログ ボッ クスにある [Compilation] のサブメ

ニューは、 plugins\compilation ディ レ ク ト リ のディ レ ク ト リ構造を反映しています。 コンパイル

ターゲッ トの新しいディ レク ト リ を作成する と、 その名前が [Compilation] のサブメニューに表示

されます。

6. examples\comp_targets ディ レク ト リから xlBitstreamPostGeneration.m、 xlToolsMakebit.pl、balanced_xltools.opt、 および bitgen_xltools.opt ファ イルを MATLAB パスのディ レク ト リに

コピーします。 これらのファイルは、 共通のディ レク ト リに配置する必要があ り ます。

7. MATLAB の [Command Window] に、 次のよ うに入力します。

>> rehash toolboxcache>> xlrehash_xltarget_cache

8. これで、 System Generator トークンのパラ メータ ダイアログ ボッ クスの [Compilation] で新

しいコンパイル ターゲッ ト を選択できます。

XFLOW の使用

この例に含まれている post-generation 関数では、 FPGA のコンフ ィギュレーシ ョ ン ファ イルを生

成するのに XFLOW を使用します。 XFLOW は、 デザインの合成、 インプ リ メ ンテーシ ョ ン、 シ

ミ ュレーシ ョ ンをコマンド ラ インを使用して自動的に実行します。 実行するツールおよびその設定

は、 コマンド ファ イルで指定されます。

この例には、balanced_xltools.opt および bitgen_xltools.opt とい う 2 つの XFLOW オプシ ョ ン ファ

イルが含まれています。 これらのファイルは、それぞれ XFLOW のインプ リ メンテーシ ョ ン フロー

と コンフ ィギュレーシ ョ ン フローに関連付けられています。 balanced_xltools.opt は、 NGDBuild、MAP、 および PAR のオプシ ョ ンを指定し、 bitgen_xltools.opt は BitGen のオプシ ョ ンを指定しま

す。 これらのファイルは、 必要に応じて変更できます。

346 japan.xilinx.com System Generator for DSP ユーザー ガイ ド

リ リース 10.1.2 2008 年 6 月

Page 347: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

索引

AAddressable Shift Register ブロ ッ ク 17ADR ブロ ッ ク 17

CChipScope Pro Analyzer 125

DDCM リ セッ ト ピン 42DCM ロ ッ ク ピン 42DSP48

DSP48 ブロ ッ クを使用したマップ 101

設計手法 99, 103標準コンポーネン トにマップ 100物理設計 104ロジッ ク合成ツールを使用したマップ

100DSP48 Macro ブロ ッ ク 102

EEDK

System Generator でのサポート 144ソフ ト ウェア ド ラ イバの記述 142ソフ ト ウェア ド ラ イバの生成 141

EDK Export Tool 324pcore のエクスポート 147

EDK Import Wizard 145, 160EDK プロセッサ

インポート 144プロセッサ ポートの追加 146

[Expose Clock Ports] オプシ ョ ン

チュート リ アル 33

FFDATool

デジタル フ ィルタ アプ リ ケーシ ョ ン

での使用 106FPGA

概要 14高パフォーマンス FPGA に関する メモ

87ビッ ト ス ト リームの生成 92

FPGA ビッ ト ス ト リームの生成 92FSL ベース pcore 138

HHDL 協調シ ミ ュレーシ ョ ン

複数のブラ ッ ク ボッ クスの協調シ ミ ュ

レーシ ョ ン 284HDL テス トベンチ 49HDL ネッ ト リ ス ト生成用のコンパイル

320HDL ネッ ト リ ス トへのコンパイル 320HDL 協調シ ミ ュレーシ ョ ン

HDL シ ミ ュレータの設定 282概要 282

[Hybrid DCM-CE] オプシ ョ ン

チュー ト リ アル 28リ セッ ト ピン 27ロ ッ ク ピン 27

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

上位コンポーネン トの作成 263新規プラ ッ ト フォームのサポート

253新規ボード パッケージの検出 265プラ ッ ト フォームの情報の取得 260ボード サポート パッケージのインス

トール 264ボード サポート パッケージ ファイル

259ボード専用ポートの手動指定 262

JTAG ベースのハード ウェア協調シ ミ ュ

レーシ ョ ン 252

MM 関数

ブラ ッ ク ボッ クスのコンフ ィギュレー

シ ョ ン 270MATLAB

disp 関数 70FIR の例 65FPGA へのコンパイル 50MCode ブロ ッ クへパラ メータを渡す

56RPN カ リ キュレータ 68オプシ ョ ンの入力ポート 59単純なシフ ト操作 55単純な数値演算 52単純なセレクタ 50パラ メータ指定アキュムレータ 62有限ステート マシン 61

レイテンシのある複素乗算器 54MicroBlaze

System Generator でのチュート リ アル 154

システム設計とシ ミ ュレーシ ョ ン 158

ML402 ボード

JTAG ハード ウェア協調シ ミ ュレー

シ ョ ンのインス トール 252

NNGC ネッ ト リ ス トへのコンパイル 320

Ppcore

System Generator モデルをペリ フェラ

ルと してエクスポート 140エクスポート 147開発中と してエクスポート 325

pcore のエクスポート

カスタム バス インターフェイスのイ

ネーブル 326PicoBlaze

System Generator でのチュート リ アル 149

System Generator 内での設計 147概要 147

PLB ベース pcore 138Project Navigator

System Generator との統合フロー 72

SSBDBuilder

プラグイン ファイルの保存 258ボード専用 I/O ポートの指定 256

[Simulink system period] オプシ ョ ン 42Spartan-3A DSP 1800A スタータ プラ ッ ト

フォーム

イーサネッ ト ハード ウェア協調シ ミ ュ

レーシ ョ ン用にインス トール 240System Generator

コンフ ィギャブル サブシステム 81コンフ ィギャブル サブシステムからの

ハード ウェアの生成 85コンフ ィギャブル サブシステムからの

ブロ ッ クの削除 84コンフ ィギャブル サブシステムの使用

83

System Generator for DSP japan.xilinx.com 347リ リース 10.1.2 2008 年 6 月

Page 348: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

索引R

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

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

ロ ッ クの追加 84システム レベルのモデリ ング 20自動生成されたクロ ッ ク イネーブル

ロジッ クの リセッ ト 96出力ファ イル 43物理デザイン ツールでのデザインの処

理 89ブロ ッ クセッ ト 21

System Generator 制約

IOB タイ ミ ングと配置 45システム ク ロ ッ ク周期 45制約ファ イル 45複数サイ クル パス 45例 46

System Generator デザインのインポート

Project Navigator との統合フロー 72デザインの統合に関する規則 72手順の例 73

System Generator デザイン フロー

アルゴ リ ズムの解析 19大型デザインの一部と してインプ リ メ

ン ト 19完成したデザインのインプ リ メ ン ト

19System Generator トークン

コンパイルとシ ミ ュレーシ ョ ン 39

TTDM データ ス ト リーム 17TRACE レポート

タイ ミ ング解析 336

XXFLOW の使用 346xlCallChipScopeAnalyzer 345xlmax 50xlSimpleArith 52xltarget

新規コンパイル ターゲッ トの定義 343

xlTimingAnalysis 330xltools_postgeneration 344, 345xltools_target 344

アルゴ リ ズムの解析 19

イーサネッ ト ベースのハード ウェア協調シ

ミ ュレーシ ョ ン 240色分け表示

ブロ ッ クを信号レートに応じて 24インス トール

JTAG ハード ウェア協調シ ミ ュレー

シ ョ ン用の ML402 ボードのインス

トール 252ハード ウェア協調シ ミ ュレーシ ョ ン用

の Spartan-3A DSP 1800A スタータ プラ ッ ト フォーム 240

インプ リ メ ン ト

完成したデザイン 19デザインの一部 19

インポート

EDK プロジェ ク ト 140EDK プロセッサ 144System Generator デザイン 72

ウ ィザード

Base System Builder 167EDK Import 160EDK プロジェ ク トのインポート 145ブラ ッ ク ボッ クスのコンフ ィギュレー

シ ョ ン 269, 300

エクスポート

pcore 147System Generator モデルを pcore と し

て 140

オーバーサンプ リ ング 26

階層制御 43開発中

pcore を開発中と してエクスポート 325

概要

FPGA 14カスタム バス インターフェイス

pcore エクスポート用 326可変クロ ッ ク周波数

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

に選択 179

完全精度信号型 23

共有メモ リのコンパイル

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

共有メモ リのサポート

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

ク ロ ッ ク

タイ ミ ング 24同期 26非同期 26

ク ロ ッ ク イネーブル

ファンアウ トの低減 88ク ロ ッ ク供給オプシ ョ ン

[Clock Enables] 27[Expose Clock Ports] 28[Hybrid DCM-CE] 27, 42

ク ロ ッ ク周波数

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

に選択 179ク ロ ッ ク ド メ インの切り替え 115ク ロ ッ ク ド メ インの分割 115

コード生成

自動 38コンパイル

EDK Export Tool 324NGC ネッ ト リ ス ト生成 320タイ ミ ング解析 329ハード ウェア協調シ ミ ュレーシ ョ ン

328ビッ ト ス ト リームの生成 321

コンパイル、 MATLABdisp 関数 70FIR の例 65FPGA へのコンパイル 50MCode ブロ ッ クへパラ メータを渡す

56RPN カ リ キュレータ 68オプシ ョ ンの入力ポート 59シフ ト操作 55単純な数値演算 52単純なセレクタ 50パラ メータ指定アキュムレータ 62有限ステート マシン 61レイテンシのある複素乗算器 54

348 japan.xilinx.com System Generator for DSPリ リース 10.1.2 2008 年 6 月

Page 349: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

索引R

コンパイル ターゲッ トの作成 342コンパイル ターゲッ トの設定と インス トー

ル 345コンパイル タイプ

EDK Export Tool 324HDL ネッ ト リ ス トへのコンパイル

320NGC ネッ ト リ ス トへのコンパイル

320XFLOW の使用 346コンパイル ターゲッ トの設定と インス

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

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

のコンパイル 328ビッ ト ス ト リームへのコンパイル

321コンフ ィギャブル サブシステムと System

Generator 81

サイ クル精度 21サイ クル単位ク ロ ッ ク アイランド 113サイ クル単位のモデリ ング 24ザイ リ ンクス

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

ザイ リ ンクス ツール フローの設定

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

システム レベルのモデリ ング 20自動コード生成 38自動生成されたクロ ッ ク イネーブル ロジッ

リセッ ト 96時分割多重 17出力ファ イル

System Generator で生成 43新規コンパイル ターゲッ トの定義 343

target info 関数

xltools_target 344xltarget 関数 343

信号型 23Gateway ブロ ッ ク 23完全精度 23データ型の表示 24ユーザー指定の精度 23

制御

階層 43生成

EDK ソフ ト ウェア ド ラ イバ 141FPGA ビッ ト ス ト リーム 92

制約ファ イル

System Generator 45

タイ ミ ング解析

TRACE レポート 336以前に生成されたデータの表示 330遅いパスの表示 331概要 330下位レベル名の表示 332ク ロスプローブ 333ク ロ ッ ク スキューとジッ タ 331コンパイル タイプ 329周期と スラ ッ ク 330タイ ミ ングを満たしていないパスの向

上 336チュート リ アル 338統計 335パス解析の例 330ヒ ス ト グラム 334, 336

タイ ミ ングと ク ロ ッ ク 24タ ップ遅延ライン 17

チュート リ アル

ク ロ ッ ク供給

[Expose Clock Ports] オプシ ョ ン

の使用 33デジタル ク ロ ッ ク マネージャ

(DCM) を使用 28ブラ ッ ク ボッ クス

CORE Generator モジュールのイ

ンポート 286Verilog モジュールのインポート

307VHDL モジュールのインポート

299ダイナミ ッ ク ブラ ッ ク ボッ クス

308複数のブラ ッ ク ボッ クスの同時

シ ミ ュレーシ ョ ン 310ブラ ッ ク ボッ クスの HDL 要件を

満たす VHDL ラ ッパが必要な CORE Generator モジュールの

インポート 292タイ ミ ング解析 338

ハード ウェア/ソフ ト ウェア協調設計

MicroBlaze プロセッサ システム

の設計とシ ミ ュレーシ ョ ン 158

System Generator で MicroBlaze ペリ フェラルを作成 154

System Generator で PicoBlaze を使用 149

新規 XPS プロジェク トの作成 167

低減

ク ロ ッ ク イネーブルのファンアウ ト 88

テス トベンチ

HDL 49デバッグ

ChipScope Pro を使用 125

同期化のメカニズム

不定データ 36有効なポート 36

同期クロ ッ ク 26[Clock Enables] オプシ ョ ン 27[Expose Clock Ports] オプシ ョ ン 28[Hybrid DCM-CE] オプシ ョ ン 27, 42

ネッ ト リ ス ト生成

複数クロ ッ ク デザイン 117ネッ ト ワーク ベースのイーサネッ ト ハード

ウェア協調シ ミ ュレーシ ョ ン 187

ハード ウェア

オーバーサンプ リ ング 26ハード ウェア協調シ ミ ュレーシ ョ ン 175

JTAG ハード ウェア要件 253共有 FIFO の協調シ ミ ュレーシ ョ ン

197共有メモ リのコンパイル 190共有メモ リのサポート 189共有メモ リの制限 199共有レジスタの協調シ ミ ュレーシ ョ ン

195ク ロ ッ ク周波数の選択 179コードの生成 176コンパイル ターゲッ トの選択 176

System Generator for DSP japan.xilinx.com 349リ リース 10.1.2 2008 年 6 月

Page 350: System Generator for DSP ユーザー ガイド...System Generator for DSP ユーザー ガイド japan.xilinx.com 9 リリース 10.1.2 2008 年 6 月 R このマニュアルについて

索引R

ザイ リ ンクス ツール フローの設定 199

ネッ ト ワーク ベースのイーサネッ ト 187

非保護の共有メモ リの協調シ ミ ュレー

シ ョ ン 193フレーム ベースのシ ミ ュレーシ ョ ン

201プロセッサの統合 141ブロ ッ ク 178ポイン ト ツーポイン ト イーサネッ ト

184リ アルタイム信号処理に使用 213ロ ッ ク共有メモ リの協調シ ミ ュレー

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

ンパイル 328ハード ウェア生成モード

EDK pcore 140HDL ネッ ト リ ス ト 140

ハード ウェア/ソフ ト ウェア協調設計 137例

EDK を使用 167MicroBlaze プロセッサ システム

の設計とシ ミ ュレーシ ョ ン 158

System Generator で MicroBlaze ペリ フェラルを作成 154

System Generator で PicoBlaze を使用 149

ハード ウェア デバッグ

ChipScope Pro を使用 125ハード ウェアの生成 140パラ メータの伝搬 37

ヒ ス ト グラム

タイ ミ ング解析ツール 334, 336ビッ ト ス ト リームへのコンパイル 321ビッ ト精度 21ビッ ト単位のモデリ ング 24非同期ク ロ ッ ク 26

ファンアウ トの低減

ク ロ ッ ク イネーブル 88複数クロ ッ ク アプリ ケーシ ョ ン 114複数のク ロ ッ ク

複数のサイ クル単位アイランドの生成 113

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

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

M 関数 270ブラ ッ ク ボッ クス

HDL 協調シ ミ ュレーシ ョ ン

HDL シ ミ ュレータの設定 282概要 282複数のブラ ッ ク ボッ クスの協調

シ ミ ュレーシ ョ ン 284コンフ ィギュレーシ ョ ン M 関数

SysgenBlockDescriptor のメ ソ ッ

ド 278SysgenBlockDescriptor メ ンバー

変数 277SysgenPortDescriptor のメ ソ ッ ド

281SysgenPortDescriptor メ ンバー変

数 280Verilog パラ メータの指定 276VHDL ジェネ リ ッ クの指定 276エラーのチェッ ク 277組み合わせパス 276言語選択 271

上位エンティティの指定 271新規ポートの追加 272ダイナミ ッ ク出力ポート 274ブラ ッ ク ボッ クスの API 277ブラ ッ ク ボッ クスのクロ ッ ク

275ポート オブジェク トの取得 273ポート タイプの設定 273ポートのサンプ リ ング レートの

設定 274ブロ ッ ク ポートの定義 272

例 284CORE Generator モジュールのイ

ンポート 285, 286ModelSim を使用したアドバンス

ブラ ッ ク ボッ クス 312Verilog モジュールのインポート

306VHDL モジュールのインポート

299ダイナミ ッ ク ブラ ッ ク ボッ クス

308複数のブラ ッ ク ボッ クスの同時

シ ミ ュレーシ ョ ン 310ブラ ッ ク ボッ クスの HDL 要件を

満たす VHDL ラ ッパが必要な CORE Generator モジュールの

インポート 292フレーム ベースのシ ミ ュレーシ ョ ン

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

プロセッサの統合

カスタム ロジッ ク 138ハード ウェア協調シ ミ ュレーシ ョ ン

141ハード ウェアの生成 140

メモ リ マップの作成 139ブロ ッ クセッ ト

ザイ リ ンクス 22ブロ ッ ク マスク 36

ポイン ト ツーポイン ト イーサネッ ト ハード

ウェア協調シ ミ ュレーシ ョ ン 184

マルチレート デザイン

信号レートに応じた色分け表示 24マルチレート モデル 25

メモ

高パフォーマンス FPGA デザイン 87メモ リ マップの作成

プロセッサの統合 139

モデリ ング

ビッ ト単位およびサイ クル単位 24

リ アルタイム信号処理

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

離散時間システム 24リ セッ ト ピン

[Hybrid DCM-CE] オプシ ョ ン 27リ ソースの予測 38リ ファレンス ブロ ッ クセッ ト

ザイ リ ンクス 22

レート変換ブロ ッ ク 25

ロ ッ ク ピン

[Hybrid DCM-CE] オプシ ョ ン 27

350 japan.xilinx.com System Generator for DSPリ リース 10.1.2 2008 年 6 月