02.08.2013 Views

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

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

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>System</strong> <strong>Generator</strong><br />

<strong>for</strong> <strong>DSP</strong><br />

<strong>リファレンス</strong> <strong>ガイド</strong><br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>Xilinx</strong> (以下 「ザ イ リ ン ク ス」 と いいます) では、 ザイ リ ン ク ス FPGA におけ るデザ イ ンの開発目的のみに こ の文書を開示し ま<br />

す。 こ の文書に明記 さ れてい る場合を除き、 電子、 機械、 複写、 録音を含め、 いかな る形態ま たは手段において も、 ザ イ リ ン<br />

ク スの書面に よ る事前の許可な く 資料を コ ピー、 複製、 配布、 再発行、 ダ ウ ン ロー ド 、 表示、 掲載、 転送する こ と はで き ませ<br />

ん。 こ の文書に含まれてい る資料を許可な く 使用する と 、 著作権法、 商標法、 秘密保護 と 公示の法律、 通信規定 と 法規の違反<br />

と な る可能性があ り ます。<br />

ザ イ リ ン ク スでは、 こ の文書の適用および使用に よ り 生じ る損害の責任を一切負いません。 また、 こ こ に明記さ れてい る場合<br />

を除き、 こ の法定通知のいずれの部分も、 黙示、 禁反言、 その他の法律論理に よ る特許、 商標、 著作権、 その他の知的資産権<br />

の ラ イ セン スや権利の付与 と は見な さ れません。 こ の文書の内容の使用および実施に必要ないかな る権利の取得も ユーザー個<br />

人の責任 と な り ます。 文書中のエ ラ ーの訂正や、 ユーザーに提供 さ れる エンジニア リ ン グの ソ フ ト ウ ェ ア サポー ト およびヘル<br />

プの正確性や正当性については責任を負いかねます。 ま た、 文書を ア ッ プデー ト する確約も いた し ません。 ザ イ リ ン ク スは こ<br />

れ ら の条件および条項を独自の判断に よ っ て変更する権利を有し ます。<br />

こ の文書は 「現状のま ま」 で提供され、 ユーザーは自己責任で こ の文書を使用する こ と に同意し た も の と みな さ れます。 ザ イ<br />

リ ン ク ス、 ザ イ リ ン ク スの従業員、 およびザ イ リ ン ク スの販売特約店の従業員に よ る その他の口頭または書面に よ る いかな る<br />

情報、 ア ド バイ ス等に よ っ て も、 新たな内容の保証が創設さ れた り 上記の制限保証の範囲を拡大させた り する も のではあ り ま<br />

せん。 ザ イ リ ン ク スでは、 特許や著作権その他の知的資産権の不侵害、 商品性、 および特定目的への適合性は明示黙示を問わ<br />

ず保証いた し ません。<br />

ザ イ リ ン ク スでは、 文書の使用または使用不能の結果生じ た間接的、 懲罰的、 特別、 または付随的ないかな る損害 (利益の損<br />

失、 業務の中断、 交換品の費用、 情報の消失や破損を含む) については、 その可能性を事前に通告 さ れていた場合で も 一切責<br />

任を負いません。 ユーザーに対するザ イ リ ン ク スの損害賠償責任総額は、 いかな る場合に も ユーザーがザ イ リ ン ク スに支払っ<br />

た文書の代金を上限 と し ます。 た と えいかな る救済手段も その実質的目的を達せない場合で も、 上記の制限責任および免責条<br />

項が法律上最大限認め られる限度で適用されます。<br />

こ の文書は、安全装置が必要 と な る よ う な危険な環境でのオン ラ イ ン制御装置 と し ての使用を目的に し た も のではあ り ません。<br />

原子力施設、 航空機操縦 ・ 通信シ ス テム、 航空管制、 生命維持装置、 武器の作動 ・ 運転等 (以下高 リ ス ク 行為 と し ます)、 安全<br />

装置が必要 と な る よ う な危険な環境でのオン ラ イ ン制御装置 と し ての使用、 再販売を意図し ての設計 ・ 製造または停止 ・ 誤作<br />

動対策措置がな さ れた も のではあ り ません。 ザ イ リ ン ク スは、 高 リ ス ク 行為用途への適性に関する明示的 ・ 黙示的を問わず一<br />

切の保証を、 こ こ に明確に排除し ます。<br />

Copyright © 2002-2007 <strong>Xilinx</strong>, Inc. All Rights Reserved. 本文書に記載されてい る 「<strong>Xilinx</strong>」、 ザ イ リ ン ク スのロ ゴ、 およびザ<br />

イ リ ン ク スが所有する製品名等は、 米国 <strong>Xilinx</strong> Inc. の米国におけ る登録商標です。 その他に記載さ れてい る会社名および製品<br />

名等は、 各社の商標ま たは登録商標です。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com リリース 9.2.00 2007 年 8 月<br />

R


目次<br />

このマニュアルについて<br />

マニュアルの内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

<strong>System</strong> <strong>Generator</strong> の PDF マニュアル セッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

その他の リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

表記規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

書体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

オンライン マニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

第 1 章 : ザイ リンクス ブロックセッ ト<br />

ブロッ クセッ ト ライブラリの構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

Basic Elements ブロック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

Communication ブロッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

Control Logic ブロッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

Data Types ブロッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

<strong>DSP</strong> ブロック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

Index ブロッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

Math ブロッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

Memory ブロッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

Shared Memory ブロック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />

Tools ブロッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

ブロッ クのパラメータ ダイアログ ボックスの共通オプション . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

[Precision] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

[Type] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

[Number of bits] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

[Binary point] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

[Overflow] と [Quantization] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />

[Latency] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

[Override with doubles] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

[Provide synchronous reset port] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

[Provide enable port] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

[Sample Period] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

[Use behavioral HDL (otherwise use core)] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

[Use core placement in<strong>for</strong>mation] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />

[Placement] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />

[FPGA Area (slices, FFs, BRAMs, LUTs, IOBs, emb. mults, TBUFs)] /<br />

[Use area above <strong>for</strong> estimation] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />

ブロッ クのリ ファレンス ページ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />

Accumulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド japan.xilinx.com 3<br />

リリース 9.2.00 2007 年 8 月


R<br />

Addressable Shift Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

AddSub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

Assert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

Assert ブ ロ ッ ク を使用し たレー ト およびデータ型の改善方法 . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

BitBasher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

サポー ト される Verilog 構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

Black Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62<br />

ブラック ボックスの HDL 要件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62<br />

Black Box ブロックのコンフィギュレーショ ン ウ ィザード . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

Black Box ブロックのコンフィギュレーショ ン M 関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

サンプル周期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

HDL 協調シ ミ ュ レーシ ョ ンのためのデータ型変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

ChipScope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

ハー ド ウ ェ ア と ソ フ ト ウ ェ ア条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71<br />

ChipScope プロジェク ト ファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72<br />

ChipScope から MATLAB ワーク スペースへのデータのインポー ト . . . . . . . . . . . . . . . . . . 72<br />

既知の問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />

詳細情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />

Clock Enable Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />

Clock Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76<br />

CMult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

Concat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />

Configurable Subsystem Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />

Constant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />

付録 : <strong>DSP</strong>48 の制御命令形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />

Convert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />

Convolutional Encoder v3_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

4 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

目次


目次<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />

Convolutional Encoder v6_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

ブロック パラ メータ ダイアログ ボックス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />

Counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

DAFIR v9_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />

係数の リ ロー ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

係数の リ ロー ド 用のオプシ ョ ン ポー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

ブロック パラ メータ ダイアログ ボックス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95<br />

DDS Compiler v1_1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

DDS Compiler v2_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

DDS v4_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105<br />

DDS v5_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106<br />

ブロック ポー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108<br />

Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

ビヘイビア レベルの HDL を使用したロジッ ク合成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110<br />

構造レベルの HDL を使用したロジッ ク合成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110<br />

大きい遅延のインプリ メン ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112<br />

リ セ ッ ト 可能な遅延 と 初期値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113<br />

Depuncture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

Disregard Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br />

Down Sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117<br />

レイテンシ 0 の場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

レイテンシがある場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド japan.xilinx.com 5<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

<strong>DSP</strong>48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

<strong>DSP</strong>48 Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br />

<strong>DSP</strong>48 Macro ブロックの opmode の入力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124<br />

パイプライン オプシ ョ ンの入力 と カ ス タ ム パイプライン オプシ ョ ンの変更 . . . . . . . . . . 131<br />

<strong>DSP</strong>48 Macro の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132<br />

<strong>DSP</strong>48A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135<br />

<strong>DSP</strong>48E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br />

Dual Port RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145<br />

EDK Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147<br />

メモリ マップ インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147<br />

既知の問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149<br />

MicroBlaze プロセッサのオンライン マニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149<br />

Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150<br />

FDATool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151<br />

使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151<br />

FDATool のインターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151<br />

FFT v1_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153<br />

Cooley-Tukey 型アルゴ リ ズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154<br />

ブロックのタイ ミング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155<br />

FFT v3_1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157<br />

Cooley-Tukey 型アルゴ リ ズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160<br />

ブロックのタイ ミング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161<br />

FFT v3_2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

Cooley-Tukey 型アルゴ リ ズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

6 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

目次


目次<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164<br />

ブロックのタイ ミング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166<br />

FFT v4_1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167<br />

Cooley-Tukey 型アルゴ リ ズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169<br />

ブロックのタイ ミング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171<br />

FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

FIR Compiler v1_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176<br />

既知の問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176<br />

FIR Compiler v2_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181<br />

既知の問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181<br />

FIR Compiler v3_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182<br />

係数の リ ロー ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186<br />

既知の問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187<br />

FIR Compiler v3_1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188<br />

係数の リ ロー ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193<br />

既知の問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193<br />

From FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195<br />

From Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196<br />

クロック ドメインの切り替え . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197<br />

Gateway In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198<br />

Gateway ブロッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198<br />

Gateway Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド japan.xilinx.com 7<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Gateway ブロッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200<br />

Indeterminate Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202<br />

Interleaver Deinterleaver v4_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205<br />

Interleaver Deinterleaver v5_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208<br />

Inverter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209<br />

JTAG Co-Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210<br />

LFSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212<br />

Logical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214<br />

MCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215<br />

MCode ブロックのコンフィギュレーショ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215<br />

MATLAB 言語のサポー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216<br />

ブロック パラ メータ ダイアログ ボックス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235<br />

MicroBlaze Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

MicroBlaze ソフトウェアの問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241<br />

既知の問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243<br />

MicroBlaze プロセッサのオンライン マニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244<br />

ModelSim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<br />

タイム スケール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247<br />

Mult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250<br />

Multiple Subsystem <strong>Generator</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

デザイ ンの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

複数ク ロ ッ ク のサポー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254<br />

生成フ ァ イ ル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255<br />

Mux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256<br />

Negate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257<br />

8 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

目次


目次<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257<br />

Network-based Ethernet Co-Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259<br />

Opmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261<br />

<strong>DSP</strong>48 の制御命令形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261<br />

<strong>DSP</strong>48E の制御命令形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262<br />

Parallel to Serial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263<br />

Pause Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264<br />

PicoBlaze Instruction Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265<br />

PicoBlaze Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266<br />

PicoBlaze アセンブ ラ の使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />

既知の問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />

PicoBlaze Microprocessor のオン ラ イン マニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267<br />

Point-to-point Ethernet Co-Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269<br />

Puncture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270<br />

Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

Reinterpret . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273<br />

Relational . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274<br />

Resource Estimator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275<br />

リ ソ ース概算の実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276<br />

Resource Estimation ブロックでサポート されるブロック . . . . . . . . . . . . . . . . . . . . . . . . . . 276<br />

既知の問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277<br />

ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド japan.xilinx.com 9<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

RS Decoder v5_1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284<br />

RS Decoder v6_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288<br />

RS Encoder v5_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292<br />

RS Encoder v6_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296<br />

Sample Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297<br />

Scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298<br />

Serial to Parallel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299<br />

Shared Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303<br />

Shared Memory Read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304<br />

FIFO のトランザクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304<br />

ロック可能なメモリのトランザクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305<br />

Shared Memory Write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306<br />

FIFO のトランザクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306<br />

ロック可能なメモリのトランザクション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307<br />

Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308<br />

Simulation Multiplexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309<br />

シ ミ ュ レーシ ョ ンにサブシステム、 ハード ウ ェアにブラ ッ クボッ ク スを使用する場合 . . . 309<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310<br />

SineCosine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311<br />

10 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

目次


目次<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312<br />

Single Port RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313<br />

書き込みモー ド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315<br />

ハー ド ウ ェ アの注意点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316<br />

Single-Step Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319<br />

Slice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320<br />

<strong>System</strong> <strong>Generator</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321<br />

Threshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326<br />

Time Division Demultiplexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328<br />

Time Division Multiplexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329<br />

To FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331<br />

To Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332<br />

クロック ドメインの切り替え . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333<br />

Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334<br />

ツールバー メニュー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335<br />

<strong>リファレンス</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336<br />

Up Sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338<br />

Viterbi Decoder v5_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341<br />

Viterbi Decoder v6_0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド japan.xilinx.com 11<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343<br />

ザイ リ ンクス LogiCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344<br />

WaveScope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345<br />

クイック チュート リ アル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348<br />

<strong>Xilinx</strong> LogiCORE のバージ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356<br />

第 2 章 : ザイ リンクス <strong>リファレンス</strong> ブロックセッ ト<br />

通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361<br />

制御ロ ジ ッ ク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361<br />

<strong>DSP</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361<br />

画像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362<br />

演算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362<br />

2 Channel Decimate by 2 MAC FIR Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363<br />

2n+1-tap Linear Phase MAC FIR Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364<br />

2n-tap Linear Phase MAC FIR Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365<br />

2n-tap MAC FIR Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366<br />

4-channel 8-tap Transpose FIR Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367<br />

4n-tap MAC FIR Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368<br />

5x5Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370<br />

BPSK AWGN Channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371<br />

CIC Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373<br />

Convolutional Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374<br />

インプリ メンテーション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374<br />

ブロック インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375<br />

CORDIC ATAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376<br />

12 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

目次


目次<br />

CORDIC DIVIDER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377<br />

CORDIC LOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379<br />

CORDIC SINCOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380<br />

CORDIC SQRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382<br />

Dual Port Memory Interpolation MAC FIR Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383<br />

Interpolation Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384<br />

m-channel n-tap Transpose FIR Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385<br />

Mealy State Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388<br />

Moore State Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391<br />

Multipath Fading Channel Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392<br />

概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392<br />

インプリ メンテーション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393<br />

関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394<br />

データ形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395<br />

入力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396<br />

出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396<br />

タイミング制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397<br />

初期化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397<br />

デモン ス ト レーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397<br />

ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398<br />

n-tap Dual Port Memory MAC FIR Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399<br />

n-tap MAC FIR Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400<br />

Registered Mealy State Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド japan.xilinx.com 13<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403<br />

Registered Moore State Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406<br />

Virtex Line Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407<br />

Virtex2 Line Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408<br />

Virtex2 5 Line Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409<br />

White Gaussian Noise <strong>Generator</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410<br />

4 ビット Leap-Forward LFSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410<br />

Box-Muller 法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411<br />

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411<br />

第 3 章 : ザイ リンクス Xtreme<strong>DSP</strong> キッ ト ブロックセッ ト<br />

Xtreme<strong>DSP</strong> ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414<br />

データ シー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414<br />

Xtreme<strong>DSP</strong> Co-simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415<br />

Xtreme<strong>DSP</strong> DAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417<br />

データ シー ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417<br />

Xtreme<strong>DSP</strong> External RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418<br />

Xtreme<strong>DSP</strong> LED Flasher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419<br />

ブロック パラ メータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419<br />

第 4 章 : <strong>System</strong> <strong>Generator</strong> ユーテ ィ リ テ ィ<br />

xlAddTerms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424<br />

メモ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425<br />

xlfda_denominator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426<br />

xlfda_numerator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427<br />

14 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

目次


目次<br />

xlGenerateButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428<br />

xlgetparam および xlsetparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429<br />

xlgetparams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430<br />

xlInstallPlugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431<br />

xlLoadChipScopeData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432<br />

xlSetNonMemMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433<br />

xlSetUseHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434<br />

xlSBDBuilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435<br />

xlTBUtils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437<br />

メモ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438<br />

xlTimingAnalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド japan.xilinx.com 15<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439<br />

xlUpdateModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442<br />

xlVersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443<br />

構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443<br />

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443<br />

例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443<br />

関連項目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443<br />

第 5 章 : プログラムを使用したアクセス<br />

プログラムを使用したブロック図の生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445<br />

<strong>System</strong> <strong>Generator</strong> でのプログ ラムを使用したアクセス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448<br />

SharedMemory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449<br />

Public タイプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449<br />

Public メソッド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449<br />

Static Public 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449<br />

Protected タイプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449<br />

Protected メソッド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449<br />

Protected 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449<br />

メ ンバー列挙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450<br />

コンス ト ラ ク タおよびデスト ラ ク タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450<br />

メ ンバー関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451<br />

メンバー データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454<br />

LockableSharedMemory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455<br />

Public タイプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455<br />

Public メソッド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455<br />

Static Public 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455<br />

メンバー Typedefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455<br />

コンス ト ラ ク タおよびデスト ラ ク タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455<br />

メ ンバー関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456<br />

メンバー データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458<br />

SharedMemoryProxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459<br />

Public タイプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459<br />

Public メソッド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459<br />

Static Public 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459<br />

メンバー Typedefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459<br />

コンス ト ラ ク タおよびデスト ラ ク タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459<br />

メ ンバー関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460<br />

メンバー データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461<br />

Request Struct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462<br />

Public タイプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462<br />

Static Public 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462<br />

メ ンバー列挙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462<br />

16 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

目次


目次<br />

メンバー データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462<br />

NamedPipeReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463<br />

Public メソッド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463<br />

Static Public 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463<br />

コンス ト ラ ク タおよびデスト ラ ク タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463<br />

メ ンバー関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464<br />

メンバー データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465<br />

NamedPipeWriter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466<br />

Public メソッド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466<br />

Static Public 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466<br />

コンス ト ラ ク タおよびデスト ラ ク タ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466<br />

メ ンバー関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467<br />

メンバー データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468<br />

索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド japan.xilinx.com 17<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

18 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

目次


R<br />

このマニュアルについて<br />

マニ ュ アルの内容<br />

このマニュアルには、<strong>System</strong> <strong>Generator</strong> で使用されているブロ ッ ク の詳細な情報が記載されていま<br />

す。 また、 <strong>System</strong> <strong>Generator</strong> のユーテ ィ リ テ ィ およびプロ グ ラ ムのア ク セスについて も説明されて<br />

います。<br />

こ のマニ ュ アルには、 次の内容が含まれています。<br />

• ザイ リンクス ブロッ クセッ ト<br />

• ザイ リンクス <strong>リファレンス</strong> ブロッ クセッ ト<br />

• Xtreme<strong>DSP</strong> キッ ト<br />

• <strong>System</strong> <strong>Generator</strong> ユーテ ィ リ テ ィ<br />

• プログラム アクセス<br />

<strong>System</strong> <strong>Generator</strong> の PDF マニュアル セット<br />

その他の リ ソース<br />

このマニュアルは <strong>System</strong> <strong>Generator</strong> の Help システムから 参照でき、 また <strong>System</strong> <strong>Generator</strong> の<br />

PDF マニュ アル セッ ト の一部です。 この PDF マニュ アル セッ ト には、次のマニュ アルが含ま れて<br />

いま す。<br />

• 『<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> 入門ガ イ ド 』<br />

• 『<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> ユーザー <strong>ガイド</strong>』<br />

• 『<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong>』<br />

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

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

時に押す と 、 前に参照し てたページに戻る こ と がで き ます。<br />

その他の資料は、 次のザイ リ ン ク ス Web サ イ ト を参照し て く だ さ い。<br />

http://japan.xilinx.com/literature<br />

シリコン、 ソフトウェア、IP に関する質問および解答をアンサー データベース で検索し た り 、 テ<br />

クニカル サポー ト のウ ェブ ケース を開 く には、 次のザイ リ ン ク ス Web サイ トにアクセスしてくだ<br />

さい。<br />

http://japan.xilinx.com/support<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 19<br />

リリース 9.2.00 2007 年 8 月


表記規則<br />

R<br />

書体<br />

このマニュアルについて<br />

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

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

表記規則 使用箇所 例<br />

Courier フォント<br />

Courier フォント<br />

( 太字 )<br />

イタリック フォント<br />

二重 / 一重かぎかっ こ<br />

『 』、 「」<br />

角かっ こ [ ]<br />

中かっ こ { }<br />

縦棒 |<br />

縦の省略記号<br />

.<br />

.<br />

.<br />

横の省略記号 . . .<br />

シ ス テムが表示する メ ッ セージ、<br />

プロンプト、 プログラム ファイ<br />

ルを表示し ます。<br />

構文内で入力する コ マン ド を示<br />

します。<br />

ユーザーが値を入力する必要の<br />

あ る構文内の変数に使用し ます。<br />

『 』 はマニュアル名を、 「 」 はセ<br />

クション名を示します。<br />

オプシ ョ ンの入力ま たはパ ラ<br />

メータを示しますが、bus[7:0]<br />

の よ う なバス仕様では必ず使用<br />

し ます。 ま た、 GUI 表記に も使<br />

用します。<br />

1 つ以上の項目を選択する ための<br />

リストを示します。<br />

選択する リ ス ト の項目を分離し<br />

ます。<br />

繰り返し項目が省略されている<br />

ことを示します。<br />

繰り返し項目が省略されている<br />

ことを示します。<br />

speed grade: - 100<br />

ngdbuild design_name<br />

ngdbuild design_name<br />

詳細については、 『開発シ ス テム<br />

<strong>リファレンス</strong> <strong>ガイド</strong>』 の 「PAR」<br />

を参照して く ださい。<br />

ngdbuild [option_name]<br />

design_name<br />

[File] → [Open] をク リ ックし<br />

ます。<br />

lowpwr ={on|off}<br />

lowpwr ={on|off}<br />

IOB #1: Name = QOUT’<br />

IOB #2: Name = CLKIN’<br />

.<br />

.<br />

.<br />

allow block block_name loc1<br />

loc2 ... locn;<br />

20 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


表記規則<br />

オンライン マニュアル<br />

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

青色の文字<br />

赤色の文字<br />

表記規則 使用箇所 例<br />

青色の下線付き文字<br />

マニ ュ アル内の相互参照を示し<br />

ます。<br />

ほかのマニ ュ アルへの相互参照<br />

を示します。<br />

Web サイ ト (URL) へのハイパー<br />

リンクです。<br />

詳細については、 「そ の他 の リ<br />

ソース」 を参照して く ださい。<br />

詳細については、 第 1 章 「タ イ ト<br />

ル フォーマット」を参照して く だ<br />

さい。<br />

詳細については、 『Virtex-II<br />

Plat<strong>for</strong>m FPGA ユーザー <strong>ガイド</strong>』<br />

の図 2-5 を参照して く ださい。<br />

最新のス ピー ド ファイルは、<br />

http://japan.xilinx.com から入手<br />

できます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 21<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

このマニュアルについて<br />

22 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


R<br />

ザイリンクス ブロックセッ ト<br />

第 1 章<br />

ブロッ クセッ ト ライブラリの構造 ザイ リ ンクス ブロックがライブラ リにどのよ うに分類<br />

されているかを示します。<br />

ブロッ クのパラ メータ ダイアログ<br />

ボックスの共通オプション<br />

ザイ リ ンクス ブロックセッ トのほとんどのブロックに<br />

共通する ブ ロ ッ ク パラ メータについて説明します。<br />

ブロッ クのリ ファレンス ページ ザイ リ ンクス ブロックセッ ト をアルファベッ ト順に並<br />

べ、 各ブ ロ ッ ク の詳細を説明し ます。<br />

<strong>Xilinx</strong> LogiCORE のバージ ョ ン ザイ リ ンクス ブロックセッ トで使用されるザイ リ ンク<br />

ス LogiCORE のバージ ョ ン番号を リ ス ト し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 23<br />

リリース 9.2.00 2007 年 8 月


R<br />

ブロックセッ ト ラ イ ブ ラ リ の構造<br />

[<strong>Xilinx</strong> Blockset] には、Simulink を使用して FPGA に <strong>DSP</strong> およびその他のデジ タル システムを構<br />

築する ためのブ ロ ッ ク が含まれます。 ブロッ クは、 ファンクショ ン別にライブラ リに分類されてい<br />

ます。 Gateway I/O ブ ロ ッ ク など幅広 く 応用可能なブ ロ ッ ク は、 複数の ラ イ ブ ラ リ に含まれていま<br />

す。 含まれる ラ イブラ リは次のとおりです。<br />

ライブラリ 説明<br />

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

Basic Elements ブロッ ク デジタル ロジックの基本ブロック<br />

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

よびモジュレータ ブロッ ク<br />

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

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

<strong>DSP</strong> ブロッ ク <strong>DSP</strong> (デジ タル信号処理) ブロック<br />

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

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

ためのブロ ッ ク<br />

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

メモリにアクセスするためのブロック<br />

Tools ブロッ ク コード生成 (<strong>System</strong> <strong>Generator</strong> ブロック)、 リ ソース予測、 HDL 協<br />

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

Basic Elements ブロック<br />

表 1 : Basic Elements ブロック<br />

ブロック 説明<br />

Addressable Shift<br />

Register<br />

ザイ リ ンクスの Addressable Shift Register ブ ロ ッ ク は、 可変長シ<br />

フト レ ジ ス タ で、 遅延チェーンのどのレ ジ ス タ で も呼び出し て、<br />

出力データ ポー ト に駆動で き ます。<br />

Assert Assert ブ ロ ッ ク は、 信号にレー ト やデータ型をアサー ト する ため<br />

に使用し ます。 このブロックには、 ハードウェア コストがかかり<br />

ません。 こ のブ ロ ッ ク を使用する と 、 設計者が手を入れる必要の<br />

あ る場合に、 レー ト やデータ型の問題を改善で き ます。<br />

BitBasher ザイ リ ンクスの BitBasher ブ ロ ッ ク では、 ブ ロ ッ ク に接続さ れた<br />

入力の値がス ラ イ ス さ れた後、 連結さ れて追加さ れます。<br />

Black Box <strong>System</strong> <strong>Generator</strong> の Black Box ブロックでは、 HDL モデルを<br />

<strong>System</strong> <strong>Generator</strong> 用に変換で き ます。<br />

24 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックセッ ト ラ イ ブ ラ リ の構造<br />

表 1 : Basic Elements ブロック<br />

ブロック 説明<br />

Clock Enable Probe ザイ リンクスの Clock Enable Probe ブロッ クでは、 <strong>System</strong><br />

<strong>Generator</strong> モデルのザ イ リ ン ク ス信号か ら派生し た ク ロ ッ ク イ<br />

ネーブル信号を抽出で き ます。<br />

Concat ザイ リンクスの Concat ブ ロ ッ ク では、符号な し の整数で表 さ れる<br />

n ビット ベクタ (2 進小数点の位置が 0 にある、 n 個の符号な し の<br />

値) が連結されます。<br />

Constant ザイ リンクスの Constant ブ ロ ッ ク では、 固定小数点値、 ブール<br />

値、 <strong>DSP</strong>48 命令のいずれかの定数が生成さ れます。 このブロック<br />

は、 Simulink の Constant ブロッ ク と類似していますが、 ザイ リン<br />

クス ブ ロ ッ ク の入力を直接駆動で き る点が異な り ます。<br />

Convert ザイ リンクスの Convert ブ ロ ッ ク では、 各入力サンプルが指定し<br />

た演算タ イプの値に変換されます。 た と えば、 あ る数値を符号付<br />

き (2 の補数) または符号なしの値にできます。<br />

Counter ザイ リンクスの Counter ブロックは、 フ リー ランニング カウン<br />

タ、 またはアップ カウンタ、 ダウン カウンタ、 アップ/ダウン カ<br />

ウ ン タ などのカ ウ ン ト 制限のあ る カ ウ ン タ を イ ンプ リ メ ン ト し ま<br />

す。 カ ウ ン タ の出力は、 符号付き ま たは符号な し の固定小数点の<br />

値で指定で き ます。<br />

Delay Delay ブロッ クは、 L サ イ ク ルの固定遅延を イ ンプ リ メ ン ト し ま<br />

す。<br />

Down Sample ザイ リンクスの Down Sample ブロッ クは、 ブロッ クが配置され<br />

た箇所のサンプル レー ト を削減する ために使用し ます。<br />

Expression ザイ リンクスの Expression ブ ロ ッ ク は、 ビ ッ ト 単位の論理式を実<br />

行します。<br />

Gateway In ザイ リンクスの Gateway In ブロッ クは、 Simulink デザイ ンのザ<br />

イ リ ン ク ス部分への入力に使用し ます。 このブロックは、<br />

Simulink の整数、 ダブル データ、 固定小数点などのデータ型を<br />

<strong>System</strong> <strong>Generator</strong> の固定小数点型に変換し ます。 各ブロ ッ ク では、<br />

<strong>System</strong> <strong>Generator</strong> で生成された HDL デザ イ ンの最上位入力ポー<br />

ト を定義し ます。<br />

Gateway Out ザイ リンクスの Gateway Out ブロッ クは、Simulink デザイ ンのザ<br />

イ リ ン ク ス部か ら の出力に使用し ます。 このブロックでは、<br />

<strong>System</strong> <strong>Generator</strong> の固定小数点型のデータ が Simulink のダブル<br />

データ型に変換さ れます。<br />

Inverter ザイ リンクスの Inverter ブ ロ ッ ク では、 固定小数点型の論理コ ン<br />

ポーネン ト がビ ッ ト 単位で計算さ れます。 このブロックは、 合成<br />

可能な VHDL モジュールと してインプ リ メ ン ト されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 25<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

表 1 : Basic Elements ブロック<br />

ブロック 説明<br />

LFSR ザイ リ ンクスの LFSR ブロッ クは、 LFSR (Linear Feedback Shift<br />

Register) をインプリ メント します。 このブロックでは、XOR また<br />

は XNOR のいずれかを使用し てガ ロ アおよびフ ィ ボナ ッ チ構造の<br />

両方がサポー ト さ れる ほか、 リ ロー ド 可能な入力を使用し て、 レ<br />

ジ ス タ の値をいつで も変更で き ます。 LFSR の出力と リ ロード可能<br />

な入力は、 シ リ アル ポー ト またはパラ レル ポー ト のいずれかでコ<br />

ンフィギュレーションできます。<br />

Logical ザイ リ ンクスの Logical ブロッ クでは、 2、 3、 または 4 つの固定<br />

小数点の値のビ ッ ト 単位の論理演算が実行さ れます。 オペラ ン ド<br />

には、 2 進小数点の位置を揃え る ため、 必要に応じ て 0 がパデ ィ<br />

ン グ さ れた り 、 符号が拡張さ れた り し ます。 こ れら の値で論理演<br />

算が実行さ れ、 結果が出力ポー ト に送信さ れます。<br />

Mux ザイ リ ンクスの Mult ブ ロ ッ ク は、 乗算器を イ ンプ リ メ ン ト し ま<br />

す。 このブロックでは、 2 つの入力ポー ト のデータ の積が出力ポー<br />

ト に出力さ れます。<br />

Parallel to Serial Parallel to Serial ブ ロ ッ ク は、 入力ワー ド を読み込み、 それを分割<br />

してマルチプレクサで N 倍多重化し た出力ワー ド に し ます。 N<br />

は、 入力ビ ッ ト から出力ビ ッ ト の数の比率です。 出力順は、 LSB<br />

からか MSB からかのどちらかになります。<br />

Register ザイ リ ンクスの Register ブロッ クは、 1 サンプル周期のレ イ テン<br />

シを含む D フリ ップフロップ ベースのレジス タにな り ます。<br />

Reinterpret ザイ リ ンクスの Reinterpret ブ ロ ッ ク は、 入力値に関係な く 、 出力<br />

を強制的に新し いデータ型に し ます。<br />

Relational ザイ リ ンクスの Relational ブロッ クは、 コンパレータをインプリ<br />

メントします。<br />

Serial to Parallel Serial to Parallel ブ ロ ッ ク では、 連続し て入力さ れたデータ が指定<br />

した倍数のサイズの出力 1 つにま と め られて、 出力されます。 こ<br />

の連続入力は、 最上位ワー ド ま たは最下位ワー ド のいずれかを先<br />

頭に し た順序にな り ます。<br />

Slice ザイ リ ンクスの Slice ブ ロ ッ ク を使用する と 、 入力データ か ら<br />

ビッ トのシーケンスを切り取り、新しいデータ値を作成できます。<br />

こ のデータ値がブ ロ ッ ク か ら出力さ れます。 出力データ型は、 2 進<br />

小数点が 0 の位置の符合な しにな り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>System</strong> <strong>Generator</strong> ブ ロ ッ ク は、 シ ス テム制御およびシ ミ ュ レー<br />

ション パ ラ メ ータ を提供し、 コー ド ジ ェ ネ レータ を起動する ため<br />

に使用されます。 ザイ リンクス ブロックセッ トからのエレメン ト<br />

を含む Simulink モデルには、<strong>System</strong> <strong>Generator</strong> ブロックが最低 1<br />

つは含まれます。 <strong>System</strong> <strong>Generator</strong> ブ ロ ッ ク をモデルに追加する<br />

と 、 コー ド の生成およびシ ミ ュ レーシ ョ ンの処理方法を指定で き<br />

るようになります。<br />

Time Division<br />

Demultiplexer<br />

ザイ リ ンクスの Time Division Demultiplexer ブロッ クは、 シリア<br />

ル入力をそれよ り 遅いレー ト の複数の出力にし ます。<br />

26 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックセッ ト ラ イ ブ ラ リ の構造<br />

表 1 : Basic Elements ブロック<br />

ブロック 説明<br />

Time Division<br />

Multiplexer<br />

Communication ブロック<br />

ザイ リ ンクスの Time Division Multiplexer ブロックは、 入力ポー<br />

トの値を 1 つの高速レー ト の出力ス ト リ ームに多重化し ます。<br />

Up Sample ザイ リ ンクスの Up Sample ブロックは、 ブロックが配置された箇<br />

所のサンプル レー ト を増加する ために使用し ます。 出力サンプル<br />

周期は、 1/n にな り ます (1 が入力サンプル周期、 n はサンプ リ ン<br />

グ レート)。<br />

表 2 : Communication ブロッ ク - FEC<br />

Communication<br />

ブロック<br />

Convolutional Encoder<br />

v6_0<br />

説明<br />

ザイ リ ンクスの Convolutional Encoder ブロッ クは、 たたみ込<br />

み符号のエン コーダを イ ンプ リ メ ン ト し ます。 通常 Viterbi デ<br />

コーダ と 併用さ れ、 デジ タル通信シ ス テムで順方向誤 り 訂正<br />

(FEC) を実行します。<br />

Depuncture ザイ リ ンクスの Depuncture ブ ロ ッ ク を使用する と 、 デパン ク<br />

チ ャ符号で指定し た位置の入力データ にシンボルを挿入で き ま<br />

す。<br />

Interleaver Deinterleaver<br />

v4_0<br />

Interleaver Deinterleaver<br />

v5_0<br />

ザイ リ ンクスの Interleaver/Deinterleaver ブロックは、 イン<br />

ターリーバまたはデインターリーバをインプリ メ ン ト します。<br />

インターリーバは、 1:1 の確定的な方法でシンボルのシーケ ン<br />

ス順序を並び替え るデバ イ スです。 デインターリーバは、 この<br />

並び替え ら れたシーケン ス を再び格納するデバ イ スです。<br />

ザイ リ ンクスの Interleaver/Deinterleaver ブロックは、 イン<br />

ターリーバまたはデインターリーバをインプリ メ ン ト します。<br />

インターリーバは、 1:1 の確定的な方法でシンボルのシーケ ン<br />

ス順序を並び替え るデバ イ スです。 デインターリーバは、 この<br />

並び替え ら れたシーケン ス を再び格納するデバ イ スです。<br />

Puncture ザイ リ ンクスの Puncture ブロッ クでは、 データ ス トリームの<br />

入力ワー ド か ら ユーザーが指定し たビ ッ ト のセ ッ ト が削除さ れ<br />

ます。<br />

RS Decoder v6_0 Reed-Solomon (RS) コードは、 ブロ ッ ク ベースの誤 り 訂正符<br />

号 (ECC) で、 デジ タル通信およびス ト レージ分野の さ ま ざ ま<br />

なアプ リ ケーシ ョ ンに使用さ れています。<br />

RS Encoder v6_0 Reed-Solomon (RS) コードは、 ブロ ッ ク ベースの誤 り 訂正符<br />

号 (ECC) で、 デジ タル通信およびス ト レージ分野の さ ま ざ ま<br />

なアプ リ ケーシ ョ ンに使用さ れています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 27<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

表 2 : Communication ブロッ ク - FEC<br />

Communication<br />

ブロック<br />

Viterbi Decoder v5_0 たたみ込みエン コーダでエン コー ド さ れたデータは、 ザ イ リ ン<br />

クスの Viterbi Decoder ブロッ クを使用してデコードできます。<br />

Viterbi Decoder v6_0 たたみ込みエン コーダでエン コー ド さ れたデータは、 ザ イ リ ン<br />

クスの Viterbi Decoder ブロッ クを使用してデコードできます。<br />

Control Logic ブロック<br />

表 3 : Control Logic ブロッ ク<br />

説明<br />

Control Logic ブロック 説明<br />

Black Box <strong>System</strong> <strong>Generator</strong> の Black Box ブロッ クでは、HDL モデルを <strong>System</strong><br />

<strong>Generator</strong> 用に変換で き ます。<br />

Constant ザイ リ ンクスの Constant ブ ロ ッ ク では、 固定小数点値、 ブール値、<br />

<strong>DSP</strong>48 命令のいずれかの定数が生成さ れます。 このブロッ クは、<br />

Simulink の Constant ブロッ ク と類似していますが、 ザイ リンクス ブ<br />

ロ ッ ク の入力を直接駆動で き る点が異な り ます。<br />

Counter ザイ リ ンクスの Counter ブロックは、 フ リー ランニング カウンタ、<br />

またはアップ カウンタ、 ダウン カウンタ、 アップ/ダウン カウンタな<br />

どのカ ウ ン ト 制限のあ る カ ウ ン タ を イ ンプ リ メ ン ト し ます。 カウンタ<br />

の出力は、 符号付き ま たは符号な し の固定小数点の値で指定で き ま<br />

す。<br />

Dual Port RAM ザイ リ ンクスの Dual Port RAM ブロックは、 ランダム アクセス メモ<br />

リ (RAM) をインプリ メント します。 デュアル ポー ト を使用する と 、<br />

複数のデータ幅を使用し て異な る サンプル レート でメモ リ空間に同<br />

時にア ク セスでき ます。<br />

EDK Processor EDK Processor ブロックは、<strong>System</strong> <strong>Generator</strong> で開発したユーザー ロ<br />

ジックをザイ リンクスの EDK (エンベデ ッ ド 開発シ ス テム) を使用し<br />

て作成し たエンベデッ ド プロセッサ シ ス テムに接続する ために使用<br />

します。<br />

Expression ザイ リ ンクスの Expression ブ ロ ッ ク は、 ビ ッ ト 単位の論理式を実行<br />

します。<br />

FFT v4_1 ザイ リ ンクスの FFT v4_1 ブロックは、 Virtex-5、 Virtex4、 Virtex-II、<br />

Virtex-II Pro、 Spartan-3、 Spartan-3E、 Spartan-3A デバ イ ス でのみサ<br />

ポー ト されます。 この FFT では、 離散フー リ エ変換 (DFT) を計算す<br />

る効率的なアルゴ リ ズムが イ ンプ リ メ ン ト さ れます。<br />

Inverter ザイ リ ンクスの Inverter ブ ロ ッ ク では、 固定小数点型の論理コ ンポー<br />

ネン ト がビ ッ ト 単位で計算さ れます。 こ のブ ロ ッ ク は、 合成可能な<br />

VHDL モジュールと してインプ リ メ ン ト されます。<br />

28 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックセッ ト ラ イ ブ ラ リ の構造<br />

表 3 : Control Logic ブロッ ク<br />

Control Logic ブロック 説明<br />

Logical ザイ リ ンクスの Logical ブロッ クでは、 2、 3、 または 4 つの固定小数<br />

点の値のビ ッ ト 単位の論理演算が実行さ れます。 オペラ ン ド には、 2<br />

進小数点の位置を揃え る ため、 必要に応じ て 0 がパデ ィ ング された<br />

り 、 符号が拡張さ れた り し ます。 こ れら の値で論理演算が実行さ れ、<br />

結果が出力ポー ト に送信されます。<br />

MCode ザイ リ ンクスの MCode ブロッ クは、Simulink でユーザーの提供する<br />

MATLAB 関数を実行する ための コ ンテナです。 M 関数の名前はブ<br />

ロックのパラメータから指定します。 このブロックは、 M コード を実<br />

行して Simulink のシ ミ ュ レーシ ョ ン中にブ ロ ッ ク の出力を計算し ま<br />

す。 同じ コー ド は、 ハー ド ウ ェ アが生成さ れる と き に、 同等のビヘイ<br />

ビア レベルの VHDL/Verilog に直接変換さ れます。<br />

Mux ザイ リ ンクスの Mux ブロックは、 マルチプレクサをインプリ メン ト<br />

します。 ブロッ クには、 セレク ト入力 (符号な し) が 1 つと、 ユーザー<br />

がコンフィギュレーショ ン可能なデータ バス入力 (0 ~ 1024 の範囲)<br />

がい く つか含まれます。<br />

PicoBlaze<br />

Microcontroller<br />

PicoBlaze Microcontroller ブロッ クは、 PicoBlaze マクロを使用して<br />

8 ビットのエンベデッド マイクロコント ローラをインプリ メント しま<br />

す。<br />

Register ザイ リ ンクスの Register ブロックは、 1 サンプル周期のレ イ テンシを<br />

含む D フリ ップフロップ ベースのレジス タ にな り ます。<br />

Relational ザイ リ ンクスの Relational ブロッ クは、 コンパレータをインプリ メン<br />

トします。<br />

ROM ザイ リ ンクスの ROM ブロッ クは、シングル ポー ト の読み出し専用 メ<br />

モリ (ROM) です。<br />

Shift ザイ リ ンクスの Shift ブ ロ ッ ク は、 入力信号を左ま たは右にシフ ト し<br />

ます。 出力には、 入力 と 同じ固定小数点の コ ンテナが含まれます。<br />

Single Port RAM ザイ リ ンクスの Single Port RAM ブ ロ ッ ク は、 データ入力ポー ト と<br />

データ出力ポー ト が 1 つずつ付いた ラ ンダム アクセス メモリ (RAM)<br />

をインプリ メント します。<br />

Slice ザイ リ ンクスの Slice ブ ロ ッ ク を使用する と 、 入力データ か ら ビ ッ ト<br />

のシーケンスを切り取り、 新しいデータ値を作成できます。 このデー<br />

タ値がブロ ッ クから出力されます。 出力データ型は、 2 進小数点が 0<br />

の位置の符合な し にな り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 29<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Data Types ブロック<br />

表 4 : Data Types ブロッ ク<br />

Data Types ブロック 説明<br />

Concat ザイ リ ンクスの Concat ブ ロ ッ ク では、 符号な し の整数で表される n<br />

ビッ ト ベクタ (2 進小数点の位置が 0 にある、 n 個の符号な しの値) が<br />

連結さ れます。<br />

Convert ザイ リ ンクスの Convert ブ ロ ッ ク では、 各入力サンプルが指定し た演<br />

算タ イプの値に変換されます。 た と えば、 あ る数値を符号付き (2 の補<br />

数) または符号なしの値にできます。<br />

Gateway In ザイ リ ンクスの Gateway In ブロッ クは、 Simulink デザイ ンのザイ リ<br />

ン ク ス部分への入力に使用し ます。 このブロックは、 Simulink の整<br />

数、 ダブル データ、 固定小数点な どのデータ型を <strong>System</strong> <strong>Generator</strong><br />

の固定小数点型に変換し ます。 各ブロ ッ クでは、 <strong>System</strong> <strong>Generator</strong> で<br />

生成さ れた HDL デザ イ ンの最上位入力ポー ト を定義し ます。<br />

Gateway Out ザイ リ ンクスの Gateway Out ブロッ クは、 Simulink デザイ ンのザイ<br />

リ ン ク ス部か ら の出力に使用し ます。 このブロックでは、 <strong>System</strong><br />

<strong>Generator</strong> の固定小数点型のデータ が Simulink のダブル データ型に<br />

変換さ れます。<br />

Parallel to Serial Parallel to Serial ブ ロ ッ ク は、 入力ワー ド を読み込み、 それを分割し<br />

てマルチプレ クサで N 倍多重化し た出力ワー ド に し ます。 N は、 入<br />

力ビ ッ ト か ら出力ビ ッ ト の数の比率です。 出力順は、 LSB からか<br />

MSB からかのどちらかになり ます。<br />

Reinterpret ザイ リ ンクスの Reinterpret ブ ロ ッ ク は、 入力値に関係な く 、 出力を<br />

強制的に新し いデータ型に し ます。<br />

Scale ザイ リ ンクスの Scale ブロックでは、 入力が 2 のべき乗でス ケール変<br />

換されます。 べき乗の値は、 正にでも負にでもでき ます。 このブロッ<br />

ク には、 入力が 1 つ と 出力が 1 つあ り ます。 ス ケール変換では、 コ ン<br />

テナ内のビ ッ ト を変更せずに 2 進小数点の位置が移動 さ れます。<br />

Serial to Parallel Serial to Parallel ブ ロ ッ ク では、 連続し て入力さ れたデータ が指定し<br />

た倍数のサイ ズの出力 1 つにま と められて、 出力されます。 この連続<br />

入力は、 最上位ワー ド ま たは最下位ワー ド のいずれかを先頭に し た順<br />

序にな り ます。<br />

Shift ザイ リ ンクスの Shift ブ ロ ッ ク は、 入力信号を左ま たは右にシフ ト し<br />

ます。 出力には、 入力 と 同じ固定小数点の コ ンテナが含まれます。<br />

Slice ザイ リ ンクスの Slice ブ ロ ッ ク を使用する と 、 入力データ か ら ビ ッ ト<br />

のシーケンスを切り取り、 新しいデータ値を作成できます。 このデー<br />

タ値がブロ ッ クから出力されます。 出力データ型は、 2 進小数点が 0<br />

の位置の符合な し にな り ます。<br />

30 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックセッ ト ラ イ ブ ラ リ の構造<br />

<strong>DSP</strong> ブロック<br />

表 5 : <strong>DSP</strong> ブロッ ク<br />

<strong>DSP</strong> ブロック 説明<br />

DAFIR v9_0 ザイ リ ンクスの DAFIR ブ ロ ッ ク は、 分散演算タ イ プの FIR (Finite<br />

Impulse Response) デジタル フ ィ ル タ、 ま たは同一の FIR フィルタ (<br />

マルチチャネル モード) のバン ク を イ ンプ リ メ ン ト し ます。<br />

DDS v5_0 ザイ リ ンクスの DDS ブロッ クは、 ダイレク ト デジタル シンセサイザ<br />

で、 NCO (Numerically Controlled Oscillator ) と も呼ばれます。 この<br />

ブロックでは、ルックアップ テーブルを使用し てサ イ ン波が生成さ<br />

れます。 ルッ クアップ テーブルでマップされた位相は、 デジタル積分<br />

器 (アキュムレータ) で出力波形に さ れます。<br />

<strong>DSP</strong>48 ザイ リ ンクスの <strong>DSP</strong>48 ブロックは、 ザイ リ ンクスの Virtex-4 デバイ<br />

ス を使用する <strong>DSP</strong> アプ リ ケーシ ョ ン を効率的に構築する ためのブ<br />

ロックです。 <strong>DSP</strong>48 では、 18X18 ビ ッ ト の符号付き乗算器 と 48 ビッ<br />

ト 加算器が組み合わ さ れてお り 、 加算器の入力はプ ロ グ ラ マブル マ<br />

ルチプレ ク サで選択されます。<br />

<strong>DSP</strong>48 Macro <strong>DSP</strong>48 Macro ブロックは、 <strong>DSP</strong>48、 <strong>DSP</strong>48A、 および <strong>DSP</strong>48E ブ<br />

ロ ッ ク をデバイ スに依存せずに抽象化し た も のです。<br />

FDATool ザイ リ ンクスの FDATool ブロッ クは、MATLAB の Signal Processing<br />

Toolbox の一部であ る FDATool ソフトウェアへのインターフェイス<br />

にな り ます。<br />

FFT v4_1 ザイ リ ンクスの FFT v4_1 ブロックは、 Virtex-5、 Virtex4、 Virtex-II、<br />

Virtex-II Pro、 Spartan-3、 Spartan-3E、 Spartan-3A デバ イ ス でのみサ<br />

ポー ト されます。 この FFT では、 離散フー リ エ変換 (DFT) を計算す<br />

る効率的なアルゴ リ ズムが イ ンプ リ メ ン ト さ れます。<br />

From FIFO ザイ リ ンクス From FIFO ブロッ クは、 First-In First-Out (FIFO) のメ<br />

モリ キ ューの後半分を イ ンプ リ メ ン ト し ます。<br />

LFSR ザイ リ ンクスの LFSR ブロッ クは、 LFSR (Linear Feedback Shift<br />

Register) をインプリ メント します。 このブロックでは、 XOR または<br />

XNOR のいずれかを使用し てガ ロ アおよびフ ィ ボナ ッ チ構造の両方<br />

がサポー ト さ れる ほか、 リ ロー ド 可能な入力を使用し て、 レ ジ ス タ の<br />

値をいつで も変更で き ます。 LFSR の出力と リ ロード可能な入力は、<br />

シリアル ポー ト またはパラ レル ポー ト のいずれかでコ ンフ ィ ギュ<br />

レーシ ョ ンできます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 31<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Index ブロック<br />

表 6 : Index ブロッ ク<br />

Index ブロック 説明<br />

Accumulator ザイ リ ンクスの Accumulator ブ ロ ッ ク は、 加算器ま たは減算器ベース<br />

のスケーリ ング アキュムレータです。<br />

Addressable Shift<br />

Register<br />

ザイ リ ンクスの Addressable Shift Register ブ ロ ッ ク は、可変長シフ ト<br />

レ ジ ス タ で、 遅延チェーンのどのレ ジ ス タ で も呼び出し て、 出力デー<br />

タ ポー ト に駆動で き ます。<br />

AddSub ザイ リ ンクスの AddSub ブ ロ ッ ク は、 加算器/減算器です。 処理方法<br />

は、 加算か減算のど ち ら かに指定する こ と も で き ますが、 sub 信号の<br />

制御に従ってダ イ ナ ミ ッ ク に変更する こ と も で き ます。<br />

Assert Assert ブ ロ ッ ク は、 信号にレー ト やデータ型をアサー ト する ために使<br />

用します。 このブロックには、 ハードウェア コストがかかりません。<br />

こ のブ ロ ッ ク を使用する と 、 設計者が手を入れる必要のあ る場合に、<br />

レー ト やデータ型の問題を改善で き ます。<br />

BitBasher ザイ リ ンクスの BitBasher ブ ロ ッ ク では、 ブ ロ ッ ク に接続さ れた入力<br />

の値がス ラ イ ス さ れた後、 連結さ れて追加さ れます。<br />

Black Box <strong>System</strong> <strong>Generator</strong> の Black Box ブロッ クでは、HDL モデルを <strong>System</strong><br />

<strong>Generator</strong> 用に変換で き ます。<br />

ChipScope ザイ リ ンクス ChipScop ブロッ クでは、 ランタイム デバ ッ グおよび<br />

FPGA 内の信号検証など を実行で き ます。<br />

Clock Enable Probe ザイ リ ンクスの Clock Enable Probe ブロッ クでは、<strong>System</strong> <strong>Generator</strong><br />

モデルのザイ リ ン ク ス信号か ら派生し た ク ロ ッ ク イネーブル信号を<br />

抽出で き ます。<br />

Clock Probe ザイ リ ンクスの Clock Probe ブ ロ ッ ク では、 倍精度の ク ロ ッ ク 信号が<br />

Simulink シ ス テム周期 と 同じ周期で出力さ れます。<br />

CMult ザイ リ ンクスの CMult ブロッ クは、 gain 演算子を イ ンプ リ メ ン ト し<br />

ます。 出力は、 入力 と 定数値の積にな り ます。 この値は、 定数を求め<br />

る MATLAB の論理式で表すこ と がで き ます。<br />

Concat ザイ リ ンクスの Concat ブ ロ ッ ク では、 符号な し の整数で表される n<br />

ビッ ト ベクタ (2 進小数点の位置が 0 にある、 n 個の符号な しの値) が<br />

連結さ れます。<br />

Configurable<br />

Subsystem Manager<br />

ザイ リ ンクスの Configurable Subsystem Manager ブロッ クは、<br />

Simulink のコンフィギャブル システムの機能を拡張したブロックで、<br />

シ ミ ュ レーシ ョ ン と 同様、 ハー ド ウ ェ アの生成に も サブシ ス テム コ<br />

ンフィギュレーションが選択できるようになります。<br />

Constant ザイ リ ンクスの Constant ブ ロ ッ ク では、 固定小数点値、 ブール値、<br />

<strong>DSP</strong>48 命令のいずれかの定数が生成さ れます。 このブロッ クは、<br />

Simulink の Constant ブロッ ク と類似していますが、 ザイ リンクス ブ<br />

ロ ッ ク の入力を直接駆動で き る点が異な り ます。<br />

32 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックセッ ト ラ イ ブ ラ リ の構造<br />

表 6 : Index ブロッ ク<br />

Index ブロック 説明<br />

Convert ザイ リ ンクスの Convert ブ ロ ッ ク では、 各入力サンプルが指定し た演<br />

算タ イプの値に変換されます。 た と えば、 あ る数値を符号付き (2 の補<br />

数) または符号なしの値にできます。<br />

Convolutional Encoder<br />

v3_0<br />

Convolutional Encoder<br />

v6_0<br />

ザイ リ ンクスの Convolutional Encoder ブ ロ ッ ク は、 たたみ込み符号<br />

のエン コーダをイ ンプ リ メ ン ト し ます。 通常 Viterbi デコーダと併用さ<br />

れ、 デジ タル通信シ ス テムで順方向誤 り 訂正 (FEC) を実行し ます。<br />

ザイ リ ンクスの Convolutional Encoder ブ ロ ッ ク は、 たたみ込み符号<br />

のエン コーダをイ ンプ リ メ ン ト し ます。 通常 Viterbi デコーダと併用さ<br />

れ、 デジ タル通信シ ス テムで順方向誤 り 訂正 (FEC) を実行し ます。<br />

Counter ザイ リ ンクスの Counter ブロックは、 フ リー ランニング カウンタ、<br />

またはアップ カウンタ、 ダウン カウンタ、 アップ/ダウン カウンタな<br />

どのカ ウ ン ト 制限のあ る カ ウ ン タ を イ ンプ リ メ ン ト し ます。 カウンタ<br />

の出力は、 符号付き ま たは符号な し の固定小数点の値で指定で き ま<br />

す。<br />

DAFIR v9_0 ザイ リ ンクスの DAFIR ブ ロ ッ ク は、 分散演算タ イ プの FIR (Finite<br />

Impulse Response) デジタル フ ィ ル タ、 ま たは同一の FIR フィルタ (<br />

マルチチャネル モード) のバン ク を イ ンプ リ メ ン ト し ます。<br />

DDS Compiler v1_1 ザイ リ ンクスの DDS Compiler v1_1 ブロッ クは、 ダイレク ト デジタ<br />

ル シンセサイザで、 NCO (Numerically Controlled Oscillator ) とも呼<br />

ばれます。 このブロックでは、ルックアップ テーブルを使用してサイ<br />

ン波が生成されます。 ルッ クアップ テーブルでマップされた位相は、<br />

デジ タル積分器 (アキュムレータ) で出力波形に さ れます。<br />

DDS Compiler v2_0 ザイ リ ンクスの DDS Compiler v2_0 ブロッ クは、 ダイレク ト デジタ<br />

ル シンセサイザで、 NCO (Numerically Controlled Oscillator ) とも呼<br />

ばれます。 このブロックでは、ルックアップ テーブルを使用してサイ<br />

ン波が生成されます。 ルッ クアップ テーブルでマップされた位相は、<br />

デジ タル積分器 (アキュムレータ) で出力波形に さ れます。<br />

DDS v4_0 ザイ リ ンクスの DDS ブロッ クは、 ダイレク ト デジタル シンセサイザ<br />

で、 NCO (Numerically Controlled Oscillator ) と も呼ばれます。 この<br />

ブロックでは、ルックアップ テーブルを使用し てサ イ ン波が生成さ<br />

れます。 ルッ クアップ テーブルでマップされた位相は、 デジタル積分<br />

器 (アキュムレータ) で出力波形に さ れます。<br />

DDS v5_0 ザイ リ ンクスの DDS ブロッ クは、 ダイレク ト デジタル シンセサイザ<br />

で、 NCO (Numerically Controlled Oscillator ) と も呼ばれます。 この<br />

ブロックでは、ルックアップ テーブルを使用し てサ イ ン波が生成さ<br />

れます。 ルッ クアップ テーブルでマップされた位相は、 デジタル積分<br />

器 (アキュムレータ) で出力波形に さ れます。<br />

Delay Delay ブロッ クは、 L サ イ ク ルの固定遅延を イ ンプ リ メ ン ト し ます。<br />

Depuncture ザイ リ ンクスの Depuncture ブ ロ ッ ク を使用する と 、 デパン ク チ ャ符<br />

号で指定し た位置の入力データ にシンボルを挿入で き ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 33<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

表 6 : Index ブロッ ク<br />

Index ブロック 説明<br />

Down Sample ザイ リ ンクスの Down Sample ブロッ クは、 ブロッ クが配置された箇<br />

所のサンプル レー ト を削減する ために使用し ます。<br />

<strong>DSP</strong>48 ザイ リ ンクスの <strong>DSP</strong>48 ブロックは、 ザイ リ ンクスの Virtex-4 デバイ<br />

ス を使用する <strong>DSP</strong> アプ リ ケーシ ョ ン を効率的に構築する ためのブ<br />

ロックです。 <strong>DSP</strong>48 では、 18X18 ビ ッ ト の符号付き乗算器 と 48 ビッ<br />

ト 加算器が組み合わ さ れてお り 、 加算器の入力はプ ロ グ ラ マブル マ<br />

ルチプレ ク サで選択されます。<br />

<strong>DSP</strong>48 Macro <strong>DSP</strong>48 Macro ブロックは、 <strong>DSP</strong>48、 <strong>DSP</strong>48A、 および <strong>DSP</strong>48E ブ<br />

ロ ッ ク をデバイ スに依存せずに抽象化し た も のです。<br />

<strong>DSP</strong>48A ザイ リ ンクスの <strong>DSP</strong>48A ブロッ クは、 ザイ リンクスの Spartan-3A<br />

<strong>DSP</strong> デバイ ス を使用する <strong>DSP</strong> アプ リ ケーシ ョ ン を効率的に構築する<br />

ためのブロ ッ クです。 <strong>DSP</strong>48A は、 <strong>DSP</strong>48 および <strong>DSP</strong>48E の軽量版<br />

です。<br />

<strong>DSP</strong>48E ザイ リ ンクスの <strong>DSP</strong>48E ブロッ クは、 ザイ リンクスの Virtex-5 デバ<br />

イ ス を使用する <strong>DSP</strong> アプ リ ケーシ ョ ン を効率的に構築する ためのブ<br />

ロックです。 <strong>DSP</strong>48E では、 18X25 ビ ッ ト の符号付き乗算器 と 48<br />

ビ ッ ト 加算器が組み合わ さ れてお り 、 加算器の入力はプ ロ グ ラ マブル<br />

マルチプレ ク サで選択さ れます。<br />

Dual Port RAM ザイ リ ンクスの Dual Port RAM ブロックは、 ランダム アクセス メモ<br />

リ (RAM) をインプリ メント します。 デュアル ポー ト を使用する と 、<br />

複数のデータ幅を使用し て異な る サンプル レート でメモ リ空間に同<br />

時にア ク セスでき ます。<br />

EDK Processor EDK Processor ブロックは、<strong>System</strong> <strong>Generator</strong> で開発したユーザー ロ<br />

ジックをザイ リンクスの EDK (エンベデ ッ ド 開発シ ス テム) を使用し<br />

て作成し たエンベデッ ド プロセッサ シ ス テムに接続する ために使用<br />

します。<br />

Expression ザイ リ ンクスの Expression ブ ロ ッ ク は、 ビ ッ ト 単位の論理式を実行<br />

します。<br />

FDATool ザイ リ ンクスの FDATool ブロッ クは、MATLAB の Signal Processing<br />

Toolbox の一部であ る FDATool ソフトウェアへのインターフェイス<br />

にな り ます。<br />

FFT v1_0 ザイ リ ンクスの FFT v1_0 ブロックは、 Virtex デバイ スでのみサポー<br />

トされます。 その他のデバイ ス ファミ リの場合は、 FFT v3_1 ブロッ<br />

ク を使用し て く だ さ い。 FFT ブ ロ ッ ク では、 次に説明する基数 4 の<br />

Cooley-Tukey 型アルゴ リ ズムを使用し て、 離散フー リ エ変換 (DFT)<br />

が実行されます。<br />

FFT v3_1 ザイ リ ンクスの FFT v3_1 ブロックは、 Virtex4、 Virtex-II、 Virtex-II<br />

Pro、 Spartan-3 デバイ スでのみサポー ト さ れます。 この FFT では、 離<br />

散フーリ エ変換 (DFT) を計算する効率的なアルゴ リ ズムが イ ンプ リ<br />

メントされます。<br />

34 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックセッ ト ラ イ ブ ラ リ の構造<br />

表 6 : Index ブロッ ク<br />

Index ブロック 説明<br />

FFT v3_2 ザイ リ ンクスの FFT v3_2 ブロックは、 Virtex4、 Virtex-II、 Virtex-II<br />

Pro、 Spartan-3 デバイ スでのみサポー ト さ れます。 この FFT では、 離<br />

散フーリ エ変換 (DFT) を計算する効率的なアルゴ リ ズムが イ ンプ リ<br />

メントされます。<br />

FFT v4_1 ザイ リ ンクスの FFT v4_1 ブロックは、 Virtex-5、 Virtex4、 Virtex-II、<br />

Virtex-II Pro、 Spartan-3、 Spartan-3E、 Spartan-3A デバ イ ス でのみサ<br />

ポー ト されます。 この FFT では、 離散フー リ エ変換 (DFT) を計算す<br />

る効率的なアルゴ リ ズムが イ ンプ リ メ ン ト さ れます。<br />

FIFO ザイ リ ンクスの FIFO ブロックは、 FIFO メモリ キューをインプリ メ<br />

ントします。<br />

FIR Compiler v1_0 ザイ リ ンクス FIR Compiler v1_0 ブロックは、 高速 MAC ベース の<br />

FIR フィルタをインプリメントします。 こ のブ ロ ッ ク は、 入力データ<br />

のス ト リームを受信し、 フ ィルタのコンフ ィギュレーシ ョ ンに応じて<br />

フ ィ ルタ処理し た結果を、 固定の遅延で出力し ます。<br />

FIR Compiler v2_0 ザイ リ ンクス FIR Compiler v2_0 ブロックは、 高速 MAC ベース の<br />

FIR フィルタをインプリメントします。 こ のブ ロ ッ ク は、 入力データ<br />

のス ト リームを受信し、 フ ィルタのコンフ ィギュレーシ ョ ンに応じて<br />

フ ィ ルタ処理し た結果を、 固定の遅延で出力し ます。<br />

FIR Compiler v3_0 ザイ リ ンクス FIR Compiler v3_0 ブロックは、 高速 MAC ベース の<br />

FIR フィルタをインプリメントします。 こ のブ ロ ッ ク は、 入力データ<br />

のス ト リームを受信し、 フ ィルタのコンフ ィギュレーシ ョ ンに応じて<br />

フ ィ ルタ処理し た結果を、 固定の遅延で出力し ます。<br />

FIR Compiler v3_1 ザイ リ ンクス FIR Compiler v3_1 ブロックは、 高速 MAC ベース の<br />

FIR フィルタをインプリメントします。 こ のブ ロ ッ ク は、 入力データ<br />

のス ト リームを受信し、 フ ィルタのコンフ ィギュレーシ ョ ンに応じて<br />

フ ィ ルタ処理し た結果を、 固定の遅延で出力し ます。<br />

From FIFO ザイ リ ンクスの FIFO ブロックは、 FIFO メモリ キューをインプリ メ<br />

ントします。<br />

From Register ザイ リ ンクス From Register ブロッ クは、 D フリ ップフロップ ベース<br />

のレ ジ ス タ の後半分を イ ンプ リ メ ン ト し ます。 物理的なレジスタは、<br />

2 つのデザイ ンまたは同じデザイ ンの 2 箇所で共有で き ます。<br />

Gateway In ザイ リ ンクスの Gateway In ブロッ クは、 Simulink デザイ ンのザイ リ<br />

ン ク ス部分への入力に使用し ます。 このブロックは、 Simulink の整<br />

数、 ダブル データ、 固定小数点な どのデータ型を <strong>System</strong> <strong>Generator</strong><br />

の固定小数点型に変換し ます。 各ブロ ッ クでは、 <strong>System</strong> <strong>Generator</strong> で<br />

生成さ れた HDL デザ イ ンの最上位入力ポー ト を定義し ます。<br />

Gateway Out ザイ リ ンクスの Gateway Out ブロッ クは、 Simulink デザイ ンのザイ<br />

リ ン ク ス部か ら の出力に使用し ます。 このブロックでは、 <strong>System</strong><br />

<strong>Generator</strong> の固定小数点型のデータ が Simulink のダブル データ型に<br />

変換さ れます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 35<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

表 6 : Index ブロッ ク<br />

Index ブロック 説明<br />

Indeterminate Probe ザイ リ ンクスの Indeterminate Probe ブ ロ ッ ク の出力は、 入力データ<br />

が不定値 (MATLAB 値が NaN) かど うかを示します。 不定データは、<br />

VHDL の不定データ値を表す X に相当し ます。<br />

Interleaver<br />

Deinterleaver v4_0<br />

Interleaver<br />

Deinterleaver v5_0<br />

ザイ リ ンクスの Interleaver/Deinterleaver ブロッ クは、 インターリー<br />

バまたはデインターリーバをインプリ メ ン ト します。 インターリーバ<br />

は、 1:1 の確定的な方法でシンボルのシーケ ン ス順序を並び替え るデ<br />

バイスです。 デイ ン ター リ ーバは、 こ の並び替え ら れたシーケン ス を<br />

再び格納するデバイ スです。<br />

ザイ リ ンクスの Interleaver/Deinterleaver ブロッ クは、 インターリー<br />

バまたはデインターリーバをインプリ メ ン ト します。 インターリーバ<br />

は、 1:1 の確定的な方法でシンボルのシーケ ン ス順序を並び替え るデ<br />

バイスです。 デイ ン ター リ ーバは、 こ の並び替え ら れたシーケン ス を<br />

再び格納するデバイ スです。<br />

Inverter ザイ リ ンクスの Inverter ブ ロ ッ ク では、 固定小数点型の論理コ ンポー<br />

ネン ト がビ ッ ト 単位で計算さ れます。 こ のブ ロ ッ ク は、 合成可能な<br />

VHDL モジュールと してインプ リ メ ン ト されます。<br />

JTAG Co-Simulation JTAG Co-Simulation ブ ロ ッ ク を使用する と 、 JTAG とパラレル ケー<br />

ブル IV またはプラ ッ ト フォーム USB を使用したハード ウ ェア協調シ<br />

ミ ュ レーシ ョ ン を実行で き ます。 このブロックのインターフェイス<br />

は、 広 く 普及し ている JTAG を活用して <strong>System</strong> <strong>Generator</strong> の<br />

Hardware in the Loop シ ミ ュ レーシ ョ ンをほかのさ まざまな FPGA プ<br />

ラ ッ ト フ ォームに拡張し ています。<br />

LFSR ザイ リ ンクスの LFSR ブロッ クは、 LFSR (Linear Feedback Shift<br />

Register) をインプリ メント します。 このブロックでは、 XOR または<br />

XNOR のいずれかを使用し てガ ロ アおよびフ ィ ボナ ッ チ構造の両方<br />

がサポー ト さ れる ほか、 リ ロー ド 可能な入力を使用し て、 レ ジ ス タ の<br />

値をいつで も変更で き ます。 LFSR の出力と リ ロード可能な入力は、<br />

シリアル ポー ト またはパラ レル ポー ト のいずれかでコ ンフ ィ ギュ<br />

レーシ ョ ンできます。<br />

Logical ザイ リ ンクスの Logical ブロッ クでは、 2、 3、 または 4 つの固定小数<br />

点の値のビ ッ ト 単位の論理演算が実行さ れます。 オペラ ン ド には、 2<br />

進小数点の位置を揃え る ため、 必要に応じ て 0 がパデ ィ ング された<br />

り 、 符号が拡張さ れた り し ます。 こ れら の値で論理演算が実行さ れ、<br />

結果が出力ポー ト に送信されます。<br />

MCode ザイ リ ンクスの MCode ブロッ クは、Simulink でユーザーの提供する<br />

MATLAB 関数を実行する ための コ ンテナです。 M 関数の名前はブ<br />

ロックのパラメータから指定します。 このブロックは、 M コード を実<br />

行して Simulink のシ ミ ュ レーシ ョ ン中にブ ロ ッ ク の出力を計算し ま<br />

す。 同じ コー ド は、 ハー ド ウ ェ アが生成さ れる と き に、 同等のビヘイ<br />

ビア レベルの VHDL/Verilog に直接変換さ れます。<br />

MicroBlaze Processor このブロックは廃止されています。 EDK Processor ブロッ クを使用し<br />

てください。<br />

36 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックセッ ト ラ イ ブ ラ リ の構造<br />

表 6 : Index ブロッ ク<br />

Index ブロック 説明<br />

ModelSim <strong>System</strong> <strong>Generator</strong> の Black Box ブ ロ ッ ク を使用する と 、 既存の HDL<br />

フ ァ イ ルをモデルに組み込むこ と がで き ます。 モデルがシ ミ ュ レー<br />

ションされると、協調シミュレーションを使用してブラック ボック<br />

スがシ ミ ュレーシ ョ ンされるよ うにできます。 この ModelSim HDL<br />

協調シ ミ ュ レーシ ョ ン ブロックでは、1 つま たは複数のブ ラ ッ ク ボッ<br />

ク スの協調シ ミ ュレーシ ョ ンがコンフ ィギュレーシ ョ ンおよび制御で<br />

きます。<br />

Mult ザイ リ ンクスの Mult ブ ロ ッ ク は、 乗算器を イ ンプ リ メ ン ト し ます。<br />

このブロックでは、 2 つの入力ポー ト のデータ の積が出力ポー ト に出<br />

力されます。<br />

Multiple Subsystem<br />

<strong>Generator</strong><br />

ザイ リ ンクスの Multiple Subsystem <strong>Generator</strong> ブ ロ ッ ク は、 複数の<br />

<strong>System</strong> <strong>Generator</strong> デザイ ンを複数の ク ロ ッ ク ド メ イ ン を使用する 1<br />

つの最上位レベルの HDL コ ンポーネン ト に接続し ます。 こ の最上位<br />

レベルのコンポーネン ト には、 各 <strong>System</strong> <strong>Generator</strong> デザイ ンに接続<br />

されたロ ジ ッ ク と、 デザイ ンが互いに通信でき る よ う にする ロ ジ ッ ク<br />

が含まれます。<br />

Mux ザイ リ ンクスの Mux ブロックは、 マルチプレクサをインプリ メン ト<br />

します。 ブロッ クには、 セレク ト入力 (符号な し) が 1 つと、 ユーザー<br />

がコンフィギュレーショ ン可能なデータ バス入力 (0 ~ 1024 の範囲)<br />

がい く つか含まれます。<br />

Negate ザイ リ ンクスの Negate ブ ロ ッ ク では、 入力の論理否定 (2 の補数) が<br />

実行さ れます。 このブロックは、ザイ リンクス LogiCORE または合成<br />

可能な VHDL モジュールと してインプ リ メ ン ト できます。<br />

Network-based<br />

Ethernet Co-<br />

Simulation<br />

ザイ リ ンクスの Network-based Ethernet Co-Simulation ブロッ クは、<br />

IPv4 ネッ ト ワーク インフラスト ラクチャのイーサネッ ト接続を介し<br />

て、 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行する イ ン ターフ ェ イ ス<br />

を提供し ます。<br />

Opmode ザイ リ ンクスの Opmode ブロッ クでは、 <strong>DSP</strong>48 または <strong>DSP</strong>48E 命令<br />

の定数が生成さ れます。 この命令は、 <strong>DSP</strong>48 の場合が 11 ビット値、<br />

<strong>DSP</strong>48E の場合が 15 ビッ ト値になります。 命令には、 opmode、<br />

carry-in、 carry-in select が含まれるほか、 <strong>DSP</strong>48 か <strong>DSP</strong>48E かに<br />

よって subtract または alumode ビッ トのいずれかが含まれます。<br />

Parallel to Serial Parallel to Serial ブ ロ ッ ク は、 入力ワー ド を読み込み、 それを分割し<br />

てマルチプレ クサで N 倍多重化し た出力ワー ド に し ます。 N は、 入<br />

力ビ ッ ト か ら出力ビ ッ ト の数の比率です。 出力順は、 LSB からか<br />

MSB からかのどちらかになり ます。<br />

Pause Simulation ザイ リ ンクスの Pause Simulation ブロックでは、入力が 0 以外の場合<br />

にシ ミ ュ レーシ ョ ン を一時停止し ます。 このブロックには、 ザイ リン<br />

ク スの信号タ イ プで も入力 と し て使用で き ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 37<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

表 6 : Index ブロッ ク<br />

Index ブロック 説明<br />

PicoBlaze Instruction<br />

Display<br />

PicoBlaze<br />

Microcontroller<br />

Point-to-point Ethernet<br />

Co-Simulation<br />

PicoBlaze Instruction Display ブロッ クは、 エンコード された 18 ビッ<br />

トの PicoBlaze 命令 と 10 ビ ッ ト のア ド レ ス を読み込み、 デコー ド さ<br />

れた命令とプログ ラ ム カウンタをブロックのアイコンに表示します。<br />

こ のブ ロ ッ ク を使用する と 、 PicoBlaze デザイ ンをデバ ッ グするのに<br />

便利です。 ま た、 こ のブ ロ ッ ク を Single-Step Simulation ブロック と<br />

共に使用し て、 各命令を実行する こ と も で き ます。<br />

PicoBlaze Microcontroller ブロッ クは、 PicoBlaze マクロを使用して<br />

8 ビットのエンベデッド マイクロコント ローラをインプリ メント しま<br />

す。<br />

ザイ リ ンクスの Point-to-point Ethernet Co-Simulation ブロッ クは、<br />

イーサネ ッ ト 接続を介し て、 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実<br />

行する イ ン ターフ ェ イ ス を提供し ます。<br />

Puncture ザイ リ ンクスの Puncture ブロッ クでは、 データ ストリームの入力 ワー ド か ら ユーザーが指定し たビ ッ ト のセ ッ ト が削除さ れます。<br />

Register ザイ リ ンクスの Register ブロックは、 1 サンプル周期のレ イ テンシを<br />

含む D フリ ップフロップ ベースのレジス タ にな り ます。<br />

Reinterpret ザイ リ ンクスの Reinterpret ブ ロ ッ ク は、 入力値に関係な く 、 出力を<br />

強制的に新し いデータ型に し ます。<br />

Relational ザイ リ ンクスの Relational ブロッ クは、 コンパレータをインプリ メン<br />

トします。<br />

Resource Estimator ザイ リ ンクスの Resource Estimator ブ ロ ッ ク を使用する と 、 <strong>System</strong><br />

<strong>Generator</strong> サブシステムまたはモデルをイ ンプ リ メ ン ト するのに必要<br />

な FPGA リ ソ ースが高速に概算で き ます。<br />

ROM ザイ リ ンクスの ROM ブロッ クは、シングル ポー ト の読み出し専用 メ<br />

モリ (ROM) です。<br />

RS Decoder v5_1 Reed-Solomon (RS) コードは、 ブロ ッ ク ベースの誤 り 訂正符号<br />

(ECC) で、 デジ タル通信およびス ト レージ分野の さ ま ざ ま なアプ リ<br />

ケーシ ョ ンに使用さ れています。<br />

RS Decoder v6_0 Reed-Solomon (RS) コードは、 ブロ ッ ク ベースの誤 り 訂正符号<br />

(ECC) で、 デジ タル通信およびス ト レージ分野の さ ま ざ ま なアプ リ<br />

ケーシ ョ ンに使用さ れています。<br />

RS Encoder v5_0 Reed-Solomon (RS) コードは、 ブロ ッ ク ベースの誤 り 訂正符号<br />

(ECC) で、 デジ タル通信およびス ト レージ分野の さ ま ざ ま なアプ リ<br />

ケーシ ョ ンに使用さ れています。<br />

RS Encoder v6_0 Reed-Solomon (RS) コードは、 ブロ ッ ク ベースの誤 り 訂正符号<br />

(ECC) で、 デジ タル通信およびス ト レージ分野の さ ま ざ ま なアプ リ<br />

ケーシ ョ ンに使用さ れています。<br />

38 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックセッ ト ラ イ ブ ラ リ の構造<br />

表 6 : Index ブロッ ク<br />

Index ブロック 説明<br />

Sample Time Sample Time ブ ロ ッ ク では、 標準化された入力値のサンプル周期がレ<br />

ポー ト されます。 標準化さ れたサンプル周期は、 Simulink の絶対サン<br />

プル周期 と は異な り ます。 ハー ド ウ ェ アでは、 定数 と し て イ ンプ リ メ<br />

ントされます。<br />

Scale ザイ リ ンクスの Scale ブロックでは、 入力が 2 のべき乗でス ケール変<br />

換されます。 べき乗の値は、 正にでも負にでもでき ます。 このブロッ<br />

ク には、 入力が 1 つ と 出力が 1 つあ り ます。 ス ケール変換では、 コ ン<br />

テナ内のビ ッ ト を変更せずに 2 進小数点の位置が移動 さ れます。<br />

Serial to Parallel Serial to Parallel ブ ロ ッ ク では、 連続し て入力さ れたデータ が指定し<br />

た倍数のサイ ズの出力 1 つにま と められて、 出力されます。 この連続<br />

入力は、 最上位ワー ド ま たは最下位ワー ド のいずれかを先頭に し た順<br />

序にな り ます。<br />

Shared Memory ザイ リ ンクスの Shared Memory ブロッ クは、 複数のデザインや 1 つ<br />

のデザイ ンの選択し た箇所で共有で き る ラ ンダム アクセス メモリ<br />

(RAM) をインプリ メント します。<br />

Shared Memory Read ザイ リ ンクスの Shared Memory Read ブロッ クは、 ザイ リ ンクスの共<br />

有メモリ オブジ ェ ク ト か ら データ を読み出すための高速イ ン ター<br />

フェイスです。 このブロックでは、 FIFO オブジェ ク ト と ロ ッ ク可能<br />

な共有メ モ リ オブジェ ク ト の両方がサポー ト されます。<br />

Shared Memory Write ザイ リ ンクスの Shared Memory Read ブロッ クは、 ザイ リ ンクスの共<br />

有メモリ オブジェ ク ト にデータを書き込むための高速インターフェ<br />

イスです。 このブロックでは、 FIFO オブジェ ク ト と ロ ッ ク可能な共<br />

有メモリ オブジェ ク ト の両方がサポー ト されます。<br />

Shift ザイ リ ンクスの Shift ブ ロ ッ ク は、 入力信号を左ま たは右にシフ ト し<br />

ます。 出力には、 入力 と 同じ固定小数点の コ ンテナが含まれます。<br />

Simulation Multiplexer Simulation Multiplexer ブロッ クは、 <strong>System</strong> <strong>Generator</strong> で廃止されて<br />

います。<br />

SineCosine ザイ リ ンクスの SineCosine ブロッ クでは sin(x) と cos(x) のどちらか、<br />

ま たは両方が計算さ れ、 <strong>リファレンス</strong> サイン波を ROM に格納し ま<br />

す。 ROM の深 さ は、 こ のブ ロ ッ ク の入力ポー ト の幅で定義 さ れます。<br />

Single Port RAM ザイ リ ンクスの Single Port RAM ブ ロ ッ ク は、 データ入力ポー ト と<br />

データ出力ポー ト が 1 つずつ付いた ラ ンダム アクセス メモリ (RAM)<br />

をインプリ メント します。<br />

Single-Step Simulation ザイ リ ンクスの Single-Step Simulation ブロックは、 シングル ステッ<br />

プ モー ド の場合に ク ロ ッ ク サイクルごとにシミ ュレーショ ンを一時<br />

停止し ます。<br />

Slice ザイ リ ンクスの Slice ブ ロ ッ ク を使用する と 、 入力データ か ら ビ ッ ト<br />

のシーケンスを切り取り、 新しいデータ値を作成できます。 このデー<br />

タ値がブロ ッ クから出力されます。 出力データ型は、 2 進小数点が 0<br />

の位置の符合な し にな り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 39<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

表 6 : Index ブロッ ク<br />

Index ブロック 説明<br />

<strong>System</strong> <strong>Generator</strong> <strong>System</strong> <strong>Generator</strong> ブ ロ ッ ク は、 シ ス テム制御およびシ ミ ュ レーシ ョ ン<br />

パ ラ メ ータ を提供し、 コー ド ジ ェ ネレータ を起動する ために使用さ<br />

れます。 ザイ リンクス ブロックセッ トからのエレメン ト を含む<br />

Simulink モデルには、 <strong>System</strong> <strong>Generator</strong> ブロッ クが最低 1 つは含ま<br />

れます。 <strong>System</strong> <strong>Generator</strong> ブ ロ ッ ク をモデルに追加する と 、 コー ド の<br />

生成およびシ ミ ュ レーシ ョ ンの処理方法を指定で き る よ う にな り ま<br />

す。<br />

Threshold ザイ リ ンクスの Threshold ブ ロ ッ ク では、 入力数の符号がテ ス ト さ れ<br />

ます。 入力数が負の場合、 ブ ロ ッ ク の出力は -1 にな り、 それ以外の場<br />

合は出力は 1 にな り ます。 出力は 2 ビ ッ ト の長さ の符号付き固定小数<br />

点整数です。 ブ ロ ッ ク には、 入力 と 出力が 1 つずつ含まれます。<br />

Time Division<br />

Demultiplexer<br />

Time Division<br />

Multiplexer<br />

ザイ リ ンクスの Time Division Demultiplexer ブロッ クは、 シリアル<br />

入力をそれよ り 遅いレー ト の複数の出力に し ます。<br />

ザイ リ ンクスの Time Division Multiplexer ブロッ クは、入力ポートの<br />

値を 1 つの高速レー ト の出力ス ト リ ームに多重化し ます。<br />

To FIFO ザイ リ ンクス To FIFO ブロッ クは、First-In First-Out (FIFO) のメモリ<br />

キ ューの前半分を イ ンプ リ メ ン ト し ます。<br />

To Register ザイ リ ンクスの To Register ブロッ クは、1 サンプル周期のレイテンシ<br />

を含む D フリ ップフロップ ベースのレジス タ の前半部分を イ ンプ リ<br />

メントします。 レ ジ ス タは、 複数デザ イ ン ま たは 1 つのデザイ ンの複<br />

数セク シ ョ ンで共有でき ます。<br />

Toolbar ザイ リ ンクスの Toolbar ブ ロ ッ ク を使用する と 、 <strong>System</strong> <strong>Generator</strong> の<br />

複数の便利なユーテ ィ リ テ ィ に素早 く ア ク セスで き ます。 Toolbar ブ<br />

ロックは、Simulink の拡大/縮小表示を簡単に し、 新し い自動レ イ ア<br />

ウトや Simulink モデルへの配線機能を追加し ます。<br />

Up Sample ザイ リ ンクスの Up Sample ブロックは、 ブロックが配置された箇所<br />

のサンプル レー ト を増加する ために使用し ます。 出力サンプル周期<br />

は、 1/n にな り ます (1 が入力サンプル周期、 n はサンプ リ ング レー ト<br />

)。<br />

Viterbi Decoder v5_0 たたみ込みエン コーダでエン コー ド さ れたデータは、 ザ イ リ ン ク ス の<br />

Viterbi Decoder ブロックを使用してデコードできます。<br />

Viterbi Decoder v6_0 たたみ込みエン コーダでエン コー ド さ れたデータは、 ザ イ リ ン ク ス の<br />

Viterbi Decoder ブロックを使用してデコードできます。<br />

WaveScope <strong>System</strong> <strong>Generator</strong> の WaveScope ブロッ クは、 高度な機能を備えた使<br />

いやすい波形ビ ューアで、 <strong>System</strong> <strong>Generator</strong> デザ イ ンの解析およびデ<br />

バ ッ グに使用し ます。<br />

40 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックセッ ト ラ イ ブ ラ リ の構造<br />

Math ブロック<br />

表 7 : Math ブロッ ク<br />

Math ブロック 説明<br />

Accumulator ザイ リ ンクスの Accumulator ブ ロ ッ ク は、 加算器ま たは減算器ベース<br />

のスケーリ ング アキュムレータです。<br />

AddSub ザイ リ ンクスの AddSub ブ ロ ッ ク は、 加算器/減算器です。 処理方法<br />

は、 加算か減算のど ち ら かに指定する こ と も で き ますが、 sub 信号の<br />

制御に従ってダ イ ナ ミ ッ ク に変更する こ と も で き ます。<br />

CMult ザイ リ ンクスの CMult ブロッ クは、 gain 演算子を イ ンプ リ メ ン ト し<br />

ます。 出力は、 入力 と 定数値の積にな り ます。 この値は、 定数を求め<br />

る MATLAB の論理式で表すこ と がで き ます。<br />

Constant ザイ リ ンクスの Constant ブ ロ ッ ク では、 固定小数点値、 ブール値、<br />

<strong>DSP</strong>48 命令のいずれかの定数が生成さ れます。 このブロッ クは、<br />

Simulink の Constant ブロッ ク と類似していますが、 ザイ リンクス ブ<br />

ロ ッ ク の入力を直接駆動で き る点が異な り ます。<br />

Convert ザイ リ ンクスの Convert ブ ロ ッ ク では、 各入力サンプルが指定し た演<br />

算タ イプの値に変換されます。 た と えば、 あ る数値を符号付き (2 の補<br />

数) または符号なしの値にできます。<br />

Counter ザイ リ ンクスの Counter ブロックは、 フ リー ランニング カウンタ、<br />

またはアップ カウンタ、 ダウン カウンタ、 アップ/ダウン カウンタな<br />

どのカ ウ ン ト 制限のあ る カ ウ ン タ を イ ンプ リ メ ン ト し ます。 カウンタ<br />

の出力は、 符号付き ま たは符号な し の固定小数点の値で指定で き ま<br />

す。<br />

Expression ザイ リ ンクスの Expression ブ ロ ッ ク は、 ビ ッ ト 単位の論理式を実行<br />

します。<br />

Inverter ザイ リ ンクスの Inverter ブ ロ ッ ク では、 固定小数点型の論理コ ンポー<br />

ネン ト がビ ッ ト 単位で計算さ れます。 こ のブ ロ ッ ク は、 合成可能な<br />

VHDL モジュールと してインプ リ メ ン ト されます。<br />

Logical ザイ リ ンクスの Logical ブロッ クでは、 2、 3、 または 4 つの固定小数<br />

点の値のビ ッ ト 単位の論理演算が実行さ れます。 オペラ ン ド には、 2<br />

進小数点の位置を揃え る ため、 必要に応じ て 0 がパデ ィ ング された<br />

り 、 符号が拡張さ れた り し ます。 こ れら の値で論理演算が実行さ れ、<br />

結果が出力ポー ト に送信されます。<br />

MCode ザイ リ ンクスの MCode ブロッ クは、Simulink でユーザーの提供する<br />

MATLAB 関数を実行する ための コ ンテナです。 M 関数の名前はブ<br />

ロックのパラメータから指定します。 このブロックは、 M コード を実<br />

行して Simulink のシ ミ ュ レーシ ョ ン中にブ ロ ッ ク の出力を計算し ま<br />

す。 同じ コー ド は、 ハー ド ウ ェ アが生成さ れる と き に、 同等のビヘイ<br />

ビア レベルの VHDL/Verilog に直接変換さ れます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 41<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

表 7 : Math ブロッ ク<br />

Memory ブロック<br />

Math ブロック 説明<br />

Mult ザイ リ ンクスの Mult ブ ロ ッ ク は、 乗算器を イ ンプ リ メ ン ト し ます。<br />

このブロックでは、 2 つの入力ポー ト のデータ の積が出力ポー ト に出<br />

力されます。<br />

Negate ザイ リ ンクスの Negate ブ ロ ッ ク では、 入力の論理否定 (2 の補数) が<br />

実行さ れます。 このブロックは、ザイ リンクス LogiCORE または合成<br />

可能な VHDL モジュールと してインプ リ メ ン ト できます。<br />

Reinterpret ザイ リ ンクスの Reinterpret ブ ロ ッ ク は、 入力値に関係な く 、 出力を<br />

強制的に新し いデータ型に し ます。<br />

Relational ザイ リ ンクスの Relational ブロッ クは、 コンパレータをインプリ メン<br />

トします。<br />

Scale ザイ リ ンクスの Scale ブロックでは、 入力が 2 のべき乗でス ケール変<br />

換されます。 べき乗の値は、 正にでも負にでもでき ます。 このブロッ<br />

ク には、 入力が 1 つ と 出力が 1 つあ り ます。 ス ケール変換では、 コ ン<br />

テナ内のビ ッ ト を変更せずに 2 進小数点の位置が移動 さ れます。<br />

Shift ザイ リ ンクスの Shift ブ ロ ッ ク は、 入力信号を左ま たは右にシフ ト し<br />

ます。 出力には、 入力 と 同じ固定小数点の コ ンテナが含まれます。<br />

SineCosine ザイ リ ンクスの SineCosine ブロッ クでは sin(x) と cos(x) のどちらか、<br />

ま たは両方が計算さ れ、 <strong>リファレンス</strong> サイン波を ROM に格納し ま<br />

す。 ROM の深 さ は、 こ のブ ロ ッ ク の入力ポー ト の幅で定義 さ れます。<br />

Threshold ザイ リ ンクスの Threshold ブ ロ ッ ク では、 入力数の符号がテ ス ト さ れ<br />

ます。 入力数が負の場合、 ブ ロ ッ ク の出力は -1 にな り、 それ以外の場<br />

合は出力は 1 にな り ます。 出力は 2 ビ ッ ト の長さ の符号付き固定小数<br />

点整数です。 ブ ロ ッ ク には、 入力 と 出力が 1 つずつ含まれます。<br />

表 8 : Memory ブロッ ク<br />

Memory ブロック 説明<br />

Addressable Shift<br />

Register<br />

ザイ リ ンクスの Addressable Shift Register ブ ロ ッ ク は、可変長シフ ト<br />

レ ジ ス タ で、 遅延チェーンのどのレ ジ ス タ で も呼び出し て、 出力デー<br />

タ ポー ト に駆動で き ます。<br />

Delay Delay ブロッ クは、 L サ イ ク ルの固定遅延を イ ンプ リ メ ン ト し ます。<br />

Dual Port RAM ザイ リ ンクスの Dual Port RAM ブロックは、 ランダム アクセス メモ<br />

リ (RAM) をインプリ メント します。 デュアル ポー ト を使用する と 、<br />

複数のデータ幅を使用し て異な る サンプル レート でメモ リ空間に同<br />

時にア ク セスでき ます。<br />

42 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックセッ ト ラ イ ブ ラ リ の構造<br />

表 8 : Memory ブロッ ク<br />

Memory ブロック 説明<br />

FFT v4_1 ザイ リ ンクスの FFT v4_1 ブロックは、 Virtex-5、 Virtex4、 Virtex-II、<br />

Virtex-II Pro、 Spartan-3、 Spartan-3E、 Spartan-3A デバ イ ス でのみサ<br />

ポー ト されます。 この FFT では、 離散フー リ エ変換 (DFT) を計算す<br />

る効率的なアルゴ リ ズムが イ ンプ リ メ ン ト さ れます。<br />

LFSR ザイ リ ンクスの LFSR ブロッ クは、 LFSR (Linear Feedback Shift<br />

Register) をインプリ メント します。 このブロックでは、 XOR または<br />

XNOR のいずれかを使用し てガ ロ アおよびフ ィ ボナ ッ チ構造の両方<br />

がサポー ト さ れる ほか、 リ ロー ド 可能な入力を使用し て、 レ ジ ス タ の<br />

値をいつで も変更で き ます。 LFSR の出力と リ ロード可能な入力は、<br />

シリアル ポー ト またはパラ レル ポー ト のいずれかでコ ンフ ィ ギュ<br />

レーシ ョ ンできます。<br />

Register ザイ リ ンクスの Register ブロックは、 1 サンプル周期のレ イ テンシを<br />

含む D フリ ップフロップ ベースのレジス タ にな り ます。<br />

ROM ザイ リ ンクスの ROM ブロッ クは、シングル ポー ト の読み出し専用 メ<br />

モリ (ROM) です。<br />

Shared Memory ザイ リ ンクスの Shared Memory ブロッ クは、 複数のデザインや 1 つ<br />

のデザイ ンの選択し た箇所で共有で き る ラ ンダム アクセス メモリ<br />

(RAM) をインプリ メント します。<br />

Single Port RAM ザイ リ ンクスの Single Port RAM ブ ロ ッ ク は、 データ入力ポー ト と<br />

データ出力ポー ト が 1 つずつ付いた ラ ンダム アクセス メモリ (RAM)<br />

をインプリ メント します。<br />

Shared Memory ブロック<br />

表 9 : Shared Memory ブロック<br />

Shared Memory<br />

ブロック<br />

説明<br />

From FIFO ザイ リ ンクス From FIFO ブロッ クは、 First-In First-Out (FIFO) のメ<br />

モリ キ ューの後半分を イ ンプ リ メ ン ト し ます。<br />

From Register ザイ リ ンクス From Register ブロッ クは、 D フリ ップフロップ ベース<br />

のレ ジ ス タ の後半分を イ ンプ リ メ ン ト し ます。 物理的なレジスタは、<br />

2 つのデザイ ンまたは同じデザイ ンの 2 箇所で共有で き ます。<br />

Multiple Subsystem<br />

<strong>Generator</strong><br />

ザイ リ ンクスの Multiple Subsystem <strong>Generator</strong> ブ ロ ッ ク は、 複数の<br />

<strong>System</strong> <strong>Generator</strong> デザイ ンを複数の ク ロ ッ ク ド メ イ ン を使用する 1<br />

つの最上位レベルの HDL コ ンポーネン ト に接続し ます。 こ の最上位<br />

レベルのコンポーネン ト には、 各 <strong>System</strong> <strong>Generator</strong> デザイ ンに接続<br />

されたロ ジ ッ ク と、 デザイ ンが互いに通信でき る よ う にする ロ ジ ッ ク<br />

が含まれます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 43<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Tools ブロック<br />

表 9 : Shared Memory ブロック<br />

Shared Memory<br />

ブロック<br />

Shared Memory ザイ リ ンクスの Shared Memory ブロッ クは、 複数のデザインや 1 つ<br />

のデザイ ンの選択し た箇所で共有で き る ラ ンダム アクセス メモリ<br />

(RAM) をインプリ メント します。<br />

Shared Memory Read ザイ リ ンクスの Shared Memory Read ブロッ クは、 ザイ リ ンクスの共<br />

有メモリ オブジ ェ ク ト か ら データ を読み出すための高速イ ン ター<br />

フェイスです。 このブロックでは、 FIFO オブジェ ク ト と ロ ッ ク可能<br />

な共有メ モ リ オブジェ ク ト の両方がサポー ト されます。<br />

Shared Memory Write ザイ リ ンクスの Shared Memory Read ブロッ クは、 ザイ リ ンクスの共<br />

有メモリ オブジェ ク ト にデータを書き込むための高速インターフェ<br />

イスです。 このブロックでは、 FIFO オブジェ ク ト と ロ ッ ク可能な共<br />

有メモリ オブジェ ク ト の両方がサポー ト されます。<br />

To FIFO ザイ リ ンクス To FIFO ブロッ クは、First-In First-Out (FIFO) のメモリ<br />

キ ューの前半分を イ ンプ リ メ ン ト し ます。<br />

To Register ザイ リ ンクスの To Register ブロッ クは、1 サンプル周期のレイテンシ<br />

を含む D フリ ップフロップ ベースのレジス タ の前半部分を イ ンプ リ<br />

メントします。 レ ジ ス タは、 複数デザ イ ン ま たは 1 つのデザイ ンの複<br />

数セク シ ョ ンで共有でき ます。<br />

表 10 : Tools ブロッ ク<br />

説明<br />

Tools ブロック 説明<br />

ChipScope ザイ リ ンクス ChipScop ブロッ クでは、 ランタイム デバ ッ グおよび<br />

FPGA 内の信号検証など を実行で き ます。<br />

Clock Probe ザイ リ ンクスの Clock Probe ブ ロ ッ ク では、 倍精度の ク ロ ッ ク 信号が<br />

Simulink シ ス テム周期 と 同じ周期で出力さ れます。<br />

Configurable<br />

Subsystem Manager<br />

ザイ リ ンクスの Configurable Subsystem Manager ブロッ クは、<br />

Simulink のコンフィギャブル システムの機能を拡張したブロックで、<br />

シ ミ ュ レーシ ョ ン と 同様、 ハー ド ウ ェ アの生成に も サブシ ス テム コ<br />

ンフィギュレーションが選択できるようになります。<br />

FDATool ザイ リ ンクスの FDATool ブロッ クは、MATLAB の Signal Processing<br />

Toolbox の一部であ る FDATool ソフトウェアへのインターフェイス<br />

にな り ます。<br />

Indeterminate Probe ザイ リ ンクスの Indeterminate Probe ブ ロ ッ ク の出力は、 入力データ<br />

が不定値 (MATLAB 値が NaN) かど うかを示します。 不定データは、<br />

VHDL の不定データ値を表す X に相当し ます。<br />

44 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックセッ ト ラ イ ブ ラ リ の構造<br />

表 10 : Tools ブロッ ク<br />

Tools ブロック 説明<br />

ModelSim <strong>System</strong> <strong>Generator</strong> の Black Box ブ ロ ッ ク を使用する と 、 既存の HDL<br />

フ ァ イ ルをモデルに組み込むこ と がで き ます。 モデルがシ ミ ュ レー<br />

ションされると、協調シミュレーションを使用してブラック ボック<br />

スがシ ミ ュレーシ ョ ンされるよ うにできます。 この ModelSim HDL<br />

協調シ ミ ュ レーシ ョ ン ブロックでは、1 つま たは複数のブ ラ ッ ク ボッ<br />

ク スの協調シ ミ ュレーシ ョ ンがコンフ ィギュレーシ ョ ンおよび制御で<br />

きます。<br />

Pause Simulation ザイ リ ンクスの Pause Simulation ブロックでは、入力が 0 以外の場合<br />

にシ ミ ュ レーシ ョ ン を一時停止し ます。 このブロックには、 ザイ リン<br />

ク スの信号タ イ プで も入力 と し て使用で き ます。<br />

PicoBlaze Instruction<br />

Display<br />

PicoBlaze Instruction Display ブロッ クは、 エンコード された 18 ビッ<br />

トの PicoBlaze 命令 と 10 ビ ッ ト のア ド レ ス を読み込み、 デコー ド さ<br />

れた命令とプログ ラ ム カウンタをブロックのアイコンに表示します。<br />

こ のブ ロ ッ ク を使用する と 、 PicoBlaze デザイ ンをデバ ッ グするのに<br />

便利です。 ま た、 こ のブ ロ ッ ク を Single-Step Simulation ブロック と<br />

共に使用し て、 各命令を実行する こ と も で き ます。<br />

Resource Estimator ザイ リ ンクスの Resource Estimator ブ ロ ッ ク を使用する と 、 <strong>System</strong><br />

<strong>Generator</strong> サブシステムまたはモデルをイ ンプ リ メ ン ト するのに必要<br />

な FPGA リ ソ ースが高速に概算で き ます。<br />

Simulation Multiplexer Simulation Multiplexer ブロッ クは、 <strong>System</strong> <strong>Generator</strong> で廃止されて<br />

います。<br />

Single-Step Simulation ザイ リ ンクスの Single-Step Simulation ブロックは、 シングル ステッ<br />

プ モー ド の場合に ク ロ ッ ク サイクルごとにシミ ュレーショ ンを一時<br />

停止し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>System</strong> <strong>Generator</strong> ブ ロ ッ ク は、 シ ス テム制御およびシ ミ ュ レーシ ョ ン<br />

パ ラ メ ータ を提供し、 コー ド ジ ェ ネレータ を起動する ために使用さ<br />

れます。 ザイ リンクス ブロックセッ トからのエレメン ト を含む<br />

Simulink モデルには、 <strong>System</strong> <strong>Generator</strong> ブロッ クが最低 1 つは含ま<br />

れます。 <strong>System</strong> <strong>Generator</strong> ブ ロ ッ ク をモデルに追加する と 、 コー ド の<br />

生成およびシ ミ ュ レーシ ョ ンの処理方法を指定で き る よ う にな り ま<br />

す。<br />

Toolbar ザイ リ ンクスの Toolbar ブ ロ ッ ク を使用する と 、 <strong>System</strong> <strong>Generator</strong> の<br />

複数の便利なユーテ ィ リ テ ィ に素早 く ア ク セスで き ます。 Toolbar ブ<br />

ロックは、Simulink の拡大/縮小表示を簡単に し、 新し い自動レ イ ア<br />

ウトや Simulink モデルへの配線機能を追加し ます。<br />

WaveScope <strong>System</strong> <strong>Generator</strong> の WaveScope ブロッ クは、 高度な機能を備えた使<br />

いやすい波形ビ ューアで、 <strong>System</strong> <strong>Generator</strong> デザ イ ンの解析およびデ<br />

バ ッ グに使用し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 45<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロックのパラメータ ダイアログ ボ ッ ク スの共通オプシ ョ ン<br />

[Precision]<br />

[Type]<br />

[Number of bits]<br />

[Binary point]<br />

各ザ イ リ ン ク ス ブロッ クの制御やパラ メータは、 そのブロックのパラ メータ ダイアログ ボックス<br />

から設定できます。 このダイアログ ボックスは、ブロックをダブルクリックすると表示されます。<br />

これらのパラ メータの多く がそのブロ ッ クに特有のものです。 ブロッ ク特有のパラ メータの詳細に<br />

ついては、 そのブロ ッ ク の説明を参照し て く ださ い。<br />

その他の制御およびパ ラ メ ータは、 ほ と んどのブ ロ ッ ク で共通し ています。 次は、 共通の制御ボタ<br />

ンおよびパラ メータです。<br />

このダイアログ ボックスには、[OK]、 [Cancel]、 [Help]、 [Apply] の 4 つのボタ ンがあ り ます。<br />

[Apply] は、 ダ イ ア ロ グ ボ ッ ク ス を開いた ま まブ ロ ッ ク に対する設定変更を適用し、 [Help] は、 そ<br />

のブロ ッ クの HTML ヘルプを表示し ます。 [Cancel] は、 変更を保存せずにダ イ ア ロ グ ボックスを<br />

閉じ、 [OK] は、 変更を適用し てか ら ダ イ ア ロ グ ボックスを閉じます。<br />

ザイ リンクス ブ ロ ッ ク セ ッ ト の基本的な計算モー ド は、任意の精度 (Precision) の固定小数点になっ<br />

ています。 ほとんどのブロックに、 ビッ ト数や 2 進小数点などの精度を選択で き る オプシ ョ ンがあ<br />

ります。<br />

デフォル ト では、 ザイ リ ンク ス ブ ロ ッ ク の出力は完全精度 (Full) に設定 さ れています。 こ れは、 エ<br />

ラーな く 出力結果を表示する のに十分な精度です。 ほ と んどのブ ロ ッ ク で、 ユーザー定義 (Userdefined)<br />

の精度を選択で き ます。 こ の精度の場合、 合計ビ ッ ト と 小数点以下のビ ッ ト 数が固定さ れ<br />

ます。<br />

ブロックのパラ メータ ダイアログ ボックスの [Type] フ ィ ール ド か ら、 出力信号のデータ型に<br />

[Unsigned] (符号な し) か [Signed (2's comp)] (符号付き (2 の補数)) を選択できます。<br />

固定小数点は、 ビ ッ ト 数、 2 進小数点、 演算タ イ プなどのパ ラ メ ータ で指定し た と お り 、 ワー ド 長<br />

のデータ型に格納されます。 サポー ト される最大ビ ッ ト 数は、 4096 です。<br />

2 進小数点 (Binary point) は、 固定小数点のス ケー リ ングに使用さ れます。 このパラメータは、出力<br />

ポー ト の 2 進数小数点の右側のビ ッ ト 数 (小数点以下のビ ッ ト の大き さ) を示し ます。 2 進小数点の<br />

位置は、 0 ~ 指定ビ ッ ト 数の間にする必要があ り ます。<br />

[Overflow] と [Quantization]<br />

ユーザー定義の精度が選択 さ れてい る場合、 オーバーフ ロー (Overflow) または量子化<br />

(Quantization) が原因でエ ラーが発生する こ と があ り ます。 オーバーフ ローのエラーは、データが表<br />

現可能な値の範囲外であ る場合に発生し ます。 量子化のエ ラーは、 小数点以下のビ ッ ト 数が値のそ<br />

れを表現する のに不十分な場合に発生し ます。<br />

ザ イ リ ン ク スの固定小数点型では、 ユーザー定義の精度に対し て複数のオプシ ョ ンがサポー ト さ れ<br />

ます。 オーバーフ ローの場合、 [Saturate] (上限が最大の正の値、 下限が最小の負の値に飽和演算)、<br />

[Wrap] (MSB よ りも左のビットを削除)、[Flag as error] (シミュレーション中に Simulink エラーと<br />

46 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックのパラメータ ダイアログ ボ ッ ク スの共通オプシ ョ ン<br />

[Latency]<br />

してオーバーフロー) というオプションがあります。 [Flag as error] は、 シ ミ ュ レーシ ョ ンのみに使<br />

用でき ます。 生成さ れたハー ド ウ ェ アは、 [Wrap] をオンにしたと き と同じにな り ます。<br />

量子化の場合、 [Round] と [Truncate] というオプションがあります。 [Round] は、 四捨五入 (最近<br />

似値への四捨五入。 同等の近似値が 2 つある場合は、 0 か ら遠い方の値に四捨五入)、 [Truncate] は<br />

切り捨て (LSB よ りも右のビットを削除) を実行します。<br />

次は、 量子化 と オーバーフ ローのオプシ ョ ン を設定する イ ン ターフ ェ イ スです。<br />

どのオプショ ンを選択し ても 、生成さ れる HDL モデルと Simulink モデルの動作は同一になり ま す。<br />

ザイ リンクス ブロックセットのエレメントの多くに、レイテンシ オプシ ョ ンがあ り 、 ブロックの出<br />

力を遅延させる サンプル周期が定義で き る よ う になっ ています。 1 サンプル周期は FPGA インプリ<br />

メンテーションの複数クロック サイクルに相当するこ とがあり ます (ハード ウ ェ アが Simulink モ<br />

デルに対し てオーバーク ロ ッ ク にな る場合など)。 <strong>System</strong> <strong>Generator</strong> では、余分なパイプラ イ ンを実<br />

行し ません。 レ イ テンシを追加する場合は、 通常ブ ロ ッ ク の出力にシフ ト レジスタをインプリ メン<br />

トします。<br />

[Override with doubles]<br />

メモ : このオプシ ョ ンは、 現在の と こ ろ使用でき ません。<br />

[Override with doubles] は、 多 く のザイ リ ン ク ス ブロッ クで表示されるオプショ ンです。 ほとんど<br />

の Simulink ブ ロ ッ ク では、倍精度の浮動小数点の信号 と 演算が使用されますが、 このよ うな信号が<br />

ザイ リ ンクスの Gateway In ブ ロ ッ ク を通る と 、 固定小数点に変換さ れ、 Gateway Out ブロッ クを<br />

通っ て、 倍精度の浮動小数点に再び変換さ れます。<br />

Simulink 環境では、 [Override with doubles] を使用する と 、 デザ イ ン全体を倍精度の浮動小数点で<br />

シミュレーションできるようになります。<br />

こ のオプシ ョ ンは、 固定小数点の幅を選択する場合やデバ ッ グする場合に便利です。 固定小数点信<br />

号を使用し て量子化エ ラーが検出さ れた場合は、 倍精度の浮動小数点信号および演算を使用し て、<br />

デザイン全体をシミ ュレーショ ンするか、 特定のブロックのみをシミ ュレーショ ンするかを選択で<br />

きます。 こ れに よ り 、 デザ イ ンのどの部分が量子化エ ラーの原因か発見しやす く な り ます。<br />

[Override with doubles] は、 特定のブ ロ ッ ク で選択で き ます。 また、 シートに <strong>System</strong> <strong>Generator</strong> の<br />

アイコンをインスタンシエート し、<strong>System</strong> <strong>Generator</strong> ブロックのコンフィギュレーショ ン可能なパ<br />

ラメータである [Ovveride with doubles] を選択する と 、 シー ト 全体やサブシ ス テム全体 (シー ト +<br />

その下の階層) に対し て も使用でき ます。<br />

こ のオプシ ョ ンが設定されたブロ ッ ク の出力が同じオプシ ョ ンの設定されたブロ ッ ク の入力に接続<br />

されると、 データ サンプルは倍精度で送信 さ れます。<br />

どのブロ ッ クにこの [Override with doubles] が設定されているかは、 簡単にわか り ます。 このオプ<br />

シ ョ ンが設定されたザ イ リ ン ク ス ブ ロ ッ ク は、 通常の青や黄色ではな く 、 グ レーで表示されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 47<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

[Provide synchronous reset port]<br />

[Provide synchronous reset port] をオンにする と、 ブロッ クのオプシ ョ ンのリ セッ ト (rst) ピンが有<br />

効にな り ます。<br />

このリセッ ト信号がアサート されると、 ブロックが最初のステートに戻ります。 リセット信号は、<br />

ブ ロ ッ ク で使用可能なオプシ ョ ンの イ ネーブル信号よ り も 優先 さ れます。 こ の信号は、 ブ ロ ッ ク の<br />

サンプル レー ト の倍数のレー ト で実行する必要があ り 、 リセット ポー ト を駆動する信号は、ブール<br />

型にする必要があ り ます。<br />

[Provide enable port]<br />

[Sample Period]<br />

[Provide enable port] をオンにする と、 ブロ ッ クのオプシ ョ ンのイネーブル (en) ピンが有効になり<br />

ます。 イ ネーブル信号がアサー ト されない と、イ ネーブル信号が再びアサー ト される まで (またはリ<br />

セッ ト信号がアサート されるまで)、 ブ ロ ッ ク が現在のス テー ト を保持し た ま まにな り ます。 リセッ<br />

ト 信号はイ ネーブル信号よ り も優先さ れます。 イネーブル信号は、 ブロックのサンプル レート の倍<br />

数のレー ト で実行する必要があ り 、 イネーブル ポー ト を駆動する信号は、 ブール型にする必要があ<br />

ります。<br />

データ ス トリームは、特定のサンプル レート で Simulink を通り ます。 通常は、 各ブ ロ ッ ク で入力<br />

サンプル レー ト が検出され、 正しいサンプル レート が出力に送られますが、 ザイ リ ンクスの Up<br />

Sample ブロック と Down Sample ブ ロ ッ ク を使用する と 、 サンプル レー ト を増加し た り 、 減少し<br />

たりできます。<br />

[Specify explicit sample period]<br />

デフォル ト のままではな く、[Specify explicit sample period] をオンにする と 、 すべてのブ ロ ッ ク 出<br />

力に必要なサンプル周期を設定で き ます。 このオプションは、 フィードバック ループなどの機能を<br />

デザイ ンにイ ンプ リ メ ン ト する際に便利です。 フィードバック ループを使用する場合、 <strong>System</strong><br />

<strong>Generator</strong> でデフ ォル ト のサンプル レー ト を決定で き ません。こ れは、フ ィ ー ド バ ッ ク ループでは、<br />

まだ決まっていない出力サンプル レー ト によって入力サンプル レー ト が作成されるからです。<br />

<strong>System</strong> <strong>Generator</strong> には、 こ の よ う な場合、 ループ全体のサンプル周期を構築する ヒ ン ト を入力する<br />

必要があ り ます。<br />

[Use behavioral HDL (otherwise use core)]<br />

オンにする と、 コアからの構造レベルの HDL 記述ではな く 、 M コード シミュレーションで生成さ<br />

れたビヘイ ビア レベルの HDL 記述が使用さ れます。<br />

M コード シ ミュレーションでは、C シミュレーションが作成され、 この C シミュレーションによ<br />

りビヘイビア レベルの HDL が作成されます。 このオプションをオンにすると、 後の合成でこのビ<br />

ヘイビア レベルの HDL 記述が使用さ れます。 オフにする と、コアおよび HDL テンプレート (モデ<br />

ル内のブ ロ ッ ク にそれぞれ対応) か ら生成 さ れた構造記述の HDL が合成に使用されます。 デザイ<br />

ンの各ブロ ッ ク用に生成された コ アは、 キ ャ ッ シ ュに格納されて、 後のネ ッ ト リ ス ト で使用されま<br />

す。 これは、 一番速いネ ッ ト リ ス ト 生成方法で、 そのコ アが後の合成ツール と 配置配線ツールで使<br />

用でき る と い う 利点も あ り ます。<br />

48 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ブロックのパラメータ ダイアログ ボ ッ ク スの共通オプシ ョ ン<br />

[Use core placement in<strong>for</strong>mation]<br />

[Placement]<br />

オンにする と 、 生成 さ れる コ アに相対配置情報が含まれ、 通常はイ ンプ リ メ ンテーシ ョ ンが高速に<br />

なります。 配置では こ の情報に基づいて制約が付 く ので、 配置配線ソ フ ト ウ ェ アの速度が遅 く な る<br />

こともあります。<br />

乗算器コ アの場合に [Use core placement in<strong>for</strong>mation] をオンにする と、 このオプシ ョ ンが表示さ<br />

れ、 ハー ド ウ ェ アに配置さ れる乗算器コ アの形状を指定で き ます。 [Rectangular] を選択する と、 配<br />

置される LUT の密度が低い四角形の コ アが生成 さ れます。 [Triangular] を選択する と 、 高密度配置<br />

の LUT を使用し て、 コ ンパ ク ト な形状の コ アが作成 さ れます。<br />

[FPGA Area (slices, FFs, BRAMs, LUTs, IOBs, emb. mults, TBUFs)] /<br />

[Use area above <strong>for</strong> estimation]<br />

これらのフ ィールドは、 Resource Estimator ブロックで使用されます。 Resource Estimator を使用<br />

する と、 <strong>System</strong> <strong>Generator</strong> デザイ ンに必要なハード ウ ェア リソースを計算できます。<br />

デザイ ンに Resource Estimator ブ ロ ッ ク を配置し た場合、 [FPGA area] ボックスにそのブロックの<br />

FPGA エ リ ア使用率を手動で入力で き ます。 この値を入力しない場合は、 Resource Estimator ブ<br />

ロ ッ ク で自動的に値が計算されて入力さ れます。<br />

そのブロ ッ ク用の値を直接入力する場合は、 [Define FPGA area <strong>for</strong> resource estimation] をオンに<br />

して、 Resource Estimator ブロ ッ ク でその値が使用される よ う にする必要があ り ます。 オンにして<br />

おかない と、 Resource Estimator ブロッ クで FPGA エ リ アが計測さ れ、 こ のフ ィ ール ド に入力し た<br />

値が上書き さ れて し まいます。<br />

[FPGA area] ボックスに入力できる値は、 次の 7 つです。 値は、 それぞれ正しい位置に入力する必<br />

要があ り ます。 この値が [1,2,3,4,5,6,7] の場合、 各値は次を示し ます。<br />

• 1 = ブロッ クで使用されるスライス。 1 つの FPGA スライスには、通常フリップフロップが 2<br />

つ、 LUT が 2 つ、 関連する MUX、 キャリー ロジック、 制御ロジックが含まれます。<br />

• 2 = ブロックで使用されるフリ ップフロップ<br />

• 3 = ブロックで使用されるブロック RAM (BRAM)<br />

• 4 = ブロックで使用される LUT<br />

• 5 = ブロックで消費される IOB<br />

• 6 = ブロックで使用されるエンベデッ ド (Emb.) 乗算器。 たとえば、Virtex-II デバイ スにはエン<br />

ベデ ッ ド 18X18 乗算器が含まれます。<br />

• 7 = ブロックで使用される ト ライステート バッファ (TBUF)<br />

Resource Estimator ブロッ クで考慮されるのは、ハードウェア コストのあるザイリンクス ブロッ ク<br />

(物理的なハー ド ウ ェ ア リソースが必要なブロック) のみです。 [FPGA area] ボ ッ ク スは、 関連する<br />

ハー ド ウ ェ アがないブロ ッ ク では表示さ れません。<br />

スライスは LUT と フ リ ッ プフ ロ ッ プに関連し ていて も (各スラ イスには LUT が 1 つとフ リ ップフ<br />

ロップが 1 つ含まれる)、パッ ク されるスラ イス数はデザインによって異なるため、別々に入力され<br />

ます。<br />

Resource Estimator ブロ ッ クの説明にあ る よ う に、 ザイ リ ン ク ス ブ ロ ッ ク の中には自動的な リ ソ ー<br />

スの概算がサポー ト されないものがあ り ます。 こういったブロックの [FPGA area] ボックスは自動<br />

的にア ッ プデー ト されないので、 MATLAB のコンソール ウ ィ ン ド ウ に警告 メ ッ セージが表示さ れ<br />

ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 49<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロックの<strong>リファレンス</strong> ページ<br />

50 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Accumulator<br />

Accumulator<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Math] および [Index] ライブラリにリストされています。<br />

ブロック インターフェイス<br />

ザイ リ ンクスの Accumulator ブ ロ ッ ク は、 加算器ま たは減算器ベースのス ケー リ ン<br />

グ アキュムレータです。<br />

こ のブ ロ ッ ク の入力値は、 ス ケール さ れた格納値に累積さ れてい き ます。 このスケー<br />

ル係数は、 パラ メ ータ ダイアログ ボ ッ ク ス か ら 指定で き ます。<br />

このブロックには、 b 入力 と q 出力があ り 、 出力データ幅は、 入力データ幅 と 同じ にする必要があ<br />

ります。 また、出力と入力には、同じ演算タイプと 2 進小数点の位置が使用さ れます。 この q 出力<br />

は、 次のよ う に計算されます。<br />

減算器ベースのアキ ュ ム レータ の場合は、 b(n) 入力の加算が減算にな り ます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Operation] : ブ ロ ッ ク を加算器ベースにする かか減算器ベースにする かを指定し ます。<br />

• [Feedback scaling] : フ ィ ー ド バ ッ ク のス ケール係数を次のいずれかに指定し ます。<br />

1、 1/2、 1/4、 1/8、 1/16、 1/32、 1/64、 1/128、 1/256<br />

• [Reinitialize with input 'b' on reset] : オンにする と、 アキ ュ ム レータの出力が入力ポー ト b の<br />

データにリセッ ト されます。 オフにすると、 アキュムレータの出力は 0 にリセットされます。<br />

このオプションはブロックにリセッ ト ポー ト があ る場合にのみ使用で き ます。 アキュムレータ<br />

がマルチレー ト システムに含まれる場合にオンにする と、 ク ロ ッ ク速度に影響が出ます。 この<br />

場合、 アキ ュ ム レータ がシ ス テム レー ト で強制的に実行されます。 こ れは、 アキ ュ ム レータ を<br />

駆動する ク ロ ッ ク イネーブル信号 (CE) がシステム レー ト で実行 さ れ、入力に対する リ セ ッ ト<br />

動作が こ の CE 信号で指定されるか ら です。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

Accumulator ブロックのレイテンシの値は常に 1 です。<br />

ザイリンクス LogiCORE<br />

ビヘイビア レベルの HDL 記述のオプシ ョ ンが使用さ れない場合、 こ のブ ロ ッ ク ではザ イ リ ン ク ス<br />

LogiCORE が使用されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 51<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

ザイ リンクス<br />

LogiCORE<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

52 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

Accumulator Accumulator V7.0 • • • • •<br />

4 5<br />

Accumulator V9.1 • • •


Addressable Shift Register<br />

Addressable Shift Register<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Memory]、 [Index] ライブラリにリスト<br />

されています。<br />

ザイ リ ンクスの Addressable Shift Register ブロ ッ ク は、可変長シフ ト レジス<br />

タ で、 遅延チェーンのどのレ ジ ス タ で も呼び出し て、 出力データ ポー ト に駆<br />

動でき ます。<br />

このブロックは、 チェーン接続されたレジスタと考えるとわかりやすく、 次<br />

の図に示すよ う に、 各レジス タの出力はマルチプレ クサの入力に接続されま<br />

す。 このマルチプレクサのセレク ト ラインは、アドレス ポー ト (addr) で駆動されます。 出力データ<br />

ポー ト は、 次の図では q と表示されています。<br />

Addressable Shift Register ブロックの深さは最大 1024 ビッ トで、最小 2 ビ ッ ト です。 こ のため、<br />

ア ド レ ス入力ポー ト は、 1 ~ 10 ビッ トになります。 データ入力ポー ト の幅は、 こ のブ ロ ッ ク がザ イ<br />

リンクス LogiCORE を使用してインプ リ メ ン ト される場合 ([Use behavioral HDL (otherwise use<br />

core)] がオフの場合) 、 1 ~ 255 ビ ッ ト にする必要があ り ます。<br />

ハー ド ウ ェ アでは、 ア ド レ ス ポー ト は出力ポー ト に対し て非同期です。 このため、ブロックの S 関<br />

数では、 ア ド レ ス ポー ト が入力データ ポートよりも優先されます。つまり、次に続くサイクルで<br />

は、 レ ジ ス タ か ら 読み出されたア ド レ ス データ値が、 シフ ト 動作の実行さ れる前に出力に駆動さ れ<br />

ます。 Simulink ソフトウェア モデルでは、 この順序でない と、 データ ポー ト と遅延チェーンの最<br />

初のレジス タ間に 1 クロック サイクルのレイテンシが保証されません (シフ ト 動作が最初で読み出<br />

し がその後に続 く 場合、 遅延がな く な る ので、 ハー ド ウ ェ アは不正な状態にな り ます)。<br />

ブロック インターフェイス<br />

ブロック インターフェイス (Addressable Shift Register のアイ コンの入力と出力) は、 次の と お り<br />

です。<br />

入力信号<br />

d データ入力<br />

addr アドレス<br />

en イネーブル信号 (オプシ ョ ン)<br />

出力信号<br />

q データ出力<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 53<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

Addressable<br />

Shift Register<br />

R<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Infer maximum latency (depth) using address port width] : アドレス ポー ト のビ ッ ト 幅に基づ<br />

いて、 シフ ト レ ジ ス タの深 さ ま たは最大レ イ テンシが自動的に決定 さ れる よ う にで き ます。<br />

• [Maximum latency (depth)] : 上のオプシ ョ ンで最大レ イ テンシが決定 さ れない場合、 手動で最<br />

大レイテンシを入力します。<br />

• [Initial value vector] : 初期レ ジ ス タ値を指定し ます。 ベクタ長がシフ ト レジスタの深さよ り も<br />

大き い場合、 こ のベ ク タ の後に続 く エ レ メ ン ト は削除さ れます。 シフ ト レジスタの深さがベク<br />

タ長よ り も大き い場合、 こ のシフ ト レジス タの後に続 く レジス タが 0 に初期化さ れます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、ビヘイビア レベルの HDL 記述を使用し ない場合、ザ イ リ ン ク ス LogiCORE の<br />

RAM-based Shift Register が使用されます。 LogiCORE を使用する場合、データ入力ポー ト の幅は、<br />

1 ~ 255 ビッ トです。<br />

ザイ リンクス<br />

LogiCORE<br />

RAM-based<br />

Shift Register<br />

RAM-based<br />

Shift Register<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

54 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V7.0 • • • • •<br />

4 5<br />

V9.1 • • •


AddSub<br />

AddSub<br />

ブロック パラ メータ<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Math] および [Index] ライブラリにリストされています。<br />

ザイ リンクスの AddSub ブ ロ ッ ク は、 加算器 / 減算器です。 処理方法は、 加算か減算<br />

のど ち ら かに指定する こ と も で き ますが、 sub 信号の制御に従っ てダ イ ナ ミ ッ ク に変<br />

更する こ と も で き ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Operation] : ブロッ クを [Addition]、 [Subtraction]、 [Addition or subtraction] に指定し ます。<br />

[Addition or subtraction] をオンにする と、その sub 入力ポー ト の値に よ っ て加算器か減算器に<br />

な り ます。 こ の入力ポー ト は必ずブール信号で駆動されます。 sub 入力が 1 の場合は減算器に<br />

なり、 それ以外の場合は加算器にな り ます。<br />

• [Provide carry-in port] : オンにする と、キャ リーイン ポー ト (cin) が含まれます。 キャ リーイン<br />

ポー ト は、 精度に [User defined] を選択し、 入力の 2 進小数点を 0 に設定し た場合にのみ使用<br />

できます。<br />

• [Provide carry-out port] : オンにする と、キャ リーアウ ト ポー ト (cout) が含まれます。 キャ リー<br />

アウ ト ポー ト は、 精度に [User defined] を選択し、 入力と出力が符号なし (Unsigned) で、 出<br />

力整数ビ ッ ト が x (x = max(整数ビ ッ ト a, 整数ビ ッ ト b)) の場合にのみ使用で き ます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Use behavioral HDL (otherwise use core)] : ビヘイ ビア レベルの HDL 記述が使用 さ れます。<br />

こ れで、 最適化をパフ ォーマン ス重視にする か、 エ リ ア重視にする かをダ ウ ン ス ト リ ームの ロ<br />

ジ ッ ク 合成ツールで柔軟に決定で き ます。<br />

• [Pipeline <strong>for</strong> maximum per<strong>for</strong>mance] : ザイ リンクス LogiCORE は、 内部でパイ プ ラ イ ン接続<br />

して、 スピードを改善できます。 こ のオプシ ョ ン をオンにする と 、 使用可能な最大レ イ テンシ<br />

が内部の コ アのパイ プ ラ イ ン段数 と し て使用さ れます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、ビヘイビア レベルの HDL 記述を使用し ない場合、ザ イ リ ン ク ス LogiCORE が<br />

使用されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 55<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

ザイ リンクス<br />

LogiCORE<br />

AddSub Adder/<br />

Subtractor<br />

Adder/<br />

Subtractor<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

56 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V7.0 • • • • •<br />

4 5<br />

V9.1 • • •


Assert<br />

Assert<br />

ブロック パラ メータ<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Index] ライブラリにリストされています。<br />

Assert ブ ロ ッ ク は、 信号にレー ト やデータ型を アサー ト する ために使用し ます。 この<br />

ブロックには、 ハードウェア コ ス ト がかか り ません。 こ のブ ロ ッ ク を使用する と 、<br />

設計者が手を入れる必要のあ る場合に、 レー ト やデータ型の問題を改善で き ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Assert type] : 入力に指定したデータ型と同じ型をアサートするかど うかを指定します。 デー<br />

タ型が同じ でない場合は、 エ ラー メ ッ セージが表示 さ れます。<br />

• [Specify type] : アサー ト するデータ型を type と い う 入力ポー ト に接続さ れた信号か ら決定す<br />

るか、 このダイアログ ボックスの [Explicitly] をオンに し て決定する かを指定し ます。<br />

• [Assert rate] : 入力に指定し た レー ト と 同じ レー ト を アサー ト する かど う かを指定し ます。 レー<br />

トが同じでない場合は、 エラー メ ッ セージが表示 さ れます。<br />

• [Specify rate] : アサートする最初のレートを rate と い う 入力ポー ト に接続さ れた信号か ら決定<br />

するか、 このダイアログ ボックスの [Explicitly] をオンに し て決定する かを指定し ます。<br />

• [Provide output port] : ブロ ッ クに出力ポー ト を含めるかど う かを指定し ます。 出力ポー ト の信<br />

号の タ イ プやデータ型には、 アサー ト に指定し た も のが使用さ れます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。 このブロックの [Output type] のオプシ ョ ンは、ブロックのパ<br />

ラメータ ダイアログ ボックスの共通オプションで説明される演算タイプと同じです。<br />

このブロックでは、 ザイ リンクス LogiCORE は使用されず、 ハー ド ウ ェ アにイ ンプ リ メ ン ト され<br />

ても リ ソースが使用されません。<br />

Assert ブ ロ ッ ク を使用し たレー ト およびデー タ型の改善方法<br />

シミュレーション エンジンでレー ト やデータ型の問題が回避で き なかった場合は、Assert ブロッ ク<br />

を使用し て特定レー ト やデータ型を強制的に設定し ます。 通常、 こ のブ ロ ッ ク を使用する のは、<br />

フ ィ ー ド バ ッ ク を使用し、 信号 ソ ース と し て動作する コ ンポーネン ト を使用し た場合です。 たとえ<br />

ば、 次の回路図では、 SRL16 のレー ト と データ型を設定する ために Assert ブロックが必要になり<br />

ます。 この場合、 Assert ブ ロ ッ ク を使用する と 、 最初のレー ト が設定で き ます。 こ れが SRL16 を<br />

通った後、 Assert ブロックに戻り、SRL16 の入力に戻 り ます。 次の回路図の場合、 Assert ブロック<br />

が使用されていないので、 次のよ う なエ ラー メ ッ セージが表示 さ れます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 57<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

“The data types could not be established <strong>for</strong> the feedback paths through this block. You may need to<br />

add Assert blocks to instruct the system how to resolve types.”<br />

こ の問題を回避する には、 次の図の よ う にフ ィ ー ド バ ッ ク パスに Assert ブロッ クを含めます。<br />

こ の例の場合、 データ型を変更する のに Assert ブロ ッ クが必要ですが、 レー ト は Constant ブロッ<br />

ク に割 り 当てて設定する こ と も で き ます。 レー ト を強制的に設定する のに Constant ブロッ クを使<br />

用する か Assert ブ ロ ッ ク を使用する かは、 ユーザーの任意です。 状況に よ っ て、 ど ち ら を使用する<br />

か決めて く ださ い。<br />

<strong>System</strong> <strong>Generator</strong> 8.1 以降のバージ ョ ンでは、レー ト と データ型を確定し て問題を回避で き ますが、<br />

<strong>System</strong> <strong>Generator</strong> のコ ンポーネン ト の中には、 問題が回避できそ う な場合で も Assert ブロッ クを<br />

必要 と する も のがあ り ます。 必要 と する のは、 ブ ラ ッ ク ボックス コ ンポーネン ト や一部の IP ブ<br />

ロックなどです。<br />

58 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


BitBasher<br />

BitBasher<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Data Types]、 [Index] ライブラリにリス<br />

トされています。<br />

ザイ リ ンクスの BitBasher ブロ ッ ク では、 ブロ ッ クに接続された入力の値がス ラ イ<br />

ス さ れた後、 連結されて追加されます。<br />

これらの操作は、Verilog 構文を使用し て記述 さ れます (詳細は、 こ のマニ ュ アルに記<br />

述されています)。 このブロックでは、最大で 4 つの出力ポー ト が使用可能です。 出力<br />

ポー ト の数は、 論理式の数 と 同じ にな り ます。 このブロックには、 ハードウェア コストがかかりま<br />

せん。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [BitBasher Expression] : Verilog 構文に基づいたビ ッ ト 単位の論理式です。 論理式は、改行し て<br />

入力する と 、 最大 4 つまで指定できます。<br />

[Output Type] タブ<br />

• [Output] : データ型の指定されたポー ト が表示されます。<br />

• [Output type] : 出力の演算タ イ プを設定し ます。<br />

• [Binary point] : 出力の 2 進小数点の位置を設定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

サポー ト される Verilog 構文<br />

連結文<br />

BitBasher ブロッ クでサポート される Verilog 論理文は、 ス ラ イ スや連結、反復などのビ ッ ト 単位の<br />

操作のみで、 すべて次のテンプレー ト 文を使用する必要があ り ます。<br />

output_var = {bitbasher_expr}<br />

bitbasher_expr : Verilong 構文に基づいた ス ラ イ ス、連結、反復文、ま たは単に入力ポー ト の識別子。<br />

output_var : 出力ポー ト の識別子。 output_var という名前の出力ポートがブロックに表示され、<br />

bitbasher_expr の結果が維持さ れます。<br />

output_var = {bitbasher_expr1, bitbasher_expr2, bitbasher_expr3}<br />

前述し た よ う に、 連結文はサポー ト さ れます。 bitbasher_exprN は、 それぞれ論理文、 または単に入<br />

力ポー ト の識別子のいずれかにな り ます。<br />

次は、 具体例です。<br />

a1 = {b,c,d,e,f,g}<br />

a2 = {e}<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 59<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

スライス文<br />

反復文<br />

定数文<br />

a3 = {b,{f,c,d},e}<br />

output_var = {port_identifier[bound1:bound2]}Ö(1)<br />

output_var = {port_identifier[bitN]}Ö(2)<br />

port_identifier : ビッ トが抽出される入力ポート<br />

bound1、 bound2 : 0 ~ (port_identifier のビッ ト幅 - 1) の負ではない整数<br />

bitN : 0 ~ (port_identifier のビッ ト幅 - 1) の負ではない整数<br />

上記に示す と お り 、 入力ポー ト か ら ビ ッ ト を抽出する には方法が 2 つあ り ます。 連続する ビ ッ ト の<br />

範囲が抽出される必要のあ る場合、 最初の 2 つの式を使用し ます。 抽出される のが 1 ビッ トのみの<br />

場合は、 3 つ目の式を使用し ます。<br />

次は、 具体例です。<br />

a1 = {b[7:3]}<br />

a1 には、 b 入力の 7 ビッ ト ~ 3 ビッ トまでが同じ順序で保持され、 それらが b ビットに出力<br />

されます。 たとえば、 b が 110110110 の場合、 a1 は 1011 にな り ます。<br />

a2 = {b[3:7]}<br />

a2 には、 b 入力の 7 ビッ ト ~ 3 ビッ トまでが逆の順序で保持され、 それらが b ビットに出力<br />

されます。 たとえば、 b が 110100110 の場合、 a2 は 1101 にな り ます。<br />

a3 = {b[5]}<br />

a3 は、 b 入力の 5 ビ ッ ト を保持し ます。<br />

a4 = {b[7:5],c[3:9],{d,e}}<br />

こ の式は、 ス ラ イ ス文 と 連結文を組み合わせた も のです。 b 入力 の 7 ~ 5 ビッ ト、c 入力の 3<br />

~ 9 ビッ ト、 d 入力 と e 入力のビ ッ ト がすべて連結さ れます。<br />

output_var = {N{bitbasher_expr}}<br />

N : 反復回数を表す正の整数。<br />

次は、 具体例です。<br />

a1 = {4{b[7:3]}}<br />

上記の式は、 a1 = {b[7:3], b[7:3], b[7:3], b[7:3]} と同じです。<br />

a2 = {b[7:3],2{c,d}}<br />

上記の式は、 a2 = {b[7:3],c,d,c,d } と同じです。<br />

2 進定数 : N'bbin_const<br />

8 進定数 : N'ooctal_const<br />

10 進定数 : N'doctal_const<br />

16 進定数 : N'hoctal_const<br />

N : 定数を表すのに使用 さ れる ビ ッ ト 数を示す正の整数<br />

bin_const : 0 と 1 で表される 2 進数の文字列<br />

60 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


BitBasher<br />

制限<br />

octal_const : 0、 1、 2、 3、 4、 5、 6、 7 で表される 8 進数の文字列<br />

decimal_const : 0、 1、 2、 3、 4、 5、 6、 7、 8、 9 で表される 10 進数の文字列<br />

hexadecimal_const : 0、 1、 2、 3、 4、 5、 6、 7、 8、 9、 a、 b、 c、 d、 e、 f で表される 16 進の文字列<br />

定数は、 入力ポー ト か ら 派生し た追加論理式にのみ使用でき ます。 つま り、 BitBasher ブロックで<br />

は、 Constant ブロッ クのよ うなブロッ クからの定数をソースとして使用するこ とはできません。<br />

次は、 具体例です。<br />

a1 = {4'b1100, e}<br />

e が 110110110 の場合、 a1 は 1100110110110 にな り ます。<br />

a1 = {4'hb, e}<br />

e が 110110110 の場合、 a1 は 1101110110110 にな り ます。<br />

a1 = {4'o10, e}<br />

e が 110110110 の場合、 a1 は 1000110110110 にな り ます。<br />

• [BitBasher Expression] フ ィ ール ド には、 マ ス ク さ れたパ ラ メ ータは指定で き ません。<br />

• 論理文に定数だけを含め る こ と はで き ません。 必ず少な く と も入力ポー ト を 1 つ含め る必要が<br />

あります。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 61<br />

リリース 9.2.00 2007 年 8 月<br />

R


Black Box<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Control Logic]、 [Index] ライブラリにリ<br />

ストされています。<br />

<strong>System</strong> <strong>Generator</strong> の Black Box ブロックでは、 HDL モデルを <strong>System</strong><br />

<strong>Generator</strong> 用に変換で き ます。<br />

このブロックでは、 <strong>System</strong> <strong>Generator</strong> で コー ド 生成中に、 Simulink のシ ミ ュ<br />

レーシ ョ ン ビヘイビアと インプ リ メ ンテーシ ョ ン ファイルの両方が使用され<br />

るように指定できます。 ブラック ボックスのポートは、ほかの <strong>System</strong><br />

<strong>Generator</strong> ブ ロ ッ ク と 同類の信号を入出力し ます。 ブラック ボックスがハード<br />

ウ ェ アに変換 さ れる と 、 関連する HDL のエンテ ィ テ ィ が自動的に取 り 込まれ、 ほかのブ ロ ッ ク に<br />

接続されます。<br />

ブラック ボックスは、 VHDL または Verilog を Simulink モデルに変換する ために使用で き ます。<br />

このブラック ボックスの HDL は、ISE Simulator か Model Technology 社の ModelSim シミュレー<br />

ション ソフトウェアのどちらかの <strong>System</strong> <strong>Generator</strong> インターフェイスを使用した Simulink で協調<br />

シミュレーションされます。詳細は、ModelSim ブロッ クおよびHDL 協調シ ミ ュ レーシ ョ ン を参照<br />

してください。<br />

ブラック ボックスは、 HDL を <strong>System</strong> <strong>Generator</strong> モデルに変換する だけでな く 、 外部シ ミ ュ レー<br />

ション モデルに関連付け られたイ ンプ リ メ ンテーシ ョ ンを定義するためにも使用でき ます (例 :<br />

ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブロッ ク)。<br />

<strong>System</strong> <strong>Generator</strong> には、 ブラ ッ ク ボ ッ ク スの機能や使用方法を示す例 (ブラック ボックスの例) も<br />

含まれています。<br />

ブラック ボックスの HDL 要件<br />

ブラッ ク ボックスに関連する HDL コンポーネントは、 すべての次の <strong>System</strong> <strong>Generator</strong> の要件や<br />

命名規則に従っ てい る必要があ り ます。<br />

• エンティティ名は、xlfir や xlregister のよ うな <strong>System</strong> <strong>Generator</strong> の予約されているエンテ ィ<br />

ティ名と重ならないようにします。<br />

• 最上位レベルのブ ラ ッ ク ボ ッ ク スのエンテ ィ テ ィ には、 双方向ポー ト は使用でき ません。<br />

• たとえば、std_logic_vector(0 to 7) ではな く std_logic_vector(7 downto 0) の よ う に、 最上位レ<br />

ベルのポー ト は、 MSB から LSB の順に記述する必要があ り ます。<br />

• Verilog のブラ ッ ク ボ ッ ク スの場合、 モジ ュール名やポー ト 名は必ず小文字に し、 標準的な<br />

VHDL の命名規則に従 う よ う に し ます。<br />

• クロック ポー ト やク ロ ッ ク イネーブル ポー ト は、 下記の規則に従っ て命名する必要があ り ま<br />

す。<br />

• クロック ポー ト またはク ロ ッ ク イネーブル ポー ト のタ イプは必ず std_logic にします。<br />

Verilog のブラ ッ ク ボ ッ ク スの場合、こ の よ う なポー ト はベ ク タ のない入力に し ます (例 : input<br />

clk)。<br />

• ブラック ボックスのクロック ポー ト と ク ロ ッ ク イネーブル ポー ト の取 り 扱いは、 ほかのポー<br />

トと異なります。 ブラック ボ ッ ク ス がハー ド ウ ェ アに変換される と 、 ク ロ ッ ク ポー ト と ク ロ ッ<br />

ク イネーブル ポー ト が入力さ れる信号で駆動さ れます。 信号のレー ト は、 ブ ロ ッ ク の設定 と<br />

Simulink に送られるサンプル レー ト に従って指定できます。<br />

ブラック ボックスのクロックの動作を理解するには、 <strong>System</strong> <strong>Generator</strong> での一般的な タイミング<br />

とクロックの処理を参照し て く ださい。 <strong>System</strong> <strong>Generator</strong> では、 ハード ウ ェアで複数のク ロ ッ ク<br />

62 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Black Box<br />

レート を生成するために、 1 つのク ロ ッ ク に対し て複数の ク ロ ッ ク イネーブル (1 つのレー ト に 1<br />

つのイ ネーブル) が使用されます。 このクロック イネーブルが、 最適なタイ ミングでハードウェア<br />

の異な る部分をそれぞれ有効に し ます。 各クロッ ク イネーブルのレートは、Simulink のサンプル周<br />

期によ って異な り ます。 クロックの必要な <strong>System</strong> <strong>Generator</strong> ブロッ クには、 HDL に少な く と も ク<br />

ロックとクロック イネーブル ポー ト が 1 つずつ記述 さ れます。 クロック レート が複数あるブロ ッ<br />

ク の場合は、 さ ら に多 く の ク ロ ッ ク およびク ロ ッ ク イネーブル ポー ト が含まれます。<br />

ブラック ボッ ク スのク ロ ッ クは、 ほかの <strong>System</strong> <strong>Generator</strong> ブロックのクロッ ク と同じよ うに動作<br />

します。 ブラック ボックスの HDL には、 Simulink のサンプル レー ト ごとに別々のク ロ ッ ク ポー<br />

トとクロック イネーブルを含める必要があ り ます。 ブラック ボックスの HDL のクロック ポー ト<br />

とクロック イネーブル ポー ト は、 次の よ う に記述し ます。<br />

• クロックとクロック イ ネーブルはペアで記述する必要があ り ます。 つま り 、 ク ロ ッ ク ご と に対<br />

応する ク ロ ッ ク イ ネーブルが必要です。 ブラック ボックスにクロック ポー ト が 1 つ以上含ま<br />

れるこ と もあり ますが、 各クロッ ク ポー ト を駆動するために使用される ク ロ ッ ク ソースは 1<br />

つだけです。 異なるのは、 ク ロ ッ ク イネーブルのレートだけです。<br />

• クロック名には clk を、 ク ロ ッ ク イネーブル名には ce を含めます。<br />

• クロック イ ネーブルの名前は、 ク ロ ッ ク と 同じ にする必要があ り ますが、clk の部分は ce にし<br />

ます。 たとえば、クロック名が src_clk_1 の場合、 ク ロ ッ ク イネーブルは src_ce_1 にする必要<br />

があ り ます。<br />

クロック ポー ト と ク ロ ッ ク イネーブル ポー ト は、 Black Box ブロッ クのアイコンには表示されま<br />

せん。 最上位レベルの HDL のクロック イネーブル ポー ト を <strong>System</strong> <strong>Generator</strong> で表示させるには、<br />

別のイ ネーブル ポー ト を最上位レベルの HDL に追加し、 こ の信号と ク ロ ッ ク イネーブル信号が<br />

AND ゲート を通るよ うに設定します。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 63<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Black Box ブロックのコンフ ィギュレーション ウィザード<br />

こ の ウ ィ ザー ド を使用する と 、 簡単に Verilog または VHDL コンポーネントをブラック ボックス<br />

に関連付けで き ます。 起動する には、 ブ ラ ッ ク ボックスをモデルに追加します。 ウィザードを使用<br />

するには、 ブラ ッ ク ボックスの HDL コ ンポーネン ト を定義する フ ァ イ ルをモデルが含まれるデ ィ<br />

レ ク ト リ に コ ピーする必要があ り ます。 新しいブラ ッ ク ボ ッ ク ス がモデルに追加される と 、 次の図<br />

の よ う にウ ィ ザー ド が自動的に開き ます。<br />

このウィザードで、 ブラック ボ ッ ク スに関連付け る HDL ファイルを選択し、[開く] をク リ ックす<br />

ると、 次に説明する よ う なブ ラ ッ ク ボックスのコンフィギュレーション M 関数が生成 され、ブ ロ ッ<br />

ク と 関連付け られます。 ウ ィザードで生成されるコンフィギュレーション M 関数は、通常は変更せ<br />

ずにそのま ま使用で き ますが、 手動で修正を入れる必要のあ る こ と も あ り ます。 修正が必要かど う<br />

かは、 HDL がどれだけ複雑化に よ っ て異な り ます。<br />

Black Box ブロックのコンフ ィギュレーション M 関数<br />

ブラッ ク ボックスでは、 そのインターフェイス (ポー ト 、 ジェネ リ ッ ク など) とインプリメンテー<br />

シ ョ ン を記述する必要があ り ます。 これは MATLAB の M 関数 (または P ファンクション) の定義<br />

(ブロッ クのコンフィギュレーショ ン) を使用して記述されます。 こ の関数名は、 ブ ロ ッ ク パラ メー<br />

タ ダイアログ ボックスの [Block configuration m-function] で指定する必要があ り ます。<br />

コンフィギュレーション M 関数では、 次が実行 さ れます。<br />

• ブラック ボ ッ ク スに関連付け る HDL コ ンポーネン ト の最上位レベルのエンテ ィ テ ィ 名を指定<br />

します。<br />

• HDL 言語を VHDL または Verilog に指定し ます。<br />

• ポー ト の タ イ プ、 方向、 ビ ッ ト 幅、 2 進小数点、 名前、 サンプル レー ト を記述し ます。 ポー ト<br />

は、 ス タ テ ィ ッ ク ま たはダ イ ナ ミ ッ ク に指定で き ます。 スタティック ポー ト は変更せず、 ダ イ<br />

ナミック ポー ト はデザイ ンに変更があ る と変更されます。 たとえば、ダイナミック ポー ト を駆<br />

動する信号が変わる と、 幅と タ イプも変わ り ます。<br />

64 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Black Box<br />

• 必要なポー ト タ イ プ と データ レート チェッ クを定義します。<br />

• ブラック ボックスの HDL で必要 と さ れる ジ ェ ネ リ ッ ク をすべて定義し ます。<br />

• ブラック ボックスの HDL と 関連付け る EDIF などのほかのフ ァ イルを指定し ます。<br />

• ブロックのクロックとクロック イ ネーブルを定義し ます (次の ク ロ ッ ク の命名規則を参照し て<br />

ください)。<br />

• HDL に組み合わせフ ィ ー ド スルー パスを含めるかど う かを宣言し ます。<br />

<strong>System</strong> <strong>Generator</strong> には、 ブラ ッ ク ボックスをコンフィギュレーションするオブジェク ト ベース の<br />

インターフェイスが 2 タイプ含まれます。 1 つは SysgenBlockDescriptors で、エンティティ特性の<br />

定義に使用され、 も う 1 つは SysgenPortDescriptors で、 ポー ト 特性の定義に使用されます。 このイ<br />

ンターフェイスは、 コンフィギュレーション M 関数で <strong>System</strong> <strong>Generator</strong> にブロ ッ クのイ ン ター<br />

フェイス、シミ ュレーション モデル、 イ ンプ リ メ ンテーシ ョ ンについての方法を提供する ために使<br />

用されます。<br />

ブラック ボックスの HDL に組み合わせパス (入力か ら出力ポー ト まで直接接続 さ れた フ ィ ー ド ス<br />

ルー パス) が少な く と も 1 つ含まれてい る場合は、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数で<br />

tagAsCombinational を使用してそのブロ ッ クに組み合わせタグをつけます。 ブラック ボックスで<br />

は、一部のパスだけを組み合わせパスにする こ と がで き ます。 組み合わせパス を含むブ ロ ッ ク には、<br />

必ずこのタグを付けてください。 これによ り、<strong>System</strong> <strong>Generator</strong> でこのよ うなブロックが識別され、<br />

Simulink シミュレータに伝えられるようになります。 タグを使用しないと、正確なシミ ュレーショ<br />

ン結果が出ません。<br />

ブラック ボックスのコンフィギュレーション M 関数は、 モデルが コ ンパ イ ル さ れた と き に何度か<br />

実行さ れます。 こ の関数には、 通常ブ ロ ッ ク の入力ポー ト に よ っ て異な る コー ド が含まれます。 た<br />

と えば、 入力ポー ト の属性に よ っ て、 出力ポー ト のデータ型やレー ト を設定する必要のあ る こ と も<br />

あれば、 入力ポー ト のデータ型 と レー ト を確認する必要のあ る こ と も あ り ます。 関数が実行さ れる<br />

と き に、 実行される コー ド を Simulink が完全に認識し ない こ と も あ り ます。<br />

情報が不明な場合 (特に、 例外などの条件が不明な場合) は、 BlockDescriptor の inputTypesKnown<br />

および inputRatesKnown を使用して問題を回避します。 これらは、 それぞれ入力ポート タイプと<br />

レー ト の情報を提供し ます。 こ れら を使用し た コー ド 例は、 次の よ う にな り ます。<br />

if (this_block.inputTypesKnown)<br />

% set dynamic output port types<br />

% set generics that depend on input port types<br />

% check types of input ports<br />

end<br />

入力レー ト がすべてわかっ てい る場合、 こ の コー ド ではダ イ ナ ミ ッ ク 出力ポー ト の タ イ プが設定さ<br />

れるほか、 入力ポートのタイプによってジェネリ ックが設定され、 入力タイプが適しているかど う<br />

かが検証 さ れます。 変数定義な ど、 こ れ ら の条件ブ ロ ッ ク の外に記述する必要のあ る コー ド は、 中<br />

に含めない よ う に注意し て く だ さ い。<br />

上記の コー ド では、 this_block というオブジェク ト名が使用されています。 ブラック ボックスのコ<br />

ンフィギュレーション M 関数では、 入力引数を使用し、 this_block が自動的に使用でき る よ う に<br />

なっています。 MATLAB では、 this_block はブラ ッ ク ボックスを表すオブジェク トで、 ブラック<br />

ボ ッ ク ス をテ ス ト し て設定する ために、 コ ン フ ィ ギ ュ レーシ ョ ン M 関数内で使用さ れます。<br />

this_block オブジェ ク ト は、 MATLAB クラスの 「SysgenBlockDescriptor」 のインスタンスです。<br />

this_block への適用方法は、 付録 A を参照して く ださい。 サンプルのコンフ ィ ギュレーシ ョ ン M<br />

関数を生成する には、 単純な VHDL エンティティでコンフィギュレーション ウ ィ ザー ド を実行し<br />

ます (詳細は後述)。<br />

ブラック ボックスのコンフィギュレーション オプシ ョ ンについては、 ブラック ボックスの例を参<br />

照してください。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 65<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

サン プル周期<br />

ブラック ボックスの出力ポート、 クロック、 クロック イネーブルは、 コンフィギュレーショ ン M<br />

関数のサンプル周期で割 り 当て る必要があ り ます。 サンプル周期がダ イ ナ ミ ッ ク であ る か、 ブ ラ ッ<br />

ク ボ ッ ク ス でレー ト をチェ ッ クする必要があ る場合、 こ の関数で入力ポー ト のサンプル周期を取得<br />

する 必要があ り ます。 ブラッ ク ボックスのサンプル周期は、 <strong>System</strong> <strong>Generator</strong> のマス タ ブロック<br />

の [Simulink system period] フ ィ ール ド で指定し たシ ス テム レー ト の整数倍で記述し ます。 たとえ<br />

ば、 [Simulink system period] が 1/8 の場合、 ブ ラ ッ ク ボックスの入力ポートはそのシステム レー<br />

ト (1/8) で実行され、コ ンフ ィ ギュ レーシ ョ ン M 関数でポートのレート としてレポートされた 1 が<br />

認識されます。 同様に、 [Simulink system period] が pi の場合、 出力ポー ト はそのシ ス テム レート<br />

の 4 倍の速さ (4*pi) にする必要があ るので、 コ ンフ ィ ギ ュ レーシ ョ ン M 関数で出力ポー ト のレー<br />

トを 4 に設定する必要があ り ます。 定数ポー ト に最適な レー ト は Inf です。<br />

66 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Black Box<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Block configuration m-function] : ブラ ック ボ ッ ク スに関連付けた コ ン フ ィ ギ ュ レーシ ョ ン M<br />

関数の名前を指定し ます。 この関数を含むフ ァ イルは、 通常モデルを含むディ レ ク ト リ に保存<br />

されますが、MATLAB パスのいずれかに保存する こ と も で き ます。 MATLAB では、 コンフ ィ<br />

ギュレーション M 関数を含め、 関数名はすべて 63 文字以内にする必要があ り ます。 このテキ<br />

スト ボ ッ ク スには、 フ ァ イルの拡張子 (.m または .p) は含めないで く だ さい。<br />

• [Simulation mode] : シミュレーション モード (Inactive、ISE Simulator、External co-simulator)<br />

を指定します。 モード が [Inactive] の場合、ブ ラ ッ ク ボ ッ ク スはすべての入力データ を無視し、<br />

出力ポー ト に 0 を出力します。 このモードの場合は、 コンフィギャブル サブシステム と<br />

<strong>System</strong> <strong>Generator</strong> の説明にあ る コ ン フ ィ ギ ャブル サブシステムを使用して、 ブラ ッ ク ボック<br />

ス を カ ッ プ リ ングする必要があ り ます。<br />

<strong>System</strong> <strong>Generator</strong> でコンフィギャブル サブシ ス テムを使用する と 、シ ミ ュ レーシ ョ ン結果用 と ハー<br />

ドウェア用の 2 つのパス を同じにでき ます。 この方法では、 シミ ュレーション速度は最速になり ま<br />

すが、 シ ミ ュ レーシ ョ ン モデルを構築する必要があ り ます。 モー ド を [ISE Simulator] または<br />

[External co-simulator] にする と 、 ブラ ッ ク ボックスのシミ ュレーション結果はブラック ボックス<br />

に関連付け ら れた HDL で協調シ ミ ュ レーシ ョ ン を使用し て作成 さ れます。 [External co-simulator]<br />

を使用する場合は、ModelSim の HDL 協調シ ミ ュ レーシ ョ ン ブロッ クをデザインに追加し、[HDL<br />

co-simulator to use] フ ィールドでその ModelSim ブ ロ ッ ク の名前を指定する必要があ り ます。 次<br />

は、 その例です。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 67<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

<strong>System</strong> <strong>Generator</strong> では、 HDL 協調シ ミ ュ レーシ ョ ン用に Mentor Graphics 社の ModelSim シミュ<br />

レータがサポート されます。 Verilog のブラ ッ ク ボックスの協調シミ ュレーションには、 混合モー<br />

ドのライセンスが必要です。 これは、 <strong>System</strong> <strong>Generator</strong> で記述 さ れるデザ イ ン部分が VHDL だか<br />

らです。<br />

ブラック ボックスの協調シミ ュレータ ブ ロ ッ ク は、 通常はブ ラ ッ ク ボックスと同じサブシステム<br />

に保存されますが、 ど こ にで も保存可能です。 協調シ ミ ュ レーシ ョ ン ブ ロ ッ ク へのパスは、 絶対パ<br />

スにも、 ブラ ッ ク ボ ッ ク ス を含むサブシス テムへの相対パス (例 : ../ModelSim) にもできます。 シ<br />

ミュレーション中は、協調シミュレータ ブロッ クごとにライセンスが 1 つ使用されます。 複数のブ<br />

ラック ボックスで同じ協調シミ ュレーション ブロックを共有しておく と、 ライセンスが不足する<br />

問題を回避で き ます。 <strong>System</strong> <strong>Generator</strong> では、複数のブロ ッ ク を 1 つの ModelSim シミュレーショ<br />

ンにま と め る のに必要な VHDL が自動的に生成さ れ、 追加さ れます。<br />

HDL 協調シ ミ ュ レーシ ョ ンのためのデー タ型変換<br />

協調シ ミ ュ レーシ ョ ン中は、 <strong>System</strong> <strong>Generator</strong> のポー ト が HDL シ ミ ュレータのポート を駆動した<br />

り、 HDL シミュレータのポートが <strong>System</strong> <strong>Generator</strong> のポー ト を駆動し ますが、 これらのツールの<br />

信号のデータ型は同一ではないので、 変換する必要があ り ます。 変換に使用さ れる規則は、 次の と<br />

おりです。<br />

• <strong>System</strong> <strong>Generator</strong> の信号はブール型、 符号な し固定小数点、 または符号付き固定小数点のいず<br />

れかにでき ます。 固定小数点の信号の値は決定する必要はあ り ませんが、 ブール信号は未決定<br />

にはでき ません。 <strong>System</strong> <strong>Generator</strong> で決定し なかった場合は、 HDL 信号のビ ッ ト すべてが X<br />

にな り ます。 こ れ以外の場合は、 その信号の値を表す 0 と 1 を使用した値にな り ます。<br />

• HDL 信号を <strong>System</strong> <strong>Generator</strong> に戻す場合は、ブ ラ ッ ク ボックスのコンフィギュレーション M<br />

関数で指定し た と お り に、 標準ロ ジ ッ ク タ イプがブール型 と固定小数点型の値に変換されま<br />

す。 幅が違 う 場合は、 エ ラー メッセージが表示されます。 不確定な信号 (Weak High、 Weak<br />

Low など) はすべて <strong>System</strong> <strong>Generator</strong> の不確定値に変換 さ れます。 HDL シミュレーションで<br />

一部だけ不確定な信号 (一番上のビ ッ ト だけが不確定なビ ッ ト ベクタなど) は、 <strong>System</strong><br />

<strong>Generator</strong> ではすべて不確定にな り ます。<br />

• HDL から <strong>System</strong> <strong>Generator</strong> への変換は、 カ ス タ ムのシ ミ ュ レーシ ョ ン専用の最上位レベル<br />

ラッパを VHDL に追加する と 詳細に設定で き ます。 ラッパは、たとえば Weak Low 信号すべ<br />

てを 0 に変換し た り 、不確定な信号すべてを 0 か 1 にしたり してから、<strong>System</strong> <strong>Generator</strong> に戻<br />

します。<br />

68 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Black Box<br />

例<br />

関連項目<br />

次は、 <strong>System</strong> <strong>Generator</strong> ブラック ボ ッ ク ス に関連付けが可能な VHDL エンティティの例です (こ<br />

の例は、 ブラ ッ ク ボックスの例 VHDL モジュールのインポー ト か ら参照し ています)。<br />

library IEEE;<br />

use IEEE.std_logic_1164.all;<br />

use IEEE.numeric_std.all;<br />

entity word_parity_block is<br />

generic (width : integer := 8);<br />

port (din : in std_logic_vector(width-1 downto 0);<br />

parity : out std_logic);<br />

end word_parity_block;<br />

architecture behavior of word_parity_block is<br />

begin<br />

WORD_PARITY_Process : process (din)<br />

variable partial_parity : std_logic := '0';<br />

begin<br />

partial_parity := '0';<br />

XOR_BIT_LOOP: <strong>for</strong> N in din'range loop<br />

partial_parity := partial_parity xor din(N);<br />

end loop; -- N<br />

parity


ChipScope<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクス ChipScop ブロックでは、 ランタイム デバ ッ グおよび FPGA 内の信号<br />

検証など を実行で き ます。<br />

キャプチャ メ モ リ は大容量で、 ト リ ガ オプシ ョ ンが複数提供さ れています。 データ<br />

は、 ユーザー定義の ト リ ガ条件に基づいてキ ャ プチャ され、内部ブ ロ ッ ク メモリに保<br />

存されます。<br />

ChipScope ブロックには、 ChipScope Pro Analyzer を使用してラ ンタ イム時にアク<br />

セスできます。 ChipScope Pro Analyzer は、FPGA の コ ン フ ィ ギ ュ レーシ ョ ン、 ト リ ガ条件の設定、<br />

ラ ン タ イ ム時にキ ャ プチ ャ さ れたデータ の表示に使用し ます。 制御信号およびデータ信号はすべて<br />

JTAG ポー ト を介して転送されるので、 I/O ピンを使用してデータをオフチップに駆動する必要は<br />

ありません。 データ は、 ChipScope Pro Analyzer からエクスポート して、 MATLAB ワークスペー<br />

スに読み込み直すこ と がで き ます。<br />

ハー ド ウ ェ ア と ソ フ ト ウ ェ ア条件<br />

ChipScope Pro ソフトウェア (こ のブ ロ ッ ク を使用する ための ソ フ ト ウ ェ ア インストール情報は、<br />

ソフトウェア要件 か ら入手可能)、 ダウンロード ケーブル、 JTAG コネクタ付きの FPGA ボード が<br />

必要です。 ChipScope Pro の購入については、 http://japan.xilinx.com/chipscope を参照して くださ<br />

い。<br />

ChipScope Pro Analyzer では、 PC と JTAG バウンダリ スキャン チェーンのデバ イ ス間の通信用<br />

に次のダウ ン ロード ケーブルがサポー ト されます。<br />

• パラレル ケーブル III<br />

• パラレル ケーブル IV<br />

• MultiLINX (JTAG モード のみ)<br />

• Agilent E5904B Option 500、 FPGA Trace Port Analyzer (Agilent E5904B TPA)<br />

70 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ChipScope<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Number of trigger ports] : 複数の ト リ ガ ポー ト を使用する と 、検出さ れる イベン ト の範囲が拡<br />

大で き、 格納されるデータ容量を削減で き ます。 選択で き る ト リ ガ ポー ト は、 16 個までです。<br />

トリガ ポー ト の番号は 0 か ら開始さ れ、 Trig0、 Trig1 と い う よ う に名前が付き ます。 デフォル<br />

トは TrigN-1 です。 トリガ ポー ト の名前は、 ポー ト に接続さ れた信号で指定する と 変更で き ま<br />

す。<br />

• [Display settings <strong>for</strong> trigger port] : 各ト リガ ポートに対し、一致ユニットの数と、一致タイプ<br />

を設定する必要があ り ます。 こ のオプシ ョ ンでは、 表示オプシ ョ ン を設定する ト リ ガ ポー ト を<br />

ドロップダウン リストから指定します。 N 個のポー ト に対し、 ト リ ガ ポー ト 0 ~ N-1 のト リ<br />

ガ ポー ト の表示オプシ ョ ンが表示 さ れます。<br />

• [Number of match units] : トリガ ポー ト ご と に複数の一致ユニ ッ ト を使用する と 、 イベン ト 検<br />

出の柔軟性が向上し ます。 トリガ イベン ト をテス トするため、 1 ~ 4 つの一致ユニ ッ ト を使用<br />

できます。 トリガ値は、ChipScope Pro Analyzer の実行時に設定し ます。<br />

• [Match type] : このオプションは、 次の 6 つのいずれかに設定でき ます。<br />

a. [Basic] : = または 比較を実行し ます。<br />

b. [Basic with edges] : [Basic] の操作に加え、 High から Low、 Low から High への遷移も<br />

検出し ます。<br />

c. [Extended] : = または 、 >、


R<br />

e. [Rnage] : =、 、 >、 >=、


ChipScope<br />

既知の問題<br />

詳細情報<br />

1_dataN-1 という名前になり、 オフの場合は、 デフォルトで data0、 data1、 ... dataN という名前に<br />

なります。<br />

• こ のブ ロ ッ ク を使用する ための ソ フ ト ウ ェ ア インストール情報は、ソフトウェア要件を参照し<br />

てください。<br />

• <strong>System</strong> <strong>Generator</strong> デザイ ンにイ ンス タ ンシエー ト でき る ChipScope コアは 1 つだけです。<br />

Simulink の Goto ブロック と From ブ ロ ッ ク を使用する と 、信号を簡単に ChipScope ブロッ ク<br />

に配線でき ます。<br />

• ChipScope ブロッ ク と JTAG ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンは両方 と も JTAG ポー ト を<br />

使用する ため、 同時に使用で き ません。<br />

• ChipScope ブロ ッ ク を 含むデザイ ン ま たはサブシス テム には、 出力ポート が最低 1 つは必要で<br />

す。 出力ポート がない場合、ChipScope ブロ ッ ク は VHDL 合成中に最適化さ れて削除さ れま す。<br />

ChipScope Pro ソフトウェアの詳細は、http://japan.xilinx.com/chipscope を参照して く ださい。<br />

こ のブ ロ ッ ク の使用方法を詳細に示し たチ ュー ト リ アルについては、 ChipScope Pro Analyzer を使<br />

用した リ アルタイム ハー ド ウ ェ ア デバ ッ グ を参照して く ださい。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 73<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Clock Enable Probe<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements] ライブラリと [Index] ライブラリにリスト<br />

されています。<br />

ザイ リンクスの Clock Enable Probe ブロッ クでは、<strong>System</strong> <strong>Generator</strong> モデルのザ<br />

イリンクス信号から派生したクロック イ ネーブル信号を抽出で き ます。<br />

こ のブ ロ ッ ク は、 どのデータ型のザ イ リ ン ク ス信号も 入力 と し て受信し、 ブール<br />

信号を出力し ます。 こ の出力は、 ブール信号が使用可能であれば、 デザ イ ンのど<br />

こ にで も使用で き ます。 プ ローブ出力は、 マルチレー ト 回路のハー ド ウ ェ ア インプリ メンテーショ<br />

ンで使用される理想的な ク ロ ッ ク イ ネーブル信号の動作を模倣し た循環パルスです。 パルスの周波<br />

数は、入力信号のサンプル周期か ら派生し ます。 Simulink の 1 サンプル周期の間、 イネーブル パル<br />

スが入力信号のサンプル周期の終わ り でアサー ト さ れます。 Simulink のシステム周期と同じサンプ<br />

ル周期の信号の場合は、 ブ ロ ッ ク の出力は常に 1 にな り ます。<br />

次の図は、 解析ス コープを付けた Clock Enable Probe ブ ロ ッ ク の使用方法 と 動作を示し た例です。<br />

このモデルの Simulink システムのサンプル周期は、 <strong>System</strong> <strong>Generator</strong> ブロッ クで 1.0 秒 と 指定 さ<br />

れています。 このモデルには、 Simulink のシステム周期だけでな く、 Down Sample ブロックで定<br />

義されたサンプル周期が 3 つ使用さ れています。 Clock Enable Probe (CEProbe) は、 各 Down<br />

Sample ブロッ クの後に配置され、 派生したクロック イ ネーブル信号を抽出し ます。 プローブの出<br />

力は出力ゲー ト ウ ェ イ と 解析用のス コープに送信さ れます。 この例には、ハードウェア システム ク<br />

ロ ッ ク を倍精度で出力する CLK プローブも含まれます。 スコープの出力は、この CLK プローブ出<br />

力と 4 つの ク ロ ッ ク イネーブル プローブからの出力を示しています。 .<br />

74 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Clock Enable Probe<br />

Clock Enable Probe ブロックには、 パラ メータがあり ません。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 75<br />

リリース 9.2.00 2007 年 8 月<br />

R


Clock Probe<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

ザイ リンクスの Clock Probe ブ ロ ッ ク では、倍精度の ク ロ ッ ク信号が Simulink<br />

シ ス テム周期 と 同じ周期で出力さ れます。<br />

クロック信号は、Simulink サンプル周期の開始時にアサー ト さ れる ク ロ ッ ク を<br />

使用し、50/50 のデューテ ィ サイクルで出力されます。 Clock Probe ブロックの<br />

倍精度出力は、 解析専用なのでハー ド ウ ェ アには変換で き ません。<br />

このブロックにはパラメータがありません。<br />

76 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


CMult<br />

CMult<br />

ブロック パラ メータ<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Math] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクスの CMult ブロッ クは、 gain 演算子を イ ンプ リ メ ン ト し ます。 出力は、<br />

入力 と 定数値の積にな り ます。 この値は、 定数を求める MATLAB の論理式で表す<br />

ことができます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Constant] : 定数ま たは式が入 り ます。 定数が指定さ れた固定小数点型で正確に表すこ と がで<br />

き ない場合、 必要に応じ て値は近似値に丸められるかサチュ レー ト (飽和演算) が実行されま<br />

す。 正の値は符号な し、 負の値は符号あ り と し て イ ンプ リ メ ン ト さ れます。<br />

• [Number of bits] : 定数の 2 進小数点のビ ッ ト 位置を指定し ます。ビ ッ ト 0 は LSB を表します。<br />

• [Binary point] : 2 進小数点の位置を指定し ます。<br />

[Output Type] タブ<br />

このタブのパラメータでは、 CMult ブ ロ ッ ク の出力精度を定義し ます。 詳細については、 ブロック<br />

のパラ メ ータ ダイアログ ボックスの共通オプションを参照して く ださい。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 77<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

• [Implement from behavioral HDL description (otherwise use core)] : オンにする と、 ビヘイビ<br />

ア レベルの HDL が使用され、 オフにする と ザイ リ ン ク スの LogiCORE Multiplier <strong>Generator</strong><br />

コアが使用されます。<br />

• [Memory Type] : 分散 RAM かブロ ッ ク RAM を指定します。<br />

• [Placement style] : コ アの配置情報を使用する と 、 2 つの形状オプシ ョ ンが使用可能にな り ま<br />

す。 [Rectangular] では密度の薄い長方形、 [Triangular] では密度の高い三角形のデザ イ ンが作<br />

成されます。<br />

• [Pipeline <strong>for</strong> maximum per<strong>for</strong>mance] : オンにする と、 <strong>System</strong> <strong>Generator</strong> で LogiCORE インプ<br />

リ メ ンテーシ ョ ンが最大限の範囲にパイ プ ラ イ ン接続さ れます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

設定に応じ て、 こ のブロ ッ ク ではザイ リ ン ク ス LogiCORE Multiplier <strong>Generator</strong> コ アが使用さ れま す。<br />

ザイ リンクス<br />

LogiCORE<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

78 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

CMult Multiplier V7.0 • • • • •<br />

4 5<br />

Multiplier V10.0 • • •


Concat<br />

Concat<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Data Types]、 [Index] ライブラリにリス<br />

トされています。<br />

ブロック インターフェイス<br />

ザイ リンクスの Concat ブ ロ ッ ク では、 符号な し の整数で表される n ビッ ト ベ<br />

クタ (2 進小数点の位置が 0 にある、 n 個の符号な しの値 ) が連結されます。<br />

ザイ リ ンクスの Reinterpret ブロッ クでは、 この Concat ブロッ クの機能がさら<br />

に拡張されています。<br />

このブロックには、 入力ポートが n 個と出力ポートが 1 つ含まれます。 n は 2 ~ 1024 までの値に<br />

なります。 最初 と 最後の入力ポー ト には、 それぞれ hi および lo と い う 名前が付いています。 この 2<br />

つのポー ト 間の入力ポー ト には、何も付いていません。 hi ポー ト への入力が出力の MSB に、lo ポー<br />

ト への入力が出力の LSB にな り ます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Number of inputs] : 連結する入力数を 2 ~ 1024 までの範囲で指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

Concat ブロックでは、 ザイ リンクス LogiCORE は使用されません。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 79<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Configurable Subsystem Manager<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

ザイ リンクスの Configurable Subsystem Manager ブロッ クは、 Simulink のコ<br />

ンフィギャブル システムの機能を拡張したブロックで、 シミ ュレーショ ンと同<br />

様、 ハー ド ウ ェ アの生成に も サブシ ス テム コンフィギュレーションが選択でき<br />

るようになります。<br />

このブロックを使用すると、 <strong>System</strong> <strong>Generator</strong> で使用 さ れた場合、 特定機能の<br />

Simulink ライブラリ ブロッ ク (サブシステム) を作成できます。 詳細は、 コン<br />

フィギャブル サブシステム と <strong>System</strong> <strong>Generator</strong>を参照して く ださい。<br />

<strong>System</strong> <strong>Generator</strong> では、 コ ンフ ィ ギャブル サブシステム と してイ ンポー ト したラ イブラ リ サブシ<br />

ステムに Configurable Subsystem Manager ブロッ クが自動的に挿入されます。 また、 Simulink お<br />

よび <strong>System</strong> <strong>Generator</strong> のコンフィギャブル サブシステムの機能を使用して、 ラ イブラ リ サブシス<br />

テム を手動で作成する こ と も で き ます。<br />

コンフィギャブル サブシステムにはサブブロ ッ クのコ レ クシ ョ ンが含まれ、そのサブブロ ッ ク 1 つ<br />

1 つがサブシステムを表し ています (サブシステムのブロ ッ ク を選択して、どのサブブロ ッ ク を使用<br />

するかを指定できます)。 このサブブロ ッ ク を使用して、 サブシステムのシ ミ ュ レーシ ョ ン結果が取<br />

得されます。<br />

<strong>System</strong> <strong>Generator</strong> デザイ ンはシ ミ ュ レーシ ョ ンでき るだけでな く 、 ハード ウ ェ アに変換もでき るの<br />

で、2 つ目のブ ロ ッ ク はコ ン フ ィ ギ ャ ブル サブシステムのハードウェア表記として指定しておく と、<br />

便利です。 このハードウェア表記は、 コンフィギャブル サブシ ス テム をハー ド ウ ェ アに変換する た<br />

めに使用されるサブブ ロ ッ ク です。 たとえば、 コンフィギャブル サブシステムにフ ィ ルタ を イ ンプ<br />

リメントする HDL が記述されたブラ ッ ク ボックスと、 通常の <strong>System</strong> <strong>Generator</strong> ブロックを使用<br />

して同じフィルタをインプリ メントするサブシステムの 2 つのサブブロ ッ クが含まれる と し ます。<br />

こ の場合、 サブシ ス テムの方をサブシ ス テム と し て、 ブ ラ ッ ク ボックスの方をハードウェア表記と<br />

し て使用し ます。 つま り 、 サブシ ス テムをシ ミ ュ レーシ ョ ンに、 ブ ラ ッ ク ボックスの HDL をハー<br />

ド ウ ェ ア生成に使用し ます。<br />

Configurable Subsystem Manager ブロッ クでは、 <strong>System</strong> <strong>Generator</strong> コンフィギャブル サブシステ<br />

ムのサブブ ロ ッ ク のどれをハー ド ウ ェ ア表記に指定する かを決め る こ と がで き ます。 指定する に<br />

は、 次の手順に従っ て く だ さ い。<br />

1) サブブロ ッ クの 1 つの中に Configurable Subsystem Manager ブロックを配置します。<br />

2) パラ メータ設定の [When generating, use] でハー ド ウ ェ ア表記を選択し ます。<br />

メモ : Configurable Subsystem Manager ブロッ クを使用できるのは、コンフィギャブル サブシステ<br />

ムのサブブ ロ ッ ク内に配置し た場合のみなので、 サブシステム内には最低で もサブブロ ッ クが 1 つ<br />

は必要です。<br />

メモ : 複数のサブブ ロ ッ ク に こ のブ ロ ッ ク がそれぞれ含まれる場合、 ブ ロ ッ ク 同士が自動的に同期<br />

し、 同じ ハー ド ウ ェ ア表記が選択さ れます。<br />

80 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Configurable Subsystem Manager<br />

ブロック パラ メータ<br />

次の図に、 こ のブロ ッ ク のパラ メ ータ ダイアログ ボックスを示します。<br />

このブロックで設定できるパラメータは、 [When generating, use] だけです。 このパラ メータでは、<br />

ハー ド ウ ェ アの生成にどのサブブ ロ ッ ク を使用する かを指定し ます。 次は、 選択肢の例です。<br />

[Configurable Subsystem Block Choice] を選択する と 、コ ン フ ィ ギ ャ ブル サブシステム と して指定<br />

されたサブブロッ クがハードウェア生成にも使用されます。 こ れ以外を リ ス ト か ら選択する と 、 そ<br />

れがハー ド ウ ェ ア生成に使用されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 81<br />

リリース 9.2.00 2007 年 8 月<br />

R


Constant<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Control Logic]、 [Math]、 [Index] ライブ<br />

ラリにリストされています。<br />

<strong>DSP</strong>48 命令モー ド<br />

ザイ リ ンクスの Constant ブ ロ ッ ク では、 固定小数点値、 ブール値、 <strong>DSP</strong>48 命令のい<br />

ずれかの定数が生成されます。 このブロックは、 Simulink の Constant ブロック と類<br />

似していますが、 ザイ リ ンクス ブ ロ ッ ク の入力を直接駆動で き る点が異な り ます。<br />

<strong>DSP</strong>48 命令を作成する よ う に設定し た場合に Constant ブ ロ ッ ク を使用する と 、<strong>DSP</strong>48 の制御シー<br />

ケ ン ス を生成しやす く な り ます。 次の図に例を示し ます。 この例では、 <strong>DSP</strong>48 ブロックに 4 つの命<br />

令を含むシーケ ン スが使用され、 35X35 ビ ッ ト の乗算器が イ ンプ リ メ ン ト さ れています。 Constant<br />

ブロ ッ クは命令をマルチプレ クサに伝え、マルチプレ クサがシーケンスの各命令を選択しています。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Type] : 定数の タ イ プを指定し ます。 指定で き る のは、 ブール型、 符号付き固定小数点、 符号<br />

な し固定小数点、 <strong>DSP</strong>48 命令のいずれかです。<br />

• [Constant value] : 定数の値を指定し ます。 変更する と 、 新しい値がブ ロ ッ ク アイコンに表示さ<br />

れます。<br />

• [Sampled constant] : サン プル周期を 出力に関連付け、 Constant ブロ ッ ク の駆動する ブロ ッ ク に<br />

伝播でき ま す (こ れが便利なのは、 ブロ ッ ク は最後にはハード ウ ェ アを タ ーゲッ ト にし 、<br />

Simulink のサン プル周期がハード ウ ェ アのク ロ ッ ク 周期を 作成する のに使用さ れる ためです)。<br />

[<strong>DSP</strong>48] タブ<br />

[Type] フィールドで [<strong>DSP</strong>48 Instruction] をオンにする と、 このタブが設定できる よ うにな り ます。<br />

<strong>DSP</strong>48 の詳細は、 <strong>DSP</strong>48 ブ ロ ッ ク の説明を参照し て く だ さ い。<br />

• [<strong>DSP</strong>48 operation] : 選択し た <strong>DSP</strong>48 命令を表示し ます。<br />

82 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Constant<br />

• [Operation select] : <strong>DSP</strong>48 命令を選択で き ます。 カ ス タ ム を選択する と 、z_mux +/-(yx_mux +<br />

carry) フ ォーマ ッ ト の命令形式が可能なマス ク パ ラ メ ータ が表示されます。<br />

• [Z mux] : <strong>DSP</strong>48 の加算器に対する Z ソースを {'0', 'C', 'PCIN', 'P','C', 'PCIN>>17',' P>>17'}<br />

のいずれかか ら指定し ます。<br />

• [Operand] : <strong>DSP</strong>48 の加算器で加算を実行する か、 減算を実行する か指定し ます。<br />

• [YX muxes] : <strong>DSP</strong>48 の加算器に対する YX ソースを {'0','P', 'A:B', 'A*B', 'C', 'P+C', 'A:B+C' }<br />

のいずれかか ら指定し ます。 [A:B] にする と 、 A[17:0] が B[17:0] と連結されて 36 ビッ トの値<br />

が出力され、 <strong>DSP</strong>48 加算器の入力 と し て使用さ れます。<br />

• [Carry input] : <strong>DSP</strong>48 の加算器に対する YX ソースを {'0', '1', 'CIN', '~SIGN(P or PCIN)',<br />

'~SIGN(A:B or A*B)' ,. '~SIGND(A:B or A*B)'} のいずれかから指定し ます。 [~SIGN (P or<br />

PCIN)] の場合は、 キ ャ リ ー ソースが [Z mux] の設定によ って P か PCIN のいずれかにな り、<br />

[~SIGN (P or PCIN)] の場合は、キ ャ リ ー ソースが [Z mux] の設定によ って P か PCIN のいず<br />

れかにな り 、 [~SIGND (A*B or A:B)] 場合は、 [~SIGN(A*B or A:B)] に遅延が追加されます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

このブロックでは、 ザイ リンクス LogiCORE は使用 されません。<br />

付録 : <strong>DSP</strong>48 の制御命令形式<br />

命令フ ィ ール ド 名 ロケーシ ョ ン ニーモニ ッ ク 説明<br />

YX Mux op[3:0] 0 0<br />

P <strong>DSP</strong>48 出力レ ジ ス タ<br />

A:B 入力 A と B を連結 (A は MSB)<br />

A*B 入力 A と B を乗算<br />

C <strong>DSP</strong>48 の入力 C<br />

P+C <strong>DSP</strong>48 の入力 C + P<br />

Z Mux op[6:4] 0 0<br />

A:B+C 入力 A と B の連結 + C レジスタ<br />

PCIN PCOUT からの <strong>DSP</strong>48 カスケード<br />

入力<br />

P <strong>DSP</strong>48 出力レ ジ ス タ<br />

C <strong>DSP</strong>48 の入力 C<br />

PCIN>>17 17 個ダウ ンシフ ト されたカスケー<br />

ド入力<br />

P>>17 17 個ダウ ンシフ ト された <strong>DSP</strong>48<br />

Operand op[7] + 加算<br />

- 減算<br />

出力レ ジ ス タ<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 83<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

命令フ ィ ール ド 名 ロケーシ ョ ン ニーモニ ッ ク 説明<br />

Carry In op[8] 0 or 1 キャ リーインを 0 か 1 に設定<br />

CIN ソースに cin を選択<br />

'~SIGN(P or PCIN) P または PCIN の対称丸め<br />

'~SIGN(A:B or A*B) A:B または A*B を対称丸め<br />

'~SIGND(A:B or A*B) A:B または A*B を対称丸め (遅延<br />

付き)<br />

84 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Convert<br />

Convert<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Data Types]、 [Math]、 [Index] ライブラ<br />

リにリストされています。<br />

ブロック パラ メータ<br />

ザイ リンクスの Convert ブロ ッ クでは、 各入力サンプルが指定した演算タイプの値に<br />

変換さ れます。 た と えば、 あ る数値を符号付き (2 の補数 ) または符号なしの値にでき<br />

ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

このブロックの [Type] は、 ブロックのパラ メータ ダイアログ ボックスの共通オプションで説明さ<br />

れる演算タ イ プ と 同じ です。<br />

[Quantization]<br />

量子化のエ ラーは、 小数点以下のビ ッ ト 数がその部分を表現する のに不十分な場合に発生し ます。<br />

[Round] と [Truncate] というオプションがあります。 [Round] は丸め (最近似値への四捨五入。 同<br />

等の近似値が 2 つある場合は、 0 から遠い方の値に丸めます)、 [Truncate] は切 り 捨て (LSB よ りも<br />

右のビ ッ ト を削除) を実行し ます。<br />

[Overflow]<br />

オーバーフ ローのエ ラ ーは、 データ が表現可能な値の範囲外であ る場合に発生し ます。 オーバーフ<br />

ローの場合、 [Saturate] (上限が最大の正の値、 下限が最小の負の値に飽和演算)、 [Wrap] (MSB よ<br />

りも左のビットを削除)、 [Flag as error] (シミュレーション中に Simulink エラーとしてオーバーフ<br />

ロー ) というオプションがあります。 [Flag as error] は、 シ ミ ュ レーシ ョ ンのみに使用でき ます。 生<br />

成されるハードウェアは、 [Wrap] をオンにしたと き と同じにな り ます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Pipeline <strong>for</strong> maximum per<strong>for</strong>mance] : ブ ロ ッ ク でレ イ テンシ値を使用し て、最大限の範囲まで<br />

パイ プ ラ イ ン接続される よ う に し ます。 レイテンシは、選択したパイプライン オプシ ョ ンに基<br />

づいて、 次の優先順で分散さ れます。<br />

レイテンシ (パイプライン = 0) : 出力の遅延パ イ プ ラ イ ン<br />

レイテンシ (パイプライン = 1) : 出力レ ジ ス タ、 サチュ レー ト 前のレ ジ ス タ、 量子化前のレ ジ<br />

ス タ、 出力の遅延パイ プ ラ イ ン と し ての余剰レ イ テンシ<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 85<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Convolutional Encoder v3_0<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

ザイ リンクスの Convolutional Encoder ブ ロ ッ ク は、 たたみ込み符号のエン<br />

コーダをインプ リ メ ン ト します。 通常 Viterbi デコーダ と併用され、 デジタ<br />

ル通信シ ス テムで順方向誤 り 訂正 (FEC) を実行し ます。<br />

値は リ ニア フィード フォワード シフ ト レジス タで、 次の図に示すよ う に、<br />

各ビ ッ ト の入力データのモジュ ロ 2 の和を計算し てエン コード されます。<br />

シフ ト レ ジ ス タ長は制約長で指定 さ れます。 たたみ込み符号では、 データ枠のどのビ ッ ト をモジ ュ<br />

ロ 2 に加算する かが指定 さ れます。 ブロッ クを リセッ トする と、シフ ト レジスタが 0 に設定されま<br />

す。 エン コーダのレー ト は、 入力ビ ッ ト 長の出力ビ ッ ト 長に対する比率です。 レー ト が 1/2 のエン<br />

コーダか ら は、 各入力ビ ッ ト ご と に 2 ビ ッ ト が出力 さ れます。 同様に、 レー ト が 1/ 3 のエン コーダ<br />

か ら は、 各入力ビ ッ ト ご と に 3 ビ ッ ト が出力 さ れます。<br />

ブロック インターフェイス<br />

このブロックには 2 ~ 4 個の入力ポー ト と 3 ~ 8 個の出力ポー ト があ り ます。 din ポー ト のデータ<br />

型は UFix1_0 である必要があ り ます。 こ のデータ型を使用する と 、 エン コー ド さ れる値が許可さ れ<br />

ます。 vin ポー ト は、din の値が有効かど う かを示し、 有効な値のみがエン コー ド さ れます。 出力ポー<br />

ト dout1 ~ dout7 か ら は、 エン コー ド さ れたデータ が出力されます。 ポー ト dout1 は配列の最初の<br />

符号、 dout2 は 2 番目の符号を出力し ます。 配列の符号の数によ ってエン コーダの出力レー ト が設<br />

定され、 データ出力ポー ト の数が設定されます。 出力ポー ト vout は、 出力値が有効かど う かを示し<br />

ます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Constraint length] : 制約長。 n+1 にな り ます (n はエン コーダに含まれる制約レジス タ長)。<br />

• [Convolutional code array (octal)] : 8 進数のたたみ込み符号の配列。 出力レー ト は配列長で決<br />

まります。 2 ~ 7 の符号を指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

86 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Convolutional Encoder v3_0<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

Convolutional<br />

Encoder v3_0<br />

ザイリンクス LogiCORE<br />

このブロックでは、 次のザイ リンクス LogiCORE Convolution Encoder コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

Convolutional<br />

Encoder<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 87<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V3.0 • • • •<br />

4 5<br />

R


R<br />

Convolutional Encoder v6_0<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

ザイ リンクスの Convolutional Encoder ブ ロ ッ ク は、 たたみ込み符号のエン<br />

コーダをインプ リ メ ン ト します。 通常 Viterbi デコーダ と併用され、 デジタ<br />

ル通信シ ス テムで順方向誤 り 訂正 (FEC) を実行し ます。<br />

値は リ ニア フィード フォワード シフ ト レジス タで、 次の図に示すよ う に、<br />

各ビ ッ ト の入力データのモジュ ロ 2 の和を計算し てエン コード されます。<br />

シフ ト レ ジ ス タ長は制約長で指定 さ れます。 たたみ込み符号では、 データ枠のどのビ ッ ト をモジ ュ<br />

ロ 2 に加算する かが指定 さ れます。 ブロッ クを リセッ トする と、シフ ト レジスタが 0 に設定されま<br />

す。 エン コーダのレー ト は、 入力ビ ッ ト 長の出力ビ ッ ト 長に対する比率です。 レー ト が 1/2 のエン<br />

コーダか ら は、 各入力ビ ッ ト ご と に 2 ビ ッ ト が出力 さ れます。 同様に、 レー ト が 1/ 3 のエン コーダ<br />

か ら は、 各入力ビ ッ ト ご と に 3 ビ ッ ト が出力 さ れます。<br />

ブロック インターフェイス<br />

このブロックには 2 ~ 4 個の入力ポー ト と 3 ~ 8 個の出力ポー ト があ り ます。 din ポー ト のデータ<br />

型は UFix1_0 である必要があ り ます。 こ のデータ型を使用する と 、 エン コー ド さ れる値が許可さ れ<br />

ます。 vin ポー ト は、 din に示された値が有効であ る こ と を表し ます。 有効な値のみがエン コー ド さ<br />

れます。 出力ポー ト dout1 ~ dout7 か ら は、エン コー ド さ れたデータが出力されます。 ポー ト dout1<br />

は配列の最初の符号、 dout2 は 2 番目の符号を出力し ます。 配列の符号の数に よ ってエン コーダの<br />

出力レー ト が設定され、 データ出力ポー ト の数が設定 さ れます。 出力ポー ト vout は、 出力値が有効<br />

かど うかを示します。<br />

ブロック パラ メータ ダイアログ ボックス<br />

次の図は、 ブロ ッ ク のパラ メ ータ ダイアログ ボックスを示しています。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Constraint length] : 制約長。 n+1 にな り ます (n はエン コーダに含まれる制約レジス タ長)。<br />

• [Convolutional code array (octal)] : 8 進数のたたみ込み符号の配列。 出力レー ト は配列長で決<br />

まります。 2 ~ 7 の符号を指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

88 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Convolutional Encoder v6_0<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

Convolutional<br />

Encoder v6_0<br />

ザイリンクス LogiCORE<br />

このブロックでは、 次のザイ リンクス LogiCORE Convolution Encoder コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

Convolutional<br />

Encoder<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 89<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5<br />

V6.0 • • • •<br />

R


Counter<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Control Logic]、 [Math]、 [Index] ライブ<br />

ラリにリストされています。<br />

ザイ リ ンクスの Counter ブロッ クは、 フ リー ランニング カウンタ、 またはアップ カウ<br />

ンタ、 ダウン カウンタ、 アップ / ダウン カウンタなどのカウント制限のあるカウンタ<br />

をインプリ メント します。 カ ウ ン タの出力は、 符号付き ま たは符号な し の固定小数点の<br />

値で指定で き ます。<br />

フリー ランニング カウンタは、 FPGA ハー ド ウ ェ アの中で も コ ス ト が一番安価です。 フ リー ラン<br />

ニングのアップ カウンタ、 ダウン カウンタ、 アップ/ダウン カウンタは、 このブロックの [Provide<br />

load port] をオンにして、 その出力に din 入力ポー ト の値を読み込むよ う に も設定で き ます。<br />

フリー ランニングのアップ カ ウ ン タ の出力は、 次の よ う に計算さ れます。<br />

n は、 カ ウ ン タのビ ッ ト 数を示し ています。 フ リー ランニングのダウン カウンタの場合は、加算を<br />

減算に置き換えて計算し ます。<br />

フリー ランニングのアップ/ダウン カ ウ ン タ の場合、 入力ア ッ プ ポー ト が 1 の場合は加算、 0 の場<br />

合は減算が実行されます。<br />

カウント制限のあるカウンタは、 フリー ランニング カウンタとコンパレータを組み合わせてイン<br />

プリ メントします。 カ ウ ン ト 制限のあ る カ ウ ン タ の出力精度は、 64 ビッ トにのみ制限されていま<br />

す。 こ の タ イ プのカ ウ ン タは、 最初 と 最後の値の差を調度半分に分割する [Step] 値を設定する と、<br />

最初と最後の値の間に割 り 込むよ う に設定でき ます。<br />

カウント制限のあるアップ カ ウ ン タの出力は、 次の よ う に計算 さ れます。<br />

カウント制限のあるダウン カ ウ ン タの場合は、 加算を減算に置き換えて計算し ます。 カウント制限<br />

のあるアップ/ダウン カ ウ ン タ の場合、 入力ポー ト up が 1 の場合は加算、 0 の場合は減算が実行さ<br />

れます。<br />

load ポー ト が付いたフ リ ー ランニングのアップ カ ウ ン タ の出力は、 次の よ う に計算されます。<br />

n は、 カ ウ ン タのビ ッ ト 数を示し ています。 ダウン カ ウ ン タの場合は、 加算を減算に置き換えて計<br />

算します。<br />

90 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Counter<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Counter type] : カ ウ ン ト 制限のあ る カ ウ ン タ ま たはフ リ ー ランニングのカウンタのどちらか<br />

を指定します。<br />

• [Number of bits] : ブロックの出力のビッ ト数を指定します。<br />

• [Binary point] : ブロッ クの出力の 2 進小数点の位置を指定し ます。<br />

• [Output type] : ブロ ッ クの出力を符号付きにするか符号なしにするか指定します。<br />

• [Initial value] : 最初に出力される値を指定し ます。<br />

• [Count to value] : 最後の値を指定し ます。 こ の値に よ り 、 カ ウ ン ト 制限のあ る カ ウ ン タは リ<br />

セッ ト されます。 Inf は、 指定された精度で表現可能な最大出力を示し ます。 この値は、 最初の<br />

値と同じにはできません。<br />

• [Step] : インクリメント値またはデクリメント値を指定します。<br />

• [Count direction] : カウント方向 (アップまたはダウン) を指定する か、 オプシ ョ ンの入力ポー<br />

ト up でカウンタの方向を指定します (アップ/ダ ウ ン を選択し た場合)。<br />

• [Provide load port] : オンにする と、 ブロ ッ クが load と din ポー ト の付いたフ リ ー ランニング<br />

のロード カウンタとして動作します。 load ポー ト は、 フ リ ー ランニング カウンタの場合にの<br />

み使用で き ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 ザイ リンクス LogiCORE Counter コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 91<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

Counter Binary Counter V7.0 • • • • •<br />

4 5<br />

Binary Counter V9.1 • • •<br />

R


DAFIR v9_0<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクスの DAFIR ブ ロ ッ ク は、 分散演算タ イ プの FIR (Finite Impulse Response)<br />

デジタル フ ィ ルタ、 ま たは同一の FIR フィルタ ( マルチチャネル モード ) のバン ク を<br />

インプリ メント します。<br />

N タップ フィルタは、h(0)、h(1)、....、h(n-1) のよ うに N 個のフ ィ ルタ係数 (またはタッ<br />

プ) で定義されます。 h(i) はそれぞれザ イ リ ン ク スの固定小数点の値にな り ます。 このフィルタ ブ<br />

ロ ッ ク では、 ザ イ リ ン ク スの固定小数点のデータ サンプルのス ト リーム (x(0)、 x(1)、 ...) を受信し、<br />

n で出力を計算し ます。<br />

ブロック インターフェイス<br />

FIR ブロ ッ ク には、1 ~ 8 つのデータ チャネルと 複数のオプショ ンのポート を含める こ と ができます。<br />

• vin : xn シンボルが有効か無効かを示し ます。 デシ メーシ ョ ン FIR フ ィ ルタ の場合、vin ポー ト<br />

のステートは間引きされるサンプル グループすべてに合わせる必要があ り ます。 つま り 、 N ず<br />

つの vin のサンプル グループ (N はデシ メ ーシ ョ ン係数) では、 すべて 1 かすべて 0 のいずれ<br />

かにする必要があ り ます。 サンプル グループは、 シ ミ ュ レーシ ョ ンの開始時点 (t=0) から揃え<br />

られます。<br />

• vout : yn シンボルが有効か無効かを示し ます。<br />

• rfd : ブ ロ ッ ク が新しいデータ を受信で き る状態かど う かを示し ます。 このポートは、 入力ポー<br />

ト xn と同じデータ レー ト でブール信号を駆動し ます。 こ の信号は、 シ ミ ュ レーシ ョ ンの開始<br />

時にアサー ト され、リ ロード サイクルが開始されるまでアサート されたまま (true) です。 rfd 信<br />

号はロー ド 信号がアサー ト さ れる と 、 すぐ後のサイ ク ルで Low にな り ます。 rfd 信号はブ ロ ッ<br />

クがリ ロード シーケンスを終了する と、 再びアサー ト されます。 使用で き る のは、 係数を リ<br />

ロード していると きか、 シリアル入力が選択されたと きです。<br />

• sel_in : シ リ アル入力が選択された場合、 現在のフ ィ ルタ の入力チ ャ ネル数を示し ます。<br />

• sel_out : シ リ アル入力が選択さ れた場合、 現在のフ ィ ルタ の出力チ ャ ネル数を示し ます。<br />

92 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


DAFIR v9_0<br />

係数の リ ロー ド<br />

DA FIR フィルタには、係数をリロードするためのポートをオプションで含めることができます。 リ<br />

ロード シーケ ン スが開始 さ れる と 、 フ ィ ル タは新し いデータ入力サンプルを受信する のを停止し、<br />

新しいフ ィルタ係数を受信し始めます。 この新しい係数がすべて書き込まれると、 フィルタは係数<br />

を処理し、 必要な内部データ構造を初期化し ます。 リ ロード に必要な時間は、 フ ィ ルタの長さ と タ<br />

イプによって異なります。 リロード シーケンスが終了する と、 フ ィ ルタはオン ラ イ ン状態に戻 り、<br />

新し い入力データ サンプルの受信を続行します。 リロード シーケンス と フ ィルタの リ ロード時間<br />

の詳細は、 FIR コ アのデータ シー ト を参照し て く だ さ い。 次の図は、 リ ロード シーケンスのタ イ ミ<br />

ング例です。<br />

係数の リ ロー ド 用のオプシ ョ ン ポー ト<br />

coef : 新しいフ ィルタ係数はこのポート を介してブロ ッ クに書き込まれます。 coef ポー ト のビ ッ ト<br />

数や 2 進小数点は、 指定し た係数ビ ッ ト 数 と 係数 2 進小数点 と 同じにな り ます。 このポートは、 入<br />

力ポー ト xn と同じデータ レー ト で駆動さ れる必要があ り ます。<br />

coef_we : coef ポート のデータがブロ ッ クに書き込まれるタ イ ミ ングを制御する書き込みイネーブ<br />

ル信号です。 このポートは、 リ ロード サイ クルが開始し た後に、 新しい係数がフ ィ ルタに書き込ま<br />

れる タ イ ミ ング を決定し ます。 最初の新し い係数は、 ロー ド 信号がアサー ト さ れた後のサ イ ク ルで<br />

フィルタに書き込めるようになります。 このポートは、 入力ポート xn と同じデータ レー ト のブー<br />

ル信号で駆動される必要があ り ます。<br />

load : load ポー ト がアサー ト される と (true になる と)、係数の リ ロ ー ド シーケ ン スが開始 さ れます。<br />

load 信号は 1 サ イ ク ル間送信される必要があ り 、 リ ロー ド シーケンス中の次のアサー ト で、 リ ロー<br />

ド プロセスが再開されます。 このポートは、 入力ポート xn と同じデータ レート のブール信号で駆<br />

動される必要があ り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 93<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック パラ メータ ダイアログ ボックス<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Coefficients] : フィルタ係数のベクタで、MATLAB ワー ク スペースの変数か ら算出し た り 、<br />

MATLAB で代わ り に計算する こ と も で き ます。 <strong>System</strong> <strong>Generator</strong> のチュー ト リ アルの例も参<br />

照してください。<br />

• [Structure] : ザイ リ ンクス Smart-IP FIR コアの推奨インプリ メンテーションは、フィルタ タッ<br />

プ シーケ ン スの構造に よ って異な り ます。 [Inferred from Coefficients]、[None]、[Symmetric]、<br />

[Negative Symmetric]、 [Half-Band Filter]、 [Interpolate FIR] のいずれかを選択で き ます。<br />

• [Number of bits (always signed)] : フ ィ ルタ の係数を表すのに使用さ れる ビ ッ ト 数を入力し ま<br />

す。<br />

• [Binary point] : フ ィ ルタ の係数を表すのに使用さ れる小数点以下のビ ッ ト 数を入力し ます。<br />

[Advanced] タブ<br />

[Advanced] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Number of channels] : 1 ~ 8 を選択し ます。 マルチチャネル フ ィ ルタ の場合は、多相機能がサ<br />

ポー ト されていないので、 フ ィ ルタはシングル レー ト にする必要があ り ます。 チャネルをシリ<br />

アルで処理する コ アの場合、 <strong>System</strong> <strong>Generator</strong> は必要なスループ ッ ト にする ため、 チャ ネル数<br />

と同じ係数でコアをオーバークロックにします。 制御ロ ジ ッ ク のオーバーヘ ッ ド を削減する に<br />

は、 ブロ ッ ク の有効ビ ッ ト がすべての入力で一致し ている必要があ り ます。<br />

• [Serial input] : チ ャ ネル数が複数あ る場合、 フ ィ ルタへの入力をシ リ アル (時分割多重) または<br />

パ ラ レルのいずれかにで き ます。<br />

• [Polyphase behavior] : デシ メーシ ョ ン、 イ ンターポレーシ ョ ン、シングル レー ト か ら該当する<br />

ものを選択します。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

94 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


DAFIR v9_0<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

ザイリンクス LogiCORE<br />

このブロックでは、常にザイ リンクス LogiCORE Distributed Arithmetic FIR Filter コアが使用され<br />

ます。<br />

Simulink モデルはサンプル入力/サンプル出力ベース で動作し ますが、 こ の コ アではオーバーク<br />

ロ ッ ク に よ る シ リ アル演算を使用で き ます。 この場合、レイテンシは追加されますが、フィルタに<br />

必要なハー ド ウ ェ アは削減で き ます。 フィルタ モード と パラ メータの詳細は、 このコアのデータ<br />

シー ト を参照し て く だ さ い。<br />

ザイ リンクス<br />

LogiCORE<br />

DAFIR v9_0 Distributed<br />

Arithmetic FIR<br />

Filter<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 95<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V9.0 • • • • •<br />

4 5<br />

R


R<br />

DDS Compiler v1_1<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクスの DDS Compiler v1_1 ブロックは、 ダイレク ト デジタル シンセサイ<br />

ザで、 NCO (Numerically Controlled Oscillator ) と も呼ばれます。 このブロックで<br />

は、 ル ッ ク ア ッ プ テーブルを使用し てサ イ ン波が生成さ れます。 ルッ クアップ テー<br />

ブルでマ ッ プ さ れた位相は、 デジ タル積分器 ( アキュムレータ ) で出力波形に さ れま<br />

す。<br />

DDS を理解する には、 ブ ロ ッ ク がどの よ う に FPGA ハード ウ ェ アにイ ンプ リ メ ン ト されるかを知<br />

る必要があ り ます。 次の図は、 ザイ リ ン ク ス LogiCORE の高位レベルを示し た ものです。 位相増分<br />

と 位相オフセ ッ ト は定数 と し て定義で き る ほか、 オプシ ョ ンの入力ポー ト を介し てダ イ ナ ミ ッ ク に<br />

設定する こ と も で き ます。 これらの値は、 サンプルごとのサイクルで定義されます。 たとえば、 位<br />

相増分が 1/10 の場合は、サンプル 10 サイクルで 1 つのサ イ ン波が終了する こ と を示し ます。 位相<br />

増分が累積 さ れる と 、 位相オフセ ッ ト が結果に追加さ れます。 ディザリングが使用されると、 量子<br />

化の前にデ ィ ザ リ ング シーケンス (量子化器か ら の位相エ ラーを回避する ためのシーケン ス) が追<br />

加されます。 こ の後、量子化さ れた値を使用し てサ イ ン/コサイン ルックアップ テーブルにイ ンデッ<br />

ク スが付け られ、 位相空間が時間にマ ッ プ さ れます。<br />

96 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


DDS Compiler v1_1<br />

ブロック インターフェイス<br />

DDS Compiler v1_1 ブロックには、 次のよ うなポートがあり ます。<br />

• channel (入力) : 4 ビ ッ ト 幅の入力ポー ト で、下位の LogiCORE の A 入力ポー ト の LSB 4 ビッ<br />

トにマップされます。 こ の入力ポー ト では、 現在の入力 (出力) が接続されるチャネルが指定さ<br />

れます。<br />

• data : 時分割のデータ バスです。 こ のポー ト は、 プ ロ グ ラ マブルなオフセ ッ ト 周波数 メ モ リ お<br />

よびプログラマブルな位相オフセット メモリに値を送信するために使用されます。 下位の<br />

LogiCORE の DATA バスにマップされます。<br />

• we : 書き込みイ ネーブルです。 オフセ ッ ト 周波数 メ モ リ と プ ロ グ ラ マブル周波数 メ モ リ のいず<br />

れか、 ま たは両方に対し て書き込みを イ ネーブルに し ます。 どちらのメモリに書き込まれるか<br />

は、 sel ポー ト の値によ って決ま り ます。<br />

• sel : セレク ト ポー ト です。 下位の LogiCORE の A 入力バスの MSB にマップされます。 デー<br />

タ をオフセ ッ ト 周波数 メ モ リ (PINC) に書き込むか、 位相オフセ ッ ト メモリ (POFF) に書き込<br />

むかを選択し ます。 sel が 0 で we が 1 の場合、データはオフセ ッ ト 周波数 メ モ リ に書き込まれ<br />

ます。 sel が 1 で we も 1 の場合、 データは位相オフセ ッ ト メモリに書き込まれます。<br />

• en : ユーザー イネーブルです。 1 の場合、 ブ ロ ッ ク がア ク テ ィ ブにな り ます。 下位の<br />

•<br />

LogiCORE の CE ポー ト にマ ップされます。<br />

rst : 同期 リ セ ッ ト です。 1 の場合、 ブ ロ ッ ク の内部 メ モ リ が リ セ ッ ト さ れます。 下位の<br />

LogiCORE の SCLR (同期ク リ ア) 入力にマ ッ プ さ れます。<br />

• sin : サイ ン出力の値です。 下位の LogiCORE の SINE 出力にマ ッ プ さ れます。<br />

• cos : コサイ ン出力の値です。 下位の LogiCORE の COSINE 出力にマ ッ プ さ れます。<br />

• rdy : アクティブ High で出力データ が準備で き てい る かど う かを示し ます。 出力サンプルが有<br />

効になった こ と を示し ます。<br />

• rfd : アクティブ High でデータが準備できているかど う かを示し ます。 多くのザイ リンクス<br />

LogiCORE に含まれるデータ フ ロー制御信号です。 DDS のコンテンツは、 ほかの LogiCORE<br />

コアと合わせるためだけに提供されます。 このオプションのポートは、 常に VCC に接続され<br />

ます。<br />

• channel (出力) : チャネルのインデックスです。 下位のコアがマルチチャネル用にコンフィギュ<br />

レーシ ョ ン さ れてい る場合に、 どのチ ャ ネルが出力で使用可能なのかを示し ます。 これは、 符<br />

号なしの値にな り ます。 幅は [Basic] タブの [Output frequency array (MHZ)] で指定し たチャ<br />

ネル数で決ま り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 97<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [DDS clock rate (MHz)] : DDS コ アに提供さ れる ク ロ ッ ク の周波数を指定し ます。<br />

• [Spurious free dynamic range (dB)] : DDS 出力で生成さ れる 帯域外ノ イ ズに必要な周波数ド メ イ<br />

ン を 定義し ま す。 範囲は、 ス プリ アス 抑制の 16dB ~ 115dB です。 SFDR 値が 102dB 以上の場<br />

合、 イ ン プリ メ ン テーショ ンでエン ベデッ ド 乗算器が必要になる テイ ラ ー展開が使用さ れま す。<br />

• [Frequency resolution (Hz)] : 同調周波数の粒度を指定し ます。<br />

• [Output Function] : サ イ ン、 コ サ イ ン、 またはその両方など、 ブ ロ ッ ク が計算する関数を指定<br />

します。<br />

• [Negative sine] : サイン出力をネゲート します。<br />

• [Negative cosine] : コ サ イ ン出力をネゲー ト し ます。<br />

• [Output frequency] の [Type] : 出力周波数を [Fixed] にするか [Programmable] にするか指定<br />

します。 [Programmable] を選択する と 、 channel、 data、 we 入力ポー ト がブ ロ ッ ク に追加さ れ<br />

ます。<br />

• [Output frequency array (MHz)] : チャ ネルご と に独立し た周波数を配列に入力で き ます。<br />

• [Phase Offset] の [Type] : 位相オフセ ッ ト を [Fixed]、 [Programmable]、 [None] のいずれかに<br />

指定し ます。 [Programmable] を選択する と 、 channel、 data、 we 入力ポー ト がブ ロ ッ ク に追加<br />

されます。<br />

• [Phase offset angle array] : チ ャ ネルご と に独立し たオフセ ッ ト を配列に入力で き ます。 入力し<br />

た値は、 2π ラジアンで乗算されます。 [Phase Offset] の [Type] を [Fixed] にした場合にのみ設<br />

定でき ます。<br />

[Advanced] タブ<br />

[Advanced] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Noise Shaping] : 位相デ ィ ザ リ ング またはテ イ ラー展開のど ち ら を使用し て イ ンプ リ メ ンテー<br />

ションするかを指定します。 [Auto] にする と 、 最適な方が自動的に選択 さ れます。 デフォル ト<br />

は [None] です。<br />

• [Provide channel port] : 現在の出力サンプルが対応するチ ャ ネルがどれかを示す出力チ ャ ネル<br />

ポー ト が含まれます。<br />

• [Provide rfd port] : アクティブ High でデータが準備できているかど う かを示し ます。 rfd は、多<br />

くのザイリンクス LogiCORE コアに含まれるデータ フ ロー制御信号です。 DDS のコンテンツ<br />

は、 ほかの LogiCORE ベース の コ ア と 合わせる ためだけに提供 さ れます。 このオプショ ンの<br />

ポー ト は、 常に VCC に接続されます。<br />

• [Provide rdy port] : アクティブ High で出力データ が準備で き てい る かど う かを示し ます。 出<br />

力サンプルが有効になった こ と を示し ます。<br />

98 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


DDS Compiler v1_1<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

DDS Compiler<br />

v1_1<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Memory type] : ブ ロ ッ ク を イ ンプ リ メ ン ト する のに分散 メ モ リ を使用する か、ブ ロ ッ ク RAM<br />

メ モ リ を使用する かを指定し ます。 デフ ォル ト は分散 メ モ リ に設定さ れています。<br />

• [<strong>DSP</strong>48 Use] : [Maximal] にする と、最大のパフ ォーマン スにする ために <strong>DSP</strong>48 が使用されま<br />

す。<br />

• [Latency configuration] : [Auto] にする と 、 最大パフ ォーマン スにするためにコ アがパイプラ<br />

イ ン接続され、 コ アには高いレー ト の ク ロ ッ ク が供給で き る よ う にな り ます。<br />

• [Accumulator latency] : 位相アキュムレータのレイテンシを 0 か 1 に指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 ザイ リンクス LogiCORE DDS Compiler v1.1 コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

DDS Compiler<br />

v1_1<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 99<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V4.1 • • •<br />

4 5<br />

R


R<br />

DDS Compiler v2_0<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

ザイ リ ンク ス の DDS Compiler v2_0 ブロ ッ ク は、 ダイ レク ト デジタ ル シンセサイザ<br />

で、 NCO (Numerically Controlled Oscillator ) と も 呼ばれま す。 このブロックでは、<br />

ルッ ク アッ プ テーブルを 使用し てサイ ン 波が生成さ れま す。 ルッ ク アッ プ テーブルで<br />

マッ プさ れた位相は、 デジタ ル積分器 ( アキュムレータ ) で出力波形にさ れま す。<br />

DDS を理解する には、 ブ ロ ッ ク がどの よ う に FPGA ハー ド ウ ェ アにイ ンプ リ メ ン ト<br />

されるかを知る必要があり ます。 次の図は、ザイ リ ン ク ス LogiCORE の高位レベルを示し た もので<br />

す。 位相増分 と 位相オフセ ッ ト は定数 と し て定義で き る ほか、 オプシ ョ ンの入力ポー ト を介し てダ<br />

イ ナ ミ ッ ク に設定する こ と も で き ます。 これらの値は、サンプルごとのサイクルで定義されます。 た<br />

と えば、 位相増分が 1/10 の場合は、 サンプル 10 サイクルで 1 つのサ イ ン波が終了する こ と を示し<br />

ます。 位相増分が累積 さ れる と 、 位相オフセ ッ ト が結果に追加さ れます。 ディザリングが使用され<br />

る と 、 量子化の前にデ ィ ザ リ ング シーケンス (量子化器か ら の位相エ ラーを回避) が追加されます。<br />

こ の後、 量子化された値を使用し てサ イ ン/コサイン ルッ クアップ テーブルにインデッ ク スが付け<br />

られ、 位相空間が時間にマ ッ プ さ れます。<br />

100 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


DDS Compiler v2_0<br />

ブロック インターフェイス<br />

DDS Compiler v2_0 ブロックには、 次のよ うなポートがあり ます。<br />

入力ポー ト<br />

• channelsel : 4 ビ ッ ト 幅の入力ポー ト で、 下位の LogiCORE の A 入力ポー ト の LSB 4 ビッ ト<br />

にマ ップされます。 こ の入力ポー ト では、 現在の入力 (出力) が接続されるチャネルが指定され<br />

ます。<br />

• data : 時分割のデータ バスです。 こ のポー ト は、 プ ロ グ ラ マブルなオフセ ッ ト 周波数 メ モ リ お<br />

よびプログラマブルな位相オフセット メモリに値を送信するために使用されます。 下位の<br />

LogiCORE の DATA バスにマップされます。<br />

• we : 書き込みイ ネーブルです。 オフセ ッ ト 周波数 メ モ リ と プ ロ グ ラ マブル周波数 メ モ リ のいず<br />

れか、 ま たは両方に対し て書き込みを イ ネーブルに し ます。 どちらのメモリに書き込まれるか<br />

は、 sel ポー ト の値によ って決ま り ます。 下位の LogiCORE の WE ポー ト にマ ップされます。<br />

• sel : セレク ト ポー ト です。 下位の LogiCORE の A 入力バスの MSB にマップされます。 デー<br />

タ をオフセ ッ ト 周波数 メ モ リ (PINC) に書き込むか、 位相オフセ ッ ト メモリ (POFF) に書き込<br />

むかを選択し ます。 sel が 0 で we が 1 の場合、データはオフセ ッ ト 周波数 メ モ リ に書き込まれ<br />

ます。 sel が 1 で we も 1 の場合、 データは位相オフセ ッ ト メモリに書き込まれます。<br />

• en : ユーザー イネーブルです。 1 の場合、 ブ ロ ッ ク がア ク テ ィ ブにな り ます。 下位の<br />

•<br />

LogiCORE の CE ポー ト にマ ップされます。<br />

rst : 同期 リ セ ッ ト です。 1 の場合、 ブ ロ ッ ク の内部 メ モ リ が リ セ ッ ト さ れます。 下位の<br />

LogiCORE の SCLR (同期ク リ ア) 入力にマ ッ プ さ れます。<br />

出力ポー ト<br />

• sin : サイ ン出力の値です。 下位の LogiCORE の SINE 出力にマ ッ プ さ れます。<br />

• cos : コサイ ン出力の値です。 下位の LogiCORE の COSINE 出力にマ ッ プ さ れます。<br />

• rdy : アクティブ High で出力データ が準備で き てい る かど う かを示し ます。 出力サンプルが有<br />

効になった こ と を示し ます。<br />

• rfd : アクティブ High でデータが準備できているかど う かを示し ます。 多くのザイ リンクス<br />

LogiCORE に含まれるデータ フ ロー制御信号です。 DDS のコンテンツは、 ほかの LogiCORE<br />

コアと合わせるためだけに提供されます。 このオプションのポートは、 常に VCC に接続され<br />

ます。<br />

• channel : チャネルのインデックスです。 下位のコアがマルチチャネル用にコンフィギュレー<br />

シ ョ ン さ れてい る場合に、 どのチ ャ ネルが出力で使用可能なのかを示し ます。 これは、 符号な<br />

しの値になります。 幅は [Basic] タブの [Output frequency array (MHZ)] で指定したチャネル<br />

数で決ま り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 101<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [DDS clock rate (MHz)] : DDS コ アに提供さ れる ク ロ ッ ク の周波数を指定し ます。<br />

• [Spurious free dynamic range (dB)] : DDS 出力で生成さ れる 帯域外ノ イ ズに必要な周波数ド メ イ<br />

ン を 定義し ま す。 範囲は、 ス プリ アス 抑制の 16dB ~ 115dB です。 SFDR 値が 102dB 以上の場<br />

合、 イ ン プリ メ ン テーショ ンでエン ベデッ ド 乗算器が必要になる テイ ラ ー展開が使用さ れま す。<br />

• [Frequency resolution (Hz)] : 同調周波数の粒度を指定し ます。<br />

• [Output Function] : サ イ ン、 コ サ イ ン、 またはその両方など、 ブ ロ ッ ク が計算する関数を指定<br />

します。<br />

• [Negative sine] : サイン出力をネゲート します。<br />

• [Negative cosine] : コ サ イ ン出力をネゲー ト し ます。<br />

• [Output frequency] の [Type] : 出力周波数を [Fixed] にするか [Programmable] にするか指定<br />

します。 [Programmable] を選択する と 、 channel、 data、 we 入力ポー ト がブ ロ ッ ク に追加さ れ<br />

ます。<br />

• [Output frequency array (MHz)] : チャ ネルご と に独立し た周波数を配列に入力で き ます。<br />

• [Phase Offset] の [Type] : 位相オフセ ッ ト を [Fixed]、 [Programmable]、 [None] のいずれかに<br />

指定し ます。 [Programmable] を選択する と 、 channel、 data、 we 入力ポー ト がブ ロ ッ ク に追加<br />

されます。<br />

• [Phase offset angle array] : チ ャ ネルご と に独立し たオフセ ッ ト を配列に入力で き ます。 入力し<br />

た値は、 2π ラジアンで乗算されます。 [Phase Offset] の [Type] を [Fixed] にした場合にのみ設<br />

定でき ます。<br />

[Advanced] タブ<br />

[Advanced] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Noise Shaping] : 位相デ ィ ザ リ ング またはテ イ ラー展開のど ち ら を使用し て イ ンプ リ メ ンテー<br />

ションするかを指定します。 [Auto] にする と 、 最適な方が自動的に選択 さ れます。 デフォル ト<br />

は [None] です。<br />

• [Provide channel port] : 現在の出力サンプルが対応するチ ャ ネルがどれかを示す出力チ ャ ネル<br />

ポー ト が含まれます。<br />

• [Provide rfd port] : アクティブ High でデータが準備できているかど う かを示し ます。 rfd は、多<br />

くのザイリンクス LogiCORE コアに含まれるデータ フ ロー制御信号です。 DDS のコンテンツ<br />

は、 ほかの LogiCORE ベース の コ ア と 合わせる ためだけに提供 さ れます。 このオプショ ンの<br />

ポー ト は、 常に VCC に接続されます。<br />

• [Provide rdy port] : アクティブ High で出力データ が準備で き てい る かど う かを示し ます。 出<br />

力サンプルが有効になった こ と を示し ます。<br />

102 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


DDS Compiler v2_0<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

DDS Compiler<br />

v2_0<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Memory type] : ブ ロ ッ ク を イ ンプ リ メ ン ト する のに分散 メ モ リ を使用する か、ブ ロ ッ ク RAM<br />

メ モ リ を使用する かを指定し ます。 デフォル ト ではブロ ッ ク RAM がインプリ メン ト されま<br />

す。<br />

• [<strong>DSP</strong>48 Use] : [Maximal] にする と、最大のパフ ォーマン スにする ために <strong>DSP</strong>48 が使用されま<br />

す。<br />

• [Latency configuration] : [Auto] にする と 、 最大パフ ォーマン スにするためにコ アがパイプラ<br />

イ ン接続され、 コ アには高いレー ト の ク ロ ッ ク が供給で き る よ う にな り ます。<br />

• [Accumulator latency] : 位相アキュムレータのレイテンシを 0 か 1 に指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 ザイ リンクス LogiCORE DDS Compiler v2.0 コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

DDS Compiler<br />

v2_0<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 103<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V4.1 • • •<br />

4 5<br />

R


DDS v4_0<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクスの DDS ブロッ クは、 ダイレク ト デジタル シンセサイザで、 NCO<br />

(Numerically Controlled Oscillator ) と も呼ばれます。 このブロックでは、ルックアッ<br />

プ テーブルを使用し てサ イ ン波が生成さ れます。 ルッ クアップ テーブルでマップされ<br />

た位相は、 デジ タル積分器 ( アキュムレータ ) で出力波形に さ れます。<br />

DDS を理解する には、ブ ロ ッ ク がどの よ う に FPGA ハー ド ウ ェ アにイ ンプ リ メ ン ト さ<br />

れるかを知る必要があり ます。 次の図は、 ザイ リ ン ク ス LogiCORE の高位レベルを示し たもので<br />

す。 位相増分 と 位相オフセ ッ ト は定数 と し て定義で き る ほか、 オプシ ョ ンの入力ポー ト を介し てダ<br />

イ ナ ミ ッ ク に設定する こ と も で き ます。 これらの値は、サンプルごとのサイクルで定義されます。 た<br />

と えば、 位相増分が 1/10 の場合は、 サンプル 10 サイクルで 1 つのサ イ ン波が終了する こ と を示し<br />

ます。 位相増分が累積 さ れる と 、 位相オフセ ッ ト が結果に追加さ れます。 ディザリングが使用され<br />

る と 、 量子化の前にデ ィ ザ リ ング シーケンス (量子化器か ら の位相エ ラーを回避) が追加されます。<br />

こ の後、 量子化された値を使用し てサ イ ン/コサイン ルッ クアップ テーブルにインデッ ク スが付け<br />

られ、 位相空間が時間にマ ッ プ さ れます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Function] : ブ ロ ッ ク で計算される関数を指定し ます。<br />

• [Negative sine] : サインポートからの出力がネゲート されます。<br />

• [Negative cosine] : コ サ イ ンポー ト か ら の出力がネゲー ト さ れます。<br />

• [Output width] : 出力信号のビ ッ ト 数、 4 ~ 32 にする必要があ り ます。<br />

• [Phase Increment] の [Type] : Δθ を定数にするかレジスタにするか指定します。 レジスタにす<br />

る と 、 ブ ロ ッ ク のオプシ ョ ンのポー ト が使用さ れます。<br />

104 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


DDS v4_0<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

• [Normalized phase increment] : 位相増分定数 (2π の乗算) を指定し ます。 ビッ ト数は、 次のい<br />

ずれかの方法で決ま り ます。 増分タ イ プに [Register] を選択する と 、 ビ ッ ト 数はデータ ポー ト<br />

の幅に設定され、 [Constant] を選択する と 、 位相増分の値か ら推論 さ れます。<br />

• [Phase Offset] の [Type] : 位相オフセ ッ ト を [Constant]、 [Register]、 [None] のいずれかに指定<br />

します。 レ ジ ス タ にする と 、 ブ ロ ッ ク のオプシ ョ ンのポー ト が使用さ れます。<br />

• [Normalized phase increment] : 位相オフ セッ ト 定数 (2π の乗算) を指定します。 ビット 数は、次の<br />

いずれかの方法で決ま り ま す。 オフセッ ト タイプに [Register] を 選択する と 、 ビ ッ ト 数はデータ<br />

ポート の幅に設定さ れ、 [Constant] を 選択する と 、 位相オフ セッ ト の値から 推論さ れま す。<br />

[Advanced] タブ<br />

[Advanced] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Lookup table input width] : サイン/コサイン ルッ クアップ テーブルに入れるア ド レ ス ビッ ト<br />

の数を指定し ます。 値は、 最低で も 3 にする必要があ り ます。 この幅は、 min(a,b) 以下にする<br />

必要があ り ます。 こ の場合、 a はアキュムレータ幅、 b は 16 (ブロック RAM が使用される場<br />

合) か 10 (分散 RAM が使用される場合) にな り ます。<br />

• [Accumulator latency] : 位相アキュムレータのレイテンシを 0 か 1 に指定し ます。<br />

• [Accumulator width] : 位相アキ ュ ム レータの幅を指定し ます。 値は、 3 ~ 32 にする必要があ<br />

ります。<br />

• [Use phase dithering] : オンにする と 、 位相アキ ュ ム レータの結果にデ ィ ザ リ ング シーケンス<br />

が追加されます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Memory type] : ブ ロ ッ ク を イ ンプ リ メ ン ト する のに分散 メ モ リ を使用する か、ブ ロ ッ ク RAM<br />

メ モ リ を使用する かを指定し ます。<br />

• [Pipeline <strong>for</strong> maximum per<strong>for</strong>mance] : オンにする と 、最大限にパイ プ ラ イ ン さ れた イ ンプ リ メ<br />

ンテーショ ンになり ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 ザイ リンクス LogiCORE DDS DDS v4.0 コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 105<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

DDS v4_0 DDS V4.0 • • •<br />

II、<br />

II Pro<br />

4 5<br />

R


DDS v5_0<br />

R<br />

ブロック ポー ト<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクスの DDS ブロッ クは、 ダイレク ト デジタル シンセサイザで、 NCO<br />

(Numerically Controlled Oscillator ) と も呼ばれます。 このブロックでは、ルックアッ<br />

プ テーブルを使用し てサ イ ン波が生成さ れます。 ルッ クアップ テーブルでマップされ<br />

た位相は、 デジ タル積分器 ( アキュムレータ ) で出力波形に さ れます。<br />

DDS を理解する には、ブ ロ ッ ク がどの よ う に FPGA ハー ド ウ ェ アにイ ンプ リ メ ン ト さ<br />

れるかを知る必要があり ます。 次の図は、 ザイ リ ン ク ス LogiCORE の高位レベルを示し たもので<br />

す。 位相増分 と 位相オフセ ッ ト は定数 と し て定義で き る ほか、 オプシ ョ ンの入力ポー ト を介し てダ<br />

イ ナ ミ ッ ク に設定する こ と も で き ます。 これらの値は、サンプルごとのサイクルで定義されます。 た<br />

と えば、 位相増分が 1/10 の場合は、 サンプル 10 サイクルで 1 つのサ イ ン波が終了する こ と を示し<br />

ます。 位相増分が累積 さ れる と 、 位相オフセ ッ ト が結果に追加さ れます。 ディザリングが使用され<br />

る と 、 量子化の前にデ ィ ザ リ ング シーケンス (量子化器か ら の位相エ ラーを回避) が追加されます。<br />

こ の後、 量子化された値を使用し てサ イ ン/コサイン ルッ クアップ テーブルにインデッ ク スが付け<br />

られ、 位相空間が時間にマ ッ プ さ れます。<br />

この DDS ブロックには、 次のポートが含まれます。<br />

• channel : 現在の入力 (出力) が接続されるチャネルを指定し ます。 channel 入力ポー ト は、DDS<br />

v5 コアの A 入力ポー ト の LSB 4 ビットにマップされます。<br />

106 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


DDS v5_0<br />

ブロック パラ メータ<br />

• data : 時分割のデータ バスです。 こ のポー ト は、 プ ロ グ ラ マブルなオフセ ッ ト 周波数 メ モ リ お<br />

よびプ ロ グ ラ マブルな位相オフセ ッ ト メ モ リ に値を送信する ために使用されます。<br />

• we : 書き込みイ ネーブルです。 オフセ ッ ト 周波数 メ モ リ と プ ロ グ ラ マブル周波数 メ モ リ のいず<br />

れか、 ま たは両方に対し て書き込みを イ ネーブルに し ます。 どちらのメモリに書き込まれるか<br />

は、 sel ポー ト の値によ って決ま り ます。<br />

• sel : セレク ト ポー ト です。 データ をオフセ ッ ト 周波数 メ モ リ (PINC) に書き込むか、 位相オフ<br />

セッ ト メモリ (POFF) に書き込むかを選択し ます。 sel が 0 で we が 1 の場合、 データはオフ<br />

セ ッ ト 周波数 メ モ リ に書き込まれます。 sel が 1 で we も 1 の場合、データは位相オフセ ッ ト メ<br />

モ リに書き込まれます。<br />

• en : ユーザー イネーブルです。 1 の場合、 ブ ロ ッ ク がア ク テ ィ ブにな り ます。<br />

• rst : 1 の場合、 ブ ロ ッ ク の内部 メ モ リ が リ セ ッ ト さ れます。<br />

• sin : サイ ン出力の値です。<br />

• cos : コサイ ン出力の値です。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Function] : ブ ロ ッ ク で計算される関数を指定し ます。<br />

• [Negative sine] : サイン出力をネゲート します。<br />

• [Negative cosine] : コ サ イ ン出力をネゲー ト し ます。<br />

• [Output frequency] の [Type] : 出力周波数を定数にする かレ ジ ス タ にする か指定し ます。 レジ<br />

ス タ にする と 、 ブ ロ ッ ク のオプシ ョ ンのポー ト が使用さ れます。<br />

• [Output frequency array (MHz)] : チャ ネルご と に独立し た周波数を配列に入力で き ます。<br />

• [Phase Offset] の [Type] : 位相オフセ ッ ト を [Constant]、 [Register]、 [None] のいずれかに指定<br />

します。 レ ジ ス タ にする と 、 ブ ロ ッ ク のオプシ ョ ンのポー ト が使用さ れます。<br />

• [Phase offset angle array] : チ ャ ネルご と に独立し たオフセ ッ ト を配列に入力で き ます。 入力し<br />

た値は、 2π ラジアンで乗算されます。<br />

• [Provide channel port] : 現在の出力サンプルが対応するチ ャ ネルがどれかを示す出力チ ャ ネル<br />

ポー ト が含まれます。<br />

[Advanced] タブ<br />

[Advanced] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [DDS clock rate (MHz)] : DDS コ アに提供さ れる ク ロ ッ ク の周波数を指定し ます。<br />

• [Spurious free dynamic range (dB)] : DDS 出力で生成さ れる 帯域外ノ イ ズに必要な周波数ド<br />

メ イ ン を 定義し ま す。 範囲は、 スプリ アス抑制の 16dB ~ 115dB です。 SFDR 値が 102dB 以<br />

上の場合、イ ン プリ メ ン テーショ ンでエン ベデッ ド 乗算器が必要になる テイ ラ ー展開が使用さ<br />

れま す。<br />

• [Frequency resolution (Hz)] : 同調周波数の粒度を指定し ます。<br />

• [Accumulator latency] : 位相アキュムレータのレイテンシを 0 か 1 に指定し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 107<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

• [Noise Shaping] : 位相切 り 捨て、 デ ィ ザ リ ング またはテ イ ラー展開のどれを使用し て イ ンプ リ<br />

メンテーションするかを指定します。<br />

[Implementation] タブ<br />

• [Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Memory type] : ブ ロ ッ ク を イ ンプ リ メ ン ト する のに分散 メ モ リ を使用する か、ブ ロ ッ ク RAM<br />

メ モ リ を使用する かを指定し ます。<br />

• [Pipeline <strong>for</strong> maximum per<strong>for</strong>mance] : オンにする と 、最大限にパイ プ ラ イ ン さ れた イ ンプ リ メ<br />

ンテーショ ンになり ます。<br />

[Noise Shaping] または [Memory type] を [Auto] に設定し た場合は、 次の表に示すよ う に、 SFDR<br />

(Spurious Free Dynamic Range) の値によ ってパラ メ ータ設定が変わ り ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

SFDR ノイズ形成 メモリ タイプ<br />


Delay<br />

Delay<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Memory]、 [Index] ライブラリにリスト<br />

されています。<br />

Delay ブロッ クは、 L サ イ ク ルの固定遅延を イ ンプ リ メ ン ト し ます。<br />

ブロ ッ クには、 遅延の値が Z 変換を表す z -L で表示されます。 ブロックの入力への<br />

データは、L サ イ ク ル後の出力に送信されます。 出力データ のレー ト と データ型は、入<br />

力か ら伝送される値にな り ます。 こ のブロ ッ ク は、 主に回路のほかの部分にあ る同一<br />

のパイプラ イ ン遅延に使用されます。 Delay ブロックは、Register ブロッ ク とは異なり ます。<br />

Register ブロッ クの場合は、 レイテンシは 1 サ イ ク ル し か使用で きず、 初期値パ ラ メ ータ が含まれ<br />

ます。 Delay ブロ ッ ク では、 レ イ テンシを指定でき ますが、 0 以外の初期値は使用でき ません。 次の<br />

図は、 L=4 および 周期=1 秒の場合の Delay ブロッ クを示しています。<br />

ラ ン タ イ ム中に調整する必要のあ る遅延があ る場合は、 Addressable Shift Register ブロックを使用<br />

してください。 整数値の ク ロ ッ ク サ イ ク ル以外の遅延タ イ プはサポー ト さ れていないので、 少数の<br />

例外を除いて、 同期デザ イ ンでは使用で き ません。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Latency] : 遅延のサ イ ク ル数を指定し ます。 [Provide enable port] をオフにする場合は、 レイ<br />

テンシを 0 にする必要があ り ます。 レイテンシには、 負の値は使用できません。 レイテンシが<br />

0 の場合、 Delay ブ ロ ッ ク はロ ジ ッ ク合成中に ワ イ ヤにま と め ら れます。 レイテンシが L=1 に<br />

設定 さ れる と 、 合成でブ ロ ッ ク は通常フ リ ッ プフ ロ ッ プにな り ます (データ幅が 1 より大きい<br />

場合は、 複数のフ リ ッ プフ ロ ッ プにな り ます)。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 109<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Implement using behavioral HDL] : ビヘイビア レベルの HDL がインプリ メンテーショ ンに<br />

使用 さ れます。 これによ り、 ダウンス ト リームのロジック合成ツールで最適なインプリ メン<br />

テーシ ョ ンが選択される よ う にな り ます。 このブロックで使用されるその他のパラ メータは、<br />

ブロックのパラ メータ ダイアログ ボックスの共通オプションで説明されています。<br />

ビヘイビア レベルの HDL を使用したロジッ ク合成<br />

ダウンス ト リームのロジック合成ツールに Synplify Pro を使用する場合は、 こ ち ら の設定が推奨さ<br />

れます。 ロジッ ク合成ツールは、 指定どおり に遅延をインプ リ メ ン ト し、 遅延ラ インをブロ ッ ク<br />

RAM、 <strong>DSP</strong>48、 またはエンベデッド IOB のフ リ ッ プフ ロ ッ プなどの前後に移動させる よ う な最適<br />

化を実行します。 また、 選択したアーキテクチャに基づいて、 ロング遅延ラ インに専用 SRL のカ<br />

ス ケー ド 出力を使用し た り 、 パス遅延に基づいて遅延ラ イ ンの片方または両方の終端にフ リ ッ プフ<br />

ロ ッ プを使用し た り と いっ た最適化 も実行し ます。 こ の設定を使用する と 、 ロ ジ ッ ク合成ツールが<br />

高度であれば、 遅延ラ イ ンの一部を組み合わせロ ジ ッ ク 部分に戻し て、 タ イ ミ ングを変更する こ と<br />

もできます。<br />

構造レベルの HDL を使用したロジッ ク合成<br />

[Implement using behavioral HDL] をオフにする と、構造レベルの HDL が使用されます。 これはデ<br />

フ ォル ト 設定で、既知の柔軟性の少ない イ ンプ リ メ ンテーシ ョ ンが実行さ れます。 こ ち ら の設定は、<br />

XST を使用する場合に向いています。 通常は、 こ の設定にする と 、 L-1 サイクルの SRL (シフ ト レ<br />

ジスタ LUT) 遅延の後にフ リ ッ プフ ロ ッ プを付けた (SRL とフリップフロップは同一スライスに<br />

パッキング) 構造レベルの HDL が作成されます。 レイテンシが L=17 よ り も大き い場合、 専用のカ<br />

スケード配線を使用していなくても、複数の SRL/フリ ップフロップがカスケード接続されます。 次<br />

の例は、 レ イ テンシが L=32 の場合の 1 ビッ ト幅の Delay ブ ロ ッ ク の合成結果です。<br />

110 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Delay<br />

最初の SRL では 16 サイクルの遅延が追加され、接続されたフリ ップフロップで遅延がさらに 1 サ<br />

イクル追加されます。 2 つ目の SRL では、14 サ イ ク ルの遅延が追加されます。 14 サイクルなのは、<br />

アドレスが {A3,A2,A1,A0}=1101 (2 進数) = 13 に設定されてお り 、 SRL を通った後のレイテンシ<br />

はア ド レスに 1 サイクル足した値になるからです。 最後のフ リ ッ プフ ロ ッ プで遅延が 1 サイクル追<br />

加されるので、 トータルで L=16+1+14+1=32 サイクルの遅延になり ます。<br />

SRL を使用する と 、ザイ リ ン ク ス アーキテ ク チ ャ で遅延を効率的に イ ンプ リ メ ン ト で き ます。 SRL<br />

とそれに接続された単一のロジック セルを含むフ リ ップフ ロ ップは、 17 サイクルの遅延をインプ<br />

リ メ ン ト で き ますが、 フ リ ッ プフ ロ ッ プのみを含む遅延ラ イ ンの場合は、 ロ ジ ッ ク セルご とに 1 サ<br />

イ ク ルの遅延し か イ ンプ リ メ ン ト で き ません。<br />

SRL のセッ ト ア ップ タイムはフ リ ップフロップのセッ トアップ タイムより長いので、 遅延ブ ロ ッ<br />

ク の前に組み合わせパスがあ る高速デザ イ ンでは、構造レベルの HDL 設定を使用する場合、Delay<br />

ブロックの前にレイテンシ L=1 の付いた遅延ブ ロ ッ ク を 1 つ追加する と 効率的です。 こ れに よ り 、<br />

クリティカル パスが SRL の長いセ ッ ト ア ッ プ時間が原因で問題になる こ と はな く な り ます。 次の<br />

図は、 その例です。<br />

どちらのデザインも合成すると、次の図のようになります。高速なデザインの方を赤でハイライト<br />

しています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 111<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

高速な方のデザ イ ンでは、 Inverter2 のレイテンシを 1 に設定し、 Delay 3 を削除したものと同じで<br />

すが、 Inverter2 のレイテンシを 4 に設定し、Delay ブロッ クを削除したものと同じではあり ません。<br />

こ の場合、 合成結果は、 上の遅い方のデザ イ ン と 同じ にな り ます。<br />

大きい遅延のイ ン プ リ メ ン ト<br />

たとえば、128 サイ クルを超え る よ う な大きい遅延には、特に幅の大きいバス を使用し た場合など、<br />

ブロッ ク RAM ベースの遅延ブ ロ ッ ク を使用し た方が良い こ と があ り ます。 このよ うな遅延ブロッ<br />

クは、 ザイ リンクスの一般的なファブリ ックの一部である SRL を使用してインプ リ メ ン ト されま<br />

す。 遅延が非常に大き い場合は、エンベデ ッ ド ブロッ ク RAM に遅延を イ ンプ リ メ ン ト する と、フ ァ<br />

ブリック スペースを節約できます。 このよ うに遅延を付けると、ブロック RAM のデュ アル ポー ト<br />

の特性を生かすこ と がで き、 固定ま たは ラ ン タ イ ム変数遅延を使用し て イ ンプ リ メ ン ト する こ と が<br />

できます。 このよ うなブロックは、 基本的に複数のアドレス カウンタが接続されたブロック RAM<br />

です。 次の図は、 デザイ ンを高速にする ため、 ア ド レ ス カウンタに LFSR (Linear Feedback Shift<br />

Register) を使用し て大きい遅延を イ ンプ リ メ ン ト し た新しい方法ですが、従来のカ ウ ン タ も使用す<br />

ることができます。 カ ウ ン タ間の値の違い (RAM レ イ テンシを減算し た値) が、 遅延ラ イ ンのレ イ<br />

テンシ L です。<br />

リ セ ッ ト 可能な遅延 と初期値<br />

遅延ラ イ ン を完全に 0 に リ セ ッ ト 可能にする必要があ る場合は、 L レ ジ ス タ の文字列を使用し て遅<br />

延を イ ンプ リ メ ン ト する か、 遅延ラ イ ンの内容が一気に消去 さ れる間に強制的に出力を 0 にする よ<br />

う な回路を作成し ます。<br />

Delay ブロ ッ クでは、 初期値は設定でき ませんが、 Addressable Shift Register ブロックではサポー<br />

トされます。 こ のブ ロ ッ ク は、 通常固定ア ド レ ス と 使用される と Delay ブロック と同じ働きをし、<br />

SRL ベースの遅延ラ イ ンに同期し ます。 初期値は、 初期化にのみ使用 さ れ、 リ セ ッ ト には使用さ れ<br />

ません。 Addressable Shift Register ブロッ クを構造レベルの HDL モー ド で使用する と ([Use<br />

behavioral HDL] チェッ ク ボックスをオフにすると)、遅延ラインの終端がフリ ップフロップにはな<br />

112 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Delay<br />

ら ないので、速度がかな り 遅 く なって し まいます。 こ の場合、ビヘイ ビ ア記述にする か、Addressable<br />

Shift Register の前に Register ブロックまたは Delay ブ ロ ッ ク を配置する と 問題を回避で き ます。<br />

ザイリンクス LogiCORE<br />

Delay ブロッ クではザイ リ ンクス LogiCORE は使用されませんが、 ザ イ リ ン ク ス デバイ スの<br />

SRL16 の機能を使用する と 、 効率的にマ ッ プで き ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 113<br />

リリース 9.2.00 2007 年 8 月<br />

R


Depuncture<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

ザイ リンクスの Depuncture ブ ロ ッ ク を使用する と 、 デパン ク チ ャ符号で指定し た位<br />

置の入力データ にシンボルを挿入で き ます。<br />

このブロックは、UFixN_0 型 (N は挿入文字列 x の長さ (デパン ク チャ 符号の 1 の数)<br />

のデータ を 入力し 、 UFixK_0 型 (N はデパンク チャ 符号の長さ で乗算さ れた挿入文字列の長さ ) の<br />

データ を 出力し ま す。<br />

Depuncture ブロ ッ ク は、 パン ク チ ャ ド たたみ込み符号をデコー ド する ために使用し ます。 次の図<br />

は、 こ のブ ロ ッ ク を使用し てパン ク チャ ド たたみ込み符号の軟判定ビ タ ビ (Viterbi) 復号を イ ンプ リ<br />

メントした例を示しています。<br />

上図は、 add_erasure サブシステムに接続された Matched Filter ブロッ クを示しています。<br />

add_erasure サブシ ス テムでは、入力データに 0 が付け ら れ、非消去信号 と し てマーク さ れます。 こ<br />

の add_erasure サブシステムからの出力が Serial to Parallel ブロッ クに送信され、 Serial to Parallel<br />

ブロックで 2 つの連続する軟入力が連結 さ れ、 8 ビット ワードで Depuncture ブロックに送信され<br />

ます。 Depuncture ブロッ クは、 符号 0 ( [1 0 1] ) の場合 MSB から 4 ビッ ト後にシンボル 0001 を、<br />

符号 1 ( [1 1 0] ) の場合 MSB から 8 ビッ ト後に挿入し、12 ビッ ト ワー ド を形成し ます。 この後、<br />

Depuncture ブロックの出力は、Parallel to Serial ブロックを使用して 4 ビッ ト ワードにシ リ アライ<br />

ズされます。 extract_erasure サブシ ス テムは、 入力 さ れた 4 ビット ワードの 3 ビットを MSB から<br />

抽出し、 軟判定の入力データ ワードを形成し、LSB から 1 ビッ トを抽出して Viterbi デコーダの消<br />

去信号を形成し ます。<br />

114 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Depuncture<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

Puncture ブロッ クのパラ メータを次に示します。<br />

• [Depuncture code] : 入力に挿入する文字列のデパン ク チャ パターンを指定します。<br />

• [Symbol to insert] : デパン ク チ ャ符号に挿入する 2 進数ワー ド を指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 115<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Disregard Subsystem<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

このブロックは、 <strong>System</strong> <strong>Generator</strong> バージ ョ ン 6.2 か ら廃止 さ れています。<br />

こ のブ ロ ッ ク は、 今後のバージ ョ ンで削除される可能性があ り ます。 このブロッ<br />

クの機能は、 Simulink のコンフィギャブル サブシステムから使用でき ます。 詳<br />

細は、 コンフィギャブル サブシステム と <strong>System</strong> <strong>Generator</strong>を参照して く ださい。<br />

コンフィギャブル サブシステムの方が Disregard Subsystem ブロッ クよ り も多<br />

く の利点があ り ます。<br />

Disregard Subsystem ブロックは、 モデルのサブシステムに配置して、 <strong>System</strong> <strong>Generator</strong> でそのサ<br />

ブシステムのハード ウ ェ アが生成されないよ う にする ために使用でき ます。 このブロックを<br />

Simulation Multiplexer ブ ロ ッ ク と 共に使用する と 、デザ イ ンの一部分に対し て代替シ ミ ュ レーシ ョ<br />

ン モデルを構築でき ます。 た と えば、 ブラ ッ ク ボックスのシミュレーション モデルを提供する こ<br />

とができます。<br />

このブロックには、 パラメータはあり ません。<br />

116 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Down Sample<br />

Down Sample<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements] ライブラリと [Index] ライブラリにリスト<br />

されています。<br />

ザイ リ ンクスの Down Sample ブロッ クは、 ブロッ クが配置された箇所のサンプル<br />

レー ト を削減する ために使用し ます。<br />

入力信号は、 フ レームの最初か最後のいずれかの値で等区間でサンプ リ ング さ れます。<br />

サンプ リ ングされた値は出力ポート に送られる と、 次のサンプルが取り出されるまで<br />

保持されます。<br />

1 つの Down Sample フレームには、 1 入力サンプル (サンプ リ ング レー ト 1) が含まれます。 次の<br />

図は、 サンプ リ ング レート 4 でコンフィギュレーシ ョ ンされた Down Sample ブロックのフレーム<br />

例を示しています。<br />

Down Sample ブロッ クは、 後で説明する 3 つのイ ンプ リ メ ンテーシ ョ ン方法のいずれかを使用し<br />

てハード ウ ェ アで認識されます。 イ ンプ リ メ ンテーシ ョ ンの効率は、 方法によ って異な り ます。 こ<br />

のブロ ッ クは、 Src_CE と Dest_CE の 2 つのク ロ ッ ク イネーブル信号をハードウェアで受信しま<br />

す。 Src_CE の方が速 く 、入力データ ス トリーム レー ト に対応し ます。 Dest_CE はそれよ り も遅 く、<br />

出力ス ト リ ーム レート (ダウン サンプル データ) に対応し ます。 これらのイ ネーブル信号でハード<br />

ウェアのレジスタ サンプリ ングが制御されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 117<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

レイテンシ 0 の場合<br />

レイテンシ 0 の Down Sample ブロッ クは、 フレームの最初の値をサンプリ ングするよ うにコン<br />

フ ィ ギ ュ レーシ ョ ン さ れる必要があ り ます。 入力フ レームの最初のサンプルは、 MUX を通って出<br />

力ポー ト に渡されます。 レジスタは、 最初のサンプルの間にこの値をサンプリ ングし、 MUX はフ<br />

レームの 2 つ目のサンプルの開始時にレ ジ ス タ出力に切 り 替わ り ます。 こ の結果、 フ レームの最初<br />

のサンプルがフ レーム全体が処理 さ れる間に出力ポー ト に出力 さ れます。 MUX には Din から<br />

Dout までの組み合わせパスが使用されるので、 こ のハード ウ ェア インプリ メンテーションが一番<br />

効率の悪い方法にな り ます。 デスティネーシ ョ ン クロック イネーブル (Dest_CE) のタイ ミ ングは、<br />

サンプル周期の最後ではな く、 最初にアサー ト されるよ うに、 1 ビット レジスタで調整されます。<br />

このハードウェア インプリ メンテーションは、 次の図のようになります。<br />

レイテンシがある場合<br />

Down Sample ブロッ クが 0 より大きいレイテンシでコンフィギュレーションされる場合は、 もっ<br />

と効率の良いイ ンプ リ メ ンテーシ ョ ンが使用されます。 こ の場合、 イ ンプ リ メ ンテーシ ョ ン方法は<br />

2 つあ り 、Down Sample ブロ ッ ク がフ レームの最初の値か最後の値のどち ら をサンプ リ ングする よ<br />

う に設定されてい る かに よ っ て方法は異な り ます。<br />

フ レームの最初の値をサン プ リ ングする場合<br />

こ の場合、 入力ス ト リ ーム を正し く サンプ リ ングする ためにレ ジ ス タ が 2 つ必要です。 最初のレ ジ<br />

ス タは、入力フ レームの開始時の入力をサンプ リ ン グする よ う に調整 さ れた ク ロ ッ ク イネーブル信<br />

号でイ ネーブルにな り ます。 2 つ目のレ ジス タはサンプル周期の最後に最初のレ ジ ス タの内容をサ<br />

ンプ リ ング し、 出力データ を正し く 揃っ てい る かど う かを確認し ます。<br />

118 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Down Sample<br />

フ レームの最後の値をサン プ リ ングする場合<br />

Down Sample ブロ ッ クがフレームの最後の値をサンプ リ ングする よ う にコンフ ィ ギュレーシ ョ ン<br />

される場合のイ ンプ リ メ ンテーシ ョ ンは、 最も効率の良いものにな り ます。 こ の場合、 レ ジ ス タは<br />

フ レームの最後で入力データ をサンプ リ ング し、 その値を次のフレーム中に出力し ます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Sampling rate (number of input samples per output sample)] : 2 以上の整数にする必要があ り<br />

ます。 これは、 入力に対する出力サンプル周期の比率で、 サンプル レー ト 分周器の値にな り ま<br />

す。 たとえば、2 と 指定し た場合は、 入力サンプル レートは 2:1 の比率で分周されます。 整数<br />

以外の比率を指定する場合は、 Down Sample ブロック と Up Sample ブ ロ ッ ク を組み合わせて<br />

使用し て く だ さ い。<br />

• [Sample] : Down Sample ブロ ッ クは、フ レームの最初の値か最後の値のいずれかでサンプ リ ン<br />

グ を実行し ます。 このパラメータでは、 どちらの値がサンプリングされるかを指定します。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

Down Sample ブロックでは、 ザイ リ ンクス LogiCORE は使用されません。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 119<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>DSP</strong>48<br />

R<br />

ブロック パラ メータ<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Index] および [<strong>DSP</strong>] ライブラリにリストされています。<br />

ザイ リ ンクスの <strong>DSP</strong>48 ブロッ クは、 ザイ リ ンクスの Virtex-4 デバイ ス を使用す<br />

る <strong>DSP</strong> アプ リ ケーシ ョ ン を効率的に構築する ためのブ ロ ッ ク です。 <strong>DSP</strong>48 では、<br />

18X18 ビ ッ ト の符号付き乗算器 と 48 ビ ッ ト 加算器が組み合わ さ れてお り 、 加算<br />

器の入力はプロ グ ラ マブル マルチプレ ク サで選択 さ れます。<br />

これらの演算は、 ダイナミ ッ クに選択できます。 オプシ ョ ンの入力 と 乗算器パイ<br />

プライン レジスタだけでなく、 subtract、 carry_in、 opmode ポー ト のレジス タ も<br />

選択で き ます。 <strong>DSP</strong>48 ブロッ クは、 [Implementation] タブの [Use synthesizable<br />

model] をオンに し た場合、 <strong>DSP</strong>48 ハー ド ウ ェ ア プリ ミティブを含まないデバイ<br />

スをターゲッ トにすることもできます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [B or BCIN input] : B 入力を b ポー ト か ら直接取 り 込むか、カ ス ケー ド さ れた bcin ポー ト から<br />

取 り 込むかを指定し ます。 bcin ポー ト は、 別の <strong>DSP</strong>48 ブ ロ ッ ク にのみ接続で き ます。<br />

• [Consolidate control port] : オンにする と、 opmode、 subtract、 carry_in、 carry_in_sel ポー ト<br />

を 1 つの 11 ビッ ト ポー ト に組み合わせます。 ビット 0 ~ 6 が opmode、 ビット 7 が subtract<br />

ポー ト 、 ビ ッ ト 8 が carry_in ポー ト 、 ビ ッ ト 9 と 10 が carry_in_sel ポー ト にな り ます。 この<br />

オプシ ョ ンは、 <strong>DSP</strong>48 命令を生成する のに Constant ブロッ クを使用した場合にのみ使用して<br />

ください。<br />

120 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>DSP</strong>48<br />

• [Provide C port] : オンにする と、 c ポー ト が使用可能にな り ます。 オフの場合は、c ポー ト は 0<br />

に接続されます。<br />

• [Provide PCIN port] : オンにする と、 pcin ポー ト が使用可能にな り ます。 pcin ポー ト は、 別の<br />

<strong>DSP</strong>48 ブロッ クの pcout にのみ接続で き ます。<br />

• [Provide PCOUT port] : オンにする と、 pcout ポー ト が使用可能にな り ます。 pcout ポー ト は、<br />

別の <strong>DSP</strong>48 ブロックの pcin にのみ接続で き ます。<br />

• [Provide BCOUT port] : オンにする と、 bcout ポー ト が使用可能にな り ます。 bcout ポー ト は、<br />

別の <strong>DSP</strong>48 ブロックの bcin にのみ接続で き ます。<br />

• [Provide global reset port] : オンにする と、rst ポー ト が使用可能にな り ます。 このポートは、パ<br />

イ プ ラ イ ン選択に基づいて、 使用可能な リ セ ッ ト ポー ト すべてに接続されます。<br />

• [Provide global enable port] : オンにする と 、オプショ ンの en ポート が使用可能になり ま す。 この<br />

ポート は、 パイ プラ イ ン選択に基づいて、 使用可能なイ ネーブル ポート すべてに接続さ れま す。<br />

[Pipelining] タブ<br />

[Pipelining] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Length of A pipeline] : 入力レ ジ ス タ A のパイプライン長を指定します。パイプラインの長さ<br />

を 0 にする と 、 入力のレジス タが削除されます。<br />

• [Length of B/BCIN pipeline] : b 入力のパ イ プ ラ イ ン長を b か ら読み込むか、 bcin か ら読み込<br />

むかを指定し ます。<br />

• [Pipeline C] : c ポー ト か ら の入力にレ ジ ス タ を付け る かど う かを指定し ます。<br />

• [Pipeline P] : p 出力 と pout 出力にレ ジ ス タ を付け る かど う かを指定し ます。<br />

• [Pipeline multiplier] : 内部乗算器の出力にレ ジ ス タ を付け る かど う か指定し ます。<br />

• [Pipeline opmode] : opmode ポー ト にレジス タを付けるかど う かを指定し ます。<br />

• [Pipeline subtract] : subtract ポート にレジスタを付けるかど う かを指定し ます。<br />

• [Pipeline carry in] : carry_in ポート にレジス タを付けるかど う かを指定します。<br />

• [Pipeline carry in sel] : carry_in_sel ポート にレジス タを付けるかど う かを指定します。<br />

[Ports] タブ<br />

[Ports] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Reset port <strong>for</strong> A] : オンにする と、rst_a ポー ト が使用可能にな り ます。 1 に設定される と、ポー<br />

ト a のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> B] : オンにする と、rst_b ポー ト が使用可能にな り ます。 1 に設定される と、ポー<br />

ト b のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> C] : オンにする と、rst_c ポー ト が使用可能にな り ます。 1 に設定される と 、ポー<br />

ト c のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> multiplier] : オンにする と、 rst_m ポー ト が使用可能にな り ます。 1 に設定され<br />

る と 、 内部乗算器のパイ プ ラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> P] : オンにする と、 rst_p ポー ト が使用可能にな り ます。 1 に設定される と 、 出<br />

力レジスタが リ セッ ト されます。<br />

• [Reset port <strong>for</strong> carry in] : オンにする と、 rst_carryin ポー ト が使用可能にな り ます。 1 に設定さ<br />

れると、 carry_in のパイプラ イ ン レジスタがリセッ ト されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 121<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

関連項目<br />

• [Reset port <strong>for</strong> controls (opmode, subtract, carry_in, carry_in_sel)] : オンにする と、rst_ctrl ポー<br />

ト が使用可能にな り ます。 1 に設定される と 、 subtract、 opmode、 carry_in_sel レジスタのパイ<br />

プライン レジスタがリセッ ト されます。<br />

• [Enable port <strong>for</strong> A] : オンにする と、 ポート A のパイプラ イ ン レジスタのイネーブル ポー ト<br />

ce_a が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> B] : オンにする と、 ポート B のパイプラ イ ン レジスタのイネーブル ポー ト<br />

ce_b が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> C] : オンにする と、 ポート C のパイプラ イ ン レジスタのイネーブル ポー ト<br />

ce_c が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> multiplier] : オンにする と 、 乗算器レ ジ ス タ の イ ネーブル ポー ト ce_m が使用<br />

可能にな り ます。<br />

• [Enable port <strong>for</strong> P] : オンにする と、 ポート P のパイプラ イ ン レジスタのイネーブル ポー ト<br />

ce_p が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> carry in] : オンにする と、 carry_in レジスタのイネーブル ポー ト ce_carry_in<br />

が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> controls (opmode, subtract, carry_in, carry_in_sel)] : オンにする と、 イネーブ<br />

ル ポー ト ce_ctrl と ce_cinsub が使用可能にな り ます。 ポー ト ce_ctrl は opmode と<br />

carry_in_sel レジスタを、 ce_cinsub は subtract レジスタを制御します。<br />

[Implementation] タブ<br />

• [Use synthesizable model] : オンにする と、 <strong>DSP</strong>48 が RTL 記述か ら イ ンプ リ メ ン ト され、<br />

<strong>DSP</strong>48 ハー ド ウ ェ アには直接マ ッ プ さ れません。 このオプションは、 <strong>DSP</strong>48 ハード ウ ェ ア プ<br />

リミティブを含まないデバイス フ ァ ミ リ を ターゲ ッ ト に し た場合に使用する と 便利です。<br />

• [Use adder only] : オンにする と 、 ブ ロ ッ ク は乗算器を使用せずに、 最速のパフ ォーマン ス を達<br />

成でき る よ う にハード ウ ェ アで最適化されます。 乗算器を使用する命令があ る と、 シ ミ ュ レー<br />

シ ョ ンでエ ラーが発生し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>DSP</strong>48 ブロ ッ クの詳細については、 次の ト ピ ッ ク を参照し て く ださ い。<br />

<strong>DSP</strong>48 Macro<br />

複数クロックのサイクル単位アイランドの生成<br />

<strong>Xilinx</strong> Xtreme<strong>DSP</strong><br />

122 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>DSP</strong>48 Macro<br />

<strong>DSP</strong>48 Macro<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Index] および [Control Logic] ライブラリにリストされてい<br />

ます。<br />

述します。<br />

ブロック インターフェイス<br />

<strong>DSP</strong>48 Macro ブロッ クは、 <strong>DSP</strong>48、 <strong>DSP</strong>48A、 および <strong>DSP</strong>48E ブロック<br />

をデバ イ スに依存せずに抽象化し た も のです。<br />

こ のブ ロ ッ ク は、 データ型の調整用に Reinterpret ブロックおよび Convert<br />

ブロックを使用したり、 複数の opmode や入力の処理用にマルチプレ ク サ<br />

を使用し た り 、レ ジ ス タ を使用し た り し て 1 つの <strong>DSP</strong>48/<strong>DSP</strong>48A/<strong>DSP</strong>48E<br />

ブロッ クをラップします。<br />

メモ : こ の後の説明では、 <strong>DSP</strong>/<strong>DSP</strong>48A/<strong>DSP</strong>48E をまとめて <strong>DSP</strong>48 と記<br />

<strong>DSP</strong>48 Macro ブロックの入力数と出力数は、 ユーザーが指定したパラ メータ値に従います。 入力<br />

データ ポー ト は <strong>DSP</strong>48 Macro の [Instructions] フ ィ ール ド に入力さ れた opmode によって決ま り<br />

ます。 [Instructions] フ ィールドに opmode が複数あ る場合は、 入力ポー ト Sel が表示されます。<br />

[Instructions] フ ィ ール ド の詳細は、 「<strong>DSP</strong>48 Macro ブロッ クの opmode の入力」 のセ ク シ ョ ン を参<br />

照してください。<br />

<strong>DSP</strong>48 Macro のすべてのコ ン フ ィ ギ ュ レーシ ョ ンで表示される ポー ト は、 出力データ ポー ト P だ<br />

けです。 出力ポー ト PCOUT、 BCOUT、 ACOUT、 CARRYOUT、 CARRYCASCOUT は、 ユー<br />

ザーの選択によ って表示されます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Inputs to Port A] : <strong>DSP</strong>48 のポー ト A またはポート A:B に接続さ れる記号ポー ト の識別子<br />

(オペラ ン ド) を指定します。 指定したものは、 [Instructions] フ ィ ール ド に表示さ れます。<br />

• [Inputs to port B] : ポー ト B に接続される記号ポー ト の識別子 (オペラ ン ド) を指定します。 指<br />

定したものは、 [Instructions] フ ィ ール ド に表示 さ れます。<br />

• [Inputs to port C] : ポー ト C に接続される記号ポー ト の識別子 (オペラ ン ド) を指定します。 指<br />

定したものは、 [Instructions] フ ィ ール ド に表示 さ れます。<br />

• [Instructions] : <strong>DSP</strong>48 Macro ブ ロ ッ ク の命令を指定し ます。 詳細は、 「<strong>DSP</strong>48 Macro の<br />

opmode の入力」 のセ ク シ ョ ン を参照し て く だ さ い。<br />

[Pipelining] タブ<br />

• [Pipeline Options] : <strong>DSP</strong>48 のパイプラ イ ン オプシ ョ ン と、 <strong>DSP</strong>48 の各ポー ト のデータに付け<br />

るレイテンシを指定します。 選択で き る のは、 [External Registers]、 [No External Registers]、<br />

[Custom] のいずれかです。 [External Registers] を選択する と 、 <strong>DSP</strong>48 Macro の下にあ るマル<br />

チプレ クサの出力にレジス タが付き ます (こ れに よ り 、 高速処理が可能にな り ます)。 <strong>DSP</strong>48<br />

Macro が <strong>DSP</strong>48 を加算器 と し てのみコ ン フ ィ ギ ュ レーシ ョ ンする場合 ([Instructions] フィー<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 123<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ル ド に入力された論理式か ら推論さ れます)、 レイテンシは 3 です。 それ以外の場合は、 4 にな<br />

ります。[No External Registers] を選択した場合は、 マルチプレ クサの出力にはレジスタが付<br />

かず、 <strong>DSP</strong>48 Macro のレイテンシは 2 にな り ます。 [Custom] を選択する と 、 <strong>DSP</strong>48 の内外の<br />

レジスタ インスタンスすべてが [Custom Pipeline Options] フ ィ ール ド の設定に基づいて推論<br />

されます。 <strong>DSP</strong>48 を加算器および乗算器 と し て使用する命令があ る場合は、 こ のフ ィ ール ド を<br />

必ず使用し て く だ さ い。<br />

• [Custom Pipeline Options] : [Pipeline options] を [Custom] に設定し た場合にのみ表示さ れる<br />

フィールドで、 <strong>DSP</strong>48 およびマルチプレクサ レジスタ イ ン ス タ ン ス を個別に制御で き ます。<br />

• [Custom Pipeline Options ([A,B,C,P,Ctrl,M,MuxA,MuxB,MuxC,MuxCtrl])] : [Custom<br />

Pipeline Options] を 1 つの整数配列 と し て指定で き ます。<br />

[Implementation] タブ<br />

• [Use <strong>DSP</strong>48] : Virtex-4 の Xtreme<strong>DSP</strong> ス ラ イ ス を タ ーゲッ ト にする かど う かを 指定し ま す。 オ<br />

フにすると 、 Virtex-4 以外のデバイ ス で使用でき る 合成可能な <strong>DSP</strong>48 モデルが使用さ れま す。<br />

[Ports] タブでは、BCOUT、 PCOUT、 CARRYCASCOUT、 CARRYOUT、 ACOUT に加えて、 さ<br />

まざまな <strong>DSP</strong>48 のリセット ポー ト およびイネーブル ポー ト を使用する かど う かが指定で き ます。<br />

<strong>DSP</strong>48 Macro ブロックの opmode の入力<br />

<strong>DSP</strong>48 では、 opmode ポー ト への入力によ って異な る演算操作が可能です。 このため、 <strong>DSP</strong>48 は<br />

ダイナミ ックな演算ユニッ ト として動作させることができます。 <strong>DSP</strong>48 Macro を使用する と、<br />

<strong>DSP</strong>48 を簡単にダイナ ミ ッ ク な演算ユニ ッ ト と し て使用でき ます。 <strong>DSP</strong>48 Macro は、 マルチプレ<br />

クサを使用して複数のオペランドおよび opmode を順序付け し、 データ ポー ト で信号を揃え ます。<br />

オペラ ン ド と opmode の実行順序は、[Instructions] フ ィ ール ド に入力さ れた opmode の順序にな り<br />

ます。 [Instructions] フ ィ ール ド には、最低で 1 つから最高で 8 つまでの opmode を含める こ とがで<br />

きます。 ここでは、<strong>DSP</strong>48 Macro の [Instructions] フィールドに opmode を入力する際に発生する<br />

問題について説明し ます。<br />

opmode の形式<br />

opmode を分割する には、改行文字を使用し ます。 opmode はそれぞれ次の規則に従っ て入力する必<br />

要があ り ます。<br />

• 各 opmode は P に割 り 当て られ、 P= で開始 さ れる必要があ り ます。<br />

• 演算子 (=) の後の式には、 演算子 +/-/* を使用し、 オペラ ン ド には記号ポー ト 識別子 ( 「オペラ<br />

ン ド の形式」 を参照) を使用する必要があ り ます。<br />

• <strong>DSP</strong>48 にインプリ メン トできる opmode のみが有効です。 <strong>DSP</strong>48 Macro でサポー ト される<br />

opmode は、 こ の後の表に リ ス ト されています。<br />

124 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>DSP</strong>48 Macro<br />

• 次の図は、 [Instructions] フィールドに 4 つの opmode が入力された例を示しています。<br />

オペラ ン ド の形式<br />

opmode に使用される各オペランド (記号ポー ト 識別子) は、 次の規則に従っ て記述さ れる必要があ<br />

ります。<br />

• 各オペラ ン ド は、 アルフ ァベッ ト (a ~ z、 A ~ Z) で始ま り 、 その後はアルフ ァベッ ト /数字ま<br />

たはアンダースコア ( _ ) を使用する必要があ り ます。<br />

• オペラ ン ド には、 次の表の予約ポー ト 名は使用でき ません。<br />

• オペラ ンド は、 [Inputs to port A]、 [Inputs to port B]、 [Inputs to port C] フィ ールド にそれぞれ<br />

1 度し か入力でき ま せん。 同じ リ ス ト にオペラ ン ド を 複数入れる 場合は、 ス ペース かカンマ ( , )<br />

で区切る 必要があり ま す。<br />

上図では、 a0、 a1、 b0、 c0、 c1 がオペラ ン ドです。 オペラ ン ド は、 a1、 signal_1、 delayed_signal<br />

や Cin、 _port1、 delay$%、 12signal の よ う に記述で き ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 125<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

予約ポー ト 名<br />

予約ポー ト名 ポー ト タイプ メモリ タイプ<br />

PCIN 入力。 <strong>DSP</strong>48 の PCIN ポー ト に接続<br />

されます。<br />

BCIN 入力。 <strong>DSP</strong>48 の BCIN ポー ト に接続<br />

されます。<br />

PCIN>>17 入力。 <strong>DSP</strong>48 の PCIN ポー ト に接続<br />

されます。<br />

CIN 入力。 <strong>DSP</strong>48 の carry_in ポー ト に接<br />

続されます。<br />

PCOUT 出力。 <strong>DSP</strong>48 の PCOUT ポー ト に接<br />

続されます。<br />

BCOUT 出力。 <strong>DSP</strong>48 の BCOUT ポー ト に接<br />

続されます。<br />

RST 入力。 <strong>DSP</strong>48 の rst と すべてのレジス<br />

タのリ セット ポート に接続さ れます。<br />

使用される opmode によっ<br />

て表示されるポー ト です。<br />

この後の 2 つ目の表を参照<br />

してください。 opmode が<br />

0x10-0xf の場合、 PCIN 入<br />

力ポー ト が使用されます。<br />

PCIN ポー ト は、 別の<br />

<strong>DSP</strong>48/<strong>DSP</strong>48 Macro ブ<br />

ロックの PCOUT ポー ト に<br />

接続する必要があ り ます。<br />

2 つ目の表にリ ス ト さ れる<br />

opmode で B が BCIN に置<br />

換さ れる と 表示さ れる ポー<br />

トです。 別の<br />

<strong>DSP</strong>48/<strong>DSP</strong>48 Macro ブ<br />

ロックの BCOUT ポート に<br />

接続する 必要があり ま す。<br />

この後の 2 つ目の表を参照<br />

してください。 opmode が<br />

0x50-0x5f の場合、 こ の<br />

ポー ト が使用されます。 こ<br />

れは、 PCIN が 17 ビッ ト<br />

右にシフ ト されたポー ト<br />

で、 <strong>DSP</strong>48 の z マルチプ<br />

レクサを通った <strong>DSP</strong>48 加<br />

算器への入力にな り ます。<br />

opmode に Cin が含まれる<br />

と表示されるポートです。<br />

この後の 2 つ目の表を参照<br />

してください。 0x00 以外<br />

の opmode すべてでオプ<br />

ションです。<br />

[Provide PCOUT port] を<br />

オンにする と、 このポート<br />

が表示されます。<br />

[Provide BCOUT port] を<br />

オンにする と、 このポート<br />

が表示されます。<br />

リセット ポー ト を使用す<br />

る よ う に設定する と 、 こ の<br />

ポー ト が表示されます。<br />

126 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>DSP</strong>48 Macro<br />

予約ポー ト名 ポー ト タイプ メモリ タイプ<br />

EN 入力。 <strong>DSP</strong>48 の en とすべてのレジス<br />

タのイネーブル ポー ト に接続さ れま<br />

す。<br />

opmode の選択<br />

イネーブル ポー ト を使用<br />

する よ う に設定する と 、 こ<br />

のポー ト が表示されます。<br />

Sel 入力 [Instructions] フィールド<br />

に命令文が複数あ る と 表示<br />

され、 [Instructions] フィー<br />

ルドの opmode から 1 つを<br />

選択する ために使用されま<br />

す。<br />

P 出力 常にあ り ます。<br />

P>>17 - この後の 2 つ目の表を参照<br />

してください。 opmode は<br />

0x60-0x6f です。 これは、<br />

P が 17 ビット右にシフト<br />

されたポートで、 <strong>DSP</strong>48<br />

の z マルチプレ クサを通っ<br />

た <strong>DSP</strong>48 加算器への入力<br />

にな り ます。<br />

[Instructions] フ ィールドに opmode が複数あ る と 、 それを選択する必要があ り ます。 この場合は、<br />

それを選択する ための Sel ポー ト が表示されます。 Sel ポー ト はマス クの下のマルチプレ クサに接<br />

続されます。 Sel ポー ト に接続される信号はすべて適切なデータ型にする必要があ り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 127<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

予約識別子の使用<br />

予約識別子には、 <strong>DSP</strong>48 Macro ブロッ クでポート として明示されるものとそうでないものの 2 種<br />

類があ り ます。 各予約語の識別子の説明 と 使用方法は、 上の表に記述し ています。 次の図は、 予約<br />

語 PCIN と BCIN を使用した例です。 [Instructions] フィールドには P=PCIN + A*BCIN と入力さ<br />

れています。<br />

128 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>DSP</strong>48 Macro<br />

モードの選択<br />

<strong>DSP</strong>48 Macro は、加算器モー ド と 乗算器モー ド の 2 つのモー ド で使用で き ます。 モード は、使用さ<br />

れる <strong>DSP</strong>48 Macro の opmode に よ っ て選択されます。 各モー ド でサポー ト さ れる opmode につい<br />

ては、 2 つ目の表を参照し て く だ さ い。 A ポー ト と B ポー ト が <strong>DSP</strong>48 の加算器への入力 と し て接<br />

続される と、 1 つの符号付き 36 ビッ ト入力に連結されます (<strong>DSP</strong>48 のセクシ ョ ンを参照して く だ<br />

さい)。 <strong>DSP</strong>48 の乗算器では、 こ れら のポー ト が別々の 2 の補数の符号付き 18 ビッ ト入力として解<br />

釈されます。<br />

<strong>DSP</strong>48 の opmode<br />

次の表では、Cin はすべての opmode でオプシ ョ ンにな り ます。 A:B は、<strong>DSP</strong>48 Macro ブロックの<br />

[Inputs to port A] フィールドのオペランドすべてを表し、<strong>DSP</strong>48 ブ ロ ッ ク の加算器への入力にな り<br />

ます。 A、 B、 C はそれぞれ [Inputs to port A]、 [Inputs to port B]、 [Inputs to port C] フィールドの<br />

オペラ ン ド を示し ます。 その他すべての記号は予約さ れています (詳細は、上のオペラ ン ド の表を参<br />

照してください)。<br />

<strong>DSP</strong>48 Macro の擬似<br />

opmode<br />

P=Cin<br />

P=+Cin<br />

P=-Cin<br />

P=P+Cin<br />

P=-P-Cin<br />

<strong>DSP</strong>48 Macro<br />

モード<br />

<strong>DSP</strong>48 のサ<br />

ポー ト<br />

<strong>DSP</strong>48E の<br />

サポー ト<br />

---- ○ ○ ○<br />

---- ○ ○ ○<br />

P = A:B + Cin 加算器 ○ ○ ○<br />

P = A*B + Cin<br />

P = -A*B ñ Cin<br />

P=C+Cin<br />

P=-C-Cin<br />

P=+C+P+Cin<br />

P=-C-P-Cin<br />

P=A:B + C + Cin<br />

P = -A:B-C-Cin<br />

P = PCIN + Cin<br />

P = PCIN -Cin<br />

P=PCIN+P+Cin<br />

P=PCIN-P-Cin<br />

P=PCIN+A:B+Cin<br />

P=PCIN-A:B-Cin<br />

P=PCIN+A*B+Cin<br />

P=PCIN-A*B-Cin<br />

乗算器 ○ ○ ○<br />

---- ○ ○ ○<br />

---- ○ ○ ○<br />

加算器 ○ ○ ○<br />

<strong>DSP</strong>48A の<br />

サポー ト<br />

---- ○ ○ ○<br />

(A:B + C +<br />

Cin のみ)<br />

---- ○ ○ ○<br />

加算器 ○ ○ ○<br />

乗算器 ○ ○ ○<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 129<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

<strong>DSP</strong>48 Macro の擬似<br />

opmode<br />

P=PCIN+C +Cin<br />

P=PCIN-C -Cin<br />

P=PCIN+C+P+Cin<br />

P=PCIN-P-C-Cin<br />

P=PCIN+A:B+C+Cin<br />

P=PCIN-A:B-C-Cin<br />

---- ○ ○ ○<br />

---- ○ ○ ○<br />

加算器 ○ ○ ○<br />

P=P-Cin ---- ○ ○ ○<br />

P=P+P+Cin<br />

P=P-P-Cin<br />

P=P-A:B-Cin<br />

P=P+A:B+Cin<br />

---- ○ ○ ○<br />

加算器 ○ ○ ○<br />

P=P+A*B+Cin 乗算器 ○ ○ ○<br />

P=P+C+Cin<br />

P=P-C-Cin<br />

P=P+C+P+Cin<br />

P=P-C-P-Cin<br />

P=P+C+P+Cin<br />

P=P-C-P-Cin<br />

---- ○ ○ ×<br />

---- ○ ○ ×<br />

加算器 ○ ○ ×<br />

P=C-Cin ---- ○ ○ ○<br />

P=C-P-Cin ---- ○ ○ ○<br />

P=C-A:B-Cin 加算器 ○ ○ ○<br />

P=C-A*B-Cin 乗算器 ○ ○ ○<br />

P=C+C+Cin<br />

P=C-C-Cin<br />

P=C+C+P+Cin<br />

P=C-C-P-Cin<br />

P=PCIN>>17+Cin ,<br />

P=PCIN>>17Cin<br />

P=PCIN>>17+P+Cin<br />

P=PCIN>>17-P-Cin<br />

P=PCIN>>17+A:B+Cin<br />

P=PCIN>>17-A:B-Cin<br />

<strong>DSP</strong>48 Macro<br />

モード<br />

<strong>DSP</strong>48 のサ<br />

ポー ト<br />

<strong>DSP</strong>48E の<br />

サポー ト<br />

---- ○ ○ ×<br />

---- ○ ○ ×<br />

---- ○ ○ ×<br />

---- ○ ○ ×<br />

加算器 ○ ○ ×<br />

<strong>DSP</strong>48A の<br />

サポー ト<br />

130 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>DSP</strong>48 Macro<br />

<strong>DSP</strong>48 Macro の擬似<br />

opmode<br />

P=PCIN>>17+A*B+Cin<br />

P=PCIN>>17-A*B-Cin<br />

P=PCIN>>17+C+Cin<br />

P=PCIN>>17-C-Cin<br />

P=PCIN>>17+P+C+Cin<br />

P=PCIN>>17-P-C-Cin<br />

P=PCIN>>17+C+A:B+Cin<br />

P=PCIN>>17-C-A:B-Cin<br />

P=P>>17+Cin<br />

P=P>>17-Cin<br />

P=P>>17+P+Cin<br />

P=P>>17-P-Cin<br />

P=P>>17+A:B+Cin<br />

P=P>>17-A:B-Cin<br />

P=P>>17+A*B+Cin<br />

P=P>>17-A*B-Cin<br />

P=P>>17+C+Cin<br />

P=P>>17-C-Cin<br />

P=P>>17+P+C+Cin<br />

P=P>>17-P-C-Cin<br />

P=P>>17+C+A:B +Cin<br />

P=P>>17-C-A:B-Cin<br />

パイプライン オプシ ョ ンの入力と カ ス タ ム パイプライン オプシ ョ ンの変更<br />

A、 B、 C ポー ト のデータ パスはそれぞれ異なっており、 含まれるレジスタの数も違う こ とがあ り<br />

ます。 こ のため、 ア ラ イ メ ン ト の問題が発生し ます。 制御信号で も同じ問題があ り ます。 このため、<br />

パイプライン モデルが非常に重要にな り ます。 <strong>DSP</strong>48 Macro ブロックには、 [External Registers]、<br />

[No External Registers]、 [Custom] の 3 つのパイプラ イ ン オプシ ョ ンが使用で き ます。<br />

[External Registers]<br />

<strong>DSP</strong>48 Macro<br />

モード<br />

<strong>DSP</strong>48 のサ<br />

ポー ト<br />

<strong>DSP</strong>48E の<br />

サポー ト<br />

乗算器 ○ ○ ×<br />

---- ○ ○ ×<br />

---- ○ ○ ×<br />

加算器 ○ ○ ×<br />

---- ○ ○ ×<br />

---- ○ ○ ×<br />

加算器 ○ ○ ×<br />

乗算器 ○ ○ ×<br />

---- ○ ○ ×<br />

---- ○ ○ ×<br />

加算器 ○ ○ ×<br />

<strong>DSP</strong>48A の<br />

サポー ト<br />

こ のオプシ ョ ン を使用する と 、 <strong>DSP</strong>48 ブ ロ ッ ク の外部に も レ ジ ス タが追加 さ れ、 すべての制御信号<br />

とデータ信号がアライ メン ト されます。 高速処理のためには、 マルチプレ クサの出力にこれらの外<br />

部レジスタを付ける必要があ り ます。 <strong>DSP</strong>48 Macro の [Instructions] フィールドのすべての<br />

opmode に乗算器が必要な場合は、<strong>DSP</strong>48 Macro のレイテンシは 4 にな り 、 どの命令で も乗算器が<br />

必要 と さ れない場合は、 レ イ テンシが 3 にな り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 131<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

[No External Registers]<br />

<strong>DSP</strong>48 ブ ロ ッ ク の外部にレ ジ ス タ を使用せず、すべての制御信号 と データ信号がア ラ イ メ ン ト さ れ<br />

ます。 このモードでは、 MREG は選択されません。 <strong>DSP</strong>48 Macro のレイテンシは 2 にな り ます。<br />

[Custom]<br />

このオプショ ンでは、 ブロックの各レジスタを制御できます。 こ のオプシ ョ ン を選択する と、<br />

[Custom Pipeline Options] フィールドで各レジスタを選択できるようになります。 <strong>DSP</strong>48 で乗算器<br />

を使用し、入力の 1 つに A:B を使用し た加算器を使用する必要のあ る命令が <strong>DSP</strong>48 Macro に含ま<br />

れる場合は、 パイプライン オプシ ョ ンには [Custom] しか使用できません。<br />

<strong>DSP</strong>48 Macro の制限<br />

関連項目<br />

<strong>DSP</strong>48 Macro を使用する と 、 <strong>DSP</strong> 48 ブ ロ ッ ク を使用する必要はな く な り ますが、 次の よ う な制限<br />

があ り ます。<br />

• <strong>DSP</strong>48 の丸め機能はサポー ト されません。<br />

• ファブリ ックからのキャリーインのみがサポート されます。<br />

• 入力データ型はすべてがサポー ト さ れてい る わけではあ り ません。 1 つの <strong>DSP</strong>48 のデータ型<br />

の制限を越える入力データ型は現在のと ころサポー ト されていません。 たとえば、 入力をアラ<br />

イメントした後、<strong>DSP</strong>48 のポー ト A の入力が 18 ビッ トを超えると、 エラーになります。<br />

<strong>DSP</strong>48 ブロ ッ クの詳細については、 次の ト ピ ッ ク を参照し て く ださ い。<br />

<strong>DSP</strong>48 ブロッ ク<br />

複数クロックのサイクル単位アイランドの生成<br />

<strong>Xilinx</strong> Xtreme<strong>DSP</strong><br />

132 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>DSP</strong>48A<br />

<strong>DSP</strong>48A<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Index] および [<strong>DSP</strong>] ライブラリにリストされています。<br />

ザイ リ ンクスの <strong>DSP</strong>48A ブロックは、 ザイ リンクスの Spartan-3A <strong>DSP</strong> デバイ<br />

ス を使用する <strong>DSP</strong> アプ リ ケーシ ョ ン を効率的に構築する ためのブ ロ ッ ク です。<br />

<strong>DSP</strong>48A は、 <strong>DSP</strong>48 および <strong>DSP</strong>48E の軽量版です。<br />

このブロックの特徴は、 専用の C ポー ト と 加算器の前に さ ら に加算器 (図の preadder)<br />

が追加されている と こ ろにあ り ます。 <strong>DSP</strong>48A では、18X18 ビッ トの符号<br />

付き乗算器 と 48 ビ ッ ト 加算器 と が組み合わ さ れてお り 、 加算器の入力はプ ロ グ<br />

ラマブル マルチプレ ク サで選択 さ れます。 こ れら の演算は、 ダ イ ナ ミ ッ ク に選択<br />

できます。 オプシ ョ ンの入力 と 乗算器パ イ プ ラ イ ン レジスタだけでなく、<br />

subtract、 carry_in、 opmode ポー ト のレジス タ も選択でき ます。 <strong>DSP</strong>48A ブロッ<br />

クは、[Implementation] タブの [Use synthesizable model] をオンにした場合、<br />

<strong>DSP</strong>48A ハー ド ウ ェ ア プリ ミティブを含まないデバイスをターゲットにすることもできます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Consolidate control port (opmode, carry_in, preadd select, preadd subtract)] : オンにする と、<br />

opmode、 subtract、 preadd select、 preadd subtract ポー ト を 1 つの 8 ビッ ト ポー ト に組み合わ<br />

せます。 ビッ ト 0 ~ 3 が opmode ポー ト、 ビ ッ ト 4 が preadd select ポー ト、 ビ ッ ト 5 が<br />

carry_in ポー ト (carry_in が direct に設定されている場合)、ビット 6 が preadder subtract ポー<br />

ト、 ビッ ト 7 が subtract ポー ト にな り ます。 このオプションは、 <strong>DSP</strong>48 命令を生成するのに<br />

Opmode ブ ロ ッ ク を使用し た場合にのみ使用し て く だ さ い。<br />

• [Provide C port] : オンにする と、 c ポー ト が使用可能にな り ます。 オフの場合は、c ポー ト は 0<br />

に接続されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 133<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

• [Provide D port] : オンにする と、d ポー ト が使用可能にな り ます。 オフの場合は、d ポー ト は 0<br />

に接続されます。<br />

• [Provide PCIN port] : オンにする と、 pcin ポー ト が使用可能にな り ます。 pcin ポー ト は、 別の<br />

<strong>DSP</strong>48A ブロッ クの pcout にのみ接続で き ます。<br />

• [Provide PCOUT port] : オンにする と、 pcout ポー ト が使用可能にな り ます。 pcout ポー ト は、<br />

別の <strong>DSP</strong>48A ブロッ クの pcin にのみ接続で き ます。<br />

• [Provide BCOUT port] : オンにする と、 bcout ポー ト が使用可能にな り ます。 bcout ポー ト は、<br />

別の <strong>DSP</strong>48A ブロッ クの b ポー ト にのみ接続で き ます。<br />

• [Provide CARRYIN port] : オンにする と、 carryin ポー ト が使用可能にな り ます。<br />

• [Provide CARRYOUT port] : オンにする と、 carryout ポー ト が使用可能にな り ます。 carryout<br />

ポー ト は、 別の <strong>DSP</strong>48A ブロッ クの carryin ポー ト にのみ接続で き ます。<br />

• [Provide global reset port] : オンにする と、rst ポー ト が使用可能にな り ます。 このポートは、パ<br />

イ プ ラ イ ン選択に基づいて、 使用可能な リ セ ッ ト ポー ト すべてに接続されます。<br />

• [Provide global enable port] : オンにする と、 en ポー ト が使用可能にな り ます。 このポートは、<br />

パイ プ ラ イ ン選択に基づいて、 使用可能な イ ネーブル ポー ト すべてに接続されます。<br />

[Pipelining] タブ<br />

[Pipelining] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Use A0 reg] : A0 reg を使用する かど う かを指定し ます。<br />

• [Use A1 reg] : A1 reg を使用する かど う かを指定し ます。<br />

• [Use B0 reg] : B0 reg を使用する かど う かを指定し ます。<br />

• [Use B1 reg] : B1 reg を使用する かど う かを指定し ます。<br />

• [Pipeline C] : c ポー ト か ら の入力にレ ジ ス タ を付け る かど う かを指定し ます。<br />

• [Pipeline D] : d ポー ト か ら の入力にレ ジ ス タ を付け る かど う かを指定し ます。<br />

• [Pipeline multiplier] : 内部乗算器の出力にレ ジ ス タ を付け る かど う か指定し ます。<br />

• [Pipeline P] : p 出力 と pcout 出力にレジス タ を付け る かど う かを指定し ます。<br />

• [Pipeline opmode] : opmode ポー ト にレジス タを付けるかど う かを指定し ます。<br />

• [Pipeline carry in] : carry_in ポート にレジス タを付けるかど う かを指定します。<br />

[Ports] タブ<br />

[Ports] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Reset port <strong>for</strong> A] : オンにする と、rst_a ポー ト が使用可能にな り ます。 1 に設定される と、ポー<br />

ト a のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> B] : オンにする と、rst_b ポー ト が使用可能にな り ます。 1 に設定される と、ポー<br />

ト b のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> D] : オンにする と、rst_d ポー ト が使用可能にな り ます。 1 に設定される と 、ポー<br />

ト c のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> C] : オンにする と、rst_c ポー ト が使用可能にな り ます。 1 に設定される と 、ポー<br />

ト c のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> multiplier] : オンにする と、 rst_m ポー ト が使用可能にな り ます。 1 に設定され<br />

る と 、 内部乗算器のパイ プ ラ イ ン レジスタがリセッ ト されます。<br />

134 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>DSP</strong>48A<br />

関連項目<br />

• [Reset port <strong>for</strong> P] : オンにする と、 rst_p ポー ト が使用可能にな り ます。 1 に設定される と 、 出<br />

力レジスタが リ セッ ト されます。<br />

• [Reset port <strong>for</strong> opmode] : オンにする と、 rst_opmode ポー ト が使用可能にな り ます。 1 に設定<br />

されると、 opmode ポー ト のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> carry in] : オンにする と、 rst_carryin ポー ト が使用可能にな り ます。 1 に設定さ<br />

れると、 carry_in のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Enable port <strong>for</strong> A] : オンにする と、 ポート A のパイプラ イ ン レジスタのイネーブル ポー ト<br />

ce_a が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> B] : オンにする と、 ポート B のパイプラ イ ン レジスタのイネーブル ポー ト<br />

ce_b が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> C] : オンにする と、 ポート C のパイプラ イ ン レジスタのイネーブル ポー ト<br />

ce_c が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> D] : オンにする と、 ポート D のパイプラ イ ン レジスタのイネーブル ポー ト<br />

ce_d が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> multiplier] : オンにする と 、 乗算器レ ジ ス タ の イ ネーブル ポー ト ce_m が使用<br />

可能にな り ます。<br />

• [Enable port <strong>for</strong> P] : オンにする と、 ポート P のパイプラ イ ン レジスタのイネーブル ポー ト<br />

ce_p が使用可能にな り ます。<br />

• [Enableport <strong>for</strong> opmode] : オンにする と、 ce_opmode ポー ト が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> carry in] : オンにする と、 carry_in レジスタのイネーブル ポー ト ce_carry_in<br />

が使用可能にな り ます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Use synthesizable model] : オンにする と、 <strong>DSP</strong>48A が RTL 記述か ら イ ンプ リ メ ン ト され、<br />

<strong>DSP</strong>48A ハー ド ウ ェ アには直接マ ッ プ さ れません。 このオプションは、<strong>DSP</strong>48A ハー ド ウ ェ ア<br />

プリ ミティブを含まないデバイス フ ァ ミ リ を ターゲ ッ ト に し た場合に使用する と 便利です。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>DSP</strong>48 ブロ ッ クの詳細については、 次の ト ピ ッ ク を参照し て く ださ い。<br />

<strong>DSP</strong>48 Macro<br />

複数クロックのサイクル単位アイランドの生成<br />

『Virtex-5 Xtreme<strong>DSP</strong> Design Considerations』<br />

<strong>Xilinx</strong> Xtreme<strong>DSP</strong><br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 135<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>DSP</strong>48E<br />

R<br />

ブロック パラ メータ<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Index] および [<strong>DSP</strong>] ライブラリにリストされています。<br />

ザイ リ ンクスの <strong>DSP</strong>48E ブロックは、 ザイ リ ンクスの Virtex-5 デバイ ス を使用<br />

する <strong>DSP</strong> アプ リ ケーシ ョ ン を効率的に構築する ためのブ ロ ッ ク です。 <strong>DSP</strong>48E<br />

では、 18X25 ビ ッ ト の符号付き乗算器 と 48 ビ ッ ト 加算器が組み合わ さ れてお<br />

り 、 加算器の入力はプ ロ グ ラ マブル マルチプレ ク サで選択 さ れます。<br />

これらの演算は、 ダイナミ ッ クに選択できます。 オプシ ョ ンの入力 と 乗算器パイ<br />

プライン レジスタだけでなく、 alumode、 carryin、 opmode ポー ト のレジス タ も<br />

選択で き ます。 <strong>DSP</strong>48E ブロッ クは、[Implementation] タブの [Use synthesizable<br />

model] をオンにした場合、 <strong>DSP</strong>48E ハー ド ウ ェ ア プリ ミティブを含まないデバ<br />

イスをターゲッ トにすることもできます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [A or ACIN input] : A 入力を a ポー ト か ら 直接取 り 込むか、 カ ス ケー ド さ れた acin ポー ト か<br />

ら取り込むかを指定します。 acin ポー ト は、 別の <strong>DSP</strong>48 ブ ロ ッ ク にのみ接続で き ます。<br />

• [B or BCIN input] : B 入力を b ポー ト か ら直接取 り 込むか、カ ス ケー ド さ れた bcin ポー ト から<br />

取 り 込むかを指定し ます。 bcin ポー ト は、 別の <strong>DSP</strong>48 ブ ロ ッ ク にのみ接続で き ます。<br />

• [Read dynamic pattern from c register] : オンにする と、 パターン検出で使用されたパターンが<br />

c ポー ト か ら読み込まれます。<br />

• [Pattern (48 bit hex value)] : 指定し た値がパターン検出ロ ジ ッ ク で使用さ れます。 パターン検<br />

出ロ ジ ッ ク では、 加算器、 減算器、 ロ ジ ッ ク ユニ ッ ト の出力の等価チェ ッ ク が実行されます。<br />

• [Read dynamic mask from c register] : オンにする と 、 パターン検出で使用 さ れたマス ク が c<br />

ポート から読み込まれます。<br />

136 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>DSP</strong>48E<br />

• [Pattern mask (48 bit hex value)] : パターン検出中に一部のビ ッ ト をマス ク し て除去する ため<br />

に使用する 48 ビッ トの値です。<br />

• [Reset p register on pattern detection] : オンにしてパターンが検出される と、次のサイ クルの p<br />

レジスタがリセッ ト されます。<br />

[Optional Ports] タブ<br />

[Optional Ports] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

[Consolidate control port] : オンにする と、 opmode、 alumode、 carry_in、 carry_in_sel ポー ト を 1<br />

つの 15 ビッ ト ポー ト に組み合わせます。 ビッ ト 0 ~ 6 が opmode ポー ト、 ビ ッ ト 7 ~ 10 が<br />

alumode ポー ト 、ビ ッ ト 11 が carry_in ポー ト 、ビ ッ ト 12 ~ 14 が carry_in_sel ポー ト にな り ます。<br />

このオプションは、<strong>DSP</strong>48E 命令を生成する のに Opmode ブ ロ ッ ク を使用し た場合にのみ使用し て<br />

ください。<br />

[Provide c port] : オンにする と、c ポー ト が使用可能にな り ます。 オフの場合は、c ポー ト は 0 に接<br />

続されます。<br />

[Provide global reset port] : オンにする と、 rst ポー ト が使用可能にな り ます。 このポートは、 パイ<br />

プ ラ イ ン選択に基づいて、 使用可能な リ セ ッ ト ポー ト すべてに接続されます。<br />

[Provide global enable port] : オンにする と、 オプシ ョ ンの en ポー ト が使用可能にな り ます。 この<br />

ポー ト は、 パイ プ ラ イ ン選択に基づいて、 使用可能な イ ネーブル ポー ト すべてに接続されます。<br />

[Provide pcin port] : オンにする と、pcin ポー ト が使用可能にな り ます。 pcin ポー ト は、別の <strong>DSP</strong>48<br />

ブロックの pcout にのみ接続で き ます。<br />

[Provide carry cascade in port] : オンにする と、 キャ リー カ ス ケー ド 入力ポー ト が使用可能にな り<br />

ます。 このポートが接続できるのは、別の <strong>DSP</strong>48E ブロッ クのキャ リー カスケード出力ポートのみ<br />

です。<br />

[Provide multiplier sign cascade in port] : オンにする と、 乗算符号カ ス ケー ド 入力ポー ト<br />

(multsigncascin) が使用可能にな り ます。 このポートが接続できるのは、 別の <strong>DSP</strong>48E ブロックの<br />

乗算符号カ ス ケー ド 出力ポー ト のみです。<br />

[Provide carryout port] : オンにする と、 carryout 出力ポー ト が使用可能にな り ます。 加算器/減算器<br />

の演算モード が 1 つの 48 ビ ッ ト 加算器に設定さ れる と 、 carryout ポー ト の幅は 1 ビットになり、 2<br />

つの 24 ビ ッ ト 加算器に設定さ れる と 、2 ビッ トになります。 MSB は 2 つ目の加算器の carryout に、<br />

LSB は最初の加算器の carryout にな り ます。 4 つの 12 ビ ッ ト 加算器に設定さ れる と 、carryout ポー<br />

トの幅は 4 ビッ トになり、 加算された 48 ビット入力が 4 つの 12 ビ ッ ト に分割さ れます。<br />

[Provide pattern detect port] : オンにする と 、 パターン検出出力ポー ト が使用で き ます。 マスクまた<br />

は c レ ジ ス タ のいずれかか ら のパターンが一致する と 、 パターン検出ポー ト は 1 に設定されます。<br />

[Provide pattern bar detect port] : オンにする と、 パターン バー検出 (patternbdetect) 出力ポー ト が<br />

使用で き ます。 マスクまたは c レ ジス タのいずれかか ら の反転パターンが一致する と、 パターン<br />

バー検出ポー ト は 1 に設定されます。<br />

[Provide overflow port] : オンにする と、 オーバーフ ロー出力ポー ト が使用可能にな り ます。 この<br />

ポー ト は、<strong>DSP</strong>48E が P[N] ビットを超えてオーバーフローになることを示します。N は 1 ~ 46 の<br />

値にな り 、 GUI のマス ク フィールドか c ポー ト 入力で設定 さ れる マ ス ク の 1 の数によ って決ま り<br />

ます。<br />

[Provide underflow port] : オンにする と、 アンダーフ ロー出力ポー ト が使用可能にな り ます。<br />

<strong>DSP</strong>48E がアンダーフローになる こ と を示します。 アンダーフローは、P[N] ビ ッ ト を下回る と 発生<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 137<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

します。 N は GUI のマス ク フィールドか c ポー ト 入力で設定さ れる マス ク の 1 の数によ って決ま<br />

ります。<br />

[Provide ACOUT port] : オンにする と、 acout 出力ポー ト が使用可能にな り ます。 acout ポー ト は、<br />

別の <strong>DSP</strong>48E ブロックの acin にのみ接続で き ます。<br />

[Provide BCOUT port] : オンにする と、bcout ポー ト が使用可能にな り ます。 bcout ポー ト は、 別の<br />

<strong>DSP</strong>48E ブロッ クの bcin にのみ接続で き ます。<br />

[Provide PCOUT port] : オンにする と、 pcout ポー ト が使用可能にな り ます。 pcout ポー ト は、 別の<br />

<strong>DSP</strong>48 ブロッ クの pcin にのみ接続で き ます。<br />

[Provide multiplier sign cascade out port] : オンにする と、 乗算器符号カ ス ケー ド 出力<br />

(multsigncascout) ポー ト が使用可能にな り ます。 このポートは、別の <strong>DSP</strong>48E ブ ロ ッ ク の乗算器符<br />

号カスケード入力ポー ト にのみ接続でき、 2 つの <strong>DSP</strong>48E から構築される 92 ビッ トのアキュム<br />

レータ/加算器および減算器をサポー ト する ために使用されます。<br />

[Provide carry cascade out port] : オンにする と、 キャ リー カスケード出力ポート (carrycascout) が<br />

使用可能にな り ます。 このポートが接続できるのは、別の <strong>DSP</strong>48E ブロッ クのキャ リー カスケード<br />

入力ポー ト のみです。<br />

[Pipelining] タブ<br />

[Pipelining] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Length of a/acin pipeline] : 入力レ ジ ス タ A のパイプライン長を指定します。 パイプラインの<br />

長さを 0 にする と 、 入力のレジス タが削除されます。<br />

• [Length of b/bCIN pipeline] : b 入力のパ イ プ ラ イ ン長を b か ら 読み込むか、bcin か ら読み込む<br />

かを指定し ます。<br />

• [Length of acout pipeline] : a/acin 入力ポー ト と acout 出力ポー ト 間のパイ プ ラ イ ンの長さ を指<br />

定します。 0 にする と 、acout パイプラインからレジスタが削除されます。 値は a/acin パイプラ<br />

イ ンの長さ と同じ またはそれ以下に指定する必要があ り ます。<br />

• [Length of bcout pipeline] : b/bcin 入力ポー ト と bcout 出力ポー ト 間のパイ プ ラ イ ンの長さ を<br />

指定し ます。 0 にする と 、bcout パイプラインからレジスタが削除されます。 値は b/bcin パイプ<br />

ラ イ ンの長さ と 同じ ま たはそれ以下に指定する必要があ り ます。<br />

• [Pipeline c] : c ポー ト か ら の入力にレジス タ を付け る かど う かを指定し ます。<br />

• [Pipeline p] : p 出力 と pcout 出力にレ ジ ス タ を付け る かど う かを指定し ます。<br />

• [Pipeline multiplier] : 内部乗算器の出力にレ ジ ス タ を付け る かど う か指定し ます。<br />

• [Pipeline opmode] : opmode ポー ト にレジス タを付けるかど う かを指定し ます。<br />

• [Pipeline alumode] : alumode ポート にレジス タを付けるかど う かを指定します。<br />

• [Pipeline carry in] : carry_in ポート にレジス タを付けるかど う かを指定します。<br />

• [Pipeline carry in select] : carry_in_sel ポート にレジス タを付けるかど う かを指定します。<br />

リセッ ト ポー ト と イネーブル ポー ト<br />

[Reset/Enable Ports] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Reset port <strong>for</strong> a/acin] : オンにする と、 rst_a ポー ト が使用可能にな り ます。 1 に設定される と、<br />

ポー ト a のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> b/bcin] : オンにする と、rst_b ポー ト が使用可能にな り ます。 1 に設定される と、<br />

ポー ト b のパイプラ イ ン レジスタがリセッ ト されます。<br />

138 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>DSP</strong>48E<br />

• [Reset port <strong>for</strong> c] : オンにする と、rst_c ポー ト が使用可能にな り ます。 1 に設定される と 、 ポー<br />

ト c のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> multiplier] : オンにする と、 rst_m ポー ト が使用可能にな り ます。 1 に設定され<br />

る と 、 内部乗算器のパイ プ ラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> P] : オンにする と、 rst_p ポー ト が使用可能にな り ます。 1 に設定される と 、 出<br />

力レジスタが リ セッ ト されます。<br />

• [Reset port <strong>for</strong> carry in] : オンにする と、 rst_carryin ポー ト が使用可能にな り ます。 1 に設定さ<br />

れると、 carry_in のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> alumode] : オンにする と、 rst_alumode ポー ト が使用可能にな り ます。 1 に設定<br />

されると、 alumode ポー ト のパイプラ イ ン レジスタがリセッ ト されます。<br />

• [Reset port <strong>for</strong> controls (opmode and carry_in_sel)] : オンにする と、 rst_ctrl ポー ト が使用可能<br />

にな り ます。 1 に設定される と 、opmode と carry_in_sel レ ジ ス タ が使用可能な場合、 そのパイ<br />

プライン レジスタがリセッ ト されます。<br />

• [Enable port <strong>for</strong> first a/acin register] : オンにする と、 最初の a パイプライン レジスタのイネー<br />

ブル ポー ト ce_a1 が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> second a/acin register] : オンにする と、2 つ目の a パイプライン レジスタのイ<br />

ネーブル ポー ト ce_a2 が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> first b/bcin register] : オンにする と、最初の b パイプライン レジスタのイネー<br />

ブル ポー ト ce_b1 が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> second b/bcin register] : オンにする と、2 つ目の b パイプライン レジスタのイ<br />

ネーブル ポー ト ce_b2 が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> c] : オンにする と、 ポート C レジスタのイネーブル ポー ト ce_c が使用可能に<br />

なります。<br />

• [Enable port <strong>for</strong> multiplier] : オンにする と 、 乗算器レ ジ ス タ の イ ネーブル ポー ト ce_m が使用<br />

可能にな り ます。<br />

• [Enable port <strong>for</strong> p] : オンにする と、 ポート P 出力レ ジ ス タの イ ネーブル ポー ト ce_p が使用可<br />

能にな り ます。<br />

• [Enable port <strong>for</strong> carry in] : オンにする と、 carry_in レジスタのイネーブル ポー ト ce_carry_in<br />

が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> alumode] : オンにする と、alumode レジスタのイネーブル ポー ト ce_alumode<br />

が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> multiplier carry in] : オンにする と 、 乗算器レ ジ ス タの イ ネーブル ポー ト<br />

mult_carry_in が使用可能にな り ます。<br />

• [Enable port <strong>for</strong> controls (opmode and carry_in_sel)] : オンにする と、ce_ctrl ポー ト が使用可能<br />

にな り ます。 ce_ctrl ポー ト では、 opmode と carry_in_sel レジスタが制御されます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Use synthesizable model] : オンにする と、 <strong>DSP</strong>48E が RTL 記述か ら イ ンプ リ メ ン ト され、<br />

<strong>DSP</strong>48E ハー ド ウ ェ アには直接マ ッ プ さ れません。 このオプションは、 <strong>DSP</strong>48E ハー ド ウ ェ ア<br />

プリ ミティブを含まないデバイス フ ァ ミ リ を ターゲ ッ ト に し た場合に使用する と 便利です。<br />

• [Mode of operation <strong>for</strong> the adder/subtractor] : こ のモー ド は、小型の加減算フ ァ ン ク シ ョ ン を高<br />

速で低電力、 低ロ ジ ッ ク 使用率で イ ンプ リ メ ン ト する際に使用し ます。 加算/減算/ロジック ユ<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 139<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

関連項目<br />

ニ ッ ト の加算器 と 減算器は、 2 つの 24 ビッ ト フィールドか 4 つの 12 ビッ ト フィールドに分<br />

割する こ と も で き ます。 分割する場合は、 モー ド を [Two 24-bit adders] または [Four 12-bit<br />

adders] に設定し ます。 詳細は、 『Virtex-5 Xtreme<strong>DSP</strong> Design Considerations』 を参照してくだ<br />

さい。<br />

• [Use adder only] : オンにする と 、 ブ ロ ッ ク は乗算器を使用せずに、 最速のパフ ォーマン ス を達<br />

成でき る よ う にハード ウ ェ アで最適化されます。 乗算器を使用する命令があ る と、 シ ミ ュ レー<br />

シ ョ ンでエ ラーが発生し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>DSP</strong>48 ブロ ッ クの詳細については、 次の ト ピ ッ ク を参照し て く ださ い。<br />

<strong>DSP</strong>48 Macro<br />

複数クロックのサイクル単位アイランドの生成<br />

『Virtex-5 Xtreme<strong>DSP</strong> Design Considerations』<br />

<strong>Xilinx</strong> Xtreme<strong>DSP</strong><br />

140 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Dual Port RAM<br />

Dual Port RAM<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Control Logic]、 [Memory]、 [Index] ライブラリにリストさ<br />

れています。<br />

ブロック インターフェイス<br />

ザイ リ ンクスの Dual Port RAM ブロックは、 ランダム アクセス メモリ<br />

(RAM) をインプリ メント します。 デュアル ポー ト を使用する と 、 複数の<br />

データ幅を使用し て異な る サンプル レート でメモ リ空間に同時にアクセスで<br />

きます。<br />

こ のブロ ッ ク には、 読み出し と 書き 込みを 同時にする ためのポート セッ ト が 2 組含ま れま す。 アド<br />

レス ポート 、 データ ポート 、 書き 込みイ ネーブル ポート を 使用する こ と で、 単一のメ モリ 空間への<br />

アク セス が共有でき る よ う になり ま す。 デフ ォ ルト では、 各ポート セッ ト に出力ポート が 1 つと ア<br />

ド レ ス 用、 入力データ 用、 書き 込みイ ネーブル用に入力ポート が 3 つ含ま れま す。 入力ポート セッ<br />

ト には、 それぞれポート イ ネーブルと 同期リ セッ ト 信号を オプショ ン で追加する こ と も でき ま す。<br />

フォーム ファクタ<br />

Dual Port RAM ブロックでは、 さまざまなフォーム ファクタ (FF) がサポー ト されます。 フォーム<br />

ファクタは、 次のように定義されます。<br />

FF = W B / W A (W B はポー ト B のデータ幅、 W A はポー ト A のデータ幅)<br />

Dual Port RAM ブロックでは、次の条件であれば、Virtex デバイ ス ファ ミ リの場合は 1、 2、 4、 8、<br />

16、 Virtex-II デバイ ス ファミ リの場合は 1、 2、 4、 8、 16、 32 の FF を使用できます。<br />

Mod [( D A x W A ) , W B] = 0 (指定し た FF で 0 の場合。 D A はポー ト A の深さ)<br />

ポー ト B の深さ (D B) は、 次のよ う に指定し たフ ォーム フ ァ ク タ か ら推論 さ れます。<br />

D B = D A / FF.<br />

フォーム ファクタ 1 の場合、 ポー ト A とポート B のデータ入力ポー ト の演算タ イ プ と 2 進小数点<br />

はそれぞれ異な り ます。 フォーム ファクタが 1 よ り 大き い場合、 ポー ト A とポート B の演算タ イ<br />

プは符号なしにな り 、 2 進小数点は 0 の位置にな り ます。 出力ポー ト A と B からは、 それぞれの<br />

入力データ ポー ト と 同じデータ型が出力 さ れます。<br />

このメモリ ブロックのロケーショ ンは、 各アドレス ポー ト に有効なア ド レ ス を指定する と ア ク セ<br />

スで き、 読み出し ま たは書き込みで き る よ う にな り ます。 有効なア ド レ スは、 0 ~ d1 の符号な しの<br />

整数です。d は、RAM の深さ (RAM のワード数) を表します。 メ モ リ の最後よ り も先へ読み飛ばそ<br />

うとすると、シミュレーションでエラーになります。 初期の RAM コンテンツは、 ブロック パラ<br />

メータから指定できます。 書き込みイ ネーブル ポー ト は、それぞれブール値にする必要があ り ます。<br />

データ入力の値は、WE ポー ト が 1 の場合にア ド レ ス ラインで指定したロケーションに書き込まれ<br />

ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 141<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

書き込みモード<br />

書き込み中の出力は、 書き込みモー ド に よ って異な り ます。 WE ポー ト が 0 の場合、 出力ポー ト は<br />

アドレス ラ イ ンで指定し た ロ ケーシ ョ ンの値にな り ます。 書き込み中 (WE がアサート されている<br />

間)、 入力データ ポー ト のデータはポー ト のア ド レ ス入力で選択した メ モ リ ロケーションに格納さ<br />

れます。 書き込みサ イ ク ル中は、データ出力ポー ト A と B のビヘイビアは次のいずれかに設定でき<br />

ます。<br />

• Read after write<br />

• Read be<strong>for</strong>e write<br />

• No read on write<br />

次の図では、 書き込みモー ド の詳細を示し ています。 こ の図では、 メ モ リ の初期値は 5 に、 ア ド レ<br />

ス ビッ トは 4 に指定されています。 [No read on write] モー ド を使用し た場合、 出力はア ド レ ス ラ<br />

イ ンの影響を受けず、出力は WE が 0 の と き の最後の出力 と 同じ にな り ます。 ほかの 2 つのモード<br />

にする と 、 出力はア ド レ ス ラ イ ンで指定し た ロ ケーシ ョ ンか ら取得さ れる ので、 ロ ケーシ ョ ンの値<br />

が書き込まれます。 こ の場合、 出力は書き込み前の値 ([Read be<strong>for</strong>e write] モード) にな り ます。<br />

Virtex、Virtex-E、お よ び Spartan-II ファミ リでは、[Read after write] のみサポー ト されます。 Virtex-<br />

II、 Virtex-II Pro、 Spartan-3、 Virtex-4、 Virtex-5、 Spartan-3A <strong>DSP</strong> では、 すべてのモードがサポー<br />

トされます。<br />

142 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Dual Port RAM<br />

コリジョン ビヘイビア<br />

両方のポー ト に同時にア ク セスする と、 次のよ う なビヘイ ビアにな り ます。<br />

Read-Read コリジョン<br />

両方のポー ト で同じ メ モ リ セルか ら同時に読み出しが行われた場合は、 問題な く 読み出されます。<br />

Write-Write コリジョン<br />

両方のポー ト が同じ メ モ リ セルに同時に書き込む と 、両方の出力に無効であ る こ と を示す nan とい<br />

うマークが付きます。<br />

Write-Read コリジョン<br />

1 つのポー ト が書き込みを、 も う 1 つが同じ メ モ リ セルか ら読み出し をする と 発生する コ リ ジ ョ ン<br />

です。 メモリ コ ンテンツは破損し ませんが、 読み出し ポー ト の出力データは、 書き込みポー ト の書<br />

き込みモー ド に よ っ ては破損する こ と があ り ます。<br />

• 書き込みポート が [Read be<strong>for</strong>e write] モー ド の場合、 も う 1 つのポー ト は古い メ モ リ コンテ<br />

ン ツ を問題な く 読み出すこ と がで き ます。<br />

• 書き込みポート が [Read after write] または [No read on write] モー ド の場合、 読み出し ポー ト<br />

の出力は無効 (nan) にな り ます。<br />

各ポー ト の書き込みモードは、 ブロ ッ ク パラ メータ ダイアログ ボックスの [Advance] タブで設定<br />

できます。<br />

タイミング パフ ォーマンスの向上<br />

Virtex-4、 Virtex-5、 Spartan-3A <strong>DSP</strong> デバイ スにデュ アル ポー ト RAM ブロックをインプリ メン ト<br />

する場合は、 次の設定を し てお く と 、 最速の タ イ ミ ング パフ ォーマン ス を達成で き ます。<br />

ブロック パラ メータ<br />

• [Provide synchronous reset port <strong>for</strong> port A output register] をオフにします。<br />

• [Provide synchronous reset port <strong>for</strong> port B] をオフにします。<br />

• [Depth] には、 16,384 未満の値を指定し ます。<br />

• [Latency] は 2 またはそれ以上の値に設定し ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Depth] : ポー ト A の メ モ リ の ワー ド 数を指定し ます。 値は正の整数にする必要があ り ます。<br />

ポー ト B の深さ は、 入力データ幅で指定し たフ ォーム フ ァ ク タ か ら 推論されます。<br />

• [Initial value vector] : 初期 メ モ リ コ ンテン ツ を指定し ます。 初期値ベク タ エレ メン トの容量<br />

と精度は、ポート A に指定したデータ形式に基づきます。ベク タが RAM よ り も長い場合、 ベ<br />

クタの後続エレメントは消去されます。 RAM がベ ク タ よ り も長い場合、こ の RAM の後続ワー<br />

ドは 0 に設定されます。 初期値ベ ク タは、 RAM のデータ ポー ト A に指定された精度に従っ<br />

て、 サチュ レー ト されるか丸められます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 143<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

• [Memory Type] : ブロック RAM か分散 RAM を選択し ます。 分散デュ アル ポー ト RAM で<br />

は、常にポー ト A が [Read be<strong>for</strong>e write] モー ド に、ポー ト B が読み出し専用に設定されます。<br />

• [Write Modes] : メ モリを [Read after write]、 [Read be<strong>for</strong>e write]、 または [No read on write] に<br />

指定し ま す。 こ れら のモード は、 デバイ スによ って使用でき る も のと でき ないも のがあり ま す。<br />

• [Initial value <strong>for</strong> port A output register] : ポー ト A 出力レ ジ ス タ の初期値を指定し ます。 初期<br />

値は、RAM のデータ ポー ト A に指定された精度に従って、 サチュ レー ト 演算されるか丸めら<br />

れます。 こ の初期値を設定する オプシ ョ ンは、 Virtex-II、 Virtex-II Pro、 Spartan-3、 Virtex-4、<br />

Virtex-5、 Spartan-3A <strong>DSP</strong> デバ イ ス でのみ使用で き ます。<br />

• [Initial value <strong>for</strong> port B output register] : ポー ト B 出力レ ジ ス タ の初期値を指定し ます。 初期値<br />

は、 RAM のデータ ポー ト B に指定された精度に従って、 サチュ レー ト されるか丸められま<br />

す。 こ の初期値を設定する オプシ ョ ンは、Virtex-II、Virtex-II Pro、Spartan-3、Virtex-4、Virtex-<br />

5、 Spartan-3A <strong>DSP</strong> デバ イ スでのみ使用で き ます。<br />

• [Provide synchronous reset port <strong>for</strong> port A output register] : オンにする と、 ブロ ッ ク RAM の<br />

ポー ト A 出力レ ジ ス タ の リ セ ッ ト ポー ト にア ク セスでき る よ う にな り ます。 リセット ポー ト<br />

は、 ブロ ッ ク RAM のレイテンシが 1 に設定さ れてい る場合にのみ使用で き ます。<br />

• [Provide synchronous reset port <strong>for</strong> port B output register] : オンにする と、 ブロ ッ ク RAM の<br />

ポー ト B 出力レ ジ ス タ の リ セ ッ ト ポートにアクセスできるようになります。 リセット ポー ト<br />

は、 ブロ ッ ク RAM のレイテンシが 1 に設定さ れてい る場合にのみ使用で き ます。<br />

• [Provide enable port <strong>for</strong> port A] : オンにする と、ポート A のイネーブル ポー ト にア ク セスでき<br />

ます。 イネーブル ポー ト は、 このブロ ッ クのレ イテンシが 1 以上の場合にのみ使用で き ます。<br />

• [Provide enable port <strong>for</strong> port B] : オンにする と、ポート B のイネーブル ポー ト にア ク セスでき<br />

ます。 イネーブル ポー ト は、 このブロ ッ クのレ イテンシが 1 以上の場合にのみ使用で き ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

144 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Dual Port RAM<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

ザイリンクス LogiCORE<br />

このブロックでは、 常にザイ リンクス LogiCORE の Dual Port Block Memory または Distributed<br />

Memory が使用されます。 デュアル ポー ト ブロッ ク メ モ リ の場合、 ア ド レ ス幅は ceil(log2(d)) と<br />

同じにする必要があ り ます。d は、メ モ リ の深さ を示し ています。 このブロッ ク メ モ リ の最大のデー<br />

タ ワー ド 幅は、 指定し た深さ にな り ます。 指定で き る最大の深 さ は、 ターゲ ッ ト に し たデバ イ ス<br />

ファ ミ リによって異なります。 この後の表は、ブロック メ モ リ の深 さ別に、 最大データ ワード幅を<br />

それぞれ示し ています。<br />

このブロックでは、 次のザイ リンクス LogiCORE コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

Dual Port RAM Dual Port<br />

Block Memory<br />

Block Memory<br />

<strong>Generator</strong><br />

Distributed<br />

Memory<br />

1024 Pt<br />

Complex Fast<br />

Fourier<br />

Trans<strong>for</strong>m<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 145<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V6.1 • • • • •<br />

4 5<br />

V2.4 • • •<br />

V7.1 • • • • •<br />

V1.0 •<br />

R


R<br />

深さ別の最大デー タ 幅 (Virtex/Virtex-E/Spartan-3)<br />

深さ 幅<br />

2 ~ 2048 256<br />

2049 ~ 4096 192<br />

4097 ~ 8192 96<br />

8193 ~ 16K 48<br />

16K+1 ~ 32K 24<br />

32K+1 ~ 64K 12<br />

64K+1 ~ 128K 6<br />

128K+1 ~ 256K 3<br />

深さ別の最大デー タ 幅 (Virtex-II/Virtex-II Pro/Virtex-4/Virtex-5/Spartan-3A <strong>DSP</strong>)<br />

深さ 幅<br />

2 ~ 8192 256<br />

8193 ~ 16K 192<br />

16K+1 ~ 32K 96<br />

32K+1 ~ 64K 48<br />

64K+1 ~ 128K 24<br />

128K+1 ~ 256K 12<br />

256K+1 ~ 512K 6<br />

512K+1 ~<br />

1024K<br />

3<br />

分散 メ モ リ のパ ラ メ ータ を選択し た場合は、LogiCORE Distributed Memory が使用されます。 深さ<br />

は、 Virtex-II、 Virtex-II Pro、 Spartan-3、 Virtex-4、 Virtex-5、 Spartan-3A <strong>DSP</strong> デバイ スの場合は<br />

16 ~ 65536、その他の FPGA ファミ リの場合は 16 ~ 4096 の範囲で指定する必要があ り ます。 ワー<br />

ド幅は、 1 ~ 1024 の範囲で指定する必要があ り ます。<br />

146 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


EDK Processor<br />

EDK Processor<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Index] および [Control Logic] ライブラリにリストされてい<br />

ます。<br />

EDK Processor ブロッ クは、 <strong>System</strong> <strong>Generator</strong> で開発したユーザー ロジックをザ<br />

イリンクスの EDK ( エンベデ ッ ド 開発シ ス テム ) を使用して作成したエンベデッド プロセッサ シ ス テムに接続する ために使用し ます。<br />

EDK Processor ブロッ クでは、 EDK pcore 生成 ([EDK pcore generation]) と HDL<br />

ネッ ト リス ト生成 ([HDL netlisting]) の 2 つのデザイ ン フローがサポート されてい<br />

ます。 [HDL netlisting] を使用する と 、EDK を使用して作成したエンベデッド プロセッサ システム<br />

が <strong>System</strong> <strong>Generator</strong> モデルにイ ンポー ト され、 [EDK pcore generation] を使用する と、 <strong>System</strong><br />

<strong>Generator</strong> モデルが pcore としてエクスポートされます。この pcore は後で EDK プロジェク トにイ<br />

ンポート して、 エンベデッド プ ロ セ ッ サに接続で き ます。<br />

メモリ マップ インターフェイス<br />

EDK Processor ブロッ クでは、 エンベデッ ド プロセッサと <strong>System</strong> <strong>Generator</strong> で開発したユーザー<br />

ロ ジ ッ ク の通信用に、自動的に Shared Memory ベース の メ モ リ マップ インターフェイスが生成さ<br />

れます。 EDK Processor ブロックでは、エンベデッ ド プロセッサが接続された共有メモリにアクセ<br />

スできるように C デバイ ス ド ラ イ バ も自動的に生成されます。<br />

MB<br />

Bus<br />

Adaptor<br />

上の図は、 EDK Processor ブロッ クで生成されたメモリ マップ インターフェイスを示しています。<br />

<strong>System</strong> <strong>Generator</strong> で開発されたユーザー ロ ジ ッ ク が、共有 メ モ リ のセ ッ ト に接続されています。 こ<br />

れ ら の共有 メ モ リ は、 後に説明する ダ イ ア ロ グ ボ ッ ク ス を使用する と 、 EDK Processor ブロックに<br />

追加で き ます。 EDK Processor ブ ロ ッ ク は、 自動的に残 り 半分の共有 メ モ リ と メ モ リ マップ イン<br />

ターフェイスを生成します。 メモリ マップ インターフェイスは、 FSL (Fast Simplex Link) バスの<br />

ペアを介してこれらの共有メ モ リ と MicroBlaze プ ロ セ ッ サを接続し ます。 MicroBlaze プロセッサ<br />

がメモリ マップ イ ン ターフ ェ イ スにあ る名前やロ ケーシ ョ ン情報に基づいて、 こ れら の共有 メ モ<br />

リにアクセスできるように、C デバイ ス ド ラ イ バ も自動的に生成さ れます。<br />

メモリ マップ インターフェイスは、[EDK pcore generation] または [HDL netlisting] フローのいず<br />

れかで EDK Processor ブ ロ ッ ク に よ っ て生成さ れます。 [EDK pcore generation] フ ローの場合、Bus<br />

Adaptor の右側のハード ウ ェアのネ ッ ト リ ス ト が pcore としてエクスポートされ、 [HDL netlisting]<br />

フローの場合、 図のすべてのハードウェア (MicroBlaze プロセッサ、 メモリ マップ インターフェ<br />

イス、共有メモリ、ユーザー ロジックなど) がほかの <strong>System</strong> <strong>Generator</strong> デザイ ン と同じ よ う に、 一<br />

緒のネ ッ ト リ ス ト にま と められます。<br />

EDK Processor ブロ ッ ク のデザイ ンおよびシ ミ ュ レーシ ョ ン手法については、ハー ド ウ ェ ア/ソフト<br />

ウ ェ ア協調設計を参照して く ださい。<br />

ブロック パラ メータ<br />

Synthesized interface<br />

In<br />

Out<br />

Memory<br />

Map<br />

User design<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 147<br />

リリース 9.2.00 2007 年 8 月<br />

RAM<br />

FIFO<br />

Reg<br />

RAM<br />

FIFO<br />

Reg<br />

User<br />

Logic<br />

R


R<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [EDK project] : インポート される EDK プロジェク ト ファイル (XMP ファイル) の名前を指定<br />

します。 テキス ト ボックスを右ク リ ックすると、EDK Import Wizard が起動し ます。 このウィ<br />

ザー ド では、 EDK プロジェク ト ファイルを読み込んで、修正し、EDK プロジェク トにイン<br />

ポー ト し ます。<br />

• [Processor type] : EDK プロジェク ト をインポート したときに検出されたプロセッサのタイプ<br />

です。<br />

• [Target board] : EDK プロジェク トでターゲッ トにしたハードウェア ボード です。<br />

• [Configure processor <strong>for</strong>] : EDK Processor ブロックは、 EDK pcore 生成 ([EDK pcore<br />

generation]) または HDL ネッ ト リス ト生成 ([HDL netlisting]) のいずれかに設定で き ます。<br />

[HDL netlisting] を選択し、 [EDK project] フ ィ ール ド に何も設定し ていない と 、 EDK Import<br />

Wizard が自動的に起動されます。<br />

• [Import] : EDK Import Wizard が起動されます。<br />

• [Memory Maps] : プ ロ セ ッ サに関連付け ら れた共有 メ モ リ が表示 さ れます。 ツ リー ビューのア<br />

イ テム を右ク リ ッ ク する と 、 設定、 削除、 再同期、 ツ リ ー ビューの更新など、共有メモリで実<br />

行可能な操作 メ ニ ューが表示さ れます。 共有 メ モ リ を再同期する と 、 ユーザー ロジックで使用<br />

された共有メモリ と EDK Processor ブ ロ ッ ク で自動的に生成さ れた共有 メ モ リ に矛盾がない<br />

ようにできます。<br />

[Simulation] タブ<br />

[Simulation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Compile software program] : XPS ツールが起動され、 インポー ト した EDK プロジェク トで<br />

有効な ソ フ ト ウ ェ ア プログラムがコンパイルされます。 これらのソフ ト ウェア プログラムは、<br />

エンベデッ ド プ ロ セ ッ サの メ モ リ を初期化する ために選択 さ れます。<br />

• [Launch GDB] : シ ミ ュ レーシ ョ ン開始時に GDB が起動され、デバッ グが実行されます。 GDB<br />

のグラフ ィ ッ ク ユーザー イ ン ターフ ェ イ ス を使用する と 、 エンベデ ッ ド プロセッサのステー<br />

タ ス を確認し、 シ ミ ュ レーシ ョ ンの進捗状況を制御で き ます。<br />

• [Co-simulation mode] : ソフトウェア ベースのシ ミ ュ レーシ ョ ン を [Single Step] または<br />

[Single Step Only in Shared Memory Access] モード のいずれかで実行し ます。 [Single Step]<br />

モード にする と、 イ ンポー ト された EDK プロジェ ク ト のシ ミ ュ レーシ ョ ンがほかの Simulink<br />

ブ ロ ッ ク のシ ミ ュ レーシ ョ ン と サ イ ク ル精度ベースで同期さ れます。 [Single Step Only on<br />

Shared Memory Access] モード にする と、 イ ンポー ト された EDK プロジェク トのシミ ュレー<br />

ションは、共有メモリ マ ッ プの共有 メ モ リ にデータ が伝送された場合にのみ、ほかの Simulink<br />

ブ ロ ッ ク のシ ミ ュ レーシ ョ ン と 同期さ れます。 ソフトウェア ベースのシ ミ ュ レーシ ョ ンでの こ<br />

の 2 つの協調シ ミ ュ レーシ ョ ン モー ド の詳細は、 ソフトウェア ベースのシ ミ ュ レーシ ョ ン モ<br />

デルの作成を参照して く ださい。<br />

メモ : [Simulation] タブのパラ メータは、[Basic] タブで [EDK pcore generation] フローを選択した<br />

場合、ま たは [HDL netlisting] フローでソフトウェア ベースのシ ミ ュ レーシ ョ ン モデルを コ ンパイ<br />

ルでき なかった場合などは、 設定でき ません。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

148 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


EDK Processor<br />

既知の問題<br />

• 各デザ イ ンで使用で き る EDK Processor ブロッ クは 1 つだけです。<br />

• ソフトウェア ベースのシ ミ ュ レーシ ョ ンでサポー ト さ れる のは、 MicroBlaze ハー ド ウ ェ ア ペ<br />

リフェラルのサブセットのみです。 サポー ト されるハード ウ ェア ペリフェラルのリストについ<br />

ては、 EDK サポー ト を参照して く ださい。<br />

• 各デザ イ ンで使用で き る MicroBlaze プロセッサは 1 つだけです。 1 つのデザイ ンに複数の<br />

MicroBlaze プロセッサおよびエンベデッ ド PowerPC プロセッサは使用できません。<br />

MicroBlaze プロセッサのオンライン マニュアル<br />

関連項目<br />

MicroBlaze の詳細は、 次を参照し て く だ さい。<br />

http://japan.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=micro_blaze<br />

<strong>System</strong> <strong>Generator</strong> でのハード ウ ェア/ソ フ ト ウ ェ ア協調設計<br />

さまざまなハードウェア/ソフトウェア シミュレーション手法<br />

共有 メ モ リ<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 149<br />

リリース 9.2.00 2007 年 8 月<br />

R


Expression<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Control Logic]、 [Math]、 [Index] ライブ<br />

ラリにリストされています。<br />

ザイ リ ンクスの Expression ブ ロ ッ ク は、 ビ ッ ト 単位の論理式を実行し ます。<br />

論理式は、 次の表に記述する演算子で指定し ます。 入力ポー ト の数は、 論理式か ら推<br />

論されます。 入力ポー ト の ラベルは論理式か ら認識さ れ、 ブ ロ ッ ク にはその と お り の<br />

名前が付き ます。 たとえば、~((a1 | a2) & (b1 ^ b2)) では、 図のよ う に a1、 a2、 b1、<br />

b2 という ラベルの付いた入力ポートが 4 つでき ます。<br />

論理式が解析される と 、 それが VHDL (または Verilog) で記述されます。 次は、 ブ ロ ッ ク で使用で<br />

き る演算子を優先度の高い も のか ら順に示し ています。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

演算子 シンボル<br />

優先<br />

( )<br />

NOT ~<br />

AND &<br />

OR |<br />

XOR ^<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Expression] : ビ ッ ト 単位の論理式を指定し ます。<br />

• [Align binary point] : 2 進小数点で自動的に揃え る かど う かを指定し ます。 オフの場合、すべて<br />

の入力の 2 進小数点の位置が同じにな り ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

150 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FDATool<br />

FDATool<br />

使用例<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>]、 [Tools] および [Index] ライブラリにリストされてい<br />

ます。<br />

ザイ リ ンクスの FDATool ブロッ クは、MATLAB の Signal Processing Toolbox の一部<br />

である FDATool ソフトウェアへのインターフェイスになります。<br />

Signal Processing Toolbox が イ ン ス ト ール さ れていない場合、 こ のブ ロ ッ ク は正し く<br />

機能し ないので、 使用し ないで く だ さ い。 こ のブロ ッ ク を使用する と 、 FDATool オブ<br />

ジェク トを定義し、 <strong>System</strong> <strong>Generator</strong> モデルの一部 と し て格納する こ と がで き ます。<br />

FDATool では、デジタル フィルタをグラフィック ユーザー インターフェイスを使用して定義でき<br />

ます。<br />

フ ィ ルタ を定義する サブシ ス テムに FDATool ブロックをコピーします。 ブロッ クのアイコンをダ<br />

ブルク リ ッ クする と、 FDATool セ ッ シ ョ ンが開始され、 グ ラ フ ィ ッ ク ユーザー インターフェイス<br />

が表示されます。 フィルタは、インターフェイス ブ ロ ッ ク の内部のデータ構造に格納 さ れます。フ ィ<br />

ルタの係数は、<strong>System</strong> <strong>Generator</strong> の一部 と し て提供さ れる MATLAB のヘルパー関数を使用し て抽<br />

出でき ます。 xlfda_numerator('fdablk') 関数を呼び出す と 、 fdablk という名前の FDATool ブロッ ク<br />

の伝達関数の分子 (FIR フィルタのインパルス応答) が返されます。 同様に、 ヘルパー関数<br />

xlfda_denominator('fdablk') を実行する と 、 非 FIR フィルタの分母が取り出されます。<br />

FDATool ブロ ッ ク は、 通常係数が xlfda_numerator('fdablk') に設定された FIR フィルタ ブロッ ク<br />

と共に使用されます。 次は、 その関数を指定し た FIR フィルタ ブロッ クのダイアログ ボックスを<br />

示しています。<br />

xlfda_numerator() は、 メ モ リ ブロッ クを初期化、 または FIR フィルタを含むサブシステムの<br />

coefficient 変数を初期化する こ と がで き ます。<br />

このブロックでは、 ハードウェア リソースは使用されません。<br />

FDATool のインターフ ェ イス<br />

Simulink モデルでブロ ッ ク のア イ コ ンをダブルク リ ッ クする と、 FDATool セ ッ シ ョ ンが開始 さ れ、<br />

グラフィック ユーザー インターフェイスが表示されます。 セッションを閉じると、 FDATool オブ<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 151<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ジェク トが FDATool ブロックの UserData パ ラ メ ータ に格納さ れます。 必要であれば、 ヘルパー関<br />

数 xlfda_numerator() および get_param() を使用し、 オブジ ェ ク ト か ら情報を抽出し て く だ さ い。<br />

152 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FFT v1_0<br />

FFT v1_0<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

Cooley-Tukey 型アルゴ リズム<br />

ザイ リンクスの FFT v1_0 ブロックは、 Virtex デバイ スでのみサポー ト さ れま<br />

す。 その他のデバイ ス ファ ミ リの場合は、 FFT v3_1 ブロックを使用してくだ<br />

さい。 FFT ブ ロ ッ ク では、 次に説明する基数 4 の Cooley-Tukey 型アルゴ リ ズ<br />

ム を使用し て、 離散フー リ エ変換 (DFT) が実行されます。<br />

複素ベク タ x(n) = [x(0), x(1), ..., x(N-1)] の N ポイン ト DFT は、ベク タ X(k) = [X(0), X(1), ..., X(N-<br />

1)] にな り ます。 K 番目のエレ メ ン ト は、 次の よ う に定義されます。<br />

k = 0、 1、 ...、 N-1 の場合、<br />

こ れは、 単位元の N 乗根です。 FFT ブ ロ ッ ク は、 ザ イ リ ン ク スの固定小数点データ のペア と し て記<br />

述される複素数データ のス ト リ ーム を入力 と し て受け入れ、N データ サンプルの重複していないフ<br />

レームの続きの DFT を計算します。<br />

ブロック インターフェイス<br />

FFT ア イ コ ンに表示 さ れる入力および出力などのブ ロ ッ ク インターフェイスには、次のようなもの<br />

があ り ます。<br />

入力信号<br />

xn_r 入力データ ス トリームの実数<br />

xn_i 入力データ ス トリームの虚数<br />

vin 各データ入力が有効か無効かを示し ます。 FFT の開始<br />

をデータ フ レームに揃え る ための信号が使用でき ます。<br />

下のタ イ ミ ング図を参照し て く ださ い。<br />

inv 順方向変換の場合は 0、 逆方向変換の場合は 1<br />

出力信号<br />

Xk_r 出力データ ス トリームの実数<br />

Xk_i 出力データ ス トリームの虚数<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 153<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック パラ メータ<br />

vout 出力データ が有効か無効かを示し ます。 フレームの N<br />

入力が無効 と し てマーク さ れる と 、 対応する出力フ<br />

レーム も無効 と し てマーク さ れます。<br />

done フレームの最初の出力サンプルでアクティブ High<br />

rfd ブ ロ ッ ク が入力データ を受信する と ア ク テ ィ ブ High<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Number of sample points (N)] : 16、 64、 256、 1024 のいずれかに長さ を変換し ます。<br />

• [Memory usage] : 変換を計算する ために使用し た メ モ リ バンクの数を [Single]、 [Double]、<br />

[Triple] (16 ポイン トの FFT では使用 さ れません) のいずれかに指定し ます。<br />

• [Scale output by] : [1/N] または [1/(2N)] のいずれかにし ます。<br />

• [Invalidate trans<strong>for</strong>m on overflow] : 内部オーバーフ ローが発生し た と き のブ ロ ッ ク ビヘイ ビ<br />

アを指定します。 チェッ ク ボ ッ ク スがオンの場合は、 出力が無効にな り 、 オフの場合はオー<br />

バーフ ローが発生する と シ ミ ュ レーシ ョ ンが停止し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ブロックのタイミング<br />

次のタ イ ミ ング図は、 FFT ブロックのビヘイビアを示しています。 この図では、 特定フレームの入<br />

力サンプルか ら出力サンプルまでのサンプル周期数を示し ています。 タイミング特性は、FFT のポ<br />

イント数と選択したメモリ使用モードによって異なります。 メモリ コンフィギュレーションに<br />

[Triple] を選択し た場合は、 タ イ ミ ング数が出力データ のサンプル周期で指定さ れます。<br />

FFT のタイ ミング図<br />

154 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FFT v1_0<br />

FFT のタイ ミング特性<br />

64 ポイント<br />

256 ポイン ト<br />

1024 ポイン ト<br />

16 ポイン トの FFT の場合、 ブ ロ ッ ク は常に rfd (ready <strong>for</strong> data) ステートになり、 出力フレームが<br />

連続し て送信されます。 こ の結果、 停止周期はな く な り (stall = stall_0 = 0)、 タイミング図の frame<br />

変数はデフ ォル ト で 16 サンプル周期にな り ますが、 frame_0 = 84 サンプル周期でパイプラ イン遅<br />

延が発生し ます (最初の出力フ レームが出力さ れる までに時間がかか る ため)。<br />

ザイリンクス LogiCORE<br />

シングル メモリ ダブル メモリ トリプル メモリ<br />

stall_0 = 275<br />

stall = 275<br />

frame_0 = 277<br />

frame = 339<br />

stall_0 = 1074<br />

stall = 1074<br />

frame_0 = 1076<br />

frame = 1330<br />

stall_0 = 5170<br />

stall = 5170<br />

frame_0 = 5172<br />

frame = 6194<br />

stall_0 = 146<br />

stall = 128<br />

frame_0 = 276<br />

frame = 192<br />

stall_0 = 789<br />

stall = 768<br />

frame_0 = 1075<br />

frame = 1024<br />

stall_0 = 4117<br />

stall = 4096<br />

frame_0 = 5171<br />

frame = 5120<br />

このブロックでは、常にザイ リンクス LogiCORE FFT V1.0 が使用さ れます。 サポー ト さ れる ポ イ<br />

ント数は、N=16、 64、 256、 1024 です。 64、 256、 1024 ポイン トの FFT には、 LogiCORE Dual<br />

Port Block Memory を使用してインプリ メ ン ト された外部メモリ が含まれます。 メモリ ブロックの<br />

数 (1、 2、 3 のいずれか) によって、 インプリ メンテーショ ンのタイ ミ ング特性とサイズが決まり ま<br />

す。 LogiCORE の FFT では 16 ビットのデータしかサポート されませんが、<strong>System</strong> <strong>Generator</strong> の<br />

FFT ブロ ッ クではシ ミ ュ レーシ ョ ンですべてのデータ サイズがサポート されます。<br />

Virtex デバイ スへの FFT インプリ メンテーション詳細は、FFT の LogiCORE 情報を参照し て く だ<br />

さい。<br />

メモ : このブロックは、Virtex-II デバイ スではサポー ト されていません。 代わ り に FFT v3_1 ブロッ<br />

ク を使用し て く だ さ い。<br />

このブロックでは、 次のザイ リンクス LogiCORE コアが使用されます。<br />

stall_0 = 0<br />

stall = 0<br />

frame_0 = 406<br />

frame = 192<br />

stall_0 = 0<br />

stall = 0<br />

frame_0 = 1589<br />

frame = 768<br />

stall_0 = 0<br />

stall = 0<br />

frame_0 = 8246<br />

frame = 4096<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 155<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

ザイ リンクス<br />

LogiCORE<br />

FFT v1_0 16 Pt Complex<br />

Fast Fourier<br />

Trans<strong>for</strong>m<br />

64 Pt Complex<br />

Fast Fourier<br />

Trans<strong>for</strong>m<br />

256 Pt<br />

Complex Fast<br />

Fourier<br />

Trans<strong>for</strong>m<br />

1024 Pt<br />

Complex Fast<br />

Fourier<br />

Trans<strong>for</strong>m<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

156 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

V1.0 •<br />

V1.0 •<br />

V1.0 •<br />

V1.0 •<br />

II、<br />

II Pro<br />

4 5


FFT v3_1<br />

FFT v3_1<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

Cooley-Tukey 型アルゴ リズム<br />

ザイ リ ンクスの FFT v3_1 ブロッ クは、 Virtex4、 Virtex-II、 Virtex-II Pro、<br />

Spartan-3 デバイ スでのみサポー ト されます。 この FFT では、 離散フー リ エ<br />

変換 (DFT) を計算する効率的なアルゴ リ ズムが イ ンプ リ メ ン ト さ れます。<br />

N ポイント (N = 2m、 m = 4 - 14) の順方向または逆方向 DFT (IDFT) は、<br />

データ幅 8、 12、 16、 20、 または 24 を使用して表される N 複素数値のベク<br />

タ で計算 さ れます。 変換の計算には、 次の Cooley-Tukey 型アルゴ リ ズムが<br />

使用されます。<br />

複素ベク タ x(n) = [x(0), x(1), ..., x(N-1)] の N ポイン ト DFT は、ベク タ X(k) = [X(0), X(1), ..., X(N-<br />

1)] にな り ます。 K 番目のエレ メ ン ト は、 次の よ う に定義されます。<br />

逆方向 DFT (IDFT) は、 次のよ う に計算されます。<br />

ブロック インターフェイス<br />

さまざまなインプリ メンテーションおよびスケーリング モード に対するブロ ッ ク インターフェイ<br />

ス (FFT ア イ コ ンに表示 さ れる入力および出力など) には、 次のよ う な ものがあ り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 157<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

入力信号<br />

xn_re 入力データ ス ト リ ームの実数。 xn_re を駆動する信号は、 S-1<br />

に 2 進小数点が付いた S 幅の符号付きデータ型にでき ます (S<br />

= 8、 12、 16、 20 または 24)。<br />

xn_im 入力データ ス ト リ ームの虚数。 xn_im を駆動する信号は、 S-1<br />

に 2 進小数点が付いた S 幅の符号付きデータ型にでき ます (S<br />

= 8、 12、 16、 20 または 24)。<br />

start 各ベク タ フレームの開始を示し ます。 start 信号はパルス と し<br />

てアサートするか、 High に接続し て、 入力データ フレームの<br />

処理を開始する こ と がで き ます。 start を駆動する信号は、 ブー<br />

ル型にする必要があ り ます。<br />

unload 出力を自然な順序かビ ッ ト 反転順のど ち ら かで読み出すため<br />

に使用し ます。 unload ポー ト は、 [Radix-4 Burst I/O] または<br />

[Radix-2 Minimum Resources] アーキテクチャを イ ンプ リ メ ン<br />

ト する場合にのみ使用で き ます。 unload 信号は、 ブ ロ ッ ク が<br />

入力フ レームの処理を終了し た後にサンプ リ ング さ れます。 ブ<br />

ロックは、unload 信号が High にアサート される と自然な順序<br />

でデータを出力します。 start 信号が unload 信号よ り も前にア<br />

サート される と、 ブロ ッ クはデータをビッ ト反転順に出力し<br />

ます。 unload を駆動する信号は、 ブール型にする必要があ り<br />

ます。<br />

fwd 逆方向変換の場合は 0、 順方向変換の場合は 1 です。 fwd を駆<br />

動する信号は、 ブール型にする必要があ り ます。<br />

fwd_we アサー ト さ れる と 、 次の入力データ フレームのために、 入力<br />

ポー ト fwd か ら変換タ イ プを読み込みます。 fwd_we を駆動す<br />

る信号は、 ブール型にする必要があ り ます。<br />

scale_sch スケーリング ス ケジ ュールを入力データ フ レームに使用する<br />

ためのポート です。 scale_sch ポー ト は、 固定小数点を ス ケー<br />

リ ングする モー ド の場合にのみ使用で き ます。 scale_sch を駆<br />

動する信号は、0 に 2 進小数点が付いた S 幅の符号な し信号に<br />

する必要があ り ます ([Radix-2 Minimum Resources] の場合は<br />

S = 2 * log2N、 それ以外の場合は 2 * ceil(log2N/2))。<br />

scale_sch_we アサー ト さ れる と 、 次の入力データ フレームのために、 入力<br />

ポー ト scale_sch からスケーリング ス ケジ ュールを読み込みま<br />

す。 scale_sch_we ポー ト は、 固定小数点を ス ケー リ ングする<br />

モー ド の場合にのみ使用で き ます。 scale_sch_we を駆動する<br />

信号は、 ブール型にする必要があ り ます。<br />

nfft 次の入力データ フレームのポイント サ イ ズを提供し ます。 nfft<br />

ポー ト は、 [Enable dynamic trans<strong>for</strong>m size] がオンの場合にの<br />

み使用で き ます。 nfft を駆動する信号は、 0 に 2 進小数点が付<br />

いた S 幅 (S = log2N) の符号な し信号にする必要があ り ます。<br />

158 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FFT v3_1<br />

nfft_we アサート される と、 ブロッ クの現在の操作がリセット され、<br />

次の入力データ フ レームのために入力ポー ト nfft からポイン<br />

ト サ イ ズを読み込みます。 nfft_we ポー ト は、 [Enable<br />

dynamic trans<strong>for</strong>m size] がオンの場合にのみ使用で き ます。<br />

nfft_we を駆動する信号は、 ブール型にする必要があ り ます。<br />

メモ : xn_re および xn_im 信号は、 同じデータ型にする必要があ り ます。<br />

出力信号<br />

xk_re 出力データ ス ト リ ームの実数。 [Scaled] および [Block<br />

floating point] モー ド の場合、 xk_re は xn_re 入力 と 同じにな<br />

ります。 xk_re 信号の幅は、 [Unscaled] モード にする と、 2 進<br />

小数点 xn_re から左に (1+log2N) ビッ ト拡張します。<br />

xk_im 出力データ ス ト リ ームの虚数。 [Scaled] および [Block<br />

floating point] モー ド の場合、 xk_im は xn_im 入力 と 同じ にな<br />

ります。 xk_im 信号の幅は、 [Unscaled] モード にする と、 2 進<br />

小数点 xn_im から左に (1+log2N) ビッ ト拡張します。<br />

xn_index 入力データ の イ ンデ ッ ク ス を示し ます。 xn_index 信号は、0 に<br />

2 進小数点が付いた幅 log2N の符号な し信号と し てマーク さ<br />

れます。<br />

xk_index 出力データ の イ ンデ ッ ク ス を示し ます。 xk_index 信号は、0 に<br />

2 進小数点が付いた幅 log2N の符号な し信号と し てマーク さ<br />

れます。<br />

rfd start 信号がアサー ト さ れてか ら xn_index のカウン ト が N-1 に<br />

到達する までア ク テ ィ ブ High です。 rfd 信号はブール信号 と<br />

してマークされます。<br />

busy ブ ロ ッ ク が現在の入力データ フ レーム を処理する と き にア ク<br />

ティブ High にな り ます。 busy 信号は、 ブール信号 と し てマー<br />

クされます。<br />

vout 出力データ が有効か無効かを示し ます。 vout 信号は、 ブール<br />

信号 と し てマーク さ れます。<br />

edone ブ ロ ッ ク が処理されたデータ フ レーム を出力する 1 サンプル<br />

周期前にア ク テ ィ ブ High にな り ます。 edone は、 ブール信号<br />

としてマークされます。<br />

done ブ ロ ッ ク が処理されたデータ フ レーム を出力する と き にア ク<br />

ティブ High にな り ます。 done は、 ブール信号 と し てマー ク<br />

されます。<br />

ovflo [Scaled] モー ド で入力データ フ レーム を処理する間にオー<br />

バーフ ローが検出される と 、 出力データ フレームがアクティ<br />

ブ High 信号でマーク さ れます。 ovflo は、 ブール信号 と し て<br />

マーク されます。<br />

blk_exp [Block floating point] モー ド の場合、 出力データ フレームの<br />

指数を指定し ます。 blk_exp は、 2 進小数点が 0 のビッ ト幅 4<br />

の符号な し信号と し てマーク されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 159<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Implementation] : [Radix-4 Streaming I/O]、 [Radix-4 Burst I/O]、 [Radix-2 Minimum<br />

Resources]、 [Pipelined Streaming I/O] のいずれかを選択し ます。<br />

• [Number of sample points (N)] : N = 2(3..16) = 8 ~ 65536 の 1 つに長さ を変換し ます。 FFTx<br />

ブロックでは、[Radix-4 Streaming I/O] の場合は 64 ~ 8192、[Radix-4 Burst I/O] の場合は 64<br />

~ 65336、[Radix-2 Minimum Resources] と [Pipelined Streaming I/O] の場合は 8 ~ 65336 の<br />

サンプル ポイントがサポート されます。<br />

• [Output ordering] : 出力を自然な順序かビ ッ ト 反転順のど ち ら かに設定し ます。<br />

• [Scaling] : 出力データ型を [Unscaled]、[Scaled]、[Block floating point] のいずれかに選択し ま<br />

す。 インプリ メンテーションに [Radix-4 Streaming I/O] および [Pipelined Streaming I/O] を選<br />

択し た場合、 [Block floating point] は使用でき ません。<br />

• [Rounding mode] : [Truncation] または [Convergent rounding] を選択します。<br />

• [Phase factor bit width] : 位相係数のビ ッ ト 幅に 8、 12、 16、 20、 24 のいずれかを選択し ます。<br />

• [Enable dynamic trans<strong>for</strong>m size] : 入力データ フレームのポイント サイズをダイナミ ッ クに変<br />

更する オプシ ョ ンの入力ポー ト N および N_we を付ける こ とができます。<br />

• [Provide overflow port] : [Scaling] で [Scaled] を選択する と 、 オプシ ョ ンの出力ポー ト ovflo<br />

を付ける こ とができます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Optimize <strong>for</strong> speed using <strong>DSP</strong>48] : Virtex-4 の場合、 Xtreme <strong>DSP</strong> ス ラ イ スで複素乗算、 バタ<br />

フライ演算の加算/減算、 位相係数ジ ェ ネレータ の一部を計算で き ます。<br />

♦ [Butterfly arithmetic] : <strong>DSP</strong>48 を使用して、 バタフラ イ演算の加算と減算をインプ リ メ ン<br />

ト し ます。 こ のオプシ ョ ンは、 出力幅が 30 以下の場合にのみ使用でき ます。<br />

♦ [Complex multiplication] : 実質乗数を 3 ではな く 4 で構築し た複素乗算器を イ ンプ リ メ<br />

ン ト し ます。 こ れに よ り 、 複素乗算すべてが Xtreme <strong>DSP</strong> スライス内で計算されるので、<br />

ク ロ ッ ク 速度が高速にな り ます。 こ のオプシ ョ ン を使用する と 、 <strong>DSP</strong>48 の追加使用を最小<br />

限に抑えた ま ま、 ク ロ ッ ク 速度を最大限に上げる こ と がで き ます。<br />

♦ [Phase factor generation] : 各位相係数テーブルご と に 2 つの Xtreme <strong>DSP</strong> スライスを使用<br />

し て位相係数ジ ェ ネレータ を イ ンプ リ メ ン ト し ます。 位相係数のビ ッ ト 幅が大き く 、 ポ イ<br />

ント サイズが大きい場合に、 クロッ ク速度をさらに上げるこ とができます。<br />

• [Phase factor memory type] : 分散 RAM かブロ ッ ク RAM を選択し ます。 このオプショ ンは、<br />

サンプル ポイン ト 16 ~ 1024 の場合にのみ使用でき ます。 このオプシ ョ ンは、 イ ンプ リ メ ン<br />

テーシ ョ ンが [Pipelined Streaming I/O] の場合は使用でき ません。<br />

• [Data memory type] : 分散 RAM かブロ ッ ク RAM を選択します。 このオプションは、 サンプ<br />

ル ポイント 16 ~ 1024 の場合にのみ使用でき ます。こ のオプシ ョ ンは、イ ンプ リ メ ンテーシ ョ<br />

ンが [Pipelined Streaming I/O] の場合は使用でき ません。<br />

160 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FFT v3_1<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

• [Number of stages using block RAM] : ブロッ ク RAM と分散 RAM (一部のみ) にデータおよ<br />

び位相係数を格納し ます。 このオプションは、インプリ メンテーションに [Pipelined Streaming<br />

I/O] を選択し た場合にのみ使用で き ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ブロックのタイミング<br />

FFT ブロッ クの制御ビヘイビアやタイ ミ ングの詳細は、 コアのデータシート を参照してください。<br />

ザイリンクス LogiCORE<br />

このブロッ クでは、次のザイ リ ンクス LogiCORE の Fast Fourier Trans<strong>for</strong>m コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

FFT v3_1 Fast Fourier<br />

Trans<strong>for</strong>m<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 161<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V3.1 • • •<br />

4 5<br />

R


FFT v3_2<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

Cooley-Tukey 型アルゴ リズム<br />

ザイ リ ンクスの FFT v3_2 ブロッ クは、 Virtex4、 Virtex-II、 Virtex-II Pro、<br />

Spartan-3 デバイ スでのみサポー ト されます。 この FFT では、 離散フー リ エ<br />

変換 (DFT) を計算する効率的なアルゴ リ ズムが イ ンプ リ メ ン ト さ れます。<br />

N ポイント (N = 2m、 m = 4 - 14) の順方向または逆方向 DFT (IDFT) は、<br />

データ幅 8 ~ 24 を使用して表される N 複素数値のベ ク タ で計算さ れます。<br />

変換の計算には、 次の Cooley-Tukey 型アルゴ リ ズムが使用されます<br />

複素ベク タ x(n) = [x(0), x(1), ..., x(N-1)] の N ポイン ト DFT は、ベク タ X(k) = [X(0), X(1), ..., X(N-<br />

1)] にな り ます。 K 番目のエレ メ ン ト は、 次の よ う に定義されます。<br />

逆方向 DFT (IDFT) は、 次のよ う に計算されます。<br />

ブロック インターフェイス<br />

さまざまなインプリ メンテーションおよびスケーリング モード に対するブロ ッ ク インターフェイ<br />

ス (FFT ア イ コ ンに表示 さ れる入力および出力など) には、 次のよ う な ものがあ り ます。<br />

162 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FFT v3_2<br />

入力信号<br />

xn_re 入力データ ス ト リ ームの実数。 xn_re を 駆動する 信号は、 S-1 に 2 進小数<br />

点が付いた S 幅の符号付き データ 型にでき ま す (S は 8 ~ 24 の値です)。<br />

例 : Fix_8_7、 Fix_24_23<br />

xn_im 入力データ スト リ ームの虚数。 xn_im を 駆動する 信号は、 S-1 に 2 進小数<br />

点が付いた S 幅の符号付き データ 型にでき ま す (S は 8 ~ 24 の値です)。<br />

例 : Fix_8_7、 Fix_24_23<br />

start 各ベク タ フレームの開始を示し ます。 start 信号はパルス と し てアサー ト<br />

するか、 High に接続し て、 入力データ フレームの処理を開始する こ と<br />

ができ ます。 start を駆動する信号は、 ブール型にする必要があ り ます。<br />

unload 出力を自然な順序かビ ッ ト 反転順のど ち ら かで読み出すために使用し ま<br />

す。 unload ポー ト は、 [Radix-4 Burst I/O] または [Radix-2 Minimum<br />

Resources] アーキテ ク チ ャ を イ ンプ リ メ ン ト する場合にのみ使用で き ま<br />

す。 unload 信号は、 ブ ロ ッ ク が入力フ レームの処理を終了し た後にサン<br />

プリングされます。 ブロッ クは、 unload 信号が High にアサート される<br />

と自然な順序でデータを出力します。 start 信号が unload 信号よ り も前<br />

にアサート される と、 ブロ ッ クはデータをビッ ト反転順に出力します。<br />

unload を駆動する信号は、 ブール型にする必要があ り ます。<br />

fwd 逆方向変換の場合は 0、 順方向変換の場合は 1 です。 fwd を駆動する信<br />

号は、 ブール型にする必要があ り ます。<br />

fwd_we アサー ト さ れる と 、 次の入力データ フレームのために、入力ポート fwd<br />

か ら変換タ イ プを読み込みます。 fwd_we を駆動する信号は、 ブール型<br />

にする必要があ り ます。<br />

scale_sch スケーリング ス ケジ ュールを入力データ フ レームに使用する ための<br />

ポー ト です。 scale_sch ポー ト は、 固定小数点を ス ケー リ ングする モー ド<br />

の場合にのみ使用で き ます。 scale_sch を駆動する信号は、 0 に 2 進小数<br />

点が付いた S 幅の符号な し信号にする必要があ り ます ([Radix-2<br />

Minimum Resources] の場合は S = 2 * log2N、 それ以外の場合は 2 *<br />

ceil(log2N/2))。<br />

scale_sch_we アサー ト さ れる と 、 次の入力データ フレームのために、 入力ポート<br />

scale_sch からスケーリング ス ケジ ュールを読み込みます。<br />

scale_sch_we ポー ト は、 固定小数点を ス ケー リ ングする モー ド の場合<br />

にのみ使用で き ます。 scale_sch_we を駆動する信号は、 ブール型にする<br />

必要があ り ます。<br />

nfft 次の入力データ フレームのポイント サ イ ズを提供し ます。 nfft ポー ト<br />

は、[Enable dynamic trans<strong>for</strong>m size] がオンの場合にのみ使用で き ます。<br />

nfft を駆動する信号は、 0 に 2 進小数点が付いた S 幅 (S = log2N) の符<br />

号な し信号にする必要があ り ます。<br />

nfft_we アサート されると、 ブロッ クの現在の操作がリセッ ト され、 次の入力<br />

データ フ レームのために入力ポー ト nfft からポイン ト サ イ ズを読み込<br />

みます。 nfft_we ポー ト は、 [Enable dynamic trans<strong>for</strong>m size] がオンの場<br />

合にのみ使用で き ます。 nfft_we を駆動する信号は、 ブール型にする必<br />

要があ り ます。<br />

メモ : xn_re および xn_im 信号は、 同じデータ型にする必要があ り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 163<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

出力信号<br />

ブロック パラ メータ<br />

xk_re 出力データ ス ト リ ームの実数。 [Scaled] および [Block floating point]<br />

モー ド の場合、 xk_re は xn_re 出力 と 同じ にな り ます。 xk_re 信号の幅<br />

は、 [Unscaled] モード にする と、 2 進小数点 xn_re から左に (1+log2N)<br />

ビッ ト拡張します。<br />

xk_im 出力データ ス ト リ ームの虚数。 [Scaled] および [Block floating point]<br />

モー ド の場合、 xk_im は xn_im 出力 と 同じにな り ます。 xk_im 信号の幅<br />

は、 [Unscaled] モード にする と、 2 進小数点 xn_im から左に (1+log2N)<br />

ビッ ト拡張します。<br />

xn_index 入力データ の イ ンデ ッ ク ス を示し ます。 xn_index 信号は、 0 に 2 進小数<br />

点が付いた幅 log2N の符号な し信号と し てマーク されます。<br />

xk_index 出力データ の イ ンデ ッ ク ス を示し ます。 xk_index 信号は、 0 に 2 進小数<br />

点が付いた幅 log2N の符号な し信号と し てマーク されます。<br />

rfd start 信号がアサート さ れてから xn_index のカウ ント が N-1 に到達する ま<br />

でアク ティ ブ High です。 rfd 信号はブール信号と し てマーク さ れま す。<br />

busy ブ ロ ッ ク が現在の入力データ フ レーム を処理する と き にア ク テ ィ ブ<br />

High にな り ます。 busy 信号は、 ブール信号 と し てマーク さ れます。<br />

vout 出力データ が有効か無効かを示し ます。 vout 信号は、 ブール信号 と し て<br />

マーク されます。<br />

edone ブロ ッ ク が処理さ れたデータ フ レ ームを出力する 1 サンプル周期前にア<br />

クティブ High になり ます。 edone は、 ブール信号と し てマーク さ れま す。<br />

done ブ ロ ッ ク が処理さ れたデータ フ レーム を出力する と き にア ク テ ィ ブ<br />

High にな り ます。 done は、 ブール信号 と し てマーク されます。<br />

ovflo [Scaled] モー ド で入力データ フ レーム を処理する間にオーバーフ ローが<br />

検出さ れる と 、 出力データ フレームがアクティブ High 信号でマーク さ<br />

れます。 ovflo は、 ブール信号 と し てマーク されます。<br />

blk_exp [Block floating point] モー ド の場合、 出力データ フレームの指数を指定<br />

します。blk_exp は、 2 進小数点が 0 のビッ ト幅 4 の符号な し信号と し<br />

てマーク されます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Implementation] : [Radix-4 Streaming I/O]、 [Radix-4 Burst I/O]、 [Radix-2 Minimum<br />

Resources]、 [Pipelined Streaming I/O] のいずれかを選択し ます。<br />

• [Number of sample points (N)] : N = 2(3..16) = 8 ~ 65536 の 1 つに長さ を変換し ます。 FFTx<br />

ブロックでは、[Radix-4 Streaming I/O] の場合は 64 ~ 8192、[Radix-4 Burst I/O] の場合は 64<br />

~ 65336、[Radix-2 Minimum Resources] と [Pipelined Streaming I/O] の場合は 8 ~ 65336 の<br />

サンプル ポイントがサポート されます。<br />

164 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FFT v3_2<br />

• [Output ordering] : 出力を自然な順序かビ ッ ト 反転順のど ち ら かに設定し ます。<br />

• [Scaling] : 出力データ型を [Unscaled]、[Scaled]、[Block floating point] のいずれかに選択し ま<br />

す。 インプリ メンテーションに [Radix-4 Streaming I/O] および [Pipelined Streaming I/O] を選<br />

択し た場合、 [Block floating point] は使用でき ません。<br />

• [Rounding mode] : [Truncation] または [Convergent rounding] を選択します。<br />

• [Phase factor bit width] : 位相係数のビ ッ ト 幅に 8、 12、 16、 20、 24 のいずれかを選択し ます。<br />

• [Enable dynamic trans<strong>for</strong>m size] : 入力データ フレームのポイント サイズをダイナミ ッ クに変<br />

更する オプシ ョ ンの入力ポー ト N および N_we を付ける こ とができます。<br />

• [Provide overflow port] : [Scaling] で [Scaled] を選択する と 、 オプシ ョ ンの出力ポー ト ovflo<br />

を付ける こ とができます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Optimize <strong>for</strong> speed using <strong>DSP</strong>48] : Virtex-4 の場合、 Xtreme <strong>DSP</strong> ス ラ イ スで複素乗算、 バタ<br />

フライ演算の加算/減算、 位相係数ジ ェ ネレータ の一部を計算で き ます。<br />

♦ [Butterfly arithmetic] : <strong>DSP</strong>48 を使用して、 バタフラ イ演算の加算と減算をインプ リ メ ン<br />

ト し ます。 こ のオプシ ョ ンは、 出力幅が 30 以下の場合にのみ使用でき ます。<br />

♦ [Complex multiplication] : 実質乗数を 3 ではな く 4 で構築し た複素乗算器を イ ンプ リ メ<br />

ン ト し ます。 こ れに よ り 、 複素乗算すべてが Xtreme <strong>DSP</strong> スライス内で計算されるので、<br />

ク ロ ッ ク 速度が高速にな り ます。 こ のオプシ ョ ン を使用する と 、 <strong>DSP</strong>48 の追加使用を最小<br />

限に抑えた ま ま、 ク ロ ッ ク 速度を最大限に上げる こ と がで き ます。<br />

♦ [Phase factor generation] : 各位相係数テーブルご と に 2 つの Xtreme <strong>DSP</strong> スライスを使用<br />

し て位相係数ジ ェ ネレータ を イ ンプ リ メ ン ト し ます。 位相係数のビ ッ ト 幅が大き く 、 ポ イ<br />

ント サイズが大きい場合に、 クロッ ク速度をさらに上げるこ とができます。<br />

• [Phase factor memory type] : 分散 RAM かブロ ッ ク RAM を選択し ます。 このオプショ ンは、<br />

サンプル ポイン ト 16 ~ 1024 の場合にのみ使用でき ます。 このオプシ ョ ンは、 イ ンプ リ メ ン<br />

テーシ ョ ンが [Pipelined Streaming I/O] の場合は使用でき ません。<br />

• [Data memory type] : 分散 RAM かブロ ッ ク RAM を選択します。 このオプションは、 サンプ<br />

ル ポイント 16 ~ 1024 の場合にのみ使用でき ます。こ のオプシ ョ ンは、イ ンプ リ メ ンテーシ ョ<br />

ンが [Pipelined Streaming I/O] の場合は使用でき ません。<br />

• [Number of stages using block RAM] : ブロッ ク RAM と分散 RAM (一部のみ) にデータおよ<br />

び位相係数を格納し ます。 このオプションは、インプリ メンテーションに [Pipelined Streaming<br />

I/O] を選択し た場合にのみ使用で き ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ブロックのタイミング<br />

FFT ブロッ クの制御ビヘイビアやタイ ミ ングの詳細は、 コアのデータシート を参照してください。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 165<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

ザイリンクス LogiCORE<br />

このブロッ クでは、次のザイ リ ンクス LogiCORE の Fast Fourier Trans<strong>for</strong>m コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

FFT v3_2 Fast Fourier<br />

Trans<strong>for</strong>m<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

166 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V3.2 • • •<br />

4 5


FFT v4_1<br />

FFT v4_1<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

Cooley-Tukey 型アルゴ リズム<br />

ザイ リ ンクスの FFT v4_1 ブロッ クは、 Virtex-5、 Virtex4、 Virtex-II、<br />

Virtex-II Pro、 Spartan-3、 Spartan-3E、 Spartan-3A デバイ スでのみサポー<br />

トされます。 この FFT では、 離散フー リ エ変換 (DFT) を計算する効率的な<br />

アルゴ リ ズムがイ ンプ リ メ ン ト されます。<br />

N ポイント (N = 2m、 m = 4 - 14) の順方向または逆方向 DFT (IDFT) は、<br />

データ幅 8 ~ 24 を使用して表される N 複素数値のベ ク タ で計算さ れます。<br />

変換の計算には、 次の Cooley-Tukey 型アルゴ リ ズムが使用されます<br />

複素ベク タ x(n) = [x(0), x(1), ..., x(N-1)] の N ポイン ト DFT は、ベク タ X(k) = [X(0), X(1), ..., X(N-<br />

1)] にな り ます。 K 番目のエレ メ ン ト は、 次の よ う に定義されます。<br />

逆方向 DFT (IDFT) は、 次のよ う に計算されます。<br />

ブロック インターフェイス<br />

さまざまなインプリ メンテーションおよびスケーリング モード に対するブロ ッ ク インターフェイ<br />

ス (FFT ア イ コ ンに表示 さ れる入力および出力など) には、 次のよ う な ものがあ り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 167<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

入力信号<br />

xn_re 入力データ ス ト リ ームの実数。 xn_re を 駆動する 信号は、 S-1 に 2 進小数<br />

点が付いた S 幅の符号付き データ 型にでき ま す (S は 8 ~ 24 の値です)。<br />

例 : Fix_8_7、 Fix_24_23<br />

xn_im 入力データ スト リ ームの虚数。 xn_im を 駆動する 信号は、 S-1 に 2 進小数<br />

点が付いた S 幅の符号付き データ 型にでき ま す (S は 8 ~ 24 の値です)。<br />

例 : Fix_8_7、 Fix_24_23<br />

start 各ベク タ フレームの開始を示し ます。 start 信号はパルス と し てアサー ト<br />

するか、 High に接続し て、 入力データ フレームの処理を開始する こ と<br />

ができ ます。 start を駆動する信号は、 ブール型にする必要があ り ます。<br />

unload 出力を自然な順序で読み出すために使用し ます。 unload ポー ト は、<br />

[Radix-4 Burst I/O]、[Radix-2 Burst I/O] または [Radix-2 Lite Burst I/O]<br />

アーキテ ク チ ャ を イ ンプ リ メ ン ト する場合にのみ使用で き ます。 unload<br />

信号は、 ブ ロ ッ ク が入力フ レームの処理を終了し た後にサンプ リ ング さ<br />

れます。 ブロッ クは、 unload 信号が High にアサート される と自然な順<br />

序でデータ を出力し ます。 start 信号が unload 信号よ り も前にアサー ト<br />

さ れる と 、 ブ ロ ッ ク はデータ を ビ ッ ト 反転順に出力し ます。 unload を駆<br />

動する信号は、 ブール型にする必要があ り ます。<br />

fwd 逆方向変換の場合は 0、 順方向変換の場合は 1 です。 fwd を駆動する信<br />

号は、 ブール型にする必要があ り ます。 デフォル ト では FFT は順方向で<br />

変換さ れます。<br />

fwd_we アサー ト さ れる と 、 次の入力データ フレームのために、入力ポート fwd<br />

か ら変換タ イ プを読み込みます。 fwd_we を駆動する信号は、 ブール型<br />

にする必要があ り ます。<br />

scale_sch スケーリング ス ケジ ュールを入力データ フ レームに使用する ための<br />

ポー ト です。 scale_sch ポー ト は、 固定小数点を ス ケー リ ングする モー ド<br />

の場合にのみ使用で き ます。 scale_sch を駆動する信号は、 0 に 2 進小数<br />

点が付いた S 幅の符号な し信号にする必要があ り ます ([Radix-2 Burst<br />

I/O] または [Radix-2 Lite Burst I/O] の場合は S = 2 * log2N、 それ以外<br />

の場合は 2 * ceil(log2N/2))。<br />

scale_sch_we アサー ト さ れる と 、 次の入力データ フレームのために、 入力ポート<br />

scale_sch からスケーリング ス ケジ ュールを読み込みます。<br />

scale_sch_we ポー ト は、 固定小数点を ス ケー リ ングする モー ド の場合<br />

にのみ使用で き ます。 scale_sch_we を駆動する信号は、 ブール型にする<br />

必要があ り ます。<br />

nfft 次の入力データ フレームのポイント サ イ ズを提供し ます。 nfft ポー ト<br />

は、[Enable dynamic trans<strong>for</strong>m size] がオンの場合にのみ使用で き ます。<br />

nfft を駆動する信号は、 0 に 2 進小数点が付いた幅 5 の符号な し信号、<br />

UFix_5_0 にする必要があ り ます。<br />

nfft_we アサート されると、 ブロッ クの現在の操作がリセッ ト され、 次の入力<br />

データ フ レームのために入力ポー ト nfft からポイン ト サ イ ズを読み込<br />

みます。 nfft_we ポー ト は、 [Enable dynamic trans<strong>for</strong>m size] がオンの場<br />

合にのみ使用で き ます。 nfft_we を駆動する信号は、 ブール型にする必<br />

要があ り ます。<br />

168 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FFT v4_1<br />

出力信号<br />

ブロック パラ メータ<br />

メモ : xn_re および xn_im 信号は、 同じデータ型にする必要があ り ます。<br />

xk_re 出力データ ス ト リ ームの実数。 [Scaled] および [Block floating point]<br />

モー ド の場合、 xk_re は xn_re 出力 と 同じ にな り ます。 xk_re 信号の幅<br />

は、 [Unscaled] モード にする と、 2 進小数点 xn_re から左に (1+log2N)<br />

ビッ ト拡張します。<br />

xk_im 出力データ ス ト リ ームの虚数。 [Scaled] および [Block floating point]<br />

モー ド の場合、 xk_im は xn_im 入力 と 同じにな り ます。 xk_im 信号の幅<br />

は、 [Unscaled] モード にする と、 2 進小数点 xn_im から左に (1+log2N)<br />

ビッ ト拡張します。<br />

xn_index 入力データ の イ ンデ ッ ク ス を示し ます。 xn_index 信号は、 0 に 2 進小数<br />

点が付いた幅 log2N の符号な し信号と し てマーク されます。<br />

xk_index 出力データ の イ ンデ ッ ク ス を示し ます。 xk_index 信号は、 0 に 2 進小数<br />

点が付いた幅 log2N の符号な し信号と し てマーク されます。<br />

rfd start 信号がアサート さ れてから xn_index のカウ ント が N-1 に到達する ま<br />

でアク ティ ブ High です。 rfd 信号はブール信号と し てマーク さ れま す。<br />

busy ブ ロ ッ ク が現在の入力データ フ レーム を処理する と き にア ク テ ィ ブ<br />

High にな り ます。 busy 信号は、 ブール信号 と し てマーク さ れます。<br />

vout 出力データ が有効か無効かを示し ます。 vout 信号は、 ブール信号 と し て<br />

マーク されます。<br />

edone ブロ ッ ク が処理さ れたデータ フ レ ームを出力する 1 サンプル周期前にア<br />

クティブ High になり ます。 edone は、 ブール信号と し てマーク さ れま す。<br />

done ブ ロ ッ ク が処理さ れたデータ フ レーム を出力する と き にア ク テ ィ ブ<br />

High にな り ます。 done は、 ブール信号 と し てマーク されます。<br />

ovflo [Scaled] モー ド で入力データ フ レーム を処理する間にオーバーフ ローが<br />

検出さ れる と 、 出力データ フレームがアクティブ High 信号でマーク さ<br />

れます。 ovflo は、 ブール信号 と し てマーク されます。<br />

blk_exp [Block floating point] モー ド の場合、 出力データ フレームの指数を指定<br />

します。blk_exp は、 2 進小数点が 0 のビッ ト幅 5 の符号な し信号と し<br />

てマーク されます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Implementation] : [Radix-4 Streaming I/O]、 [Radix-4 Burst I/O]、 [Radix-2 Minimum<br />

Resources]、 [Pipelined Streaming I/O] のいずれかを選択し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 169<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

• [Number of sample points (N)] : N = 2 (3..16) = 8 - 65536 の 1 つに長さ を変換し ます。 FFTx ブ<br />

ロックでは、[Radix-4 Streaming I/O] の場合は 64 - 8192、 [Radix-4 Burst I/O] の場合は 8 -<br />

65336、 [Radix-2 Minimum Resources] と [Pipelined Streaming I/O]の場合は 8 - 65336 のサン<br />

プル ポイントがサポート されます。<br />

• [Output ordering] : 出力を自然な順序かビ ッ ト 反転順のど ち ら かに設定し ます。<br />

• [Scaling] : 出力データ型を [Unscaled]、[Scaled]、[Block floating point] のいずれかに選択し ま<br />

す。 [Block floating point] は、 イ ンプ リ メ ン テーシ ョ ンに [Pipelined Streaming I/O] を選択し<br />

た場合にのみ使用で き ます。<br />

• [Rounding mode] : [Truncation] または [Convergent rounding] を選択します。<br />

• [Phase factor bit width] : 位相係数のビ ッ ト 幅に 8 ~ 24 のいずれかを選択し ます。<br />

• [Enable dynamic trans<strong>for</strong>m size] : 入力データ フレームのポイント サイズをダイナミ ッ クに変<br />

更する オプシ ョ ンの入力ポー ト nfft および nfft_we を付ける こ とができます。<br />

• [Provide overflow port] : [Scaling] で [Scaled] を選択する と 、 オプシ ョ ンの出力ポー ト ovflo<br />

を付ける こ とができます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Optimize <strong>for</strong> speed using <strong>DSP</strong>48] : Virtex-4 および Virtex-5 の場合、 Xtreme <strong>DSP</strong> スライスで<br />

複素乗算、 バタ フ ラ イ演算の加算/減算を計算で き ます。<br />

♦ [Butterfly arithmetic] : <strong>DSP</strong>48 を使用して、 バタフラ イ演算の加算と減算をインプ リ メ ン<br />

ト し ます。 こ のオプシ ョ ンは、 出力幅が 30 以下の場合に、 Virtex-4 でのみ使用で き ます。<br />

Virtex-5 の場合、 こ の機能はすべての出力幅で使用で き ます。<br />

♦ [Complex multiplication] : 実質乗数を 3 ではな く 4 で構築し た複素乗算器を イ ンプ リ メ<br />

ン ト し ます。 こ れに よ り 、 複素乗算すべてが Xtreme <strong>DSP</strong> スライス内で計算されるので、<br />

ク ロ ッ ク 速度が高速にな り ます。 こ のオプシ ョ ン を使用する と 、 <strong>DSP</strong>48 の追加使用を最小<br />

限に抑えた ま ま、 ク ロ ッ ク速度を最大限に上げる こ と がで き ます。 このオプションは、<br />

Virtex-4 でのみ使用で き ます。 Virtex-5 の場合は、 常に選択されます。<br />

• [Phase factor memory type] : 分散 RAM かブロ ッ ク RAM を選択し ます。 このオプショ ンは、<br />

サンプル ポイン ト 16 ~ 1024 の場合にのみ使用でき ます。 このオプシ ョ ンは、 イ ンプ リ メ ン<br />

テーシ ョ ンが [Pipelined Streaming I/O] の場合は使用でき ません。<br />

• [Data memory type] : 分散 RAM かブロ ッ ク RAM を選択します。 このオプションは、 サンプ<br />

ル ポイント 16 ~ 1024 の場合にのみ使用でき ます。こ のオプシ ョ ンは、イ ンプ リ メ ンテーシ ョ<br />

ンが [Pipelined Streaming I/O] の場合は使用でき ません。<br />

• [Number of stages using block RAM] : ブロッ ク RAM と分散 RAM (一部のみ) にデータおよ<br />

び位相係数を格納し ます。 このオプションは、インプリ メンテーションに [Pipelined Streaming<br />

I/O] を選択し た場合にのみ使用で き ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ブロックのタイミング<br />

FFT ブロッ クの制御ビヘイビアやタイ ミ ングの詳細は、 コアのデータシート を参照してください。<br />

170 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FFT v4_1<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

ザイリンクス LogiCORE<br />

このブロッ クでは、次のザイ リ ンクス LogiCORE の Fast Fourier Trans<strong>for</strong>m コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

FFT v4_1 Fast Fourier<br />

Trans<strong>for</strong>m<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 171<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5<br />

V4.1 • • • • • •<br />

R


FIFO<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Control Logic]、 [Memory]、 [Index] ライブラリにリストさ<br />

れています。<br />

ザイ リ ンクスの FIFO ブロックは、 FIFO メモリ キューをインプリ メント します。<br />

書き込みイ ネーブル入力が 1 になる と、 このモジュールのデータ入力ポート の値が<br />

次の使用可能な空の メ モ リ ロケーシ ョ ンに書き込まれます。 読み出し イ ネーブル入<br />

力ポート をアサートする と、 データが書き込まれる順番にデータ出力ポート (dout)<br />

を通って FIFO か ら読み出 さ れます。 FIFO はブロ ッ ク または分散 RAM を使用し<br />

てインプリ メントできます。<br />

未使用の ロ ケーシ ョ ンがモジ ュールの内部 メ モ リ に残っていない場合、 出力ポー ト<br />

full が 1 にアサー ト されます。 出力ポー ト percent_full は、フルの FIFO のパーセン ト がユーザー指<br />

定の精度で表示されます。 empty 出力ポー ト は、 FIFO が空にな る と アサー ト されます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Depth] : 格納で き る ワー ド 数。<br />

• [Bits of precision to use <strong>for</strong> %full signal] : %full ポー ト のビ ッ ト 幅を指定し ます。 こ の符号な<br />

し出力の 2 進小数点は、 常にワー ド の最上部にあ り ます。 こ のため、 た と えば精度が 1 に設定<br />

されると、 出力は 0.0 と 0.5 の 2 つの値を取 り 込みます。 こ の場合、 0.5 は FIFO が少な く と<br />

も 50% フルである こ と を示しています。<br />

[Implementation] タブ<br />

• [Memory Type] : FIFO の FPGA への イ ンプ リ メ ンテーシ ョ ン方法を指定し ます。 ブ ロ ッ ク<br />

RAM か分散 RAM のいずれかを選択で き ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 ザイ リンクス LogiCORE FIFO <strong>Generator</strong> コアを使用してインプリ メント され<br />

ます。<br />

ザイ リンクス<br />

LogiCORE<br />

FIFO Synchronous<br />

FIFO<br />

FIFO<br />

<strong>Generator</strong><br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

172 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V5.0 • • • • •<br />

4 5<br />

V3.3 • • •


FIR Compiler v1_0<br />

FIR Compiler v1_0<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

ブロック インターフェイス<br />

ザイ リンクス FIR Compiler v1_0 ブロックは、高速 MAC ベースの FIR フィルタ<br />

をインプリ メント します。 こ のブ ロ ッ ク は、 入力データ のス ト リ ーム を受信し、<br />

フ ィ ルタ の コ ン フ ィ ギ ュ レーシ ョ ンに応じ てフ ィ ルタ処理し た結果を、 固定の遅<br />

延で出力し ます。<br />

このフィルタは、カスケード接続された <strong>DSP</strong>48 ス ラ イ ス を次の図の よ う に使用し<br />

てインプリ メント されます。<br />

FIR Compiler v1_0 ブロッ クには、すべてのフィルタ コ ン フ ィ ギ ュ レーシ ョ ンで表示 さ れる din お<br />

よび dout に加え、 さ まざまなオプシ ョ ンのポー ト を含める こ と ができ ます。<br />

• din : FIR Compiler のデータ入力ポー ト 。 次の図に示すとお り 、 こ のポー ト を介し てすべての<br />

チャネルのデータが FIR Compiler へマルチプレ クサ と同じ よ う に、 1 度に送信されます。 こ<br />

れは、デシ メ ーシ ョ ン フィルタのマルチチャネル データ入力および出力の タ イ ミ ング図で、サ<br />

ンプル レー ト変更は 2 で、 ハード ウ ェア オーバーサンプ リ ングは 2 になっています。<br />

• vin : 有効入力ポー ト 。 din ポー ト の入力が有効 (High) か無効 (Low) かを示します。 マルチ<br />

レート のマルチチャネル フ ィ ル タの場合、vin ポー ト を駆動する信号がチ ャ ネル 0 のデータ サ<br />

ンプルの間 High であ る と 、 その他すべてのチ ャ ネルの対応する サンプルが ク ロ ッ ク 入力 さ れ<br />

るまで、High のままである必要があり ます (図を参照)。 つま り、 最初のチャネルから最後の<br />

チャネルまでの各チャネルのデータ サンプルは、 連続したク ロ ッ ク サイクルで送信される必<br />

要があ り 、 vin ポー ト はこれらすべてのサイ クルで High である必要があ り ます。 この規則に<br />

従っていないと、 シ ミ ュレーシ ョ ンでエラーが発生し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 173<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック パラ メータ<br />

• en : 同期イ ネーブル ポー ト<br />

• rst : 同期 リ セ ッ ト ポー ト<br />

• rfd : ready <strong>for</strong> data ポー ト 。 FIR ブ ロ ッ ク では、 新しい入力データが受信で き る状態にな る と 、<br />

こ のポー ト の出力が High にな り ます。<br />

• dout : FIR Compiler のデータ出力ポー ト 。 こ のポー ト を介し て、 フ ィ ルタ処理さ れたすべての<br />

チ ャ ネルの出力データ がマルチプレ ク サの よ う に 1 度に出力 さ れます。<br />

• vout : dout ポー ト の出力データ が有効 (High) か無効 (Low) かを示します。<br />

• core_rdy : ブ ロ ッ ク が初期化さ れ、 入力ポー ト のデータ を受け取る準備がで き たかど う かを示<br />

すポー ト です。 core_rdy が コ アに よ っ てアサー ト さ れる まで、 ブ ロ ッ ク のすべての入力は無視<br />

されます。 こ れは、 1 回限 り の制御信号で、 シミュレーションが開始されると Low にな り、 コ<br />

アのスタート アップ レ イ テンシに対応する時間が経過する と 、High にな り ます。 こ の信号は 1<br />

度 High になる と、残りのランタ イム中も High のままです。 このポートは、rst と rfd ポー ト が<br />

使用されていないと使用できません。<br />

• chan_out : dout ポー ト の出力データ があ る チャ ネルがどれかを示し ます。<br />

• chan_in : どのチャ ネルの入力データ サンプルを次の din ポー ト に駆動する かを示し ます。 din<br />

の入力サンプルがコ アに送信される と 、 即座にこ の出力ポー ト の値が変更され、 データ入力の<br />

必要な次のチ ャ ネルを示し ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Filter type] : フ ィ ルタ を次のいずれかに設定する こ と がで き ます。<br />

♦ [SingleRate] : 入力 と 出力のデータ レー ト が同じにな り ます。<br />

♦ [Decimation] : 出力のデータ レー ト が入力よ り も [Sample rate change] で指定し た係数分<br />

だけ遅く な り ます。<br />

♦ [Interpolation] : 出力のデータ レー ト が入力よ り も [Sample rate change] で指定し た係数<br />

分だけ速 く な り ます。<br />

• [Sample rate change] : こ こ で指定し た係数に よ って、出力のサンプル レー ト が入力 と 比較し て<br />

変更 さ れます。 このパラ メータは、 [Filter type] が [Decimation] または [Interpolation] に設定<br />

されると使用できます。 [Decimation] の場合は、 出力のサンプル レー ト が [Sample rate<br />

change] の係数分だけ入力か ら削減 さ れます。 [Interpolation] の場合は、出力のサンプル レート<br />

が [Sample rate change] の係数分だけ入力か ら増加さ れます。<br />

• [Number of channels] : FIR Compiler ブ ロ ッ ク で処理さ れるデータ チャネルの数を指定できま<br />

す。 複数のチ ャ ネル データ がマルチプレ ク サ と 同じ よ う に 1 度にコ アに渡されます。 サポー ト<br />

さ れるチ ャ ネル数は、 最大で 16 です。<br />

• [Hardware over-sampling rate] : 入力データ レー ト と 出力データ レー ト の高速な方 と 内部コ ア<br />

のレー ト 間の比率を指定し ます。 このオーバークロック レート によって、フ ィルタの各 <strong>DSP</strong>48<br />

に組み込まれた フ ィ ルタ タ ッ プの数が決定 さ れます。<br />

• [Coefficient vector] : 指定し た係数ベ ク タ が MATLAB 行のベク タにな り ます。 タップ数は、<br />

MATLAB 行のベクタ長からから推論されます。 フィルタに使用される <strong>DSP</strong>48 の数は、 フ ィ ル<br />

174 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FIR Compiler v1_0<br />

タ コ ン フ ィ ギ ュ レーシ ョ ンの係数の数 と 、指定し た係数ス ト ラ ク チ ャ、ハー ド ウ ェ ア オーバー<br />

サンプ リ ング係数に よ っ て決ま り ます。<br />

• [Structure] : 係数のス ト ラ ク チャ を指定し ます。 係数のス ト ラ ク チ ャ に よ って、コ アが最適化さ<br />

れ、特定のハー ド ウ ェ ア コンフィギュレーションをインプリ メントするのに必要なハードウェ<br />

ア容量が削減されます。 ス ト ラ ク チ ャ には、 次のいずれかを選択で き ます。<br />

♦ Inferred from Coefficients<br />

[Ports] タブ<br />

♦ Non-Symmetric<br />

♦ Symmetric<br />

♦ Negative Symmetric<br />

♦ Half Band<br />

係数のベク タは、 こ こ で指定し たス ト ラ ク チャ と 一致し てい る必要があ り ます。 ただ し、<br />

[Inferred from Coefficients] を選択し た場合、 ス ト ラ クチャはこれらの係数から自動的に決定<br />

さ れるので、 その必要はあ り ません。<br />

[Ports] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Provide valid ports] : ブロッ クで vin および vout ポー ト が使用さ れます。<br />

• [Provide core_rdy port] : 最初はコ アのス ター ト ア ッ プ レイテンシと同じサイクル数の間 Low<br />

の出力ポー ト が使用されます。 こ の信号が High にな る と 、 コ アの初期化シーケ ン スが終了し、<br />

入力データ が受信で き る よ う にな り ます。 スタートアップ レ イ テンシの詳細は、 データ シー ト<br />

を参照して く ださい。<br />

• [Provide rst and rfd ports] : ブロックで rfd ポー ト が使用さ れます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Storage options] : 係数 と データ の両方を格納する ために、 カ ス タ ム メモリ オプシ ョ ンを選択<br />

できます。<br />

♦ [Data buffer] : データ サンプルを格納する ために使用する メ モ リ の タ イ プを指定し ます。<br />

♦ [Coefficient buffer] : 係数を格納する ために使用する メ モ リ の タ イ プを指定し ます。<br />

• [Multiple <strong>DSP</strong>48 column support] : Virtex-4 デバイ スの複数の <strong>DSP</strong>48 スライス列にフィルタ<br />

をインプリ メン トする方法を指定します。 [Custom] にする と 、 次の複数列を イ ンプ リ メ ン ト す<br />

るためのオプションが設定できるようになります。<br />

♦ [Cross column pipelining] : 複数列用 <strong>DSP</strong>48 フィルタをインプリメントする場合に、列の<br />

間のパイプ ラ イ ンの長さ を指定し ます。 これは、[Multiple <strong>DSP</strong>48 column support] を<br />

[Custom] に し た場合にのみ設定で き ます。<br />

♦ [First column length] : 複数列用 <strong>DSP</strong>48 フ ィ ルタ を イ ンプ リ メ ン ト する場合に、 最初の列<br />

の長さ を指定し ます。 これは、 [Multiple <strong>DSP</strong>48 column support] を [Custom] にした場合<br />

にのみ設定で き ます。<br />

♦ [Column wrap length] : 複数列用 <strong>DSP</strong>48 フ ィ ルタ を イ ンプ リ メ ン ト する場合に、後続の列<br />

の長 さ を指定し ます。 この値は、 指定した最初の列の長さ と同じか、 それよ り も大きい値<br />

にする必要があ り ます。 これは、 [Multiple <strong>DSP</strong>48 column support] を [Custom] にした場<br />

合にのみ設定で き ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 175<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

FIR Compiler<br />

v1_0<br />

R<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

既知の問題<br />

このブロッ クでは、 次のザイ リ ンクス LogiCORE FIR Compiler コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

FIR Compiler<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

次は、 <strong>System</strong> <strong>Generator</strong> の FIR Compiler に関する既知の問題です。<br />

• 現在の と こ ろ、 FIR Compiler ブロッ クでは Virtex-4 デバイ スの MAC FIR しかサポート され<br />

ません。<br />

• リ ロー ド 可能な係数や複数の係数セ ッ ト は、 サポー ト さ れません。<br />

• 複数列の自動イ ンプ リ メ ンテーシ ョ ンはサポー ト さ れません。<br />

• サポー ト される タ ップは、 最大 512 タップのみです。<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

• このブロ ッ ク を含むデザイ ンをシ ミ ュ レーシ ョ ン し、ネ ッ ト リ ス ト の段階で次のよ う なエ ラー<br />

メッセージが表示された場合は、$target_directory/sysgen/coregen_XXXX/coregen_tmp ディ<br />

レク ト リの coregen.log ファイルを参照してください。<br />

standard exception: XNetlistEngine: An exception<br />

was raised: com.xilinx.sysgen.netlist.f: ERROR:<br />

coreutil - Failure to generate output products<br />

at C:/MATLAB701/toolbox/xilinx/sysgen/scripts/<br />

SgGenerateCores.pm line 590<br />

$target_directory refers to the netlist target directory as specified<br />

on the SysGen token.<br />

176 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V1.0 •<br />

4 5


FIR Compiler v2_0<br />

FIR Compiler v2_0<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクス FIR Compiler v2_0 ブロッ クは、高速 MAC ベースの FIR フィルタを<br />

インプリ メント します。 こ のブ ロ ッ ク は、 入力データ のス ト リ ーム を受信し、 フ ィ<br />

ル タのコ ン フ ィ ギ ュ レーシ ョ ンに応じ てフ ィ ル タ処理し た結果を、 固定の遅延で出<br />

力します。<br />

このフィルタは、カスケード接続された <strong>DSP</strong>48 スライスを次の図のように使用して<br />

インプリ メント されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 177<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック インターフェイス<br />

FIR Compiler v1_0 ブロッ クには、すべてのフィルタ コ ン フ ィ ギ ュ レーシ ョ ンで表示 さ れる din お<br />

よび dout に加え、 さ まざまなオプシ ョ ンのポー ト を含める こ と ができ ます。<br />

• din : FIR Compiler のデータ入力ポー ト 。 次の図に示すとお り 、 こ のポー ト を介し てすべての<br />

チャネルのデータが FIR Compiler へマルチプレ クサ と同じ よ う に、 1 度に送信されます。 こ<br />

れは、デシ メ ーシ ョ ン フィルタのマルチチャネル データ入力および出力の タ イ ミ ング図で、サ<br />

ンプル レー ト変更は 2 で、 ハード ウ ェア オーバーサンプ リ ングは 2 になっています。<br />

• vin : 有効入力ポー ト 。 din ポー ト の入力が有効 (High) か無効 (Low) かを示します。 マルチ<br />

レート のマルチチャネル フ ィ ル タの場合、vin ポー ト を駆動する信号がチ ャ ネル 0 のデータ サ<br />

ンプルの間 High であ る と 、 その他すべてのチ ャ ネルの対応する サンプルが ク ロ ッ ク 入力 さ れ<br />

るまで、High のま まであ る必要があ り ます。 つま り、最初のチャネルから最後のチャネルまで<br />

の各チャネルのデータ サンプルは、 連続したク ロ ッ ク サイクルで送信される必要があり、 vin<br />

ポー ト はこれらすべてのサイ クルで High である必要があ り ます。 こ の規則に従っていない と 、<br />

シミュレーションでエラーが発生します。<br />

178 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FIR Compiler v2_0<br />

ブロック パラ メータ<br />

• en : 同期イ ネーブル ポー ト<br />

• rst : 同期 リ セ ッ ト ポー ト<br />

• rfd : ready <strong>for</strong> data ポー ト 。 FIR ブ ロ ッ ク では、 新しい入力データが受信で き る状態にな る と 、<br />

こ のポー ト の出力が High にな り ます。<br />

• dout : FIR Compiler のデータ出力ポー ト 。 こ のポー ト を介し て、 フ ィ ルタ処理さ れたすべての<br />

チ ャ ネルの出力データ がマルチプレ ク サの よ う に 1 度に出力 さ れます。<br />

• vout : dout ポー ト の出力データ が有効 (High) か無効 (Low) かを示します。<br />

• core_rdy : ブ ロ ッ ク が初期化さ れ、 入力ポー ト のデータ を受け取る準備がで き たかど う かを示<br />

すポー ト です。 core_rdy が コ アに よ っ てアサー ト さ れる まで、 ブ ロ ッ ク のすべての入力は無視<br />

されます。 こ れは、 1 回限 り の制御信号で、 シミュレーションが開始されると Low にな り、 コ<br />

アのスタート アップ レ イ テンシに対応する時間が経過する と 、High にな り ます。 こ の信号は 1<br />

度 High になる と、残りのランタ イム中も High のままです。 このポートは、rst と rfd ポー ト が<br />

使用されていないと使用できません。<br />

• chan_out : dout ポー ト の出力データ があ る チャ ネルがどれかを示し ます。<br />

• chan_in : どのチャ ネルの入力データ サンプルを次の din ポー ト に駆動する かを示し ます。 din<br />

の入力サンプルがコ アに送信される と 、 即座にこ の出力ポー ト の値が変更され、 データ入力の<br />

必要な次のチ ャ ネルを示し ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Filter type] : フ ィ ルタ を次のいずれかに設定する こ と がで き ます。<br />

♦ [SingleRate] : 入力 と 出力のデータ レー ト が同じにな り ます。<br />

♦ [Decimation] : 出力のデータ レー ト が入力よ り も [Sample rate change] で指定し た係数分<br />

だけ遅く な り ます。<br />

♦ [Interpolation] : 出力のデータ レー ト が入力よ り も [Sample rate change] で指定し た係数<br />

分だけ速 く な り ます。<br />

• [Sample rate change] : こ こ で指定し た係数に よ って、出力のサンプル レー ト が入力 と 比較し て<br />

変更 さ れます。 このパラ メータは、 [Filter type] が [Decimation] または [Interpolation] に設定<br />

されると使用できます。 [Decimation] の場合は、 出力のサンプル レー ト が [Sample rate<br />

change] の係数分だけ入力か ら削減 さ れます。 [Interpolation] の場合は、出力のサンプル レート<br />

が [Sample rate change] の係数分だけ入力か ら増加さ れます。<br />

• [Number of channels] : FIR Compiler ブ ロ ッ ク で処理さ れるデータ チャネルの数を指定できま<br />

す。 複数のチ ャ ネル データ がマルチプレ ク サ と 同じ よ う に 1 度にコ アに渡されます。 サポー ト<br />

さ れるチ ャ ネル数は、 最大で 16 です。<br />

• [Hardware over-sampling rate] : 入力データ レー ト と 出力データ レー ト の高速な方 と 内部コ ア<br />

のレー ト 間の比率を指定し ます。 このオーバークロック レート によって、フ ィルタの各 <strong>DSP</strong>48<br />

に組み込まれた フ ィ ルタ タ ッ プの数が決定 さ れます。<br />

• [Coefficient vector] : 指定し た係数ベ ク タ が MATLAB 行のベク タにな り ます。 タップ数は、<br />

MATLAB 行のベクタ長からから推論されます。 フィルタに使用される <strong>DSP</strong>48 の数は、 フ ィ ル<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 179<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

タ コ ン フ ィ ギ ュ レーシ ョ ンの係数の数 と 、指定し た係数ス ト ラ ク チ ャ、ハー ド ウ ェ ア オーバー<br />

サンプ リ ング係数に よ っ て決ま り ます。<br />

• [Structure] : 係数のス ト ラ ク チャ を指定し ます。 係数のス ト ラ ク チ ャ に よ って、コ アが最適化さ<br />

れ、特定のハー ド ウ ェ ア コンフィギュレーションをインプリ メントするのに必要なハードウェ<br />

ア容量が削減されます。 ス ト ラ ク チ ャ には、 次のいずれかを選択で き ます。<br />

♦ Inferred from Coefficients<br />

[Ports] タブ<br />

♦ Non-Symmetric<br />

♦ Symmetric<br />

♦ Negative Symmetric<br />

♦ Half Band<br />

係数のベク タは、 こ こ で指定し たス ト ラ ク チャ と 一致し てい る必要があ り ます。 ただ し、<br />

[Inferred from Coefficients] を選択し た場合、 ス ト ラ クチャはこれらの係数から自動的に決定<br />

さ れるので、 その必要はあ り ません。<br />

[Ports] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Provide valid ports] : ブロッ クで vin および vout ポー ト が使用さ れます。<br />

• [Provide core_rdy port] : 最初はコ アのス ター ト ア ッ プ レイテンシと同じサイクル数の間 Low<br />

の出力ポー ト が使用されます。 こ の信号が High にな る と 、 コ アの初期化シーケ ン スが終了し、<br />

入力データ が受信で き る よ う にな り ます。 スタートアップ レ イ テンシの詳細は、 データ シー ト<br />

を参照して く ださい。<br />

• [Provide rst and rfd ports] : ブロックで rfd ポー ト が使用さ れます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Storage options] : 係数 と データ の両方を格納する ために、 カ ス タ ム メモリ オプシ ョ ンを選択<br />

できます。<br />

♦ [Data buffer] : データ サンプルを格納する ために使用する メ モ リ の タ イ プを指定し ます。<br />

♦ [Coefficient buffer] : 係数を格納する ために使用する メ モ リ の タ イ プを指定し ます。<br />

• [Multiple <strong>DSP</strong>48 column support] : Virtex-4 デバイ スの複数の <strong>DSP</strong>48 スライス列にフィルタ<br />

をインプリ メン トする方法を指定します。 [Custom] にする と 、 次の複数列を イ ンプ リ メ ン ト す<br />

るためのオプションが設定できるようになります。<br />

♦ [Cross column pipelining] : 複数列用 <strong>DSP</strong>48 フィルタをインプリメントする場合に、列の<br />

間のパイプ ラ イ ンの長さ を指定し ます。 これは、[Multiple <strong>DSP</strong>48 column support] を<br />

[Custom] に し た場合にのみ設定で き ます。<br />

♦ [First column length] : 複数列用 <strong>DSP</strong>48 フ ィ ルタ を イ ンプ リ メ ン ト する場合に、 最初の列<br />

の長さ を指定し ます。 これは、 [Multiple <strong>DSP</strong>48 column support] を [Custom] にした場合<br />

にのみ設定で き ます。<br />

♦ [Column wrap length] : 複数列用 <strong>DSP</strong>48 フ ィ ルタ を イ ンプ リ メ ン ト する場合に、後続の列<br />

の長 さ を指定し ます。 この値は、 指定した最初の列の長さ と同じか、 それよ り も大きい値<br />

にする必要があ り ます。 これは、 [Multiple <strong>DSP</strong>48 column support] を [Custom] にした場<br />

合にのみ設定で き ます。<br />

180 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FIR Compiler v2_0<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

FIR Compiler<br />

v2_0<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

既知の問題<br />

このブロッ クでは、 次のザイ リ ンクス LogiCORE FIR Compiler コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

FIR Compiler<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

次は、 <strong>System</strong> <strong>Generator</strong> の FIR Compiler に関する既知の問題です。<br />

• 現在の と こ ろ、 FIR Compiler ブロッ クでは Virtex-4 デバイ スの MAC FIR しかサポート され<br />

ません。<br />

• リ ロー ド 可能な係数や複数の係数セ ッ ト は、 サポー ト さ れません。<br />

• 複数列の自動イ ンプ リ メ ンテーシ ョ ンはサポー ト さ れません。<br />

• 複数列の自動イ ンプ リ メ ンテーシ ョ ンはサポー ト さ れません。<br />

• サポー ト される タ ップは、 最大 512 タップのみです。<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

• こ のブロ ッ ク を含むデザイ ンをシ ミ ュ レーシ ョ ン し、 ネ ッ ト リ ス ト の段階で次のよ う なエ ラー<br />

メッセージが表示された場合は、$target_directory/sysgen/coregen_XXXX/coregen_tmp ディ<br />

レク ト リの coregen.log ファイルを参照してください。<br />

standard exception: XNetlistEngine: An exception<br />

was raised: com.xilinx.sysgen.netlist.f: ERROR:<br />

coreutil - Failure to generate output products<br />

at C:/MATLAB701/toolbox/xilinx/sysgen/scripts/<br />

SgGenerateCores.pm line 590<br />

$target_directory は、<strong>System</strong> <strong>Generator</strong> トークンで指定したネッ ト リストのターゲッ ト ディレク ト<br />

リを示します。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 181<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5<br />

V2.0 • •<br />

R


R<br />

FIR Compiler v3_0<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクス FIR Compiler v3_0 ブロッ クは、高速 MAC ベースの FIR フィルタを<br />

インプリ メント します。 こ のブ ロ ッ ク は、 入力データ のス ト リ ーム を受信し、 フ ィ<br />

ル タのコ ン フ ィ ギ ュ レーシ ョ ンに応じ てフ ィ ル タ処理し た結果を、 固定の遅延で出<br />

力します。<br />

このフィルタは、 カスケード接続された <strong>DSP</strong>48/<strong>DSP</strong>48E/<strong>DSP</strong>48A スライスを次の<br />

図のよ う に使用し て イ ンプ リ メ ン ト されます。<br />

こ の後の説明では、 <strong>DSP</strong>/<strong>DSP</strong>48A/<strong>DSP</strong>48E をまとめて <strong>DSP</strong>48 と記述します。<br />

ブロック インターフェイス<br />

FIR Compiler v3_0 ブロッ クには、すべてのフィルタ コ ン フ ィ ギ ュ レーシ ョ ンで表示 さ れる din お<br />

よび dout に加え、 さ まざまなオプシ ョ ンのポー ト を含める こ と ができ ます。 コ アの準備が完了する<br />

と、 最初のデータが FIR Compiler に入力されます。 コアの準備が完了したかどうかは、 このセク<br />

シ ョ ンで説明する core_rdy 信号を監視する と わか り ます。<br />

• din : FIR Compiler のデータ入力ポー ト 。 このポートを介して、すべてのチャネルのデータがマ<br />

ルチプレ ク サのよ う に 1 度に FIR Compiler に送信さ ます。<br />

• vin : 有効入力ポー ト 。 din ポー ト の入力が有効 (High) か無効 (Low) かを示します。<br />

182 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FIR Compiler v3_0<br />

係数の リ ロー ド<br />

• en : 同期イ ネーブル ポー ト<br />

• rst : 同期 リ セ ッ ト ポー ト<br />

• dout : FIR Compiler のデータ出力ポー ト 。 こ のポー ト を介し て、 フ ィ ルタ処理さ れたすべての<br />

チ ャ ネルの出力データ がマルチプレ ク サの よ う に 1 度に出力 さ れます。<br />

• vout : dout ポー ト の出力データ が有効 (High) か無効 (Low) かを示します。<br />

• chan_out : dout ポー ト の出力データ があ る チャ ネルがどれかを示し ます。<br />

• chan_in : どのチャ ネルの入力データ サンプルを次の din ポー ト に駆動する かを示し ます。 din<br />

の入力サンプルがコ アに送信される と 、 即座にこ の出力ポー ト の値が変更され、 データ入力の<br />

必要な次のチ ャ ネルを示し ます。<br />

• coef_ld : 係数読み込みポー ト 。 coef_ld を駆動する信号は、 ブール型にする必要があ り ます。<br />

coef_ld ポー ト の詳細は、 こ の後の説明を参照し て く だ さ い。<br />

• coef_we : 係数書き込みイ ネーブル ポー ト です。 coef_we を駆動する信号は、 ブール型にする<br />

必要があ り ます。 coef_we ポー ト の詳細は、 こ の後の説明を参照し て く だ さ い。<br />

• coef_din : 係数データ入力ポー ト 。 coef_din を駆動する信号は、 こ のブ ロ ッ ク の係数に指定し<br />

た信号 と 同じ タ イ プにする必要があ り ます。 coef_din ポー ト の詳細は、 こ の後の説明を参照し<br />

てください。<br />

FIR Compiler では、coef_ld、 coef_we、 coef_din という 3 つのポー ト を使用し て、 新し い係数セ ッ<br />

トをダイナミックにリロードできます。 次の図は、 これらの信号のタ イ ミ ングを示し ています。<br />

core_we 信号は、coef_ld 信号の立ち下が り エ ッ ジの後であればいつで も High にでき ます。 これで、<br />

係数の ロー ド が開始 さ れます。 ま た、 図か ら は、 すべての係数を連続し て ロー ド する必要がない こ<br />

とがわかります。 最後の係数が読み込まれる と 、 core_clk の 2 サイクル分の遅延の後 (ハーフバン<br />

ド フ ィ ルタ係数の場合は、 遅延は 1 サイクル)、 新しい係数のセ ッ ト が有効にな り ます。<br />

FIR フ ィ ルタ が読み込まれる順は、 FIR Compiler のコンフィギュレーショ ンによって決ま り ます。<br />

この順序を決めるために、 xlGetReloadOrder と い う 関数も提供さ れています。<br />

xlGetReloadOrder<br />

xlGetReloadOrder は、MATLAB の関数で、 リ ロー ド さ れた係数の時間順 と FIR フィルタでのそれ<br />

らのタップ位置のマッピングを返します。 xlGetReloadOrder 関数では、 次の引数を使用で き ます。<br />

• n_taps : FIR Compiler のフ ィルタ タップ数<br />

• coef_struct : 係数のス ト ラ ク チ ャ を指定し ます。 次のいずれかの値を使用でき ます。<br />

♦ Symmetric<br />

♦ Negative-Symmetric<br />

♦ Halfband<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 183<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

♦ Non-Symmetric<br />

• filter_type : 使用さ れる フ ィ ルタ の タ イ プを指定し ます。 次のいずれかの値を使用でき ます。<br />

♦ SingleRate<br />

♦ Decimation<br />

♦ Interpolation<br />

• rate_change : [Interpolation] または [Decimation] の変更レー ト (1-16)<br />

• overclock : オーバーク ロ ッ ク係数 (1 - n タップ)<br />

• multiple_column_support : 複数列のサポー ト をデ ィ ス エーブルにする か、 カ ス タ ムで指定し ま<br />

す。<br />

♦ Disabled<br />

♦ Custom<br />

• first_column_length : 複数列のサポー ト が イ ネーブルの場合の、 最初の列の長さ を指定する整<br />

数です。<br />

• column_wrap_length : 複数列のサポー ト が イ ネーブルの場合の、 列の ラ ッ プ長を指定する整数<br />

です。<br />

たとえば、FIR Compiler ブロッ クの係数のリ ロード順は、 16 タ ッ プの対称係数が 2 フィルタで間<br />

引きされ、 オーバークロ ッ ク 2 サイクルでコンフィギュレーショ ンされる場合は、 次のよ うな関数<br />

か ら取得で き ます。<br />

>> xlGetReloadOrder( 16, 'Symmetric', 'Decimation', 2, 2, 'Disabled',<br />

4, 32)<br />

ans =<br />

5<br />

7<br />

4<br />

6<br />

1<br />

3<br />

0<br />

2<br />

こ の関数は、 リ ロー ド 順を キ ャ プチ ャするベ ク タ を返し ます。 こ の場合、 ベ ク タ の最初のエレ メ ン<br />

トは 5 で、 FIR Compiler に渡さ れた最初の係数が FIR フィルタの 5 番目の タ ッ プを形成し てい る<br />

ことを示しています。 また、係数ストラクチャは Symmetric (対称) なので、 10 番目の タ ッ プ も形<br />

成されます。 2 つ目の値は 7 なので、 同様に、 FIR Compiler に渡された 2 番目の係数が 7 番目 (お<br />

よび 8 番目) のタップを形成しているこ とを示しています。<br />

または、ブロック ハンドルまたはブロッ ク名を関数に渡して、 リ ロード順を取得する方法もあり ま<br />

す。<br />

>> xlGetReloadOrder('TestModel/FirCompiler')<br />

ans =<br />

5<br />

7<br />

4<br />

6<br />

1<br />

3<br />

0<br />

2<br />

ここでは、 リロード可能な係数を含むモデル例を示しました。<br />

184 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FIR Compiler v3_0<br />

対称イ ン タ ーポレーシ ョ ン<br />

対称インターポレーシ ョ ンのリ ロード方法は、 1 つにま と ま っ て係数が読み込まれる その他の方法<br />

とは異なります。 こ の コ ン フ ィ ギ ュ レーシ ョ ン を使用する と 、 xlGetReloadOrder 関数か ら次の組み<br />

合わせの文字列が返されます。<br />

>> xlGetReloadOrder(16, 'Symmetric', 'Interpolation', 2, 2, 'Disabled',<br />

4, 32)<br />

ans =<br />

{4 - 5} {6 - 7} {4 + 5} {6 + 7} {0 - 1} {2 - 3} {0 + 1} {2 + 3}<br />

こ の文字列は、 coef_din ポー ト に入力された最初のサンプル クロックが係数 4 と 5 の差と し て解<br />

釈され、 2 つ目のサンプルが係数 6 と 7 の差 と し て解釈される こ と を示し ています。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Filter type] : フ ィ ルタ を次のいずれかに設定する こ と がで き ます。<br />

♦ [SingleRate] : 入力 と 出力のデータ レー ト が同じにな り ます。<br />

♦ [Decimation] : 出力のデータ レー ト が入力よ り も [Sample rate change] で指定し た係数分<br />

だけ遅く な り ます。<br />

♦ [Interpolation] : 出力のデータ レー ト が入力よ り も [Sample rate change] で指定し た係数<br />

分だけ速 く な り ます。<br />

• [Sample rate change] : こ こ で指定し た係数に よ って、出力のサンプル レー ト が入力 と 比較し て<br />

変更 さ れます。 このパラ メータは、 [Filter type] が [Decimation] または [Interpolation] に設定<br />

されると使用できます。 [Decimation] の場合は、 出力のサンプル レー ト が [Sample rate<br />

change] の係数分だけ入力か ら削減 さ れます。 [Interpolation] の場合は、出力のサンプル レート<br />

が [Sample rate change] の係数分だけ入力か ら増加さ れます。<br />

• [Number of channels] : FIR Compiler ブ ロ ッ ク で処理さ れるデータ チャネルの数を指定できま<br />

す。 複数のチ ャ ネル データ がマルチプレ ク サ と 同じ よ う に 1 度にコ アに渡されます。 サポー ト<br />

さ れるチ ャ ネル数は、 最大で 64 です。<br />

• [Hardware over-sampling rate] : 入力データ レー ト と 出力データ レー ト の高速な方 と 内部コ ア<br />

のレー ト 間の比率を指定し ます。 このオーバークロック レート によって、フ ィルタの各 <strong>DSP</strong>48<br />

に組み込まれた フ ィ ルタ タ ッ プの数が決定 さ れます。<br />

• [Coefficient vector] : 指定し た係数ベ ク タ が MATLAB 行のベク タにな り ます。 タップ数は、<br />

MATLAB 行のベクタ長からから推論されます。 フィルタに使用される <strong>DSP</strong>48 の数は、 フ ィ ル<br />

タ コ ン フ ィ ギ ュ レーシ ョ ンの係数の数 と 、指定し た係数ス ト ラ ク チ ャ、ハー ド ウ ェ ア オーバー<br />

サンプ リ ング係数に よ っ て決ま り ます。 これらの係数は、FDATool ブロックを使用しても入力<br />

できます。<br />

• [Structure] : 係数のス ト ラ ク チャ を指定し ます。 係数のス ト ラ ク チ ャ に よ って、コ アが最適化さ<br />

れ、特定のハー ド ウ ェ ア コンフィギュレーションをインプリ メントするのに必要なハードウェ<br />

ア容量が削減されます。 ス ト ラ ク チ ャ には、 次のいずれかを選択で き ます。<br />

♦ Inferred from Coefficients<br />

♦ Non-Symmetric<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 185<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

FIR Compiler<br />

v3_0<br />

R<br />

[Ports] タブ<br />

♦ Symmetric<br />

♦ Negative Symmetric<br />

♦ Half Band<br />

係数のベク タは、 こ こ で指定し たス ト ラ ク チャ と 一致し てい る必要があ り ます。 ただ し、<br />

[Inferred from Coefficients] を選択し た場合、 ス ト ラ クチャはこれらの係数から自動的に決定<br />

さ れるので、 その必要はあ り ません。<br />

[Ports] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Provide valid ports] : ブロッ クで vin および vout ポー ト が使用さ れます。<br />

• [Provide rst and rfd ports] : ブロックで rst および rfd ポー ト が使用されます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Storage options] : 係数 と データ の両方を格納する ために、 カ ス タ ム メモリ オプシ ョ ンを選択<br />

できます。<br />

♦ [Data buffer] : データ サンプルを格納する ために使用する メ モ リ の タ イ プを指定し ます。<br />

♦ [Coefficient buffer] : 係数を格納する ために使用する メ モ リ の タ イ プを指定し ます。<br />

• [Multiple <strong>DSP</strong>48 column support] : Virtex-4 デバイ スの複数の <strong>DSP</strong>48 スライス列にフィルタ<br />

をインプリ メン トする方法を指定します。 [Custom] にする と 、 次の複数列を イ ンプ リ メ ン ト す<br />

るためのオプションが設定できるようになります。<br />

♦ [Cross column pipelining] : 複数列用 <strong>DSP</strong>48 フィルタをインプリメントする場合に、列の<br />

間のパイプ ラ イ ンの長さ を指定し ます。 これは、[Multiple <strong>DSP</strong>48 column support] を<br />

[Custom] に し た場合にのみ設定で き ます。<br />

♦ [First column length] : 複数列用 <strong>DSP</strong>48 フ ィ ルタ を イ ンプ リ メ ン ト する場合に、 最初の列<br />

の長さ を指定し ます。 これは、 [Multiple <strong>DSP</strong>48 column support] を [Custom] にした場合<br />

にのみ設定で き ます。<br />

♦ [Column wrap length] : 複数列用 <strong>DSP</strong>48 フ ィ ルタ を イ ンプ リ メ ン ト する場合に、後続の列<br />

の長 さ を指定し ます。 この値は、 指定した最初の列の長さ と同じか、 それよ り も大きい値<br />

にする必要があ り ます。 これは、 [Multiple <strong>DSP</strong>48 column support] を [Custom] にした場<br />

合にのみ設定で き ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロッ クでは、 次のザイ リ ンクス LogiCORE FIR Compiler コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

FIR Compiler<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

186 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5<br />

V3.0 • • •


FIR Compiler v3_0<br />

既知の問題<br />

次は、 <strong>System</strong> <strong>Generator</strong> の FIR Compiler に関する既知の問題です。<br />

• 現在の と こ ろ、 FIR Compiler ブロックでは Virtex-4、 Virtex-5、 Spartan-3A <strong>DSP</strong> デバイ スの<br />

MAC FIR しかサポート されません。<br />

• 複数列の自動イ ンプ リ メ ンテーシ ョ ンはサポー ト さ れません。<br />

• シミュレーション速度は、 コンフィギュレーションによって異なります。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 187<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

FIR Compiler v3_1<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクス FIR Compiler v3_1 ブロッ クは、高速 MAC ベースの FIR フィルタを<br />

インプリ メント します。 こ のブ ロ ッ ク は、 入力データ のス ト リ ーム を受信し、 フ ィ<br />

ル タのコ ン フ ィ ギ ュ レーシ ョ ンに応じ てフ ィ ル タ処理し た結果を、 固定の遅延で出<br />

力します。<br />

このフィルタは、 カスケード接続された <strong>DSP</strong>48/<strong>DSP</strong>48E/<strong>DSP</strong>48A スライスを次の<br />

図のよ う に使用し て イ ンプ リ メ ン ト されます。<br />

こ の後の説明では、 <strong>DSP</strong>/<strong>DSP</strong>48A/<strong>DSP</strong>48E をまとめて <strong>DSP</strong>48 と記述します。<br />

ブロック インターフェイス<br />

FIR Compiler v3_1 ブロッ クには、すべてのフィルタ コ ン フ ィ ギ ュ レーシ ョ ンで表示 さ れる din お<br />

よび dout に加え、 さ まざまなオプシ ョ ンのポー ト を含める こ と ができ ます。 コ アの準備が完了する<br />

と、 最初のデータが FIR Compiler に入力されます。 コアの準備が完了したかどうかは、 このセク<br />

シ ョ ンで説明する core_rdy 信号を監視する と わか り ます。<br />

• din : FIR Compiler のデータ入力ポー ト 。 このポートを介して、すべてのチャネルのデータがマ<br />

ルチプレ ク サ と 同じ よ う に、 1 度に FIR Compiler に送信さ ます。<br />

• vin : 有効入力ポー ト 。 din ポー ト の入力が有効 (High) か無効 (Low) かを示します。<br />

188 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FIR Compiler v3_1<br />

係数の リ ロー ド<br />

• en : 同期イ ネーブル ポー ト<br />

• rst : 同期 リ セ ッ ト ポー ト<br />

• dout : FIR Compiler のデータ出力ポー ト 。 こ のポー ト を介し て、 フ ィ ルタ処理さ れたすべての<br />

チ ャ ネルの出力データ がマルチプレ ク サの よ う に 1 度に出力 さ れます。<br />

• vout : dout ポー ト の出力データ が有効 (High) か無効 (Low) かを示します。<br />

• chan_out : dout ポー ト の出力データ があ る チャ ネルがどれかを示し ます。<br />

• chan_in : どのチャ ネルの入力データ サンプルを次の din ポー ト に駆動する かを示し ます。 din<br />

の入力サンプルがコ アに送信される と 、 即座にこ の出力ポー ト の値が変更され、 データ入力の<br />

必要な次のチ ャ ネルを示し ます。<br />

• coef_ld : 係数読み込みポー ト 。 coef_ld を駆動する信号は、 ブール型にする必要があ り ます。<br />

coef_ld ポー ト の詳細は、 こ の後の説明を参照し て く だ さ い。<br />

• coef_we : 係数書き込みイ ネーブル ポー ト です。 coef_we を駆動する信号は、 ブール型にする<br />

必要があ り ます。 coef_we ポー ト の詳細は、 こ の後の説明を参照し て く だ さ い。<br />

• coef_din : 係数データ入力ポー ト 。 coef_din を駆動する信号は、 こ のブ ロ ッ ク の係数に指定し<br />

た信号 と 同じ タ イ プにする必要があ り ます。 coef_din ポー ト の詳細は、 こ の後の説明を参照し<br />

てください。<br />

FIR Compiler では、coef_ld、 coef_we、 coef_din という 3 つのポー ト を使用し て、 新し い係数セ ッ<br />

トをダイナミックにリロードできます。 次の図は、 これらの信号のタ イ ミ ングを示し ています。<br />

core_we 信号は、coef_ld 信号の立ち下が り エ ッ ジの後であればいつで も High にでき ます。 これで、<br />

係数の ロー ド が開始 さ れます。 ま た、 図か ら は、 すべての係数を連続し て ロー ド する必要がない こ<br />

とがわかります。 最後の係数が読み込まれる と 、 core_clk の 2 サイクル分の遅延の後 (ハーフバン<br />

ド フ ィ ルタ係数の場合は、 遅延は 1 サイクル)、 新しい係数のセ ッ ト が有効にな り ます。<br />

FIR フ ィ ルタ が読み込まれる順は、 FIR Compiler のコンフィギュレーショ ンによって決ま り ます。<br />

この順序を決めるために、 xlGetReloadOrder と い う 関数も提供さ れています。<br />

xlGetReloadOrder<br />

xlGetReloadOrder は、MATLAB の関数で、 リ ロー ド さ れた係数の時間順 と FIR フィルタでのそれ<br />

らのタップ位置のマッピングを返します。 xlGetReloadOrder 関数では、 次の引数を使用で き ます。<br />

• n_taps : FIR Compiler のフ ィルタ タップ数<br />

• coef_struct : 係数のス ト ラ ク チ ャ を指定し ます。 次のいずれかの値を使用でき ます。<br />

♦ Symmetric'<br />

♦ Negative-Symmetric<br />

♦ Halfband<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 189<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

♦ Non-Symmetric<br />

• filter_type : 使用さ れる フ ィ ルタ の タ イ プを指定し ます。 次のいずれかの値を使用でき ます。<br />

♦ SingleRate<br />

♦ Decimation<br />

♦ Interpolation<br />

• rate_change : [Interpolation] または [Decimation] の変更レー ト (1-16)<br />

• overclock : オーバーク ロ ッ ク係数 (1 - n タップ)<br />

• multiple_column_support : 複数列のサポート を ディ ス エーブルにする か、 カス タ ムで指定し ま す。<br />

♦ Disabled<br />

♦ Custom<br />

• first_column_length : 複数列のサポー ト が イ ネーブルの場合の、 最初の列の長さ を指定する整<br />

数です。<br />

• column_wrap_length : 複数列のサポー ト が イ ネーブルの場合の、 列の ラ ッ プ長を指定する整数<br />

です。<br />

たとえば、FIR Compiler ブロッ クの係数のリ ロード順は、 16 タ ッ プの対称係数が 2 フィルタで間<br />

引きされ、 オーバークロ ッ ク 2 サイクルでコンフィギュレーショ ンされる場合は、 次のよ うな関数<br />

か ら取得で き ます。<br />

>> xlGetReloadOrder( 16, 'Symmetric', 'Decimation', 2, 2, 'Disabled',<br />

4, 32)<br />

ans =<br />

5<br />

7<br />

4<br />

6<br />

1<br />

3<br />

0<br />

2<br />

こ の関数は、 リ ロー ド 順を キ ャ プチ ャするベ ク タ を返し ます。 こ の場合、 ベ ク タ の最初のエレ メ ン<br />

トは 5 で、 FIR Compiler に渡さ れた最初の係数が FIR フィルタの 5 番目の タ ッ プを形成し てい る<br />

ことを示しています。 また、係数ストラクチャは Symmetric (対称) なので、 10 番目の タ ッ プ も形<br />

成されます。 2 つ目の値は 7 なので、 同様に、 FIR Compiler に渡された 2 番目の係数が 7 番目 (お<br />

よび 8 番目) のタップを形成しているこ とを示しています。<br />

または、ブロック ハン ド ルまたはブロ ッ ク名も関数に渡し て、 リ ロード順を取得する方法があ り ま<br />

す。<br />

>> xlGetReloadOrder('TestModel/FirCompiler')<br />

ans =<br />

5<br />

7<br />

4<br />

6<br />

1<br />

3<br />

0<br />

2<br />

ここでは、 リロード可能な係数を含むモデル例を示しました。<br />

190 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FIR Compiler v3_1<br />

対称イ ン タ ーポレーシ ョ ン<br />

対称インターポレーシ ョ ンのリ ロード方法は、 1 つにま と ま っ て係数が読み込まれる その他の方法<br />

とは異なります。 こ の コ ン フ ィ ギ ュ レーシ ョ ン を使用する と 、 xlGetReloadOrder 関数か ら次の組み<br />

合わせの文字列が返されます。<br />

>> xlGetReloadOrder(16, 'Symmetric', 'Interpolation', 2, 2, 'Disabled',<br />

4, 32)<br />

ans =<br />

{4 - 5} {6 - 7} {4 + 5} {6 + 7} {0 - 1} {2 - 3} {0 + 1} {2 + 3}<br />

こ の文字列は、 coef_din ポー ト に入力された最初のサンプル クロックが係数 4 と 5 の差と し て解<br />

釈され、 2 つ目のサンプルが係数 6 と 7 の差 と し て解釈される こ と を示し ています。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Filter type] : フ ィ ルタ を次のいずれかに設定する こ と がで き ます。<br />

♦ [SingleRate] : 入力 と 出力のデータ レー ト が同じにな り ます。<br />

♦ [Decimation] : 出力のデータ レー ト が入力よ り も [Sample rate change] で指定し た係数分<br />

だけ遅く な り ます。<br />

♦ [Interpolation] : 出力のデータ レー ト が入力よ り も [Sample rate change] で指定し た係数<br />

分だけ速 く な り ます。<br />

• [Sample rate change] : こ こ で指定し た係数に よ って、出力のサンプル レー ト が入力 と 比較し て<br />

変更 さ れます。 このパラ メータは、 [Filter type] が [Decimation] または [Interpolation] に設定<br />

されると使用できます。 [Decimation] の場合は、 出力のサンプル レー ト が [Sample rate<br />

change] の係数分だけ入力か ら削減 さ れます。 [Interpolation] の場合は、出力のサンプル レート<br />

が [Sample rate change] の係数分だけ入力か ら増加さ れます。<br />

• [Number of channels] : FIR Compiler ブ ロ ッ ク で処理さ れるデータ チャネルの数を指定できま<br />

す。 複数のチ ャ ネル データ がマルチプレ ク サ と 同じ よ う に 1 度にコ アに渡されます。 サポー ト<br />

さ れるチ ャ ネル数は、 最大で 64 です。<br />

• [Hardware over-sampling rate] : 入力データ レー ト と 出力データ レー ト の高速な方 と 内部コ ア<br />

のレー ト 間の比率を指定し ます。 このオーバークロック レート によって、フ ィルタの各 <strong>DSP</strong>48<br />

に組み込まれた フ ィ ルタ タ ッ プの数が決定 さ れます。<br />

• [Coefficient vector] : 指定し た係数ベ ク タ が MATLAB 行のベク タにな り ます。 タップ数は、<br />

MATLAB 行のベクタ長からから推論されます。 フィルタに使用される <strong>DSP</strong>48 の数は、 フ ィ ル<br />

タ コ ン フ ィ ギ ュ レーシ ョ ンの係数の数 と 、指定し た係数ス ト ラ ク チ ャ、ハー ド ウ ェ ア オーバー<br />

サンプ リ ング係数に よ っ て決ま り ます。 これらの係数は、FDATool ブロックを使用しても入力<br />

できます。<br />

• [Structure] : 係数のス ト ラ ク チャ を指定し ます。 係数のス ト ラ ク チ ャ に よ って、コ アが最適化さ<br />

れ、特定のハー ド ウ ェ ア コンフィギュレーションをインプリ メントするのに必要なハードウェ<br />

ア容量が削減されます。 ス ト ラ ク チ ャ には、 次のいずれかを選択で き ます。<br />

♦ Inferred from Coefficients<br />

♦ Non-Symmetric<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 191<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

[Ports] タブ<br />

♦ Symmetric<br />

♦ Negative Symmetric<br />

♦ Half Band<br />

係数のベク タは、 こ こ で指定し たス ト ラ ク チャ と 一致し てい る必要があ り ます。 ただ し、<br />

[Inferred from Coefficients] を選択し た場合、 ス ト ラ クチャはこれらの係数から自動的に決定<br />

さ れるので、 その必要はあ り ません。<br />

[Ports] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Provide valid ports] : ブロッ クで vin および vout ポー ト が使用さ れます。<br />

• [Provide rst and rfd ports] : ブロックで rst および rfd ポー ト が使用されます。<br />

[Advanced] タブ<br />

[Advanced] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Rounding mode] : 次のいずれかを選択し ます。<br />

♦ Full_Precision:<br />

♦ Truncated_LSBS:<br />

♦ Non_Symmetric_Rounding_Down:<br />

♦ Non_Symmetric_Rounding_Up:<br />

♦ Convergent_Rounding_To_Even:<br />

♦ Convergent_Rounding_To_Odd:<br />

♦ Symmetric_Rounding_To_Zero:<br />

♦ Symmetric_Rounding_To_One:<br />

♦ Symmetric_Rounding_To_Infinity:<br />

• [Output Width] : 出力幅を指定し ます。 [Rounding Mode] で [Full_Precision] 以外を設定し て<br />

い る場合にのみ有効にな り ます。<br />

• [Allow Rounding Approximation] : オンにする と 、 対称丸め (Symmetric Rounding) を使用し<br />

てい る場合に、 近似を有効に し て リ ソ ース を節約し ます。<br />

192 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


FIR Compiler v3_1<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

FIR Compiler<br />

v3_1<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Storage options] : 係数 と データ の両方を格納する ために、 カ ス タ ム メモリ オプシ ョ ンを選択<br />

できます。<br />

♦ [Data buffer] : データ サンプルを格納する ために使用する メ モ リ の タ イ プを指定し ます。<br />

♦ [Coefficient buffer] : 係数を格納する ために使用する メ モ リ の タ イ プを指定し ます。<br />

• [Multiple <strong>DSP</strong>48 column support] : Virtex-4 デバイ スの複数の <strong>DSP</strong>48 スライス列にフィルタ<br />

をインプリ メン トする方法を指定します。 [Custom] にする と 、 次の複数列を イ ンプ リ メ ン ト す<br />

るためのオプションが設定できるようになります。<br />

♦ [Cross column pipelining] : 複数列用 <strong>DSP</strong>48 フィルタをインプリメントする場合に、列の<br />

間のパイプ ラ イ ンの長さ を指定し ます。 これは、[Multiple <strong>DSP</strong>48 column support] を<br />

[Custom] に し た場合にのみ設定で き ます。<br />

♦ [First column length] : 複数列用 <strong>DSP</strong>48 フ ィ ルタ を イ ンプ リ メ ン ト する場合に、 最初の列<br />

の長さ を指定し ます。 これは、 [Multiple <strong>DSP</strong>48 column support] を [Custom] にした場合<br />

にのみ設定で き ます。<br />

♦ [Column wrap length] : 複数列用 <strong>DSP</strong>48 フ ィ ルタ を イ ンプ リ メ ン ト する場合に、後続の列<br />

の長 さ を指定し ます。 この値は、 指定した最初の列の長さ と同じか、 それよ り も大きい値<br />

にする必要があ り ます。 これは、 [Multiple <strong>DSP</strong>48 column support] を [Custom] にした場<br />

合にのみ設定で き ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

既知の問題<br />

このブロッ クでは、 次のザイ リ ンクス LogiCORE FIR Compiler コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

FIR Compiler<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

次は、 <strong>System</strong> <strong>Generator</strong> の FIR Compiler に関する既知の問題です。<br />

• 現在の と こ ろ、 FIR Compiler ブロックでは Virtex-4、 Virtex-5、 Spartan-3A <strong>DSP</strong> デバイ スの<br />

MAC FIR しかサポート されません。<br />

• 複数列の自動イ ンプ リ メ ンテーシ ョ ンはサポー ト さ れません。<br />

• シミュレーション速度は、 コンフィギュレーションによって異なります。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 193<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5<br />

V3.1 • • •<br />

R


From FIFO<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Shared Memory] および [Index] ライブラリにリストされて<br />

います。<br />

ザイ リンクス From FIFO ブロックは、 First-In First-Out (FIFO) のメモリ キューの後<br />

半分を イ ンプ リ メ ン ト し ます。<br />

読み出しイネーブル入力ポート をアサートする と、 データはデータ出力ポート (dout)<br />

を通って FIFO か ら読み出されます。 FIFO が空の場合は、 empty 出力ポー ト がアサー<br />

トされます。 出力ポー ト percent_full には、フルの FIFO のパーセン ト がユーザー指定<br />

の精度で表示さ れます。<br />

From FIFO は、 FIFO <strong>Generator</strong> v2.1 コアを使用してハードウェアにインプリ メント されます。<br />

<strong>System</strong> <strong>Generator</strong> のハード ウ ェア協調シ ミ ュ レーシ ョ ン インターフェイスでは、From FIFO ブロッ<br />

クをコンパイルし、FPGA ハー ド ウ ェ アで協調シ ミ ュ レーシ ョ ンでき ます。 共有 FIFO を <strong>System</strong><br />

<strong>Generator</strong> 協調シ ミ ュ レーシ ョ ン ハー ド ウ ェ アで使用する と 、 ホ ス ト PC と FPGA 間でデータ を高<br />

速に転送で き、 リ アルタ イ ム ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン機能が強化されます。<br />

9.2 リ リ ース から は、 同じ 名前の From FIFO ブロ ッ ク と To FIFO ブロックがペアになり、ネット リ<br />

スト で 1 つの BRAM ベース の FIFO ブロ ッ ク になっています。 From FIFO または To FIFO ブロ ッ<br />

ク が別のブロ ッ ク と ペアになら ない場合は、 その入力ポート と 出力ポート が最上位レ ベルの <strong>System</strong><br />

<strong>Generator</strong> デザイ ン に含ま れま す。 ペアになっ たブロ ッ ク はデザイ ン のど の階層にでも 配置でき ま す<br />

が、 同じ 名前の From FIFIO または To FIFO ブロ ッ ク が複数ある 場合は、 エラ ーになり ま す。<br />

9.2 リ リ ース以前のバージ ョ ン と の互換性を保持する には、 MATLAB グローバル変数<br />

xlSgSharedMemoryStitch を off に設定し て く ださ い。 これには、MATLAB コマンド ラインに次の<br />

ように入力します。<br />

ブロック パラ メータ<br />

[Basic] タブ<br />

global xlSgSharedMemoryStitch;<br />

xlSgSharedMemoryStitch = 'off';<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Shared memory name] : 共有 FIFO の名前を付けます。 同じ名前の FIFO はすべて同じ物理的<br />

FIFO を共有し ます。<br />

• [Ownership] : メモリが [Locally owned] か [Owned elsewhere] かを指定し ます。 [Locally<br />

owned] の場合、 ブ ロ ッ ク で FIFO の イ ン ス タ ン スが作成され、 [Owned elsewhere] の場合、 ブ<br />

ロ ッ ク が既に作成された FIFO インスタンスに接続されます。<br />

• [Depth] : メモリ ブ ロ ッ ク のワー ド 数を指定し ます。 ワード サイズは、din ポー ト のビ ッ ト 幅か<br />

ら推論されます。<br />

• [Bits of precision to use <strong>for</strong> %full port] : %full ポー ト のビ ッ ト 幅を指定し ます。 この符号なし<br />

出力の 2 進小数点は、 常にワー ド の最上部にあ り ます。 こ のため、 た と えば精度が 1 に設定さ<br />

れる と、 出力は 0.0 と 0.5 の 2 つの値を取 り 込みます。 こ の場合、 0.5 は FIFO が少な く と も<br />

50% フルである こ と を示しています。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

194 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


From FIFO<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

ザイリンクス LogiCORE<br />

関連項目<br />

このブロックでは、 ザイ リンクス LogiCORE FIFO <strong>Generator</strong> コアを使用してインプリ メント され<br />

ます。<br />

ザイ リンクス<br />

LogiCORE<br />

FIFO Synchronous<br />

FIFO<br />

FIFO<br />

<strong>Generator</strong><br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

From FIFO ブロ ッ クの詳細については、 次の ト ピ ッ ク を参照し て く ださ い。<br />

To FIFO<br />

Multiple Subsystem <strong>Generator</strong><br />

共有 FIFO の協調シ ミ ュ レーシ ョ ン<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 195<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V5.0 • • • • •<br />

4 5<br />

V3.3 • • •<br />

R


From Register<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Index] ライブラリにリストされています。<br />

ザイ リ ンクス From Register ブロックは、 D フリ ップフロップ ベースのレジス タ の後<br />

半分を イ ンプ リ メ ン ト し ます。 物理的な レ ジ ス タは、 2 つのデザイ ンまたは同じデザイ<br />

ンの 2 箇所で共有で き ます。<br />

このブロッ クは、 レジスタから対応する To Register ブロックで書き込まれたデータを<br />

読み出し ます。 dout ポー ト は、 レジス タの出力ポー ト を表し、 ビ ッ ト 幅は対応する To<br />

Register ブ ロ ッ ク の幅 と 同じ であ る必要があ り ます。<br />

9.2 リ リ ースからは、同じ名前の From Register ブロック と ToRegister ブロックがペアになり、ネッ<br />

トリストで 1 つの Register ブロックになっています。 From Register または To Register ブロックが<br />

別のブロックとペアにならない場合は、 その入力ポート と出力ポートが最上位レベルの <strong>System</strong><br />

<strong>Generator</strong> デザイ ンに含まれます。 ペアになったブロ ッ クはデザイ ンのどの階層にでも配置でき ま<br />

すが、同じ名前の From Register または To Register ブロックが複数ある場合は、エラーになり ます。<br />

9.2 リ リ ース以前のバージ ョ ン と の互換性を保持するには、 MATLAB グローバル変数<br />

xlSgSharedMemoryStitch を off に設定し て く ださ い。 これには、MATLAB コマンド ラインに次の<br />

ように入力します。<br />

ブロック パラ メータ<br />

global xlSgSharedMemoryStitch;<br />

xlSgSharedMemoryStitch = 'off';<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Shared memory name] : 共有レ ジ ス タ の名前を付け ます。 1 つのレジス タには、同じ名前の To<br />

Register ブロック と From Register ブロッ クがそれぞれ 1 つずつ必要です。 この名前は、 デザ<br />

イ ンのほかの共有 メ モ リ の名前 と は異な る も のに し て く だ さ い。<br />

• [Initial value] : レ ジ ス タ の初期値を指定し ます。<br />

• [Ownership and initialization] : メモリが [Locally owned and initialized] か [Owned and<br />

initialized elsewhere] かを指定します。 [Locally owned and initialized] の場合、 ブロ ッ ク でレ<br />

ジスタのインスタンスが作成され、 [Owned and initialized elsewhere] の場合、 ブ ロ ッ ク が既に<br />

作成された レ ジ ス タ インスタンスに接続されます。 こ の結果、 シ ミ ュ レーシ ョ ン中に 2 つの共<br />

有レジスタ ブロッ クが 2 つの異な る モデルで使用さ れる場合、 [Locally owned and initialized]<br />

のブ ロ ッ ク を含むモデルが最初に開始さ れる必要があ り ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

クロック ド メ イ ンの切 り 替え<br />

To Register と From Register ブロックのペアがクロック ドメインの境界を切り替えるために使用<br />

される と、 ハード ウェアには 1 つのレジス タがイ ンプ リ メ ン ト されます。 このレジスタには、 To<br />

Register ブロッ クのクロッ ク ドメインが使用されます。 たとえば、デザインに Domain_A と<br />

196 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


From Register<br />

関連項目<br />

Domain_B の 2 つの ク ロ ッ ク ド メ イ ンがあ る と し、 次の図のよ う に、 2 つのク ロ ッ ク ドメインを<br />

切り替えるのために 1 組の共有レ ジ ス タ が使用 さ れる と し ます。<br />

Multiple Subsystem <strong>Generator</strong> ブロッ クを使用してデザインが生成される と、 含まれるレジスタは<br />

1 つだけにな り ます。 レジスタのクロッ ク信号と クロック ネーブル信号は Domain_A ドメインか<br />

ら駆動されます。<br />

こ の方法で ク ロ ッ ク ド メ イ ン を切 り 替え る と 、 問題にな る こ と があ り ます。 安定させるには、 2 つ<br />

の Register ブロックを From Register ブ ロ ッ ク の直後に追加し、 データ を From Register のクロッ<br />

ク ド メ イ ンに再同期 させます。<br />

From Register ブロ ッ クの詳細については、 次の ト ピ ッ ク を参照し て く だ さい。<br />

To Register<br />

Multiple Subsystem <strong>Generator</strong><br />

共有レ ジ ス タ の協調シ ミ ュ レーシ ョ ン<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 197<br />

リリース 9.2.00 2007 年 8 月<br />

R


Gateway In<br />

R<br />

Gateway ブロック<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Data Types]、 [Index] ライブラリにリス<br />

トされています。<br />

ザイ リ ンクスの Gateway In ブロックは、 Simulink デザイ ンのザイ リ ン ク ス部<br />

分への入力に使用し ます。 このブロックは、 Simulink の整数、 ダブル データ、<br />

固定小数点な どのデータ型を <strong>System</strong> <strong>Generator</strong> の固定小数点型に変換し ます。<br />

各ブロ ッ ク では、 <strong>System</strong> <strong>Generator</strong> で生成された HDL デザ イ ンの最上位入力<br />

ポー ト を定義し ます。<br />

ダブル データ型を <strong>System</strong> <strong>Generator</strong> の固定小数点型に変換する場合、 Gateway In ブロックでは選<br />

択さ れたオーバーフ ローおよび量子化オプシ ョ ンが使用さ れます。 オーバーフ ローの場合、 最大の<br />

正の値か最小の負の値にサチュ レー ト (飽和演算) するか、 ラ ッ プするか (MSB の左側のビ ッ ト を<br />

削除)、 シミュレーション中に Simulink エラーとしてオーバーフローをフラグするオプションがあ<br />

ります。 量子化の場合、最近似値 (同等の近似値が 2 つある場合は、0 から遠い方の値) に丸めるか、<br />

切り捨てる (LSB の右側にビ ッ ト を削除) オプシ ョ ンがあ り ます。<br />

オーバーフ ロー と 量子化は、 ハー ド ウ ェ アではな く 、 ハー ド ウ ェ アの前のブロ ッ ク の ソ フ ト ウ ェ ア<br />

段階で実行されます。<br />

Gateway In ブ ロ ッ ク には、 次の よ う な機能があ り ます。<br />

ブロック パラ メータ<br />

• このブロックは、Simulink の整数、 ダブル データ、 固定小数点などのデータ型を Simulink で<br />

のシ ミ ュレーシ ョ ン中に <strong>System</strong> <strong>Generator</strong> の固定小数点型に変換し ます。<br />

• <strong>System</strong> <strong>Generator</strong> で生成された HDL デザ イ ンの最上位入力ポー ト を定義し ます。<br />

• <strong>System</strong> <strong>Generator</strong> ブロックで [Create testbench] をオンにする と、 テス トベンチのスティ ミ ュ<br />

ラスを定義します。 この場合、 HDL コードの生成中に、 Simulink のシ ミ ュレーシ ョ ン中に発<br />

生する ブ ロ ッ ク の入力が、 データ フ ァ イルでは論理ベク タ と し て記録さ れます。 HDL シ ミュ<br />

レーシ ョ ン中は、 最上位レベルのテス トベンチに挿入されるエンティ ティによ り、 このベク タ<br />

と Gateway Out ブ ロ ッ ク か ら出力さ れたベ ク タ が予測結果に対し てチェ ッ ク さ れます。<br />

• 最上位レベルの HDL エンティティで対応ポートに名前を付けます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [IOB timing constraint] : ハー ド ウ ェ アでは、 Gateway In は入力/出力バ ッ フ ァ (IOB) のセッ ト<br />

として認識されます。 IOB のタイ ミ ングに制約を付けるには、 [None] と [Data rate] の 2 通り<br />

の方法があ り ます。<br />

[None] をオンにする と、 <strong>System</strong> <strong>Generator</strong> で生成される制約フ ァ イル (合成ツールに XST を<br />

使用する場合は XCF、それ以外は NCF) に IOB のタイ ミ ング制約は含まれません。 このため、<br />

IOB から同期エレメントへのパスには制約が付きません。<br />

[Data rate] をオンにする と、 IOB が動作するデータ レー ト で制約されます。 このレートは、<br />

<strong>System</strong> <strong>Generator</strong> ブロッ クの [<strong>System</strong> clock period] の値、およびデザイ ン内のその他のサンプ<br />

リング周期に対する Gateway ブロッ クのサンプリ ング レー ト によって決定されます。 たとえ<br />

198 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Gateway In<br />

ば、次の OFFSET = IN 制約は、10ns のシ ス テム周期で実行される Din という名前の Gateway<br />

In ブ ロ ッ ク用に生成さ れています。<br />

# Offset in constraints<br />

NET "Din(0)" OFFSET = IN : 10.0 : BEFORE "clk";<br />

NET "Din(1)" OFFSET = IN : 10.0 : BEFORE "clk";<br />

NET "Din(2)" OFFSET = IN : 10.0 : BEFORE "clk";<br />

• [Specify IOB location constraints] : オンにする と、IOB ロ ケーシ ョ ン制約を指定で き る テキ ス<br />

ト ボックスが表示されるようになります。<br />

• [IOB pad locations] : IOB ピン ロ ケーシ ョ ン をセル配列 と し て指定で き ます。 ロケーション<br />

は、 パ ッ ケージに よ っ て異な り ます。 た と えば、 上の例の場合に FG パッケージで Virtex-E<br />

2000 を使用する と する と 、 Din バスのロケーシ ョ ン制約は C36、 B36、 D35 に指定でき ます。<br />

これは、 XCF (または NCF) フ ァ イルでは次のよ う な制約に変換されます。<br />

# Loc constraints<br />

NET "Din(0)" LOC = "D35";<br />

NET "Din(1)" LOC = "B36";<br />

NET "Din(2)" LOC = "C35";<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。 Gateway In ブロッ クでは、 ほかのブロッ ク と違い、<br />

[Quantization] フィールドで [Round] または [Overflow] フ ィールドで [Saturate] を選択した場合<br />

に、 ハード ウ ェ ア リソースが追加で必要にはなりません。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 199<br />

リリース 9.2.00 2007 年 8 月<br />

R


Gateway Out<br />

R<br />

Gateway ブロック<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Data Types]、 [Index] ライブラリにリス<br />

トされています。<br />

ザイ リ ンクスの Gateway Out ブロッ クは、 Simulink デザイ ンのザイ リ ン ク ス部<br />

か ら の出力に使用し ます。 このブロックでは、 <strong>System</strong> <strong>Generator</strong> の固定小数点型<br />

のデータが Simulink のダブル データ型に変換されます。<br />

Gateway Out ブロックは、 コンフィギュレーショ ンによって、 <strong>System</strong> <strong>Generator</strong><br />

で生成さ れた最上位レベルの HDL デザイ ンの出力ポー ト を定義できた り 、 単にハード ウ ェ ア記述<br />

で削除されるテス ト ポイント として使用したりできます。<br />

Gateway Out ブ ロ ッ ク には、 次の よ う な機能があ り ます。<br />

ブロック パラ メータ<br />

• このブロックでは、 <strong>System</strong> <strong>Generator</strong> の固定小数点型のデータ が Simulink のダブル データ型<br />

に変換されます。<br />

• <strong>System</strong> <strong>Generator</strong> で生成された最上位レベルの HDL デザイ ンの I/O ポー ト を定義し ます。<br />

Gateway Out ブ ロ ッ ク は、 最上位レベルの出力ポー ト を定義し ます。<br />

• <strong>System</strong> <strong>Generator</strong> ブロックで [Create testbench] をオンにする と、 テス トベンチ結果のベク タ<br />

を定義します。 この場合、 HDL コー ド の生成中に、 Simulink のシ ミ ュ レーシ ョ ン中に発生す<br />

る ブ ロ ッ ク か ら の出力が、 データ フ ァ イ ルでは論理ベク タ と し て記録されます。 最上位レベル<br />

のポー ト には、 それぞれ HDL コンポーネントが最上位レベルのテストベンチに挿入され、<br />

HDL シ ミ ュ レーシ ョ ン中に予測結果に対し て こ のベク タ がチェ ッ ク さ れます。<br />

• 最上位レベルの HDL エンテ ィ テ ィ で対応出力ポー ト に名前を付け ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Translate into output port] : オフにする と 、 こ のブロ ッ ク がハード ウ ェ アに変換される と きに<br />

実際の出力ポー ト にな ら ない よ う にで き ます。 デフ ォル ト はオンで、 出力ポー ト が イ ネーブル<br />

にな り ます。 オフにする と、 Gateway Out ブ ロ ッ ク はデバ ッ グ中にのみ使用 さ れ、 デザ イ ン を<br />

部分的にプローブする際に Simulink の Sink ブロック との通信に使用されます。 この場合、<br />

Gateway Out ブロッ クはグレーで表示され、Gateway ブロ ッ ク が出力ポー ト に変換されないこ<br />

とを示します。<br />

• [IOB timing constraint] : ハード ウ ェ アでは、Gateway Out ブロッ クは入力/出力バ ッ フ ァ (IOB)<br />

のセ ッ ト と して認識されます。 IOB のタイ ミ ングに制約を付けるには、[None] と [Data rate] と<br />

[Data rate, set 'FAST' attribute] の 3 通りの方法があります。<br />

[None] をオンにする と、 <strong>System</strong> <strong>Generator</strong> で生成される制約フ ァ イル (合成ツールに XST を<br />

使用する場合は XCF、それ以外は NCF) に IOB のタイ ミ ング制約は含まれません。 このため、<br />

IOB から同期エレメントへのパスには制約が付きません。<br />

[Data rate] をオンにする と、 IOB が動作するデータ レー ト で制約されます。 このレートは、<br />

<strong>System</strong> <strong>Generator</strong> ブロッ クの [<strong>System</strong> clock period] の値、およびデザイ ン内のその他のサンプ<br />

リング周期に対する Gateway Out ブロッ クのサンプリング レート によって決定されます。 た<br />

200 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Gateway Out<br />

とえば、次の OFFSET = OUT 制約は、 10ns のシ ス テム周期で実行さ れる Dout という名前の<br />

Gateway Out ブ ロ ッ ク用に生成 さ れています。<br />

# Offset out constraints<br />

NET "Dout(0)" OFFSET = OUT : 10.0 : AFTER "clk";<br />

NET "Dout(1)" OFFSET = OUT : 10.0 : AFTER "clk";<br />

NET "Dout(2)" OFFSET = OUT : 10.0 : AFTER "clk";<br />

[Data rate, set 'FAST' attribute] をオンにする と、上の OFFSET = OUT 制約が出力 され、 各 IOB<br />

に対し て、 FAST スルー レート属性がさ らに生成されます。 こ れに よ り 、 遅延は削減さ れます<br />

が、 ノ イ ズ と 消費電力は増加し ます。 前の例の場合、 次の属性が XCF (または NCF) ファイル<br />

に追加されます。<br />

NET "Dout(0)" FAST;<br />

NET "Dout(1)" FAST;<br />

NET "Dout(2)" FAST;<br />

• [Specify IOB location constraints] : オンにする と、IOB ロケーション制約を指定できるように<br />

なります。<br />

• [IOB pad locations] : IOB ピン ロ ケーシ ョ ン をセル配列 と し て指定で き ます。 ロケーション<br />

は、 パ ッ ケージに よ っ て異な り ます。 た と えば、 上の例の場合に FG パッケージで Virtex-E<br />

2000 を使用する とする と、 Dout バスのロケーシ ョ ン制約は B34、 D33、 B35、 に指定できま<br />

す。 これは、 XCF (または NCF) フ ァ イルでは次のよ う な制約に変換されます。<br />

# Loc constraints<br />

NET "Dout(0)" LOC = "B35";<br />

NET "Dout(1)" LOC = "D33";<br />

NET "Dout(2)" LOC = "B34";<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 201<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Indeterminate Probe<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクスの Indeterminate Probe ブ ロ ッ ク の出力は、 入力データが不定値<br />

(MATLAB 値が NaN) かど うかを示します。 不定データは、VHDL の不定データ値を表<br />

す X に相当し ます。<br />

こ のブ ロ ッ ク は、 どの タ イ プのザ イ リ ン ク ス信号 も入力 と し て受信し、 ダブル信号を出<br />

力します。 こ のブ ロ ッ ク に不定データ が入力さ れる と 、 出力信号が 1 にアサート されます。 それ以<br />

外の場合は、 出力は 0 にな り ます。<br />

202 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Interleaver Deinterleaver v4_0<br />

Interleaver Deinterleaver v4_0<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

ザイ リ ンクスの Interleaver/Deinterleaver ブロッ クは、 インターリーバま<br />

たはデインターリ ーバをインプ リ メ ン ト し ます。 インターリーバは、 1:1<br />

の確定的な方法でシンボルのシーケ ン ス順序を並び替え るデバイ スです。<br />

デイ ン ター リ ーバは、 こ の並び替え られたシーケ ン ス を再び格納するデバ<br />

イスです。<br />

ブロックがインターリーバ モー ド の場合、2 つの同期された整流器アーム (図の傍線矢印部分) を使<br />

用して、din ポー ト でサンプ リ ング さ れた入力データ が B シフ ト レ ジ ス タ で多重化さ れ、dout ポー<br />

ト へ出力さ れます。 B は、 ブ ロ ッ ク のパ ラ メ ータ ダイアログ ボックスで入力されたブランチ数で<br />

す。 ブランチ 0 には長さ 0 の、 ブランチ 1 には長さ L の、 ブラ ンチ 2 には長さ 2L のシフ ト レジス<br />

タが含まれます。 ブランチ (B-1) には、 長さ (B-1)L のシフ ト レジスタが含まれます。L は、 長さ 1<br />

の場合に配列 と し て入力されたブ ラ ンチ長を示す定数です。<br />

ブロックがデインターリーバ モー ド の場合、2 つの同期された整流器アーム (図の傍線矢印部分) を<br />

使用し て、 din ポー ト でサンプ リ ング された入力データが B シフ ト レジスタで多重化され、 dout<br />

ポー ト へ出力されます。 ブランチ 0 には長さ (B-1)*L の、ブラ ンチ (B-1) には長さ 0 のシフ ト レジ<br />

スタが含まれます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 203<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブランチ長が配列として指定されると、 ブロックはインターリーバ モー ド で もデイ ン ター リ ーバ<br />

モー ド で も同じ よ う に動作し ます。 こ れは、 配列ですべてのブ ラ ンチの長さ が完全に定義さ れる た<br />

めです。 配列には、 ブ ラ ンチ数 と 同じ長さ B が使用さ れる必要があ り ます。<br />

リセット ピン (rst) は、 整流器アーム をブ ラ ンチ 0 に設定し ますが、 データのブラ ンチは ク リ ア さ<br />

れません。<br />

ブロック インターフェイス<br />

Interleaver/Deinterleaver ブロックには 2 ~ 4 個の入力ポー ト と 2 個の出力ポー ト があ り ます。 din<br />

入力ポー ト は 1 ~ 256 ビ ッ ト にする必要があ り ます。 vin ポー ト は、din ポー ト の値が有効かど う か<br />

を示し、 有効なデータ のみを多重化し、 シフ ト レ ジ ス タ か ら出力し ます。 vout ポー ト は、 dout ポー<br />

ト の値が有効かど う かを示し ます。 出力ポー ト dout のサイズは入力ポー ト din のサイズ と同じにな<br />

ります。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Mode] : [Interleaver] または [Deinterleaver] を選択し ます。<br />

• [Number of branches] : 1 ~ 256<br />

• [Lengths of branches] : 1 ~ MAX。 MAX の値は、 ブ ラ ンチ数 と コ ア入力のサ イ ズに よ っ て異<br />

なります。 ブランチ長は、長さ 1 またはブランチ数の配列になり ます。 配列サ イ ズが 1 の場合、<br />

その値が続 く ブ ラ ンチ と の定数差 と し て使用 さ れます。 それ以外の場合、 ブ ラ ンチはそれぞれ<br />

独自の長さ にな り ます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Memory type] : [Automatically chosen]、 [Block RAM]、 [Distributed RAM] のいずれかを選<br />

択します。<br />

• [Pipeline <strong>for</strong> maximum per<strong>for</strong>mance] : コアをパイプライン接続します。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

204 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Interleaver Deinterleaver v4_0<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

Interleaver<br />

Deinterleaver<br />

v4_0<br />

ザイリンクス LogiCORE<br />

このブロックでは、次のザイリ ンクス LogiCORE の Interleaver/De-interleaver コ アが使用さ れま す。<br />

ザイ リンクス<br />

LogiCORE<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 205<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

Interleaver/<br />

De-Interleaver V4.0 • • • • •<br />

4 5<br />

R


R<br />

Interleaver Deinterleaver v5_0<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

ザイ リ ンクスの Interleaver/Deinterleaver ブロッ クは、 インターリーバま<br />

たはデインターリ ーバをインプ リ メ ン ト し ます。 インターリーバは、 1:1<br />

の確定的な方法でシンボルのシーケ ン ス順序を並び替え るデバイ スです。<br />

デイ ン ター リ ーバは、 こ の並び替え られたシーケ ン ス を再び格納するデバ<br />

イスです。<br />

ブロックがインターリーバ モー ド の場合、2 つの同期された整流器アーム (図の傍線矢印部分) を使<br />

用して、din ポー ト でサンプ リ ング さ れた入力データ が B シフ ト レ ジ ス タ で多重化さ れ、dout ポー<br />

ト へ出力さ れます。 B は、 ブ ロ ッ ク のパ ラ メ ータ ダイアログ ボックスで入力されたブランチ数で<br />

す。 ブランチ 0 には長さ 0 の、 ブランチ 1 には長さ L の、 ブラ ンチ 2 には長さ 2L のシフ ト レジス<br />

タが含まれます。 ブランチ (B-1) には、 長さ (B-1)L のシフ ト レジスタが含まれます。L は、 長さ 1<br />

の場合に配列 と し て入力されたブ ラ ンチ長を示す定数です。<br />

ブロックがデインターリーバ モー ド の場合、2 つの同期された整流器アーム (図の傍線矢印部分) を<br />

使用し て、 din ポー ト でサンプ リ ング された入力データが B シフ ト レジスタで多重化され、 dout<br />

ポー ト へ出力されます。 ブランチ 0 には長さ (B-1)*L の、ブラ ンチ (B-1) には長さ 0 のシフ ト レジ<br />

スタが含まれます。<br />

206 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Interleaver Deinterleaver v5_0<br />

ブランチ長が配列として指定されると、 ブロックはインターリーバ モー ド で もデイ ン ター リ ーバ<br />

モー ド で も同じ よ う に動作し ます。 こ れは、 配列ですべてのブ ラ ンチの長さ が完全に定義さ れる た<br />

めです。 配列には、 ブ ラ ンチ数 と 同じ長さ B が使用さ れる必要があ り ます。<br />

リセット ピン (rst) は、 整流器アーム をブ ラ ンチ 0 に設定し ますが、 データのブラ ンチは ク リ ア さ<br />

れません。<br />

ブロック インターフェイス<br />

Interleaver/Deinterleaver ブロックには 2 ~ 4 個の入力ポー ト と 2 個の出力ポー ト があ り ます。 din<br />

入力ポー ト は 1 ~ 256 ビ ッ ト にする必要があ り ます。 vin ポー ト は、din ポー ト の値が有効かど う か<br />

を示し、 有効なデータ のみを多重化し、 シフ ト レ ジ ス タ か ら出力し ます。 vout ポー ト は、 dout ポー<br />

ト の値が有効かど う かを示し ます。 出力ポー ト dout のサイズは入力ポー ト din のサイズ と同じにな<br />

ります。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Mode] : [Interleaver] または [Deinterleaver] を選択し ます。<br />

• [Number of branches] : 1 ~ 256<br />

• [Lengths of branches] : 1 ~ MAX。 MAX の値は、 ブ ラ ンチ数 と コ ア入力のサ イ ズに よ っ て異<br />

なります。 ブランチ長は、長さ 1 またはブランチ数の配列になり ます。 配列サ イ ズが 1 の場合、<br />

その値が続 く ブ ラ ンチ と の定数差 と し て使用 さ れます。 それ以外の場合、 ブ ラ ンチはそれぞれ<br />

独自の長さ にな り ます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Memory type] : [Automatically chosen]、 [Block RAM]、 [Distributed RAM] のいずれかを選<br />

択します。<br />

• [Pipeline <strong>for</strong> maximum per<strong>for</strong>mance] : コアをパイプライン接続します。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 207<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

Interleaver<br />

Deinterleaver<br />

v5_0<br />

R<br />

ザイリンクス LogiCORE<br />

このブロックでは、次のザイリ ンクス LogiCORE の Interleaver/De-interleaver コ アが使用さ れま す。<br />

ザイ リンクス<br />

LogiCORE<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

208 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

Interleaver/<br />

De-Interleaver V5.0 • • • • •<br />

4 5


Inverter<br />

Inverter<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Control Logic]、 [Math]、 [Index] ライブ<br />

ラリにリストされています。<br />

ブロック パラ メータ<br />

ザイ リ ンクスの Inverter ブ ロ ッ ク では、 固定小数点型の論理コ ンポーネン ト がビ ッ ト<br />

単位で計算されます。 こ のブ ロ ッ ク は、 合成可能な VHDL モジュールと してインプ<br />

リメントされます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 209<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

JTAG Co-Simulation<br />

JTAG Co-Simulation ブ ロ ッ ク を使用する と 、JTAG とパラレル ケーブル IV また<br />

はプラ ッ ト フ ォーム USB を使用したハード ウェア協調シ ミ ュレーシ ョ ンを実行<br />

できます。 このブロッ クのインターフェイスは、 広く普及している JTAG を活用<br />

して <strong>System</strong> <strong>Generator</strong> の Hardware in the Loop シ ミ ュ レーシ ョ ンをほかのさ ま<br />

ざまな FPGA プラッ ト フォームに拡張しています。<br />

協調シ ミ ュ レーシ ョ ン ブロッ クには、さまざまなポート インターフェイスが使用<br />

されます。 JTAG ハード ウ ェ ア協調シ ミ ュ レーシ ョ ンのためにモデルがイ ンプ リ<br />

メントされると、新しいライブラリが作成され、 このライブラリに元のモデルのゲートウェイ名 (<br />

サブシ ス テムが最上位レベルでない場合はポー ト 名) と同じポート名の付いたカスタムの JTAG<br />

Co-Simulation ブロ ッ クが含まれます。 このブロックは、Simulink のシ ミ ュレーシ ョ ン中に、FPGA<br />

ハー ド ウ ェ ア プ ラ ッ ト フ ォーム と の通信に使用されます。 こ のブロ ッ ク の入力ポー ト に書き込まれ<br />

たシ ミ ュレーシ ョ ン データ がハー ド ウ ェ アに渡されます。 データ がブ ロ ッ ク の出力ポー ト か ら読み<br />

出される と 、 ブ ロ ッ ク はハー ド ウ ェ アか ら適切な値を読み込んで、 出力ポー ト に駆動し ます。 こ れ<br />

で、 データ が Simulink で解釈でき る よ う にな り ます。 また、 ブロッ クではプラ ッ ト フォームの開<br />

始、 コ ン フ ィ ギ ュ レーシ ョ ン、 ス テ ッ プ、 終了が自動的に実行さ れます。<br />

JTAG ハード ウ ェアの要件と新規プラ ッ ト フ ォームのサポー ト 方法については、 イーサネッ ト ハー<br />

ドウェア協調シミュレーションを参照して く ださい。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Clock source] : シングル ステップまたはフ リーランニング クロック ソース を選択で き ます。<br />

シングル ステップ ク ロ ッ ク を選択する と 、 1 度に 1 クロック サイクルずつボードをステップ<br />

できます。 各クロック サイクル ステップは、 Simulink での一定の時間に相当し ます。 こ の ク<br />

ロック ソースを使用すると、 シミュレーション中の協調シミュレーション ハー ド ウ ェ アのビ<br />

ヘイ ビ アのビ ッ ト 精度および周期精度が、そのサブシ ス テムのシ ミ ュ レーシ ョ ン ビヘイ ビアよ<br />

り も正確にな り ます。 シングル ステップが不要で、フ リーランニング クロックでボードを実行<br />

できる場合もあり ます。 この場合、 ボードは Simulink シ ミ ュ レーシ ョ ン と 非同期で動作し ま<br />

す。<br />

• [Has combinational path] : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブロックの出力ポートから同<br />

じ ブ ロ ッ ク の入力ポー ト への直接組み合わせフ ィ ー ド バ ッ ク パス (同じブロッ クの出力ポート<br />

から入力ポートへの接続) が必要な場合も あ り ます。 出力ポー ト か ら入力ポー ト への直接<br />

フィードバック パスが必要で、デザ イ ンに入力ポー ト か ら出力ポー ト への組み合わせパスが含<br />

まれない場合は、 このチェ ッ ク ボックスをオフにすると、 デザインでフィードバック パスを<br />

使用できるようになります。<br />

• [Bitstream name] : JTAG 協調シ ミ ュ レーシ ョ ン プラッ ト フォーム用の協調シミ ュレーション<br />

FPGA コンフィギュレーション ファイルを指定します。 新規の協調シ ミ ュ レーシ ョ ン ブロッ<br />

ク がコ ンパイル中に作成される と 、 こ のパラ メ ータが自動的に設定され、 正しいコ ン フ ィ ギ ュ<br />

レーシ ョ ン ファイルが使用されます。 このパラ メータは、コンフィギュレーショ ン ファイルの<br />

デ ィ レ ク ト リ を変更し た場合にのみ修正し ます。<br />

210 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


JTAG Co-Simulation<br />

[Advanced] タブ<br />

• [Skip device configuration] : オンにする と 、 シ ミ ュ レーシ ョ ンの最初のデバイ ス コンフィギュ<br />

レーシ ョ ン段階を飛ばし ます。 シミュレーションの最後にリセット (または再プログラム) する<br />

必要がない協調シ ミ ュ レーシ ョ ン デザイ ンでは、 オンにし た方が効率的です。 オンにする と、<br />

協調シ ミ ュ レーシ ョ ン プ ラ ッ ト フ ォームはプ ロ グ ラ ム さ れないので、 注意が必要です。 ハー ド<br />

ウェア プラ ッ ト フォームに協調シミ ュレーショ ン ビ ッ ト ス ト リ ームが読み込まれないで、ハー<br />

ド ウ ェ ア協調シ ミ ュ レーシ ョ ンが実行さ れる可能性があ り ます。<br />

[Cable] タブ<br />

• [Download cable] : パラレル ケーブル IV およびプラ ッ ト フォーム USB ケーブルから、 JTAG<br />

ハード ウ ェ ア協調シ ミ ュ レーシ ョ ン用のケーブルを選択でき ます。<br />

• [Cable speed] : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンでは、 プロ グ ラ ム ケーブルをデフォル ト の<br />

最大速度よ り も少ない周波数で動作 さ せる必要のあ る こ と があ り ます。 このメニューを使用す<br />

ると、ハードウェア設定にあったケーブル速度を選択できます。 通常、 デフ ォル ト の速度で問<br />

題あ り ませんが、<strong>System</strong> <strong>Generator</strong> で協調シ ミ ュレーシ ョ ン用にデバイスがコンフ ィ ギュレー<br />

シ ョ ンでき なかった場合は、 速度の遅いケーブルを使用し てみて く ださ い。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 211<br />

リリース 9.2.00 2007 年 8 月<br />

R


LFSR<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [<strong>DSP</strong>]、 [Memory]、 [Index] ライブラリ<br />

にリストされています。<br />

ブロック インターフェイス<br />

ザイ リ ンクスの LFSR ブロックは、LFSR (Linear Feedback Shift Register)<br />

をインプリ メント します。 このブロックでは、 XOR または XNOR のいず<br />

れかを使用してガロアおよびフ ィボナッチ構造の両方がサポート されるほ<br />

か、 リ ロー ド 可能な入力を使用し て、 レ ジ ス タ の値をいつで も変更で き ま<br />

す。 LFSR の出力 と リ ロー ド 可能な入力は、 シ リ アル ポー ト またはパラ レ<br />

ル ポートのいずれかでコンフィギュレーショ ンできます。<br />

上の表にあ る よ う に、 こ のブロ ッ ク には 0 ~ 4 の入力ポー ト と 1 つの出力ポー ト があ り ます。 選択<br />

したコンフィギュレーションで 0 入力が必要 と さ れる と 、 LFSR は指定し た初期シー ド 値で開始さ<br />

れるよ うに設定され、LFSR のス ト ラ クチャ タイプ、ゲート タ イ プ、 初期シー ド 値に よ っ て決ま る<br />

反復可能な ス テー ト のシーケ ン ス を実行し ます。<br />

オプシ ョ ンの din および load ポー ト を使用する と 、 ラ ン タ イ ム中に LFSR の現在の値を変更でき<br />

ます。 load が読み込みを終了する と 、 LFSR は 0 入力の場合のよ う に動作し、 新しいシーケン ス を<br />

開始し ます。 こ のシーケ ン スは、 新し く 読み込まれたシー ド 値、 およびス ト ラ ク チャ タイプ、ゲー<br />

ト タ イ プに対し て統計的に コ ン フ ィ ギ ュ レーシ ョ ン さ れた LFSR を基に作成されます。<br />

オプシ ョ ンの rst ポー ト は、 統計的に指定された LFSR の初期シード値をリ ロードし、 rst 信号が<br />

Low になる まで リ ロード し続けます。 オプシ ョ ンの en ポー ト が Low になる と、 LFSR は en が次<br />

に High になるまでその値のままにな り ます。<br />

ブロック パラ メータ<br />

ポー ト名 ポー ト の説明 ポー ト タイプ<br />

din リ ロー ド 可能なシー ド 値のデータ入力 オプシ ョ ンのシ リ アルま たはパラ レ<br />

ル入力<br />

load din の ロー ド 信号 オプシ ョ ンのブール入力<br />

rst リ セ ッ ト 信号 オプシ ョ ンのブール入力<br />

en イ ネーブル信号 オプシ ョ ンのブール入力<br />

dout LFSR のデータ出力 必須のシ リ アルま たはパ ラ レル出力<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Type] : [Fibonacci] または [Galois] を選択でき ま す。 このフィ ールド では、フィ ードバックのスト<br />

ラ ク チャ を 指定し ま す。 [Fibonacci] を 選択する と 、 レ ジス タ チェ ーン の始ま り に XOR (または<br />

XNOR) ゲート が 1 つ含ま れ、 タ ッ プと 最初のレ ジス タ に送信さ れる 出力がこ のゲート を 介し ま<br />

212 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


LFSR<br />

す。 [Galois] を 選択する と 、 各タ ッ プに XOR (または XNOR) ゲート が 1 つ含ま れ、 チェ ーンの最<br />

後のレ ジス タ から の出力と そのタ ッ プのレ ジス タ への入力がこ のゲート を 介し ま す。<br />

• [Gate type] : [XOR] または [XNOR] を選択します。 このフィールドでは、フィードバック信号<br />

で使用されるゲー ト を指定し ます。<br />

• [Number of bits in LFSR] : このフィールドでは、 LFSR チェーンのレジスタ数を指定します。<br />

こ の値によ って、 パラ レルに選択された場合の入力と 出力のサイ ズが決ま り ます。<br />

• [Feedback polynomial] : フィードバック チェーンのタ ップ ポ イ ン ト を指定し ます。 入力する<br />

値は、 16 進数を一重引用符で囲んだ値にする必要があ り ます。 こ の多項式の LSB は常に 1 に<br />

設定する必要があ り 、 MSB は暗示的に 1 にな り ますが、 16 進数入力では指定 さ れません。 こ<br />

の論理式の指定方法 と 反復シーケ ン ス を最大数に設定する方法については、 下の LFSR コアの<br />

データ シー ト の リ ン ク を参照し て く だ さ い。<br />

• [Initial value] : LFSR が反復シーケ ン ス を開始する と き の初期シー ド 値を指定し ます。 この初<br />

期値は、 ゲー ト タイプに XOR を選択し た場合はすべてを 0 にせず、 XNOR を選択した場合<br />

はすべてを 1 にしないよ うにしてください。 これらの値は、 LFSR を停止してしまいます。<br />

[Advanced] タブ<br />

[Advanced] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Parallel output] : LFSR チェーンのビ ッ ト すべてが出力に接続 さ れる か、 チェーン (シリアル<br />

またはパラレル) の最後のレ ジ ス タ にのみ接続さ れる かを指定し ます。<br />

• [Use reloadable seed values] : ランタイム中にダイナミ ックな LFSR シード値を リ ロードする<br />

のに、 入力が必要かど う かを指定し ます。<br />

• [Parallel input] : リ ロー ド 可能な入力シー ド 値を一度に 1 ビッ ト シフ ト させるか、 パラレルで<br />

入力されるかを指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 213<br />

リリース 9.2.00 2007 年 8 月<br />

R


Logical<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Control Logic]、 [Math]、 [Index] ライブ<br />

ラリにリストされています。<br />

ザイ リンクスの Logical ブロッ クでは、 2、 3、 または 4 つの固定小数点の値のビ ッ ト<br />

単位の論理演算が実行さ れます。 オペラ ン ド には、 2 進小数点の位置を揃え る ため、<br />

必要に応じ て 0 がパディングされたり、 符号が拡張されたり します。 これらの値で<br />

論理演算が実行さ れ、 結果が出力ポー ト に送信さ れます。<br />

こ のブ ロ ッ ク は、 ハー ド ウ ェ アでは合成可能な VHDL としてインプリメントされま<br />

す。 論理ゲー ト のツ リ ー構造を作成する場合は、 ロ ジ ッ ク が合成およびマ ッ プでコ ラ プス さ れる の<br />

で、 こ の合成可能な イ ンプ リ メ ンテーシ ョ ンが最適な方法にな り ます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Logical function] : ビ ッ ト 単位の論理演算の AND、 NAND、 OR、 NOR、 XOR、 XNOR のい<br />

ずれかを選択し ます。<br />

• [Number of inputs] : ブロッ クの出力のビッ ト数 (1 ~ 1024) を指定し ます。<br />

[Output Type] タブ<br />

[Output Type] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Align binary point] : 2 進小数点で自動的に揃え る かど う かを指定し ます。 オフの場合、すべて<br />

の入力の 2 進小数点の位置が同じにな り ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 ザイ リンクス LogiCORE は使用 されません。<br />

214 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MCode<br />

MCode<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Control Logic]、 [Math]、 [Index] ライブラリにリストされ<br />

ています。<br />

ザイ リ ンクスの MCode ブロッ クは、 Simulink でユーザーの提供する MATLAB 関<br />

数を実行する ためのコ ンテナです。 M 関数の名前はブロックのパラ メータから指定<br />

します。 このブロックは、M コード を実行して Simulink のシ ミ ュレーシ ョ ン中にブ<br />

ロ ッ ク の出力を計算し ます。 同じコードは、 ハード ウェアが生成される と きに、 同<br />

等のビヘイ ビア レベルの VHDL/Verilog に直接変換されます。<br />

ブロックの Simulink インターフェイスは MATLAB 関数 と ブ ロ ッ ク パラ メータを<br />

基に決定さ れます。 パ ラ メ ータ ご と に関数への入力ポー ト が 1 つ と 、 関数の返す値それぞれに出力<br />

ポー ト が 1 つ使用さ れます。 ポート名と順序は、 パラ メータ と返し値の名前と順序に対応します。<br />

MCode ブロックでは、 限られた MATLAB 言語のサブセ ッ ト がサポー ト さ れてい ます。 こ のサブ<br />

セットは、演算ファンクション、有限ステート マシン、 制御ロ ジ ッ ク を イ ンプ リ メ ン ト する場合に<br />

便利です。 完全な MATLAB アルゴ リ ズム を固定小数点型の FPGA ハー ド ウ ェ アにイ ンプ リ メ ン ト<br />

する場合は、 ザ イ リ ン ク スの Accel<strong>DSP</strong> 合成ツールの使用を考慮し て く だ さ い。 Accel<strong>DSP</strong> は、 カ<br />

スタム IP ブ ロ ッ ク を高レベルの浮動小数点型 MATLAB か ら作成する のに使用で き、 こ のブロ ッ<br />

クはザイ リンクス <strong>DSP</strong> ブ ロ ッ ク セ ッ ト と 組み合わせて使用で き ます。<br />

MCode ブ ロ ッ ク を作成する場合、 次の 3 つの主な コーデ ィ ン グ規則に必ず従って く だ さ い。<br />

• すべてのブ ロ ッ ク の入力 と 出力はザ イ リ ン ク ス固定小数点型にする必要があ り ます。<br />

• ブロックには、 出力ポートが少なく と も 1 つは必要です。<br />

• ブロックのコードは、 MATLAB パスかブ ロ ッ ク を使用する モデル と 同じデ ィ レ ク ト リ にあ る<br />

必要があ り ます。<br />

MATLAB の FPGA へのコ ンパイルには、 MCode の関数例が 3 つ記述さ れています。 最初の例に<br />

は、 入力の最大値を返す xlmax 関数が含まれ、 2 つ目の例は、 単純な演算を実行する方法を示し て<br />

います。 3 つ目の例は、 有限ス テー ト マシンの構築方法を示し ています。 詳細については、 その他<br />

の例と チュー ト リ アルを参照して く ださい。<br />

MCode ブロックのコンフ ィギュレーション<br />

ブロックの M コー ド 関数の名前は [MATLAB function] で設定し ます。 パ ラ メ ータ を設定する と き<br />

に、 次のいずれかのデ ィ レ ク ト リ の 1 つにその関数があ る必要があ り ます。<br />

• モデル ファイルがあるディレクト リ<br />

• private という名前のモデル ディレク ト リのサブディレク ト リ<br />

• MATLAB パスのディ レク ト リ<br />

ブロックのアイコンには、 M 関数の名前が表示さ れます。 たとえば、xlmax 関数を含む xlmax.m<br />

ファイルがあるとします。<br />

function z = xlmax(x, y)<br />

if x > y<br />

z = x;<br />

else<br />

z = y;<br />

end<br />

xlmax 関数に基づいた MCode ブロックには、 x と y という入力ポート と、 z という出力ポートが<br />

含まれます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 215<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

次の図は、 xlmax 関数を使用する ために MCode ブロ ッ クを設定したと ころを示しています。<br />

このモデルがコンパイルされると、 xlmax の MCode ブ ロ ッ ク は次の図の よ う に表示さ れます。<br />

MATLAB 言語のサポー ト<br />

MCode ブロックでは、 次の MATLAB 言語構文がサポー ト さ れます。<br />

• 代入文<br />

• if/else/elseif と end 文 (それのみで も、 組み合わせて も使用可能)<br />

• switch 文<br />

• 加算 と 減算のみを行 う 演算式<br />

• 加算<br />

• 減算<br />

• 乗算<br />

• 2 のべき乗での除算<br />

216 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MCode<br />

• 比較演算子<br />

< より小さい<br />

より大きい<br />

>= それ以上<br />

== 等式<br />

~= 不等式<br />

• 論理演算子<br />

& And<br />

| Or<br />

~ Not<br />

MCode ブロックでは、 次の MATLAB 関数がサポー ト さ れます。<br />

• データ型変換。 サポー ト さ れるデータ型は、ザ イ リ ン ク スの固定小数点型 xfix のみです。 xfix()<br />

関数は、 このデータ型にデータを変換します。 変換は整数の場合は陰関数で、 固定小数点の定<br />

数の場合は陽関数で実行 さ れます。 すべての値は、 ス カ ラ値にする必要があ り ます。 アレ イ値<br />

はサポー ト されていません。<br />

• xfix プ ロパテ ィ を返す関数 :<br />

xl_nbits() ビッ ト数を返します<br />

xl_binpt() 2 進小数点の位置を返し ます<br />

xl_arith() 演算タ イ プを返し ます<br />

• ビ ッ ト 単位の論理関数<br />

xl_and() ビッ ト単位の AND<br />

xl_or() ビッ ト単位の OR<br />

xl_xor() ビッ ト単位の XOR<br />

xl_not() ビッ ト単位の NOT<br />

• シフ ト関数 : xl_lsh() および xl_rsh()<br />

• スライス関数 : xl_slice()<br />

• 連結関数 : xl_concat()<br />

• 再解釈関数 : xl_<strong>for</strong>ce()<br />

• 内部 ト ラ イ ス テー ト 変数 : xl_state()<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 217<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

データ型<br />

• MATLAB 関数<br />

xfix データ型には、 符号な し固定小数点型 (xlUnsigned)、 符号付き固定小数点型 (xlSigned)、 ブー<br />

ル型 (xlBoolean) の 3 つがあ り ます。 こ れ ら のデータ型を演算する と 、 符号付き ま たは符号な し の<br />

固定小数点の値にな り ます。 比較演算子の結果は、 ブール型にな り ます。 比較演算子は、 データ型<br />

を混ぜて使用で き る場合は、 どの xfix 型にで もでき ます。 ブール変数はブール変数と比較されます<br />

が、 固定小数点型の値 と は比較 さ れず、 演算子は互換性があ り ません。 論理演算子は、 ブール変数<br />

にのみ使用で き ます。 演算はすべて完全精度で実行 さ れます。 こ の場合、 情報を失わないだけの最<br />

小限の精度が使用されます。<br />

リテラル定数<br />

代入文<br />

整数型、 浮動小数点型、 ブール型の リ テ ラ ル定数がサポー ト さ れます。 整数の リ テ ラ ル定数は、 2 進<br />

小数点の位置が 0 の適切な幅で自動的に xfix 値に変換 さ れます。 浮動小数点型の リ テ ラ ル定数は、<br />

xfix() 変換関数を使用し て xfix に変換する必要があ り ます。 定義済みの MATLAB 値の true と<br />

false は、 自動的にブール型の リ テ ラ ル定数に変換さ れます。<br />

代入文の左側に含める こ と ができ る変数は 1 つだけです。 変数は、 何度で も割 り 当て る こ と がで き<br />

ます。<br />

制御フ ロー<br />

disp() さまざまな値を表示<br />

error() メ ッ セージおよび停止を表示<br />

isnan() 数字が NaN かど うかをテス ト<br />

NaN() NaN (Not-a-Number) を返却<br />

num2str() 数値を文字列に変換<br />

ones(1,N) 1 行 N 列の要素がすべて 1 の行列を出力<br />

します。<br />

pi() 円周率 (π) を返し ます<br />

zeros(1,N) 1 行 N 列の要素がすべて 0 の行列を出力<br />

します。<br />

if 文を使用し た条件文は、 ブール型の値を求める よ う にする必要があ り ます。 switch 文には、 case<br />

と otherwise 節を含める こ とができ ます。 switch セレクタ とその case 文のデータ型は互換性があ る<br />

ようにする必要があるので、switch セレクタは case 文がそ う であれば、 ブール型にでき ます。<br />

switch 文の case はすべて定数にする必要があ り ます。 こ の case は入力値には依存で き ません。<br />

同じ変数を制御文の複数の分岐に代入する場合、 代入さ れたデータ型は互換性があ る よ う にする必<br />

要があ り ます。 た と えば、 次の よ う に指定し ます。<br />

if (u > v)<br />

x = a;<br />

else<br />

x = b;<br />

end<br />

218 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MCode<br />

定数式<br />

これが使用できるのは、 a と b の両方がブール型ま たは演算型になってい る場合のみです。<br />

定数式 と は、 その値を表す定数であ り 、 入力引数の値には依存し ません。 たとえば、 変数 c を次の<br />

ように定義したとします。<br />

a = 1;<br />

b = a + 2;<br />

c = xfix({xlSigned, 10, 2}, b + 3.345);<br />

こ れは、 定数を要求する どの文で も使用で き ます。<br />

xfix() Conversion<br />

xfix() 変換関数では、 double が xfix に変換されるか、 1 つの xfix が異な る特性を持つ別のデータ<br />

型に変更されます。 こ の変換関数の呼び出し文は、 次の よ う にな り ます。<br />

x = xfix(type_spec, value)<br />

こ の場合、 x は xfix を受け取る変数で、 type_spec は作成する xfix のデータ型を指定する セル配列<br />

で、 value は演算される値です。 value は、 浮動小数点型ま たは xfix 型にでき ます。 セル配列を示す<br />

type_spec は、 通常の MATLAB 手法では次の よ う に { } を使用して定義します。<br />

xfix({xlSigned, 20, 16, xlRound, xlWrap}, 3.1415926)<br />

この場合、 xfix で π の近似値が返 り ます。 こ の近似値は、 符号付き で、 20 ビット (小数点以下の<br />

ビット 16) を占め、 丸めで量子化さ れ、 オーバーフ ローで ラ ッ プ さ れた値にな り ます。<br />

type_spec には、 1、 3、 または 5 個のエレ メ ン ト が含まれます。 エレ メン トの中には、 削除できる<br />

ものもあります。 エレ メ ン ト が削除さ れる と 、 デフ ォル ト のエレ メ ン ト 設定が使用さ れます。 エレ<br />

メ ン ト では、 データ型、 データ幅、 2 進小数点の位置、 量子化モー ド 、 オーバーフ ロー モード など<br />

のプロパテ ィ が指定でき ます (表示順どお り )。 データ型は、xlBoolean、xlUnsigned または xlSigned<br />

にでき ます。 xlBoolean の場合、 追加エレ メ ン ト は必要な く 、 追加も で き ません。 ほかのデータ型の<br />

場合は、 データ幅 と 2 進小数点を入力する必要があ り ます。 量子化モー ド と オーバーフ ロー モード<br />

は、 オプシ ョ ンですが、 どち らか 1 つを指定し た場合は、 も う 一方 も必ず指定する必要があ り ます。<br />

量子化の値には、 xlTruncate、 xlRound、 xlRoundBanker を使用でき ます。 デフォル ト は xlTruncate<br />

です。 オーバーフ ローの値には、 xlWrap、 xlSaturate、 xlThrowOverflow を使用でき ます。<br />

xlThrowOverflow の場合、オーバーフ ローがシ ミ ュ レーシ ョ ン中に発生する と 、例外が発生し ます。<br />

type_spec の値はすべて コ ンパイル時に既知の値であ る必要があ り ます。 こ の type_spec 値は関数<br />

への入力値には依存で き ません。<br />

次は、 xfix() 変換の別の例です。<br />

width = 10, binpt = 4;<br />

z = xfix({xlUnsigned, width, binpt}, x + y);<br />

この z へは、 量子化に xlTruncate、 オーバーフローに xlWrap を使用した 10 ビット幅 (小数点以下<br />

のビッ ト 4) の符号な し固定小数点型に x + y を変換し た結果が代入さ れます。<br />

複数の xfix() 呼び出し で同じ type_spec 値が必要な場合は、type_spec を変数に代入し、xfix() 呼び<br />

出し で こ の変数を使用し ます。 た と えば、 次の よ う に使用で き ます。<br />

proto = {xlSigned, 10, 4};<br />

x = xfix(proto, a);<br />

y = xfix(proto, b);<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 219<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

xfix プロパティ : xl_arith、 xl_nbits、 xl_binpt<br />

xfix には、 それぞれ演算タ イプ、 ビ ッ ト 幅、 2 進小数点を示す 3 つのプロパテ ィ が含まれます。<br />

MCode ブロッ クには、 これらの 3 つのプ ロパテ ィ を固定小数点の値で取得する ための関数が 3 つ<br />

含まれます。 この 3 つの関数の結果は定数で、 Simulink がモデルを コンパイルした と きに評価され<br />

ます。<br />

a = xl_arith(x) 関数は、 入力数 x の演算タ イプを返し ます。 返される値は、xlUnsigned の場合が 1、<br />

xlSigned の場合が 2、 xlBoolean の場合が 3 にな り ます。<br />

n = xl_nbits(x) 関数は、 入力数 x の幅を返し ます。<br />

b = xl_binpt(x) 関数は、 入力数 x の 2 進小数点を返し ます。<br />

ビ ッ ト 単位の演算子 : xl_or、 xl_and、 xl_xor、 xl_not<br />

MCode ブロックには、 xl_or、 xl_and、 xl_xor、 xl_not と い う ビ ッ ト 単位の論理演算を行 う 4 つの<br />

ビルト イン関数が含まれています。<br />

関数 xl_or、 xl_and、 xl_xor は、 ビ ッ ト 単位の論理 OR、 AND、 XOR をそれぞれ実行します。 関数<br />

はそれぞれ次の形式で記述し ます。<br />

x = xl_op(a, b, Ö).<br />

関数はそれぞれ、 少な く と も 2 つの固定小数点が取 り 入れら れ、 1 つの固定小数点が返 さ れます。<br />

入力引数はすべて 2 進小数点で揃え ら れます。<br />

関数 xl_not では、 ビ ッ ト 単位の論理 NOT が実行されます。 形式は、 x = xl_not(a) のよ うになり ま<br />

す。 入力引数に使用さ れる のは xfix 数 1 つだけで、 1 つの固定小数点の値が返さ れます。<br />

次は、 こ れ ら の関数を使用し た例です。<br />

X = xl_and(a, b);<br />

Y = xl_or(a, b, c);<br />

Z = xl_xor(a, b, c, d);<br />

N = xl_not(x);<br />

シフ ト演算子 : xl_rsh および xl_lsh<br />

xl_lsh および xl_rsh 関数では、 固定小数点型ビ ッ ト のシーケ ン ス を シフ ト で き ます。 関数は次の形<br />

式で記述し ます。<br />

x = xl_lsh(a, n) および x = xl_rsh(a, n) (a は xfix 値で、 n はシフ ト するビ ッ ト 数)<br />

固定小数点の値が n ビッ ト分左または右にシフト されます。 右にシフ ト (xl_rsh) する と 、 固定小数<br />

点が LSB に向かって動き ます。 左にシフ ト (xl_lsh) する と 、 固定小数点が MSB に向かって動き ま<br />

す。 どち ら のシフ ト 関数も完全精度でシフ ト し ます。 ビ ッ ト はどれ も削除されず、 出力精度は必要<br />

であればシフ ト された 2 進小数点の位置に合わせて調整 さ れます。<br />

次はその例です。<br />

% left shift a 5 bits<br />

a = xfix({xlSigned, 20, 16, xlRound, xlWrap}, 3.1415926)<br />

b = xl_rsh(a, 5);<br />

出力 b は、 21 ビッ トで、2 進小数点の位置がビ ッ ト 21 にある xlSigned 型です。<br />

220 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MCode<br />

スライス関数 : xl_slice<br />

xl_slice 関数を使用する と 、固定小数点型ビ ッ ト のシーケ ン スにア ク セ スで き ます。 関数は次の形式<br />

で記述し ます。<br />

x = xl_slice(a, from_bit, to_bit)<br />

固定小数点の各ビ ッ ト は、 LSB の 0 から MSB に向かって、 連続し た数字で イ ンデ ッ ク スが付き ま<br />

す。 たとえば、8 ビッ ト幅で 2 進小数点の位置が 0 にあ る場合、 LSB のインデッ クスは 0 に、MSB<br />

のインデックスは 7 にな り ます。from_bit または to_bit 引数が入力数の イ ンデ ッ ク ス範囲を超え る<br />

と、 エラーになり ます。 関数を実行し た結果は、 0 の位置に 2 進小数点があ る符合な し固定小数点<br />

にな り ます。<br />

次はその例です。<br />

% slice 7 bits from bit 10 to bit 4<br />

b = xl_slice(a, 10, 4);<br />

% to get MSB<br />

c = xl_slice(a, xl_nbits(a)-1, xl_nbits(a)-1);<br />

連結関数 : xl_concat<br />

x = xl_concat(hi, mid, ..., low) 関数では、 複数の固定小数点の値が連結さ れ、 1 つの固定小数点値<br />

が作成されます。 最初の入力引数が MSB に、 最後の入力引数が LSB にな り ます。 出力は、 0 の位<br />

置に 2 進小数点があ る符合な し固定小数点にな り ます。<br />

再解釈関数 : xl_<strong>for</strong>ce<br />

x = xl_<strong>for</strong>ce(a, arith, binpt) 関数は、 出力を新し いデータ型に し ます。 arith はその新しい演算型に、<br />

binpt はその新しい 2 進小数点の位置にな り ます。 arith は、xlUnsigned、xlSigned または xlBoolean<br />

のいずれかにで き ます。 binpt は、 0 ~ ビッ ト幅にしないと、 エラーになり ます。<br />

ステート変数 : xl_state<br />

MCode ブロックには、1 つのシ ミ ュ レーシ ョ ン段階か ら次の段階にな る と き に値を保持する内部ス<br />

テー ト 変数を含める こ と ができ き ます。 ステート変数は、MATLAB キーワードの persistent で宣言<br />

でき、 最初に xl_state 関数呼び出し で代入する必要があ り ます。<br />

次のコード は、 4 ビット アキュムレータの例です。<br />

function q = accum(din, rst)<br />

init = 0;<br />

persistent s, s = xl_state(init, {xlSigned, 4, 0});<br />

q = s;<br />

if rst<br />

s = init;<br />

else<br />

s = s + din;<br />

end<br />

ステート変数 s は、 persistent に宣言され、 s への最初の代入は xl_state を起動した結果になってい<br />

ます。 xl_state 関数では、 2 つの引数が使用さ れます。 1 つは初期値で、 定数にする必要があ り 、 も<br />

う 1 つはス テー ト 変数の精度で、 xfix 関数呼び出し で説明 さ れてい る よ う なセル配列型か、 xfix 型<br />

にでき ます。 上記の コー ド の場合、 s = xl_state(init, din) では、 ステー ト 変数の s に din が精度と し<br />

て使用されます。 xl_state 関数は、 persistent 変数に代入する必要があ り ます。<br />

xl_state 関数は、 次の よ う に動作し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 221<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

1. 最初のシ ミ ュ レーシ ョ ン サイクルで、 xl_state 関数は指定し た精度で ス テー ト 変数を初期化し<br />

ます。<br />

2. 次のシ ミ ュ レーシ ョ ン サイクルで、xl_state 関数は最後の ク ロ ッ ク サイクルから残っているス<br />

テー ト 値を取 り 出し、 その値を指定し た精度で対応する変数に代入し ます。<br />

ステート変数の値は、 v = xl_state(init, precision) で返されます。 最初の入力引数 init は初期値、 2<br />

つ目の引数 precision は こ のス テー ト 変数の精度を表し ます。 precision は、{type, nbits, binpt} また<br />

は {type, nbits, binpt, quantization,overflow} のセル配列型にで き ます。 precision は、xfix 型の数に<br />

もできます。<br />

ベク タ のオブジェ ク ト は、 v = xl_state(init, precision, maxlen) で返さ れま す。 ベク タ は、 init で初期<br />

化さ れ、 最大 maxlen までの長さになり ます。 ベク タ は、 init で初期化さ れる ので、 たと えば、 v =<br />

xl_state(zeros(1, 8), prec, 8) では 0 が 8 つのベク タ が作成さ れ、v = xl_state([], prec, 8) では最大長 8<br />

の空のベク タ が作成さ れ、v = xl_state(0, prec, 8) では最大長 8 の 0 が 1 つのベク タ が作成さ れま す。<br />

ベクタ型のステート変数は、両端 (フロント エンドがアド レス 0 のエレ メ ン ト 、 バッ ク エンドが長<br />

さ - 1 のエレ メ ン ト) で終わる キ ューです。<br />

ベク タ には、 次の計算式が使用で き ます。<br />

val = v(idx); アドレス idx のエレ メ ン ト の値を返し ます。<br />

v(idx) = val; アドレス idx のエレ メ ン ト に val を代入します。<br />

f = v.front; フロント エンドの値を返します。 ベクタが空の<br />

場合は、 エ ラ ーにな り ます。<br />

v.push_front(val); val をフロント エンド まで押し出し、 ベク タの<br />

長さを 1 増加し ます。 ベ ク タ がフルの場合は、<br />

エラーになり ます。<br />

v.pop_front; フロント エンドから 1 つエレ メ ン ト を取 り 出<br />

し、 ベクタの長さを 1 削減し ます。 ベ ク タ が空<br />

の場合は、 エラーにな り ます。<br />

b = v.back; バック エンドの値を返します。 ベクタが空の場<br />

合は、 エラーにな り ます。<br />

v.push_back(val); val をバッ ク エンド まで押し出し、 ベク タの長<br />

さを 1 増加し ます。 ベ ク タ がフルの場合は、 エ<br />

ラーになり ます。<br />

v.pop_back; バック エンドから 1 つエレ メ ン ト を取 り 出し、<br />

ベクタの長さを 1 削減し ます。 ベ ク タ が空の場<br />

合は、 エラーにな り ます。<br />

v.push_front_pop_back(val); val をフロント エンド ま で押し 出し 、 バッ ク エ<br />

ンド からエレメ ント を 1 つ取り 出し ま す。 シフト<br />

演算で、 ベク タ の長さ は変わり ま せん。 これを実<br />

行する 場合は、 ベク タ を 空にはでき ま せん。<br />

full = v.full; ベクタがフルの場合は true を、 それ以外の場合<br />

は false を返し ます。<br />

222 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MCode<br />

empty = v.empty; ベク タが空の場合は true を、それ以外の場合は<br />

false を返します。<br />

len = v.length; ベクタのエレ メン ト数を返します。<br />

ステー ト 変数を問い合わせるベク タの メ ソ ッ ド は 「ク エ リ ー メ ソ ッ ド 」 と 呼ばれます。 クエリー メ<br />

ソッドは、値を返します。 クエリー メソッドには、v(idx)、v.front、v.back、v.full、v.empty、v.length、<br />

v.maxlen などがあり ます。 ス テー ト 変数を変更するベク タ の メ ソ ッ ド は、「ア ッ プデー ト メソッド」<br />

と 呼ばれます。 アップデート メ ソッドは値を返しません。 アップデート メ ソッドには、v(idx) = val、<br />

v.push_front(val)、 v.pop_front、 v.push_back(val)、 v.pop_back、 v.push_front_pop_back(val) など<br />

があ り ます。 ベクタのクエリー メ ソ ッ ド は、 すべてシ ミ ュ レーシ ョ ン サ イ ク ル中に、 ア ッ プデー ト<br />

メソッドよりも前に起動される必要があります。 この順序が違う と、 モデルのコンパイル中にエ<br />

ラーになり ます。<br />

MCode ブ ロ ッ ク では、 ベ ク タ型のス テー ト 変数がその使用方法に基づいて、 レ ジ ス タ のベ ク タ、 遅<br />

延ラ イ ン、 ア ド レ ス指定可能なシフ ト レジスタ、 シングル ポー ト ROM、 シングル ポー ト RAM<br />

などにマップされるこ とがあり ます。 xl_state 関数は、MATLAB の一次元配列を イ ンデ ッ ク ス 0 の<br />

定数配列に変換する ために使用する こ と も で き ます。 MCode ブロックでベクタ型のステート変数<br />

を FPGA デバイ スにマ ッ プで き ない場合は、 モデルのネ ッ ト リ ス ト 生成中にエ ラー メッセージが<br />

表示されます。 次は、 ベ ク タ型のス テー ト 変数を使用し た例です。<br />

遅延ラ イ ン<br />

次の関数のス テー ト 変数は、 遅延ラ イ ンにマ ッ プ さ れます。<br />

function q = delay(d, lat)<br />

persistent r, r = xl_state(zeros(1, lat), d, lat);<br />

q = r.back;<br />

r.push_front_pop_back(d);<br />

レジスタのライン<br />

次の関数のス テー ト 変数は、 レ ジ ス タ の ラ イ ンにマ ッ プ さ れます。<br />

function s = sum4(d)<br />

persistent r, r = xl_state(zeros(1, 4), d);<br />

S = r(0) + r(1) + r(2) + r(3);<br />

r.push_front_pop_back(d);<br />

定数のベ ク タ<br />

次の関数のステー ト 変数は、 定数のベク タにマ ッ プされます。<br />

function s = myadd(a, b, c, d, nbits, binpt)<br />

p = {xlSigned, nbits, binpt, xlRound, xlSaturate};<br />

persistent coef, coef = xl_state([3, 7, 3.5, 6.7], p);<br />

s = a*coef(0) + b*coef(1) + c*coef(2) + c*coef(3);<br />

ア ド レス指定可能なレジス タ<br />

次の関数のス テー ト 変数は、 ア ド レ ス指定可能なシフ ト レジスタにマップされます。<br />

function q = addrsr(d, addr, en, depth)<br />

persistent r, r = xl_state(zeros(1, depth), d);<br />

q = r(addr);<br />

if en<br />

r.push_front_pop_back(d);<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 223<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

end<br />

シングル ポー ト ROM<br />

次の関数のス テー ト 変数は、 シングル ポー ト ROM にマップされます。<br />

function q = addrsr(contents, addr, arith, nbits, binpt)<br />

proto = {arith, nbits, binpt};<br />

persistent mem, mem = xl_state(contents, proto);<br />

q = mem(addr);<br />

シングル ポー ト RAM<br />

次の関数のス テー ト 変数は、 シングル ポー ト RAM にマップされます。<br />

MATLAB 関数<br />

disp()<br />

function dout = ram(addr, we, din, depth, nbits, binpt)<br />

proto = {xlSigned, nbits, binpt};<br />

persistent mem, mem = xl_state(zeros(1, depth), proto);<br />

dout = mem(addr);<br />

if we<br />

mem(addr) = din;<br />

end<br />

論理式の値を表示し ます。 MATLAB コンソール ウ ィンドウに表示させるには、MCode ブロックの<br />

パラ メータ ダイアログ ボックスの [Advanced] タブで [Enable printing with disp] をオンにしてお<br />

く必要があります。 こ の引数は、 文字列、 xfix 型の数字、 MCode のステート変数のいずれかにで<br />

きます。 xfix 型の数字の場合は、 データ型、 2 進数値、 倍精度値が表示されます。 たとえば、変数 x<br />

に xfix({xlSigned, 10, 7}, 2.75) が代入さ れる場合、 disp(x) では次が表示 さ れます。<br />

type: Fix_10_7, binary: 010.1100000, double: 2.75<br />

こ の引数がベク タ型のス テー ト 変数の場合、 disp() ではすべてのエレ メ ン ト の最大長、 現在の長 さ、<br />

2 進数値およびダブル型の値が表示さ れます。 [Enable printing with disp] をオンにしておく と、<br />

disp() 関数が起動された と きに、 各シ ミ ュ レーシ ョ ン段階でそのブロ ッ クのタ イ ト ル ラインが表示<br />

されます。 タイトル ラインには、ブロック名、Simulink のシ ミ ュ レーシ ョ ン時間、 FPGA のクロッ<br />

ク数などが含まれます。<br />

次の MCode の関数には、 disp() 関数を使用し た例が複数含まれています。<br />

function x = testdisp(a, b)<br />

persistent dly, dly = xl_state(zeros(1, 8), a);<br />

persistent rom, rom = xl_state([3, 2, 1, 0], a);<br />

disp('Hello World!');<br />

disp(['num2str(dly) is ', num2str(dly)]);<br />

disp('disp(dly) is ');<br />

disp(dly);<br />

disp('disp(rom) is ');<br />

disp(rom);<br />

a2 = dly.back;<br />

dly.push_front_pop_back(a);<br />

x = a + b;<br />

disp(['a = ', num2str(a), ', ', ...<br />

'b = ', num2str(b), ', ', ...<br />

'x = ', num2str(x)]);<br />

disp(num2str(true));<br />

224 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MCode<br />

disp('disp(10) is');<br />

disp(10);<br />

disp('disp(-10) is');<br />

disp(-10);<br />

disp('disp(a) is ');<br />

disp(a);<br />

disp('disp(a == b)');<br />

disp(a==b);<br />

次は、 最初のシ ミ ュ レーシ ョ ン段階の結果です。<br />

xlmcode_testdisp/MCode (Simulink time: 0.000000, FPGA clock: 0)<br />

Hello World!<br />

num2str(dly) is [0.000000, 0.000000, 0.000000, 0.000000, 0.000000,<br />

0.000000, 0.000000, 0.000000]<br />

disp(dly) is<br />

type: Fix_11_7,<br />

maxlen: 8,<br />

length: 8,<br />

0: binary 0000.0000000, double 0.000000,<br />

1: binary 0000.0000000, double 0.000000,<br />

2: binary 0000.0000000, double 0.000000,<br />

3: binary 0000.0000000, double 0.000000,<br />

4: binary 0000.0000000, double 0.000000,<br />

5: binary 0000.0000000, double 0.000000,<br />

6: binary 0000.0000000, double 0.000000,<br />

7: binary 0000.0000000, double 0.000000,<br />

disp(rom) is<br />

type: Fix_11_7,<br />

maxlen: 4,<br />

length: 4,<br />

0: binary 0011.0000000, double 3.0,<br />

1: binary 0010.0000000, double 2.0,<br />

2: binary 0001.0000000, double 1.0,<br />

3: binary 0000.0000000, double 0.0,<br />

a = 0.000000, b = 0.000000, x = 0.000000<br />

1<br />

disp(10) is<br />

type: UFix_4_0, binary: 1010, double: 10.0<br />

disp(-10) is<br />

type: Fix_5_0, binary: 10110, double: -10.0<br />

disp(a) is<br />

type: Fix_11_7, binary: 0000.0000000, double: 0.000000<br />

disp(a == b)<br />

type: Bool, binary: 1, double: 1<br />

この例は、 MATLAB の FPGA へのコ ンパイルに記述されています。<br />

error()<br />

メ ッ セージおよび停止関数を表示し ます。 詳細は、 こ の関数に関する MATLAB のヘルプを参照し<br />

てください。 メッセージのフォーマットは、MCode ブロックではサポート されていません。 次は、<br />

こ の関数の使用例です。<br />

if latency


R<br />

isnan()<br />

NaN (Not-a-Number) かど う かを返します。isnan(X) の場合、 X が Not-a-Number だと true を返し<br />

ます。 X は、 ダブル型ま たはザ イ リ ン ク ス固定小数点型のス カ ラ 値にする必要があ り ます。 この関<br />

数は、 ベク タ型ま たは二次元配列型ではサポー ト さ れません。 次は、 こ の関数の使用例です。<br />

NaN()<br />

if isnan(incr) & incr == 1<br />

cnt = cnt + 1;<br />

end<br />

NaN() 関数は、 の IEEE 規格の演算式を生成し ます。 NaN は、 0.0/0.0 や inf-inf の よ う な数学的に<br />

定義されていない演算の結果を表し ます。 NaN(1,N) は、1 行 N 列の要素がすべて NaN 値の行列を<br />

出力し ます。 次は、 NaN を使用した例です。<br />

if x < 0<br />

z = NaN;<br />

else<br />

z = x + y;<br />

end<br />

num2Str()<br />

数値を文字列に変換し ます。 た と えば、 num2str(X) は X を文字列に変換し ます。 X は、 ダブル型<br />

ま たはザ イ リ ン ク ス固定小数点型、 ベ ク タ型ス テー ト 変数のス カ ラ値にする必要があ り ます。 デ<br />

フォルトの桁数は、 X のエレ メ ン ト の大き さによって異な り ます。 使用例は次の と お り です。<br />

ones()<br />

if opcode = 10<br />

error(['opcode is out of range: ', num2str(opcode)]);<br />

end<br />

ones() 関数は、 指定し た数の 1 の値を生成し ます。 た と えば、 ones(1,N) は、 1 行 N 列の要素がす<br />

べて 1 の行列を出力 し ます。 ones(M,N) の場合、 M は 1 である必要があ り ます。 この関数は、 通<br />

常 xl_state() 関数呼び出し と 共に使用 さ れます。 たとえば、次の例では、[1, 1, 1, 1] に初期化さ れる<br />

1 行 4 列のス テー ト 変数が作成さ れます。<br />

zeros()<br />

persitent m, m = xl_state(ones(1, 4), proto)<br />

zeros() 関数は、 指定し た数の 0 の値を生成し ます。 た と えば、 zeros(1,N) は、 1 行 N 列の要素が<br />

すべて 0 の行列を出力し ます。 zero(M,N) の場合、 M は 1 であ る必要があ り ます。 この関数は、 通<br />

常 xl_state() 関数呼び出し と 共に使用 さ れます。 たとえば、次の例では、 [0, 0, 0, 0] に初期化さ れる<br />

1 行 4 列のス テー ト 変数が作成さ れます。<br />

FOR ループ<br />

persitent m, m = xl_state(zeros(1, 4), proto)<br />

FOR 文は、 完全にループ展開されています。 次の関数では、 n サンプルが合計されます。<br />

function q = sum(din, n)<br />

persistent regs, regs = xl_state(zeros(1, 4), din);<br />

q = reg(0);<br />

<strong>for</strong> i = 1:n-1<br />

q = q + reg(i);<br />

226 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MCode<br />

end<br />

regs.push_front_pop_back(din);<br />

次の関数では、 ビ ッ ト を反転し ます。<br />

function q = bitreverse(d)<br />

q = xl_slice(d, 0, 0);<br />

<strong>for</strong> i = 1:xl_nbits(d)-1<br />

q = xl_concat(q, xl_slice(d, i, i));<br />

end<br />

使用可能な変数<br />

MATLAB コー ド では、 コー ド が記述順に実行さ れます。 MCode ブ ロ ッ ク では、 実行可能なパスが<br />

使用 さ れる前にそれぞれ変数に値を代入し てお く 必要があ り ます (代入文の左側は例外)。 これで、<br />

変数が使用可能な状態にな り ます。 使用不可能な変数があ る と 、エ ラ ー メ ッ セージが表示 さ れます。<br />

たとえば、 次のような M コードがある と します。<br />

function [x, y, z] = test1(a, b)<br />

x = a;<br />

if a>b<br />

x = a + b; y = a;<br />

end<br />

switch a<br />

case 0<br />

z = a + b;<br />

case 1<br />

z = a ñ b;<br />

end<br />

こ の場合、 a、 b、 x は使用可能ですが、 y と z は使用可能ではあ り ません。 y が使用でき ないのは、<br />

if 文に else 文がないためで、 z が使用でき ないのは、 switch 文に otherwise 部分がないか ら です。<br />

MCode のデバッ グ<br />

MCode をデバッグするには、コードに disp() 関数を挿入し て表示 させる方法 と 、MATLAB デバ ッ<br />

ガを使用する方法の 2 つがあ り ます。 関数の使用方法は、 disp() を参照して く ださい。<br />

MATLAB デバ ッ ガを使用する場合は、 MCode ブロックのパラ メータ ダイアログ ボックスの<br />

[Advanced] タブで [Enable printing with disp] をオンにしておく必要があ り ます。 これで、<br />

MATLAB 関数を MATLAB エデ ィ タで開いて、 ブレーク ポイ ン ト を設定した り 、 M 関数をデバ ッ<br />

グしたりできるようになります。 ただ し、 ス ク リ プ ト を変更し た場合は、 必ず MATLAB コンソー<br />

ル ウ ィンドウで clear 関数コ マン ド を実行し て く だ さ い。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 227<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

M 関数のデバ ッ グ を開始する には、 まず MCode ブロックのパラ メータ ダイアログ ボックスの<br />

[Advanced] タブで [Enable printing with disp] をオンにし、 [OK] または [Apply] をクリ ックする<br />

必要があ り ます。<br />

これで、 必要に応じて MATLAB エデ ィ タで M ファイルを編集したり、 ブレークポイントを設定<br />

したりできるようになります。<br />

228 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MCode<br />

Simulink のシ ミ ュ レーシ ョ ン中、 MATLAB デバ ッ ガは設定し たブレー ク ポ イ ン ト で停止し ます。<br />

デバ ッ グ中は、 MATLAB コンソール ウ ィ ン ド ウに変数名を入力する と 、 その変数の値を確認する<br />

こともできます。<br />

MCode ブロックの関数が MATLAB デバ ッ ガか ら 実行される場合は、 次の点に注意し て く だ さ い。<br />

MCode 内の switch/case 文は xfix 型にする必要があ り ますが、 MATLAB コンソール ウィンドウ<br />

から switch/case 文を実行する場合は、 double 型または char 型にする必要があ り ます。 このため、<br />

MATLAB コンソール ウ ィ ン ド ウで実行する場合は、 double() を追加する必要があ り ます。 たとえ<br />

ば、 次の よ う な コー ド があ る と し ます。<br />

switch i<br />

case 0<br />

x = 1<br />

case 1<br />

x = 2<br />

end<br />

i は xfix 型です。 コンソール ウ ィ ン ド ウか ら実行する には、次の コー ド に変更する必要があ り ます。<br />

switch double(i)<br />

case 0<br />

x = 1<br />

case 1<br />

x = 2<br />

end<br />

double() 関数呼び出しは、 M コードがコンソール ウ ィンド ウから実行された場合にのみ使用され<br />

ます。 MCode ブロックでは、 double() が無視されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 229<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

パラ メ ー タの伝達<br />

各ブロ ッ ク の動作が異なる よ う に M 関数に違 う パ ラ メ ータ を渡せば、 同じ M 関数を別の MCode<br />

ブ ロ ッ ク で使用する こ と がで き ます。 こ れには、入力引数を複数の値に結合する必要があ り ます。 入<br />

力引数の結合は、ブロ ッ ク のパ ラ メ ータ ダイアログ ボックスの [Interface] タ ブか ら設定で き ます。<br />

引数を複数の値に結合する と 、こ れら の M 関数の引数が MCode ブロックの入力ポート としては表<br />

示されなくなり ます。<br />

たとえば、 次のような M 関数があ る と し ます。<br />

function dout = xl_sconvert(din, nbits, binpt)<br />

proto = {xlSigned, nbits, binpt};<br />

dout = xfix(proto, din);<br />

次の図では、 2 つの異な る xl_sconvert ブロッ クの din 入力に対し て結合を設定し ています。<br />

230 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MCode<br />

次の図は、 モデルを コ ンパイルし た後のブロ ッ ク を示し ています。<br />

パ ラ メ ータは、 ダブル型か論理数にで き ます。<br />

オプシ ョ ンの入力ポー ト<br />

メ カニズム を渡すパ ラ メ ータ を使用する と 、 MCode ブロッ クにオプショ ンの入力ポート を付ける<br />

ことができます。 たとえば、 次のような M 関数があ る と し ます。<br />

function s = xl_m_addsub(a, b, sub)<br />

if sub<br />

s = a ñ b;<br />

else<br />

s = a + b;<br />

end<br />

sub が false に設定される と、 こ の M 関数を使用する MCode ブロックには a と b の 2 つの入力<br />

ポー ト が付き、 完全制度の加算が実行 さ れます。 空のセル配列 { } に設定される と、 a、 b、 および<br />

sub の 3 つの入力ポー ト が使用 さ れ、 入力ポー ト sub の値に応じ て完全精度の加算または減算が実<br />

行されます。<br />

次の図は、同じ xl_m_addsub 関数を使用し た 2 つのブロ ッ ク (入力ポー ト が 2 つのブロ ッ ク と 3 つ<br />

のブロ ッ ク) を示しています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 231<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ステート マシンの構築<br />

MCode ブロックを使用してステート マシン を構築する方法は、 2 つあ り ます。 1 つは、 MATLAB<br />

関数を使用し て処理状態を把握し ない遷移関数を指定し、 MCode ブロック と 1 つまたは複数のス<br />

テー ト レジスタ ブ ロ ッ ク を組み合わせる方法です。 通常、 MCode ブロックは次のステート を表す<br />

値でレジス タ を駆動し、 レジス タは現在のステー ト を MCode ブロッ クに送信します。 これには、<br />

MCode ブロックからのステート出力の精度をスタティ ックにする (ブロッ クへのどの入力からも<br />

独立させる) 必要があ り ます。 場合に よ っ ては、 xfix() 変換関数を使用し て、 ス タ テ ィ ッ ク な精度に<br />

する必要のあ る こ と も あ り ます。 次のコードは、 これを実行する例です。<br />

function nextstate = fsm1(currentstate, din)<br />

% some other code<br />

nextstate = currentstate;<br />

switch currentstate<br />

case 0, if din==1, nextstate = 1; end<br />

end<br />

% a xfix call should be used at the end<br />

nextstate = xfix({xlUnsigned, 2, 0}, nextstate);<br />

もう 1 つの方法では、 ス テー ト 変数を使用し ます。 上記の関数は、 次の よ う に書き直す こ と がで き<br />

ます。<br />

function currentstate = fsm1(din)<br />

persistent state, state=xl_state(0,{xlUnsigned,2,0});<br />

currentstate = state;<br />

switch double(state)<br />

case 0, if din==1; state = 1; end<br />

end<br />

ステー ト 変数の リ セ ッ ト 信号と イネーブル信号<br />

MCode ブ ロ ッ ク では、 ス テー ト 変数への条件代入文に含まれる分岐が 2 つ以下の場合、 自動的に<br />

レ ジ ス タ の リ セ ッ ト 信号およびイ ネーブル信号を推論させる こ と がで き ます。<br />

たとえば、 次の M コードでは persistent ステート変数 r1 の条件代入文で イ ネーブル信号が推論さ<br />

れます。<br />

function myFn = aFn(en, a)<br />

persistent r1, r1 = xl_state(0, {xlUnsigned, 2, 0});<br />

myFn = r1;<br />

if en<br />

r1 = r1 + a<br />

else<br />

r1 = r1<br />

end<br />

こ の場合、 persistent ス テー ト 変数の r1 への条件代入文に 2 つの分岐があ り ます。 こ の条件代入を<br />

実行する ために、 レ ジ ス タ が 1 つ使用さ れています。 レジスタの入力は r1 + a に、出力は r1 に接続<br />

されます。 このレジスタのイネーブル信号は推論され、 en がアサート されたと きに en ポー ト に接<br />

続されます。 persistent ス テー ト 変数の r1 は en が false になる と r1 + a に代入され、 レジス タのイ<br />

ネーブル信号がデ ィ アサー ト さ れる と r1 が r1 に代入されます。<br />

次の M コード でも、 イネーブル信号が推論されます。<br />

function myFn = aFn(en, a)<br />

persistent r1, r1 = xl_state(0, {xlUnsigned, 2, 0});<br />

myFn = r1;<br />

if en<br />

r1 = r1 + a<br />

232 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MCode<br />

end<br />

persistent ス テー ト 変数の r1 が定数以外の値 r1 + a に条件代入 さ れてい る ので、 リ セ ッ ト 信号では<br />

な く 、 イ ネーブル信号が推論されます。<br />

persistent ス テー ト 変数の r1 への条件代入文に分岐が 3 つあ る と 、 イ ネーブル信号は推論さ れませ<br />

ん。 次の M コードでは、 persistent ステート変数の r1 への条件代入文に分岐が 3 つあるので、 イ<br />

ネーブル信号が推論されません。<br />

function myFn = aFn(en, en2, a, b)<br />

persistent r1, r1 = xl_state(0, {xlUnsigned, 2, 0});<br />

if en<br />

r1 = r1 + a<br />

elseif en2<br />

r1 = r1 + b<br />

else<br />

r1 = r1<br />

v<br />

persistent ス テー ト 変数が条件的に定数に代入 さ れる と 、 リ セ ッ ト 信号を推論可能です。 リ セ ッ ト は<br />

同期です。 次の M コード例では、rst が true の場合に persistent ス テー ト 変数の r1 に定数 init が代<br />

入され、 それ以外の場合は r1 + 1 が代入され、 リ セ ッ ト 信号が推論されています。<br />

function myFn = aFn(rst)<br />

persistent r1, r1 = xl_state(0, {xlUnsigned, 4, 0});<br />

myFn = r1;<br />

init = 7;<br />

if (rst)<br />

r1 = init<br />

else<br />

r1 = r1 + 1<br />

end<br />

上の リ セ ッ ト を推論する M コー ド 例は、 次の よ う に記述する こ と も でき ます。<br />

function myFn = aFn(rst)<br />

persistent r1, r1 = xl_state(0, {xlUnsigned,4,0});<br />

init = 1;<br />

myFn = r1;<br />

r1 = r1 +1<br />

if (rst)<br />

r1 = init<br />

end<br />

上記のど ち ら の コー ド 例で も、persistent ス テー ト 変数の r1 を含むレ ジ ス タ の リ セ ッ ト 信号は rst に<br />

代入されます。 rst が true になる と、 レジスタの リ セッ ト 入力がアサート され、 persistent ステート<br />

変数が init 定数に代入さ れます。 rst が false になる と、 レジス タの リ セッ ト 入力がディ アサー ト さ<br />

れ、persistent ス テー ト 変数の r1 が r1 + 1 に代入されます。 persistent ス テー ト 変数の条件代入に 3<br />

つ以上の分岐が含まれる と 、 persistent ス テー ト 変数のレジス タ で リ セ ッ ト 信号は推論 さ れません。<br />

1 つの persistent ス テー ト 変数のレ ジ ス タで リ セ ッ ト 信号 と イ ネーブル信号を同時に推論する こ と<br />

ができ ます。 たとえば、 次の M コードでは persistent ステート変数 r1 に対し、 リ セ ッ ト 信号と イ<br />

ネーブル信号が同時に推論されています。<br />

function myFn = aFn(rst,en)<br />

persistent r1, r1 = xl_state(0, {xlUnsigned, 4, 0});<br />

myFn = r1;<br />

init = 0;<br />

if rst<br />

r1 = init<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 233<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

else<br />

if en<br />

r1 = r1 + 1<br />

end<br />

end<br />

persistent ス テー ト 変数の r1 のレジスタのリ セッ ト入力は、 rst に接続されます。 rst が true になる<br />

と、 レジスタのリセッ ト入力がアサート され、 r1 が init に代入されます。 レジスタのイネーブル入<br />

力は en に接続されます。 en が true になる と、 レジス タのイ ネーブル入力がアサー ト され、 r1 が r1<br />

+ 1 に代入されます。 推論された リ セ ッ ト 信号は、条件代入文の順序に関係な く 、推論さ れた イ ネー<br />

ブル信号よ り も優先されます。 上の 2 つ目の コー ド 例で、rst と en の両方が true であれば、persistent<br />

ス テー ト 変数の r1 が init に代入されます。<br />

リ セ ッ ト 信号 と イ ネーブル信号は、 switch 文の分岐が 2 つ以下であれば、 switch 文を使用した<br />

persistent ス テー ト 変数の条件代入で も推論で き ます。<br />

MCode ブロックでは、 FPGA のコー ド を生成する際に、 実行さ れない コー ド は削除さ れ、 定数伝<br />

搬コ ンパイ ラ で最適化が実行されます。 こ れに よ り 、 条件文の分岐の 1 つが 1 度も実行さ れない場<br />

合、persistent ス テー ト 変数の条件代入文で リ セ ッ ト 信号 と イ ネーブル信号のど ち ら か、 または両方<br />

が推論されます。 こ れには、 条件文に 2 つの分岐が含まれ、 それら が実行されないコー ド が削除さ<br />

れて定数伝搬が実行された後に実行さ れてい る必要があ り ます。<br />

組み合わせロジ ッ クのパイ プ ラ イ ン接続<br />

生成 さ れた MCode ブロックの FPGA ビッ トスト リームには、 さまざまなレベルの組み合わせロ<br />

ジックが含まれるので、大きなク リティカル パス遅延が発生する こ と があ り ます。 こ の組み合わせ<br />

ロ ジ ッ ク をダ ウ ン ス ト リ ームの ロ ジ ッ ク合成ツールで自動的にパイ プ ラ イ ン接続させる には、<br />

MCode ブロ ッ ク の入力の前か出力の後に遅延ブロ ッ ク を追加し ます。 こ れら の遅延ブ ロ ッ ク では、<br />

[Implement using behavioral HDL] パラ メータをオンにして、 コード ジェネレータで合成可能な<br />

HDL を使用した遅延がインプ リ メ ン ト される よ う にします。 こ の後、ダ ウ ン ス ト リ ームの ロ ジ ッ ク<br />

合成ツールでレ ジ ス タ の リ タ イ ミ ング またはレ ジ ス タ自動調整を イ ンプ リ メ ン ト する よ う に命令し<br />

ます。 または、 ベク タ型のス テー ト 変数を使用し て遅延を指定する方法も あ り ます。<br />

乗算と除算を使用し たシ フ ト 演算<br />

MCode ブロックでは、 数値が 2 のべき乗の定数で乗算ま たは除算 さ れる タ イ ミ ング を検出で き ま<br />

す。 検出する と 、MCode ブ ロ ッ ク はシフ ト 演算を実行し ます。 たとえば、4 で乗算する こ と は 2 ビッ<br />

ト左にシフトすることと同じであり、8 で除算する こ と は 3 ビッ ト右にシフトすることと同じです。<br />

シフ トは、 2 進小数点を調整し て、 xfix データ型の コ ンテナを必要に応じ て拡張する と イ ンプ リ メ<br />

ントされます。 たとえば、Fix_8_4 値を 4 で乗算する と Fix_8_2 値にな り 、 Fix_8_4 を 64 で乗算<br />

する と Fix_10_0 値にな り ます。<br />

234 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MCode<br />

丸めを使用し た xl_state 関数<br />

xl_state 関数では、 ス テー ト 変数用に xfix 型のコ ンテナが作成されます。 このコンテナの精度は、<br />

xl_state 関数に渡さ れる 2 つ目の引数で指定さ れます。 精度が丸めモード の場合は xlRound が使用<br />

さ れ、 丸めに必要なハー ド ウ ェ ア リソースが追加されます。 初期値の丸めのみが必要 と さ れる場合<br />

は、 ハー ド ウ ェア リ ソ ース を追加する必要があ り ません。 こ の後、 丸め値が xl_state 関数に渡さ れ<br />

ます。 次は、 その例です。<br />

init = xfix({xlSigned,8,5,xlRound,xlWrap}, 3.14159);<br />

persistent s, s = xl_state(init, {xlSigned, 8, 5});<br />

ブロック パラ メータ ダイアログ ボックス<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

前述し た よ う に、 MCode ブ ロ ッ ク の関数名は [MATLAB function] で指定し、 定数入力 と その値の<br />

リストは [Interface] タブで指定します。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 235<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

MicroBlaze Processor<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Control Logic] および [Index] ライブラリにリストされてい<br />

ます。<br />

このブロックは廃止されています。 EDK Processor ブロックを使用してください。<br />

MicroBlaze Processor ブロッ クを使用する と、 EDK の MicroBlaze プロセッ<br />

サ用に作成されたペ リ フ ェ ラルをデザイ ンおよびシ ミ ュ レーシ ョ ンでき ます。<br />

次の図に示すよ う に、 プ ロ セ ッ サで使用可能な FSL (Fast Simplex Link) を介<br />

して、 カスタマイズした IP を MicroBlaze に接続でき ます。 FSL は、 一方向<br />

の FIFO と考えることができます。 MicroBlaze には、 最大で 8 つの入力 FSL<br />

と 8 つの出力 FSL の合計 16 個の FSL を含める こ とができ ます。 同期 FIFO<br />

と非同期 FIFO のどち ら も使用でき ますので、 MicroBlaze プロセッサに対し<br />

て同期ま たは非同期に動作する <strong>System</strong> <strong>Generator</strong> ペ リ フ ェ ラ ルを作成可能で<br />

す。 次の図に示すとお り 、 FSL FIFO は EDK (エンベデ ッ ド 開発キ ッ ト ) ツー<br />

ルの左側に配置 さ れます。 このよ うなシステムのシミ ュレーショ ンには、ハー<br />

ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を使用し ます。 シミュレーション モデルの作成、 管理、 設定は、 ブ<br />

ロックのパラメータ ダイアログ ボ ッ ク スか ら指定で き ます。 詳細は、 こ の後の説明を参照し て く<br />

ださい。<br />

ブロック インターフェイス<br />

この説明で、 シンボル # の番号は 0 ~ 7 を表し ます。 こ のブ ロ ッ ク の入力および出力の数はユー<br />

ザーがコ ンフ ィ ギュ レーシ ョ ンでき ます。 それぞれの入力イ ン ターフェ イ スで、 入力ポー ト 3 つ<br />

(In#_data、 In#_control、 In#_write) と出力ポート 1 つ (In#_write) の合計 4 つのポー ト が作成され<br />

ます。 同様に、 それぞれの出力イ ン ターフ ェ イ スで、 入力ポー ト 1 つ (Out#_read) と出力ポート 3<br />

つ (Out#_data、 Out#_control、 Out#_exists) の合計 4 つのポー ト が作成 さ れます。 最大で 8 入力 と<br />

8 出力の イ ン ターフ ェ イ ス がサポー ト さ れます。 オプシ ョ ンの Rst ポー ト は [Provide reset port] を<br />

オンにする と 使用で き ます。 Rst ポー ト は、 MicroBlaze Processor ブロッ クで出力ポート として表<br />

示されます。 このポートは、MicroBlaze のどの非同期 リ セ ッ ト ポー ト/ ピンにでも接続でき、<br />

MicroBlaze か ら接続 さ れた <strong>System</strong> <strong>Generator</strong> デザイ ンを リ セ ッ ト でき ます。<br />

236 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MicroBlaze Processor<br />

ポー ト<br />

各ポー ト の説明を、 次の表に示し ます。<br />

ポー ト名<br />

ポー ト タ<br />

イプ<br />

In#)data 入力<br />

In#_control 入力<br />

In#_write 入力<br />

In#_full 出力<br />

Out#_data 出力<br />

Out#_control 出力<br />

Out#_read 入力<br />

Out#exists 出力<br />

Rst 出力<br />

ポー ト<br />

幅 (<br />

ビット)<br />

32<br />

1<br />

1<br />

1<br />

32<br />

1<br />

1<br />

1<br />

1<br />

ポー ト の説明 FSL 接続<br />

FSL FIFO にデータ を書き込みま<br />

す。<br />

ビットをフラグします。 High にな<br />

ると、FIFO に書き込まれたデータ<br />

が制御ワードにな り ます。<br />

High になる と、 FSL FIFO への書<br />

き込みがイネーブルになり ます。<br />

EDK の MicroBlaze はスレーブ ペ<br />

リ フ ェ ラ ル と し て接続されます。<br />

High になる と、 FSL FIFO がフル<br />

である こ と を示します。<br />

FSL FIFO か らデータ を読み出し<br />

ます。<br />

ビットをフラグします。 High にな<br />

ると、FIFO か ら読み出さ れたデー<br />

タが制御ワー ド にな り ます。<br />

High になる と、 FSL FIFO からの<br />

読み出し が イ ネーブルにな り ます。<br />

EDK の MicroBlaze はマス タ ペリ<br />

フェラルとして接続されます。<br />

High になる と、 FIFO が空ではな<br />

いことを示します。<br />

非同期 リ セ ッ ト ポー ト /ピンのス<br />

テー ト を示し ます。<br />

MFSL (Master<br />

FSL) 接続<br />

SFSL (Slave<br />

FSL) 接続<br />

次の図は、 それぞれ読み出しおよび書き込み操作が問題な く 実行さ れる ための、 ポー ト の さ ま ざ ま<br />

な信号間の タ イ ミ ング関係を示し ています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 237<br />

リリース 9.2.00 2007 年 8 月<br />

なし<br />

R


R<br />

書き込み操作<br />

次のタ イ ミ ング図に示すよ う に、 In#_full が Low の場合、 In#_write が High にな り、 In#_data の<br />

値が FIFO に書き込まれます。 FIFO がフルになる と、 In#_full が High にな り、 FIFO への書き込<br />

みは無視されます。 In# ports は、 接続さ れる MFSL を制御する ので、 EDK プロジェク トでマスタ<br />

ペリフェラルとしてコンフィギュレーションされる必要があります。<br />

読み出し操作<br />

次のタ イ ミ ング図に示すよ う に、Out#_exists が High のときに Out#_read を High にする と 、FIFO<br />

の最初のデータ が読み出されます。 データは、 Out#_data ポー ト か ら 読み出されます。 FIFO が空に<br />

なると Out#_exists が Low にな り ます。 空の FIFO か ら読み出す と 、 定義さ れていない値が返さ れ<br />

ます。 Out# ports は、 接続 さ れる FSL に対し てス レーブにな るので、 EDK プロジェク トでスレー<br />

ブ ペリフェラルとしてコンフィギュレーションされる必要があります。<br />

<strong>System</strong> <strong>Generator</strong> で FSL ペリフェラルをデザインしたら、そのモデルを EDK のエク スポー ト ツー<br />

ルを使用して EDK 環境に抽出する必要があ り ます。 <strong>System</strong> <strong>Generator</strong> と VHDL ソース コードを<br />

使用する と 、こ のブ ロ ッ ク の MPD (Microprocessor Peripheral Definition)、PAO (Peripheral Analyze<br />

Order)、BBD (Black Box Definition) ファイルが作成されます。 詳細については、EDK Export Tool<br />

を参照して く ださい。<br />

メモ : In# と Out# の FSL へのマ ッ プは、 EDK 環境か ら制御で き ます。 たとえば、In0 を必ずし も<br />

SFSL0 に接続する必要はな く 、 同様に、 Out0 も MSFL0 に接続する必要はあ り ません。<br />

238 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MicroBlaze Processor<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[General] タブ<br />

このタブでは、 MicroBlaze Processor ブロックをカスタマイズし、 ハードウェア協調シミ ュレー<br />

シ ョ ン機能を使用で き る よ う に し ます。<br />

[General] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Number of input interfaces] : <strong>System</strong> <strong>Generator</strong> から MicroBlaze への FSL インターフェイス<br />

の数を指定し ます。 このブロックのインターフェイスは、 入力ポート と出力ポートの数でコン<br />

フィギュレーションされます。 入力イ ン ターフ ェ イ スの数は、 8 以下にする必要があ り ます。<br />

• [Number of output interfaces] : MicroBlaze から <strong>System</strong> <strong>Generator</strong> への FSL インターフェイ<br />

スの数を指定します。 このブロックのインターフェイスは、 入力ポート と出力ポートの数でコ<br />

ンフィギュレーションされます。 出力イ ン ターフ ェ イ スの数は、8 以下にする必要があ り ます。<br />

• [Provide Reset Port] : ブロッ ク インターフェイスに Rst 出力ポー ト が追加 さ れます。 これで<br />

<strong>System</strong> <strong>Generator</strong> デザイ ンを MicroBlaze からリセッ トできるようになります。<br />

• [Provide processor model] : MicroBlaze のハード ウ ェ ア協調シミ ュ レ ーショ ン 機能を使用でき る<br />

よう にします。 オンにする と 、 [Hardwar] タブと [Software] タブが使用できるよう になり ます。<br />

[Hardware] タブ :<br />

このタブでは、 MicroBlaze Processor ブロックをカスタマイズし、 ハードウェア協調シミ ュレー<br />

シ ョ ン機能を使用で き る よ う に し ます。<br />

[Hardware] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Simulation model] : ブロッ クが最初に使用されるときは <strong>System</strong> <strong>Generator</strong> プロセッサ コアの<br />

キャッシュは空なので、 [Simulation Model] プルダウ ン メニューにはシミュレーション モデ<br />

ルが何も表示されません。<br />

シミュレーション モデルは、 ハー ド ウ ェ ア プラッ ト フォーム (ボード) に接続し、 RS232 ポー<br />

ト が使用可能かど う かのどのボー ド 特有の情報を MicroBlaze プロセッサに認識させる必要が<br />

あります。 シミュレーション モデルがコアのキャ ッシュにある と、このプルダウン メニューに<br />

リストされます (例 : companyxyz_boardnm_partnm_packagenum_rev_1)。<br />

• [Add simulation model] : このボタンをク リ ックすると、 [Hardware Co-Simulation Targets] ダ<br />

イアログ ボックスが表示され、 コンパイルするターゲッ トが指定できるようになります (詳細<br />

は、 <strong>System</strong> <strong>Generator</strong> のコンパイル タイプを参照して ください)。 [Generate] ボタンをク リ ッ<br />

ク する と 、 次の よ う に コ ンパイ ル さ れます。 コ ンパイ ルには、 多少時間がかか り ます。<br />

a. EDK プロジェク トが <strong>System</strong> <strong>Generator</strong> のブ ロ ッ ク で指定し た ターゲ ッ ト ディレク ト リに<br />

作成されます (XPS)。<br />

b. EDK プロジェク トのネッ ト リ ス トが生成されます (EDK+XFlow)。<br />

c. EDK ネッ ト リ ストからハードウェア協調シミュレーションが作成され、<strong>System</strong> <strong>Generator</strong><br />

コアのキャッシュに保存されます (<strong>System</strong> <strong>Generator</strong>、 XFlow)。<br />

d. EDK ソフトウェア ライブラリがコンパイルされます (EDK)。<br />

メモ : 新しいボード サポー ト パ ッ ケージを作成する場合 (新規プ ラ ッ ト フ ォームのサポー ト )、その<br />

ボード のシステムの リ セ ッ ト ポー ト と RS232 ポー ト を メ モ リ マップされないポート として指定し<br />

ておかない と 、 正し く 配線が さ れません。 また、 リセッ ト ポー ト の名前は Reset に、 RS232 ポー ト<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 239<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

の名前は RXD に、 送信ポー ト の名前は TXD にしておく必要があり ます。 このよ うに命名しない<br />

と、 <strong>System</strong> <strong>Generator</strong> で信号が正し く 検出さ れず、 関連する ピ ンに配線さ れません。<br />

RS232 ポー ト が使用で き る場合は、 MicroBlaze に UART が次のパラ メ ータで作成されます。<br />

[Baud rate (bits per second)] : 115200、[Data bits] : 8、[Parity] : None、[Stop bits] : 1、[Flow control]<br />

: none。 stdin および stdout チャネルは、 UART にマップされ、 RS232 を介して入力と出力ができ<br />

るようになります。<br />

[Software] タブ<br />

シミュレーション モデルで実行される ソース コードの編集およびコンパイルをするボタンが含ま<br />

れます。<br />

• [Edit Source Code] : この MicroBlaze ブ ロ ッ ク に関連する ソース コードが開きます。 この<br />

コードは、 シ ミ ュレーシ ョ ン モデルでのみ使用 さ れます。<br />

上の図は、 <strong>System</strong> <strong>Generator</strong> で作成されるデ ィ レ ク ト リ 構造を示し ています。 この場合、<br />

MBPingPongRAM が Simulink モデルの名前で、 netlist フ ォルダがユーザーの指定し たター<br />

ゲッ ト ディレク ト リになります。 EDK プロジェク トは、 モデル名を MicoBlaze の完全パスに<br />

変更し て作成さ れたデ ィ レ ク ト リ の下に生成 さ れます。 こ のブ ロ ッ ク に関連付け ら れた ソ ース<br />

コードは、 ハイ ライ ト されたディ レク ト リ (SGTestApp) に MainProg.c という名前で保存され<br />

ています。<br />

ソース ファイルの編集には、デフォルトの MATLAB エデ ィ タが使用されます。 これは、 ユー<br />

ザーが MATLAB から設定できるオプションで、MATLAB で [ファイル] → [設定] → [エデ ィ<br />

タ/デバ ッ ガ] を ク リ ッ ク する と 変更で き ます。<br />

• [Compile Source Code] : クリックすると、 ソース コードがコンパイルされ、 ハード ウェア協<br />

調シ ミ ュ レーシ ョ ンのビ ッ ト ファイルが作成した 2 進数コー ド でア ッ プデー ト さ れます。<br />

240 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MicroBlaze Processor<br />

MicroBlaze ソ フ ト ウ ェ アの問題<br />

ソフトウェアからの FSL ペリフェラルへのアクセス<br />

<strong>System</strong> <strong>Generator</strong> ペリフェラルには、接続された FSL のアセンブ リ 命令を介して MicroBlaze から<br />

アクセスできます。 EDK には、 FSL か ら の読み出しおよび FSL への書き込みを単純化する ための<br />

C マクロが 8 つ提供されています。 詳細については、 EDK マニュアルを参照して く ださい。<br />

ノンブロッキング データ リードとデータ ラ<br />

イト<br />

microblaze_nbread_datafsl(val,id);<br />

microblaze_nbwrite_datafsl(val,id);<br />

ノンブロッキング コントロール リードとコン<br />

トロール ライト<br />

microblaze_nbread_cntlfsl(val,id);<br />

microblaze_nbwrite_cntlfsl(val,id);<br />

ブロッキング データ リードとデータ ライト<br />

microblaze_bread_datafsl(val,id);<br />

microblaze_bwrite_datafsl(val,id);<br />

ブロッキング コントロール リードとコント<br />

ロール ライト<br />

microblaze_bread_cntlfsl(val,id);<br />

microblaze_bwrite_cntlfsl(val,id);<br />

上のマ ク ロでは、 val は FSL か ら読み出される、 ま たは FSL に書き込まれる 32 ビッ トのデータ値<br />

を示し、 id はアクセス された FSL を示します。 ブロッキング リードまたはライ トを実行すると、<br />

MicroBlaze は読み出しまたは書き込みがあるまで停止します。 ノンブロッキング リードまたはラ<br />

イ ト を実行する と 、読み出し ま たは書き込みが終了で き ない状態であ って も、MicroBlaze は停止し<br />

ません。 データ リードは、val を FSL のデータ ポー ト に、0 を FSL の制御ポー ト に書き込み、 コン<br />

トロール ライトは、val を FSL のデータ ポー ト に、 1 を FSL の制御ポー ト に書き込みます。 詳細<br />

については、 EDK の MicroBlaze のマニュアルと、 次の <strong>System</strong> <strong>Generator</strong> のチュー ト リ アルを参<br />

照してください。<br />

• MicroBlaze プロセッサ ペリフェラルの設計とエクスポート<br />

• チュート リアル : MicroBlaze プロセッサ システムの設計とシミ ュレーショ ン<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 241<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

EDK の FSL バスと <strong>System</strong> <strong>Generator</strong> ポー ト 間の通信<br />

FSL インスタンスと EDK の FSL バス接続は異な り ます。 MicroBlaze には、FSL ( もしくは FSL イ<br />

ンターフェイスを模倣したペリフェラル) に接続で き るバス接続が 16 個あ り ます。 このうち 8 つが<br />

入力で、 EDK では SFSL (Slave FSL) と 呼ばれ、 残りの 8 つが出力で、 EDK では MFSL (Master<br />

FSL) と 呼ばれます。 FSL インスタンスは、FIFO ハー ド ウ ェ アの物理的な イ ンプ リ メ ンテーシ ョ ン<br />

によ り作成されます。<br />

EDK では、SFSL と MFSL バス接続の番号は FSL インスタンスに依存しません。 たとえば、SFSL0<br />

は必ずし も FSL のインスタンス 0 に接続されるわけではな く 、 同様に、 MSFL1 は FSL のインス<br />

タンス 1 に接続されるわけではあ り ません。 つま り、<strong>System</strong> <strong>Generator</strong> ブロッ クの In0_* ポー ト は<br />

SFSL0 に接続する必要はあ り ません。 このため、 ユーザーが FSL 接続を把握し ておかない と 、 正<br />

しいソフ ト ウェア コードが記述できません。 たとえば、FSL0 に対する microblaze_nbwrite_datafsl<br />

命令があ る場合に、 <strong>System</strong> <strong>Generator</strong> へ Out0_* か ら 出力される と は限 り ません。<br />

EDK で提供される FSL へア クセスする関数では、FSL インスタンスではなく、FSL バス接続の方<br />

を参照しています。 上の図は、 <strong>System</strong> <strong>Generator</strong> の MicroBlaze ブ ロ ッ ク を示し ています。 内側の<br />

ボックスが手動でコンフィギュレーションされた MicroBlaze を、 外側のボ ッ ク スが <strong>System</strong><br />

<strong>Generator</strong> ブロッ クで表示される MicroBlaze プロセッサを示しています。 こ の場合、 In0 はバス接<br />

続 SFSL2 に、 In1 は SFSL3 に接続されています。<br />

上の図では、 In0 から データ にアク セス する ために記述さ れたソ フ ト ウ ェ ア コ ード を 使用する と 、<br />

SFSL2 にアク セス さ れま す。 In0 から のノ ンブロ ッ キング データ リ ード は、次のよ う に記述さ れま す。<br />

int val;<br />

microblaze_nbread_datafsl(val,2);<br />

同様に、 Out0 への ノ ンブロ ッ キング データ ラ イ ト は、 次の よ う に記述 さ れます。<br />

microblaze_nbwrite_datafsl(val,0);<br />

シミュレーション中の FSL の読み出し/書き込み<br />

通常は、 EDK にエ ク ス ポー ト し た場合、 バ ス 接続を ワ イ ヤに ま と め る 必要が あ り ま す。 <strong>System</strong><br />

<strong>Generator</strong> からはシミ ュレーション中にコンフィギュレーション済みの MicroBlaze が提供される<br />

ので、 In0 ~ In7 は SFSL0 ~ SFSL7 に、 Out0 ~ Out7 は MFSL0 ~ MFSL7 に接続されます。<br />

FSL の id 0 か ら の読み出し は In0 に、 FSL の id 0 への書き出しは Out0 に接続されます。<br />

FSL の読み出し および書き込みエ ラー<br />

MicroBlaze のマニュアルでは、バスがビ ッグ エンデ ィ アン命名規則を使用し て表記 さ れています。<br />

次の説明はそれに合わせてビ ッ グ エンデ ィ アン命名規則を使用し てい る ので、 ビ ッ ト 0 が MSB に<br />

相当し ます。<br />

242 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


MicroBlaze Processor<br />

既知の問題<br />

MicroBlaze Status Register (MSR) は、 MicroBlaze にステータス状況を格納し、 エラーが発生した<br />

かど う かを確認する ために使用さ れます。<br />

MSR の読み出し によ るエ ラー確認<br />

FSL の読み出しおよび書き込みでエ ラーが発生する と、 そのエ ラーが MSR (MicroBlaze Status<br />

Register) に返されます。 MSR のエラーは、 アセンブ リ 命令の mfs を使用する と 読み出すこ と がで<br />

きます。 MSR を読み出すには、 次のマ ク ロ を使用し て く だ さ い。<br />

#define readmsr(val, dep) asm("mfs %0,rmsr" : "=d" (##val##) : "d"<br />

(dep))<br />

C プ ロ グ ラ ムの一番上で こ のマ ク ロ を定義し て く だ さ い。 具体的には次の よ う に使用し ます。<br />

int val, mymsr;<br />

microblaze_nbread_cntlfsl(val,0);<br />

readmsr(mymsr,val);<br />

このマクロによ り、val レジスタの書き込みと MSR の読み出し の間に依存関係が築かれます。 これ<br />

は、 特にループ内で使用し ます。 依存関係がない と 、 コ ンパ イ ラ は ソ フ ト ウ ェ ア コー ド の最適化を<br />

実行する際に mfs 命令をループの外部に移動し て し まいます。<br />

FSL 読み出し エ ラー<br />

FSL か ら の読み出し でエ ラーが発生する原因は、 「data invalid」 (データ が無効) か、 「FSL error」<br />

(FSL エラー) にあ り ます。 data invalid の場合は、 FSL にデータがないので、 ブロ ッ キングまたは<br />

ノンブロッキング データ リードが実行できません。 FSL error は、データ値を読み出すのに、ブ ロ ッ<br />

キングまたはノンブロッキング コント ロール リードが使用された場合に、 制御フラッグが 1 に設<br />

定さ れていない と 発生し ます。 また、 データ値を読み出すのに、 ブロ ッ キング ま たは ノ ンブロ ッ キ<br />

ング データ リードが使用された場合に、 制御フラッグが 1 に設定されていな く て も発生し ます。<br />

data invalid エ ラーが発生する と 、 MSR はキャ リ ー フラグを High に設定し ます。 このキャ リー フ<br />

ラグのマスクは 0X4 で、 ビ ッ ト 29 に対応し ます。 キ ャ リ ー フラグは、MSR の MSB (ビット 0)<br />

に も複製されます。<br />

FSL error が発生する と 、 MSR は FSL フラグを High に設定し ます。 この FSL フラグのマスクは<br />

0X10 で、 ビ ッ ト 27 に対応し ます。<br />

FSL 書き込みエ ラー<br />

書き込まれる FSL がフルの場合、 FSL への書き込みでエ ラーが発生し ます。 フルの FSL に書き込<br />

もうとすると、ブロッキングおよびノンブロッキング ライトの両方から data invalid エラーが返さ<br />

れます。<br />

data invalid エ ラーが発生する と 、 MSR はキャ リ ー フラグを High に設定し ます。 このキャ リー フ<br />

ラグのマスクは 0X4 で、 ビ ッ ト 29 に対応し ます。 キ ャ リ ー フラグは、MSR の MSB (ビット 0)<br />

に も複製されます。<br />

• 各デザ イ ンで使用で き る MicroBlaze プロセッサは 1 つだけです。 ただ し、 複数の MicroBlaze<br />

ブロックを EDK 側から作成された FSL イ ン ターフ ェ イ ス に接続する こ と はで き ます。<br />

• MicroBlaze は EDK にエクスポートするとき、最上位レベルにインスタンシエートする必要が<br />

あります。 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン モデルを使用する場合は、FSL の読み出しおよ<br />

び書き込みでエ ラ ーが発生し ないかど う かを確認し て く だ さ い。 シ ミュレーションが開始され<br />

ると、MicroBlaze プロ グ ラ ムがハード ウ ェアで実行され、 モデルが実行される前に FSL から<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 243<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

読み出し ま たは書き込みが行われる こ と があ り ます。 詳細は、 チュート リ アル : MicroBlaze プ<br />

ロセッサ システムの設計とシミ ュレーショ ン およびEDK Export Tool を参照して く ださい。<br />

• このブロックでは、 Verilog ネッ ト リストはサポート されません。<br />

MicroBlaze プロセッサのオンライン マニュアル<br />

関連項目<br />

MicroBlaze の詳細は、 次のサイ ト を参照し て く だ さい。<br />

http://japan.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=micro_blaze<br />

MicroBlaze プロセッサ ペリフェラルの設計とエクスポート<br />

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

EDK Export Tool<br />

244 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ModelSim<br />

ModelSim<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

<strong>System</strong> <strong>Generator</strong> の Black Box ブ ロ ッ ク を使用する と 、 既存の HDL ファイルをモ<br />

デルに組み込むこ と がで き ます。 モデルがシ ミ ュ レーシ ョ ン される と、 協調シ ミ ュ<br />

レーシ ョ ンを使用してブラ ッ ク ボックスがシミ ュレーションされるようにできま<br />

す。 この ModelSim HDL 協調シ ミ ュ レーシ ョ ン ブロッ クでは、 1 つまたは複数の<br />

ブラック ボッ ク スの協調シ ミ ュレーシ ョ ンがコンフ ィ ギュレーシ ョ ンおよび制御<br />

できます。<br />

シミュレーション中は、各 ModelSim ブロッ クで ModelSim のコピーが作成され、ModelSim ライ<br />

センスが 1 つずつ使用さ れます。 ライセンスが少ない場合は、複数のブラック ボックスで同じブ<br />

ロ ッ ク を共有で き ます。<br />

ModelSim ブロッ クでは、 次が実行されます。<br />

ブロック パラ メータ<br />

• ブラック ボックス HDL が ModelSim 内でシ ミ ュ レーシ ョ ン される よ う にするために必要な<br />

VHDL および Verilog を追加し ます。<br />

• Simulink のシ ミ ュ レーシ ョ ンが開始される と 、 ModelSim セ ッ シ ョ ン を開始し ます。<br />

• Simulink と ModelSim 間の通信を媒介し ます。<br />

• ブラック ボックス HDL が コ ンパイ ル さ れた と き にエ ラーがあれば、 それを レ ポー ト し ます。<br />

• シ ミ ュ レーシ ョ ンが終了する と 、 ModelSim を終了し ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

[Run co-simulation in directory] : ModelSim が こ こ で指定し たデ ィ レ ク ト リ で開始 さ れます。 ディ<br />

レクト リが存在しない場合は作成されます。 協調シ ミ ュ レーシ ョ ン用に <strong>System</strong> <strong>Generator</strong> で生成<br />

される補助ファイルも含め、 すべてのブラッ ク ボックス ファイルがこのディレク ト リにコピーさ<br />

れます。 既存のフ ァ イ ルは自動的に上書き さ れます。 デ ィ レ ク ト リ は、 相対パス ま たは絶対パスの<br />

どちらでも指定できます。 相対パスは、 Simulink の MDL ファイルがあるディレク ト リを基準に解<br />

釈されます。<br />

[Open wave<strong>for</strong>m viewer] : オンにする と、 ModelSim 波形ウ ィ ン ド ウ が自動的に開き、 標準的な信<br />

号セ ッ ト が表示されます。 こ の信号には、すべてのブ ラ ッ ク ボ ッ ク ス の入力 と 出力、および <strong>System</strong><br />

<strong>Generator</strong> から提供されるクロック信号と クロック イ ネーブル信号の入力と出力がすべて含まれま<br />

す。 信号表示は、 補助的な Tcl スクリプトでカスタマイズできます。 ス ク リ プ ト を指定する には、<br />

[Advanced] タブで [Add custom scripts] をオンにし、 [Script to run after "vsim"] にスク リプト名<br />

(例 : myscript.do) を入力します。 カスタマイズされた波形ビューアの例は、<br />

/examples/black_box/example5 ディレク ト リに含まれています。 こ の例について<br />

は、 ModelSim を使用したアドバンス ブラック ボックスの例を参照して く ださい。<br />

[Leave ModelSim open at end of simulation] : オンにする と、 Simulink シミュレーションが終了し<br />

た後も ModelSim セッションが開いたままになります。<br />

[Skip compilation (use previous results)] : オンにする と、 HDL 協調シ ミ ュ レーシ ョ ン用の<br />

ModelSim ブロッ クを使用するブラッ ク ボックスすべての ModelSim コンパイルが実行されなく<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 245<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

なります。 このオプションは、 ModelSim が実行されるデ ィ レ ク ト リ の下に ModelSim の作業デ ィ<br />

レ ク ト リ があ り 、作業デ ィ レ ク ト リ にすべてのブ ラ ッ ク ボックス HDL の最新の ModelSim コンパ<br />

イ ル結果が含まれてい る場合に使用し ます。 オンにする と 、 シ ミ ュ レーシ ョ ンの開始に必要な時間<br />

を大幅に削減でき ますが、 条件に合わない と きにオンにする と 、 シ ミ ュ レーシ ョ ンでエ ラーにな る<br />

か、 シ ミ ュ レーシ ョ ンが実行されて も間違った結果が出力さ れて し まいます。<br />

[Advanced] タブ<br />

[Advanced] タブからは、 次のよ うなパラ メータを設定できます。<br />

[Include Verilog unisim library] : オンにする と、 シ ミ ュレーシ ョ ン中、 ModelSim に Verilog の<br />

UniSim ライブラリを含めるようにできます。 ただし、Verilog の UniSim ライブラリは、ModelSim<br />

で UNISIMS_VER にマ ッ プ し てお く 必要があ り ます。 また、このオプシ ョ ンをオンにする と、glbl.v<br />

モジ ュールが コ ンパイ ル さ れ、 シ ミ ュ レーシ ョ ン中に起動さ れます。<br />

[Add custom scripts] : script は、ModelSim で実行される Tcl マクロ ファイル (DO ファイル) のこ<br />

とです。 オンにする と、[Script to run be<strong>for</strong>e starting compilation]、[script to run in place of "vsim"]、<br />

[Script to run after "vsim"] フィールドが設定できるようになります。 [Add custom scripts] をオンに<br />

しておかないと、 これらのフィールドで名前を付けた DO ファイルは実行されません。<br />

[Script to run be<strong>for</strong>e starting compilation] : ブラック ボックス HDL ファイルをコンパイルする前に<br />

ModelSim で実行される Tcl マクロ ファイル (DO ファイル) の名前を入力し ます。<br />

メモ : ModelSim マクロ ファイル (DO ファイル) の記述方法は、 ModelSim のユーザー <strong>ガイド</strong>の<br />

「Tcl and macros (DO files)」 の章を参照し て く だ さ い。<br />

[Script to run in place of "vsim"] : ModelSim では、Tcl (Tool Command Language) をスク リプト言<br />

語 と し て使用し て、 ツールを制御および拡張し ます。 このフィールドには、 ModelSim の Tcl マク<br />

ロ ファイル (DO ファイル) を入力し ます。 このフ ァ イルが、 <strong>System</strong> <strong>Generator</strong> で ModelSim のシ<br />

ミ ュ レーシ ョ ン を開始する命令があ る と 、 ModelSim の do コマンドで実行されます。 マクロ ファ<br />

イ ルの実行が開始されてか ら シ ミ ュ レーシ ョ ン を開始する場合は、 こ のマ ク ロ ファイルに vsim コ<br />

マン ド を含める必要があ り ます。<br />

通常 こ のパ ラ メ ータ が空白の場合、 ま たは [Add custom scripts] がオフの場合、 <strong>System</strong> <strong>Generator</strong><br />

は ModelSim にデフ ォル ト のコマン ド vsim $toplevel -title {<strong>System</strong> <strong>Generator</strong> Co-Simulation<br />

(from block $blockname} を実行する よ う に命令し ます。 こ の場合、 $toplevel はシ ミ ュレーシ ョ ン<br />

の最上位レベルのエンティティ名 (例 : work.my_model_mti_block)、 $blockname は現在の協調シ<br />

ミュレーションに関連する Simulink モデルの中の ModelSim ブロック名を示しています。 問題を<br />

回避する ために、 ブ ロ ッ ク 名に改行などの文字は使用し ないで く だ さ い。<br />

[Add custom scripts] をオンにして、 このパラ メータを指定する と、 <strong>System</strong> <strong>Generator</strong> が do $*<br />

$toplevel $blockname を実行する よ う に ModelSim に命令を し ます。 この場合、$toplevel と<br />

$blockname は上記の説明 と 同じで、$* は こ のフ ィ ール ド に入力 さ れた文字にな り ます。 たとえば、<br />

このフィールドに foo.do と い う 文字を入力する と 、ModelSim は foo.do を実行し ます。 次に、 こ の<br />

マクロ ファイルで $toplevel に $1、 $blockname に $2 を適用する と 、 マクロ ファイル foo.do の中<br />

の vsim $1 コマンドは、 toplevel で vsim を実行し ます。<br />

[Script to run after "vsim"] : このフィールドには、 ブラック ボックスのすべての HDL が問題な く<br />

コンパイルされ、 ModelSim シ ミ ュ レーシ ョ ンが問題な く 終了した後に、 ModelSim で実行される<br />

Tcl マクロ ファイル (DO ファイル) を入力し ます。 [Basic] タブで [Open wave<strong>for</strong>m viewer] をオン<br />

に し てい る と 、 こ のス ク リ プ ト を実行する前に、 波形ビ ューアを開いてカ ス タ マ イ ズするすべての<br />

コマンドが <strong>System</strong> <strong>Generator</strong> で実行されます。 これで、 信号をデフォルトのビューアに追加する<br />

か、 完全なカ ス タ ム ビューアを作成して、 波形ビ ューアをカス タマイズでき る よ う にな り ます。 ブ<br />

ラック ボッ ク スのチュー ト リ アルには、 波形ビューアのカス タマイズ例が含まれています。<br />

246 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ModelSim<br />

タイム スケール<br />

カスタム ス ク リ プ ト では相対パス を使用する と 便利な こ と が多 く あ り ます。 相対パスは、 モデルの<br />

MDL フ ァ イルがあ るデ ィ レ ク ト リ を基準に解釈 さ れます。 [Run co-simulation in directory] フィー<br />

ル ド の相対パス も、モデルの MDL フ ァ イルがあ るデ ィ レ ク ト リ を基準に解釈 さ れます。 このため、<br />

たとえば [Run co-simulation in directory] で ModelSim が実行される ./modelsim ディレク ト リが指<br />

定さ れてい る場合に、 ス ク リ プ ト を定義する フ ィ ール ド に相対パス ../foo.do を指定する と 、 MDL<br />

を含むデ ィ レ ク ト リ の foo.do という名前のファイルが使用されます。<br />

ModelSim と Simulink のタイム スケールは同じです。 Simulink シミュレーション時間の 1 秒は、<br />

ModelSim シミュレーション時間の 1 秒と同じ長さです。 これによ り、 2 つの設定で発生する イベ<br />

ン ト の時間が比較しやす く な り ます。 通常は、 Simulink のタイム ス ケールが大き く て も便利です。<br />

これは、 タイム スケールが大きいと、<strong>System</strong> <strong>Generator</strong> で HDL モデルの タ イ ミ ング特性に関する<br />

問題な し に、 イベン ト を ス ケジ ュールで き る か ら です。 こ の場合、 協調シ ミ ュ レーシ ョ ン モデルで<br />

<strong>System</strong> <strong>Generator</strong> のイベン ト ス ケジ ュールをユーザーが注意する必要があ り ません。<br />

この例は、 Sytem <strong>Generator</strong> のデ ィ レ ク ト リ 、 /example/black_box/example4 に<br />

含まれています。 こ の例については、 Verilog モジュールのインポー ト も参照してください。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 247<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

上記のモデルが実行される と 、 ModelSim で次の波形が表示 さ れます。<br />

このタイ ミング スケールでは (上の図では、 6 秒間隔)、 3 秒目の ク ロ ッ ク の立ち上が り エ ッ ジ と そ<br />

れに対応する 2 つのブラ ッ ク ボ ッ ク ス それぞれか ら の送信データ が同時に表れています。 こ れは、<br />

Simulink のシ ミ ュ レーシ ョ ン と同じです。 ただ し、 モデルを見る と 、 明ら かに最初のブ ラ ッ ク ボッ<br />

クスの出力が 2 つ目のブ ラ ッ ク ボックスに入力されています。 どちらのブラ ッ ク ボックスも組み<br />

合わせフ ィ ー ド スルーを含むので、 入力の変更がすぐに出力の変更に反映されます。 3 秒目の イベ<br />

ン ト を拡大する と 、 <strong>System</strong> <strong>Generator</strong> が こ の依存性を どの よ う に回避し たのかがわか り ます。 表示<br />

される間隔は、 20 ms に短縮されています。 .<br />

248 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ModelSim<br />

上の図は、 <strong>System</strong> <strong>Generator</strong> がクロックの立ち上がりエッジをシフ ト したところを示しています。<br />

こ れで、 入力値が Simulink から集められ、 最初のブラック ボックスに渡される前にクロックが立<br />

ち上がる よ う になっています。 こ の後、 値が最初のブ ラ ッ ク ボ ッ ク スに渡され、 その結果がわずか<br />

に遅れた時間で 2 つ目のブ ラ ッ ク ボックスに渡されます。 さ ら に少し拡大する と 、 最初のブ ラ ッ ク<br />

ボックスの HDL モデルに伝搬遅延が含まれてい る のがわか り ます。こ の遅延は、<strong>System</strong> <strong>Generator</strong><br />

で大きなタ イ ム ス ケールを使用する こ と に よ って、 効率的に取 り 除かれています。 最初のブ ラ ッ ク<br />

ボックスからの実際の遅延 (調度 1 ns) は、 次の図に表示されています。<br />

ブラック ボックス コ ンポーネン ト か らデータ を伝搬する場合、 <strong>System</strong> <strong>Generator</strong> ではシステム ク<br />

ロック周期の 1/1000 が 1us に分配され、 それがシ ステム ク ロ ッ ク周期の 1/100 の 5ns に縮小され<br />

て分配され、 そのしきい値よ り も低くなる と、 デルタ遅延ステップが使用されます (ModelSim に<br />

対して run 0 ns コマンドが実行されます)。 HDL に転送遅延などの タ イ ミ ン グ情報が含まれ、<br />

Simulink のシステム周期の設定が低すぎる場合は、 正しいシ ミ ュ レーシ ョ ン結果が出ません。 上記<br />

のモデルの場合、 Simulink のシステム周期設定が 5e-7 よりも削減されると、エラーになります。<br />

このポイントは、<strong>System</strong> <strong>Generator</strong> がデータ転送用にブ ラ ッ ク ボックスのデルタ遅延ステップを実<br />

行する箇所です。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 249<br />

リリース 9.2.00 2007 年 8 月<br />

R


Mult<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

ブロック パラ メータ<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Math] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクスの Mult ブ ロ ッ ク は、 乗算器を イ ンプ リ メ ン ト し ます。 このブロック<br />

では、 2 つの入力ポー ト のデータ の積が出力ポー ト に出力さ れます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Use embedded multipliers] : オンにする と 、 エンベデ ッ ド 乗算器を使用する命令が コ アに送ら<br />

れます (Virtex-II、 Virtex-4、 Virtex-5、 Spartan-3、 Spartan-3A <strong>DSP</strong> のパラ レル乗算器にのみ<br />

使用で き ます)。<br />

• [Test <strong>for</strong> optimum pipelining] : [Basic] タブで指定した [Latency] が少な く と も最適なパイ プ ラ<br />

イン長と等しいかどうかがチェックされます。 レイテンシの値がこのテストをパスした場合、<br />

コ アはス ピー ド を重視し て最適化さ れます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

Mult ブロッ クでは、 [Implement from behavioral HDL description (otherwise use core)] がオンに<br />

なっている場合を除いて、 次のザイ リ ン ク ス Multiplier <strong>Generator</strong> コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

250 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5<br />

Mult Multiplier V10.0 • • • • • • • •


Multiple Subsystem <strong>Generator</strong><br />

Multiple Subsystem <strong>Generator</strong><br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Shared Memory] および [Index] ライブラリにリストされて<br />

います。<br />

ザイ リ ンクスの Multiple Subsystem <strong>Generator</strong> ブ ロ ッ ク は、 複数の <strong>System</strong><br />

<strong>Generator</strong> デザイ ンを複数の ク ロ ッ ク ド メ イ ン を使用する 1 つの最上位レベルの<br />

HDL コ ンポーネン ト に接続し ます。 こ の最上位レベルの コ ンポーネン ト には、 各<br />

<strong>System</strong> <strong>Generator</strong> デザイ ンに接続されたロ ジ ッ ク と、 デザイ ンが互いに通信でき る<br />

ようにするロジックが含まれます。<br />

ソ フ ト ウ ェ アでは、 こ の通信は共有 メ モ リ と 共有 メ モ リ 関連のブ ロ ッ ク (Shared<br />

Memory、 To/From FIFO、 To/From Register ブロッ クなど) を使用して処理されます。 ハード ウ ェ<br />

アでは、 デザ イ ンが共有 メ モ リ に対応する ハー ド ウ ェ ア インプリ メンテーション (デュアル ポー ト<br />

メ モ リ 、 非同期 FIFO、 レジスタなど) に関連付け ら れ、 シ ス テム をパーテ ィ シ ョ ン し た り 、 複数の<br />

クロック ドメインでインプリメントしたりできます。<br />

ブロック パラ メータ<br />

デザイ ンの生成<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

Multiple Subsystem <strong>Generator</strong> ブロ ッ クのパラ メ ータには、 次のよ う な ものがあ り ます。<br />

• [Part] : 使用する FPGA デバイ ス を指定し ます。<br />

• [Target directory] : コ ンパ イル結果を記述するデ ィ レ ク ト リ を指定し ます。 <strong>System</strong> <strong>Generator</strong><br />

および FPGA インプリ メンテーション ツールでは多数のファイルが生成されるので、 個別の<br />

ディレク ト リ (Simulink モデル フ ァ イルが含まれるデ ィ レ ク ト リ と は別のデ ィ レ ク ト リ ) を指<br />

定する こ と をお勧め し ます。<br />

• [Synthesis tool] : デザイ ンの合成に使用する ツールを指定し ます。 Synplicity 社の Synplify<br />

Pro または Synplify、 およびザイリンクスの XST を選択でき ます。<br />

• [Hardware description language] : 生成する HDL 言語の タ イ プ (Verilog または VHDL) を選択<br />

します。<br />

Multiple Subsystem <strong>Generator</strong> ブロックでは、 パラ メータ ダイアログ ボックスで [Generate] ボタ<br />

ン を ク ロ ッ ク する と 、 次が実行さ れます。<br />

1. 生成し て接続する <strong>System</strong> <strong>Generator</strong> デザイ ンを決定し ます。<br />

2. <strong>System</strong> <strong>Generator</strong> デザインを適切な設定でコンフ ィ ギュ レーシ ョ ン し、デザイ ンを個別に生成<br />

します。<br />

3. 共有 メ モ リ ブロックのハードウェア インプリ メンテーション (コアのネット リス トなど) を出<br />

力します。<br />

4. 対応する共有 メ モ リ のハー ド ウ ェ ア イ ンプ リ メ ンテーシ ョ ン と 接続さ れた <strong>System</strong> <strong>Generator</strong><br />

デザ イ ン を含む最上位レベルの HDL ファイルを生成します。<br />

Multiple Subsystem <strong>Generator</strong> ブロックでは、 ブロック と同じ階層レベルにある <strong>System</strong> <strong>Generator</strong><br />

ブ ロ ッ ク を含むサブシ ス テムが検索さ れ、 どのサブシ ス テム を イ ンプ リ メ ン ト し て接続する かが決<br />

定されます。 Multiple Subsystem <strong>Generator</strong> ブロッ クを Simulink デザ イ ンに含め る場合は、 次の規<br />

則に従 う 必要があ り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 251<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

• <strong>System</strong> <strong>Generator</strong> ブロッ クは、通常 Multiple Subsystem <strong>Generator</strong> ブロック と同じ階層レベル<br />

には含めません。<br />

• サブシステム内の少な く と も 2 つのマス タ <strong>System</strong> <strong>Generator</strong> ブロッ クを Multiple Subsystem<br />

<strong>Generator</strong> ブ ロ ッ ク と 同じ階層レベルに含め る必要があ り ます。<br />

• 1 つの階層レ ベルに含める こ と ができ る Multiple Subsystem <strong>Generator</strong> ブロ ッ ク は 1 つだけです。<br />

たとえば、 次のようなブロック図があるとします。 この図には、 サブシステムが 2 つ含まれていま<br />

す。 各サブシ ス テムには、 <strong>System</strong> <strong>Generator</strong> ブロッ クが 1 つと <strong>System</strong> <strong>Generator</strong> ロジックが複数<br />

含まれます。 この図に表示されているサブシステムは 2 つだけですが、 Multiple Subsystem<br />

<strong>Generator</strong> ブロックにはそれ以上の数のサブシステムを対応させることができます。 Multiple<br />

Subsystem <strong>Generator</strong> ブロックは、 この 2 つのサブシステム と同じ階層レベルに含まれます。<br />

Multiple Subsystem <strong>Generator</strong> ブロッ クを使用してデザイン全体を生成するよ うに選択する と、 サ<br />

ブシ ス テムが生成されて接続されます。<br />

1 つのマス タの <strong>System</strong> <strong>Generator</strong> ブロッ クを含むサブシステムは、 Multiple Subsystem <strong>Generator</strong><br />

ブロックのダイアログ ボックスで [Generate] ボタンをク リ ックすると、NGC コンパイル ターゲッ<br />

トを使用してインプリメントされます。 NGC コンパイル ターゲ ッ ト を使用する と、 結果の HDL<br />

ネッ ト リス ト、 コア、 制約が 1 つのネ ッ ト リ ス ト フ ァ イル と し て作成でき る と い う 利点があ り ま<br />

す。 デザイ ンを ま と める HDL コンポーネントでは、<strong>System</strong> <strong>Generator</strong> デザイ ンがブラ ッ ク ボック<br />

スとしてインスタンシエートされます。NGC ファイルにはブラック ボックスのインプリ メンテー<br />

ションが含まれます。 上の例の場合、 それぞれが各サブシステムに対応し た 3 つの NGC ファイル<br />

が生成されます。<br />

デザ イ ンの生成前に、 Multiple Subsystem <strong>Generator</strong> ブロックのダイアログ ボックスで [Part]、<br />

[Synthesis tool]、[Hardware description language] を設定しておき ます。 これらの設定は、マスタの<br />

<strong>System</strong> <strong>Generator</strong> ブ ロ ッ ク の設定よ り も優先さ れます。 元の <strong>System</strong> <strong>Generator</strong> 設定は、生成が完了<br />

する と回復されます。<br />

Multiple Subsystem <strong>Generator</strong> ブロッ クを使用して接続されたサブシステム同士の通信には、<br />

To/From FIFO ブロックまたは To/From Register ブ ロ ッ ク のいずれかの共有 メ モ リ ブロッ クのペ<br />

アが使用されます。 このブロック ペアは、1 つのブロ ッ ク (例 : To FIFO ブロッ ク) が 1 つのサブシ<br />

ステムに含まれる場合、 ペアのも う 1 つのブロ ッ ク (From FIFO ブロッ ク) が別のサブシ ステムに<br />

含まれる よ う にパーテ ィ シ ョ ンする必要があ り ます。<br />

デザ イ ン全体がハー ド ウ ェ アに変換 さ れる と 、 FIFO の半分が 2 つ、 対応するサブシ ス テムか ら 読<br />

み出 さ れます。 こ の後、 前に共有 メ モ リ ポー ト (data in、 data out など) に接続された <strong>System</strong><br />

252 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Multiple Subsystem <strong>Generator</strong><br />

<strong>Generator</strong> ロ ジ ッ ク がそのデザ イ ンの最上位レベルのポー ト に接続さ れます。 つま り、1 つのサブシ<br />

ステムの HDL コ ンポーネン ト には、 共有 メ モ リ の半分用のポー ト が含まれます。 残 り の半分には、<br />

共有 メ モ リ の反対側用のポー ト が含まれます。 共有 メ モ リ のハー ド ウ ェ ア インプリ メンテーション<br />

が作成され、 最上位レベルの共有 メ モ リ ポー ト に接続 さ れます。<br />

メモ : Multiple Subsystem <strong>Generator</strong> ブロックでは、 現在のと ころ、 複数の共有メモリ ブロックが<br />

同じサブシステム内の同じ共有メモリ オブジェ ク ト を参照できないよ う になっています。 たとえ<br />

ば、 To FIFO ブロ ッ クはほかのサブシステムにある 2 つの From FIFO ブ ロ ッ ク と の通信には使用<br />

できません。<br />

たとえば、A と B の 2 つのサブシステムがある と し ます。 サブシステム A には To FIFO ブロッ ク<br />

が、 サブシステム B には From FIFO ブロ ッ クが含まれます。 FIFO の反対半分では、 my_fifo とい<br />

う同じ共有メモリが指定されます。 Multiple Subsystem <strong>Generator</strong> ブロックを使用してネッ ト リ ス<br />

ト が作成 さ れる と 、 To FIFO ブロック と From FIFO ブロッ クが対応するサブシステムからそれぞ<br />

れ削除され、 1 つのコ ア インプリ メンテーション (例 : 非同期 FIFO コアなど) に統合されます。 次<br />

の図は、 こ のプロセス を示し ています。<br />

次の表は、 共有 メ モ リ および共有 メ モ リ 関連のブロ ッ ク を イ ンプ リ メ ン ト に使用される コ アまたは<br />

HDL コンポーネントのインプリ メンテーションを示しています。<br />

To ブロック From ブロック ハードウェア インプリメンテーション<br />

共有 メ モ リ 共有 メ モ リ Dual Port Block Memory 6.1<br />

To FIFO To FIFO Fifo <strong>Generator</strong> 2.1<br />

To Register To Register synth_reg_w_init.(vhd,v)<br />

メモ : 共有 メ モ リ ブ ロ ッ ク は、 サブシ ス テム間の通信手段 と し てのみ使用さ れます。 サブシステム<br />

間の通信に <strong>System</strong> <strong>Generator</strong> 信号は使用しないでください。 これは、 これらの信号が Multiple<br />

Subsystem <strong>Generator</strong> ブ ロ ッ ク で作成さ れる最上位レベルの HDL コ ンポーネン ト の最上位レベル<br />

のポー ト に最終的に変換されるか ら です。<br />

Multiple Subsystem <strong>Generator</strong> ブロッ クを使用した <strong>System</strong> <strong>Generator</strong> デザイ ンのゲー ト ウ ェ イ<br />

ポー ト はすべて最上位レベルの HDL コ ンポーネン ト のポー ト インターフェ イスに含まれます。 ま<br />

た、 ク ロ ッ ク ポー ト と ク ロ ッ ク イネーブル ポー ト は、 それぞれ各 <strong>System</strong> <strong>Generator</strong> サブシステム<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 253<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

のポー ト インターフェイスに含まれます。 クロック ポー ト 名と ク ロ ッ ク イネーブル名は、 ポート<br />

名にデザイ ン名が付いた名前で区別されます。 たとえば、Domain A というサブシステムに inport_a<br />

という入力ポート 1 つと outport_a という出力ポート 1 つが含まれる と し ます。 また、Domain B と<br />

いうサブシステムには、inport_b という入力ポート 1 つと outport_b という出力ポート 1 つが含ま<br />

れる と します。 結果の最上位レベルのエンティティの VHDL ポー ト インターフェイスは、 次のよ<br />

うになります。<br />

entity multiple_subsys_ex is<br />

port (<br />

domain_a_ce: in std_logic := '1';<br />

domain_a_clk: in std_logic;<br />

domain_b_ce: in std_logic := '1';<br />

domain_b_clk: in std_logic;<br />

inport_a: in std_logic_vector(17 downto 0);<br />

inport_b: in std_logic_vector(17 downto 0);<br />

outport_a: out std_logic_vector(17 downto 0);<br />

outport_b: out std_logic_vector(17 downto 0)<br />

);<br />

end multiple_subsys_ex;<br />

複数ク ロ ッ クのサポー ト<br />

Multiple Subsystem <strong>Generator</strong> ブ ロ ッ ク を使用する サブシ ス テムには、 それぞれマ ス タ の <strong>System</strong><br />

<strong>Generator</strong> ブロッ クが 1 つ含まれる ので、 Simulink シ ス テム周期や FPGA ク ロック周期などのク<br />

ロ ッ ク情報をブ ロ ッ ク ご と に指定する こ と がで き ます。 異なる Simulink シ ス テム周期を指定する<br />

と、 各 <strong>System</strong> <strong>Generator</strong> デザ イ ン を別のレー ト でシ ミ ュ レーシ ョ ンで き、 非同期の ク ロ ッ ク ドメ<br />

イ ン を使用する モデル シ ス テムを効率的に作成で き ます。<br />

Multiple Subsystem <strong>Generator</strong> ブロックは、生成されるサブシステムごとに別のクロック ポー ト を<br />

作成し ます。 このクロック ポー ト が <strong>System</strong> <strong>Generator</strong> デザ イ ンの対応する ク ロ ッ ク ポー ト に配線<br />

されます。 複数の ク ロ ッ ク を使用するデザ イ ンのネ ッ ト リ ス ト が生成さ れる と (高位レベルのモデ<br />

ルから下位レベルの HDL 記述に変換 さ れる と )、共有メ モ リ の半分 2 つが対応する サブシ ス テムか<br />

ら上位の階層レベルに移動さ れます。 この共有メモリ ペアの 2 つの半分が ク ロ ッ ク ドメイン ブ<br />

リッジ (デュアル ポー ト メモリなど) をインプリ メントする 1 つの HDL コ ンポーネン ト に置換さ<br />

れます。 この後、 2 つの ク ロ ッ ク ドメインからのクロックがブリッジ コ ンポーネン ト の反対側に、<br />

必要なデータおよび制御信号 と 共に接続さ れます。<br />

254 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Multiple Subsystem <strong>Generator</strong><br />

生成フ ァ イル<br />

Multiple Subsystem <strong>Generator</strong> ブロッ クでは、 [Generate] ボタンをク リ ックすると、 下位レベルの<br />

フ ァ イルが複数生成さ れます。 これらのファイルは、 ブロッ クのダイアログ ボックスで指定した<br />

ターゲッ ト ディレク ト リに書き込まれます。 このブロックで生成される主なファイルは、 次のとお<br />

りです。<br />

ファイル タイプ 説明<br />

.vhd (または .v) <strong>System</strong> <strong>Generator</strong> デザ イ ン を含む最上位レベルの HDL<br />

コンポーネントがまとめられています。<br />

.edn ファイル Multiple Subsystem <strong>Generator</strong> ブロックは、 HDL を書き<br />

込むだけでな く 、 CORE <strong>Generator</strong> から共有メモリの<br />

ハード ウ ェ ア イ ンプ リ メ ンテーシ ョ ン を実行し ます。<br />

CORE <strong>Generator</strong> では、<br />

multiplier_virtex2_6_0_83438798287b830b.edn という<br />

ような名前の EDIF ファイルが生成されます。<br />

globals デザインを記述するキーと値のペアが含まれます。 この<br />

ファイルは Perl ハッシュ テーブルと して構成されてお<br />

り、Perl eval 関数を使用する こ と に よ り Perl スクリプト<br />

でキー と 値を使用で き ます。<br />

.xcf (または .ncf) タ イ ミ ング制約およびポー ト の ロ ケーシ ョ ン制約が含ま<br />

れます。 こ れら の制約は、 ザ イ リ ン ク ス の合成ツール<br />

XST およびザイ リ ンクス インプリ メンテーション ツー<br />

ルで使用されます。 XST 以外の合成ツールを指定し た場<br />

合は、 拡張子は .ncf となります。<br />

hdlFiles Multiple Subsystem <strong>Generator</strong> ブロックで生成される<br />

HDL ファイルのリストが含まれます。 ファイルは、通常<br />

の HDL 依存順で リ ス ト さ れています。<br />

.npl ザイ リ ンクスのプロジェク ト管理ツール Project<br />

Navigator で HDL および EDIF フ ァ イルを処理する ため<br />

のプロジェ ク ト ファイルです。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 255<br />

リリース 9.2.00 2007 年 8 月<br />

R


Mux<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Control Logic]、 [Index] ライブラリにリ<br />

ストされています。<br />

ブロック パラ メータ<br />

ザイ リ ンクスの Mux ブロッ クは、マルチプレクサをインプリ メン ト します。<br />

ブロックには、 セレク ト入力 ( 符号な し ) が 1 つと、 ユーザーがコンフィ<br />

ギ ュ レーシ ョ ン可能なデータ バス入力 (0 ~ 1024 の範囲 ) がい く つか含まれ<br />

ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックで使用されるパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの共通オプ<br />

ションで説明されています。<br />

256 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Negate<br />

Negate<br />

ブロック パラ メータ<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Math] および [Index] ライブラリにリストされています。<br />

ザイ リンクスの Negate ブ ロ ッ ク では、入力の論理否定 (2 の補数 ) が実行されます。<br />

このブロッ クは、 ザイ リンクス LogiCORE ま たは合成可能な VHDL モジュールと<br />

してインプリ メン トできます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックで使用されるパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの共通オプ<br />

ションで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 257<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Network-based Ethernet Co-Simulation<br />

ザイ リ ンクスの Network-based Ethernet Co-Simulation ブロックは、 IPv4 ネッ ト<br />

ワーク イ ン フ ラ ス ト ラ ク チ ャ の イーサネ ッ ト 接続を介し て、 ハー ド ウ ェ ア協調シ<br />

ミ ュ レーシ ョ ン を実行する イ ン ターフ ェ イ ス を提供し ます。<br />

イ ン ターフ ェ イ ス、 必要条件、 セ ッ ト ア ッ プ手順などの詳細は、 ネッ ト ワーク ベー<br />

スのイーサネッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を参照して く ださい。<br />

このブロックには、 さまざまなポート インターフェイスが使用されます。 ネッ ト ワーク ベースの<br />

イーサネッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンのためにモデルが イ ンプ リ メ ン ト される と 、新し<br />

いライブラ リが作成され、 このライブラ リに元のモデルのゲート ウェイ名 (サブシステムが最上位<br />

レベルでない場合はポー ト名) と同じポートの付いたカスタムの Network-based Ethernet Cosimulation<br />

ブロッ クが含まれます。 このブロックは、Simulink のシ ミ ュ レーシ ョ ン中に、FPGA ハー<br />

ドウェア プ ラ ッ ト フ ォーム と の通信に使用されます。 ブロ ッ ク の入力ポー ト に書き込まれたシ ミ ュ<br />

レーシ ョ ン データはブ ロ ッ ク に よ り ハー ド ウ ェ アに渡されます。 データ がブ ロ ッ ク の出力ポー ト か<br />

ら読み出される と 、ブ ロ ッ ク はハー ド ウ ェ アか ら適切な値を読み込んで、出力ポー ト に駆動し ます。<br />

これで、データが Simulink で解釈できるようになります。 また、ブロックではプラッ ト フォームの<br />

開始、 コ ン フ ィ ギ ュ レーシ ョ ン、 ス テ ッ プ、 終了が自動的に実行さ れます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Clock source] : シングル ステップまたはフ リーランニング クロック ソース を選択で き ます。<br />

シングル ステップ ク ロ ッ ク を選択する と 、 1 度に 1 クロック サイクルずつボードをステップ<br />

できます。 各クロック サイクル ステップは、 Simulink での一定の時間に相当し ます。 こ の ク<br />

ロック ソースを使用すると、 シミュレーション中の協調シミュレーション ハー ド ウ ェ アのビ<br />

ヘイ ビ アのビ ッ ト 精度および周期精度が、そのサブシ ス テムのシ ミ ュ レーシ ョ ン ビヘイ ビアよ<br />

り も正確にな り ます。 シングル ステップが不要で、フ リーランニング クロックでボードを実行<br />

できる場合もあり ます。 この場合、 ボードは Simulink シ ミ ュ レーシ ョ ン と 非同期で動作し ま<br />

す。<br />

• [Has combinational path] : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブロックの出力ポートから同<br />

じ ブ ロ ッ ク の入力ポー ト への直接組み合わせフ ィ ー ド バ ッ ク パス (同じブロッ クの出力ポート<br />

から入力ポートへの接続) が必要な場合も あ り ます。 出力ポー ト か ら入力ポー ト への直接<br />

フィードバック パスが必要で、デザ イ ンに入力ポー ト か ら出力ポー ト への組み合わせパスが含<br />

まれない場合は、 このチェ ッ ク ボックスをオフにすると、 デザインでフィードバック パスを<br />

使用できるようになります。<br />

• [Bitstream name] : ネッ ト ワーク ベース のイ ーサネッ ト ハード ウ ェ ア協調シミ ュ レ ーショ ン プ<br />

ラット フォーム用の協調シミ ュレーショ ン FPGA コンフィ ギュレーショ ン フ ァ イ ルを 指定し<br />

ます。 新規の協調シミ ュ レ ーショ ン ブロ ッ ク がコ ン パイ ル中に作成さ れる と 、 こ のパラ メ ータ<br />

が自動的に設定さ れ、 正し いコ ン フ ィ ギュ レ ーショ ン フ ァ イ ルが使用さ れま す。 このパラメー<br />

タは、 コンフィ ギュレーショ ン ファイルのディレクト リ を変更した場合にのみ修正します。<br />

[Network] タブ<br />

[Network] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

258 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Network-based Ethernet Co-Simulation<br />

関連項目<br />

• [FPGA IP address] : ターゲッ ト FPGA プ ラ ッ ト フ ォームに関連付け られた IPv4 アドレスを指<br />

定します。 IP アドレスは、10 進数を ピ リ オ ド で区切った表記方法 (192.168.8.1 など) で指定し<br />

ます。 FPGA プラッ ト フォームの IP アドレスのコンフィギュレーションについては、ユーザー<br />

ガ イ ド を参照し て く だ さ い。<br />

• [Timeout] : コンフィギュレーション プロセスと協調シミ ュレーショ ン プロセス中にパケッ ト<br />

損失があ った場合に、 パケ ッ ト 再送信に使用さ れる タ イ ムア ウ ト 値を ミ リ 秒で指定し ます。 通<br />

常はデフ ォル ト の値で問題あ り ませんが、レ イ テンシが大き かった り 、混線のためにネ ッ ト ワー<br />

ク接続が遅い場合は、 よ り 大き な値を指定し てみて く ださ い。<br />

• [Number of retries] : コンフィギュレーション プロセスと協調シミ ュレーショ ン プロセス中に<br />

パケ ッ ト 損失があった場合に、 パケ ッ ト 再送信に使用さ れる リ ト ラ イ回数を指定し ます。 通常<br />

はデフ ォル ト の値で問題あ り ませんが、 ネ ッ ト ワーク接続でかな り の量のパケ ッ ト 損失があ る<br />

場合は、 よ り大きな値を指定してみてください。<br />

イーサネッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン<br />

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

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 259<br />

リリース 9.2.00 2007 年 8 月<br />

R


Opmode<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [<strong>DSP</strong>] および [Index] ライブラリにリストされています。<br />

ザイ リ ンク ス の Opmode ブロ ッ ク では、 <strong>DSP</strong>48 または <strong>DSP</strong>48E 命令の定数が生成さ<br />

れま す。 こ の命令は、 <strong>DSP</strong>48 の場合が 11 ビット 値、<strong>DSP</strong>48E の場合が 15 ビット 値に<br />

なり ます。 命令には、 opmode、 carry-in、 carry-in select が含まれる ほか、 <strong>DSP</strong>48 か<br />

<strong>DSP</strong>48E かによ って subtract または alumode ビット のいずれかが含まれます。<br />

Opmode ブロッ クは、 <strong>DSP</strong>48 または <strong>DSP</strong>48E の制御シーケン ス を生成するのに使用する と 便利で<br />

す。 次の図に例を示し ます。 この例では、 <strong>DSP</strong>48 ブロッ クに 4 つの命令を含むシーケンスが使用さ<br />

れ、 35X35 ビ ッ ト の乗算器が イ ンプ リ メ ン ト さ れています。 Opmode ブロックは命令をマルチプレ<br />

ク サに伝え、 マルチプレ ク サがシーケ ン スの各命令を選択し ています。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Opmode] タブ<br />

[Opmode] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Device] : <strong>DSP</strong>48 または <strong>DSP</strong>48E デバ イ スのど ち ら の命令を生成する か指定し ます。<br />

• [Operation] : ブロッ クで生成される命令を表示します。 命令は、 ブロッ ク表面にも表示されま<br />

す。<br />

• [<strong>DSP</strong>48 Instruction] または [Custom Instruction] : <strong>DSP</strong>48 または <strong>DSP</strong>48E 命令を選択で き ま<br />

す。 カ ス タ ム を選択する と 、z_mux +/-(yx_mux + carry) フ ォーマ ッ ト の命令形式が可能なマス<br />

ク パ ラ メ ータが表示 さ れます。<br />

• [Z mux] : <strong>DSP</strong>48(E) の加算器に対する Z ソースを {'0', 'C', 'PCIN', 'P','C', 'PCIN>>17','<br />

P>>17'} のいずれかから指定し ます。<br />

• [Operand] : <strong>DSP</strong>48 の加算器で加算を実行する か、 減算を実行する か指定し ます。 <strong>DSP</strong>48E の<br />

場合、 演算は [Instruction] プルダウ ンから選択し ます。<br />

• [YX muxes] : <strong>DSP</strong>48 の加算器に対する YX ソースを {'0','P', 'A:B', 'A*B', 'C', 'P+C', 'A:B+C' }<br />

のいずれかか ら指定し ます。 [A:B] にする と 、 A が B と連結されて 1 つの値が出力され、 加算<br />

器の入力 と し て使用されます。<br />

• [Carry input] : <strong>DSP</strong>48 の加算器に対する YX ソースを {'0', '1', 'CIN', '~SIGN(P or PCIN)',<br />

'~SIGN(A:B or A*B)' ,. '~SIGND(A:B or A*B)'} のいずれかから指定し ます。 [~SIGN (P or<br />

260 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Opmode<br />

PCIN)] の場合は、 キ ャ リ ー ソースが [Z mux] の設定によ って P か PCIN のいずれかにな り、<br />

[~SIGN (P or PCIN)] の場合は、キ ャ リ ー ソースが [Z mux] の設定によ って P か PCIN のいず<br />

れかにな り 、 [~SIGND (A*B or A:B)] 場合は、 [~SIGN(A*B or A:B)] に遅延が追加 さ れます。<br />

詳細は、 「<strong>DSP</strong>48 の制御命令形式」 を参照し て く だ さ い。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

Opmode ブロッ クでは、 ザイ リンクス LogiCORE は使用されません。<br />

<strong>DSP</strong>48 の制御命令形式<br />

命令フ ィ ール ド 名 ロケーシ ョ ン ニーモニ ッ ク 説明<br />

YX Mux op[3:0] 0 0<br />

P <strong>DSP</strong>48 出力レ ジ ス タ<br />

A:B 入力 A と B を連結 (A は MSB)<br />

A*B 入力 A と B を乗算<br />

C <strong>DSP</strong>48 の入力 C<br />

P+C <strong>DSP</strong>48 の入力 C + P<br />

Z Mux op[6:4] 0 0<br />

A:B+C 入力 A と B の連結 + C レジスタ<br />

PCIN PCOUT からの <strong>DSP</strong>48 カスケード<br />

入力<br />

P <strong>DSP</strong>48 出力レ ジ ス タ<br />

C <strong>DSP</strong>48 の入力 C<br />

Operand op[7] + 加算<br />

PCIN>>17 17 個ダウ ンシフ ト されたカスケー<br />

ド入力<br />

P>>17 17 個ダウ ンシフ ト された <strong>DSP</strong>48 出<br />

力レジス タ<br />

- 減算<br />

Carry In op[8] 0 または 1 キャ リーインを 0 か 1 に設定<br />

CIN ソースに cin を選択<br />

'~SIGN(P or PCIN) P または PCIN の対称丸め<br />

'~SIGN(A:B or A*B) A:B または A*B を対称丸め<br />

'~SIGND(A:B or A*B) A:B または A*B を対称丸め<br />

(遅延付き)<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 261<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

<strong>DSP</strong>48E の制御命令形式<br />

命令フ ィ ール ド 名 ロケーシ ョ ン ニーモニ ッ ク 説明<br />

YX Mux op[3:0] 0 0<br />

P <strong>DSP</strong>48 出力レ ジ ス タ<br />

A:B 入力 A と B を連結 (A は MSB)<br />

A*B 入力 A と B を乗算<br />

C <strong>DSP</strong>48 の入力 C<br />

P+C <strong>DSP</strong>48 の入力 C + P<br />

Z Mux op[6:4] 0 0<br />

A:B+C 入力 A と B の連結 + C レジスタ<br />

PCIN PCOUT からの <strong>DSP</strong>48 カスケード入<br />

力<br />

P <strong>DSP</strong>48 出力レ ジ ス タ<br />

C <strong>DSP</strong>48 の入力 C<br />

Alumode op[10:7] X+Z 加算<br />

Carry InSelect<br />

op[14:12]<br />

PCIN>>17 17 個ダウ ンシフ ト されたカスケード<br />

入力<br />

P>>17 17 個ダウ ンシフ ト された <strong>DSP</strong>48 出<br />

力レジス タ<br />

Z-X 減算<br />

0 または 1 キャ リーインを 0 か 1 に設定<br />

CIN ソースに cin を選択します。 Opmode<br />

ブロックに CIN ポー ト が追加され、<br />

その値がビ ッ ト ロケーション 11 の<br />

ニーモニ ッ クに挿入されます。<br />

262 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Parallel to Serial<br />

Parallel to Serial<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Data Types]、 [Index] ライブラリにリス<br />

トされています。<br />

Parallel to Serial ブ ロ ッ ク は、 入力ワー ド を読み込み、 それを分割し てマルチプレ<br />

クサで N 倍多重化し た出力ワー ド に し ます。 N は、 入力ビ ッ ト か ら出力ビ ッ ト の数<br />

の比率です。 出力順は、 LSB からか MSB からかのどちらかになり ます。<br />

次の波形図は、 こ のブ ロ ッ ク の動作を示し ています。<br />

こ の例では、 入力幅 4、 出力ワード 1 の場合に、 最上位ワード から出力される よ う に設定されてい<br />

ます。<br />

ブロック インターフェイス<br />

Parallel to Serial ブロッ クには、 入力が 1 つと出力が 1 つあ り ます。 入力ポー ト は、 どのサ イ ズに<br />

でもできます。 出力ポー ト サイズは、ブロッ クのパラ メータ ダイアログ ボックスで指定できます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Output order] : 最上位ワー ド ま たは最下位ワー ド のど ち ら を最初に出力する か指定し ます。<br />

• [Type] : 符号付き か符号な し かを指定し ます。<br />

• [Number of bits] : 出力幅を指定し ます。 入力ビ ッ ト 数を均等に除算で き る値にする必要があ り<br />

ます。<br />

• [Binary point] : 2 進小数点の位置を指定し ます。<br />

このブロックの最小レイテンシは 1 です。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 263<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Pause Simulation<br />

ブロック パラ メータ<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

ザイ リンクスの Pause Simulation ブロックでは、 入力が 0 以外の場合にシ ミ ュ レー<br />

シ ョ ン を一時停止し ます。 このブロックには、 ザイ リンクスの信号タイプでも入力と<br />

し て使用で き ます。<br />

シ ミ ュ レーシ ョ ンが一時停止し た場合は、 ツールバーの [Start] ボタン ( ) をクロッ<br />

ク する と 再開されます。<br />

このブロックにはパラメータがありません。<br />

264 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


PicoBlaze Instruction Display<br />

PicoBlaze Instruction Display<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

ブロック インターフェイス<br />

PicoBlaze Instruction Display ブロッ クは、 エンコード された 18 ビットの<br />

PicoBlaze 命令 と 10 ビ ッ ト のア ド レ ス を読み込み、 デコー ド さ れた命令 と プ ロ<br />

グラム カウンタをブロックのアイコンに表示します。 こ のブ ロ ッ ク を使用する<br />

と、 PicoBlaze デザイ ンをデバ ッ グする のに便利です。 また、 こ のブロ ッ ク を<br />

Single-Step Simulation ブ ロ ッ ク と 共に使用し て、 各命令を実行する こ と も で<br />

きます。<br />

PicoBlaze Instruction Display ブロッ クには、 入力ポートが 2 つ含まれます。 instr ポー ト には、 18<br />

ビットのエンコード命令が、 addr ポー ト にはプロ グ ラ ム カウンタである 10 ビッ トのアドレス値が<br />

入力されます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Version] : [PicoBlaze 2] または [PicoBlaze 3] を指定し ます。<br />

• [Disable Display] : オンにすると、表示がアップデートされなくなるので、デバッグ モード以<br />

外の場合にシ ミ ュ レーシ ョ ン速度を上げる こ と がで き ます。<br />

ザイリンクス LogiCORE<br />

PicoBlaze Instruction Display ブロッ クでは、 ザイ リンクス LogiCORE が使用されません。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 265<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

PicoBlaze Microcontroller<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Control Logic] および [Index] ライブラリにリストされてい<br />

ます。<br />

PicoBlaze Microcontroller ブロックは、 PicoBlaze マクロを使用して 8 ビット<br />

のエンベデッ ド マイクロコン ト ローラをインプリ メン ト します。<br />

このブロックでは、PicoBlaze 2 と PicoBlaze 3 の 2 バージョ ンがサポート さ れま<br />

す。 PicoBlaze 2 では Virtex-II が、 PicoBlaze 3 では Virtex-II、 Virtex-II Pro、<br />

Spartan-3、 Virtex-4 がサポート さ れます。 PicoBlaze 2 マク ロ では、 42 の命令と<br />

32 個の 8 ビット 汎用レジスタ、 256 個の直接ま たは間接的なアド レ ス ポート と<br />

1 つのマス ク 可能割り 込みが提供さ れま す。 PicoBlaze 3 では、 53 の命令、 16 個<br />

の 8 ビッ ト 汎用レジスタ、256 個の直接ま たは間接的なアド レ ス ポート と 1 つのマス ク 可能割り 込み<br />

に加え、 STORE およ び FETCH 命令を 使用し てアク セス 可能な 64 バイ ト の内部ス ク ラ ッ チ パッ ド<br />

メモリも提供されます。 PicoBlaze2 エンベデッ ド コ ント ロ ーラ と その命令セッ ト に関する 詳細は、ア<br />

プリ ケーショ ン ノ ート XAPP627 (http://japan.xilinx.com/bvdocs/appnotes/xapp627.pdf) を参照してく<br />

ださ い。<br />

通常は、1024 X 8 ビッ トのブロック ROM 1 つにプ ロ グ ラ ム を保存で き ます。 このブロッ ク と ROM<br />

は次の図のよ う 接続されます。<br />

ブロック インターフェイス<br />

どちらのバージ ョ ンのブロ ッ クにも入力ポートが 4 つ含まれます。 8 ビッ トのデータ ポー ト<br />

in_port が INPUT 命令中に読み出し を行います。 この値は 32 個のいずれのレジス タにも転送でき<br />

ます。 プログラムは、 brk ポー ト を 1 に設定する と 中断されます。 プ ロ セ ッ サは、 rst を 1 に設定す<br />

ると リセッ ト されます。 リセッ ト をすると、 レジスタの内容が一掃され、 プロセッサがアドレス 0<br />

で命令を実行し始め る よ う にな り ます。8 ビ ッ ト の入力ポー ト instr には PicoBlaze 命令が入力さ れ<br />

ます。<br />

PicoBlaze 2 ブロックには、 出力ポートが 5 つ含まれます。 PicoBlaze 3 ブロックには、 出力ポート<br />

が 6 つ含まれます。 8 ビ ッ トの出力ポート out_port が OUTPUT 命令中に書き込みを行います。<br />

port_id 出力は、 読み出し/書き込み中に読み出される (書き込まれる) 値のロ ケーシ ョ ンを識別し ま<br />

す。 出力ポー ト rs (read strobe) および ws (write strobe) は、 読み出し (INPUT) または書き込み<br />

(OUTPUT) のどちらが実行されるかを示します。 addr はプ ロ セ ッ サで実行 さ れる次の命令のア ド<br />

レスを示します。 プロセッサは、 内部にプログラムを保存できません。 出力ポー ト addr は、 次に実<br />

行さ れる命令の ロ ケーシ ョ ン を指定し ます。 int_ack ポー ト (PicoBlaze 3 のみ) は、 いつ割 り 込み<br />

サービ ス ルーチン を開始する かを示し ます (プログラム カウンタを 0x3FF に設定し ます)。<br />

ブロック パラ メータ<br />

次は、 PicoBlaze Microcontroller ブロックに特有のパラ メータです。<br />

• [Version] : [PicoBlaze 2] または [PicoBlaze 3] を指定し ます。<br />

266 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


PicoBlaze Microcontroller<br />

• [Display internal state] : オンにする と、 MATLAB ワーク スペースにレジスタ フラグおよの制<br />

御フラグを使用でき る よ う にな り ます。 こ の情報は、 次の命名規則に従った構造で表示さ れま<br />

す。<br />

< design name >_< subsystem name >_< PicoBlaze block name >.<br />

この構造には、各レジスタ (s00、 s01 など) のフ ィールド と制御フラグ CARRY と ZERO が含<br />

まれます。<br />

• [Display values as] : 値を表示する ために使用する基数を指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

PicoBlaze アセン ブ ラの使用方法<br />

既知の問題<br />

1. PicoBlaze プ ロ グ ラ ム を記述し ます。 プ ロ グ ラ ム を拡張子 .psm で保存し ます。<br />

2. MATLAB コマンド プロンプ ト で次のコマン ド を入力し、 アセンブラを実行します。<br />

xlpb_as -p .<br />

デフォル ト では、 PicoBlaze 3 のプログ ラ ムがアセンブルされます。 PicoBlaze 2 のプログ ラ ム<br />

をアセンブルする場合は、-v 2 オプシ ョ ン を使用し ます。 このスク リプトによ り、PicoBlaze ア<br />

センブラが実行され、 M コード プログラムが生成されます。 このプログラムを使用し、 プロ<br />

グ ラ ム を保存する ための ROM または RAM を生成します。<br />

• PicoBlaze アセンブラの xlpb_as では、パス全体の文字数が 52 文字を超え るデ ィ レ ク ト リ にア<br />

センブリ コード ファ イルがある と、 エラーにな り ます。<br />

• このブロックでは、 Verilog ネッ ト リストはサポート されません。<br />

PicoBlaze Microprocessor のオン ラ イン マニュアル<br />

詳細は、 http://japan.xilinx.com/products/design_resources/proc_central/index.htm を参照してく ださい。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 267<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Point-to-point Ethernet Co-Simulation<br />

ザイ リ ンクスの Point-to-point Ethernet Co-Simulation ブロックは、 イーサネッ ト<br />

接続を介し て、 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行する イ ン ターフ ェ イ ス<br />

を提供し ます。<br />

イ ン ターフ ェ イ ス、 必要条件、 セ ッ ト ア ッ プ手順などの詳細は、 イーサネッ ト ハー<br />

ドウェア協調シミュレーション を参照して く ださい。<br />

Point-to-Point Ethernet Co-Simulation ブロッ クは、<strong>System</strong> <strong>Generator</strong> ブロックの [Compilation] で<br />

[Ethernet] → [Point-to-point] を選択する と 作成さ れます。 作成 さ れたブ ロ ッ ク には、 元のゲー ト<br />

ウ ェ イ に対応する ポー ト (またはサブシステム ポー ト ) が含まれ、 ほかの <strong>System</strong> <strong>Generator</strong> ブロッ<br />

クと同じように使用できます。 このブロックは、Simulink のシ ミ ュレーシ ョ ン中に、 FPGA ハー ド<br />

ウェア プラッ ト フォームとの通信に使用されます。 ブロ ッ クの入力ポー ト に書き込まれたシ ミ ュ<br />

レーシ ョ ン データは、 ハー ド ウ ェ アに渡されます。 データ がブ ロ ッ ク の出力ポー ト か ら読み出さ れ<br />

る と 、ブ ロ ッ ク はハー ド ウ ェ アか ら適切な値を読み込んで、出力ポー ト に駆動し ます。 こ れで、デー<br />

タが Simulink で解釈でき る よ う にな り ます。 また、 ブロックではプラッ ト フォームの開始、 コン<br />

フ ィ ギ ュ レーシ ョ ン、 ス テ ッ プ、 終了が自動的に実行さ れます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Clock source] : シングル ステップまたはフ リーランニング クロック ソース を選択で き ます。<br />

シングル ステップ ク ロ ッ ク を選択する と 、 1 度に 1 クロック サイクルずつボードをステップ<br />

できます。 各クロック サイクル ステップは、 Simulink での一定の時間に相当し ます。 こ の ク<br />

ロック ソースを使用すると、 シミュレーション中の協調シミュレーション ハー ド ウ ェ アのビ<br />

ヘイ ビ アのビ ッ ト 精度および周期精度が、そのサブシ ス テムのシ ミ ュ レーシ ョ ン ビヘイ ビアよ<br />

りも正確になります。シングル ステッピングは不要で、 フリーランニング クロックでボード<br />

を実行で き る場合も あ り ます。 こ の場合、ボー ド は Simulink シ ミ ュ レーシ ョ ン と 非同期で動作<br />

します。<br />

• [Has combinational path] : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブロックの出力ポートから同<br />

じ ブ ロ ッ ク の入力ポー ト への直接組み合わせフ ィ ー ド バ ッ ク パス (同じブロッ クの出力ポート<br />

から入力ポートへの接続) が必要な場合も あ り ます。 出力ポー ト か ら入力ポー ト への直接<br />

フィードバック パスが必要で、デザ イ ンに入力ポー ト か ら出力ポー ト への組み合わせパスが含<br />

まれない場合は、 このチェ ッ ク ボックスをオフにすると、 デザインでフィードバック パスを<br />

使用できるようになります。<br />

• [Bitstream name] : Specifies the co-simulation FPGA configuration file <strong>for</strong> the Point-to-point<br />

Ethernet hardware co-simulation plat<strong>for</strong>m. 新規の協調シ ミ ュ レーシ ョ ン ブロッ クがコンパイ<br />

ル中に作成される と このパラ メータが自動的に設定され、正しいコンフ ィギュレーショ ン ファ<br />

イルが使用されます。 このパラメータは、 コンフィギュレーション ファイルのディレクトリを 変更し た場合にのみ修正し ます。<br />

[Ethernet] タブ<br />

[Ethernet] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

268 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Point-to-point Ethernet Co-Simulation<br />

関連項目<br />

• [Host interface] : ホス ト ネッ ト ワーク インターフェイス カー ド を指定し ます。 こ のカー ド は、<br />

協調シ ミ ュ レーシ ョ ンで ターゲ ッ ト FPGA プ ラ ッ ト フ ォームに接続する ために使用さ れます。<br />

リストには、point-to-point のイーサネッ トの協調シミ ュレーションで使用されるネッ ト ワーク<br />

インターフェイス カー ド がすべて表示 さ れます。 情報パネルには、 選択し た イ ン ターフ ェ イ ス<br />

の MAC ア ド レ ス、 リ ン ク 速度、 最大フ レーム サイズと、 Windows 環境での対応する接続名<br />

が表示されます。 使用可能な イ ン ターフ ェ イ ス の リ ス ト と 情報パネルは、 最新の状態ではない<br />

ことがありますので、[Refresh] ボタンをク リ ックしてアップデート してください。<br />

• [FPGA interface MAC address] : ターゲッ ト FPGA プ ラ ッ ト フ ォームに関連付け ら れた イー<br />

サネッ ト MAC アドレスを指定します。 MAC アドレスは、2 桁の 16 進数 6 個をコ ロンで区<br />

切って指定し ます (00:0a:35:11:22:33 など)。 JTAG ベースのコ ン フ ィ ギ ュ レーシ ョ ンの場合、<br />

イーサネッ ト LAN のアド レス と競合していなければ、 MAC アドレスは各 FPGA プラッ ト<br />

フォームに任意で割り当てることができます。 point-to-point のイーサネ ッ ト 接続のコ ンフ ィ<br />

ギュレーショ ンの詳細は、 ユーザー <strong>ガイド</strong>を参照してください。 FPGA プラッ ト フォームの<br />

MAC ア ド レ スの コ ン フ ィ ギ ュ レーシ ョ ン方法の詳細が記述さ れています。<br />

[Configuration] タブ<br />

• [Download cable] : JTAG ベースのデバイ ス コ ン フ ィ ギ ュ レーシ ョ ンの場合は、 プ ロ グ ラ ム<br />

ケーブルにパラ レル ケーブル IV かプラ ッ ト フ ォーム USB を選択し、 point-to-point のイーサ<br />

ネ ッ ト の場合は、 イーサネ ッ ト 接続でデバ イ ス コ ン フ ィ ギ ュ レーシ ョ ン を実行し ます。 この設<br />

定方法は、 ユーザー ガ イ ド を参照し て く だ さ い。<br />

• [Cable speed] : JTAG ベースの コ ン フ ィ ギ ュ レーシ ョ ンの場合にのみ使用し ます。 ハー ド ウ ェ<br />

ア協調シ ミ ュ レーシ ョ ンでは、 プログラ ム ケーブルをデフ ォル ト の最大速度よ り も、 周波数で<br />

動作 さ せる必要のあ る こ と があ り ます。 このメニューを使用すると、 ハードウェア設定にあっ<br />

たケーブル速度を選択できます。 通常、 デフ ォル ト の速度で問題あ り ませんが、 <strong>System</strong><br />

<strong>Generator</strong> で協調シ ミ ュレーシ ョ ン用にデバイスがコンフ ィ ギュレーシ ョ ンできなかった場合<br />

は、 速度の遅いケーブルを使用し てみて く だ さ い。<br />

• [Configuration timeout] : コンフィギュレーション プロセスに必要なタイムアウ ト値を ミ リ秒<br />

で指定し ます。 通常はデフ ォル ト の値で問題あ り ませんが、 デバイ ス コンフィギュレーション<br />

後の接続の再構築に時間がかか り すぎ る場合は、 よ り 大き な値を指定し てみて く だ さ い。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

イーサネッ ト ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン<br />

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

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 269<br />

リリース 9.2.00 2007 年 8 月<br />

R


Puncture<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

ザイ リンクスの Puncture ブロッ クでは、 データ ス ト リ ームの入力ワー ド か ら ユー<br />

ザーが指定したビットのセットが削除されます。<br />

こ のブロ ッ ク では、 パン ク チャ ド 符号パラ メ ータ (削除するビッ ト を指定する 2 進<br />

数ベク タ) に基づいて、UFixN_0 型 (N はパン クチャ ド符号の長さ) の入力データ が<br />

UFixK_0 型 (K はパン クチャ ド符号の 1 の数) の出力データ に変換されます。 出力レー ト は、 入力<br />

レート と同じにな り ます。<br />

このブロックは、 よ く Convolutional Encoder ブロ ッ ク と 共に使用され、 次の図に示すよ う に、 パ<br />

ン ク チ ャ ド たたみ込み符号を イ ンプ リ メ ン ト し ます。<br />

図のシステムでは、 Convolutional Encoder ブロッ クが 1/2 のレートでインプリ メン ト されており、<br />

出力がパン ク チ ャ ド 処理されて、3 入力ビ ッ ト それぞれに対し て 4 出力ビ ッ ト が出力 さ れています。<br />

上の Puncture ブロックでは符号 0 ( [1 0 1] ) の真ん中のビ ッ ト が削除され、 下の Puncture ブロッ<br />

クでは符号 1 ( [1 1 0 ] ) の LSB が削除され、2 ビ ッ ト にパン ク チャ ド 処理 さ れた値が出力 さ れます。<br />

こ れ ら のデータ ス ト リ ームは、 ベースバン ド 形成のために 1 ビ ッ ト の同相の直交データ ス ト リ ーム<br />

にシ リ アラ イズされます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Puncture code] : ビッ ト ベク タ と し て表記されるパン ク チ ャ ド パターンで、 i の箇所が 0 にな<br />

ると、 ビット i が削除される こ と を示し ます。<br />

270 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Puncture<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 271<br />

リリース 9.2.00 2007 年 8 月<br />

R


Register<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Control Logic]、 [Memory]、 [Index] ラ<br />

イブラ リにリ ス ト されています。<br />

ブロック インターフェイス<br />

ザイ リンクスの Register ブロッ クは、1 サンプル周期のレ イ テンシを含む D フ リップ<br />

フロップ ベースのレ ジ ス タ にな り ます。<br />

このブロックには、 データ用の入力ポートが 1 つと入力リセッ ト ポー ト (オプシ ョ ン) が 1 つ含ま<br />

れます。 初期出力値は、 ブ ロ ッ ク のパ ラ メ ータ ダイアログ ボックスで指定できます。 入力 さ れた<br />

データは、 1 サンプル周期後に出力さ れます。 リセットされると、 レジスタはパラメータ ダイアロ<br />

グ ボ ッ ク ス で指定し た初期値に戻 り ます。<br />

Register ブロッ クは、オプショ ンのリセッ ト ポー ト が含まれてい る点 と 初期値をユーザーが指定で<br />

きる点が Delay ブロック とは異なり ます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Initial value] : レ ジ ス タ の初期値を指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

こ のブ ロ ッ ク は、 合成可能な VHDL モジュールと してインプ リ メ ン ト されます。 このブロックで<br />

は、 ザイ リ ン ク ス LogiCORE は使用 されません。<br />

272 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Reinterpret<br />

Reinterpret<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Math]、 [Index] ライブラリにリストされ<br />

ています。<br />

ザイ リンクスの Reinterpret ブ ロ ッ ク は、 入力値に関係な く 、 出力を強制的に新しい<br />

データ型に し ます。<br />

2 進数が変更されずに渡されるので、 こ のブロ ッ クはハード ウ ェ アで リ ソース を消費し<br />

ません。 出力のビ ッ ト 数は、 入力のビ ッ ト 数 と常に同じにな り ます。<br />

こ のブ ロ ッ ク を使用する と 、 符号な しデータ を符号付きデータ と し て、 または符号付きデータ を符<br />

号な しデータ と し て再解釈させる こ と がで き ます。 また、 データ内の 2 進小数点の位置を変更する<br />

こ と で、 データ のス ケー リ ン グ も再解釈 さ せる こ と がで き ます。 ザイ リ ンクスの Scale ブロックに<br />

も同じ よ う な機能があ り ます。<br />

このブロックは、 たとえば 6 ビ ッ ト 幅の符号付き、 小数点以下の 2 ビ ッ ト の入力を、 符号な し の小<br />

数点以下の 0 ビッ トの出力にした場合、-2.0 (2 進数で 1110.00、 2 の補数) の入力を 56 (2 進数で<br />

111000) の出力に変換し ます。<br />

このブロックは、ザイ リンクスの Slice ブロッ クまたは Concat ブ ロ ッ ク と 組み合わせて使用する と<br />

特に便利で、 次のよ う な場合に使用し ます。<br />

た と えば、符号付きデータ 1 つ と 符号な し の 2 ビッ ト (UFix_2_0) を運ぶ 2 つの信号があ る場合に、<br />

2 つ目の信号か ら の 2 ビ ッ ト を連結し て、符号付信号の最後尾 (LSB) に渡すシ ス テム を設計する と<br />

します。<br />

設計する には、 Reinterpret ブロッ ク 2 つと Concat ブロッ ク 1 つを使用し ます。 まず、 最初の<br />

Reinterpret ブ ロ ッ ク で符号付き入力信号を 2 進小数点の位置が 0 の符号な しの値にし ます。 この値<br />

と別の信号の UFix_2_0 を Concat ブロッ クに入力します。 Concat ブロッ クの後には、 2 つ目の<br />

Reinterpret ブロッ クを配置し、 Concat ブ ロ ッ ク の出力値を正し い位置に 2 進小数点が付いた符号<br />

付きの値に戻し ます。<br />

このシステムには、ブロックが 3 つ必要ですが、 ハー ド ウ ェ ア インプリ メンテーションでは単にバ<br />

スの連結 と し て認識されるので、 ハー ド ウ ェ ア コストはかかりません。<br />

ブロック パラ メータ<br />

このブロックのパラメータを次に示します。<br />

• [Force Arithmetic Type] : オンにする と、[Output Arithmetic Type] パラメータが設定できるよ<br />

う にな り 、 その設定によ って出力値の演算タ イプが決ま り ます。 オフにする と、 出力値の演算<br />

タ イ プは入力値 と 同じ にな り ます。<br />

• [Output Arithmetic Type] : 出力を符号な し か、符号付き (2 の補数) のどちらにするか指定でき<br />

ます。<br />

• [Force Binary Point] : オンにする と、 [Output Binary Point] パラメータが設定できるようにな<br />

り 、 その設定に よ って出力値の 2 進小数点の位置が決ま り ます。 オフにする と、 出力値の演算<br />

タ イ プは入力値 と 同じ にな り ます。<br />

• [Output Binary Point] : 出力の 2 進小数点の位置を指定で き ます。 使用で き る値は、0 ~ 入力の<br />

ビ ッ ト 数の間の整数です。<br />

このブロックでは、 ハードウェア リソースは使用されません。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 273<br />

リリース 9.2.00 2007 年 8 月<br />

R


Relational<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Control Logic]、 [Math]、 [Index] ライブ<br />

ラリにリストされています。<br />

ザイ リ ンクスの Relational ブロッ クは、 コンパレータをインプリ メン ト します。<br />

サポー ト さ れてい る比較演算は次の と お り です。<br />

• equal-to (a = b)<br />

• not-equal-to (a != b)<br />

• less-than (a < b)<br />

• greater-than (a > b)<br />

ブロック パラ メータ<br />

• less-than-or-equal-to (a = b)<br />

• ブロックの出力はブール型になり ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

ブロ ッ ク に特有のパラ メ ータは、 次のパラ メ ータのみです。<br />

• [Comparison] : ブ ロ ッ ク で使用される比較演算子を指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

Relational ブロッ クでは、 ザイ リンクス LogiCORE は使用されません。<br />

274 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Resource Estimator<br />

Resource Estimator<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

ザイ リンクスの Resource Estimator ブ ロ ッ ク を使用する と 、 <strong>System</strong> <strong>Generator</strong> サブシ<br />

ステムまたはモデルをインプリ メン トするのに必要な FPGA リソースが高速に概算<br />

できます。<br />

このブロックは、 ザイ リンクス ブ ロ ッ ク専用の概算ツールを起動し、 値を合計し て、<br />

ルックアップ テーブル (LUT)、 フリップフロップ (FF)、 ブロック メモリ (BRAM)、<br />

18X18 乗算器、 ト ラ イ ス テー ト バッファ、 I/O などの大まかな値を計算します。<br />

FPGA リソースを必要とするザイリンクス ブ ロ ッ ク には、すべてその リ ソ ース必要条件を含むベ ク<br />

タを格納するパラメータが含まれます。 Resource Estimator ブ ロ ッ ク は、 下位の関数を起動で き ま<br />

す。 こ れ ら の関数では、 こ れ ら のベ ク タ を生成し た り (パラ メータまたはデータ型が変更された後<br />

)、 ま たはベク タ に格納されていた前に計算済みの値を合計し た り で き ます。 各ブロ ッ ク に含まれる<br />

[Define FPGA area <strong>for</strong> resource estimation] チェッ ク ボックスをオンにすると、 概算ツール関数を<br />

起動せずに、 ベク タ に格納された概算値が使用さ れます。<br />

Resource Estimator ブロ ッ クは、 モデルのサブシステム内のど こにで も配置でき ます。 別の<br />

Resource Estimator ブ ロ ッ ク が こ のブ ロ ッ ク の下位階層に配置さ れる場合は、 次の説明を参照し て<br />

ください。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

Resource Estimator ブロッ クのダイアログ ボ ッ ク スには、 次のパラ メ ータが含まれます。<br />

• [Slices] : ブロックで使用されるスライス (1 つのス ラ イ スには、通常フ リ ッ プフ ロ ッ プが 2 つ、<br />

LUT が 2 つ、 関連する MUX、 キャリー ロジック、 制御ロジックが含まれます)。<br />

• [FFs] : ブロックで使用されるフリップフロップ • [BRAMs] : ブロックで使用されるブロック RAM (BRAM)<br />

• [LUTs] : ブロッ クで使用されるルッ クアップ テーブル<br />

• [IOBs] : ブロックに使用される入力/出力ブ ロ ッ ク<br />

• [Emb. Mults] : ブ ロ ッ ク で使用さ れる エンベデ ッ ド 乗算器 (たとえば、Virtex-II デバイ スには<br />

エンベデッ ド 18X18 乗算器が含まれます)。<br />

• [TBUFs] : ブロッ クで使用される ト ライステート バッファ<br />

• [Use area above] : オンにする と 、 こ のサブシ ス テムで実行さ れる リ ソ ース概算の結果が、 ダ イ<br />

アログ ボックスで指定した値になります (ダイアログ ボックスで指定した値は、各 <strong>System</strong><br />

<strong>Generator</strong> ブロックの [FPGA Area Estimation] フィールドと同じになります)。 オンにする と、<br />

このブロックのサブシステムと同じレベルにあるブロック、 および下位のブロックのリ ソース<br />

は自動的に概算されません。<br />

• [Estimate options] : 概算方法を [Estimate]、 [Quick]、 [Post Map]、 [Read Mrp] のいずれかに<br />

します。 こ れら のオプシ ョ ンの詳細は、 次のセ ク シ ョ ンで説明し ます。<br />

• [Estimate] ボタン : リ ソース概算が開始 さ れます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 275<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

リ ソース概算の実行<br />

上で説明し た FPGA エ リ アのフ ィ ール ド は、 手動で入力する こ と も でき ますが、 次のいずれかの<br />

[Estimate options] を選択し て リ ソ ース概算を実行する と 、 自動的に入力さ れます。<br />

• [Estimate] : 各ブ ロ ッ ク と サブシ ス テムでブ ロ ッ ク の概算関数を ト ッ プダ ウ ンで再帰的に起動<br />

します。 概算関数を含まず、 ハー ド ウ ェ アに イ ンプ リ メ ン ト 可能なブ ロ ッ ク (共有 メ モ リ ブ<br />

ロック以外) の場合は、ポス ト マップ エ リ アを使用し て自動的に概算さ れます。 [Define FPGA<br />

area <strong>for</strong> resource estimation] がオンになっ てい る ブ ロ ッ ク では、 その概算関数は実行 さ れず、<br />

格納された概算が使用されます。 Resource Estimator ブロッ クで [Use area above] をオンにす<br />

る と 、 こ のブ ロ ッ ク の概算がそれを含むサブシ ス テム全体に使用さ れます。 そのモデルの階層<br />

部分に対し ては、 ほかの概算関数は実行さ れません。<br />

• [Quick] : [Estimate] ボ タ ン を ク リ ッ クする と 、 現在のサブシ ス テム と 同じ階層、 またはそれよ<br />

り下位のブロックおよびサブシステムで指定した FPGA エ リアの値がすべて合計されます。<br />

下位の概算関数は起動されません。<br />

• [Post-Map] : [Estimate] ボタンをク リ ッ ク すると 、 サブシステム全体に対してザイリ ンク スの<br />

マッ プ ツ ールが自動的に起動さ れ、 作成さ れた MRP ファイル (Map Report File) から 結果を読<br />

み戻し ま す。 こ のオプショ ン を 使用する には、 <strong>System</strong> <strong>Generator</strong> ブロ ッ ク と Resource Estimator<br />

ブロ ッ ク を 概算さ れる サブシス テム に一緒にイ ン ス タ ンシエート する 必要があり ま す。<br />

• [Read Mrp] : [Estimate] ボタンをク リ ックすると、 ファイル ブラウザが開き、 選択し た MRP<br />

ファイルからの結果が Resource Estimator に読み込まれます。 リ ソ ース情報を入手する こ の方<br />

法は、 合成、 変換、 マ ッ プ済みのサブシ ス テムでのみ使用で き ます。 このオプションは、 概算<br />

関数を含まず、 デザ イ ン を変更し ない複雑なザ イ リ ン ク ス ブ ロ ッ ク で使用する と 便利です。<br />

MRP ファイルからの数と Resource Estimator のダイアログ ボ ッ ク スか ら挿入さ れた数がわずかに<br />

異なる こ とがあ り ます ([Post-Map] オプシ ョ ン を使用し た場合に も異な る こ と があ り ます)。 MPR<br />

ファイルの IOB FF リソースは、すべてダイアログ ボックスの [FFs] フィールドに追加されます。<br />

また、MPR の同じ行の IOB FF リソースの半分は、[Slices] に追加されます。[IOBs] は [Post-Map]<br />

または [Read MRP] オプシ ョ ンで概算を実行する と 、 常に 0 に設定されます。 通常、 こ の機能はサ<br />

ブシ ス テムを概算する と き に便利なので、 IOB リソースは CLB 使用率に含めておき、 最終デザ イ<br />

ンで使用されない IOB リソースが間違ってレポートされないようにします。<br />

Resource Estimation ブロックでサポートされるブロック<br />

高速な リ ソース概算関数を含むブ ロ ッ ク<br />

Accumulator、 Addressable Shift Register、 AddSub、 CMult (シーケンシャル版はサポー ト なし),<br />

Convert、Counter、Delay、Down Sample、Dual Port RAM、FIFO、FFT、FFTx、Gateway In、Gateway<br />

Out、 Inverter、 LFSR、 Logical、 Mult (シーケンシャル版はサポー ト なし)、 Mux ( トライステート<br />

版はサポー ト な し)、 Negate、 Parallel to Serial、 PicoBlaze Processor、 Register、 Relational、 ROM、<br />

Serial To Parallel、 Shift、 Sine Cosine、 Single Port RAM、 Threshold、 Up Sample<br />

ポス ト マップ概算を使用するブロック<br />

高速な リ ソ ース概算の関数を含ま ないでハー ド ウ ェ アを使用する <strong>System</strong> <strong>Generator</strong> ブロックは、ポ<br />

スト マップ エ リ ア を使用し て概算さ れます。 この方法が使用されないよ うにするには、定数または<br />

ユーザー作成の概算関数を [FPGA area] フィールドに入力し、[Define FPGA area <strong>for</strong> resource<br />

estimation] をオンにします。<br />

276 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Resource Estimator<br />

既知の問題<br />

ハー ド ウ ェ アを使用し ないブロ ッ ク<br />

<strong>System</strong> <strong>Generator</strong>、Clear Quantization Error、Clock Enable Probe、Clock Probe、Concat、Constant、<br />

Discard Subsystem、 FDATool、 Indeterminate Probe、 ModelSim、 Pause Simulation、 PicoBlaze<br />

Instruction Display、Quantization Error、Reinterpret、Sample Time、Scale、Simulation Multiplexer、<br />

Single-Step Simulation、 Slice、 BitBasher<br />

特別な処理が必要なブ ロ ッ ク<br />

Discard Subsystem ブロ ッ ク の場合、Resource Estimator ブロ ッ ク でこ のブロッ ク を含むサブシステム<br />

に含ま れる リ ソ ース がすべて無視さ れま す。 Shared Memory ブロ ッ ク は概算さ れません。 Shared<br />

Memory ブロ ッ ク を含むデザイ ンでは、Multiple Subsystem <strong>Generator</strong> ブロ ッ ク を使用し て HDL ネッ<br />

トリスト ファイルを生成します。 ISE を使用してデザインの MPR ファイル (Map Report File) を作成<br />

し、[Read MRP] オプショ ンを使用し てこ の MRP フ ァ イ ルに含ま れる 結果を取得し ま す。<br />

<strong>System</strong> <strong>Generator</strong> の Resource Estimation ブ ロ ッ ク には、 次の よ う な既知の問題があ り ます。<br />

• 概算は、Simulink が コ ンパイ ル中に計算する各ブ ロ ッ ク の入力 と 出力のデータ型に基づいて計<br />

算されます。 ブロッ ク レベルではわからない ト リ ミ ングが実行される と、 これらの ト リ ミ ング<br />

された リ ソース分が余分に概算されます。<br />

• 合成ツールでま と め られた別々のブ ロ ッ ク の ロ ジ ッ ク は、 余分に概算さ れます。 たとえば、 レ<br />

イ テンシのないブ ロ ッ ク を使用する場合、 ブ ロ ッ ク の境界を超えて組み合わせロ ジ ッ ク が最適<br />

化されるこ とがよ くあり ます。<br />

• マルチレー ト デザイ ンの ク ロ ッ ク イ ネーブル生成ロ ジ ッ ク は、 実際よ り も低 く 概算 さ れます。<br />

<strong>System</strong> <strong>Generator</strong> では、 1 つのク ロ ッ ク を使用し て、 レー ト ご と に別の ク ロ ッ ク イネーブルが<br />

生成 さ れます。 クロック イネーブル ドライバのロジック量を正しく概算するためには、<br />

Resource Estimator でブロ ッ ク レベルではな く 、 シス テム全体を認識さ せる必要があ り ます。<br />

実際よ り も低 く 概算される リ ソ ースには、 こ の追加の ク ロ ッ ク イ ネーブル接続に関連し た もの<br />

も含まれます。 ク ロ ッ ク イ ネーブル接続は、 ブ ロ ッ ク 概算関数か ら は認識さ れない各ブ ロ ッ ク<br />

に対し て追加されます。<br />

• Shared Memory ブロッ クは概算されません。 Shared Memory ブ ロ ッ ク を含むデザ イ ンでは、レ<br />

ポー ト さ れる概算に Shared Memory ブロッ クで使用される リ ソースが含まれません。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 277<br />

リリース 9.2.00 2007 年 8 月<br />

R


ROM<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Control Logic]、 [Memory]、 [Index] ライブラリにリストさ<br />

れています。<br />

ザイ リンクスの ROM ブロッ クは、 シングル ポー ト の読み出し専用 メ モ リ (ROM)<br />

です。<br />

値はワードで格納され、すべてのワードが同じ演算タイプ、幅、2 進小数点にな り<br />

ます。 各ワードは、 調度 1 つのア ド レ スに該当し ます。 アドレスは、0 ~ d1 の符号<br />

な し の固定小数点型の値にな り ます。d は、ROM の深さ (ワード数) を表します。 メ<br />

モリ コンテンツは、 ブロック パラ メータから指定できます。 このブロックには、 メモリ アドレス<br />

用の入力ポー ト が 1 つ と 、 データ出力用の出力ポー ト が 1 つ含まれます。 アドレス ポー ト は、 符号<br />

な し の固定小数点型にな り ます。 このブロッ クは、 分散メモリかブロッ ク メモリのどちらかのザイ<br />

リンクス LogiCORE を使用してインプ リ メ ン ト されます。<br />

Virtex-4、 Virtex-5、 Spartan3A <strong>DSP</strong> デバイ スにシングル ポー ト ROM ブロックをインプリ メン ト<br />

する場合は、 次の設定を し てお く と 、 最速の タ イ ミ ング パフ ォーマン ス を達成で き ます。<br />

ブロック パラ メータ<br />

• [Provide reset port <strong>for</strong> output register] をオフにします。<br />

• [Depth] には、 16,384 未満の値を指定し ます。<br />

• [Latency] は 2 またはそれ以上の値に設定し ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Depth] : 格納で き る ワー ド 数を指定し ます。 正の値しか指定で き ません。<br />

• [Initial value vector] : 初期値を指定し ます。 ベクタ長が ROM の深さ よ り も大き い場合、 こ の<br />

ベ ク タ の後に続 く エ レ メ ン ト は削除 さ れます。 ROM の深さ がベク タ長よ り も大きい場合、 こ<br />

の ROM の後続ワー ド は 0 に設定されます。 初期値ベ ク タは、 ROM の指定 さ れたデータ精度<br />

に従ってサチュ レー ト されるか、 丸められます。<br />

• [Memory Type] : 分散 RAM またはブロック RAM を使用する かど う かを指定し ます。<br />

• [Provide reset port <strong>for</strong> output register] : オンにする と、ブロ ッ ク ROM の出力レジス タの リ セ ッ<br />

ト ポー ト にア クセスでき る よ う にな り ます。 リセット ポー ト は、ブロ ッ ク ROM のレイテンシ<br />

が 1 に設定さ れてい る場合にのみ使用で き ます。<br />

• [Initial value <strong>for</strong> output register] : 出力レ ジ ス タの初期値を指定し ます。 初期値は、 ROM の指<br />

定されたデータ精度に従ってサチュレート されるか、 丸められます。 こ の初期値を設定する オ<br />

プシ ョ ンは、 Virtex-II、 Virtex-II Pro、 Spartan-3、 Virtex-4、 Virtex-5、 Spartan-3A <strong>DSP</strong> デバ<br />

イ スでのみ使用で き ます。<br />

[Output Type] タブ<br />

[Output Type] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Word type] : データ を符号付き にする か符号な し にする か指定し ます。<br />

• [Number of bits] : メモリ ワードのビッ ト数を指定します。<br />

278 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


ROM<br />

• [Binary point] : メモリ ワードの 2 進小数点の位置を指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、常にザイ リンクス LogiCORE の Single Port Block Memory または Distributed<br />

Memory が使用されます。<br />

ブロック メ モ リ の場合、 ア ド レ ス幅は ceil(log2(d)) と 同じにする必要があ り ます。 d は、 メ モ リ の<br />

深さを示しています。 このブロック メモリの最大のデータ ワー ド 幅は、 指定し た深さ にな り 、 最大<br />

の深さは、 ターゲ ッ ト にし たデバイ ス ファミ リによって異なります。 次の表は、 ブロ ッ ク メモリの<br />

深さ別に、 最大データ ワード幅をそれぞれ示しています。<br />

深さ別の最大デー タ 幅 (Virtex/Virtex-E/Spartan-3)<br />

深さ 幅<br />

2 ~ 2048 256<br />

2049 ~ 4096 192<br />

4097 ~ 8192 96<br />

8193 ~ 16K 48<br />

16K+1 ~ 32K 24<br />

32K+1 ~ 64K 12<br />

64K+1 ~ 128K 6<br />

128K+1 ~ 256K 3<br />

深さ別の最大デー タ 幅 (Virtex-II/Virtex-II Pro/Virtex-4/Virtex-5/Spartan-3A <strong>DSP</strong>)<br />

深さ 幅<br />

2 ~ 8192 256<br />

8193 ~ 16K 192<br />

16K+1 ~ 32K 96<br />

32K+1 ~ 64K 48<br />

64K+1 ~ 128K 24<br />

128K+1 ~ 256K 12<br />

256K+1 ~ 512K 6<br />

512K+1 ~<br />

1024K<br />

3<br />

分散 メ モ リ のパ ラ メ ータ を選択し た場合は、LogiCORE Distributed Memory が使用されます。 深さ<br />

は、 Virtex-II、 Virtex-II Pro、 Spartan-3、 Virtex-4、 Virtex-5、 Spartan-3A <strong>DSP</strong> デバイ スの場合は<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 279<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

16 ~ 65536、その他の FPGA ファミ リの場合は 16 ~ 4096 の範囲で指定する必要があ り ます。 ワー<br />

ド幅は、 1 ~ 1024 の範囲で指定する必要があ り ます。<br />

このブロックでは、 次のザイ リンクス LogiCORE コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

Single Port<br />

Block Memory<br />

Block Memory<br />

<strong>Generator</strong><br />

Distributed<br />

Memory<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

280 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V6.1 • • • • •<br />

4 5<br />

V2.4 • • •<br />

V7.1 • • • • •


RS Decoder v5_1<br />

RS Decoder v5_1<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

Reed-Solomon (RS) コードは、 ブロ ッ ク ベースの誤 り 訂正符号 (ECC) で、 デ<br />

ジ タル通信およびス ト レージ分野の さ ま ざ ま なアプ リ ケーシ ョ ンに使用 さ れ<br />

ています。<br />

このコードは、 デジタル ス トレージ デバイ ス、 ワ イ ヤレ ス/モバ イル通信、 デ<br />

ジタル ビデオ放送な どの多 く のシ ス テムでエ ラーを訂正する ために使用 さ れ<br />

ます。<br />

RS Decorder では、 RS Encoder で生成されたブロ ッ ク を処理し、 エ ラーを訂<br />

正し て情報シンボルを復元し よ う と し ます。 エラーの数とタイプは、 コードの<br />

特性に よ って訂正する こ と がで き ます。<br />

Reed-Solomon コードは、 BCH (Bose-Chaudhuri-Hocquenghem) コード、 つ<br />

まり線形ブロック コードです。 たとえば、線形コード (n, k) は、 有限フ ィ ール<br />

ドの n 次元ベク タ空間の k 次元部分空間を表し ます。 このフィールドのエレメ<br />

ントは、「シンボル」 と呼ばれます。 Reed-Solomon コードでは、 通常 n は論理式で、 s は各シンボ<br />

ルのビ ッ ト 幅です。 コー ド が短縮さ れる と 、 n の値は小さ く な り ます。 デコーダは、全コード も短縮<br />

されたコード も処理します。 ま た、 エ ラーを含む可能性の高いシンボルであ る erasure も処理しま<br />

す。<br />

デコーダでブ ロ ッ ク が処理される と 、 次のいずれかが発生し ます。<br />

1. 情報シンボルが復元されます。 復元さ れる のは 2p+r < n-k の場合です。 p はエ ラー数、 r は<br />

erasure の数を示し ます。<br />

2. デコーダか ら、 情報シンボルを復元で き ない こ と がレ ポー ト さ れます。<br />

3. デコーダでは、 情報シンボルを復元で き なかったのに、 エ ラーがレ ポー ト さ れません。<br />

どの状況にな る かは、 コー ド と 通信チ ャ ネルの特性に よ っ て決ま り ます。 Simulink からは、 チャネ<br />

ルのモデルおよびこれらの状況の予測が可能なツールが提供さ れています。<br />

ブロック インターフェイス<br />

ザイ リンクスの RS Decoder ブロッ クには、 data_in、 sync、 reset という入力ポート と、 data_out、<br />

blk_strt、 blk_end、 err_found、 err_cnt、 fail、 ready、 rfd という出力ポートがあります。 また、n_in、<br />

erase、rst、en というオプションの入力ポート と、erase_cnt、data_del というオプションの出力ポー<br />

トも含めることができます。<br />

次に、 こ れ ら のポー ト について説明し ます。<br />

• data_in : デコードする n 個のシンボルのブ ロ ッ ク が入力 さ れます。 din 信号は UFIX_s_0 型に<br />

する必要があ り ます。 s は各シンボルのビ ッ ト 幅です。<br />

• sync : デコーダに data_in か ら のシンボルの処理をいつ開始する か伝え ます。 デコーダは、最初<br />

に sync がアサー ト されるまで入力シンボルを消去し ます。 sync がアサート されたと きのシン<br />

ボルが、デコーダで処理 さ れる最初の n シンボル ブロックの開始を表します。 sync 信号は、デ<br />

コーダが別のコードのブロ ッ クを受信する準備ができるまで無視されます。 sync を駆動する<br />

信号は、 ブール型にする必要があ り ます。<br />

• reset : デコーダが非同期に リ セ ッ ト さ れます。 reset を駆動する信号は、 ブール型にする必要が<br />

あります。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 281<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

メモ : reset は、 デコーダがコー ド シンボルをデコード し始める前に少なく と も 1 サンプル周<br />

期間 High にする必要があ り ます。<br />

• erase : din に現在あ る信号を erasure と し て処理する かど う かを指定し ます。 erase を駆動する<br />

信号は、 ブール型にする必要があ り ます。<br />

• n_in : n_in は各ブ ロ ッ ク の開始時にサンプ リ ング されます。 新しいブロ ッ クの長さ n_block は<br />

サンプ リ ングされた n_in に設定し ます。 n_in 信号は UFIX_s_0 型にする必要があ り ます。s は<br />

各シンボルのビ ッ ト 幅です。<br />

• rst : デコーダが同期にリセッ ト されます。 このポートは、[Provide synchronous reset port] をオ<br />

ンにする と ブ ロ ッ ク に追加さ れます。 rst を駆動する信号は、 ブール型にする必要があ り ます。<br />

• en : デコーダの イ ネーブル信号を伝達し ます。 en を駆動する信号は、 ブール型にする必要があ<br />

ります。<br />

• data_out : デコード された情報シンボルとパリ ティ シンボルが出力されます。 data_out のデー<br />

タ型は data_in と同じです。<br />

• blk_strt : data_out にブ ロ ッ ク の最初のシンボルが出力 さ れる と 、 1 にな り ます。 blk_strt から<br />

は、 UFIX_1_0 型の信号が出力 さ れます。<br />

• blk_end : data_out にブ ロ ッ ク の最後のシンボルが出力さ れる と 、 0 にな り ます。 blk_end から<br />

は、 UFIX_1_0 型の信号が出力 さ れます。<br />

• err_found : data_out にブ ロ ッ ク の最後のシンボルが出力さ れた と き の値にな り ます。 デコーダ<br />

でエ ラ ーが検出 さ れ、 デコー ド 中に消去 さ れる と 、 値は 1 にな り ます。 err_found の値は、 必<br />

ず UFIX_1_0 型にし ます。<br />

• err_cnt : data_out にブ ロ ッ ク の最後のシンボルが出力さ れた と き の値にな り ます。 値は、 訂正<br />

されたエラーの数になり ます。err_cnt は、 UFIX_b_0 型にする必要があ り ます。 b は n-k を表<br />

すのに必要なビ ッ ト 数です。<br />

• fail : dout にブ ロ ッ ク の最後のシンボルが出力さ れた と き の値にな り ます。 デコーダが情報シ<br />

ンボルを復元で き なかった場合は 1 に、 それ以外の場合は 0 にな り ます。 fail は、 UFIX_1_0<br />

型にする必要があ り ます。<br />

• ready : デコーダが data_in 入力をサンプリングできるようになると 1 に、 それ以外の場合は 0<br />

にな り ます。 ready は、 UFIX_1_0 型にする必要があ り ます。<br />

• rffd : デコーダが data_in 入力の コー ド ブロックの最初のシンボルをサンプリングできるよう<br />

になる と 1 に、それ以外の場合は 0 にな り ます。rffd は、UFIX_1_0 型にする必要があ り ます。<br />

• data_del : デコード されたシンボルは data_out に出力され、 デコード されていないシンボルは<br />

data_del に出力されます。 data_del のデータ型は data_in と同じです。<br />

• erase_cnt : 消去デコー ド が イ ネーブルになっ てい る と き のみ使用で き ます。 dout にブロ ッ クの<br />

最後のシンボルが出力さ れた と き の値にな り ます。 値は、 消去された数にな り ます。 erase_cnt<br />

は、 UFIX_b_0 型にする必要があ り ます。 b は n-k を表すのに必要なビ ッ ト 数です。<br />

ブロック インターフェイス<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Code specification] : 次の中から RS Decoder のタイプを指定します。<br />

282 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


RS Decoder v5_1<br />

♦ [Custom] : ブロッ ク パ ラ メ ータ をすべて設定で き ます。<br />

♦ [ATSC] : ATSC (Advanced Television <strong>System</strong>s Committee) 規格の短縮さ れた RS コード<br />

(207, 187) をインプリ メント します。<br />

♦ [CCSDS] : CCSDS (Consultative Committee <strong>for</strong> Space Data <strong>System</strong>s) 規格の短縮さ れた<br />

RS コード (255, 223) をインプリ メント します。<br />

♦ [DVB] : DVB (Digital Video Broadcasting) 規格の短縮さ れた RS コード (204, 188) をイ<br />

ンプ リ メ ン ト します。<br />

♦ [IESS-308 (126)] : IESS-308 (INTELSAT Earth Station Standard) 規格の短縮さ れた RS<br />

コード (126, 112) をインプリ メント します。<br />

♦ [IESS-308 (194)] : IESS-308 規格の短縮された RS コード (194, 178) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (208)] : IESS-308 規格の短縮された RS コード (208, 192) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (219)] : IESS-308 規格の短縮された RS コード (219, 201) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (225)] : IESS-308 規格の短縮された RS コード (225, 205) をインプリ メント し<br />

ます。<br />

♦ [IEEE-802.16d] : IEEE-802.16d 規格の RS コード (255, 239) すべてを イ ンプ リ メ ン ト し<br />

ます。<br />

• [Number of channels] : エン コーダで処理される時分割多重チ ャ ネルの数を指定し ます。 エン<br />

コーダでは、 最大で 128 チャネルまでがサポー ト されます。<br />

• [Clocks per symbol] : 入力データ シンボルご と に使用する サンプル周期数を指定し ます。 この<br />

値を増加する と、 プロセス遅延が削減され、 コード ワードの連続デコードがサポート されま<br />

す。 入力データ には、 指定し た ク ロ ッ ク シンボル数が保持されます。<br />

• [Provide erase port] : オンにする と、 ブロ ッ クに erase 入力が追加さ れます。<br />

• [Provide variable block length port (n_in)] : オンにする と、 ブロ ッ クに n_in 入力が追加さ れま<br />

す。<br />

• [Provide original delayed data port (data_del)] : オンにする と、 ブロ ッ クに data_del 出力が追<br />

加されます。<br />

• [Symbol width] : コードのシンボルの幅をビッ ト で示します。 エンコーダでサポート される幅<br />

は、 3 ~ 12 までです。<br />

• [Number of symbols per code block (n)] : エン コーダが出力する シンボルをブ ロ ッ ク 数で示し<br />

ます。 使用で き る値は、 3 ~ 2 S -1 で、 s はシンボル幅です。<br />

• [Number of in<strong>for</strong>mation symbols per code block (k)] : 各ブロ ッ ク に含まれる情報シンボルの数<br />

を示します。 使用可能な値は、 max(n - 256, 1) ~ n - 2 です。<br />

• [Field polynomial] : 多項式を指定し ます。 こ の多項式か ら シンボル フィールドが決まります。<br />

値は、 最初のエレ メ ン ト が最高次元の項、 最後のエレ メ ン ト が定数の係数を示す 2 進数の配列<br />

として指定します。 こ の多項式は、 プ リ ミ テ ィ ブにする必要があ り ます。 値が 0 の場合は、 デ<br />

フ ォル ト の多項式が使用されます。 次の表は、 デフ ォル ト の多項式を示し ています。<br />

シ ンボル幅 デフ ォル ト の多項式 配列<br />

3 x3 + x + 1 [1 0 1 1]<br />

4 x 4 + x + 1 [1 0 0 1 1]<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 283<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

RS Decoder<br />

v5_1<br />

R<br />

シ ンボル幅 デフ ォル ト の多項式 配列<br />

5 x 5 + x2 + 1 [1 0 0 0 1 1]<br />

6 x 6 + x + 1 [1 0 0 0 0 1 1]<br />

7 x 7 + x 3 + 1 [1 0 0 0 1 0 0 1]<br />

8 x 8 + x 4 + x 3 + x 2 + 1 [1 0 0 0 1 1 1 0 1]<br />

9 x 9 + x 4 + 1 [1 0 0 0 0 1 0 0 0 1]<br />

10 x 10 + x 3 + 1 [1 0 0 0 0 0 0 1 0 0 1]<br />

11 x 11 + x 2 + 1 [1 0 0 0 0 0 0 0 0 1 0 1]<br />

12 x 12 + x 6 + x 4 + x + 1 [1 0 0 0 0 0 1 0 1 0 0 1 1]<br />

• [<strong>Generator</strong> start] : 生成多項式の最初のルー ト r を指定し ます。 生成多項式 g(x) は、次のよ う に<br />

計算されます。<br />

α は、 シンボル フィールドのプリ ミティブ エレ メ ン ト です。 ス ケール係数は次のパ ラ メ ータ で指定<br />

します。<br />

• [Scaling factor <strong>for</strong> generator polynomial] : 上記の式では h で記述される部分で、 コード のス<br />

ケール係数を指定し ます。 通常、 h は 1 ですが、 2 S - 1 の値まで設定で き ます。 s はシンボル幅<br />

です。 この値を指定しないと α h がプ リ ミ テ ィ ブにな り ません。 h は 2 S - 1 と互いに素な数にす<br />

る必要があ り ます。<br />

• [Memory type] : [Automatic]、 [Block RAM]、 [Distributed memory] のいずれかを選択で き ま<br />

す。<br />

• [Optimization] : エリ アと スピードのどちらを優先させるか選択します。<br />

• [Self recovering state machine] : オンにする と、 不正なステート になったと きにブロ ッ クが同<br />

期で リ セ ッ ト されます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 次のザイ リンクス LogiCORE RS Decoder コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

RS Decoder<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

こ の コ アにはラ イ セン スが必要です。 購入は、 次のザ イ リ ン ク ス Web サイ トからできます。<br />

http://japan.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=DO-DI-RSD<br />

284 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V5.1 • • • • •<br />

4 5


RS Decoder v6_0<br />

RS Decoder v6_0<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

Reed-Solomon (RS) コードは、 ブロ ッ ク ベースの誤 り 訂正符号 (ECC) で、 デ<br />

ジ タル通信およびス ト レージ分野の さ ま ざ ま なアプ リ ケーシ ョ ンに使用 さ れ<br />

ています。<br />

このコードは、 デジタル ス トレージ デバイ ス、 ワ イ ヤレ ス/モバ イル通信、 デ<br />

ジタル ビデオ放送な どの多 く のシ ス テムでエ ラーを訂正する ために使用 さ れ<br />

ます。<br />

RS Decorder では、 RS Encoder で生成されたブロ ッ ク を処理し、 エ ラーを訂<br />

正し て情報シンボルを復元し よ う と し ます。 エラーの数とタイプは、 コードの<br />

特性に よ って訂正する こ と がで き ます。<br />

Reed-Solomon コードは、 BCH (Bose-Chaudhuri-Hocquenghem) コード、 つ<br />

まり線形ブロック コードです。 たとえば、線形コード (n, k) は、 有限フ ィ ール ド の n 次元ベク タ空<br />

間の k 次元部分空間を表し ます。 こ のフ ィ ール ド のエレ メ ン ト は、「シンボル」 と 呼ばれます。 Reed-<br />

Solomon コードでは、通常 n は論理式で、 s は各シンボルのビ ッ ト 幅です。 コー ド が短縮 さ れる と 、<br />

n の値は小さ く な り ます。 デコーダは、全コード も短縮されたコード も処理します。 また、エラーを<br />

含む可能性の高いシンボルであ る erasure も処理します。<br />

デコーダでブ ロ ッ ク が処理される と 、 次のいずれかが発生し ます。<br />

1. 情報シンボルが復元されます。 復元さ れる のは 2p+r < n-k の場合です。 p はエ ラー数、 r は<br />

erasure の数を示し ます。<br />

2. デコーダか ら、 情報シンボルを復元で き ない こ と がレ ポー ト さ れます。<br />

3. デコーダでは、 情報シンボルを復元で き なかったのに、 エ ラーがレ ポー ト さ れません。<br />

どの状況にな る かは、 コー ド と 通信チ ャ ネルの特性に よ っ て決ま り ます。 Simulink からは、 チャネ<br />

ルのモデルおよびこれらの状況の予測が可能なツールが提供さ れています。<br />

ブロック インターフェイス<br />

ザイ リンクスの RS Decoder ブロッ クには、 data_in、 sync、 reset という入力ポート と、 data_out、<br />

blk_strt、 blk_end、 err_found、 err_cnt、 fail、 ready、 rfd という出力ポートがあります。 また、n_in、<br />

erase、rst、en というオプションの入力ポート と、erase_cnt、data_del というオプションの出力ポー<br />

トも含めることができます。<br />

次に、 こ れ ら のポー ト について説明し ます。<br />

• data_in : デコードする n 個のシンボルのブ ロ ッ ク が入力 さ れます。 din 信号は UFIX_s_0 型に<br />

する必要があ り ます。 s は各シンボルのビ ッ ト 幅です。<br />

• sync : デコーダに data_in か ら のシンボルの処理をいつ開始する か伝え ます。 デコーダは、最初<br />

に sync がアサー ト されるまで入力シンボルを消去し ます。 sync がアサート されたと きのシン<br />

ボルが、デコーダで処理 さ れる最初の n シンボル ブロックの開始を表します。 sync 信号は、デ<br />

コーダが別のコードのブロ ッ クを受信する準備ができるまで無視されます。 sync を駆動する<br />

信号は、 ブール型にする必要があ り ます。<br />

• reset : デコーダが非同期に リ セ ッ ト さ れます。 reset を駆動する信号は、 ブール型にする必要が<br />

あります。<br />

メモ : reset は、 デコーダがコー ド シンボルをデコード し始める前に少なく と も 1 サンプル周<br />

期間 High にする必要があ り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 285<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

• erase : din に現在あ る信号を erasure と し て処理する かど う かを指定し ます。 erase を駆動する<br />

信号は、 ブール型にする必要があ り ます。<br />

• n_in : n_in は各ブ ロ ッ ク の開始時にサンプ リ ング されます。 新しいブロ ッ クの長さ n_block は<br />

サンプ リ ングされた n_in に設定し ます。 n_in 信号は UFIX_s_0 型にする必要があ り ます。s は<br />

各シンボルのビ ッ ト 幅です。<br />

• rst : デコーダが同期にリセッ ト されます。 このポートは、[Provide synchronous reset port] をオ<br />

ンにする と ブ ロ ッ ク に追加さ れます。 rst を駆動する信号は、 ブール型にする必要があ り ます。<br />

• en : デコーダの イ ネーブル信号を伝達し ます。 en を駆動する信号は、 ブール型にする必要があ<br />

ります。<br />

• data_out : デコード された情報シンボルとパリ ティ シンボルが出力されます。 data_out のデー<br />

タ型は data_in と同じです。<br />

• blk_strt : data_out にブ ロ ッ ク の最初のシンボルが出力 さ れる と 、 1 にな り ます。 blk_strt から<br />

は、 UFIX_1_0 型の信号が出力 さ れます。<br />

• blk_end : data_out にブ ロ ッ ク の最後のシンボルが出力さ れる と 、 0 にな り ます。 blk_end から<br />

は、 UFIX_1_0 型の信号が出力 さ れます。<br />

• err_found : data_out にブ ロ ッ ク の最後のシンボルが出力さ れた と き の値にな り ます。 デコーダ<br />

でエ ラ ーが検出 さ れ、 デコー ド 中に消去 さ れる と 、 値は 1 にな り ます。 err_found の値は、 必<br />

ず UFIX_1_0 型にし ます。<br />

• err_cnt : data_out にブ ロ ッ ク の最後のシンボルが出力さ れた と き の値にな り ます。 値は、 訂正<br />

されたエラーの数になり ます。err_cnt は、 UFIX_b_0 型にする必要があ り ます。 b は n-k を表<br />

すのに必要なビ ッ ト 数です。<br />

• fail : dout にブ ロ ッ ク の最後のシンボルが出力さ れた と き の値にな り ます。 デコーダが情報シ<br />

ンボルを復元で き なかった場合は 1 に、 それ以外の場合は 0 にな り ます。 fail は、 UFIX_1_0<br />

型にする必要があ り ます。<br />

• ready : デコーダが data_in 入力をサンプリングできるようになると 1 に、 それ以外の場合は 0<br />

にな り ます。 ready は、 UFIX_1_0 型にする必要があ り ます。<br />

• rffd : デコーダが data_in 入力の コー ド ブロックの最初のシンボルをサンプリングできるよう<br />

になる と 1 に、それ以外の場合は 0 にな り ます。rffd は、UFIX_1_0 型にする必要があ り ます。<br />

• data_del : デコード されたシンボルは data_out に出力され、 デコード されていないシンボルは<br />

data_del に出力されます。 data_del のデータ型は data_in と同じです。<br />

• erase_cnt : 消去デコー ド が イ ネーブルになっ てい る と き のみ使用で き ます。 dout にブロ ッ クの<br />

最後のシンボルが出力さ れた と き の値にな り ます。 値は、 消去された数にな り ます。 erase_cnt<br />

は、 UFIX_b_0 型にする必要があ り ます。 b は n-k を表すのに必要なビ ッ ト 数です。<br />

ブロック インターフェイス<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Code specification] : 次の中から RS Decoder のタイプを指定します。<br />

♦ [Custom] : ブロッ ク パ ラ メ ータ をすべて設定で き ます。<br />

286 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


RS Decoder v6_0<br />

♦ [ATSC] : ATSC (Advanced Television <strong>System</strong>s Committee) 規格の短縮さ れた RS コード<br />

(207, 187) をインプリ メント します。<br />

♦ [CCSDS] : CCSDS (Consultative Committee <strong>for</strong> Space Data <strong>System</strong>s) 規格の短縮さ れた<br />

RS コード (255, 223) をインプリ メント します。<br />

♦ [DVB] : DVB (Digital Video Broadcasting) 規格の短縮さ れた RS コード (204, 188) をイ<br />

ンプ リ メ ン ト します。<br />

♦ [IESS-308 (126)] : IESS-308 (INTELSAT Earth Station Standard) 規格の短縮さ れた RS<br />

コード (126, 112) をインプリ メント します。<br />

♦ [IESS-308 (194)] : IESS-308 規格の短縮された RS コード (194, 178) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (208)] : IESS-308 規格の短縮された RS コード (208, 192) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (219)] : IESS-308 規格の短縮された RS コード (219, 201) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (225)] : IESS-308 規格の短縮された RS コード (225, 205) をインプリ メント し<br />

ます。<br />

♦ [IEEE-802.16d] : IEEE-802.16d 規格の RS コード (255, 239) すべてを イ ンプ リ メ ン ト し<br />

ます。<br />

• [Number of channels] : エン コーダで処理される時分割多重チ ャ ネルの数を指定し ます。 エン<br />

コーダでは、 最大で 128 チャネルまでがサポー ト されます。<br />

• [Clocks per symbol] : 入力データ シンボルご と に使用する サンプル周期数を指定し ます。 この<br />

値を増加する と、 プロセス遅延が削減され、 コード ワードの連続デコードがサポート されま<br />

す。 入力データ には、 指定し た ク ロ ッ ク シンボル数が保持されます。<br />

• [Provide erase port] : オンにする と、 ブロ ッ クに erase 入力が追加さ れます。<br />

• [Provide variable block length port (n_in)] : オンにする と 、ブロ ッ ク に n_in 入力が追加さ れま す。<br />

• [Provide original delayed data port (data_del)] : オンにする と、 ブロ ッ クに data_del 出力が追<br />

加されます。<br />

• [Symbol width] : コードのシンボルの幅をビッ ト で示します。 エンコーダでサポート される幅<br />

は、 3 ~ 12 までです。<br />

• [Number of symbols per code block (n)] : エン コーダが出力する シンボルをブ ロ ッ ク 数で示し<br />

ます。 使用で き る値は、 3 ~ 2 S -1 で、 s はシンボル幅です。<br />

• [Number of in<strong>for</strong>mation symbols per code block (k)] : 各ブロ ッ ク に含まれる情報シンボルの数<br />

を示します。 使用可能な値は、 max(n - 256, 1) ~ n - 2 です。<br />

• [Field polynomial] : 多項式を指定し ます。 こ の多項式か ら シンボル フィールドが決まります。<br />

値は、 最初のエレ メ ン ト が最高次元の項、 最後のエレ メ ン ト が定数の係数を示す 2 進数の配列<br />

として指定します。 こ の多項式は、 プ リ ミ テ ィ ブにする必要があ り ます。 値が 0 の場合は、 デ<br />

フ ォル ト の多項式が使用されます。 次の表は、 デフ ォル ト の多項式を示し ています。<br />

シ ンボル幅 デフ ォル ト の多項式 配列<br />

3 x3 + x + 1 [1 0 1 1]<br />

4 x 4 + x + 1 [1 0 0 1 1]<br />

5 x 5 + x2 + 1 [1 0 0 0 1 1]<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 287<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

RS Decoder<br />

v6_0<br />

R<br />

シ ンボル幅 デフ ォル ト の多項式 配列<br />

6 x 6 + x + 1 [1 0 0 0 0 1 1]<br />

7 x 7 + x 3 + 1 [1 0 0 0 1 0 0 1]<br />

8 x 8 + x 4 + x 3 + x 2 + 1 [1 0 0 0 1 1 1 0 1]<br />

9 x 9 + x 4 + 1 [1 0 0 0 0 1 0 0 0 1]<br />

10 x 10 + x 3 + 1 [1 0 0 0 0 0 0 1 0 0 1]<br />

11 x 11 + x 2 + 1 [1 0 0 0 0 0 0 0 0 1 0 1]<br />

12 x 12 + x 6 + x 4 + x + 1 [1 0 0 0 0 0 1 0 1 0 0 1 1]<br />

• [<strong>Generator</strong> start] : 生成多項式の最初のルー ト r を指定し ます。 生成多項式 g(x) は、次のよ う に<br />

計算されます。<br />

α は、 シンボル フィールドのプリ ミティブ エレ メ ン ト です。 ス ケール係数は次のパ ラ メ ータ で指定<br />

します。<br />

• [Scaling factor <strong>for</strong> generator polynomial] : 上記の式では h で記述される部分で、 コード のス<br />

ケール係数を指定し ます。 通常、 h は 1 ですが、 2 S - 1 の値まで設定で き ます。 s はシンボル幅<br />

です。 この値を指定しないと α h がプ リ ミ テ ィ ブにな り ません。 h は 2 S - 1 と互いに素な数にす<br />

る必要があ り ます。<br />

• [Memory type] : [Automatic]、 [Block RAM]、 [Distributed memory] のいずれかを選択で き ま<br />

す。<br />

• [Optimization] : エリ アと スピードのどちらを優先させるか選択します。<br />

• [Self recovering state machine] : オンにする と、 不正なステート になったと きにブロ ッ クが同<br />

期で リ セ ッ ト されます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 次のザイ リンクス LogiCORE RS Decoder コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

RS Decoder<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

こ の コ アにはラ イ セン スが必要です。 購入は、 次のザ イ リ ン ク ス Web サイ トからできます。<br />

http://japan.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=DO-DI-RSD.<br />

288 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5<br />

V6.0 • • • • •


RS Encoder v5_0<br />

RS Encoder v5_0<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

Reed-Solomon (RS) コードは、 ブロ ッ ク ベースの誤 り 訂正符号 (ECC) で、 デ<br />

ジ タル通信およびス ト レージ分野の さ ま ざ ま なアプ リ ケーシ ョ ンに使用さ れて<br />

います。<br />

このコードは、デジタル ス トレージ デバ イ ス、 ワ イ ヤレ ス/モバイ ル通信、 デジ<br />

タル ビデオ放送などの多 く のシ ス テムでエ ラーを訂正する ために使用さ れま<br />

す。<br />

RS Encoder では、 集まったデータ ブ ロ ッ ク に冗長シンボルが追加さ れ、 転送中<br />

のエラーが訂正されます。 エ ラ ーの原因は、 ノ イ ズやイ ン ターフ ェ イ ス、 CD の<br />

傷など さ まざまです。 RS Decoder は、 エ ラーを修正し、 元のデータ を復元し よ う と し ます。 エラー<br />

の数 と タ イ プは、 コー ド の特性に よ っ て訂正する こ と がで き ます。<br />

次の図は、 典型的なシ ス テム を示し ています。<br />

Reed-Solomon コードは、BCH (Bose-Chaudhuri-Hocquenghem) コード、つま り線形ブロ ッ ク コー<br />

ドです。 たとえば、 線形コード (n, k) は、 有限フ ィ ール ド の n 次元ベク タ空間の k 次元部分空間を<br />

表します。 こ のフ ィ ール ド のエレ メ ン ト は、「シンボル」 と 呼ばれます。 Reed-Solomon コードでは、<br />

通常 n は 2 S -1 で、 s は各シンボルのビ ッ ト 幅です。 コー ド が短縮される と 、 n の値は小さ く な り ま<br />

す。 エンコーダは、 全コード も短縮されたコード も処理します。<br />

エンコーダは、n-k パリティ シンボルを追加する こ と で、 長さ k の情報ブロ ッ ク から長さ n のコー<br />

ド ブロッ クを構築します。<br />

Reed-Solomon コー ド は、 フ ィ ール ド 多項式 と 生成多項式で指定さ れます。 フ ィ ール ド 多項式はシ<br />

ンボル フ ィ ール ド を構築する ために、 生成多項式はパ リ テ ィ シンボルを計算する ために使用さ れ<br />

ます。 エン コーダでは、 ど ち ら の多項式 も コ ン フ ィ ギ ュ レーシ ョ ンで き ます。 生成多項式は、 次の<br />

ようになります。<br />

α は、 n + 1 個のエレ メ ン ト を含む有限フ ィ ール ド のプ リ ミ テ ィ ブ エレ メン トです。<br />

ブロック インターフェイス<br />

ザイ リンクスの RS Encoder ブロッ クには、data_in、 bypass、 start という入力ポート と、data_out、<br />

info という出力ポート が含まれます。 また、 n_in、 r_in、 nd、 rst、 en というオプションの入力ポー<br />

トと、 rdy、 rfd、 rffd という オプシ ョ ンの出力ポート も含まれます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 289<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

次に、 こ れ ら のポー ト について説明し ます。<br />

ブロック パラ メータ<br />

• data_in : エンコードする n 個のシンボルのブ ロ ッ ク が入力さ れます。 各ブ ロ ッ ク には、 情報シ<br />

ンボル k と その後の未解釈のフ ィ ルタ シンボル n - k で形成されます。 din 信号は UFIX_s_0<br />

型にする必要があ り ます。 s は各シンボルのビ ッ ト 幅です。<br />

• [start] : エンコーダに din か ら のシンボルの処理をいつ開始する か伝え ます。 エンコーダは、最<br />

初に start がアサー ト されるまで入力シンボルを消去し ます。 start がアサー ト されたと きのシ<br />

ンボルが、エン コーダで処理さ れる最初の n シンボル ブロックの開始を表します。 start が 1 サ<br />

ンプル周期よ り も長い間アサー ト される と、最後の周期の値がブロ ッ クの始めに使用されます。<br />

start 信号は、 bypass が同時にアサート されると無視されます。 start を駆動する信号は、 ブール<br />

型にする必要があ り ます。<br />

• [bypass] : bypass がアサート される と、 4 サンプル周期 (CCSDS の場合は 6 サンプル周期) の<br />

遅延が追加され、 din の値が変更されずにそのま ま dout に出力されます。 bypass 信号は、 エン<br />

コーダのステート に影響を与えません。 bypass を駆動する信号は、 ブール型にする必要があ り<br />

ます。<br />

• n_in : n_in は各ブ ロ ッ ク の開始時にサンプ リ ング されます。 新しいブロ ッ クの長さ n_block は<br />

サンプ リ ングされた n_in に設定し ます。 n_in 信号は UFIX_s_0 型にする必要があ り ます。s は<br />

各シンボルのビ ッ ト 幅です。<br />

• r_in : r_in は各ブ ロ ッ ク の開始時にサンプ リ ング されます。 新しいブロ ッ クの長さ r_block は<br />

サンプ リ ングされた r_in に設定し ます。 r_in 信号は UFIX_p_0 型にする必要があ り ます。p は<br />

デフォル ト のコード ワードでパリ テ ィ ビッ ト (n - k) を表すのに必要なビ ッ ト 数です。<br />

• nd : 各 data_in シンボルがパリティ シンボルを処理する ための情報シンボルの一部であ る こ と<br />

を示します。 nd を駆動する信号は、 ブール型にする必要があ り ます。<br />

• rst : reset 信号を転送し ます。 rst を駆動する信号は、 ブール型にする必要があ り ます。<br />

• en : reset 信号を転送し ます。 en を駆動する信号は、 ブール型にする必要があ り ます。<br />

• data_out : n 個のシンボルを含むブロ ッ ク を出力し ます。 シンボルは、 data_in か ら読み出さ れ<br />

た情報シンボル k がエン コード されたものです。 data_out のデータ型は data_in と同じです。<br />

• info : data_out の値が情報シンボルの場合は 1 に、 パ リ テ ィ シンボルの場合は 0 にな り ます。<br />

info は、 UFIX_1_0 型にする必要があ り ます。<br />

• rdy : data_out の各シンボルが有効か無効かを示し ます。rdy は UFIX_1_0 型にする必要があ り<br />

ます。<br />

• rfd : エン コーダが情報シンボルを入出力する と 1 に、 パ リ テ ィ シンボルを入出力する と 0 に<br />

なります。rfd は、 UFIX_1_0 型にする必要があ り ます。<br />

• rffd : エンコーダが新しい start パルス を受信で き る よ う にな る と 1 にな り ます。 rffd は、<br />

UFIX_1_0 型にする必要があ り ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Code specification] : 次のいずれかか ら エン コーダの タ イ プを指定し ます。<br />

♦ [Custom] : ブロッ ク パ ラ メ ータ をすべて設定で き ます。<br />

♦ [ATSC] : ATSC (Advanced Television <strong>System</strong>s Committee) 規格の短縮さ れた RS コード<br />

(207, 187) をインプリ メント します。<br />

290 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


RS Encoder v5_0<br />

♦ [CCSDS] : CCSDS (Consultative Committee <strong>for</strong> Space Data <strong>System</strong>s) 規格の短縮さ れた<br />

RS コード (255, 223) をインプリ メント します。<br />

♦ [DVB] : DVB (Digital Video Broadcasting) 規格の短縮さ れた RS コード (204, 188) をイ<br />

ンプ リ メ ン ト します。<br />

♦ [IESS-308 (126)] : IESS-308 (INTELSAT Earth Station Standard) 規格の短縮さ れた RS<br />

コード (126, 112) をインプリ メント します。<br />

♦ [IESS-308 (194)] : IESS-308 規格の短縮された RS コード (194, 178) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (208)] : IESS-308 規格の短縮された RS コード (208, 192) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (219)] : IESS-308 規格の短縮された RS コード (219, 201) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (225)] : IESS-308 規格の短縮された RS コード (225, 205) をインプリ メント し<br />

ます。<br />

♦ [ITU-J.83 Annex B] : ITU-J.83 Annex B 規格の拡張された RS コード (128, 122) をインプ<br />

リメントします。<br />

• [Number of channels] : エン コーダで処理される時分割多重チ ャ ネルの数を指定し ます。 エン<br />

コーダでは、 最大で 128 チャネルまでがサポー ト されます。<br />

• [Provide variable number of check symbols (r_in)] : オンにする と、ブロ ッ クに r_in および n_in<br />

入力が追加されます。<br />

• [Provide variable block length port (n_in)] : オンにする と 、ブロ ッ ク に n_in 入力が追加さ れま す。<br />

• [Provide new data port (nd)] : オンにする と、 ブロ ッ クに nd 入力が追加されます。<br />

• [Provide ready port (rdy)] : オンにする と、 ブロ ッ クに rdy 出力が追加されます。<br />

• [Provide ready <strong>for</strong> data port (rfd)] : オンにする と、 ブロ ッ クに rfd 出力が追加されます。<br />

• [Provide ready <strong>for</strong> first data port (rffd)] : オンにする と、 ブロ ッ クに rffd 出力が追加されます。<br />

• [Symbol width] : コードのシンボルの幅をビッ ト で示します。 エンコーダでサポート される幅<br />

は、 3 ~ 12 までです。<br />

• [n (number of symbols per code block)] : エン コーダが出力する シンボルをブ ロ ッ ク 数で示し<br />

ます。 使用で き る値は、 3 ~ 2 S -1 で、 s はシンボル幅です。<br />

• [k (number of in<strong>for</strong>mation symbols per code block)] : 各ブロ ッ ク に含まれる情報シンボルの数<br />

を示します。 使用可能な値は、 max(n - 256, 1) ~ n - 2 です。<br />

• [Field polynomial] : 多項式を指定し ます。 こ の多項式か ら シンボル フィールドが決まります。<br />

値は、 最初のエレ メ ン ト が最高次元の項、 最後のエレ メ ン ト が定数の係数を示す 2 進数の配列<br />

として指定します。 こ の多項式は、 プ リ ミ テ ィ ブにする必要があ り ます。 値が 0 の場合は、 デ<br />

フ ォル ト の多項式が使用されます。 次の表は、 デフ ォル ト の多項式を示し ています。<br />

シ ンボル幅 デフ ォル ト の多項式 配列<br />

3 x3 + x + 1 [1 0 1 1]<br />

4 x 4 + x + 1 [1 0 0 1 1]<br />

5 x 5 + x2 + 1 [1 0 0 0 1 1]<br />

6 x 6 + x + 1 [1 0 0 0 0 1 1]<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 291<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

シ ンボル幅 デフ ォル ト の多項式 配列<br />

7 x 7 + x 3 + 1 [1 0 0 0 1 0 0 1]<br />

8 x 8 + x 4 + x 3 + x 2 + 1 [1 0 0 0 1 1 1 0 1]<br />

9 x 9 + x 4 + 1 [1 0 0 0 0 1 0 0 0 1]<br />

10 x 10 + x 3 + 1 [1 0 0 0 0 0 0 1 0 0 1]<br />

11 x 11 + x 2 + 1 [1 0 0 0 0 0 0 0 0 1 0 1]<br />

12 x 12 + x 6 + x 4 + x + 1 [1 0 0 0 0 0 1 0 1 0 0 1 1]<br />

• [<strong>Generator</strong> start] : 生成多項式の最初のルー ト r を指定し ます。 生成多項式 g(x) は、次のよ う に<br />

計算されます。<br />

• α は、シンボル フィールドのプリミティブ エ レ メ ン ト です。 ス ケール係数 h は次のパラ メ ータ<br />

で指定し ます。<br />

• [Scaling factor <strong>for</strong> generator polynomial] : コー ド のス ケール係数を指定し ます。 通常、 h は 1<br />

ですが、 2S - 1 の値まで設定で き ます。 s はシンボル幅です。 この値を指定しないと αh がプ リ<br />

ミティブにならないので、h は 2S - 1 と 互いに素な数にする必要があ り ます。<br />

• [Memory style] : [Automatic]、 [Block RAM]、 [Distributed memory] のいずれかを選択で き ま<br />

す。 このオプションは、 CCSDS コー ド の場合にのみ選択で き ます。<br />

• [Check Symbol <strong>Generator</strong>] : エ リ ア と 柔軟性のどち ら を優先し て最適化する か選択し ます。 こ<br />

のオプシ ョ ンは、エン コーダにさ まざまな数のチェ ッ ク シンボルが入力さ れた場合にのみ選択<br />

できます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 次のザイ リンクス LogiCORE RS Encoder コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

こ の コ アにはラ イ セン スが必要です。 購入は、 次のザ イ リ ン ク ス Web サイ トからできます。<br />

http://japan.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=DO-DI-RSE<br />

292 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

RS Encoder v5_0 RS Encoder V5.0 • • • • •<br />

4 5


RS Encoder v6_0<br />

RS Encoder v6_0<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

Reed-Solomon (RS) コードは、 ブロ ッ ク ベースの誤 り 訂正符号 (ECC) で、 デ<br />

ジ タル通信およびス ト レージ分野の さ ま ざ ま なアプ リ ケーシ ョ ンに使用さ れて<br />

います。<br />

このコードは、デジタル ス トレージ デバ イ ス、 ワ イ ヤレ ス/モバイ ル通信、 デジ<br />

タル ビデオ放送などの多 く のシ ス テムでエ ラーを訂正する ために使用さ れま<br />

す。<br />

RS Encoder では、 集まったデータ ブ ロ ッ ク に冗長シンボルが追加さ れ、 転送中<br />

のエラーが訂正されます。 エ ラ ーの原因は、 ノ イ ズやイ ン ターフ ェ イ ス、 CD の<br />

傷など さ まざまです。 RS Decoder は、 エ ラーを修正し、 元のデータ を復元し よ う と し ます。 エラー<br />

の数 と タ イ プは、 コー ド の特性に よ っ て訂正する こ と がで き ます。<br />

次の図は、 典型的なシ ス テム を示し ています。<br />

Reed-Solomon コードは、BCH (Bose-Chaudhuri-Hocquenghem) コード、つま り線形ブロ ッ ク コー<br />

ドです。 たとえば、 線形コード (n, k) は、 有限フ ィ ール ド の n 次元ベク タ空間の k 次元部分空間を<br />

表します。 こ のフ ィ ール ド のエレ メ ン ト は、「シンボル」 と 呼ばれます。 Reed-Solomon コードでは、<br />

通常 n は 2 S -1 で、 s は各シンボルのビ ッ ト 幅です。 コー ド が短縮される と 、 n の値は小さ く な り ま<br />

す。 エンコーダは、 全コード も短縮されたコード も処理します。<br />

エンコーダは、n-k パリティ シンボルを追加する こ と で、 長さ k の情報ブロ ッ ク から長さ n のコー<br />

ド ブロッ クを構築します。<br />

Reed-Solomon コー ド は、 フ ィ ール ド 多項式 と 生成多項式で指定さ れます。 フ ィ ール ド 多項式はシ<br />

ンボル フ ィ ール ド を構築する ために、 生成多項式はパ リ テ ィ シンボルを計算する ために使用さ れ<br />

ます。 エン コーダでは、 ど ち ら の多項式 も コ ン フ ィ ギ ュ レーシ ョ ンで き ます。 生成多項式は、 次の<br />

ようになります。<br />

α は、 n + 1 個のエレ メ ン ト を含む有限フ ィ ール ド のプ リ ミ テ ィ ブ エレ メン トです。<br />

ブロック インターフェイス<br />

ザイ リンクスの RS Encoder ブロッ クには、data_in、 bypass、 start という入力ポート と、data_out、<br />

info という出力ポート が含まれます。 また、 n_in、 r_in、 nd、 rst、 en というオプションの入力ポー<br />

トと、 rdy、 rfd、 rffd という オプシ ョ ンの出力ポート も含まれます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 293<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

次に、 こ れ ら のポー ト について説明し ます。<br />

ブロック パラ メータ<br />

• data_in : エンコードする n 個のシンボルのブ ロ ッ ク が入力さ れます。 ブ ロ ッ ク は、 情報シンボ<br />

ル k と その後の未解釈のフ ィ ル タ シンボル n - k 形成 さ れます。 din 信号は UFIX_s_0 型にす<br />

る必要があ り ます。 s は各シンボルのビ ッ ト 幅です。<br />

• [start] : エンコーダに din か ら のシンボルの処理をいつ開始する か伝え ます。 エンコーダは、最<br />

初に start がアサー ト されるまで入力シンボルを消去し ます。 start がアサー ト されたと きのシ<br />

ンボルが、エン コーダで処理さ れる最初の n シンボル ブロックの開始を表します。 start が 1 サ<br />

ンプル周期よ り も長い間アサー ト される と、最後の周期の値がブロ ッ クの始めに使用されます。<br />

start 信号は、 bypass が同時にアサート されると無視されます。 start を駆動する信号は、 ブール<br />

型にする必要があ り ます。<br />

• [bypass] : bypass がアサート される と、 4 サンプル周期 (CCSDS の場合は 6 サンプル周期) の<br />

遅延が追加され、 din の値が変更されずにそのま ま dout に出力されます。 bypass 信号は、 エン<br />

コーダのステート に影響を与えません。 bypass を駆動する信号は、 ブール型にする必要があ り<br />

ます。<br />

• n_in : r_in は各ブ ロ ッ ク の開始時にサンプ リ ング されます。 新しいブロッ クの長さ n_block は<br />

サンプ リ ングされた n_in に設定し ます。 n_in 信号は UFIX_s_0 型にする必要があ り ます。s は<br />

各シンボルのビ ッ ト 幅です。<br />

• r_in : r_in は各ブ ロ ッ ク の開始時にサンプ リ ング されます。 新しいブロ ッ クの長さ r_block は<br />

サンプ リ ングされた r_in に設定し ます。 r_in 信号は UFIX_p_0 型にする必要があ り ます。p は<br />

デフォル ト のコード ワードでパリ テ ィ ビッ ト (n - k) を表すのに必要なビ ッ ト 数です。<br />

• nd : 各 data_in シンボルがパリティ シンボルを処理する ための情報シンボルの一部であ る こ と<br />

を示します。 nd を駆動する信号は、 ブール型にする必要があ り ます。<br />

• rst : reset 信号を転送し ます。 rst を駆動する信号は、 ブール型にする必要があ り ます。<br />

• en : reset 信号を転送し ます。 en を駆動する信号は、 ブール型にする必要があ り ます。<br />

• data_out : n 個のシンボルを含むブロ ッ ク を出力し ます。 シンボルは、 data_in か ら読み出さ れ<br />

た情報シンボル k がエン コード されたものです。 data_out のデータ型は data_in と同じです。<br />

• info : data_out の値が情報シンボルの場合は 1 に、 パ リ テ ィ シンボルの場合は 0 にな り ます。<br />

info は、 UFIX_1_0 型にする必要があ り ます。<br />

• rdy : data_out の各シンボルが有効か無効かを示し ます。rdy は UFIX_1_0 型にする必要があ り<br />

ます。<br />

• rfd : エン コーダが情報シンボルを入出力する と 1 に、 パ リ テ ィ シンボルを入出力する と 0 に<br />

なります。rfd は、 UFIX_1_0 型にする必要があ り ます。<br />

• rffd : エンコーダが新しい start パルス を受信で き る よ う にな る と 1 にな り ます。 rffd は、<br />

UFIX_1_0 型にする必要があ り ます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Code specification] : 次のいずれかか ら エン コーダの タ イ プを指定し ます。<br />

♦ [Custom] : ブロッ ク パ ラ メ ータ をすべて設定で き ます。<br />

♦ [ATSC] : ATSC (Advanced Television <strong>System</strong>s Committee) 規格の短縮さ れた RS コード<br />

(207, 187) をインプリ メント します。<br />

294 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


RS Encoder v6_0<br />

♦ [CCSDS] : CCSDS (Consultative Committee <strong>for</strong> Space Data <strong>System</strong>s) 規格の短縮さ れた<br />

RS コード (255, 223) をインプリ メント します。<br />

♦ [DVB] : DVB (Digital Video Broadcasting) 規格の短縮さ れた RS コード (204, 188) をイ<br />

ンプ リ メ ン ト します。<br />

♦ [IESS-308 (126)] : IESS-308 (INTELSAT Earth Station Standard) 規格の短縮さ れた RS<br />

コード (126, 112) をインプリ メント します。<br />

♦ [IESS-308 (194)] : IESS-308 規格の短縮された RS コード (194, 178) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (208)] : IESS-308 規格の短縮された RS コード (208, 192) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (219)] : IESS-308 規格の短縮された RS コード (219, 201) をインプリ メント し<br />

ます。<br />

♦ [IESS-308 (225)] : IESS-308 規格の短縮された RS コード (225, 205) をインプリ メント し<br />

ます。<br />

♦ [ITU-J.83 Annex B] : ITU-J.83 Annex B 規格の拡張された RS コード (128, 122) をインプ<br />

リメントします。<br />

• [Number of channels] : エン コーダで処理される時分割多重チ ャ ネルの数を指定し ます。 エン<br />

コーダでは、 最大で 128 チャネルまでがサポー ト されます。<br />

• [Provide variable number of check symbols (r_in)] : オンにする と、ブロ ッ クに r_in および n_in<br />

入力が追加されます。<br />

• [Provide variable block length port (n_in)] : オンにする と 、ブロ ッ ク に n_in 入力が追加さ れま す。<br />

• [Provide new data port (nd)] : オンにする と、 ブロ ッ クに nd 入力が追加されます。<br />

• [Provide ready port (rdy)] : オンにする と、 ブロ ッ クに rdy 出力が追加されます。<br />

• [Provide ready <strong>for</strong> data port (rfd)] : オンにする と、 ブロ ッ クに rfd 出力が追加されます。<br />

• [Provide ready <strong>for</strong> first data port (rffd)] : オンにする と、 ブロ ッ クに rffd 出力が追加されます。<br />

• [Symbol width] : コードのシンボルの幅をビッ ト で示します。 エンコーダでサポート される幅<br />

は、 3 ~ 12 までです。<br />

• [n (number of symbols per code block)] : エン コーダが出力する シンボルをブ ロ ッ ク 数で示し<br />

ます。 使用で き る値は、 3 ~ 2 S -1 で、 s はシンボル幅です。<br />

• [k (number of in<strong>for</strong>mation symbols per code block)] : 各ブロ ッ ク に含まれる情報シンボルの数<br />

を示します。 使用可能な値は、 max(n - 256, 1) ~ n - 2 です。<br />

• [Field polynomial] : 多項式を指定し ます。 こ の多項式か ら シンボル フィールドが決まります。<br />

値は、 最初のエレ メ ン ト が最高次元の項、 最後のエレ メ ン ト が定数の係数を示す 2 進数の配列<br />

として指定します。 こ の多項式は、 プ リ ミ テ ィ ブにする必要があ り ます。 値が 0 の場合は、 デ<br />

フ ォル ト の多項式が使用されます。 次の表は、 デフ ォル ト の多項式を示し ています。<br />

シ ンボル幅 デフ ォル ト の多項式 配列<br />

3 x3 + x + 1 [1 0 1 1]<br />

4 x 4 + x + 1 [1 0 0 1 1]<br />

5 x 5 + x2 + 1 [1 0 0 0 1 1]<br />

6 x 6 + x + 1 [1 0 0 0 0 1 1]<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 295<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

シ ンボル幅 デフ ォル ト の多項式 配列<br />

7 x 7 + x 3 + 1 [1 0 0 0 1 0 0 1]<br />

8 x 8 + x 4 + x 3 + x 2 + 1 [1 0 0 0 1 1 1 0 1]<br />

9 x 9 + x 4 + 1 [1 0 0 0 0 1 0 0 0 1]<br />

10 x 10 + x 3 + 1 [1 0 0 0 0 0 0 1 0 0 1]<br />

11 x 11 + x 2 + 1 [1 0 0 0 0 0 0 0 0 1 0 1]<br />

12 x 12 + x 6 + x 4 + x + 1 [1 0 0 0 0 0 1 0 1 0 0 1 1]<br />

• [<strong>Generator</strong> start] : 生成多項式の最初のルー ト r を指定し ます。 生成多項式 g(x) は、次のよ う に<br />

計算されます。<br />

• α は、シンボル フィールドのプリミティブ エ レ メ ン ト です。 ス ケール係数 h は次のパラ メ ータ<br />

で指定し ます。<br />

• [Scaling factor <strong>for</strong> generator polynomial] : コー ド のス ケール係数を指定し ます。 通常、 h は 1<br />

ですが、 2S - 1 の値まで設定で き ます。 s はシンボル幅です。 この値を指定しないと αh がプ リ<br />

ミティブにならないので、h は 2S - 1 と 互いに素な数にする必要があ り ます。<br />

• [Memory style] : [Automatic]、 [Block RAM]、 [Distributed memory] のいずれかを選択で き ま<br />

す。 このオプションは、 CCSDS コー ド の場合にのみ選択で き ます。<br />

• [Check Symbol <strong>Generator</strong>] : エ リ ア と 柔軟性のどち ら を優先し て最適化する か選択し ます。 こ<br />

のオプシ ョ ンは、エン コーダにさ まざまな数のチェ ッ ク シンボルが入力さ れた場合にのみ選択<br />

できます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 次のザイ リンクス LogiCORE RS Encoder コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

こ の コ アにはラ イ セン スが必要です。 購入は、 次のザ イ リ ン ク ス Web サイ トからできます。<br />

http://japan.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=DO-DI-RSE.<br />

296 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5<br />

RS Encoder v6_0 RS Encoder V6.0 • • • •


Sample Time<br />

Sample Time<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

Sample Time ブ ロ ッ ク では、 標準化された入力値のサンプル周期がレ ポー ト さ れま<br />

す。 標準化さ れたサンプル周期は、 Simulink の絶対サンプル周期と は異な り ます。<br />

ハー ド ウ ェ アでは、 定数 と し て イ ンプ リ メ ン ト さ れます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 297<br />

リリース 9.2.00 2007 年 8 月<br />

R


Scale<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Data Types]、 [Math]、 [Index] ライブラリにリストされてい<br />

ます。<br />

ブロック パラ メータ<br />

ザイ リ ンクスの Scale ブロックでは、 入力が 2 のべき乗でス ケール変換されます。 べ<br />

き乗の値は、 正にでも負にでもできます。 このブロックには、 入力が 1 つ と 出力が 1<br />

つあ り ます。 ス ケール変換では、 コ ンテナ内のビ ッ ト を変更せずに 2 進小数点の位置<br />

が移動されます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

ブ ロ ッ ク に特有のパ ラ メ ータは、 ス ケール係数を指定する [Scale factor s] だけで、 正または負の整<br />

数を指定で き ます。 ブロッ クの出力は i*2^k にな り ます。i は入力値、k はスケール係数を示します。<br />

ス ケール変換をする と 、 2 進小数点の位置が移動し、 ハー ド ウ ェ アで コ ス ト がかか ら な く な り ます<br />

(ただし、 シフ ト によ り、 ロジッ クが追加される こ とがあ り ます)。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 ザイ リンクス LogiCORE は使用 されません。<br />

298 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Serial to Parallel<br />

Serial to Parallel<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Data Types]、 [Index] ライブラリにリス<br />

トされています。<br />

Serial to Parallel ブ ロ ッ ク では、 連続し て入力されたデータ が指定し た倍数のサ イ<br />

ズの出力 1 つにま と められて、 出力されます。 こ の連続入力は、 最上位ワー ド ま た<br />

は最下位ワー ド のいずれかを先頭に し た順序にな り ます。<br />

次の波形図は、 こ のブ ロ ッ ク の動作を示し ています。<br />

こ の例では、 入力幅 1、 出力幅 4 で、 ワード サイズが 1 ビ ッ ト の場合に、 最上位ワー ド か ら入力さ<br />

れるよ うに設定されています。<br />

ブロック インターフェイス<br />

Serial to Parallel ブロッ クには、 入力が 1 つと出力が 1 つあ り ます。 入力ポー ト は、 どのサ イ ズに<br />

でもできます。 出力ポー ト サイズは、ブロッ クのパラ メータ ダイアログ ボックスで指定できます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Input order] : 最下位ワー ド か最上位ワー ド のど ち ら を最初に入力する か指定し ます。<br />

• [Arithmetic type] : 出力を符号付き か符号な し のいずれかに指定し ます。<br />

• [Number of bits] : 出力幅は、 入力ビ ッ ト 数の倍数であ る必要があ り ます。<br />

• [Binary point] : 出力の 2 進小数点の位置を指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

入力ビ ッ ト 数で出力ビ ッ ト 数が割れない場合は、 エ ラー メ ッ セージが表示されます。 このブロック<br />

の最小レ イ テンシは 0 です。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 299<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Shared Memory<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Shared Memory] および [Index] ライブラリにリストされて<br />

います。<br />

ザイ リ ンクスの Shared Memory ブロッ クは、 複数のデザインや<br />

1 つのデザイ ンの選択し た箇所で共有でき る ラ ンダム アクセス<br />

メモリ (RAM) をインプリ メント します。<br />

Shared Memory ブロックは、 その名前で識別されます。 図の<br />

Shared Memory ブロッ クには、 Bar と い う 名前が付いています。<br />

この Bar のイ ン ス タ ン ス同士は、 同じ モデル内にあろ う が、 別の<br />

モデルにあろ う が、MATLAB の別のイ ン ス タ ン スであって も、同<br />

じメモリ空間を共有します。 <strong>System</strong> <strong>Generator</strong> のハード ウ ェア協調シ ミ ュ レーシ ョ ン インター<br />

フェイスでは、 Shared Memory ブロックを FPGA ハー ド ウ ェ アに コ ンパ イ ル し、 協調シ ミ ュ レー<br />

ションできます。 これらのインターフェイスによ り、 ハードウェア ベースの共有 メ モ リ リソース<br />

を、 ホ ス ト PC の共通ア ド レ ス空間にマ ッ プする こ と が可能です。 Shared Memory を <strong>System</strong><br />

<strong>Generator</strong> 協調シ ミ ュ レーシ ョ ン ハー ド ウ ェ アで使用する と 、 ホ ス ト PC と FPGA 間でデータ を高<br />

速に転送で き、 リ アルタ イ ム ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン機能が強化されます。<br />

9.2 リ リ ースからは、 同じ名前の Shared Memory ブ ロ ッ ク同士がペアにな り 、 ネ ッ ト リ ス ト では 1<br />

つの BRAM ベースの Dual Port RAM ブロッ クになっています。 Shared Memory ブロックがペア<br />

になっ ていない場合は、ブ ロ ッ ク の入力ポー ト および出力ポー ト は <strong>System</strong> <strong>Generator</strong> デザイ ンの最<br />

上位に配置 さ れます。 ペアになったブロ ッ クはデザインのどの階層にでも配置でき ますが、 同じ名<br />

前の Shared Memory ブロッ クが 2 つよ り多いと、 エラーになり ます。<br />

以前のバージ ョ ン と の互換性を保持する には、MATLAB グローバル変数 xlSgSharedMemoryStitch<br />

を off に設定し て く ださい。 これには、 MATLAB コマンド ラインに次のように入力します。<br />

global xlSgSharedMemoryStitch;<br />

xlSgSharedMemoryStitch = 'off';<br />

ブロック インターフェイス<br />

デフォル ト では、 Shared Memory ブロッ クには 3 つの入力 (addr、 din、 we) と、1 つの出力 (dout)<br />

が含まれます。 Shared Memory ブロックへのアクセスは、[Access protection] を [Lockable] に設定<br />

する と保護できます。 [Lockable] にする と、 入力ポー ト req と出力ポート grant の 2 つのポー ト が<br />

追加されます。<br />

addr は UFIX_N_0 型の信号で駆動する必要があ り ます。 こ の場合、N は ceil(log2(depth)) です。 メ<br />

モリのワード サイズは、 コンパイル時に、 din ポー ト を駆動する信号のビ ッ ト 幅で決ま り ます。 書<br />

き込みイネーブル (we) ポー ト が 1 で駆動される と、 din ポー ト の値が addr ポー ト で指定し た メ モ<br />

リ アドレスに書き込まれます。<br />

[Access protection] を [Lockable] に設定する と、 メ モ リ へのア ク セス制御に req ポー ト と grant<br />

ポー ト が使用 さ れます。 読み出しや書き込みの前に、 まず req を 1 に設定し て リ ク エス ト をする必<br />

要があ り ます。 grant が 1 になる と、 アクセス リ ク エ ス ト が許可さ れ、 読み出し または書き込みが<br />

300 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Shared Memory<br />

実行で き る よ う にな り ます。 次の図は、 req、 grant、 we ポー ト の関係を示し ています。 また、 この<br />

図から、 メ モ リ へのア ク セスが許可される までブロ ッ ク出力がないこ と がわか り ます。<br />

書き込み中の出力は、書き込みモー ド に よ っ て異な り ます。 we ポー ト が 0 の場合、出力ポー ト はア<br />

ドレス ラ イ ンで指定し た ロ ケーシ ョ ンの値にな り ます。 書き込み中 (we がアサート されている間)、<br />

入力データ ポートのデータはポートのアドレス入力で選択したメモリ ロケーションに格納されま<br />

す。 書き込みサ イ ク ル中は、 データ出力ポー ト のビヘイ ビアは次のいずれかに設定で き ます。<br />

• Read After Write<br />

• Read Be<strong>for</strong>e Write<br />

• No Read On Write<br />

次の図では、 書き込みモー ド の詳細を示し ています。 次の図では、 メ モ リ の初期値は 5 に、 ア ド レ<br />

ス ビッ トは 2 に指定されています。 [No read on write] モー ド を使用し た場合、 出力はア ド レ ス ラ<br />

インの影響を受けず、 we が 0 の と き の最後の出力 と 同じにな り ます。 we が 1 の場合は、 次に we<br />

が 1 になるまで dout が前の値を保持し ます。 図では、 dout は、 we が 1 に設定された 1 サイクル<br />

後に addr の 2 の値を反映し ています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 301<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ほかの 2 つのモード にする と、 出力はア ド レ ス ラ イ ンで指定し た ロ ケーシ ョ ンか ら 取得さ れる の<br />

で、 ロケーシ ョ ンの値が書き込まれます。 こ の場合、 出力は書き込み前の値 ([Read be<strong>for</strong>e write]<br />

モード) にな り ます。<br />

Virtex、Virtex-E、お よ び Spartan-II ファミ リでは、[Read after write] のみサポー ト されます。 Virtex-<br />

II、 Virtex-II Pro、 Virtex-4、 Spartan-3 では、 すべてのモードがサポー ト されます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Shared memory name] : Shared Memory ブロッ クの名前を付けます。 同じ名前のメモ リはす<br />

べて同じ物理的 メ モ リ を共有し ます。<br />

• [Depth] : メモリ ブ ロ ッ ク の ワー ド 数を指定し ます。 ワード サイズは、din データ ポー ト のビ ッ<br />

ト 幅か ら推論されます。<br />

• [Ownership and initialization] : メモリが [Locally owned and initialized] か [Owned and<br />

initialized elsewhere] かを指定します。 [Locally owned and initialized] の場合は、[Initial value<br />

vector] が設定できるようになります。 [Locally owned and initialized] の場合、ブ ロ ッ ク で メ モ<br />

リのインスタンスが作成され、 [Owned and initialized elsewhere] の場合、 ブロ ッ ク が既に作成<br />

されたメモリ インスタンスに接続されます。 この結果、 シミ ュレーショ ン中に 2 つの Shared<br />

302 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Shared Memory<br />

Memory ブロッ クが 2 つの異な る モデルで使用される場合、[Locally owned and initialized] の<br />

ブロ ッ ク を含むモデルが最初に開始される必要があ り ます。<br />

• [Initial value vector] : 初期 メ モ リ コ ンテン ツ を指定し ます。 初期値ベク タ エレ メン トの容量<br />

と精度は、 din を駆動するデータ サンプルの型か ら推論 さ れます。 ベクタ長が RAM よ りも大<br />

き い場合、 こ のベク タ の後に続 く エレ メ ン ト は削除さ れます。 RAM がベ ク タ よ り も長い場合、<br />

この RAM の後続ワード は 0 に設定されます。 初期値ベ ク タは、 RAM のデータ ポー ト din に<br />

指定された精度に従ってサチュ レー ト されるか、 丸められます。<br />

• [Access protection] : [Lockable] か [Unprotected] のいずれかを指定し ます。 保護な し の メ モ リ<br />

にする と 、 読み出し ま たは書き込み中に制限はあ り ませんが、 ロックされると、ブロックはメ<br />

モリにアクセスが許可 (grant) されたと きにのみ書き込めるよ うになり ます。 grant ポー ト から<br />

1 が出力されると、 メモリへのアクセスが許可され、 書き込みリ クエス トが送られます。<br />

• [Access mode] : メ モ リ をデザ イ ンでどの よ う に使用する か指定し ます。 [Read and write] をオ<br />

ンにする と、ブロ ッ クには din ポー ト と dout ポー ト が付き ます。 [Read only] をオンにする と、<br />

メ モ リ の読み出し ア ク セス用の dout ポー ト が付き、 [Write only] をオンにする と、 メモ リの書<br />

き込みアクセス用の din ポー ト が付き ます。<br />

• [Write mode] : メモリを [Read after write]、 [Read be<strong>for</strong>e write]、 または [No read on write] に<br />

指定し ます。 これらのモードは、デバイスによって使用できるものとできないものがあり ます。<br />

• [Memory access timeout (sec)] : メ モ リ がハー ド ウ ェ アで使用される場合に、リ ク エ ス ト に反応<br />

する までの最大待機時間を指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

関連項目<br />

このブロックでは、 ザイ リンクス LogiCORE Dual Port Block Memory コアが使用されます。<br />

詳細は、 Shared Memory ブ ロ ッ ク の使用方法 と 詳細は、 次の説明を参照し て く だ さ い。<br />

Multiple Subsystem <strong>Generator</strong><br />

共有レ ジ ス タ の協調シ ミ ュ レーシ ョ ン<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 303<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Shared Memory Read<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Shared Memory] および [Index] ライブラリにリストされて<br />

います。<br />

ザイ リ ンクスの Shared Memory Read ブロッ クは、 ザイ リ ンクスの共有メモリ オ<br />

ブジ ェ ク ト か らデータ を読み出すための高速イ ン ターフ ェ イ スです。 このブロッ<br />

クでは、 FIFO オブジェ ク ト と ロ ッ ク可能な共有メ モ リ オブジェ ク ト の両方がサ<br />

ポー ト されます。<br />

リ ク エ ス ト さ れたデータは、共有 メ モ リ か ら読み出 さ れ、Simulink のス カ ラ 型、ベ<br />

ク タ型、 マ ト リ ッ ク ス型の信号で出力ポー ト に読み込まれます。 ブ ロ ッ ク の下の括弧付き テキ ス ト<br />

は、 こ のブロ ッ ク インターフェイスと共有されるメモリを示します。 ブロッ クに表示される深さ と<br />

幅か ら、 共有 メ モ リ のサ イ ズがわか り ます。 こ れら の値は、 ブ ロ ッ ク が共有 メ モ リ オブジェ ク ト に<br />

接続さ る と 、 ラ ン タ イ ム中にア ッ プデー ト さ れます。<br />

Shared Memory Read ブ ロ ッ ク は、 シ ミ ュ レーシ ョ ン中に起動さ れ、 接続さ れた共有 メ モ リ オブ<br />

ジェク ト と共に複数のト ランザクショ ンを実行します。 ブ ロ ッ ク が起動される周波数は、 [Sample<br />

time] で設定し ます。 実行 さ れる ト ラ ンザ ク シ ョ ンは、 ブ ロ ッ ク が FIFO に接続されているか、 ロ ッ<br />

ク 可能な共有 メ モ リ オブジェ ク ト に接続されているかによって異な り ます。<br />

FIFO のトランザクション<br />

共有 FIFO オブジェ ク ト の ト ラ ンザクシ ョ ンは、シ ミ ュ レーシ ョ ン サイ クル中に次の順序で発生し<br />

ます。<br />

• データ待機 : Shared Memory Read ブロックは、[Output dimensions] で指定したワード数が共<br />

有 FIFO オブジ ェ ク ト で使用可能にな る のを待ち ます。 ワード数が 15 秒後も FIFO で使用可<br />

能にな ら ない場合は、 時間切れにな り 、 シ ミ ュ レーシ ョ ンは停止さ れます。<br />

• データ読み出し : 十分な ワー ド 数が使用可能にな る と 、 Shared Memory Read は共有 FIFO オ<br />

ブジ ェ ク ト か らデータ を読み出し ます。<br />

ロック可能なメモリのトランザクション<br />

ロ ッ ク可能な メ モ リ の ト ラ ンザクシ ョ ンは、 シ ミ ュ レーシ ョ ン サイクル中に次の順序で発生しま<br />

す。<br />

• ロックの獲得 : ブ ロ ッ ク が共有 メ モ リ の コ ンテン ツ を読み出す前に、 共有 メ モ リ オブジェ ク ト<br />

のロックを獲得する必要があり ます。 15 秒後も ロ ッ ク が獲得で き ない場合は、 時間切れにな<br />

り、 シミュレーションは停止されます。<br />

• データ読み出し : ロ ッ ク が獲得される と 、 Shared Memory Read ブロッ クは共有メモリ オブ<br />

ジ ェ ク ト か らデータ を読み出し ます。<br />

• ロックの解除 : Shared Memory Read ブロックは共有メモリ オブジ ェ ク ト か らデータ を読み出<br />

すと、 ロックを解除します。<br />

Shared Memory Read ブロ ッ ク は、 シ ミ ュ レーシ ョ ンでのみ使用され、 ネ ッ ト リ ス ト では無視され<br />

ます。 Shared Memory Read ブロ ッ クは、 特に高スループ ッ ト 要件のあ るハー ド ウ ェ ア協調シ ミ ュ<br />

レーシ ョ ン デザイ ンに使用されます。 詳細は、 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を使用し た リ ア<br />

ルタ イ ム信号処理を参照して く ださい。<br />

304 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Shared Memory Read<br />

ブロック パラ メータ<br />

関連項目<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Shared memory name] : データ が読み出されるザ イ リ ン ク スの共有 メ モ リ オブジェ ク ト の名<br />

前を指定で き ます。 こ の共有 メ モ リ は、 ほかで作成 さ れ、 初期化 さ れる共有 FIFO かロック可<br />

能メモリにする必要があります (Shared Memory Read ブ ロ ッ ク は、 指定し た共有 メ モ リ オブ<br />

ジェク ト を作成しません)。<br />

• [Type] : ザイ リンクス共有 FIFO か ロ ッ ク 可能 メ モ リ オブジ ェ ク ト のど ち ら か ら読み出すか指<br />

定します。<br />

• [Sample time] : 共有 メ モ リ か ら読み出し を実行する頻度を指定し ます。<br />

[Output Type] タブ<br />

[Output Type] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Data type] : Shared Memory Read ブロッ クで共有メモリのデータ ワードがどのよ うに解釈さ<br />

れるかを指定し ます。 生成さ れるデータ型には、 Simulink のスカラ型、 ベクタ型、 マト リ ッ ク<br />

ス型信号を選択できます。 サポー ト されるデータ型は、 int8、 uint8、 int16、 uint16、 int32、<br />

uint32 です。 選択し たデータ型の幅は、 共有 メ モ リ オブジ ェ ク ト に格納さ れたデータ の幅 と 同<br />

じ にする必要があ り ます。 たとえば、 共有メモリのデータ幅が 16 ビッ トの場合は、 int16 また<br />

は uint16 を選択できます。<br />

• [Output dimensions] : 使用可能な次元のサ イ ズを入力する こ と で、 共有 メ モ リ のデータ イ メー<br />

ジがどの よ う に解釈 さ れる かを指定し ます。 ベク タ型出力の場合、 一次元 (N) を、 マ ト リック<br />

ス型出力の場合、 2次元配列 [M, N] を指定する必要があ り ます。 M は行数、 N は列数を表し ま<br />

す。 出力エレ メ ン ト の合計 (N、または M*N) は、共有 メ モ リ の深さ を超えないよ う に し て く だ<br />

さい。<br />

• [Use frame-based output] : Shared Memory Read ブロ ッ ク から の出力信号を フ レ ーム ベース の信<br />

号にする か、 サン プル ベース の信号にする かを指定し ま す。 フレーム ベース の信号と は、連続し<br />

たサンプル ベース の信号がバッ フ ァ でま と めら れたも のです。 たと えば、フレーム ベース の出力<br />

は Simulink の Unbuffer ブロ ッ ク を 駆動する ために使用さ れま す。 フレーム ベース の出力を イ<br />

ネーブルにする には、 [Output dimensions] で出力を 2次元に指定する 必要があり ま す。<br />

Shared Memory Write<br />

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

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 305<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Shared Memory Write<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Shared Memory] および [Index] ライブラリにリストされて<br />

います。<br />

ザイ リ ンクスの Shared Memory Read ブロッ クは、 ザイ リンクスの共有メモリ オ<br />

ブジ ェ ク ト にデータ を書き込むための高速イ ン ターフ ェ イ ス です。 このブロック<br />

では、 FIFO オブジェ ク ト と ロ ッ ク可能な共有メ モ リ オブジェ ク ト の両方がサ<br />

ポー ト されます。<br />

Shared Memory Write ブ ロ ッ ク の入力ポー ト は、 共有 メ モ リ オブジェ ク ト に書き<br />

込むデータ を含む Simulink のス カ ラ型、 ベ ク タ型、 マ ト リ ッ ク ス型の信号で駆動し ます。 ブロッ ク<br />

の下の括弧付き テキス ト は、 このブロ ッ ク インターフェイスと共有されるメモリを示します。 ブ<br />

ロ ッ ク に表示される深さ と 幅か ら、 共有 メ モ リ のサ イ ズがわか り ます。 こ れら の値は、 ブ ロ ッ ク が<br />

共有 メ モ リ オブジェ ク ト に接続さ る と、ランタ イム中にア ップデー ト されます。 入力データの幅は、<br />

共有 メ モ リ の幅 と 同じ にする必要があ り ます。 入力のエレ メ ン ト の合計は、 共有 メ モ リ の深さ を超<br />

えないよ うにしてください。<br />

Shared Memory Write ブ ロ ッ ク は、 シ ミ ュ レーシ ョ ン中に起動 さ れ、 接続 さ れた共有 メ モ リ オブ<br />

ジェク ト と共に複数のト ランザクションを実行します。 ブ ロ ッ ク が起動 さ れる周波数は、 サンプル<br />

周期で決ま り ます。 サンプル周期は、 入力ポー ト を駆動する信号か ら取得さ れます。 実行 さ れる ト<br />

ランザクションは、ブロックが FIFO に接続さ れてい る か、 ロ ッ ク可能な共有 メ モ リ オブジェ ク ト<br />

に接続されているかによ って異な り ます。<br />

FIFO のトランザクション<br />

共有 FIFO オブジェ ク ト の ト ラ ンザクシ ョ ンは、シ ミ ュ レーシ ョ ン サイ クル中に次の順序で発生し<br />

ます。<br />

• 使用可能ス ト レージの待機 : Shared Memory Write ブロッ クは、 共有 FIFO オブジェ ク ト のス<br />

ト レージが使用可能になるのを待ちます。 ス ト レージの容量は、 データ入力ポー ト を駆動する<br />

信号のサ イ ズ (ワード数) によって異なり ます。 た と えば入力信号が 256 ワード幅の場合、<br />

Shared Memory Write ブロックは 256 ワードが共有 FIFO で使用できるようになるまで待ち<br />

ます。 ス トレージが 15 秒後も使用可能にな ら ない場合は、時間切れにな り 、 シ ミ ュ レーシ ョ ン<br />

は停止されます。<br />

• データ書き込み : 十分な ワー ド 数が使用可能にな る と 、 Shared Memory Write は共有 FIFO オ<br />

ブジ ェ ク ト にデータ を書き込みます。<br />

ロック可能なメモリのトランザクション<br />

• ロックの獲得 : ブ ロ ッ ク が共有 メ モ リ の コ ンテン ツ を書き込む前に、 共有 メ モ リ オブジェ ク ト<br />

のロックを獲得する必要があり ます。 15 秒後も ロ ッ ク が獲得で き ない場合は、 時間切れにな<br />

り、 シミュレーションは停止されます。<br />

• データ書き込み : ロ ッ ク が獲得される と 、 Shared Memory Write ブロックは共有メモリ オブ<br />

ジェク トにデータを書き込みます。<br />

• ロックの解除 : Shared Memory Write ブロックは共有メモリ オブジェ ク ト にデータを書き込<br />

むと、 ロックを解除します。<br />

Shared Memory Write ブロ ッ ク は、 シ ミ ュ レーシ ョ ンでのみ使用され、 ネ ッ ト リ ス ト では無視され<br />

ます。 Shared Memory Write ブロ ッ クは、 特に高スループ ッ ト 要件のあ るハード ウ ェ ア協調シ ミ ュ<br />

レーシ ョ ン デザイ ンに使用されます。 詳細は、 ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を使用し た リ ア<br />

ルタ イ ム信号処理 を参照して く ださい。<br />

306 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Shared Memory Write<br />

ブロック パラ メータ<br />

関連項目<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

Shared Memory Write ブ ロ ッ ク 特有のパ ラ メ ータは、 次の と お り です。<br />

[Shared memory name] : データ が書き込まれる共有 メ モ リ オブジ ェ ク ト の名前を指定で き ます。 こ<br />

の メ モ リ は、 ほかで作成 さ れ、 初期化 さ れる ロ ッ ク可能 メ モ リ にする必要があ り ます (Shared<br />

Memory Write ブ ロ ッ ク は、 指定し た共有 メ モ リ オブジェ ク ト を作成し ません)。<br />

[Type] : ザイ リ ンク ス 共有 FIFO かロ ッ ク 可能メ モリ オブジェ ク ト のど ちら に書き 込むか指定し ま す。<br />

Shared Memory Read<br />

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

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 307<br />

リリース 9.2.00 2007 年 8 月<br />

R


Shift<br />

R<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Control Logic]、 [Data Types]、 [Math]、 [Index] ライブラリ<br />

にリストされています。<br />

ブロック パラ メータ<br />

ザイ リ ンクスの Shift ブ ロ ッ ク は、 入力信号を左ま たは右にシフ ト し ます。 出力には、<br />

入力 と 同じ固定小数点の コ ンテナが含まれます。<br />

Shift ブ ロ ッ ク 特有のパ ラ メ ータは、 次の と お り です。<br />

• [Shift direction] : 左か右かを指定し ます。 [Right] をオンにする と 、 入力が符号拡張され、 コ ン<br />

テナ内の LSB 方向に移動さ れます。 シフ ト されたビ ッ ト が コ ンテナか ら はみ出す場合は、それ<br />

が削除されます。 [Left] をオンにする と、 LSB に 0 がパディングされてコンテナ内の MSB 方<br />

向に移動されます。 シフ ト さ れたビ ッ ト が コ ンテナか ら はみ出す場合は、それが削除されます。<br />

• [Number of bits] : シ フ ト する ビ ッ ト 数を指定し ます。 負の値にする と、[Shift direction] で選択<br />

し た方向が逆にな り ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 ザイ リンクス LogiCORE は使用 されません。<br />

308 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Simulation Multiplexer<br />

Simulation Multiplexer<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Index] ライブラリにのみリストされています。<br />

Simulation Multiplexer ブロッ クは、 <strong>System</strong> <strong>Generator</strong> で廃止されています。<br />

このブロッ クは、 今後ザイ リ ンクス ブ ロ ッ ク セ ッ ト か ら削除 さ れる予定です。 このブ<br />

ロックの機能は、Simulink のコンフィギャブル サブシ ス テムか ら使用で き ます。 コン<br />

フィギャブル サブシステムには、 Simulation Multiplexer ブ ロ ッ ク を使用する よ り も<br />

多くの利点があります。<br />

Simulation Multiplexer は、 デザ イ ンの 2 つの部分をパ ラ レルに動作さ せる こ と がで き る <strong>System</strong><br />

<strong>Generator</strong> ブ ロ ッ ク で、 最初の部分か ら のシ ミ ュ レーシ ョ ン結果 と 2 つ目の部分か ら のハー ド ウ ェ<br />

アが使用されます。<br />

これは、 たとえば、 サブシステムが Simulink ブロッ クを使用して通常どおりに定義されたのに、<br />

ハー ド ウ ェ アではサブシ ス テム を イ ンプ リ メ ン ト するのにブ ラ ッ ク ボ ッ ク ス HDL が使用される場<br />

合などに便利です。 次の図は、 その例です。<br />

シ ミ ュ レーシ ョ ンにサブシステム、 ハー ド ウ ェ アにブ ラ ッ ク ボ ッ ク ス を使用す<br />

る場合<br />

Simulation Multiplexer ブロックには、 入力ポートが 2 つ含まれます。 ブロッ クのパラ メータ ダイ<br />

アログ ボックスでは、 1 つは For simulation で、 も う 1 つが For generation になっています。 For<br />

simulation ポー ト を駆動するデザ イ ン部分は、 シ ミ ュ レーシ ョ ン モデルと して使用され、 For<br />

generation ポー ト を駆動するデザ イ ン部分は、 ハー ド ウ ェ アを生成する ために使用さ れます。 同じ<br />

ポー ト を両方の目的に使用する こ と もでき ます。 こ の場合、 組み合わせポー ト For simulation/For<br />

generation で駆動されるデザイ ン部分がシ ミ ュ レーシ ョ ン と ハー ド ウ ェ ア生成の両方に使用され、<br />

残 り の部分は無視さ れます。 また、 Simulation Multiplexer ブロッ クを含むデザインからのシミ ュ<br />

レーシ ョ ン結果には、 ビ ッ ト 精度およびサ イ ク ル精度は必要あ り ません。<br />

Simulation Multiplexer は、 シミ ュ レ ーショ ン と ハード ウ ェ アで使用する も のが違う と き に便利なブ<br />

ロックです。 たと えば、 FPGA ビ ッ ト ス ト リ ームを 含むハード ウ ェ ア協調シミ ュ レ ーショ ン ト ーク<br />

ンは、 シミ ュ レ ーショ ン でき ま すが、 ハード ウ ェ アには変換でき ま せん。 ビ ッ ト ス ト リ ームを生成す<br />

るために使用した HDL が使用でき る 場合は、 ブラ ッ ク ボッ ク ス にその HDL が含まれま す。<br />

Simulation Multiplexer の For simulation ポートをトークンで駆動し、For generation ポート をブラ ッ<br />

ク ボッ ク ス で駆動する と 、 デザイ ン のシミ ュ レ ーショ ン と ハード ウ ェ アの生成の両方ができ る よ う<br />

になり ます。 また、 Simulation Multiplexer ブロ ッ ク は、 異なる タ イ プの HDL を 含むブラ ッ ク ボッ<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 309<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ク ス 同士を 切り 替える ためにも 使用し ま す。 ビヘイビア レベルの HDL をシミ ュレーショ ンに使用<br />

する こ と も でき れば、 RTL レベルの HDL をインプリ メ ンテーショ ンに使用すること もできます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックのパラメータを次に示します。<br />

[For simulation, pass through data from input port] : 1 か 2 のどちらの入力ポート をシ ミ ュレーシ ョ<br />

ンで使用する か指定し ます。<br />

[For generation, pass through data from input port] : 1 か 2 のど ち ら の入力ポー ト を生成で使用する<br />

か指定し ます。<br />

310 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


SineCosine<br />

SineCosine<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Math] および [Index] ライブラリにリストされています。<br />

ザイ リ ンクスの SineCosine ブロックでは sin(x) と cos(x) のどちらか、 または両方<br />

が計算され、 <strong>リファレンス</strong> サイン波を ROM に格納し ます。 ROM の深さは、 こ の<br />

ブロ ッ クの入力ポー ト の幅で定義されます。<br />

N ビ ッ ト の入力ア ド レ スは、 均等間隔のサンプル 1 周期 (2N) を含む論理 ROM に<br />

格納 さ れます (実際には、 イ ンプ リ メ ンテーシ ョ ンでは 1 周期の小数点以下部分の<br />

みが格納されるので、 メ モ リ 容量は削減されます)。 入力信号は、 符号な し の整数にする必要があ り<br />

ます。<br />

出力ポー ト 1 つの場合は、 パラ メ ータ設定によ って、 サイ ンまたはコサイ ン (またはその負の値) の<br />

いずれかが出力され、 出力ポー ト 2 つの場合は、 サ イ ン と コ サ イ ンの両方 (またはその負の値) が出<br />

力されます。 メモリ内をステップすると、 サンプリングされたサイン波がブロックの出力ポートに<br />

出力されます。 こ の場合の出力周波数は、 ア ド レ スの増加に よ っ て決ま り ます。<br />

非対称出力を選択する と 、 出力は [-1, 1/(2 w -1)] の区間でサンプ リ ング されます。 この場合、 w は出<br />

力幅を表し ています。 対称出力を選択する と 、 出力は [-1, 1] でサンプ リ ングされます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Function] : 出力をサインにするかコサインにするか、 その両方にするか指定します。<br />

• [Negative sine] : オンにする と 、 サ イ ン出力がネゲー ト さ れます。<br />

• [Negative cosine] : オンにする と、 コサイン出力がネゲート されます。<br />

• [Output width] : 出力のビ ッ ト 数を指定し ます。 指定で き る のは 4 ~ 32 です。 出力は、 整数符<br />

号が 1 ビッ ト付いた 2 の補数値で格納されます。 こ の結果、値が半開区間 [-1, 1] のテーブルに<br />

格納されます。<br />

• [Symmetric output] : オンにする と 、 出力が対称にな り ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 常にザイ リンクス LogiCORE Sine/Cosine Look-Up Table が使用されます。 入<br />

力幅 と 出力幅に よ って、 ROM が全波長を格納する か 1/4 波長を格納する かが決ま り ます。 分散 メ<br />

モ リ を使用する と 、 ROM は 64 ビ ッ ト 以下の深さ のテーブルでは全波長を格納し ます。 これは、 1<br />

出力ビ ッ ト で 1 CLB に相当し ます。 64 ビッ トを超える場合は、1/4 の波長が格納され、 波長の残 り<br />

を生成する ために ロ ジ ッ ク が追加 さ れます。 大きなテーブルに 1/4 の波長のみを格納する と 、 必要<br />

なエ リ アが減り ます。 ブロック メモリを使用すると、 テーブルの深さおよび幅がすべて 1 つのブ<br />

ロック メ モ リ に イ ンプ リ メ ン ト で き る場合、 その深さや幅に関係な く 全波長が格納されます。 これ<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 311<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

以外の場合、 値は 1/4 波長 と し て格納さ れます。 分散 ROM インプリ メンテーションのレイテンシ<br />

は、 入力幅、 パイ プ ラ イ ン、 選択し た レ イ テンシに よ っ て決ま り ます。<br />

入力幅<br />

ブロック ROM インプリ メンテーションの最小パイプライン数は 1 なので、最小レイテンシは 1 に<br />

なります。 ブロック ROM の最大レ イ テンシ も 1 ですが、 次の表の例外は除き ます。<br />

ザイリンクス LogiCORE<br />

分散 ROM を使用した場合<br />

のレ ンテンシの範囲<br />

3-6 1-2<br />

7-8 1-4<br />

9-10 1-5<br />

入力幅 出力幅<br />

ブロック ROM を使用した<br />

場合のレ イ テ ンシ<br />

10 よ り大きい 16 よ り大きい 2<br />

10 4 よ り大きい 2<br />

9 よ り大きい 8 よ り大きい 2<br />

このブロックでは、 次のザイ リンクス LogiCORE SineCosine コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

312 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

SineCosine Sine Cosine V5.0 • • • • •<br />

4 5


Single Port RAM<br />

Single Port RAM<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Control Logic]、 [Memory]、 [Index] ライブラリにリストさ<br />

れています。<br />

ブロック インターフェイス<br />

ザイ リンクスの Single Port RAM ブ ロ ッ ク は、 データ入力ポー ト と データ出力<br />

ポー ト が 1 つずつ付いた ラ ンダム アクセス メモリ (RAM) をインプリ メント しま<br />

す。<br />

このブロックには、 出力ポートが 1 つ と ア ド レ ス用、 入力データ用、 書き込みイ ネーブル (WE) 用<br />

の入力ポー ト が 3 つ含まれます。 値はワー ド で格納 さ れ、 すべてのワー ド が同じ演算タ イ プ、 幅、 2<br />

進小数点にな り ます。<br />

Single Port RAM ブロックは、ブロッ ク メモリか分散メモリ リソースのいずれかを使用して FPGA<br />

にインプリ メン トできます。 データ ワードはそれぞれ 1 つのアドレスに関連付けられ、アドレスは<br />

0 ~ d-1 の範囲の符号な し の整数にする必要があ り ます。d は、RAM の深さ (RAM のワード数) を<br />

表します。 メ モ リ の最後を読み飛ばす と 、 シ ミ ュ レーシ ョ ンでエ ラーにな り ますが、 ブ ロ ッ ク メモ<br />

リ を イ ンプ リ メ ン ト する場合は、 指定し たア ド レ ス範囲を超えていて も、 ハー ド ウ ェ アで読み出す<br />

ことができます。 初期の RAM コンテンツは、 ブロック パラ メータから指定できます。<br />

書き込みイ ネーブル信号はブール型にする必要があ り ます。データ入力の値は、こ の書き込みイ ネー<br />

ブル ポー ト が 1 の場合にア ド レ ス入力で指定し た メ モ リ ロケーションに書き込まれます。 書き込<br />

み中の出力は、 イ ンプ リ メ ン ト する メ モ リ に よ っ て異な り ます。<br />

出力ポー ト のビヘイ ビ アは、選択し た書き込みモー ド に よ って異な り ます。 WE ポー ト が 0 の場合、<br />

出力ポー ト はア ド レ ス ラ イ ンで指定し た ロ ケーシ ョ ンの値にな り ます。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックのパラメータを次に示します。<br />

• [Depth] : メ モ リ に格納で き る ワー ド 数を指定し ます。 正の値しか指定で き ません。<br />

• [Initial value vector] : メ モ リ の初期コ ンテンツ を指定し ます。 ベクタ長がメモリの深さよ り も<br />

大き い場合、 深 さ よ り も大きい イ ンデ ッ ク ス が付いた値が無視さ れます。 深さがベクタ長よ り<br />

も大きい場合は、ベクタ長よ り も大きい値のアドレスのメモリ ロケーションが 0 に初期化さ れ<br />

ます。 初期値は、 データ ポー ト で指定さ れた精度に従って、 必要であればサチュ レー ト さ れ、<br />

丸められます。<br />

• [Write Mode] : WE がアサート されたと きのメモ リ ビヘイ ビ アを指定し ます。 サポー ト される<br />

モード は [Read be<strong>for</strong>e write]、[Read after write]、[No read on write] です。 [Read be<strong>for</strong>e write]<br />

にする と 、 出力値には書き込み前の メ モ リ のス テー ト が反映さ れます。 [Read after write] にす<br />

ると、出力値には書き込み後のメモリのステートが反映されます。 [No read on write] にする<br />

と 、 出力値は、 ア ド レ スや メ モ リ のステー ト が変わって も同じ値のま まにな り ます。 これらの<br />

モード は、デバイ スによ って使用でき る もの と できないものがあ り ます。 詳細は、こ のセ ク シ ョ<br />

ンの 「書き込みモー ド 」 および 「ハー ド ウ ェ アの注意点」 を参照し て く だ さ い。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 313<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

• [Memory Type] : ブロック RAM か分散 RAM を選択します。<br />

• [Provide reset port <strong>for</strong> output register] : ブロック RAM の出力レ ジ ス タ を制御する リ セ ッ ト<br />

ポー ト が使用さ れます。 メモリ コ ンテンツは こ のポー ト では初期値に リ セ ッ ト さ れません。 リ<br />

セッ ト ポー ト は、 ブロ ッ ク RAM のレイテンシが 1 に設定 さ れてい る場合にのみ使用で き ま<br />

す。<br />

• [Initial value <strong>for</strong> output register] : 出力レ ジ ス タ の初期値を指定し ます。 初期値は、 必要に応じ<br />

て、 RAM のデータ ポー ト B に指定された精度に従ってサチュ レー ト され、 丸められます。 こ<br />

の初期値を設定する オプシ ョ ンは、 Virtex-II、 Virtex-II Pro、 Spartan-3、 Spartan-3A <strong>DSP</strong>、<br />

Virtex-4、 Virtex-5 デバイ スでのみ使用で き ます。<br />

こ のブロ ッ ク で使用されるその他のパラ メ ータは、 こ の章の最初に説明されています。<br />

314 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Single Port RAM<br />

書き込みモード<br />

書き込み中 (WE がアサート されている間)、 データ入力ポー ト のデータはポー ト のア ド レ ス入力で<br />

選択し た メ モ リ ロケーションに格納されます。 書き込み中のデータ出力ポー ト A のビヘイビアは<br />

次のいずれかに設定でき ます。<br />

• Read after write<br />

• Read be<strong>for</strong>e write<br />

• No read On write<br />

次の図では、 こ れ ら の書き込みモー ド の詳細を示し ています。 こ の図では、 メ モ リ の初期値は 5 に、<br />

アドレス ビットは 4 に指定されています。 [No read on write] モー ド を使用し た場合、 出力はア ド<br />

レス ラ イ ンの影響を受けず、 出力は WE が 0 の と き の最後の出力 と 同じ にな り ます。 ほかの 2 つ<br />

のモー ド にする と、 出力はア ド レ ス ラインで指定したロケーションから取得されるので、 ロケー<br />

ションの値が書き込まれます。 つま り 、 出力は書き込み前の値 ([Read be<strong>for</strong>e write] モード) か書き<br />

込み後の新し い値 ([Read after write] モード) のどちらかにな り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 315<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Virtex、 Virtex-E、 および Spartan-II FPGA ファミ リでは、[Read after write] のみサポー ト されま<br />

す。 Virtex-II、 Virtex-II Pro、 Spartan-3、 Spartan-3A <strong>DSP</strong>、 Virtex-4、 Virtex-5 では、 すべてのモー<br />

ドがサポート されます。<br />

ハー ド ウ ェ アの注意点<br />

LogiCORE の分散 メ モ リ でサポー ト されるのは、 [Read be<strong>for</strong>e write] モー ド のみです。 Single Port<br />

RAM ブロッ クでは、指定したレイテンシが 0 よ り 大き い場合、書き込みモー ド を [Read after write]<br />

に設定し た分散 メ モ リ も サポー ト さ れます。 ただ し、 分散 メ モ リ で [Read after write] モード にする<br />

には、 余分なハード ウ ェア リソース (書き込み中にデータをラ ッチするために、 分散メモリの出力<br />

に MUX を付けるなど) が必要にな り ます。<br />

Virtex-4、 Virtex-5、 Spartan3A <strong>DSP</strong> デバイ スにシングル ポー ト ROM ブロックをインプリ メン ト<br />

する場合は、 次の設定を し てお く と 、 最速の タ イ ミ ング パフ ォーマン ス を達成で き ます。<br />

• [Provide reset port <strong>for</strong> output register] をオフにします。<br />

• [Depth] には、 16,384 未満の値を指定し ます。<br />

• [Latency] は 2 またはそれ以上の値に設定し ます。<br />

ザイリンクス LogiCORE<br />

このブロックでは、常にザイ リンクス LogiCORE の Single Port Block Memory または Distributed<br />

Memory が使用されます。<br />

ブロック メ モ リ の場合、 ア ド レ ス幅は ceil(log2(d)) と 同じにする必要があ り ます。 d は、 メ モ リ の<br />

深さを示しています。 このブロック メモリの最大のデータ ワー ド 幅は、 指定し た深さ にな り 、 最大<br />

の深さは、 ターゲ ッ ト にし たデバイ ス ファミ リによって異なります。 次の表は、 ブロ ッ ク メモリの<br />

深さ別に、 最大データ ワード幅をそれぞれ示しています。<br />

316 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Single Port RAM<br />

深さ別の最大デー タ 幅 (Virtex/Virtex-E/Spartan-3)<br />

深さ 幅<br />

2 ~ 2048 256<br />

2049 ~ 4096 192<br />

4097 ~ 8192 96<br />

8193 ~ 16K 48<br />

16K+1 ~ 32K 24<br />

32K+1 ~ 64K 12<br />

64K+1 ~ 128K 6<br />

128K+1 ~ 256K 3<br />

深さ別の最大デー タ 幅 (Virtex-II/Virtex-II Pro/Virtex-4/Virtex-5/Spartan-3A <strong>DSP</strong>)<br />

深さ 幅<br />

2 ~ 8192 256<br />

8193 ~ 16K 192<br />

16K+1 ~ 32K 96<br />

32K+1 ~ 64K 48<br />

64K+1 ~ 128K 24<br />

128K+1 ~ 256K 12<br />

256K+1 ~ 512K 6<br />

512K+1 ~<br />

1024K<br />

3<br />

分散 メ モ リ のパ ラ メ ータ を選択し た場合は、LogiCORE Distributed Memory が使用されます。 深さ<br />

は、 Virtex-II、 Virtex-II Pro、 Spartan-3、 Virtex-4、 Virtex-5、 Spartan-3A <strong>DSP</strong> デバイ スの場合は<br />

16 ~ 65536、その他の FPGA ファミ リの場合は 16 ~ 4096 の範囲で指定する必要があ り ます。 ワー<br />

ド幅は、 1 ~ 1024 の範囲で指定する必要があ り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 317<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

R<br />

このブロックでは、 次のザイ リンクス LogiCORE コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

Single Port RAM Single Port<br />

Block Memory<br />

Block Memory<br />

<strong>Generator</strong><br />

Distributed<br />

Memory<br />

Distributed<br />

Memory<br />

<strong>Generator</strong><br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

318 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V6.1 • • • • •<br />

4 5<br />

V2.4 • • •<br />

V7.1 • • • • •<br />

V3.3 • • •


Single-Step Simulation<br />

Single-Step Simulation<br />

ブロック パラ メータ<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

このブロックにはパラメータがありません。<br />

ザイ リ ンクスの Single-Step Simulation ブロックは、シングル ステップ<br />

モー ド の場合に ク ロ ッ ク サ イ ク ルご と にシ ミ ュ レーシ ョ ン を一時停止<br />

します。<br />

アイコンをダブルク リ ックすると、シングル ステップから連続モードに<br />

切り替わります。 シ ミ ュ レーシ ョ ンが一時停止し た場合は、 ツールバー<br />

の [Start] ボタン ( ) を ク ロ ッ クする と 再開さ れます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 319<br />

リリース 9.2.00 2007 年 8 月<br />

R


Slice<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Control Logic]、 [Data Types]、 [Index]<br />

ライブラリにリストされています。<br />

ザイ リ ンクスの Slice ブ ロ ッ ク を使用する と 、 入力データ か ら ビ ッ ト のシーケ ン ス を<br />

切り取り、 新しいデータ値を作成できます。 このデータ値がブロックから出力されま<br />

す。 出力データ型は、 2 進小数点が 0 の位置の符合な し にな り ます。<br />

こ のブ ロ ッ ク では、 ビ ッ ト のシーケ ン ス を指定する のにい く つかの手法が提供さ れて<br />

います。 パラ メ ータ化の際に入力のタ イプがわかっている場合は、 これらの手法を使用する こ と で<br />

機能的な利点はあ り ませんが、 入力データ の幅および 2 進小数点の位置が変化する よ う なデザ イ ン<br />

では、 これらの手法が有益にな り ます。 たとえば、入力の最上位ビットのみ、整数ビットのみ、ま<br />

たは小数点部分の上位 3 ビ ッ ト のみを抽出する よ う 設定で き ます。 次の図は、 入力の上位 16 ビッ<br />

トと下位 8 ビ ッ ト を除いてすべてを抽出する と こ ろ を示し ています。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Width of slice (number of bits)] : 抽出する ビ ッ ト 数を指定し ます。<br />

• [Boolean output] : シングル ビット ス ラ イ ス のデータ 型を ブール型にする かど う か指定し ま す。<br />

• [Specify range as] : [Two bit locations]、 [Upper bit location + width]、 [Lower bit location +<br />

width] のいずれかをオンにし ます。 スライスの両端のエンドポイントのビット ロケーション<br />

を指定する か、 片方のエン ド ポ イ ン ト + ビット数を使用して指定できます。<br />

• [Offset of top bit] : LSB、 MSB、 または 2 進小数点か ら その範囲最後のビ ッ ト までに使用する<br />

オフセ ッ ト を指定し ます。<br />

• [Offset of bottom bit] : LSB、 MSB、 または 2 進小数点か ら その範囲最後のビ ッ ト までに使用<br />

する オフセ ッ ト を指定し ます。<br />

• [Relative to] : ビッ ト スライスの位置を MSB (最上位ビ ッ ト )、 LSB (最下位ビ ッ ト )、 スライス<br />

の上部ま たは下部の 2 進小数点のいずれかが基準にな る よ う に指定し ます。<br />

このブロックで使用されるその他のパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの<br />

共通オプシ ョ ンで説明されています。<br />

320 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>System</strong> <strong>Generator</strong><br />

<strong>System</strong> <strong>Generator</strong><br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Basic Elements]、 [Tools]、 [Index] ライブラリにリストされ<br />

ています。<br />

<strong>System</strong> <strong>Generator</strong> ブ ロ ッ ク は、 シ ス テム制御およびシ ミ ュ レーシ ョ ン パラ メータを提<br />

供し、 コード ジ ェ ネ レータ を起動する ために使用 さ れます。 ザイ リ ンクス ブロッ ク<br />

セッ トからのエレメントを含む Simulink モデルには、 <strong>System</strong> <strong>Generator</strong> ブロッ クが<br />

最低 1 つは含まれます。 <strong>System</strong> <strong>Generator</strong> ブ ロ ッ ク をモデルに追加する と 、 コー ド の<br />

生成およびシ ミ ュ レーシ ョ ンの処理方法を指定で き る よ う にな り ます。<br />

<strong>System</strong> <strong>Generator</strong> ブロッ クの使用方法は、 <strong>System</strong> <strong>Generator</strong> ブロッ クを使用したコンパイルとシ<br />

ミュレーションを参照して く ださい。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Compilation] : コード ジェネレータが起動された と きに出力される コ ンパイル結果のタ イプ<br />

を指定します。 詳細は、 <strong>System</strong> <strong>Generator</strong> のコンパイル タイプを参照して く ださい。<br />

• [Part] : 使用する FPGA デバイ ス を指定し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 321<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

• [Target directory] : コ ンパ イル結果を保存するデ ィ レ ク ト リ を指定し ます。 <strong>System</strong> <strong>Generator</strong><br />

および FPGA インプリ メンテーション ツールでは多数のファイルが生成されるので、 個別の<br />

ディレク ト リ (Simulink モデル フ ァ イルが含まれるデ ィ レ ク ト リ と は別のデ ィ レ ク ト リ ) を作<br />

成する こ と をお勧め し ます。<br />

• [Synthesis tool] : デザイ ンの合成に使用する ツールを指定し ます。 Synplicity 社の Synplify<br />

Pro または Synplify、 およびザイリンクスの XST を選択でき ます。<br />

• [Hardware description language] : デザ イ ンの コ ンパ イルに使用する HDL 言語を指定し ます。<br />

[VHDL] または [Verilog] を選択できます。<br />

• [FPGA clock period (ns)] : ハー ド ウ ェ ア クロックの周期を ns で指定し ます。 値は整数であ る<br />

必要はあ り ません。 こ こ で指定し た周期は、制約フ ァ イルでグ ローバル PERIOD 制約 と し て設<br />

定され、ザイリ ンクス インプリ メンテーション ツールに渡されます。 複数サ イ ク ル パスは、こ<br />

の値の整数倍で制約されます。<br />

• [Clock pin location] : ハー ド ウ ェ ア クロックのピン ロケーションを指定します。 この情報は、<br />

制約フ ァ イ ルを介し てザ イ リ ン ク ス インプリ メンテーション ツールに渡されます。<br />

• [Create testbench] : HDL テ ス ト ベンチを作成する よ う 指定し ます。 HDL シミュレータでテス<br />

トベンチをシ ミ ュレーシ ョ ンし、 コンパイルされたデザインのシ ミ ュレーシ ョ ン結果を<br />

Simulink シ ミュレーション結果と比較します。 <strong>System</strong> <strong>Generator</strong> では、 デザイ ンを Simulink<br />

でシ ミ ュレーシ ョ ンし、Gateway ブ ロ ッ ク で検出 さ れる値を保存する こ と に よ り 、 テ ス ト ベク<br />

タを作成します。 テ ス ト ベンチの最上位 HDL ファイルの名前は、_testbench.vhd/.v<br />

となります。 はテ ス ト するデザ イ ン部分名にな り ます。<br />

• [Import as configurable subsystem] : コ ンパ イル結果を関連付け る ブロ ッ ク を作成し、ブ ロ ッ ク<br />

とこのブロックが作成された元のサブシステムを含むコンフィギャブル サブシステムを作成<br />

します。 詳細は、 コンフィギャブル サブシステム と <strong>System</strong> <strong>Generator</strong> を参照して く ださい。<br />

• [Provide clock enable clear pin] : 最上位レベルの ク ロ ッ ク ラッパに ce_clr ポー ト を付けるか<br />

どうか指定します。 ce_clr 信号は、 ク ロ ッ ク イネーブル生成ロジッ クを リセッ トするために使<br />

用されます。 クロック イネーブル生成ロジックをリセッ トできるよ うにすると、 ダイナミ ック<br />

な制御が可能にな り 、 データ パス サンプ リ ングの開始が指定で き ます。 詳細は、 自動生成さ れ<br />

たクロック イネーブル ロジックのリセッ ト を参照して く ださい。<br />

• [Simulink system period (sec)] Simulink のシ ス テム周期を秒単位で指定し ます。 Simulink の<br />

シス テム周期は、 モデルのサンプル周期の最大公約数にな り す。 サンプル周期は、 ブ ロ ッ ク の<br />

ダイアログ ボ ッ ク ス で設定する か、Simulink の伝搬規則に従って決め ら れる か、 こ のオプシ ョ<br />

ンを使用したブロックのハードウェア オーバーサンプ リ ング レー ト を基に算出されます。<br />

ハー ド ウ ェ ア オーバーサンプ リ ング レー ト を基に算出さ れた場合、 実際のサンプル時間は<br />

Simulink のブ ロ ッ ク の観測可能なシ ミ ュ レーシ ョ ン サンプル時間よ り も速く な り ます。 ハー<br />

ドウェアでは、オーバーサンプリング レー ト が 1 よ り大きいブロックは、入力をデータよりも<br />

速いレー ト で処理 さ れます。 た と えば、 オーバーサンプ リ ング レー ト が 8 の配列型乗算器は、<br />

Simulink ではその乗算器ブ ロ ッ ク の実際のサンプル時間の 1/8 のサンプル周期にな り ます。 こ<br />

のパラ メ ータは、 マス タ ブ ロ ッ ク でのみ変更で き ます。<br />

• [Block icon display] : ブ ロ ッ ク のア イ コ ンに表示する情報の種類を指定し ます。 ブロックのア<br />

イコンは、デザインがコンパイルされてから、選択された表示オプションでアップデートされ<br />

ます。 表示オプシ ョ ンは、 次か ら選択で き ます。<br />

322 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>System</strong> <strong>Generator</strong><br />

♦ [Default] : デフォルト 表示にな り ます。 ブロッ クのデフォルト アイコンは、xbsIndex ライ<br />

ブラ リから使用されます。<br />

♦ [Sample rates] : ブ ロ ッ ク のすべての入力ポー ト および出力ポー ト の標準化さ れたサンプ<br />

ル周期が表示されます。 たとえば、Simulink のシステム周期が 4 に設定される場合、 ブ<br />

ロック ポー ト に伝搬されるサンプル周期は 4 です。 こ の場合、 表示さ れる標準化さ れたサ<br />

ンプル周期は 1 にな り ます。ブロ ッ ク ポー ト に伝搬されるサンプル周期が 8 の場合は、表<br />

示は 2 にな り ます。 数値が大き いほど、 レー ト が遅い こ と を示し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 323<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

♦ [Pipeline stages] : ブロ ッ クの入力ポー ト からのレ イ テンシ情報が表示されます。 表示さ れ<br />

たパイプラ イン段数は、 FFT、 RS Encoder/Decoder、 Viterbi Decoder などの一部のハイ<br />

レベルなブ ロ ッ ク では正確でない こ と があ り ます。 こ の場合、 表示さ れるパイ プ ラ イ ン段<br />

数は、 ブ ロ ッ ク に入力か ら出力への組み合わせパス を含め る かど う かを決定する ために使<br />

用でき ます。 たとえば、次の図の Up Sample ブ ロ ッ ク は、 入力か ら出力に組み合わせパス<br />

が含まれるこ とを示しています。<br />

♦ [HDL port names] : ブロッ クのネッ ト リ ス ト エンティティに対応する HDL の入力ポー ト<br />

名 と 出力ポー ト 名を表示し ます。<br />

324 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


<strong>System</strong> <strong>Generator</strong><br />

♦ [Input data types] : ブ ロ ッ ク の入力ポー ト を駆動する信号のデータ型を表示し ます。<br />

♦ [Output data types] : ブロ ッ クの出力ポー ト のデータ型を表示し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 325<br />

リリース 9.2.00 2007 年 8 月<br />

R


Threshold<br />

R<br />

ブロック パラ メータ<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Math] および [Index] ライブラリにリストされています。<br />

ザイ リンクスの Threshold ブ ロ ッ ク では、 入力数の符号がテ ス ト さ れます。 入力数が<br />

負の場合、 ブ ロ ッ ク の出力は -1 にな り 、 それ以外の場合は出力は 1 にな り ます。 出<br />

力は 2 ビ ッ ト の長 さ の符号付き固定小数点整数です。 ブ ロ ッ ク には、 入力 と 出力が 1<br />

つずつ含まれます。<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックで使用されるパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの共通オプ<br />

ションで説明されています。<br />

ブロック パ ラ メ ータ では出力のデータ型は制御 されません。 これは、 出力が常に 2 ビッ ト長の符号<br />

付き固定小数点整数であ る か ら です。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 ザイ リンクス LogiCORE は使用 されません。<br />

326 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Time Division Demultiplexer<br />

Time Division Demultiplexer<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements] ライブラリと [Index] ライブラリにリスト<br />

されています。<br />

ブロック インターフェイス<br />

ザイ リ ンクスの Time Division Demultiplexer ブ ロ ッ ク は、 シ リ アル入力を<br />

それよ り 遅いレー ト の複数の出力に し ます。<br />

このブロックには、1 つのデータ入力ポー ト と 複数 (1 ~ 32) のユーザーが設定で き るデータ出力が<br />

含まれます。 データ出力ポー ト の演算タ イ プ と 精度は入力データ ポー ト と同じにな り ます。 また、<br />

このブロックには、 入力有効ポート (vin) と出力有効ポート (vout) もオプションで含まれます。 ど<br />

ち らの有効ポー ト もブール型です。 ブロ ッ ク のイ ンプ リ メ ンテーシ ョ ンは、 単一チャ ネルか複数<br />

チ ャ ネルのいずれかにで き ます。<br />

単一チ ャ ネルのイ ン プ リ メ ンテーシ ョ ン<br />

単一チャ ネルのイ ンプリ メ ンテーショ ン の場合、 Time Division Demultiplexer ブロ ッ ク にはデータ 入<br />

力ポート と データ 出力ポート がそれぞれ 1 つ含ま れま す。 データ 有効入力ポート と データ 有効出力<br />

ポート も オプショ ン で使用でき ま す。 入力データ フレームの長さは、 フレーム サンプリ ング パタ ー<br />

ンの長さ によ っ て決ま り ま す。 1 の位置が、ダウ ンサンプリ ングさ れる 入力値と 1 の数 (ダウンサンプ<br />

リング係数) を示します。 単一チャ ネル モード の場合、 入力し たフ レ ーム サンプリ ング パタ ーンに基<br />

づいて、 すべての入力データ フ レ ームの最初と 2 つ目の入力値がレ ート 2 で出力さ れま す。<br />

このインプリ メンテーションでは、入力フレームのサイズがデータ フレームからサンプリングされ<br />

る値の数で除算されます。 入力データ フ レームの値は、 すべてオプシ ョ ンの有効ポー ト で使用可能<br />

にする こ と もでき ます。<br />

複数チ ャ ネルのイ ン プ リ メ ンテーシ ョ ン<br />

複数チ ャ ネルの イ ンプ リ メ ンテーシ ョ ンの場合、 Time Division Demultiplexer ブロッ クには、 1 つ<br />

のデータ入力ポー ト と 複数の出力ポー ト が含まれます。 出力ポー ト の数は、 フ レーム サンプ リ ング<br />

パターンの 1 の数と 同じにな り ます。 データ有効入力ポー ト と データ有効出力ポー ト も オプシ ョ ン<br />

で使用でき ます。 入力データ フレームの長さは、 フレーム サンプ リ ング パターンの長さによって<br />

決ま り ます。 1 の位置が、 入力値がダ ウ ンサンプ リ ング さ れ、 対応するデータ チャネルに出力され<br />

ることを示します。 複数チャ ネル モー ド の場合、 入力し たフ レーム サンプ リ ング パターンに基づ<br />

いて、すべての入力データ フレームの最初と 2 つ目の入力値がレー ト 4 で対応する出力チ ャ ネルに<br />

転送されます。<br />

複数チ ャ ネルの イ ンプ リ メ ンテーシ ョ ンの場合、 ダ ウ ンサンプ リ ング係数は常に入力フ レームのサ<br />

イズと同じになります。 入力データ フ レームの値は、 すべてオプシ ョ ンの有効ポー ト で使用可能に<br />

するこ と もできます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 327<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックのパラメータを次に示します。<br />

• [Frame sampling pattern] : シ リ アル入力データ フレームのサイズを指定します。 フレームの<br />

サンプ リ ング パターンは 1 と 0 のみを含む MATLAB ベ ク タ にする必要があ り ます。<br />

• [Implementation] : デマルチプレ クサのビヘイ ビアを単一チャネル モード にするか複数チャネ<br />

ル モー ド にするか指定し ます。 各モー ド のビヘイ ビ アは、 前述の説明を参照し て く だ さ い。<br />

• [Provide valid ports] : オンにする と 、 オプシ ョ ンの入力有効ポー ト (vin) と 出力有効ポー ト<br />

(vout) を含める こ とができます。 vin ポー ト では、すべての入力データ値を シ リ アル入力データ<br />

フ レームの一部 と し て有効にで き ます。 vout ポー ト は、出力ポー ト が有効か無効かを示し ます。<br />

このブロックで使用されるパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの共通オプ<br />

ションで説明されています。<br />

328 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Time Division Multiplexer<br />

Time Division Multiplexer<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements] ライブラリと [Index] ライブラリにリスト<br />

されています。<br />

ブロック インターフェイス<br />

ザイ リ ンクスの Time Division Multiplexer ブロックは、入力ポートの値を 1<br />

つの高速レー ト の出力ス ト リ ームに多重化し ます。<br />

このブロックには、 32 個の入力ポー ト と 1 つの出力ポー ト があ り ます。 入力ポー ト の演算タ イ プ、<br />

精度、 レー ト はすべて同じ であ る必要があ り ます。 出力ポー ト の演算タ イ プ と 精度は入力ポー ト と<br />

同じになり ます。 出力レー ト は nr にな り ます (n は入力ポー ト 数、 r は共通レー ト )。 また、 このブ<br />

ロ ッ ク には、入力 と 出力がそれぞれ有効か無効かを示す vin ポー ト と vout ポー ト がオプシ ョ ンで含<br />

まれます。 ど ち ら の有効ポー ト も ブール型です。<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Number of inputs] : 入力のビ ッ ト 数 (2 ~ 32) を指定し ます。<br />

• [Provide valid port] : オンにする と 、 オプシ ョ ンの入力有効ポー ト (vin) と 出力有効ポー ト<br />

(vout) を含める こ とができます。 vin ポー ト は入力の値が無効な こ と を示し、 vout ポー ト は出<br />

力フ レームが無効な こ と を示し ます。<br />

このブロックで使用されるパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの共通オプ<br />

ションで説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 329<br />

リリース 9.2.00 2007 年 8 月<br />

R


To FIFO<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Index] ライブラリにリストされています。<br />

ザイ リンクス To FIFO ブロッ クは、 First-In First-Out (FIFO) のメ<br />

モリ キ ューの前半分を イ ンプ リ メ ン ト し ます。<br />

書き込みイネーブル (we) 入力が 1 になる と、 このモジュールの<br />

データ ポー ト の値が次の使用可能な空の メ モ リ ロケーションに書<br />

き込まれます。 FIFO がフルの場合は、 full 出力ポー ト がアサー ト<br />

されます。 出力ポー ト percent_full には、 フルの FIFO のパーセン ト がユーザー指定の精度で表示<br />

されます。<br />

To FIFO は、FIFO <strong>Generator</strong> v2.1 コアを使用してハードウェアにインプリ メント されます。 <strong>System</strong><br />

<strong>Generator</strong> のハード ウ ェア協調シ ミ ュ レーシ ョ ン インターフェイスでは、To FIFO ブロックを<br />

FPGA ハー ド ウ ェ アに コ ンパイ ルし、 協調シ ミ ュ レーシ ョ ンで き ます。 共有 FIFO を <strong>System</strong><br />

<strong>Generator</strong> 協調シ ミ ュ レーシ ョ ン ハー ド ウ ェ アで使用する と 、 ホ ス ト PC と FPGA 間でデータ を高<br />

速に転送で き、 リ アルタ イ ム ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン機能が強化されます。<br />

9.2 リ リ ース から は、 同じ 名前の From FIFO ブロ ッ ク と To FIFO ブロックがペアになり、ネット リ<br />

スト で 1 つの BRAM ベース の FIFO ブロ ッ ク になっています。 From FIFO または To FIFO ブロ ッ<br />

ク が別のブロ ッ ク と ペアになら ない場合は、 その入力ポート と 出力ポート が最上位レ ベルの <strong>System</strong><br />

<strong>Generator</strong> デザイ ン に含ま れま す。 ペアになっ たブロ ッ ク はデザイ ン のど の階層にでも 配置でき ま す<br />

が、 同じ 名前の From FIFIO または To FIFO ブロ ッ ク が複数ある 場合は、 エラ ーになり ま す。<br />

以前のバージ ョ ン と の互換性を保持する には、MATLAB グローバル変数 xlSgSharedMemoryStitch<br />

を off に設定し て く ださい。 これには、 MATLAB コマンド ラインに次のように入力します。<br />

ブロック パラ メータ<br />

[Basic] タブ<br />

global xlSgSharedMemoryStitch;<br />

xlSgSharedMemoryStitch = 'off';<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Shared memory name] : 共有 FIFO の名前を付けます。 同じ名前の FIFO はすべて同じ物理的<br />

FIFO を共有し ます。<br />

• [Ownership] : メモリが [Locally owned] か [Owned elsewhere] かを指定し ます。 [Locally<br />

owned] の場合、 ブ ロ ッ ク で FIFO の イ ン ス タ ン スが作成され、 [Owned elsewhere] の場合、 ブ<br />

ロ ッ ク が既に作成された FIFO インスタンスに接続されます。<br />

• [Depth] : メモリ ブ ロ ッ ク のワー ド 数を指定し ます。 ワード サイズは、din ポー ト のビ ッ ト 幅か<br />

ら推論されます。<br />

• [Bits of precision to use <strong>for</strong> %full port] : %full ポー ト のビ ッ ト 幅を指定し ます。 この符号なし<br />

出力の 2 進小数点は、 常にワー ド の最上部にあ り ます。 こ のため、 た と えば精度が 1 に設定さ<br />

れる と、 出力は 0.0 と 0.5 の 2 つの値を取 り 込みます。 こ の場合、 0.5 は FIFO が少な く と も<br />

50% フルである こ と を示しています。<br />

• [Provide asynchronous reset port] : オプシ ョ ンの非同期 リ セ ッ ト ポー ト (rst) が使用されます。<br />

このブロックで使用されるパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの共通オプ<br />

ションで説明されています。<br />

330 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


To FIFO<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

ザイリンクス LogiCORE<br />

関連項目<br />

このブロックでは、 ザイ リンクス LogiCORE FIFO <strong>Generator</strong> コアを使用してインプリ メント され<br />

ます。<br />

ザイ リンクス<br />

LogiCORE<br />

FIFO Synchronous<br />

FIFO<br />

FIFO<br />

<strong>Generator</strong><br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

From FIFO ブロ ッ クの詳細については、 次の ト ピ ッ ク を参照し て く ださ い。<br />

From FIFO<br />

Multiple Subsystem <strong>Generator</strong><br />

共有 FIFO の協調シ ミ ュ レーシ ョ ン<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 331<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V5.0 • • • • •<br />

4 5<br />

V3.3 • • •<br />

R


To Register<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Index] ライブラリにリストされています。<br />

ザイ リンクスの To Register ブロッ クは、 1 サンプル周期のレ イ テンシを含む D フ<br />

リップフロップ ベースのレジス タの前半部分を イ ンプ リ メ ン ト し ます。 レジスタは、<br />

複数デザ イ ン ま たは 1 つのデザイ ンの複数セ ク シ ョ ンで共有でき ます。<br />

このブロックには、入力ポートが 2 つ含まれます。 din ポー ト は、 入力データ を受け取<br />

り、 レジスタのビッ ト幅を設定します。 初期出力値は、 ブロ ッ ク のパ ラ メ ータ ダイア<br />

ログ ボックスで指定できます。 イネーブル ポー ト (en) がアサート される と、入力されたデータは、<br />

1 サンプル周期後に dout か ら出力 さ れます。 en がアサー ト されないと、レジス タに書き込まれた最<br />

後の値が dout に出力されます。<br />

9.2 リ リ ースか ら は、同じ名前の To Register ブロッ ク と From Register ブロッ クがペアになり、ネッ<br />

トリストで 1 つの Register ブロックになっています。 To Register または From Register ブロックが<br />

別のブロックとペアにならない場合は、 その入力ポート と出力ポートが最上位レベルの <strong>System</strong><br />

<strong>Generator</strong> デザイ ンに含まれます。 ペアになったブロ ッ クはデザイ ンのどの階層にでも配置でき ま<br />

すが、同じ名前の To Register または From Register ブロックが複数ある場合は、エラーになり ます。<br />

以前のバージ ョ ン と の互換性を保持する には、MATLAB グローバル変数 xlSgSharedMemoryStitch<br />

を off に設定し て く ださい。 これには、 MATLAB コマンド ラインに次のように入力します。<br />

ブロック パラ メータ<br />

global xlSgSharedMemoryStitch;<br />

xlSgSharedMemoryStitch = 'off';<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Shared memory name] : 共有レ ジ ス タの名前を付け ます。 1 つのレジス タに To Register ブ<br />

ロックが必ず 1 つ必要です。 こ の名前は、 デザ イ ンのほかの共有 メ モ リ の名前 と は異な る も の<br />

にしてください。<br />

• [Initial value] : レ ジ ス タ の初期値を指定し ます。<br />

• [Ownership and initialization] : メモリが [Locally owned and initialized] か [Owned and<br />

initialized elsewhere] かを指定します。 [Locally owned and initialized] の場合、 ブロ ッ ク でレ<br />

ジスタのインスタンスが作成され、 [Owned and initialized elsewhere] の場合、 ブ ロ ッ ク が既に<br />

作成された レ ジ ス タ インスタンスに接続されます。 こ の結果、 シ ミ ュ レーシ ョ ン中に 2 つの共<br />

有レジスタ ブロッ クが 2 つの異な る モデルで使用さ れる場合、 [Locally owned and initialized]<br />

のブ ロ ッ ク を含むモデルが最初に開始さ れる必要があ り ます。<br />

このブロックで使用されるパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの共通オプ<br />

ションで説明されています。<br />

ザイリンクス LogiCORE<br />

こ のブ ロ ッ ク は、 合成可能な VHDL モジュールと してインプ リ メ ン ト されます。 このブロックで<br />

は、 ザイ リ ン ク ス LogiCORE は使用 されません。<br />

332 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


To Register<br />

クロック ド メ イ ンの切 り 替え<br />

関連項目<br />

To Register と From Register ブロックのペアがクロック ドメインの境界を切り替えるために使用<br />

される と、 ハード ウェアには 1 つのレジス タがイ ンプ リ メ ン ト されます。 このレジスタには、 To<br />

Register ブロッ クのクロッ ク ドメインが使用されます。 たとえば、デザインに Domain_A と<br />

Domain_B の 2 つの ク ロ ッ ク ド メ イ ンがあ る と し、 次の図のよ う に、 2 つのク ロ ッ ク ドメインを<br />

切り替えるのために、 1 組の共有レ ジ ス タ が使用される と し ます。<br />

Multiple Subsystem <strong>Generator</strong> ブロッ クを使用してデザインが生成される と、 含まれるレジスタは<br />

1 つだけにな り ます。 レジスタのクロッ ク信号と クロック ネーブル信号は Domain_A ドメインか<br />

ら駆動されます。<br />

こ の方法で ク ロ ッ ク ド メ イ ン を切 り 替え る と 、 問題にな る こ と があ り ます。 安定させるには、 2 つ<br />

の Register ブロックを From Register ブ ロ ッ ク の直後に追加し、 データ を From Register のクロッ<br />

ク ド メ イ ンに再同期 させます。<br />

To Register ブロ ッ クの詳細については、 次の ト ピ ッ ク を参照し て く だ さい。<br />

From Register<br />

Multiple Subsystem <strong>Generator</strong><br />

共有レ ジ ス タ の協調シ ミ ュ レーシ ョ ン<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 333<br />

リリース 9.2.00 2007 年 8 月<br />

R


Toolbar<br />

R<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

ブロック インターフェイス<br />

ザイ リンクスの Toolbar ブ ロ ッ ク を使用する と 、 <strong>System</strong> <strong>Generator</strong> の複数の便利な<br />

ユーテ ィ リ テ ィ に素早 く ア ク セスでき ます。 Toolbar ブロッ クは、 Simulink の拡大 /<br />

縮小表示を簡単に し、 新しい自動レ イ ア ウ ト や Simulink モデルへの配線機能を追加<br />

します。<br />

ま た、 次に説明する よ う なツール も含まれます。<br />

Toolbar ブロックをダブルクリックすると、次のグラフィック ユーザー インターフェイスが起動さ<br />

れます。<br />

これは、 コマンド ラインで xlTBUtils (Toolbar ブ ロ ッ ク で使用 さ れる関数集合) を使用しても起動<br />

できます。<br />

xlTBUtils('Toolbar');<br />

このインターフェイスは、1 度に 1 つしか開 く こ と ができ ません。 Toolbar ブ ロ ッ ク は、 配置箇所に<br />

は関係な く 、 常に作業中の Simulink モデルに対してのみアクシ ョ ンを実行します。 たとえば、モデ<br />

ル A から Toolbar ブロックを起動した場合でも、 モデル B で作業中であれば、 こ のブ ロ ッ ク はモ<br />

デル B に対し て使用で き ます。<br />

ツールバー ボタン<br />

ツールバー<br />

ボタン<br />

334 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

説明<br />

[Undo] : Toolbar で実行したモデル レ イ ア ウ ト への一番最近の変更を取 り 消<br />

すこ と ができ、 レ イ ア ウ ト をその変更の前の状態に戻し ます。 最大で 3 つ前<br />

までの変更を取 り 消すこ と がで き ます。<br />

[Reroute] : ラ イ ン を配線し直し て、 モデルの リ ーダ ビ リ テ ィ を向上し ます。<br />

選択し た ラ イ ンのみを配線し直すこ と がで き ます。 選択し ない と 、 モデル内<br />

の ラ イ ンがすべて配線し直さ れます。<br />

[Auto layout] : ブロッ クを配置し直し、 ラ インを配線し直して、 モデルの<br />

リ ーダビ リ テ ィ を向上し ます。<br />

[Add terminators] : xlAddTerms 関数を呼び出し て、 作業中モデルに ソ ース<br />

とシンクを追加します。 <strong>System</strong> <strong>Generator</strong> ブロッ クには <strong>System</strong> <strong>Generator</strong> の<br />

Constant ブロック と同じ、 Simulink ブロックには Simulink の Constant ブ<br />

ロ ッ ク と 同じ ソ ースが追加さ れます。 ターミネータがシンク と して使用され<br />

ます。


Toolbar<br />

ツールバー メニュー<br />

<strong>リファレンス</strong><br />

ツールバー<br />

ボタン<br />

ツールバー ボタン 説明<br />

Tools<br />

[Help] : このドキュメントを開きます。<br />

[Zoom] : ス ラ イ ド を動かすか、 [Zoom Factor] の値を指定し て、 Simulink モ<br />

デルを拡大表示する か、 縮小表示し ます。 ス ラ イ ド を左右に動かすか、<br />

[Zoom Factor] の値を変えて く ださい。 [Zoom Factor] には、 5 ~ 1000 まで<br />

の値を入力でき ます。<br />

1) E.R.Gansner、 E.Koutsofios、 S.C.North、 KVo、 『A Technique <strong>for</strong> Drawing Directed Graphs』<br />

http://www.graphviz.org/Documentation/TSE93.pdf<br />

2) [Reroute] および [Auto layout] ボタンをク リ ックすると、Graphviz というオープン ソース パッ<br />

ケージが起動されます。 このパッケージの詳細は、 http://www.graphviz.org/ を参照して く ださい。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 335<br />

リリース 9.2.00 2007 年 8 月<br />

説明<br />

Create Plugins <strong>System</strong> <strong>Generator</strong> Board Description Builder ツールを起動し<br />

ます。<br />

Inspect Selected Simulink Inspector を開きます。 これには、 選択しているブ<br />

ロックのプロパティが含まれます。 このツールは、 複数ブ<br />

ロ ッ ク のサ イ ズやブ ロ ッ ク の水平方向の配置を設定する場合<br />

に使用する と 便利です。<br />

Toolbar Properties 次の図のよ う な [プロパティ ] ダイアログ ボックスが開きま<br />

す。 [Auto layout] および [Reroute] のパラ メ ータ を設定でき<br />

ます。 [Layout X pitch] と [Layout Y pitch] は、配置されたブ<br />

ロック間の X 軸方向 と Y 軸方向の距離をそれぞれ表し ます。<br />

[Use simulink autorouter] がオンになっている と、Toolbar ブ<br />

ロックで Simulink の autorouter が使用されます。 オフの場<br />

合は、 ソースか らデ ィ ステ ィ ネーシ ョ ンへダ イ レ ク ト ライ<br />

ンがひかれます。<br />

Help このドキュメントを開きます。<br />

R


R<br />

関連項目<br />

xlAddTerms<br />

xlSBDBuilder<br />

xlTBUtils<br />

336 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Up Sample<br />

Up Sample<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Basic Elements] ライブラリと [Index] ライブラリにリスト<br />

されています。<br />

ザイ リ ンクスの Up Sample ブロッ クは、 ブロッ クが配置された箇所のサンプル レー<br />

ト を増加する ために使用し ます。 出力サンプル周期は、 1/n にな り ます (1 が入力サン<br />

プル周期、 n はサンプ リ ング レート )。<br />

入力信号は、 ア ッ プサンプ リ ング さ れます。 これに よ り 、 入力サンプル フレーム内<br />

で、 1 入力サンプルは n 回出力さ れるか (サンプルがコピーされた場合)、 0 の数 (n-1) 個で 1 回出<br />

力されます (0 がパディ ング された場合)。<br />

ハード ウ ェ アには、 Up Sample ブロックは 2 つのいずれかの方法で イ ンプ リ メ ン ト されます。 ブ<br />

ロックのパラメータ ダイアログ ボックスで [Copy samples] をオンにする と、 Din ポー ト が直接<br />

Dout に接続され、 ハードウェアは拡張されません。 0 がパディ ング される よ う にする と、 入力サン<br />

プルと挿入された 0 を切り替えるのに MUX が使用されます。 次の図は、0 がパディ ング された Up<br />

Sample ブ ロ ッ ク の回路図を示し ています。<br />

ブロック インターフェイス<br />

このブロックは、Src_CE と Dest_CE の 2 つの ク ロ ッ ク イ ネーブル信号を受信し ます。 Src_CE は<br />

入力データ ス トリーム レー ト に対応したク ロ ッ ク イネーブル信号で、 Dest_CE は出力データ ス ト<br />

リーム レー ト に対応し た よ り 高速な ク ロ ッ ク イ ネーブル信号です。 回路図では、 MUX にフ リ ップ<br />

フロップを 1 つ追加し ています。 フ リップフロップを付けると Src_CE のタイ ミ ングが調整できる<br />

ので、 MUX は入力サンプル周期の開始時にデータ入力サンプルに切 り 替え、 最初の入力サンプル<br />

後に定数 0 に切 り 替え ます。 回路図には、 Din から Dout までの組み合わせパスが含まれているの<br />

で、 0 をパディ ングするよ う に設定された Up Sample ブロッ クの後には、 可能であれば、 レジスタ<br />

を付ける よ う にして く ださい。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 337<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック パラ メータ<br />

ブロッ ク パラ メータのダイアログ ボックスは、 Simulink モデル内のア イ コ ンをダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Sampling rate (number of output samples per input sample)] : 2 以上の整数にする必要があ り<br />

ます。 こ れは、 入力に対する出力サンプル周期の比率で、 サンプル レー ト を乗算する値にな り<br />

ます。 たとえば、2 と指定し た場合は、 入力サンプル レー ト が 2 倍にな り ます。 整数以外の比<br />

率を指定する場合は、 Down Sample ブロック と Up Sample ブ ロ ッ ク を組み合わせて使用し て<br />

ください。<br />

• [Copy samples (otherwise zeros are inserted)] : 増加された ク ロ ッ ク レート によって生成され<br />

る追加のサンプルをど うするか指定します。 オンにする と、 その追加のサンプル時間で同じサ<br />

ンプルがコピーされます。 オフにする と、 追加のサンプルは 0 にな り ます。<br />

このブロックで使用されるパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの共通オプ<br />

ションで説明されています。<br />

338 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Viterbi Decoder v5_0<br />

Viterbi Decoder v5_0<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

たたみ込みエン コーダでエン コー ド さ れたデータは、 ザ イ リ ン ク スの Viterbi<br />

Decoder ブロックを使用してデコードできます。<br />

デコード プロセスには、 2 段階あ り ます。 最初の段階では、 すべてのデータ入力<br />

の組み合わせに対し て入力データ の コ ス ト を計算し ます。 コ ス ト の決定には、 ハ<br />

ミング手法またはユークリッド手法を使用できます。 2 つ目の段階では、 ト レ リ<br />

ス線図を ト レースバッ ク し、 最適なパスを決定します。 トレリス線図のトレース長は、[Traceback<br />

length] パ ラ メ ータ で指定で き ます。<br />

こ のデコーダでは、 最適なたたみ込み符号を使用し た場合、 エ ラー レー ト が最小にな り ます。 エン<br />

コー ド する たたみ込み符号は、 デコー ド する たたみ込み符号 と 同じ にする必要があ り ます。<br />

制約長<br />

ブロック インターフェイス<br />

1/2 レート (8 進数) の場合<br />

の最適なたたみ込み符号<br />

1/3 レート (8 進数) の場合の<br />

最適なたたみ込み符号<br />

3 [7 5] [7 7 5]<br />

4 [17 13] [17 13 15]<br />

5 [37 33] [37 33 25]<br />

6 [57 65] [57 65 71]<br />

7 [117 127] [117 127 155]<br />

8 [357 233] [357 233 251]<br />

9 [755 633] [755 633 447]<br />

Viterbi Decoder ブロックでは、 1/2 ~ 1/7 のレート がサポート され、 din1 ~ din7 という名前の入<br />

力ポー ト が 2 ~ 7 個表示されます。 ハー ド コーディ ングするには、各データ入力を 1 ビッ ト幅にす<br />

る必要があ り ます。 ソフト コーデ ィ ングの場合は、 ビ ッ ト 幅は 3 ~ 8 ビッ トにできます。 vin ポー<br />

トは、din ポー ト の値が有効であ る こ と 示し ます。 外部パン ク チ ャ リ ングを使用する場合は、デコー<br />

ダのレート によって、 最大で 7 個の erase ポー ト が使用で き る よ う にな り ます。 erase ピンが High<br />

にな る と 、 対応するデータ ピ ンがゼ ロ記号 と し て処理されます。 制約長 と ト レースバ ッ ク 長を指定<br />

する と、 ブロ ッ クをデュアル デコーダ (たたみ込み符号 2 つで、 出力レー ト 2 つ) として使用でき<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 339<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ます。 sel と い う 入力ポー ト では、 たたみ込み符号がど ち ら の入力データ を使用する か指定 さ れま<br />

す。 sel が 0 の場合、 データは [Convolution code array 1 (octal)] を使用してデコード され、 1 の場<br />

合は [Convolution code array 2 (octal)] を使用してデコード されます。<br />

Viterbi Decoder ブロッ クには、 2 ~ 5 個の出力ポー ト が含まれます。 dout ポー ト は 1 ビットのデ<br />

コード結果を出力し、 vout ポー ト は値が無効な こ と を示し ます。 ber ポー ト はエン コード し直され<br />

た dout の値と遅延の din の値の差をカ ウ ン ト し、 チャネルのビ ッ ト エラー レー ト を出力し ます。<br />

検出されたエ ラー数は 8 で除算され、 ber ポー ト に出力さ れます。 ber_done ポー ト は、 エラー カウ<br />

ン ト の入力サンプル数が処理されたかど う かを示し ます。 norm 信号は、ブ ロ ッ ク 内で標準化が実行<br />

されたこ とを示します。 norm ポー ト では、チャネル上のエラーがすぐに監視され、 その結果が出力<br />

されます。 標準化が さ ら に頻繁にな る と (norm ポー ト が High になる と)、出力 さ れ る エ ラ ー レート<br />

も高くなり ます。<br />

ブロック パラ メータ<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Constraint length] : n+1 にな り ます (n はエン コーダに含まれる制約レジス タ長)。<br />

• [Use dual decoder] : オンにする と、 ブロ ッ クがデュアル デコーダと して動作し、 sel 入力ポー<br />

トが使用できるようになります。<br />

• [Convolution code array 1 (octal)] : 8 進数のたたみ込み符号の 1 つ目の配列を指定し ます。 出<br />

力レー ト は配列の長さで決ま り ます。 2 ~ 7 の符号を指定し ます。 デュアル デコードが使用さ<br />

れる場合に sel ポー ト の値が 0 だと、 この配列になります。<br />

• [Convolution code array 2 (octal)] : 8 進数のたたみ込み符号の 2 つ目の配列を指定し ます。 出<br />

力レー ト は配列の長さで決ま り ます。 2 ~ 7 の符号を指定し ます。 デュアル デコードが使用さ<br />

れる場合に sel ポー ト の値が 1 だと、 この配列になります。 こ の場合、 出力レー ト は 1 つ目の<br />

配列か ら の出力レー ト と 同じ にする必要はあ り ません。<br />

• [Traceback length] : Viterbi Decorder のトレリス線図のトレースバック長を指定します。 最適<br />

な長さ は、 制約長の 5 ~ 7 倍です。<br />

• [Coding] : [Hard] か [Soft] かを指定し ます。 ハー ド エンコーディングではハミ ング手法、 ソフ<br />

ト エン コーデ ィ ン グではユー ク リ ッ ド 手法を使用し て、 コ ス ト が計算 さ れます。 ハード コー<br />

デ ィ ン グでは入力データ を 1 ビッ ト幅に、 ソフト コーディ ングでは 2 ~ 8 ビッ ト幅にする必<br />

要があ り ます。 デュアル デコーデ ィ ング、 外部パン ク チャ リ ング、 シ リ アル アーキテクチャを<br />

使用する場合は ソ フ ト コーディ ングを使用する必要があ り ます。<br />

• [Data <strong>for</strong>mat] : [Signed magnitude] または [Offset binary] ( ソフト コーディ ングの場合のみ選<br />

択可能) を指定し ます。<br />

• [Provide bit error rate port] : オンにする と、ber と ber_done ポー ト がブロ ッ クに追加されます。<br />

• [Number of input samples <strong>for</strong> error count] : 計算さ れたビ ッ ト エラー レー ト に対する入力サン<br />

プル数を指定し ます。<br />

• [Provide normalization port] : オンにする と、 norm ポー ト がブロ ッ クに追加されます。<br />

[Advanced] タブ<br />

[Advance] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Use external puncturing] : オンにする と、 erase ポー ト がブロ ッ クに追加されます。<br />

• [Use best state] : オンにする と 、 ト レースバッ クが最適なステー ト から開始されます。<br />

340 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Viterbi Decoder v5_0<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

Viterbi Decoder<br />

v5_0<br />

• [Width reduction] : コ ス ト を節約し て最適な状態を決定する ために、何個の LSB を無視する か<br />

指定し ます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Architecture type] : [Parallel] または [Serial] を選択します。<br />

• [Optimization] : [Area] または [Speed] を選択し ます(パラレル アーキテ ク チ ャ の場合にのみ指<br />

定でき ます)。<br />

• [Reduce latency] : オンにする と、 ブロ ッ クのレイテンシが約 50% 減少し ます。<br />

このブロックで使用されるパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの共通オプ<br />

ションで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 次のザイ リンクス LogiCORE Viterbi Decoder コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

Viterbi<br />

Decoder<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 341<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

V5.0 • • • • •<br />

4 5<br />

R


R<br />

Viterbi Decoder v6_0<br />

このブロックは、[<strong>Xilinx</strong> Blockset] の [Communication] および [Index] ライブラリにリストされて<br />

います。<br />

たたみ込みエン コーダでエン コー ド さ れたデータは、 ザ イ リ ン ク スの Viterbi<br />

Decoder ブロックを使用してデコードできます。<br />

デコード プロセスには、 2 段階あ り ます。 最初の段階では、 すべてのデータ入力<br />

の組み合わせに対し て入力データ の コ ス ト を計算し ます。 コ ス ト の決定には、 ハ<br />

ミング手法またはユークリッド手法を使用できます。 2 つ目の段階では、 ト レ リ<br />

ス線図を ト レースバッ ク し、 最適なパスを決定します。 トレリス線図のトレース長は、[Traceback<br />

length] パ ラ メ ータ で指定で き ます。<br />

こ のデコーダでは、 最適なたたみ込み符号を使用し た場合、 エ ラー レー ト が最小にな り ます。 エン<br />

コー ド する たたみ込み符号は、 デコー ド する たたみ込み符号 と 同じ にする必要があ り ます。<br />

制約長<br />

ブロック インターフェイス<br />

1/2 レート (8 進数) の場合<br />

の最適なたたみ込み符号<br />

1/3 レート (8 進数) の場合の<br />

最適なたたみ込み符号<br />

3 [7 5] [7 7 5]<br />

4 [17 13] [17 13 15]<br />

5 [37 33] [37 33 25]<br />

6 [57 65] [57 65 71]<br />

7 [117 127] [117 127 155]<br />

8 [357 233] [357 233 251]<br />

9 [755 633] [755 633 447]<br />

Viterbi Decoder ブロックでは、 1/2 ~ 1/7 のレート がサポート され、 din1 ~ din7 という名前の入<br />

力ポー ト が 2 ~ 7 個表示されます。 ハー ド コーディ ングするには、各データ入力を 1 ビッ ト幅にす<br />

る必要があ り ます。 ソフト コーデ ィ ングの場合は、 ビ ッ ト 幅は 3 ~ 8 ビッ トにできます。 vin ポー<br />

トは、din ポー ト の値が有効であ る こ と 示し ます。 外部パン ク チ ャ リ ングを使用する場合は、デコー<br />

ダのレート によって、 最大で 7 個の erase ポー ト が使用で き る よ う にな り ます。 erase ピンが High<br />

にな る と 、 対応するデータ ピ ンがゼ ロ記号 と し て処理されます。 制約長 と ト レースバ ッ ク 長を指定<br />

する と、 ブロ ッ クをデュアル デコーダ (たたみ込み符号 2 つで、 出力レー ト 2 つ) として使用でき<br />

342 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Viterbi Decoder v6_0<br />

ます。 sel と い う 入力ポー ト では、 たたみ込み符号がど ち ら の入力データ を使用する か指定 さ れま<br />

す。 sel が 0 の場合、 データは [Convolution code array 1 (octal)] を使用してデコード され、 1 の場<br />

合は [Convolution code array 2 (octal)] を使用してデコード されます。<br />

Viterbi Decoder ブロッ クには、 2 ~ 5 個の出力ポー ト が含まれます。 dout ポー ト は 1 ビットのデ<br />

コード結果を出力し、 vout ポー ト は値が無効な こ と を示し ます。 ber ポー ト はエン コード し直され<br />

た dout の値と遅延の din の値の差をカ ウ ン ト し、 チャネルのビ ッ ト エラー レー ト を出力し ます。<br />

検出されたエ ラー数は 8 で除算され、 ber ポー ト に出力さ れます。 ber_done ポー ト は、 エラー カウ<br />

ン ト の入力サンプル数が処理されたかど う かを示し ます。 norm 信号は、ブ ロ ッ ク 内で標準化が実行<br />

されたこ とを示します。 norm ポー ト では、チャネル上のエラーがすぐに監視され、 その結果が出力<br />

されます。 標準化が さ ら に頻繁にな る と (norm ポー ト が High になる と)、出力 さ れ る エ ラ ー レート<br />

も高くなり ます。<br />

ブロック パラ メータ<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Constraint length] : n+1 にな り ます (n はエン コーダに含まれる制約レジス タ長)。<br />

• [Use dual decoder] : オンにする と、 ブロ ッ クがデュアル デコーダと して動作し、 sel 入力ポー<br />

トが使用できるようになります。<br />

• [Convolution code array 1 (octal)] : 8 進数のたたみ込み符号の 1 つ目の配列を指定し ます。 出<br />

力レー ト は配列の長さで決ま り ます。 2 ~ 7 の符号を指定し ます。 デュアル デコードが使用さ<br />

れる場合に sel ポー ト の値が 0 だと、 この配列になります。<br />

• [Convolution code array 2 (octal)] : 8 進数のたたみ込み符号の 2 つ目の配列を指定し ます。 出<br />

力レー ト は配列の長さで決ま り ます。 2 ~ 7 の符号を指定し ます。 デュアル デコードが使用さ<br />

れる場合に sel ポー ト の値が 1 だと、 この配列になります。 こ の場合、 出力レー ト は 1 つ目の<br />

配列か ら の出力レー ト と 同じ にする必要はあ り ません。<br />

• [Traceback length] : Viterbi Decorder のトレリス線図のトレースバック長を指定します。 最適<br />

な長さ は、 制約長の 5 ~ 7 倍です。<br />

• [Coding] : [Hard] か [Soft] かを指定し ます。 ハー ド エンコーディングではハミ ング手法、 ソフ<br />

ト エン コーデ ィ ン グではユー ク リ ッ ド 手法を使用し て、 コ ス ト が計算 さ れます。 ハード コー<br />

デ ィ ン グでは入力データ を 1 ビッ ト幅に、 ソフト コーディ ングでは 2 ~ 8 ビッ ト幅にする必<br />

要があ り ます。 デュアル デコーデ ィ ング、 外部パン ク チャ リ ング、 シ リ アル アーキテクチャを<br />

使用する場合は ソ フ ト コーディ ングを使用する必要があ り ます。<br />

• [Data <strong>for</strong>mat] : [Signed magnitude] または [Offset binary] ( ソフト コーディ ングの場合のみ選<br />

択可能) を指定し ます。<br />

• [Provide bit error rate port] : オンにする と、ber と ber_done ポー ト がブロ ッ クに追加されます。<br />

• [Number of input samples <strong>for</strong> error count] : 計算さ れたビ ッ ト エラー レー ト に対する入力サン<br />

プル数を指定し ます。<br />

• [Provide normalization port] : オンにする と、 norm ポー ト がブロ ッ クに追加されます。<br />

[Advanced] タブ<br />

[Basic] タブからは、 次のよ うなパラ メータを設定できます。<br />

• [Use external puncturing] : オンにする と、 erase ポー ト がブロ ッ クに追加されます。<br />

• [Use best state] : オンにする と 、 ト レースバッ クが最適なステー ト から開始されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 343<br />

リリース 9.2.00 2007 年 8 月<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

Viterbi Decoder<br />

v6_0<br />

R<br />

• [Width reduction] : コ ス ト を節約し て最適な状態を決定する ために、何個の LSB を無視する か<br />

指定し ます。<br />

[Implementation] タブ<br />

[Implementation] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Architecture type] : [Parallel] または [Serial] を選択します。<br />

• [Optimization] : [Area] または [Speed] を選択し ます(パラレル アーキテ ク チ ャ の場合にのみ指<br />

定でき ます)。<br />

• [Reduce latency] : オンにする と、 ブロ ッ クのレイテンシが約 50% 減少し ます。<br />

このブロックで使用されるパラメータは、 ブロッ クのパラ メータ ダイアログ ボックスの共通オプ<br />

ションで説明されています。<br />

ザイリンクス LogiCORE<br />

このブロックでは、 次のザイ リンクス LogiCORE Viterbi Decoder コアが使用されます。<br />

ザイ リンクス<br />

LogiCORE<br />

Viterbi<br />

Decoder<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

344 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5<br />

V6.0 • • • • •


WaveScope<br />

WaveScope<br />

このブロックは、 [<strong>Xilinx</strong> Blockset] の [Tools] および [Index] ライブラリにリストされています。<br />

<strong>System</strong> <strong>Generator</strong> の WaveScope ブ ロ ッ ク は、 高度な機能を備えた使いやすい波形<br />

ビューアで、 <strong>System</strong> <strong>Generator</strong> デザ イ ンの解析およびデバ ッ グに使用し ます。<br />

こ のビ ューアでは、 シ ミ ュ レーシ ョ ンが完了し た後のすべてのワ イ ヤの時間変化を確<br />

認でき ます。 信号はロ ジ ッ ク ま たはアナロ グ形式でフ ォーマ ッ ト で き る ほか、 2 進数、<br />

16 進数、 10 進数などで も表示で き ます。<br />

クイック チュート リアル<br />

次に、 単純な例を使って、 WaveScope の使用方法を説明し ます。<br />

WaveScope ブロックをモデルにドロップし、 ダブルク リ ッ クする と、 何も表示されていない波形<br />

ビューアが起動されます。 3 つのワ イヤを Shift キーを押し なが ら 選択し、 波形ビ ューアで [Add<br />

Selected Nets] ボタン ( ) をクリ ックして、これらのワイヤをビューアに追加します。 波形ビ ュー<br />

アは、 次のよ う にな り ます。<br />

ビューアには、 3 つの信号が表示 さ れています。 このうち 2 つには、 モデル内で命名していなかっ<br />

たので、 自動的に名前が付いています。 モデルのウ ィ ン ド ウに戻 り [シミュレーションの開始] ボタ<br />

ン ( ) をク リ ックします。 このシミ ュレーションの周期は 1 秒で、 10 秒間実行さ れます。 波形<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 345<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ビ ューアは自動的にア ッ プデー ト さ れます。 ボタ ンを ク リ ッ ク し、 図のよ う に波形全体が表示<br />

されるよ うにしてください。<br />

theta 信号の基数は 16 進数に変更で き ます。 theta と い う 信号名を ク リ ッ クする か、 その信号波形を<br />

クリックしてハイライトし、そのハイライトされた信号をダブルクリックし (名前の方はダブル ク<br />

リックしません)、 次のフォーマット ダイアログ ボックスを起動します。<br />

346 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


WaveScope<br />

[hex] をオンにし、 theta のフォーマッ ト を 16 進数に変更し ます。 同様に、 SineCosine/Out1 信号を<br />

[analog] に変更し、 色を赤に変更し て く ださ い。<br />

信号名をダブル ク リ ッ ク し て、 テキ ス ト ボ ッ ク スに名前を入力し て、 信号名を変更し て く だ さ い。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 347<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

新し い信号名がモデルに表示 さ れます。 ボ タ ン を使用する と 、 シ ミ ュ レーシ ョ ンの一部を拡大<br />

できます。 [Cursor] → [Center Cursor] を ク リ ッ ク し、 黄色のカーソルを画面の中央に配置し、 マウ<br />

ス ポ イ ン タ をそのカー ソ ルに合わせ、 表示 さ れる信号の値を確認し て く だ さ い。<br />

ブロック インターフェイス<br />

WaveScope のアイ コンをダブルク リ ッ クする と、波形ビューアが開きます。 このビューアを閉じて<br />

いて も、シ ミ ュ レーシ ョ ンの最後に自動的に起動されます。 こ のビ ューアを使用する と 、シ ミ ュ レー<br />

シ ョ ン結果を さ ま ざ ま な方法で確認で き ます。<br />

WaveScope では、 指定し たネ ッ ト の信号が表示されます。 こ の信号は さ ま ざ ま な方法で同時に確認<br />

で き ます。た と えば、ロ ジ ッ ク 形式ま たはアナロ グ形式の両方で確認し た り で き ます。 信号はロ ジ ッ<br />

ク ま たはアナ ロ グ形式で フ ォーマ ッ ト で き る ほか、 2 進数、 16 進数、 10 進数な どで も 表示で き ま<br />

す。 一番下には、 参考のために ク ロ ッ ク信号が表示さ れます。<br />

WaveScope のウ ィンドウは、 次のよ うに使用できます。<br />

• どのネ ッ ト の信号を表示する か選択し ます。<br />

• 信号の表示を設定し ます。<br />

• 信号を表示し ます。<br />

ネッ トの選択<br />

WaveScope の ウ ィ ン ド ウ で確認する ネ ッ ト を選択する には、 次の 2 通りの方法があります。 1 つ目<br />

は、 Simulink のウ ィンド ウでザイ リ ンクス ブロックの出力ネッ ト を選択し、 ツールバーの [Add<br />

Selected Nets] ボタン ( ) をク リ ックします。 複数のブ ロ ッ ク/ネ ッ ト を選択する場合は、 Shift<br />

キーを押しながら ク リ ッ ク し ます。 選択 し たネ ッ ト の信号が WaveScope のウ ィンド ウに表示され<br />

ます。 選択し たブロ ッ ク の入力 と 出力が、 すべて こ のウ ィ ン ド ウに追加さ れます。 モデルがシ ミ ュ<br />

レーシ ョ ンされるまでは、 WaveScope に表示でき るデータはあ り ません。 データは、 シ ミ ュ レー<br />

ション後に表示されます。<br />

ツールバーで [Add Selected Nets] ボ タ ン を何度か ク リ ッ ク する と 、 WaveScope のウ ィンドウにそ<br />

の信号がその回数分表示されます。<br />

348 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


WaveScope<br />

2 つ目の選択方法では、 [Nets] メニューを使用します。 このメニューには、 モデル内のブロックと<br />

ネットの階層リストが含まれます。 図が複雑な場合は、 こ の メ ニ ューを使用し た方が特定のネ ッ ト<br />

を選択しやす く な り ます。<br />

一番下には、 デザ イ ン内で一番速いレー ト の ク ロ ッ ク信号が表示さ れます。 このクロック信号は、<br />

どの信号を表示し て も表示されます。<br />

信号の選択 と移動<br />

信号ま たは対応するネ ッ ト 名は、 信号を ク リ ッ クする と 選択でき ます。 信号を選択する と 、 別の場<br />

所に ド ラ ッ グ し て移動で き ます。 複数の信号を 1 度に選択する場合は、 ネ ッ ト 名を Shift キーまた<br />

は Ctrl キーを使用し ます。 信号を ク リ ッ ク しても選択でき ません。<br />

複数の信号を選択し て移動させる と 、 すべてが 1 度に移動 さ れます。 こ の方法は、 複数の関連する<br />

信号を一度に表示される よ う にする場合に便利です。<br />

WaveScope の画面上で ク ロ ッ ク信号を選択し て移動する こ と はで き ません。 クロック信号は、常に<br />

一番下に表示されます。<br />

信号の削除<br />

WaveScope のウ ィ ン ド ウ に信号を追加し た後に削除する には、 その信号を選択し、 ツールバーの<br />

[Delete Signals] ボタンをク リ ックします。 キーボードの Delete キーを押した り、[編集] → [Delete]<br />

を ク リ ッ ク し て も削除で き ます。<br />

ま た、 カ ッ ト 、 コ ピー、 貼 り 付けなどの基本的な操作も で き ます。 これらは、 ツールバーの [Copy<br />

Signals] ボタンや [Paste Signals] ボ タ ン を使用で き る ほか、 キーボー ド シ ョートカット (カッ トの<br />

場合は Ctrl キー + X、 コピーの場合は Ctrl キー + C、 貼 り 付けの場合は Ctrl キー + V) を使用した<br />

り、 [編集] メニューからそれぞれのコマンドをクリックしても実行できます。<br />

WaveScope の画面上で ク ロ ッ ク信号を コ ピー、 貼 り 付け、 削除する こ と はで き ません。<br />

信号表示の設定<br />

信号に よ っ ては、 何も し な く て も数値が重要な場合は数値で表示さ れた り 、 ス テー ト の遷移が重要<br />

な場合はロジ ッ ク ステートで表示されたりするこ とがあり ます。 WaveScope を使用する と 、表示方<br />

法を選択で き ます。<br />

まず信号を選択し、 ダブル ク リ ッ ク し ます (信号名ではな く 、 信号自体をダブル ク リ ッ ク し ます)。<br />

図のよ う なダ イ ア ロ グ ボックスが表示されます。<br />

• フォーマッ ト - トランザクションを強調したロジック信号として信<br />

号を表示させる場合は [logic] をオンにします。 この値は各ト ラン<br />

ザクシ ョ ン後に書き込まれます。 信号の値を グ ラ フの よ う に表示 さ<br />

せる場合は [analog] をオンにします。 信号の High と Low の値も、<br />

グラフの左側に表示されます。 アナログ信号のサイズは、 選択した<br />

アナロ グ信号の一番下を ド ラ ッ グする と 変更で き ます。<br />

• 基数 - [bin]、 [hex]、 [dec] か ら 選択で き ます。 値は、 最適な基数点<br />

で表示されます。 たとえば、10 進数の 10.5 は 16 進数では A.8 と表<br />

示されます。<br />

• 符号絶対値 - [Sign-Magnitude] をオンにする と、WaveScope で値が<br />

2 の補数値ではな く 、 符号絶対値 と し て解釈さ れます。 このフォー<br />

マッ トでは、 値は常に 10 進数で表示 さ れます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 349<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

• カラー - WaveScope ではデフ ォル ト の色が選択さ れています。 カラー ボ タ ンで色を選ぶ と 、選<br />

択し た信号すべてにその色が反映さ れます。<br />

デフ ォル ト では、 ロ ジ ッ ク 信号の値はグ ラ フで表示されます。 表示されない よ う にする には、 [オプ<br />

ション] → [Show Values] をク リ ックして、 オフにします。<br />

ク ロ ッ ク 信号の表示は変更で き ません。<br />

アナログ信号の高さの変更<br />

アナロ グ信号のサ イ ズを変更する には、 選択し たアナロ グ信号の下部分を選択し て (図参照)、 上下<br />

に動かす と 、 アナロ グ信号を小さ く し た り 、 大き く し た り で き ます。<br />

信号名の変更<br />

変更する信号の名前をダブル ク リ ッ ク し ます。 ま た、 モデルの ワ イ ヤ名も変更で き ます。 こ の場合、<br />

シ ミ ュ レーシ ョ ン を再実行する か、 ボタンで WaveScope のウ ィ ン ド ウ を更新する と 、 信号名が<br />

アップデート されます。<br />

信号のレ イ ンボー表示<br />

信号は、 それぞれ別の色を使用する と 見やす く な り ます。 信号が追加される と、 新しい色がレイン<br />

ボー パレ ッ ト から選択されます。 信号グループを選択し て、 [Rainbow Selected Signals] ボタンを<br />

350 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


WaveScope<br />

ク リ ッ ク する と 、 レ イ ンボー表示 さ れます。 すべての信号のレ イ ンボー表示を一度にや り 直すには、<br />

Ctrl キーを押し なが ら すべてを選択し、 [Rainbow Selected Signals] ボタンをク リ ックします。<br />

信号の表示<br />

信号を選択し、モデルをシ ミ ュ レーシ ョ ンする と 、WaveScope で信号が表示さ れる よ う にな り ます。<br />

拡大/縮小と ス ク ロール<br />

虫眼鏡のア イ コ ン、 [View] メニュー、キーボードの I および O ボ タ ンのいずれかを使用する と 、 拡<br />

大/縮小がで き ます。 また、 WaveScope のウ ィンドウで四角を描く よ うにマウスをド ラッグする と、<br />

その部分を拡大で き ます。 ス ク ロールする場合は、 矢印キーを使用するか、 画面右側か下側にあ る<br />

スクロール バーを動かし ます。 すべてが表示内に収ま る場合は、 ス ク ロール バーは表示されませ<br />

ん。<br />

Ctrl キーを使用する と 、 さ ら に細か く 拡大/縮小がで き ます。 Ctrl キーを押しつつ、 左向き ま たは右<br />

向き矢印キーを押す と 、 1 クロック サイ クル単位で表示が切 り 替わ り ます。 Ctrl キーを押しつつ、 I<br />

または O キーを押す と 、 細かい単位で拡大/縮小をする こ と がで き ます。<br />

レ コーデ ィ ング制限の変更<br />

データ の一部し か表示する必要のない こ と があ り ます。 た と えば、 シ ミ ュ レーシ ョ ンが長時間実行<br />

される場合に、 最後の 1000 ス テ ッ プのみ確認し たい と き などです。<br />

WaveScope で表示されるデータ が多 く な る ほど、WaveScope の動きが遅 く な り ます。 該当するデー<br />

タ だけを拡大する こ と も で き ますが、WaveScope に含まれるデータが多ければ、動きは遅いま まで<br />

す。 このよ うな場合は、 WaveScope でレコーディ ング制限を削減してください。<br />

デフォル ト では、WaveScope はシ ミ ュ レーシ ョ ンの開始か ら終了までの信号の値を記録し ます。 こ<br />

れ ら を変更する には、 [オプシ ョ ン] → [Recording Limits] をクリ ックし、 ダイアログ ボックスでレ<br />

コーデ ィ ングの開始時間 と 終了時間を指定し ます。 次の図のよ う に、 ダ イ ア ロ グ ボックスには現在<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 351<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

の最小値 と 最大値が自動的に入力さ れています。 ここに値を入力してください。 終了時間に Inf と<br />

入力する と 、 時間の上限がな く な り ます。<br />

レ コーデ ィ ング制限を設定する と 、WaveScope ではその時間の範囲内の値し か表示さ れな く な り ま<br />

す。 拡大表示し て も、 こ の範囲外の部分は表示さ れません。 シ ミ ュ レーシ ョ ンに戻る と、 その範囲<br />

時間の値のみが記録されます。<br />

グ リ ッ ド の表示<br />

ツールバーの [Toggle Grid] ボタン ( ) をクリックすると、X 軸の値が付いた縦のラ イ ンが表示さ<br />

れるよ うになり ます。<br />

カーソルの使用<br />

カーソルを使用する と、 信号を揃えて並べた り、 ポイ ン ト をマーク した り でき ます。 カーソルは、<br />

時間軸の下を ク リ ッ ク する と 、 現在表示し てい る時間幅に表示 さ れます。 時間軸の下にポ イ ン タ を<br />

置く と、マウス ポイ ン タが十字に変わ り 、 カーソルがその位置に移動され、 現在の表示内で動かせ<br />

るようになったことを示します。<br />

C キーを押すか、[Cursor] → [Center Cursor] を ク リ ッ ク する と 、 カーソ ルを画面の中央に表示させ<br />

ることもできます。 画面に一度表示さ れたカー ソ ルは、 ド ラ ッ グする と 動かすこ と がで き ます。 マ<br />

ウス ポ イ ン タ をカーソルの上に置 く と、 ポ イ ン タが十字に変わ り 、 カーソルが ド ラ ッ グでき る よ う<br />

にな り ます。<br />

352 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


WaveScope<br />

マウス ポ イ ン タ をカーソルの上に置 く と、そのポイ ン タの下にあ る信号の値がツール情報と し て表<br />

示されます。 ツール情報を使用する と 、 値がすべて表示さ れないよ う な拡大比率の場合、 アナロ グ<br />

信号の値やロ ジ ッ ク 信号の値を表示する のに便利です。<br />

カーソ ルを ド ラ ッ グする と、 ツール情報は更新さ れます。 スクロール バーの下に、 小さ い黄色の<br />

カーソルが表示されます。 選択し た表示にカー ソ ルが見当た ら ない場合は、 こ の小 さ いカーソ ルの<br />

位置か ら、 実際のカー ソ ルが時間軸のど こ に置かれてい る かがわか り ます。 カーソルを現在の位置<br />

に移動する には、 J キーを押すか、 [Cursor] → [Jump to Cursor] をクリ ックします。<br />

表示を合わせた り 、 検索し た り せずに、 次の信号遷移を表示する こ と も で き ます。 次の遷移を表示<br />

する には、 カーソ ルを画面上に置き、 遷移を表示する信号を選択し ます。 Enter キーを押すか、<br />

[Cursor] → [Move Cursor Next] を ク リ ッ ク する と 、カーソ ルが次の信号遷移に移動し ます。 カーソ<br />

ルが画面か ら はみ出し てい る場合は、 それに合わせて表示さ れる よ う にな り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 353<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

クロスプローブ<br />

信号を WaveScope のウ ィ ン ド ウ内で選択する と、 次の図のよ う に ク ロ スプローブされ、 対応する<br />

ワイヤがモデルのウィンドウでハイライトされます (図のオレ ンジ色の部分)。<br />

ハイ ラ イ ト された信号が階層の下の方にあ る場合は、 その上位ブロ ッ ク がオレ ンジでハイ ラ イ ト さ<br />

れます。<br />

[Cursor] メニュー<br />

[Cursor] メニューには、 次の 4 つのコマン ド が含まれます。<br />

[Center Cursor]<br />

現在表示し てい る時間幅の画面の中央にカーソ ルが配置 さ れます。 C キーを押しても、 同じ よ う に<br />

配置されます。<br />

[Jump to Cursor]<br />

カーソ ルがあ る位置に現在の表示が移動さ れます。 J キーを押しても、 同じ よ う に移動されます。<br />

[Move Cursor Next]<br />

一番最近選択し た信号の次の遷移にカーソ ルが移動さ れます。 Enter キーを押しても、同じ よ う に移<br />

動されます。<br />

354 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


WaveScope<br />

[Move Cursor Last]<br />

一番最近選択し た信号の前の遷移にカーソ ルが移動さ れます。 Shift キーを押しながら Enter キーを<br />

押し て も、 同じ よ う に移動されます。<br />

[オプシ ョ ン] メニュー<br />

[オプシ ョ ン] メニューには、次の 4 つのコマンドが含まれます。<br />

[Grid Lines]<br />

時間軸のグ リ ッ ド が表示されます。<br />

[Show Values]<br />

数値が表示さ れます。 デフォル ト では、 オンになっています。 クリックすると、表示をオフにでき<br />

ます。<br />

[Run at End of Sim]<br />

WaveScope がシ ミ ュ レーシ ョ ンの終了時に実行さ れます。 デフォル ト では、 オンになっています。<br />

シミュレーションの終了時に WaveScope が開かないよ う にするには、 ク リ ッ ク して、 オフにし ま<br />

す。<br />

[Recording Limits]<br />

前述の 「レ コーデ ィ ング制限の変更」 に記述し た と お り 、 WaveScope で表示されるシ ミ ュ レーシ ョ<br />

ン時間を制限する ために使用し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 355<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

<strong>Xilinx</strong> LogiCORE のバージ ョ ン<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

ザイ リンクス<br />

LogiCORE<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

356 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

Accumulator Accumulator V7.0 • • • • •<br />

Addressable<br />

Shift Register<br />

4 5<br />

Accumulator V9.1 • • •<br />

RAM-based<br />

Shift Register<br />

RAM-based<br />

Shift Register<br />

AddSub Adder<br />

Subtractor<br />

Adder<br />

Subtractor<br />

V7.0 • • • • •<br />

V9.1 • • •<br />

V7.0 • • • • •<br />

V9.1 • • •<br />

CMult Multiplier V7.0 • • • • •<br />

Convolutional<br />

Encoder v3_0<br />

Convolutional<br />

Encoder v6_0<br />

Multiplier V10.0 • • •<br />

Convolutional<br />

Encoder<br />

Convolutional<br />

Encoder<br />

V3.0 • • • •<br />

V6.0 • • • •<br />

Counter Binary Counter V7.0 • • • • •<br />

DAFIR v9_0 Distributed<br />

Arithmetic FIR<br />

Filter<br />

DDS Compiler<br />

v1_1<br />

DDS Compiler<br />

v2_0<br />

Binary Counter V9.1 • • •<br />

DDS Compiler<br />

v1_1<br />

DDS Compiler<br />

v2_0<br />

V9.0 • • • • •<br />

V4.1 • • •<br />

V4.1 • • •<br />

DDS v4_0 DDS V4.1 • • •<br />

DDS v5_0 DDS V5.0 • • • • •


<strong>Xilinx</strong> LogiCORE のバージ ョ ン<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

Dual Port RAM Dual Port<br />

Block Memory<br />

Block Memory<br />

<strong>Generator</strong><br />

Distributed<br />

Memory<br />

Distributed<br />

Memory<br />

<strong>Generator</strong><br />

FFT v1_0 16 Pt Complex<br />

Fast Fourier<br />

Trans<strong>for</strong>m<br />

64 Pt Complex<br />

Fast Fourier<br />

Trans<strong>for</strong>m<br />

256 Pt<br />

Complex Fast<br />

Fourier<br />

Trans<strong>for</strong>m<br />

1024 Pt<br />

Complex Fast<br />

Fourier<br />

Trans<strong>for</strong>m<br />

FFT v3_1 Fast Fourier<br />

Trans<strong>for</strong>m<br />

FFT v3_2 Fast Fourier<br />

Trans<strong>for</strong>m<br />

FFT v4_1 Fast Fourier<br />

Trans<strong>for</strong>m<br />

FIFO Synchronous<br />

FIFO<br />

FIR Compiler<br />

v1_0<br />

FIR Compiler<br />

v2_0<br />

ザイ リンクス<br />

LogiCORE<br />

FIFO<br />

<strong>Generator</strong><br />

FIR Compiler<br />

FIR Compiler<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

V6.1 • • • • •<br />

V2.4 • • •<br />

V7.1 • • • • •<br />

V3.3 • • •<br />

V1.0 •<br />

V1.0 •<br />

V1.0 •<br />

V1.0 •<br />

V3.1 • • •<br />

V3.2 • • •<br />

V4.1 • • • • • •<br />

V5.0 • • • • •<br />

V3.3 • • •<br />

V1.0 •<br />

V2.0 • •<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 357<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5<br />

R


<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

FIR Compiler<br />

v3_0<br />

FIR Compiler<br />

v3_1<br />

R<br />

FIR Compiler<br />

FIR Compiler<br />

From FIFO FIFO<br />

<strong>Generator</strong><br />

Interleaver<br />

Deinterleaver<br />

v4_0<br />

Interleaver<br />

Deinterleaver<br />

v5_0<br />

V3.0 • • •<br />

V3.1 • • •<br />

V3.3 • • •<br />

Interleaver/<br />

De-Interleaver V4.0 • • • • •<br />

Interleaver/<br />

De-Interleaver V5.0 • • • • •<br />

Mult Multiplier V10.0 • • • • • • • •<br />

ROM Single Port<br />

Block Memory<br />

RS Decoder<br />

v5_1<br />

RS Decoder<br />

v6_0<br />

ザイ リンクス<br />

LogiCORE<br />

Block Memory<br />

<strong>Generator</strong><br />

Distributed<br />

Memory<br />

Distributed<br />

Memory<br />

<strong>Generator</strong><br />

RS Decoder<br />

RS Decoder<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

V6.1 • • • • •<br />

V2.4 • • •<br />

V7.1 • • • • •<br />

V3.3 • • •<br />

V5.1 • • • • •<br />

V6.0 • • • • •<br />

RS Encoder v5_0 RS Encoder V5.0 • • • • •<br />

RS Encoder v6_0 RS Encoder V6.0 • • • •<br />

SineCosine Sine Cosine V5.0 • • • • •<br />

358 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5


<strong>Xilinx</strong> LogiCORE のバージ ョ ン<br />

<strong>System</strong><br />

<strong>Generator</strong><br />

ブロック<br />

Single Port RAM Single Port<br />

Block Memory<br />

Block Memory<br />

<strong>Generator</strong><br />

Distributed<br />

Memory<br />

Distributed<br />

Memory<br />

<strong>Generator</strong><br />

To FIFO FIFO<br />

<strong>Generator</strong><br />

Viterbi Decoder<br />

v5_0<br />

Viterbi Decoder<br />

v6_0<br />

ザイ リンクス<br />

LogiCORE<br />

Viterbi<br />

Decoder<br />

Viterbi<br />

Decoder<br />

LogiCORE<br />

バージ ョ ン/<br />

データ シー ト<br />

Spartan Virtex<br />

II、 IIE 3、 3E 3A<br />

V6.1 • • • • •<br />

V2.4 • • •<br />

V7.1 • • • • •<br />

V3.3 • • •<br />

V3.3 • • •<br />

V5.0 • • • • •<br />

V6.0 • • • • •<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 359<br />

リリース 9.2.00 2007 年 8 月<br />

3A<br />

<strong>DSP</strong><br />

1、 E<br />

II、<br />

II Pro<br />

4 5<br />

R


R<br />

360 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


R<br />

第 2 章<br />

ザイ リンクス <strong>リファレンス</strong> ブロックセッ ト<br />

通信<br />

制御ロジ ッ ク<br />

<strong>DSP</strong><br />

含まれる リ ファ レンス ライブラリは次のとおりです。<br />

[Communication] ライブラリ<br />

BPSK AWGN Channel<br />

Convolutional Encoder<br />

Multipath Fading Channel Model<br />

White Gaussian Noise <strong>Generator</strong><br />

[Control Logic] ライブラリ<br />

Mealy State Machine<br />

Moore State Machine<br />

Registered Mealy State Machine<br />

Registered Moore State Machine<br />

[<strong>DSP</strong>] ライブラリ<br />

2 Channel Decimate by 2 MAC FIR Filter<br />

2n+1-tap Linear Phase MAC FIR Filter<br />

2n-tap Linear Phase MAC FIR Filter<br />

2n-tap MAC FIR Filter<br />

4-channel 8-tap Transpose FIR Filter<br />

4n-tap MAC FIR Filter<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 361<br />

リリース 9.2.00 2007 年 8 月


R<br />

画像<br />

演算<br />

[<strong>DSP</strong>] ライブラリ<br />

CIC Filter<br />

Dual Port Memory Interpolation MAC FIR Filter<br />

Interpolation Filter<br />

m-channel n-tap Transpose FIR Filter<br />

n-tap Dual Port Memory MAC FIR Filter<br />

n-tap MAC FIR Filter<br />

[Imaging] ライブラリ<br />

5x5Filter<br />

Virtex Line Buffer<br />

Virtex2 5 Line Buffer<br />

Virtex2 Line Buffer<br />

[Math] ライブラリ<br />

CORDIC ATAN<br />

CORDIC DIVIDER<br />

CORDIC LOG<br />

CORDIC SINCOS<br />

CORDIC SQRT<br />

362 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


2 Channel Decimate by 2 MAC FIR Filter<br />

2 Channel Decimate by 2 MAC FIR Filter<br />

積和ベースの FIR フィルタをインプリメントします。 n-tap フィルタでは、専用乗<br />

算器 1 つとデュアル ポー ト ブロッ ク RAM 1 つが使用されます。 時分割多重<br />

(TDM) の 2 つのチャ ネルが同じ MAC エンジンで一緒に処理されます。 各チャ ネ<br />

ルに指定する係数のセ ッ ト は、含まれる係数の数が同じであれば完全に異なってい<br />

てもかまいません。 フ ィルタでは、 多相フ ィルタ手法を使用して、 2 に固定された<br />

デシ メーシ ョ ンが実行されます。 フ ィ ルタの設定には、 複数の係数セ ッ ト および<br />

データ サンプルをフ ィルタ デザイ ンに格納する手法が示されます。 Virtex<br />

FPGA ファミ リ (および Virtex フ ァ ミ リ の派生デバイ ス) では、 高速で小型の加算器、 乗算器、 お<br />

よび柔軟な メ モ リ アーキテ ク チャ を構築する ための専用回路が提供さ れます。 フ ィルタ デザイ ン<br />

ではこれらのシリ コンの特性が活用され、 小型でリ ソース効率のよいデザインがインプリ メン ト さ<br />

れます。<br />

このフィルタ <strong>リファレンス</strong> ブロックには、インプリ メンテーショ ンの説明が提供されています。こ<br />

の説明は、モデル内でブロックを右クリックして [マスクブロックのモデル表示] をクリ ックすると<br />

表示されます。<br />

ブロック パラ メータ<br />

参考資料<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

このリ ファレンス ブロッ クのパラ メータは次のとおりです。<br />

• [Data Input Bit Width] : 入力サンプルの幅<br />

• [Data Input Binary Point] : 入力の 2 進小数点の位置<br />

• [Coefficient Vector (Ch.1)] : フィルタのチャネル l の係数を指定し ます。 タ ッ プ数は、係数ベク<br />

タのサイズから推論されます。<br />

• [Coefficient Vector (Ch.2)] : フィルタのチャネル 2 の係数を指定し ます。 タ ッ プ数は、 係数ベ<br />

ク タ のサ イ ズか ら 推論されます。<br />

メモ : 係数ベ ク タ のサ イ ズは同じ であ る必要があ り ます。 必要に応じ てパデ ィ ングを追加し、<br />

サイズを同じにします。<br />

• [Number of Bits per Coefficient] : 各係数のビ ッ ト 幅<br />

• [Binary Point per Coefficient] : 各係数の 2 進小数点の位置<br />

メモ : 係数ベ ク タ のサ イ ズは同じ であ る必要があ り ます。 必要に応じ てパデ ィ ングを追加し、<br />

サイズを同じにします。<br />

• [Sample Period] : 入力のサンプル周期<br />

J. Hwang、 J. Ballagh、 『Building Custom FIR Filters Using <strong>System</strong> <strong>Generator</strong>』、 12th International<br />

Field-Programmable Logic and Applications Conference (FPL) (2002 年 9 月、 モンペ リ エ (フラン<br />

ス) にて開催)、 LNCS (Lecture Notes in Computer Science) Vol. 2438<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 363<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

2n+1-tap Linear Phase MAC FIR Filter<br />

積和ベースの FIR フィルタをインプリメントします。 このフィルタでは、 奇数<br />

個の係数の係数対称を利用し て、フ ィ ルタ のスループ ッ ト を向上させます。フ ィ<br />

ルタ デザイ ンでは、 Virtex ファ ミ リ FPGA のシ リ コンの特性 (高速で小型の加<br />

算器、 乗算器、 および柔軟な メ モ リ アーキテ ク チャ を構築する ための専用回路)<br />

が利用されます。<br />

このフィルタ <strong>リファレンス</strong> ブロックには、インプリ メンテーションの説明が提供されています。こ<br />

の説明は、モデル内でブロ ッ ク を右ク リ ッ ク し て [マスクブロックのモデル表示] をク リ ックすると<br />

表示されます。<br />

ブロック パラ メータ<br />

参考資料<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Coefficients] : フ ィ ル タの係数を指定し ます。 タ ッ プ数は、 係数ベク タ のサ イ ズか ら推論さ れ<br />

ます。<br />

• [Number of Bits per Coefficient] : 各係数のビ ッ ト 幅<br />

• [Binary Point <strong>for</strong> Coefficient] : 各係数の 2 進小数点の位置<br />

• [Number of Bits per Input Sample] : 入力サンプルの幅<br />

• [Binary Point <strong>for</strong> Input Samples] : 入力の 2 進小数点の位置<br />

• [Input Sample Period] : 入力のサンプル周期<br />

J. Hwang、 J. Ballagh、 『Building Custom FIR Filters Using <strong>System</strong> <strong>Generator</strong>』、 12th International<br />

Field-Programmable Logic and Applications Conference (FPL) (2002 年 9 月、 モンペ リ エ (フラン<br />

ス) にて開催)、 LNCS (Lecture Notes in Computer Science) Vol. 2438<br />

364 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


2n-tap Linear Phase MAC FIR Filter<br />

2n-tap Linear Phase MAC FIR Filter<br />

積和ベース の FIR フィルタをインプリメントします。 このブロックでは、 偶数個<br />

の係数の係数対称を利用し て、フ ィ ルタ のスループ ッ ト を向上させます。 フィルタ<br />

デザイ ンでは、Virtex ファミ リ FPGA のシ リ コンの特性 (高速で小型の加算器、乗<br />

算器、 および柔軟な メ モ リ アーキテ ク チャ を構築する ための専用回路) が利用さ<br />

れます。<br />

このフィルタ <strong>リファレンス</strong> ブロックには、インプリ メンテーションの説明が提供されています。こ<br />

の説明は、モデル内でブロ ッ ク を右ク リ ッ ク し て [マスクブロックのモデル表示] をク リ ックすると<br />

表示されます。<br />

ブロック パラ メータ<br />

参考資料<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Coefficients] : フ ィ ル タの係数を指定し ます。 タ ッ プ数は、 係数ベク タ のサ イ ズか ら推論さ れ<br />

ます。<br />

• [Number of Bits per Coefficient] : 各係数のビ ッ ト 幅<br />

• [Binary Point <strong>for</strong> Coefficient] : 各係数の 2 進小数点の位置<br />

• [Number of Bits per Input Sample] : 入力サンプルの幅<br />

• [Binary Point <strong>for</strong> Input Samples] : 入力の 2 進小数点の位置<br />

• [Input Sample Period] : 入力のサンプル周期<br />

J. Hwang、 J. Ballagh、 『Building Custom FIR Filters Using <strong>System</strong> <strong>Generator</strong>』、 12th International<br />

Field-Programmable Logic and Applications Conference (FPL) (2002 年 9 月、 モンペ リ エ (フラン<br />

ス) にて開催)、 LNCS (Lecture Notes in Computer Science) Vol. 2438<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 365<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

2n-tap MAC FIR Filter<br />

積和ベースの FIR フィルタをインプリ メントします。 n-tap、 2n-tap、 4n-tap フィル<br />

タでは、それぞれ 1 つ、 2 つ、 および 4 つの Virtex-II 専用乗算器が使用されます。 こ<br />

れら 3 とおりのフィルタ コンフィギュレーションによ り、 フィルタのスループッ ト<br />

と デバ イ スの リ ソ ース使用の ト レー ド オフが示さ れます。 Virtex FPGA ファミ リ (お<br />

よび Virtex フ ァ ミ リ の派生デバイ ス) では、 高速で小型の加算器、 乗算器、 および柔<br />

軟な メ モ リ アーキテ ク チ ャ を構築する ための専用回路が提供さ れます。 フィルタ デ<br />

ザインではこれらのシ リ コンの特性が活用され、 小型で リ ソース効率のよいデザインがインプ リ メ<br />

ントされます。<br />

このフィルタ <strong>リファレンス</strong> ブロックには、インプリ メンテーションの説明が提供されています。こ<br />

の説明は、モデル内でブロ ッ ク を右ク リ ッ ク し て [マスクブロックのモデル表示] をク リ ックすると<br />

表示されます。<br />

ブロック パラ メータ<br />

参考資料<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Coefficients] : フ ィ ル タの係数を指定し ます。 タ ッ プ数は、 係数ベク タ のサ イ ズか ら推論さ れ<br />

ます。<br />

• [Number of Bits per Coefficient] : 各係数のビ ッ ト 幅<br />

• [Binary Point <strong>for</strong> Coefficient] : 各係数の 2 進小数点の位置<br />

• [Number of Bits per Input Sample] : 入力サンプルの幅<br />

• [Binary Point <strong>for</strong> Input Samples] : 入力の 2 進小数点の位置<br />

• [Input Sample Period] : 入力のサンプル周期<br />

J. Hwang、 J. Ballagh、 『Building Custom FIR Filters Using <strong>System</strong> <strong>Generator</strong>』、 12th International<br />

Field-Programmable Logic and Applications Conference (FPL) (2002 年 9 月、 モンペ リ エ (フラン<br />

ス) にて開催)、 LNCS (Lecture Notes in Computer Science) Vol. 2438<br />

366 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


4-channel 8-tap Transpose FIR Filter<br />

4-channel 8-tap Transpose FIR Filter<br />

ブロック パラ メータ<br />

4 チャネル 8 タ ッ プの転置型 FIR フィルタをインプリメントします。 転置<br />

構造はザイ リ ン ク ス FPGA でのデータ パス処理に適しており、 よ り大型<br />

のフ ィ ルタ に容易に拡張で き ます。 フィルタでは、Virtex ファミ リ FPGA<br />

のシ リ コンの特性 (高速で小型の加算器、乗算器、および柔軟な メ モ リ アー<br />

キテ ク チャ を構築する ための専用回路) が利用されます。<br />

このフィルタ <strong>リファレンス</strong> ブロッ クには、 インプリ メンテーショ ンの説<br />

明が提供されています。 こ の説明は、 モデル内でブロ ッ ク を右ク リ ッ ク し<br />

て [マスクブロッ クのモデル表示] を ク リ ッ クする と 表示 さ れます。<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Coefficients] : フ ィ ル タの係数を指定し ます。 タ ッ プ数は、 係数ベク タ のサ イ ズか ら推論さ れ<br />

ます。<br />

• [Number of Bits per Coefficient] : 各係数のビ ッ ト 幅<br />

• [Binary Point <strong>for</strong> Coefficient] : 各係数の 2 進小数点の位置<br />

• [Number of Bits per Input Sample] : 入力サンプルの幅<br />

• [Binary Point <strong>for</strong> Input Samples] : 入力の 2 進小数点の位置<br />

• [Input Sample Period] : 入力のサンプル周期<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 367<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

4n-tap MAC FIR Filter<br />

積和ベースの FIR フィルタをインプリ メントします。 n-tap、 2n-tap、 4n-tap フィ<br />

ルタでは、 それぞれ 1 つ、 2 つ、 および 4 つの Virtex-II 専用乗算器が使用さ れま<br />

す。 これら 3 とおりのフィルタ コンフィギュレーションにより、フィルタのスルー<br />

プッ ト とデバイスのリ ソース使用のト レードオフが示されます。 Virtex FPGA<br />

ファ ミ リ (および Virtex フ ァ ミ リ の派生デバイ ス) では、 高速で小型の加算器、 乗<br />

算器、 および柔軟な メ モ リ アーキテ ク チャ を構築する ための専用回路が提供さ れ<br />

ます。 フィルタ デザイ ンではこれらのシ リ コ ンの特性が活用され、小型で リ ソース<br />

効率の よ いデザ イ ンが イ ンプ リ メ ン ト さ れます。<br />

このフィルタ <strong>リファレンス</strong> ブロックには、インプリ メンテーションの説明が提供されています。こ<br />

の説明は、モデル内でブロ ッ ク を右ク リ ッ ク し て [マスクブロックのモデル表示] をク リ ックすると<br />

表示されます。<br />

ブロック パラ メータ<br />

参考資料<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Coefficients] : フ ィ ル タの係数を指定し ます。 タ ッ プ数は、 係数ベク タ のサ イ ズか ら推論さ れ<br />

ます。<br />

• [Number of Bits per Coefficient] : 各係数のビ ッ ト 幅<br />

• [Binary Point <strong>for</strong> Coefficient] : 各係数の 2 進小数点の位置<br />

• [Number of Bits per Input Sample] : 入力サンプルの幅<br />

• [Binary Point <strong>for</strong> Input Samples] : 入力の 2 進小数点の位置<br />

• [Input Sample Period] : 入力のサンプル周期<br />

J. Hwang、 J. Ballagh、 『Building Custom FIR Filters Using <strong>System</strong> <strong>Generator</strong>』、 12th International<br />

Field-Programmable Logic and Applications Conference (FPL) (2002 年 9 月、 モンペ リ エ (フラン<br />

ス) にて開催)、 LNCS (Lecture Notes in Computer Science) Vol. 2438<br />

368 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


5x5Filter<br />

5x5Filter<br />

5 つの n-tap MAC FIR フィルタを使用してインプリメントされます。 n-tap MAC<br />

FIR フィルタは、[<strong>Xilinx</strong> Reference Blockset] → [<strong>DSP</strong>] ライブラリに含まれてい<br />

ます。<br />

グレー スケールの画像をフィルタする 9 つの異な る 2-D フ ィルタがあります。<br />

フ ィ ルタ を選択する には、 5x5 フ ィルタ ブロックのマスク パラ メータを変更し<br />

ます。 2-D フ ィ ルタ係数はブ ロ ッ ク RAM に格納さ れ、 モデルでは係数は最適化<br />

されません。 [Initialization] タブで 5x5 フ ィルタ ブロッ クのマスクを変更する<br />

と 、 代わ り に独自の係数 と ス ケール係数を使用で き ます。<br />

9 つのフ ィ ルタで使用されている係数を次に示し ます。 フ ィルタの出力は、Div と呼<br />

ばれる ス ケール係数で乗じ られます。<br />

edge = [ 0 0 0 0 0; ...<br />

0 -1 -1 -1 0; ...<br />

0 -1 -1 -1 0; ...<br />

0 0 0 0 0];<br />

edgeDiv = 1;<br />

sobelX = [ 0 0 0 0 0; ...<br />

0 -1 0 1 0; ...<br />

0 -2 0 2 0; ...<br />

0 -1 0 1 0; ...<br />

0 0 0 0 0];<br />

sobelXDiv = 1;<br />

sobelY = [ 0 0 0 0 0; ...<br />

0 1 2 1 0; ...<br />

0 0 0 0 0; ...<br />

0 -1 -2 -1 0; ...<br />

0 0 0 0 0];<br />

sobelYDiv = 1;<br />

sobelXY = [ 0 0 0 0 0; ...<br />

0 0 -1 -1 0; ...<br />

0 1 0 -1 0; ...<br />

0 1 1 0 0; ...<br />

0 0 0 0 0];<br />

sobelXYDiv = 1;<br />

blur = [ 1 1 1 1 1; ...<br />

1 0 0 0 1; ...<br />

1 0 0 0 1; ...<br />

1 0 0 0 1; ...<br />

1 1 1 1 1];<br />

blurDiv = 1/16;<br />

smooth = [ 1 1 1 1 1; ...<br />

1 5 5 5 1; ...<br />

1 5 44 5 1; ...<br />

1 5 5 5 1; ...<br />

1 1 1 1 1];<br />

smoothDiv = 1/100;<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 369<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

sharpen = [ 0 0 0 0 0; ...<br />

0 -2 -2 -2 0; ...<br />

0 -2 32 -2 0; ...<br />

0 -2 -2 -2 0; ...<br />

0 0 0 0 0];<br />

sharpenDiv = 1/16;<br />

gaussian = [1 1 2 1 1; ...<br />

1 2 4 2 1; ...<br />

2 4 8 4 2; ...<br />

1 2 4 2 1; ...<br />

1 1 2 1 1];<br />

gaussianDiv = 1/52;<br />

identity = [ 0 0 0 0 0; ...<br />

0 0 0 0 0; ...<br />

0 0 1 0 0; ...<br />

0 0 0 0 0; ...<br />

0 0 0 0 0];<br />

identityDiv = 1;<br />

このフィルタでは、スライス 309 個、専用乗算器 5 個、ザイ リ ン ク ス XC2V250-6 デバイ スの RAM<br />

ブロック 5 個が使用さ れ、213MHz (Advanced スピード ファイル 1.96、ISE 4.2.01i ソフトウェア)<br />

で動作し ます。<br />

基礎 と な る 5-tap MAC FIR フィルタは、入力レートの 5 倍の速さ で動作し ます。 このため、デザイ<br />

ンのスループッ ト は 213MHz / 5 = 426,000,000 ピクセル/秒となります。 64 × 64 の画像では、 こ<br />

れは 42.6 × 10^6/(64 × 64) = 10,400 フレーム/秒、 256 × 256 の画像ではスループ ッ ト は 650 フ<br />

レーム/秒、 512 × 512 の画像では 162 フレーム/秒となります。<br />

ブロック パラ メータ<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [5x5 Mask] : [Edge]、 [Sobel X]、 [Sobel Y]、 [Sobel X-Y]、 [Blur]、 [Smooth]、 [Sharpen]、<br />

[Gaussian]、 または [Identity] フ ィ ルタ の係数が選択で き ます。<br />

• [Sample Period] : 入力信号のサンプル周期を必ず指定し ます。<br />

370 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


BPSK AWGN Channel<br />

BPSK AWGN Channel<br />

入力信号にス ケール された白色ガ ウ ス雑音を追加し ます。 白色ガ ウ ス雑音は、<br />

White Gaussian Noise <strong>Generator</strong> <strong>リファレンス</strong> ブロックで生成されます。<br />

こ の ノ イ ズは、 ノ イ ズのばら つき を調整する ため、 次に示すよ う に SNR に基づ<br />

いてスケールされます。 ユニッ ト シンボル エネルギー (Es = 1) を使用する符号化<br />

されていない BPSK では、 SNR は Eb/No で、 dB の単位で表されます。 SNR 入<br />

力は UFix8_4 で、 有効な範囲は 0.0625 刻みで 0.0 ~ 15.9375dB です。<br />

符号付き シ ス テムで AWGN を使用する場合、 ま たはコ ア を異な る変調形式で使<br />

用する場合は、 SNR を調整し て スペク ト ル効率の違いに対応する必要があ り ま<br />

す。 コード レート が 1/2 の BPSK で、 Es = 1 および No が定数であ る場合は、 Eb = 2 および<br />

Eb/No = SNR + 3 dB となります。 符号化 さ れていない QPSK で、 I = +/-1 および Q = +/-1、 独立<br />

したノイズ シーケンスが加わる場合は、 各チャネルは独立した BPSK チャネルのよ うになり、<br />

Eb/No = SNR となります。 この QPSK に コード レート 1/2 を追加する と 、 Eb/No = SNR + 3 dB<br />

となります。<br />

AWGN チャネルの全体的なレイテンシは、 15 クロック サイクルです。 チャ ネル出力は 17 ビット<br />

(2 進小数点以下が 11 ビッ ト) の符号付きの値です。 入力ポー ト SNR のデータ型は任意です。 リ<br />

セッ ト ポー ト はブール型、din 入力ポー ト は 2 進小数点の位置が 0 である符号なし 1 ビッ ト値であ<br />

る必要があ り ます。<br />

ブロック パラ メータ<br />

参考資料<br />

[Decimal Seed Value] : 10 進開始シー ド 値<br />

1. A. Ghazel, E. Boutillon、 J. L. Danger、 G. Gulak and H. Laamari、 『Design and Per<strong>for</strong>mance<br />

Analysis of a High Speed AWGN Communication Channel Emulator』 、IEEE PACRIM<br />

Conference (2001 年 8 月 ブリティッシュ コロンビア州ビクト リア (カナダ) にて開催)<br />

2. ザイ リンクス データ シー ト 、 『Additive White Gaussian Noise (AWGN) Core v1.0』 、<strong>Xilinx</strong>,<br />

Inc.、 2002 年 10 月<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 371<br />

リリース 9.2.00 2007 年 8 月<br />

R


CIC Filter<br />

R<br />

このフィルタはマルチレート フィルタで、デジタル システムにおけるサンプル レー<br />

ト の大幅な変化の検出に使用さ れます。 デシ メーシ ョ ン構造、 イ ンターポレーシ ョ ン<br />

構造の両方がサポー ト さ れます。 CIC フ ィ ルタ には乗算器が含まれず、 加算器、 減算<br />

器、 およびレ ジ ス タ のみが含まれます。 通常は、 信号の帯域幅よ り も シ ス テムのサン<br />

プルレー ト がかな り 大きい場合のよ う に、 サンプル レート が非常に大きなアプ リ<br />

ケーシ ョ ンで使用されます。 このフィルタは、 デジタル ダウン コンバータおよびデジタル アップ<br />

コ ンバータ で頻繁に使用されます。<br />

このフィルタ <strong>リファレンス</strong> ブロックには、インプリ メンテーションの説明が提供されています。こ<br />

の説明は、モデル内でブロ ッ ク を右ク リ ッ ク し て [マスクブロックのモデル表示] をク リ ックすると<br />

表示されます。<br />

ブロック インターフェイス<br />

CIC ブロックには次のシングル データ入力ポー ト およびデータ出力ポー ト があ り ます。<br />

• xn : データ入力ポー ト 。 1 ~ 128 ビッ ト。<br />

• yn : データ出力ポー ト<br />

CIC フ ィ ル タ の基本的な構成要素は、 積分器 と く し形フ ィ ル タ です。 1 つの積分器は、 次の伝達関<br />

数を使用する シングル ポールの IIR フィルタです。<br />

H(z) = (1 - z-1 ) -1<br />

積分器の直結フ ィ ー ド バ ッ ク 係数は、 y[n] = y[n-1] + x[n] です。<br />

1 つの く し形フ ィ ル タは、 次の式で表現される奇数対称の FIR フィルタです。<br />

y[n] = x[n] - x[n - RM]<br />

ここで M は、 ブロ ッ ク パ ラ メ ータ で選択 さ れた差動遅延、 R は選択された整数レー ト の変更係数<br />

です。 くし形フィルタ 1 段の伝達関数は次の と お り です。<br />

H(z) = 1 -z-RM 次の 2 つの図に見られる よ う に、 CIC フィルタでは N 個の積分器セ ク シ ョ ンが N 個の く し形セク<br />

ションにカスケード接続されます。 積分器構造および く し形構造がレー ト の変化の影響を受けない<br />

ように、セクション間には Up Sample や Down Sample などのレート変更ブロッ クが挿入されま<br />

す。 インターポレータでは、Up Sample ブロックによ り、値が 0 のサンプルが R-1 個、 く し形セ ク<br />

ションの出力の連続したサンプルの間に挿入され、 レートが R 倍にな り ます。 デシ メータでは、<br />

Down Sample ブ ロ ッ ク に よ り 、最後の積分器段か ら出力のサブサンプルが削除 さ れ、サンプル レー<br />

トが 1/R にな り ます。<br />

372 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


CIC Filter<br />

ブロック パラ メータ<br />

参考資料<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Input Bit Width] : 入力サンプルの幅<br />

• [Input Binary Point] : 入力の 2 進小数点の位置<br />

• [Filter Type] : [Interpolator] または [Decimator]<br />

• [Sample Rate Change] : 8 ~ 16384<br />

• [Number of Stages] : 1 ~ 32<br />

• [Differential Delay] : 1 ~ 4<br />

• [Pipeline Differentiators] : オンまたはオフ<br />

このブロックで使用されるその他のパラメータは、 「ブロ ッ ク のパラ メ ータ ダイアログ ボックスの<br />

共通オプシ ョ ン」 で説明されています。<br />

E. B. Hogenauer、 『An economical class of digital filters <strong>for</strong> decimation and interpolation』 、IEEE<br />

トランザクション 「Acoustics, Speech and Signal Processing」 vol. ASSP- 29(2)、 1981 年、<br />

pp. 155 ~ 162<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 373<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Convolutional Encoder<br />

たたみ込み符号のエン コーダ を イ ンプ リ メ ン ト し ます。 通常 Viterbi デコーダと併用<br />

さ れ、 デジ タル通信シ ス テムで順方向誤 り 訂正 (FEC) を実行し ます。<br />

値のエン コード には リ ニア フィード フォワード シフ ト レジスタが使用され、 次の<br />

図に示すよ う に、入力データ を ス ラ イ ド させなが ら モジ ュ ロ 2 の和を算出し ます。 シ<br />

フト レ ジ ス タ長は制約長で指定されます。 たたみ込み符号では、データ枠のどのビ ッ<br />

トをモジュロ 2 に加算する かが指定 さ れます。 ブロッ クを リセッ トする と、シフ ト レジスタが 0 に<br />

設定 さ れます。 エン コーダのレー ト は、 入力ビ ッ ト 長の出力ビ ッ ト 長に対する比率です。 レー ト が<br />

1/2 のエン コーダか ら は、 各入力ビ ッ ト ご と に 2 ビ ッ ト が出力さ れます。 同様に、 レー ト が 1/ 3 の<br />

エン コーダか ら は、 各入力ビ ッ ト ご と に 3 ビ ッ ト が出力 さ れます。<br />

インプリメンテーション<br />

ブ ロ ッ ク は、パ ラ メ ータ指定可能なマルチプレ ク サ ベースの コ ラ プスの一種を使用し て イ ンプ リ メ<br />

ントされます。 この方法では、 ロジック ブ ロ ッ ク が定数で駆動さ れます。 こ こ では定数はたたみ込<br />

み符号で、 リ ニア フィード フォワード シフ ト レ ジ ス タ のどのレ ジ ス タ を出力の計算に使用する か<br />

を決定します。 定数で駆動さ れる ロ ジ ッ ク はすべて、 合成ツールで最適化さ れて削除さ れます。<br />

374 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Convolutional Encoder<br />

ブロック インターフェイス<br />

現在 こ のブ ロ ッ ク には 3 つの入力ポー ト と 3 つの出力ポー ト があ り ます。 din ポー ト のタ イプは<br />

UFix1_0 である必要があ り ます。 ここでエンコードされる値が許可されます。 vin ポー ト は、 din に<br />

示された値が有効であるこ とを表します。 有効な値のみがエン コー ド さ れます。 リセット ポー ト で<br />

は、 High の場合にたたみ込みエン コーダが リ セ ッ ト さ れます。 イネーブル ポー ト を追加する には、<br />

サブシステムを開き、定数 Enable を入力ポート に変更し ます。 出力ポー ト dout0 および dout1 から<br />

は、 エン コー ド さ れたデータ が出力 さ れます。 ポー ト dout0 は配列の最初の符号、 dout1 は 2 番目、<br />

という よ うに対応します。 出力ポー ト を追加するには、 サブシ ス テムを開き、 モデルに示 さ れる手<br />

順に従います。 出力ポー ト vout は、 出力値が有効かど う かを示し ます。<br />

ブロック パラ メータ<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Constraint Length] : 制約長。 n+1 で、 n はエンコーダに含まれる制約レジス タ長。<br />

• [Convolutional code array (octal)] : 8 進数のたたみ込み符号の配列。 出力レー ト は配列長か ら<br />

派生し ます。 2 ~ 7 の符号を指定し ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 375<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

CORDIC ATAN<br />

Circular Vectoring モー ド で完全にパラ レルな CORDIC (COordinate Rotation<br />

DIgital Computer) アルゴ リ ズムを使用し て、 直交座標か ら極座標への変換を イ ン<br />

プリメントします。<br />

入力を と する と 、 絶対値 m = K × sqrt (x 2 + y 2 ) および角度 a = arctan(y/x)<br />

より新しいベクタ が算出されます。 通常どお り 、 絶対値のス ケール係数<br />

K = 1.646760... はプ ロ セ ッ サでは補正 さ れないので、 絶対値出力を こ の係数で ス<br />

ケールする必要があ り ます。 CORDIC プロセッサのインプリ メン トには、 ザイ リ ンクス ブロック<br />

セッ トのブロックが使用されます。<br />

ブロック パラ メータ<br />

参考資料<br />

このアルゴリズムは、 次の 3 段階で イ ンプ リ メ ン ト さ れます。<br />

1. 大まかな角度の回転 : このアルゴリズムでは、 -π/2 ~ π/2 の角度のみが収束されます。 x < 0<br />

の場合、 入力ベク タ を対称移動し て X 座標を負でない値に し、 第 1 象限および第 3 象限に移<br />

動します。<br />

2. 詳細な角度の回転 : 直交座標か ら極座標に変換する ため、 結果のベ ク タ を y が 0 に近づ く よ う<br />

に少しずつ回転し ます。 i 段目での回転角度は、 +/- atan(1/2i ) (正負は、 入力 y が負の場合は正<br />

で、 正の場合は負) にな り ます。<br />

3. 角度修正 : 手順 1 で対称移動が実行 された場合は、 +/-πから減算して修正します。<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Number of Processing Elements] : 詳細な角度の回転での段の反復回数を指定し ます。<br />

• [X,Y Data Width] : 入力 x および y の幅を指定し ます。 入力 x および y はデータ幅が同じで、<br />

符号付き であ る必要があ り ます。<br />

• [X,Y Binary Point Position] : 入力 x および y の 2 進小数点の位置を指定し ます。 入力 x および<br />

y は 2 進小数点の位置が同じ で、 符号付き であ る必要があ り ます。<br />

• [Latency <strong>for</strong> each Processing Element] : 各循環回転段の後のパイ プ ラ イ ン レイテンシを設定<br />

します。<br />

こ のブ ロ ッ ク のレ イ テンシは、 次の式に基づいて算出さ れます。<br />

Latency = 3 + sum (処理エ レ メ ン ト のレ イ テンシ)<br />

1. J. E. Volder、 『The CORDIC Trigonometric Computing Technique』 、IRE トランザクション、<br />

Electronic Computers、 Vol. EC-8、 1959 年、 pp. 330 ~ 334<br />

2. J. S. Walther、 『A Unified Algorithm <strong>for</strong> Elementary Functions』 、Spring Joint Computer<br />

Conference、 1971 年、 pp. 379 ~ 385<br />

3. Yu Hen Hu、『CORDIC-Based VLSI Architectures <strong>for</strong> Digital Signal Processing』、IEEE Signal<br />

Processing Magazine、 1992 年 7 月、 pp. 17 ~ 34<br />

376 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


CORDIC DIVIDER<br />

CORDIC DIVIDER<br />

ブロック パラ メータ<br />

参考資料<br />

Linear Vectoring モー ド で完全にパラ レルな CORDIC (COordinate Rotation<br />

DIgital Computer) アルゴ リ ズムを使用し て、 除算回路を イ ンプ リ メ ン ト し ます。<br />

入力を とすると、 出力 y/x が算出されます。 CORDIC プロセッサのインプ<br />

リメントには、ザイリンクス ブロックセッ トのブロックが使用されます。<br />

このアルゴリズムは、 次の 4 段階で イ ンプ リ メ ン ト さ れます。<br />

1. 座標回転 : CORDIC アルゴ リ ズムでは、 x の正の値のみが収束されます。 x および y 座標を負<br />

でない値に し、 入力ベク タ を第 1 象限に移動し ます。 こ の回路は、 最小の負の値を除 く X およ<br />

び Y のすべての値を収束させる よ う に設計されています。<br />

2. 正規化 : CORDIC アルゴ リ ズムでは、2x 以下の y のみが収束されます。 入力 x および y を、最<br />

上位ビ ッ ト (MSB) が 1 になるまで左にシフ ト します。 y の x に相対する シ フ ト は記録され、座<br />

標修正段に渡されます。<br />

3. リニア回転 : 比を算出する ため、 結果のベ ク タ を y が 0 に近づ く よ う に少しずつ回転し ます。<br />

回転の最終段で、 y/x が得られます。<br />

4. 座標修正 : 座標軸の移動および x に相対する y のシフ ト に基づき、 結果の比に正しい符合を割<br />

り当て、 2^ (x に相対する y のシフ ト) で乗算し ます。<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Number of Processing Elements] : リ ニア回転での段の反復回数を指定し ます。<br />

• [X,Y Data Width] : 入力 x および y の幅を指定し ます。 入力 x および y はデータ幅が同じで、<br />

符号付き であ る必要があ り ます。<br />

• [X,Y Binary Point Position] : 入力 x および y の 2 進小数点の位置を指定し ます。 入力 x および<br />

y は 2 進小数点の位置が同じ で、 符号付き であ る必要があ り ます。<br />

• [Latency <strong>for</strong> each Processing Element] : 各 リ ニア回転段の後のパイ プ ラ イ ン レイテンシを設<br />

定します。<br />

こ のブ ロ ッ ク のレ イ テンシは、 次の式に基づいて算出さ れます。<br />

Latency = 4 + data width + sum (処理エレ メ ン ト のレ イ テンシ)<br />

1. J. E. Volder、 『The CORDIC Trigonometric Computing Technique』 、IRE トランザクション、<br />

Electronic Computers 、 Vol. EC-8、 1959 年、 pp. 330 ~ 334<br />

2. J. S. Walther、 『A Unified Algorithm <strong>for</strong> Elementary Functions』 、Spring Joint Computer<br />

Conference、 1971 年、 pp. 379 ~ 385<br />

3. Yu Hen Hu、『CORDIC-Based VLSI Architectures <strong>for</strong> Digital Signal Processing』、IEEE Signal<br />

Processing Magazine、 1992 年 7 月、 pp. 17 ~ 34<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 377<br />

リリース 9.2.00 2007 年 8 月<br />

R


CORDIC LOG<br />

R<br />

Hyperbolic Vectoring モード で完全にパラ レルな CORDIC (COordinate Rotation<br />

DIgital Computer) アルゴ リ ズム を使用し て、 自然対数回路を イ ンプ リ メ ン ト し<br />

ます。<br />

入力を x とすると、 log(x) が算出 さ れ、 複素出力が必要な場合は、 複素 π 値を<br />

追加する ためのフ ラ グ も出力 さ れます。 CORDIC プロセッサのインプリ メン ト<br />

には、 ザイ リ ン ク ス ブロッ クセッ トのブロッ クが使用されます。<br />

自然対数は、 CORDIC アルゴ リ ズムで次の式を使用し て間接的に計算されます。<br />

log (w) = 2 × tanh -1 [(w-1) / (w+1)]<br />

log ( w × 2 E ) = log (w) + E × log (2)<br />

ブロック パラ メータ<br />

このアルゴリズムは、 次の 4 段階で イ ンプ リ メ ン ト さ れます。<br />

1. 座標回転 : CORDIC アルゴ リ ズムでは、正の x 値のみが収束されます。 x < 0 の場合、入力デー<br />

タ を負でない値に変換し ます。x = 0 の場合、 0 が検出された こ と を示すフ ラ グを出力段に接続<br />

されている最終段に伝搬し ます。 こ の回路は、 最小の負の値を除 く x のすべての値を収束させ<br />

る よ う に設計されています。<br />

2. 正規化 : CORDIC アルゴリ ズムでは、値が 0.5 ~ 1 である x のみが収束さ れま す。 正規化では、<br />

入力 x を 最上位ビ ッ ト が 1 になる まで左にシフト し ます。 対数出力は、 log(w) = 2 × tanh-1 {(w - l) / (w + 1)} の式よ り 得ら れま す。 こ の式に基づき、 入力 w は x = w + 1 および y=w-1<br />

に対応付け られます。<br />

3. リニア回転 : tanh -1 {(w - l) / (w + 1)} を算出する ため、 結果のベク タ を y が 0 に近づ く よ う に<br />

少しずつ回転し ます。<br />

4. 座標修正 : 入力が負で複素出力が必要な場合、 π を追加する ために、CMPLX_PI フラグを出力<br />

します。 左シフ ト が x に適用さ れてい る場合、 log (w x 2 E ) = log (w) + E x log (2) の式で出力<br />

を調整します。<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Number of Processing Elements] : 双曲線回転での段の反復回数を指定し ます。<br />

• [Input Data Width] : 入力 x の幅を指定し ます。 入力 x は指定さ れたデータ幅で、 符号付き であ<br />

る必要があ り ます。<br />

• [Input Binary Point Position] : 入力 x の 2 進小数点の位置を指定し ます。 入力 x は 2 進小数点<br />

が指定された位置にあ り 、 符号付き であ る必要があ り ます。<br />

• [Latency <strong>for</strong> each Processing Element] : 各双曲線回転段の後のパイ プ ラ イ ン レイテンシを設<br />

定します。<br />

こ のブ ロ ッ ク のレ イ テンシは、 次の式に基づいて算出さ れます。<br />

Latency = 2 + Data Width + sum (処理エレ メ ン ト のレ イ テンシ)<br />

378 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


CORDIC LOG<br />

参考資料<br />

1. J. E. Volder、 『The CORDIC Trigonometric Computing Technique』 、IRE トランザクション、<br />

Electronic Computers 、 Vol. EC-8、 1959 年、 pp. 330 ~ 334<br />

2. J. S. Walther、 『A Unified Algorithm <strong>for</strong> Elementary Functions』 、Spring Joint Computer<br />

Conference、 1971 年、 pp. 379 ~ 385<br />

3. Yu Hen Hu、『CORDIC-Based VLSI Architectures <strong>for</strong> Digital Signal Processing』、IEEE Signal<br />

Processing Magazine、 1992 年 7 月、 pp. 17 ~ 34<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 379<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

CORDIC SINCOS<br />

ブロック パラ メータ<br />

参考資料<br />

Circular Rotation モー ド で完全にパラ レルな CORDIC (COordinate Rotation<br />

DIgital Computer) アルゴ リ ズムを使用し て、 サ イ ン波およびコ サ イ ン波生成回路<br />

をインプリ メント します。<br />

入力角度を z とすると、出力 cosine (z) および sine (z) が算出されます。 CORDIC<br />

プロセッサのインプリ メン トには、 ザイ リ ンクス ブロッ クセッ トのブロッ クが使<br />

用されます。 このアルゴリズムは、 次の 3 段階で イ ンプ リ メ ン ト さ れます。<br />

1. 大まかな角度の回転 : -π/2 ~ π/2 の角度のみが収束されます。 z > π/2 の場合、π/2 を減算し<br />

て第 1 象限に対称移動し ます。 z < -π/2 の場合、 π/2 を加算して第 3 象限に対称移動し ます。<br />

こ の回路は、 最小の負の値を除 く z のすべての値を収束させる よ う に設計されています。<br />

2. 詳細な角度の回転 : x を 1/1.646760 に、 y を 0 に設定し、 回転モード の CORDIC プロセッサ<br />

で、 入力角度 z のコサ イ ン波およびサ イ ン波を生成し ます。<br />

3. 座標修正 : 手順 1 で対称移動が実行 さ れた場合は、 こ の段階で修正し ます。<br />

z > π/2 の場合、 z = t + πi/2 を使用<br />

sin (z ) = sin(t).cos(pi/2) + cos(t).sin(pi/2) = cos(t)<br />

cos (z ) = cos(t).cos(pi/2) - sin(t).sin(pi/2) = -sin(t)<br />

z < π/2 の場合、 z = t - π/2 を使用<br />

sin (z ) = sin(t).cos(-pi/2) + cos(t).sin(-pi/2) = -cos(t)<br />

cos (z ) = cos(t).cos(-pi/2) - sin(t).sin(-pi/2) = sin(t)<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Number of Processing Elements] : リ ニア回転での段の反復回数を指定し ます。<br />

• [Input Data Width] : 入力 z の幅を指定し ます。 入力 z は指定さ れたデータ幅で、 符号付き であ<br />

る必要があ り ます。<br />

• [Input Binary Point Position] : 入力 z の 2 進小数点の位置を指定し ます。 入力 z は 2 進小数点<br />

の位置が同じ で、 符号付きであ る必要があ り ます。 2 進小数点は、 π/2 を表すのにビ ッ ト 数が<br />

十分にな る位置に指定する必要があ り ます。<br />

• [Latency <strong>for</strong> each Processing Element] : 各循環回転段の後のパイ プ ラ イ ン レイテンシを設定<br />

します。<br />

こ のブ ロ ッ ク のレ イ テンシは、 次の式に基づいて算出さ れます。<br />

Latency = 3 + sum (処理エ レ メ ン ト のレ イ テンシ)<br />

1. J. E. Volder、 『The CORDIC Trigonometric Computing Technique』 、IRE トランザクション、<br />

Electronic Computers、 Vol. EC-8、 1959 年、 pp. 330 ~ 334<br />

2. J. S. Walther、 『A Unified Algorithm <strong>for</strong> Elementary Functions』 、Spring Joint Computer<br />

Conference、 1971 年、 pp. 379 ~ 385<br />

3. Yu Hen Hu、『CORDIC-Based VLSI Architectures <strong>for</strong> Digital Signal Processing』、IEEE Signal<br />

Processing Magazine、 1992 年 7 月、 pp. 17 ~ 34<br />

380 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


CORDIC SQRT<br />

CORDIC SQRT<br />

Hyperbolic Vectoring モー ド で完全にパラ レルな CORDIC (COordinate<br />

Rotation DIgital Computer) アルゴ リ ズム を使用し て、 平方根回路を イ ンプ リ メ<br />

ントします。<br />

入力 x から、 出力 sqrt (x) が算出されます。 CORDIC プロセッサのインプリ メ<br />

ントには、ザイリンクス ブロックセッ トのブロックが使用されます。<br />

平方根は、 CORDIC アルゴ リ ズム で次の式を 使用し て間接的に計算さ れま す。<br />

sqrt (w) = sqrt { (w + 0.25) 2 - (w - 0.25) 2 }<br />

ブロック パラ メータ<br />

このアルゴリズムは、 次の 4 段階で イ ンプ リ メ ン ト さ れます。<br />

1. 座標回転 : CORDIC アルゴ リ ズムでは、正の x 値のみが収束されます。 x < 0 の場合、入力デー<br />

タ を負でない値に変換し ます。 x = 0 の場合、 0 が検出さ れた こ と を示すフ ラ グ を座標修正段に<br />

伝搬し ます。 こ の回路は、 最小の負の値を除 く x のすべての値を収束させる よ う に設計されて<br />

います。<br />

2. 正規化 : CORDIC アルゴ リ ズムでは、 0.25 ~ 1 である x 値のみが収束されます。 正規化では、<br />

入力 x を最上位の符号な し ビ ッ ト が 1 になるまで左にシフ ト します。 左シフ ト してシフ ト 値が<br />

奇数になった場合は、 偶数にな る よ う に右に 1 つシフ ト し ます。 シフ ト値は 2 で除算され、 座<br />

標修正段に渡し ます。 平方根は、 sqrt (w) = sqrt {(w + 0.25) 2 - (w - 0.25) 2 } の式よ り 得られま<br />

す。 こ の式に基づき、 入力 x は X = x + 0.25 および Y = x - 0.25 に対応付け ら れます。<br />

3. 双曲線回転 : sqrt (X2 - Y2 ) を算出する ため、結果のベ ク タ を y が 0 に近づ く よ う に少しずつ回<br />

転します。<br />

4. 座標修正 : 入力 x が負で左シフ ト が適用 さ れてい る場合、 出力に適切な符号を割 り 当て、 2-shift で乗算し ます。 入力が 0 の場合は、 0 が検出さ れた こ と を示すフ ラ グ を使用し て、 出力を 0 に<br />

設定し ます。<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Number of Processing Elements] : リ ニア回転での段の反復回数を指定し ます。<br />

• [Input Data Width] : 入力 x の幅を指定し ます。 入力 x は指定さ れたデータ幅で、 符号付き であ<br />

る必要があ り ます。<br />

• [Input Binary Point Position] : 入力 x の 2 進小数点の位置を指定し ます。 入力 x は 2 進小数点<br />

が指定された位置にあ り 、 符号付き であ る必要があ り ます。<br />

• [Latency <strong>for</strong> each Processing Element] : 各双曲線回転段の後のパイ プ ラ イ ン レイテンシを設<br />

定します。<br />

こ のブ ロ ッ ク のレ イ テンシは、 次の式に基づいて算出さ れます。<br />

Latency = 7 + (data width - binary point)<br />

+ mod { (data width - binary point) , 2 }<br />

+ sum (latency of Processing Elements)<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 381<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

参考資料<br />

1. J. E. Volder、 『The CORDIC Trigonometric Computing Technique』 、IRE トランザクション、<br />

Electronic Computers、 Vol. EC-8、 1959 年、 pp. 330 ~ 334<br />

2. J. S. Walther、 『A Unified Algorithm <strong>for</strong> Elementary Functions』 、Spring Joint Computer<br />

Conference、 1971 年、 pp. 379 ~ 385<br />

3. Yu Hen Hu、『CORDIC-Based VLSI Architectures <strong>for</strong> Digital Signal Processing』、IEEE Signal<br />

Processing Magazine、 1992 年 7 月、 pp. 17 ~ 34<br />

382 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Dual Port Memory Interpolation MAC FIR Filter<br />

Dual Port Memory Interpolation MAC FIR Filter<br />

積和ベース の FIR フィルタをインプリメントし、 ユーザーが選択可能なインターポ<br />

レーシ ョ ン を実行し ます。 n-tap フ ィ ルタ には、専用乗算器 1 つとデュアル ポー ト ブ<br />

ロック RAM 1 つが使用 さ れます。 このフィルタ コンフィギュレーションでは、1 つ<br />

のブロ ッ ク RAM に係数およびデータ サンプルを格納する循環 RAM バッファの手<br />

法が示されます。 こ のフ ィ ルタ を使用する と 、イ ン ターポレーシ ョ ン係数をユーザー<br />

が選択でき ます。 Virtex FPGA ファミ リ (および Virtex フ ァ ミ リ の派生デバ イ ス) で<br />

は、 高速で小型の加算器、 乗算器、 および柔軟な メ モ リ アーキテクチャ を構築する<br />

ための専用回路が提供されます。 フィルタ デザインではこれらのシリ コンの特性が活用され、 小型<br />

でリソース効率のよいデザインがインプリメントされます。<br />

このフィルタ <strong>リファレンス</strong> ブロックには、インプリ メンテーションの説明が提供されています。こ<br />

の説明は、モデル内でブロ ッ ク を右ク リ ッ ク し て [マスクブロックのモデル表示] をク リ ックすると<br />

表示されます。<br />

ブロック パラ メータ<br />

参考資料<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Data Input Bit Width] : 入力サンプルの幅<br />

• [Data input Binary Point] : 入力の 2 進小数点の位置<br />

• [Coefficients] : フ ィ ル タの係数を指定し ます。 タ ッ プ数は、 係数ベク タ のサ イ ズか ら推論さ れ<br />

ます。<br />

• [Number of Bits per Coefficient] : 各係数のビ ッ ト 幅<br />

• [Binary Point Per Coefficient] : 各係数の 2 進小数点の位置<br />

• [Interpolation Ratio] : フィルタのインターポレーション レー ト を選択し ます (2 ~ 10)。<br />

• [Sample Period] : 入力のサンプル周期<br />

J. Hwang、 J. Ballagh、 『Building Custom FIR Filters Using <strong>System</strong> <strong>Generator</strong>』、 12th International<br />

Field-Programmable Logic and Applications Conference (FPL) (2002 年 9 月、 モンペ リ エ (フラン<br />

ス) にて開催)、 LNCS (Lecture Notes in Computer Science) Vol. 2438<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 383<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Interpolation Filter<br />

積和ベースの FIR フ ィ ルタ を イ ンプ リ メ ン ト し、ユーザーが選択可能な イ ン ターポ<br />

レーシ ョ ンを実行します。 n-tap フ ィ ルタ には、 専用乗算器 1 つとデュアル ポー ト<br />

ブロック RAM 1 つが使用されます。 このフィルタ コンフィギュレーションでは、<br />

1 つのブロ ッ ク RAM に係数およびデータ サンプルを格納する循環 RAM バッファ<br />

の手法が示されます。 このフィルタを使用すると、 インターポレーショ ン係数を<br />

ユーザーが選択でき ます。 Virtex FPGA ファミ リ (および Virtex フ ァ ミ リ の派生デ<br />

バイス) では、 高速で小型の加算器、 乗算器、 および柔軟な メ モ リ アーキテ ク チャ を構築する ため<br />

の専用回路が提供されます。 フィルタ デザインではこれらのシリ コンの特性が活用され、 小型でリ<br />

ソース効率のよいデザインがインプリ メン ト されます。<br />

このフィルタ <strong>リファレンス</strong> ブロックには、インプリ メンテーションの説明が提供されています。こ<br />

の説明は、モデル内でブロ ッ ク を右ク リ ッ ク し て [マスクブロックのモデル表示] をク リ ックすると<br />

表示されます。<br />

ブロック パラ メータ<br />

参考資料<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Input Data Bit Width] : 入力サンプルの幅<br />

• [Input Data Binary Point] : 入力の 2 進小数点の位置<br />

• [Coefficients] : フ ィ ル タの係数を指定し ます。 タ ッ プ数は、 係数ベク タ のサ イ ズか ら推論さ れ<br />

ます。<br />

• [Number of bits per Coefficient] : 各係数のビ ッ ト 幅<br />

• [Binary Point per Coefficient] : 各係数の 2 進小数点の位置<br />

• [Interpolation Factor] : フィルタのインターポレーション レー ト を選択し ます (2 ~ 10)。<br />

• [Sample Period] : 入力のサンプル周期<br />

J. Hwang、 J. Ballagh、 『Building Custom FIR Filters Using <strong>System</strong> <strong>Generator</strong>』、 12th International<br />

Field-Programmable Logic and Applications Conference (FPL) (2002 年 9 月、 モンペ リ エ (フラン<br />

ス) にて開催)、 LNCS (Lecture Notes in Computer Science) Vol. 2438<br />

384 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


m-channel n-tap Transpose FIR Filter<br />

m-channel n-tap Transpose FIR Filter<br />

こ のフ ィ ル タ では、 時分割多重化さ れた、 完全にパ ラ レルなアーキテ ク チ ャ が<br />

使用さ れます。 Virtex FPGA ファ ミ リ (および Virtex フ ァ ミ リ の派生デバ イ ス)<br />

には SRL16E と 呼ばれる専用シ フ ト レ ジ ス タ回路が含まれてお り 、 マルチチ ャ<br />

ネル アーキテ クチャ を最適にイ ンプ リ メ ン ト するために使用されます。 時分割<br />

のマルチプレクサおよびデマルチプレクサを、 インプリ メン トするかしないか<br />

を指定できます。 乗算器には、 エンベデ ッ ド 乗算器が使用されます。<br />

モデルはダ イ ナ ミ ッ ク に構築される ため、係数の数が変化する に従っ て、下位の構造も変化し ます。<br />

このフィルタ <strong>リファレンス</strong> ブロックには、インプリ メンテーションの説明が提供されています。こ<br />

の説明は、モデル内でブロ ッ ク を右ク リ ッ ク し て [マスクブロックのモデル表示] をク リ ックすると<br />

表示されます。<br />

ブロック パラ メータ<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Input Bit Width] : 入力サンプルの幅<br />

• [Input Binary Point] : 入力の 2 進小数点の位置<br />

• [Coefficients] : フ ィ ル タの係数を指定し ます。 タ ッ プ数は、 係数ベク タ のサ イ ズか ら推論さ れ<br />

ます。<br />

• [Coefficients Bit Width] : 各係数のビ ッ ト 幅<br />

• [Coefficients Binary Point] : 各係数の 2 進小数点の位置<br />

• [Number of Channels] : チャ ネル数を指定し ます。 サポー ト さ れる数には制限はあ り ません。<br />

• [Time Division Multiplexer Front End] : TDM フロント エンド回路をインプ リ メ ン トするかし<br />

ないかを指定し ます (入力データ が時分割多重化さ れてい る場合)。<br />

• [Time Division DeMultiplexer Back End] : TDD バック エンド回路をインプ リ メ ン トするかし<br />

ないかを指定し ます (出力を時分割多重化する場合)。 これは、 フィルタが別のマルチチャネル<br />

構造に接続し てい る場合に便利です。<br />

• [Input Sample Period] : 入力のサンプル周期<br />

このブロックで使用されるその他のパラメータは、 「ブロ ッ ク のパラ メ ータ ダイアログ ボックスの<br />

共通オプシ ョ ン」 で説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 385<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Mealy State Machine<br />

ミーリ マシンは、 出力がステート 遷移の関数 (マシンの現在のス テー ト<br />

と入力の関数) である有限ステート マシンです。 次のブロ ッ ク図で表さ<br />

れます。<br />

<strong>System</strong> <strong>Generator</strong> では、 さ まざまな方法でこのよ う なステー ト マシンをインプ リ メ ン ト できます。<br />

一例 と し ては、 MCode ブ ロ ッ ク を使用し て遷移関数を イ ンプ リ メ ン ト し、 レ ジ ス タ を使用し て ス<br />

テート変数をインプリ メントする方法があります。 この<strong>リファレンス</strong> ブロックでは、ブロッ ク メモ<br />

リ および分散 メ モ リ を使用し て ミ ー リ マシンをインプ リ メ ン ト します。 インプリ メンテーション<br />

は、 高速で効率的です。 たとえばザイリンクスの Virtex デバイ スでは、 150MHz 以上で動作する<br />

1 つのブロ ッ ク RAM を使用して、 8 ステート、 1 入力、 2 出力のレ ジ ス タ付き ス テー ト マシンを<br />

実現で き ます。<br />

遷移関数 と 出力の対応は、 それぞれ N × M マト リックスで表されます。 ここで N はステート数、<br />

M は入力英字のサ イ ズ (2 進入力の場合は M = 2) です。 行数を 0 ~ N - 1、 列数を 0 ~ M - 1 にす<br />

る と 便利です。 各ステートは 0 ~ N - 1 の符号な し整数 と し て、 各英字は 0 ~ M - 1 の符号な し整<br />

数として表されます。 各マト リックスの行インデックスは現在のステートを示し、列インデックス<br />

は入力文字を示し ます。<br />

F を N × M 遷移関数マ ト リ ッ ク ス、 O を N × M 出力関数マ ト リ ッ ク ス、 現在のス テー ト を i、現<br />

在の入力文字を j とすると、 F(i,j) は次のステー ト 、 O(i,j) はミーリ マシンの対応する出力です。<br />

386 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Mealy State Machine<br />

例<br />

ミーリ マシンを設計し て、 シ リ アル ス トリームのビットの 1011 と い う パターン を認識させる場合<br />

を考えて見ます。 ス テー ト 遷移図およびこ れに対応する遷移表は次の よ う にな り ます。<br />

表には、 現在のス テー ト および入力を基に し た、 次のス テー ト および出力が リ ス ト さ れています。<br />

たとえば、現在のステートが 3 で 入力が 1 の場合は、次のステー ト は 1 および出力は 1 となり、正<br />

しいシーケンスが示されています。<br />

Mealy State Machine ブ ロ ッ ク は、 上記の次のス テー ト /出力の表よ り 得られる、 次のス テー ト と 出<br />

力マ ト リ ッ ク スでコ ンフ ィ ギュ レーシ ョ ン されます。 これらのマト リ ッ クスは、 次のよ うに構成さ<br />

れています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 387<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック パラ メータ<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

次のス テー ト ロジック、 ステート レ ジ ス タ、 および出力ロ ジ ッ ク は、 高速専用ブ ロ ッ ク RAM を<br />

使用し て イ ンプ リ メ ン ト さ れます。 出力ロジックはルックアップ テーブルと し てコンフ ィ ギュ レー<br />

ションされた専用 RAM を使用してインプ リ メ ン ト されるため、 レイテンシは 0 です。<br />

ミーリ ステート マシンの イ ンプ リ メ ン ト に使用さ れる ビ ッ ト 数は、 次の式で算出さ れます。<br />

depth = (2k)(2i) = 2k+i<br />

width = k+o<br />

N = depth*width = (k+o)(2k+i)<br />

こ の場合、 各値の定義は次の と お り です。<br />

N = ブロッ ク RAM ビット数の合計<br />

k = ceil(log2(s))<br />

s = ステート数<br />

i = 入力ビ ッ ト 数<br />

o = 出力ビ ッ ト 数<br />

次の表に、 さ まざまなステー ト マシンに必要なブ ロ ッ ク RAM サイズの例を示します。<br />

ステー ト数 入力ビ ッ ト数 出力ビ ッ ト数<br />

必要なブ ロ ッ ク<br />

RAM のビッ ト数<br />

2 5 10 704<br />

4 1 2 32<br />

8 6 7 5120<br />

16 5 4 4096<br />

32 4 3 4096<br />

52 1 11 2176<br />

100 4 5 24576<br />

ブロッ ク RAM の幅およびワード数の制限は、 シングル ポー ト RAM ブロッ クのオンライン ヘル<br />

プで説明されています。<br />

388 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Moore State Machine<br />

Moore State Machine<br />

ムーア マシンは、 出力がマシンの現在のステー ト の関数である有限ス<br />

テー ト マシンです。 次のブ ロ ッ ク図で表 さ れます。<br />

<strong>System</strong> <strong>Generator</strong> では、 さ まざまな方法でこのよ う なステー ト マシンをインプ リ メ ン ト できます。<br />

一例 と し ては、 MCode ブ ロ ッ ク を使用し て遷移関数を イ ンプ リ メ ン ト し、 レ ジ ス タ を使用し て ス<br />

テート変数をインプリ メントする方法があります。 この<strong>リファレンス</strong> ブロックでは、ブロッ ク メモ<br />

リ および分散 メ モ リ を使用し て Moore マシンをインプ リ メ ン ト し ます。 インプリ メンテーション<br />

は、 高速で効率的です。 たとえばザイリンクスの Virtex デバイ スでは、 150MHz 以上で動作する 1<br />

つのブロ ッ ク RAM を使用して、 8 ステート、 1 入力、 2 出力のレ ジ ス タ付き ス テー ト マシンを実<br />

現でき ます。<br />

遷移関数 と 出力の対応は、 それぞれ N × M マト リックスで表されます。 ここで N はステート数、<br />

M は入力値の数 (1 ビ ッ ト 入力の場合は M = 2) です。 行数を 0 ~ N - 1、 列数を 0 ~ M - 1 にする<br />

と便利です。 各ステートは 0 ~ N - 1 の符号な し整数 と し て、 各英字は 0 ~ M - 1 の符号な し整数<br />

として表されます。 各マト リックスの行インデックスは現在のステートを示し、列インデックスは<br />

入力文字を示し ます。<br />

F を N × M 遷移関数マ ト リ ッ ク ス、 O を N × M 出力関数マ ト リ ッ ク ス、 現在のス テー ト を i、現<br />

在の入力文字を j とすると、 F(i,j) は次のステー ト 、 O(i,j) は Moore マシンの対応する出力です。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 389<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

例<br />

Moore マシン を設計し て、 シ リ アル ス トリームのビットの 1011 と い う パターン を認識させる場合<br />

を考えて見ます。 ス テー ト 遷移図およびこ れに対応する遷移表は次の よ う にな り ます。<br />

表には、 現在のス テー ト および入力を基に し た、 次のス テー ト および出力が リ ス ト さ れています。<br />

たとえば、現在のステートが 4 の場合は 出力が 1 となり、正しいシーケンスが示されています。入<br />

力が 1 の場合、 次のス テー ト は 1 となります。<br />

レジスタ付きの Moore State Machine ブ ロ ッ ク は、 上記の次のス テー ト /出力の表よ り 得られる、 次<br />

のステート マ ト リックスと出力配列でコンフィギュレーションされます。 これらのマト リ ッ クス<br />

は、 次のよ う に構成されています。<br />

390 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Moore State Machine<br />

マ ト リ ッ ク スの行は、 現在のス テー ト に対応し ます。 次のス テー ト のマ ト リ ッ ク ス では、 各入力値<br />

が 1 つの列に示されています。 入力値はス テー ト マシンの出力に影響し ないため、出力配列は 1 列<br />

のみです。<br />

ブロック パラ メータ<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックの次のステート ロジックおよびステート レ ジ ス タ は、 高速専用ブ ロ ッ ク RAM を使<br />

用してインプリ メン ト されます。 出力ロジックはルックアップ テーブルと してコンフ ィ ギュ レー<br />

ションされた専用 RAM を使用してインプ リ メ ン ト されるため、 レイテンシは 0 です。<br />

Moore ステート マシンの イ ンプ リ メ ン ト に使用される ビ ッ ト 数は、 次の式で算出されます。<br />

ds = (2k )(2i ) = 2k+i w s = k<br />

N s = d s*w s = (k)(2 k+i )<br />

こ の場合、 各値の定義は次の と お り です。<br />

N = 次のステー ト ロジック ブロッ ク RAM ビッ ト数の合計<br />

k = ceil(log2(s))<br />

d = ステート ロジック ブロック RAM のワード数<br />

w = ステート ロジック ブロッ ク RAM の幅<br />

s = ステート数<br />

i = 入力ビ ッ ト 数<br />

次の表に、 さ まざまなステー ト マシンに必要なブ ロ ッ ク RAM サイズの例を示します。<br />

ステート数 入力ビッ ト数<br />

必要なブ ロ ッ ク<br />

RAM のビッ ト数<br />

2 5 64<br />

4 1 8<br />

8 6 1536<br />

16 5 2048<br />

32 4 2560<br />

52 1 768<br />

100 4 14336<br />

ブロック RAM の幅およびワード数の制限は、 シングル ポー ト ブロック メモリのコア データ シー<br />

ト で説明されています。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 391<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Multipath Fading Channel Model<br />

概念<br />

フ ェージング通信チャ ネルのモデルを イ ンプ リ メ ン ト し ます。 Single<br />

Input/Single Output (SISO) と Multiple Input/Multiple Output<br />

(MIMO) の両方のチャネルをサポー ト し ます。 Simulink の Multipath<br />

Rayleigh Fading Channel ブロッ クに似たファンクショ ンがハード<br />

ウェアで実現できる形で提供されるため、通信リンク全体のハード<br />

ウ ェ ア協調シ ミ ュ レーシ ョ ンが高速に実行で き ます。<br />

このブロックでは、 Kronecker モデルがイ ンプ リ メ ン ト されます。 このモデルは エレ メ ン ト数が 4<br />

個以内のア ンテナ配列を使用する シ ス テムに適し ています。 モデルの基本的なパ ラ メ ータは次の と<br />

おりです。<br />

• MT : 送信配列内のアンテナ数。 SISO システムでは 1 です。<br />

• MR : 受信配列内のアンテナ数。 SISO システムでは 1 です。<br />

• N : 配列間の離散パスの数。 周波数平面流路では、 1 です。<br />

こ のモデルは、 次の離散時間の論理式で表さ れます。<br />

こ の場合、 各値の定義は次の と お り です。<br />

• x(.) : 送信シンボル列ベク タ (MT 複合エレ メ ン ト 、 時間で変化)<br />

• T : サンプル間隔<br />

• n : サンプル インデックス<br />

• d k : パス k の遅延<br />

• H k (.) : チャネル係数マト リ ックス (MR × MT 複合エレ メ ン ト 、 時間で変化)<br />

• g k : パス k の利得<br />

• y(.) : 受信シンボル列ベク タ (MR 複合エレ メ ン ト 、 時間で変化)<br />

チ ャ ネル係数マ ト リ ッ ク スではアンテナ配列の空間的な共分散マ ト リ ッ ク ス を さ ら に詳細に定義で<br />

きます。<br />

こ の場合、 各値の定義は次の と お り です。<br />

• R T,k : パス k の送信配列空間的共分散マ ト リ ッ ク ス<br />

• H U,k (.) : パス k の無相関チャ ネル係数マ ト リ ッ ク ス (M R × M T エ レ メ ン ト 、 時間で変化)<br />

• R R,k : パス k の受信配列空間的共分散マ ト リ ッ ク ス<br />

392 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Multipath Fading Channel Model<br />

インプリメンテーション<br />

上記の式は、 疎行列操作であ る と 言え る ので、 パス合計を削除で き ます。 その後、 モデルは次の よ<br />

うにインプリ メントされます。<br />

ブロック パラ メータ<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

[Paths] タブ<br />

[Path] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Path Delay Vector] : モデルの各パスの遅延拡散を指定し ます。 各エレ メ ン ト は、パス を遅延さ<br />

せるサンプル数を表します。 値は N エレ メン ト ベ ク タ であ る必要があ り ます。<br />

• [Path Gain Vector] : モデルの各パスの利得を指定し ます。 各エレ メ ン ト は、 パスの リ ニア利得<br />

を表します。 値は N エレ メン ト ベ ク タ であ る必要があ り ます。<br />

[Covariance] タブ<br />

周波数選択性チ ャ ネル (N>1) をサポートするために、次のパラ メータを 3 次元配列 と し て指定し ま<br />

す。 最初の 2 つの次元では方形の共分散マ ト リ ッ ク スが、3 番目の次元ではパスが指定されます。 周<br />

波数選択性チ ャ ネルに 2 次元配列が指定 さ れた場合は、 自動的に複製 さ れて 3 次元配列が生成さ れ<br />

ます。 周波数平面流路 (N=1) では、 3 番目の次元はオプシ ョ ンです。<br />

• [Transmit Array Spatial Covariance Matrices] : 各パスの送信アンテナ配列共分散マ ト リ ッ ク ス<br />

を指定します。 値は M T × M T マト リックスまたは M T × M T × N 配列です。<br />

• [Receive Array Spatial Covariance Matrices] : 各パスの受信アンテナ配列共分散マ ト リ ッ ク ス<br />

を指定します。 値は M R × M R マト リックスまたは M R × M R × N 配列です。<br />

[Fading] タブ<br />

• [Spectrum Data] : 各物理パスの、 フ ェージン グ位相および周波数応答を指定し ます。 物理パス<br />

数は離散パス数 (N) と、 送信/受信アンテナ配列 (MT × MR) のエレ メ ン ト 間のパス数の積で<br />

す。 MR × MT × N の次元の多次元構造であ る必要があ り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 393<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

関数<br />

• [Rate] : 最大 ド ッ プ ラー周波数 (FDMAX) からチャネル サンプル周波数 (FS) までのインター<br />

ポレーシ ョ ン レー ト を指定し ます。 次のよ う に算出されます。<br />

[Internal] タブ<br />

• [Datapath Width in Bits] : すべての内部データパスの幅を指定し ます。<br />

• [Transmit Multiply Binary Point] : RT 乗算ブロ ッ ク の出力での 2 進小数点の位置を 指定し ま す。<br />

• [Fading Multiply Binary Point] : フ ェージング乗算ブ ロ ッ ク の出力での 2 進小数点の位置を指<br />

定します。<br />

• [Receive Multiply Binary Point] : RR 乗算ブロ ッ ク の出力での 2 進小数点の位置を 指定し ま す。<br />

• [Covariance Matrix Binary Point] : 共分散マト リ ッ ク ス 係数の 2 進小数点の位置を 指定し ま す。<br />

• [Random Seed] : 位相 ノ イ ズ乱数発生器の 61 ビッ ト (16 桁の 16 進数) シー ド を指定し ます。<br />

モデルには、 パ ラ メ ータ生成用に、 次の 2 つの MATLAB 関数が含まれています。<br />

create_r_la<br />

create_r_la(M,P,phi0,d,lambda,AS) 関数では、 参考資料 1 に記述されている よ う に、 操作ベク タか<br />

ら共分散マ ト リ ッ ク スが生成されます。<br />

• M : 配列内のアンテナ数を指定し ます (送信ま たは受信)。<br />

• P : マ ト リ ッ ク スの生成用に統合する ラ ンダム パスの数を指定します (50,000 で良好な結果が<br />

得られます)。<br />

• phi0 : 送信 (送信配列) または 受信 (受信配列) の平均角度を、 ラ ジアンで指定し ます。<br />

• d : アンテナ間隔を、 ベース ラ イ ンに沿ったアンテナ位置のベク タ と し て指定し ます。 この値が<br />

ス カ ラ値 と し て指定された場合は、 エレ メ ン ト がベース ラ イ ンの起点の周囲に等間隔に分散さ<br />

れた等間隔 リ ニア アレイ (ULA) と見なされます。<br />

• lambda : 波長を メ ー ト ルで指定し ます。<br />

• AS : 平均角度の角拡散を ラ ジアンで指定し ます。<br />

たとえばエレメント間隔が 2GHz で λ/2、 角拡散が 15°の 3 つのエレ メ ン ト の ULA にマ ト リ ッ ク<br />

ス を作成する場合は、 次の よ う にな り ます。<br />

lambda=2.0e9/2.99e8;<br />

create_r_la(3,50000,0,lambda/2,lambda,15*(2*pi/360))<br />

calc_path_data<br />

calc_path_data(spec_type,spec_fd) 関数では、 モデルのスペ ク ト ル データ が生成されます。<br />

• spec_type : モデルの各物理パスのスペ ク ト ル タ イ プを指定し ます。 この値は、MR × MT × N<br />

の多次元配列であ る必要があ り ます。 各エレ メ ン ト で、 物理パスのスペク ト ル タ イ プが指定さ<br />

れます。<br />

394 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Multipath Fading Channel Model<br />

データ形式<br />

• spec_fd : 各物理パスに、 最大 ド ッ プ ラー周波数 (FDMAX) に正規化さ れた、 スペ ク ト ル ドッ<br />

プ ラ ー周波数を指定し ます。 この値には MR × MT × N の多次元配列またはス カ ラ値を指定<br />

でき、 ス カ ラ値の場合はすべての物理パスに値が適用されます。 省略さ れた場合は、 1 と見な<br />

されます。<br />

各スペク ト ル タイプ エレ メ ン ト の値に よ り 、 その物理パスに使用 さ れる スペ ク ト ル形状が指定さ<br />

れます。 次の 4 つのスペク ト ル タイプがサポートされています。<br />

• Type 0 : 空の物理パス。 パス係数は 0 で、 パスでは送信が実行さ れません。<br />

• Type 1 : インパルス物理パス。 インパルス パスのスペク トルには 1 つのイ ンパルスがあ り ま<br />

す。 こ れら を使用し て、Rician チャネルの要件と されるよ うなチャネル モデルで LOS (line-ofsight<br />

) パスを表すこ とができます。<br />

• Type 2 : 典型的な スペ ク ト ルの物理パス。 典型的な スペ ク ト ルは、 Jakes スペク ト ルまたは<br />

Clarke スペク ト ルと しても知られます。 こ れは参考資料 2、3、4 の移動局 と の ワ イ ヤ レ ス リン<br />

ク のモデル化に使用され、 次のよ う に定義されます。<br />

• Type 3 : 丸められたスペク ト ルの物理パス。 参考資料 5 の固定局 と の ワ イ ヤ レ ス リンクのモデ<br />

ル化に使用され、 次のよ う に定義されます。<br />

生成される と 、 各スペク ト ルは単一の指数に正規化さ れます。<br />

たとえば、M T =4 のスペク トル データ を作成し てプ ロ ッ ト する には、 M R =3 および N=2 チャネル<br />

と な り ます。 こ の場合は 2 つのパスが組み合わ さ り 、 イ ンパルスおよび典型などの Rician フェー<br />

ジングが発生し ます。 移動局 (MS) は基地局か ら 0.707 × vMS (LOS 物理パス では fd=0.707) で遠<br />

ざかる ものと します。<br />

Mt=4; Mr=3; N=2;<br />

spec_type=cat(3,ones(Mr,Mt)*1 ,ones(Mr,Mt)*2);<br />

spec_fd =cat(3,ones(Mr,Mt)*0.707,ones(Mr,Mt)*1);<br />

spec_data=calc_path_data(spec_type,spec_fd);<br />

plot([spec_data.spectrum]);<br />

内部的には、 複素ベク タ のブ ロ ッ ク 間での伝送に、 3 信号の イ ン ターフ ェ イ スがモデルで使用さ れ<br />

ます。 このインターフェイスを使用すると、 マト リ ックス/ベ ク タ操作がチ ェーン接続さ れます。 ベ<br />

ク タは、 フ レームおよび反復ハン ド シ ェ イ ク 信号が設定さ れた、 イ ン ター リ ーブ さ れた実サンプル<br />

および虚サンプルのス ト リ ーム と し て伝送さ れます。 こ の イ ン ターフ ェ イ ス を使用する と 、 フ レー<br />

ム当た り 複数回ベ ク タ を繰 り 返すこ と がで き ます。 この機能を使用すると、 マト リ ックス行 1 行当<br />

たり 1 度だけ使用されるベクタ値が何度も必要となる場合に、 マト リ ッ クスとベクタの乗算を単純<br />

化でき ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 395<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

入力<br />

出力<br />

3 つの信号インターフェイスを次に示します。<br />

• reim : 各ベ ク タ の、 イ ン ター リ ーブ さ れた実サンプル (I) および虚サンプル (Q) のス ト リーム。<br />

信号で示される よ う に、 各ベク タは複数回伝送さ れる可能性があ り ます。<br />

• fd : 各ベク タ フレームの開始を示します。<br />

• rd : 各ベク タ反復の開始を示し ます。<br />

次の図に、 3 エレ メン トのベクタが 3 × 3 マ ト リ ッ ク スでの乗算の前はどの よ う に表さ れる かを示<br />

します。 ベクタは 3 回 (マト リックス行ごとに 1 回) 反復する ため、乗算ロ ジ ッ ク が簡略化 さ れます。<br />

入力データは in_fd、 in_rd、 および in_reim ポー ト に示されます。 入力時にはベク タ を反復する必<br />

要はないため、 in_rd signal は無視され、 最初の 2 つの MT サンプルのみが使用されます。 たとえ<br />

ば、 MT=2 チャネルでは次のよ うになり ます。<br />

出力データは out_fd、 out_rd、および out_reim ポー ト に示されます。 データは、 フ レーム全体で反<br />

復されます。 たとえば、MR=3 チャネルでは次のよ うになり ます。<br />

396 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Multipath Fading Channel Model<br />

タイミング制約<br />

初期化<br />

一連の fd パルス (TVEC) 間には、 内部ブ ロ ッ ク でのデータ の処理に十分なサンプル数が必要です。<br />

各ブ ロ ッ ク で必要なサ イ ク ル数は、次に示す、MT、MR、N、および RATE パ ラ メ ータ の関数です。<br />

RT 乗算 : 2 × MT × MT × N サイクル必要<br />

フェージング乗算 : 2 × MT × MR × N × ceil(64/RATE) サイクル必要<br />

RR 乗算 : 2 × MR × MR × N サイクル必要<br />

TVEC の最小値は次の よ う にな り ます。<br />

こ の制約が満た さ れない場合、 シ ミ ュ レーシ ョ ン中にモデルでエ ラーが発生し ます。<br />

モデルでは、フ ェージン グ係数ジ ェ ネ レータ の初期化におよ そ 3 × R の入力フ レーム を必要 と し ま<br />

す。 初期化中は、 チ ャ ネル係数および出力データは 0 にな り ます。<br />

デモンス ト レーシ ョ ン<br />

モデルの使用方法を示す次の 2 つのデモがあ り ます。 ど ち ら に も、 パ ラ メ ータ の計算方法が示さ れ<br />

ています。<br />

• SISO チャネル モデル : 3GPP TS 25.104、 Annex B.2、 Case 4 の SISO チャネルのデモ<br />

• MIMO チャネル モデル : 周波数平面 MIMO 流路のデモ<br />

ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの例<br />

ハード ウ ェ ア協調シミ ュ レ ーショ ン でモデルを 使用する 方法の例が、path_to_sysgen/examples/<br />

mfcm_hwcosim ディレク ト リに含まれています。 このディレク ト リには次の 3 つのフ ァ イルが含ま<br />

れています。<br />

• mfcm_hw.mdl : 協調シ ミ ュ レーシ ョ ン デザイ ンのハード ウ ェ ア コ ンポーネン ト を指定する モ<br />

デルです。 デザ イ ンは、 データ入力用の共有 メ モ リ 、 チャ ネル モデル、 およびデータ出力用の<br />

共有 メ モ リ よ り 構成されています。<br />

• mfcm_hw_cw.bit : mfcm_hw.mdl デザイ ンを Xtreme<strong>DSP</strong> キッ ト (XC2V3000-4) 用にコ ンパ<br />

イルしたものです。<br />

• mfcm_cosim.mdl : 協調シミ ュ レ ーショ ン のソ フ ト ウ ェ ア コ ンポーネント を 指定する モデルで<br />

す。 共有メ モリ ブロ ッ ク を 使用し て、データ のパケッ ト がハード ウ ェ アで処理する ために渡さ れ、<br />

処理済みのデータ のパケッ ト が受信さ れま す。 こ のデザイ ン では、 生成済みの mfcm_hw_cw.bit<br />

がデフ ォ ルト で使用さ れま す。 ハード ウ ェ ア タ ーゲッ ト が異なる 場合は、 生成し 直す必要があり<br />

ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 397<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

参考資料<br />

1. A. Forenza、R.W. Heath Jr.、『Impact of Antenna Geometry on MIMO Communication in Indoor<br />

Clustered Channels』、Wireless Networking and Communications Group、ECE Department、The<br />

University of Texas at Austin<br />

2. 3GPP TS 25.101 V6.7.0 (2005-03)、 『Annex B, User Equipment (UE) radio transmission and<br />

reception (FDD)』 、Technical Specification Group Radio Access Network、 3rd Generation<br />

Partnership Project<br />

3. 3GPP TS 25.104 V6.8.0 (2004-12)、 『Annex B, Base Station (BS) radio transmission and<br />

reception (FDD)』 、Technical Specification Group Radio Access Network, 3rd Generation<br />

Partnership Project<br />

4. 3GPP TR 25.943 V6.0.0 (2004-12)、 『Deployment aspects』 、Technical Specification Group<br />

Radio Access Network, 3rd Generation Partnership Project<br />

5. IEEE 802.16.3c-01/29r4 (2001-07-16)、 『Channel Models <strong>for</strong> Fixed Wireless Applications』 、<br />

IEEE 802.16 Broadband Wireless Access Working Group<br />

398 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


n-tap Dual Port Memory MAC FIR Filter<br />

n-tap Dual Port Memory MAC FIR Filter<br />

積和ベース の FIR フィ ルタをインプリ メ ント します。 フ ィ ルタ では、 専用乗算器<br />

1 つと デュ アル ポート ブロ ッ ク RAM 1 つが使用さ れま す。 このフィルタ コンフィ<br />

ギュ レ ーショ ン では、係数およ びデータ サンプルをフィ ルタ デザイ ン に格納する 手<br />

法が示さ れま す。 Virtex FPGA ファミ リ (およ び Virtex フ ァ ミ リ の派生デバイ ス ) で<br />

は、 高速で小型の加算器、 乗算器、 およ び柔軟なメ モリ アーキテク チャ を 構築する<br />

ための専用回路が提供さ れま す。 フィ ルタ デザイ ン ではこ れら のシリ コ ン の特性が<br />

活用さ れ、 小型でリ ソ ース 効率のよ いデザイ ン がイ ン プリ メ ン ト さ れま す。<br />

このフィルタ <strong>リファレンス</strong> ブロックには、インプリ メンテーションの説明が提供されています。こ<br />

の説明は、モデル内でブロ ッ ク を右ク リ ッ ク し て [マスクブロックのモデル表示] をク リ ックすると<br />

表示されます。<br />

ブロック パラ メータ<br />

参考資料<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Data Input Bit Width] : 入力サンプルの幅<br />

• [Data input Binary Point] : 入力の 2 進小数点の位置<br />

• [Coefficients] : フ ィ ル タの係数を指定し ます。 タ ッ プ数は、 係数ベク タ のサ イ ズか ら推論さ れ<br />

ます。<br />

• [Number of Bits per Coefficient] : 各係数のビ ッ ト 幅<br />

• [Binary Point Per Coefficient] : 各係数の 2 進小数点の位置<br />

• [Sample Period] : 入力のサンプル周期<br />

J. Hwang、 J. Ballagh、 『Building Custom FIR Filters Using <strong>System</strong> <strong>Generator</strong>』、 12th International<br />

Field-Programmable Logic and Applications Conference (FPL) (2002 年 9 月、 モンペ リ エ (フラン<br />

ス) にて開催)、 LNCS (Lecture Notes in Computer Science) Vol. 2438<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 399<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

n-tap MAC FIR Filter<br />

積和ベースの FIR フィルタをインプリ メントします。 n-tap、 2n-tap、 4n-tap フィ<br />

ルタでは、 それぞれ 1 つ、 2 つ、 および 4 つの Virtex-II 専用乗算器が使用さ れま<br />

す。 これら 3 とおりのフィルタ コンフィギュレーションによ り、 フィルタのス<br />

ループッ ト とデバイスのリ ソース使用のト レードオフが示されます。 Virtex<br />

FPGA ファミ リ (および Virtex フ ァ ミ リ の派生デバ イ ス) では、高速で小型の加算<br />

器、 乗算器、 および柔軟な メ モ リ アーキテ ク チ ャ を構築する ための専用回路が提<br />

供されます。 フィルタ デザイ ンでは これら のシ リ コ ンの特性が活用され、 小型で<br />

リ ソ ース効率の よ いデザ イ ンが イ ンプ リ メ ン ト さ れます。<br />

このフィルタ <strong>リファレンス</strong> ブロックには、インプリ メンテーションの説明が提供されています。こ<br />

の説明は、モデル内でブロ ッ ク を右ク リ ッ ク し て [マスクブロックのモデル表示] をク リ ックすると<br />

表示されます。<br />

ブロック パラ メータ<br />

参考資料<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Coefficients] : フ ィ ル タの係数を指定し ます。 タ ッ プ数は、 係数ベク タ のサ イ ズか ら推論さ れ<br />

ます。<br />

• [Number of Bits per Coefficient] : 各係数のビ ッ ト 幅<br />

• [Binary Point <strong>for</strong> Coefficient] : 各係数の 2 進小数点の位置<br />

• [Number of Bits per Input Sample] : 入力サンプルの幅<br />

• [Binary Point <strong>for</strong> Input Samples] : 入力の 2 進小数点の位置<br />

• [Input Sample Period] : 入力のサンプル周期<br />

J. Hwang、 J. Ballagh、 『Building Custom FIR Filters Using <strong>System</strong> <strong>Generator</strong>』、 12th International<br />

Field-Programmable Logic and Applications Conference (FPL) (2002 年 9 月、 モンペ リ エ (フラン<br />

ス) にて開催)、 LNCS (Lecture Notes in Computer Science) Vol. 2438<br />

400 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Registered Mealy State Machine<br />

Registered Mealy State Machine<br />

ミーリ マシンは、 出力がステート 遷移の関数 (マシンの現在のステート<br />

と入力の関数) である有限ステート マシンです。 レ ジ ス タ付き ミ ー リ マ<br />

シンはレジスタ付き出力を持つステート マシンで、 次のブロ ッ ク図で示<br />

されます。<br />

<strong>System</strong> <strong>Generator</strong> では、 さ まざまな方法でこのよ う なステー ト マシンをインプ リ メ ン ト できます。<br />

一例 と し ては、 MCode ブ ロ ッ ク を使用し て遷移関数を イ ンプ リ メ ン ト し、 レ ジ ス タ を使用し て ス<br />

テート変数をインプリ メントする方法があります。 この<strong>リファレンス</strong> ブロックでは、ブロッ ク メモ<br />

リ および分散 メ モ リ を使用し て ミ ー リ マシンをインプ リ メ ン ト します。 インプリ メンテーション<br />

は、 高速で効率的です。 たとえばザイリンクスの Virtex デバイ スでは、 150MHz 以上で動作する 1<br />

つのブロ ッ ク RAM を使用して、 8 ステート、 1 入力、 2 出力のレ ジ ス タ付き ス テー ト マシンを実<br />

現でき ます。<br />

遷移関数 と 出力の対応は、 それぞれ N × M マト リックスで表されます。 ここで N はステート数、<br />

M は入力英字のサ イ ズ (2 進入力の場合は M = 2) です。 行数を 0 ~ N - 1、 列数を 0 ~ M - 1 にす<br />

る と 便利です。 各ステートは 0 ~ N - 1 の符号な し整数 と し て、 各英字は 0 ~ M - 1 の符号な し整<br />

数として表されます。 各マト リックスの行インデックスは現在のステートを示し、列インデックス<br />

は入力文字を示し ます。<br />

F を N × M 遷移関数マ ト リ ッ ク ス、 O を N × M 出力関数マ ト リ ッ ク ス、 現在のス テー ト を i、現<br />

在の入力文字を j とすると、 F(i,j) は次のステー ト 、 O(i,j) はミーリ マシンの対応する出力です。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 401<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

例<br />

ミーリ マシンを設計し て、 シ リ アル ス トリームのビットの 1011 と い う パターン を認識させる場合<br />

を考えて見ます。 ス テー ト 遷移図およびこ れに対応する遷移表は次の よ う にな り ます。<br />

表には、 現在のス テー ト および入力を基に し た、 次のス テー ト および出力が リ ス ト さ れています。<br />

たとえば、現在のステートが 3 で 入力が 1 の場合は、次のステー ト は 1 および出力は 1 となり、正<br />

しいシーケンスが示されています。<br />

Registered Mealy State Machine ブ ロ ッ ク は、 上記の次のス テー ト /出力の表よ り 得られる、 次のス<br />

テー ト と出力マ ト リ ッ ク スでコ ンフ ィ ギュ レーシ ョ ン されます。 これらのマト リ ッ クスは、 次のよ<br />

う に構成されています。<br />

マ ト リ ッ ク スの行はステー ト に、 列は入力値に対応し ています。<br />

402 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Registered Mealy State Machine<br />

ブロック パラ メータ<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

次のステー ト ロジック、 ステート レ ジ ス タ、 出力ロ ジ ッ ク、 および出力レ ジ ス タは、 高速専用ブ<br />

ロック RAM を使用してインプ リ メ ン ト されます。 ステート マシン ライブラリの 4 つのブロ ッ ク<br />

の中で こ れが最も高速で効率的ですが、 出力にはレ ジ ス タ が付け ら れてい る ため、 入力は出力に即<br />

座には反映されません。<br />

ミーリ ステート マシンの イ ンプ リ メ ン ト に使用さ れる ビ ッ ト 数は、 次の式で算出さ れます。<br />

depth = (2k)(2i) = 2k+i<br />

width = k+o<br />

N = depth*width = (k+o)(2k+i)<br />

こ の場合、 各値の定義は次の と お り です。<br />

N = ブロッ ク RAM ビット数の合計<br />

k = ceil(log2(s))<br />

s = ステート数<br />

i = 入力ビ ッ ト 数<br />

o = 出力ビ ッ ト 数<br />

次の表に、 さ まざまなステー ト マシンに必要なブ ロ ッ ク RAM サイズの例を示します。<br />

ステー ト数 入力ビ ッ ト数 出力ビ ッ ト数<br />

必要なブ ロ ッ ク<br />

RAM のビッ ト数<br />

2 5 10 704<br />

4 1 2 32<br />

8 6 7 5120<br />

16 5 4 4096<br />

32 4 3 4096<br />

52 1 11 2176<br />

100 4 5 24576<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 403<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Registered Moore State Machine<br />

ムーア マシンは、 出力がマシンの現在のステート の関数である有限ス<br />

テー ト マシンです。レ ジ ス タ付き ムーア マシンはレジスタ付き出力を持<br />

つステート マシンで、 次のブロ ッ ク図で示されます。<br />

<strong>System</strong> <strong>Generator</strong> では、 Mcode ブ ロ ッ ク を使用する な ど、 さ ま ざ ま な方法で こ の よ う な ス テー ト<br />

マシンをインプ リ メ ン ト できます。 この<strong>リファレンス</strong> ブロックでは、ブロッ ク メ モ リ および分散 メ<br />

モリを使用して Moore マシンをインプ リ メ ン ト します。 イ ンプ リ メ ンテーシ ョ ンは、高速で効率的<br />

です。 たとえばザイリンクスの Virtex デバイ ス では、 150MHz 以上で動作する 1 つのブロ ッ ク<br />

RAM を使用して、 8 ステート、 1 入力、 2 出力のレ ジ ス タ付き ス テー ト マシン を実現で き ます。<br />

遷移関数 と 出力の対応は、 それぞれ N × M マト リックスで表されます。 ここで N はステート数、<br />

M は入力英字のサ イ ズ (2 進入力の場合は M = 2) です。 行数を 0 ~ N - 1、 列数を 0 ~ M - 1 にす<br />

る と 便利です。 各ステートは 0 ~ N - 1 の符号な し整数 と し て、 各英字は 0 ~ M - 1 の符号な し整<br />

数として表されます。 各マト リックスの行インデックスは現在のステートを示し、列インデックス<br />

は入力文字を示し ます。<br />

F を N × M 遷移関数マ ト リ ッ ク ス、 O を N × M 出力関数マ ト リ ッ ク ス、 現在のス テー ト を i、現<br />

在の入力文字を j とすると、 F(i,j) は次のステー ト 、 O(i,j) は Moore マシンの対応する出力です。<br />

404 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Registered Moore State Machine<br />

例<br />

Moore マシン を設計し て、 シ リ アル ス トリームのビットの 1011 と い う パターン を認識させる場合<br />

を考えて見ます。 ス テー ト 遷移図およびこ れに対応する遷移表は次の よ う にな り ます。<br />

表には、 現在のス テー ト および入力を基に し た、 次のス テー ト および出力が リ ス ト さ れています。<br />

たとえば、現在のステートが 4 の場合は 出力が 1 となり、正しいシーケンスが示されています。入<br />

力が 1 の場合、 次のス テー ト は 1 となります。<br />

レジスタ付きの Moore State Machine ブ ロ ッ ク は、 上記の次のス テー ト /出力の表よ り 得られる、 次<br />

のステート マ ト リックスと出力配列でコンフィギュレーションされます。 これらのマト リ ッ クス<br />

は、 次のよ う に構成されています。<br />

マ ト リ ッ ク スの行は、 現在のス テー ト に対応し ます。 次のス テー ト のマ ト リ ッ ク ス では、 各入力値<br />

が 1 つの列に示されています。 入力値はス テー ト マシンの出力に影響し ないため、出力配列は 1 列<br />

のみです。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 405<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

ブロック パラ メータ<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックの次のステート ロジックおよびステート レ ジ ス タ は、 高速専用ブ ロ ッ ク RAM を使<br />

用してインプリ メン ト されます。<br />

Moore ステート マシンの イ ンプ リ メ ン ト に使用される ビ ッ ト 数は、 次の式で算出されます。<br />

ds = (2k )(2i ) = 2k+i w s = k<br />

N s = d s *w s = (k)(2 k+i )<br />

こ の場合、 各値の定義は次の と お り です。<br />

N = 次のステー ト ロジック ブロッ ク RAM ビッ ト数の合計<br />

k = ceil(log2(s))<br />

d = ステート ロジック ブロック RAM のワード数<br />

w = ステート ロジック ブロッ ク RAM の幅<br />

s = ステート数<br />

i = 入力ビ ッ ト 数<br />

次の表に、 さ まざまなステー ト マシンに必要なブ ロ ッ ク RAM サイズの例を示します。<br />

ステート数 入力ビッ ト数<br />

必要なブ ロ ッ ク<br />

RAM のビッ ト数<br />

2 5 64<br />

4 1 8<br />

8 6 1536<br />

16 5 2048<br />

32 4 2560<br />

52 1 768<br />

100 4 14336<br />

ブロック RAM の幅およびワード数の制限は、 シングル ポー ト ブロック メモリのコア データ シー<br />

ト で説明されています。<br />

406 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Virtex Line Buffer<br />

Virtex Line Buffer<br />

ブロック パラ メータ<br />

連続し たピ ク セルのス ト リ ーム を、 指定し た ワー ド 数のバ ッ フ ァ 分遅延し ます。<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Buffer Depth] : ピ ク セルのス ト リ ーム を遅延する サンプル数<br />

• [Sample Period] : ブロックが実行されるサンプル レー ト<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 407<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Virtex2 Line Buffer<br />

ブロック パラ メータ<br />

連続したピクセルのス ト リームを、 指定したワード数のバッファ分遅延します。<br />

Virtex-II フ ァ ミ リ に最適化さ れてお り 、 シングル ポー ト RAM ブロッ クの Read<br />

Be<strong>for</strong>e Write オプシ ョ ンが使用 さ れます。<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Buffer Depth] : ピ ク セルのス ト リ ーム を遅延する サンプル数<br />

• [Sample Period] : ブロックが実行されるサンプル レー ト<br />

408 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Virtex2 5 Line Buffer<br />

Virtex2 5 Line Buffer<br />

ブロック パラ メータ<br />

連続し た ピ ク セルのス ト リ ーム をバ ッ フ ァ に保管し、5 ラ イ ンの出力を生成し ま<br />

す。 各ラインは N サンプル分遅延さ れます。 N はラインの長さです。 ライン 1 は<br />

4*N サンプル分遅延さ れ、 後続の各ラ イ ンの遅延は N サンプル分ずつ短 く なっ<br />

てお り 、 ラ イ ン 5 は入力のコ ピー と なっています。<br />

このブロックでは、 [<strong>Xilinx</strong> Reference Blockset] → [Imaging] ライブラリにある<br />

Virtex2 Line Buffer ブロッ クが使用されます。<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

パラ メータは次のとおりです。<br />

• [Line Size] : 各ラインが遅延されるサンプル数<br />

• [Sample Period] : ブロックが実行されるサンプル レー ト<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 409<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

White Gaussian Noise <strong>Generator</strong><br />

「参考資料」 の文献に示 さ れてい る一般的な方法で、 Box-Muller アルゴ リ ズム と<br />

中心極限定理を組み合わせて使用し、 白色ガ ウ ス雑音 (WGNG) を生成します。<br />

Box-Muller アルゴリ ズムでは、[0,1] に一様に分散さ れた、2 つの独立し た確率<br />

変数の変換を 介し て単位法線確率変数が生成さ れま す。 こ の生成は、 Box-<br />

Muller 関数値を ROM に格納し 、 一様確率変数でアド レ ス を 付ける こ と で実行<br />

されます。<br />

一様確率変数は、 複数ビ ッ ト の leap-<strong>for</strong>ward LFSR で生成されます。 標準の<br />

LFSR では、 ク ロ ッ ク サイクルごとに 1 出力が生成さ れますが、 K ビット leap-<strong>for</strong>ward LFSR で<br />

は、 1 つのサイ クルで k 個の出力を生成で き ます。 たとえば、 4 ビッ トの leap-<strong>for</strong>ward LFSR から<br />

は 0 ~ 15 の 離散一様確率変数が出力されます。 48 ビッ ト ブロック パラ メータ シード の一部によ<br />

り、 各 LFSR が初期化 さ れる ので、 カ ス タ マ イ ズが可能です。 パラレル接続された 4 つの Box-<br />

Muller サブシ ス テムか ら の出力は平均化され、確率密度関数 (PDF) が取得されます。 これは、0.2%<br />

以内で 4.8σ までのガウス分布です 。 WGNG の全体的な レ イ テンシは、10 クロック サイクルとな<br />

ります。 出力ポー ト ノイズは 12 ビッ ト (2 進小数点以下が 7 ビッ ト) の符号付数字です。<br />

4 ビット Leap-Forward LFSR<br />

410 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


White Gaussian Noise <strong>Generator</strong><br />

Box-Muller 法<br />

ブロック パラ メータ<br />

参考資料<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

[Seed] : 10 進開始シー ド 値です。<br />

A. Ghazel, E. Boutillon、J. L. Danger、G. Gulak and H. Laamari、『Design and Per<strong>for</strong>mance Analysis<br />

of a High Speed AWGN Communication Channel Emulator』、 IEEE PACRIM Conference (2001 年<br />

8 月 ブリティッシュ コロンビア州ビク ト リア (カナダ) にて開催)<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 411<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

412 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


R<br />

ザイリンクス Xtreme<strong>DSP</strong> キッ ト<br />

ブロックセッ ト<br />

Xtreme<strong>DSP</strong> キッ ト ブロッ クセッ トには、 次のブロッ クが含まれます。<br />

第 3 章<br />

ライブラリ 説明<br />

Xtreme<strong>DSP</strong> ADC モデルでハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行する場合に、<br />

<strong>System</strong> <strong>Generator</strong> コンポーネントを Nallatech 社製 BenAdda ボード<br />

の 2 つのアナ ロ グ入力チャ ネルに接続で き る よ う に し ます。<br />

Xtreme<strong>DSP</strong><br />

Co-simulation<br />

Xtreme<strong>DSP</strong> の協調シ ミ ュレーシ ョ ン用にコンパイルされた Simulink<br />

サブシステムの代わ り に使用でき ます。<br />

Xtreme<strong>DSP</strong> DAC モデルでハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行する場合に、<br />

<strong>System</strong> <strong>Generator</strong> コンポーネントを Nallatech 社製 BenAdda ボード<br />

の 2 つのアナ ロ グ出力チャ ネルに接続で き る よ う に し ます。<br />

Xtreme<strong>DSP</strong> External<br />

RAM<br />

Xtreme<strong>DSP</strong> LED<br />

Flasher<br />

モデルでハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行する場合に、<br />

<strong>System</strong> <strong>Generator</strong> コンポーネントを Nallatech 社製 BenAdda ボード<br />

の外部 256K × 16 ZBT SRAM に接続できるようにします。<br />

モデルでハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行する場合に、<br />

<strong>System</strong> <strong>Generator</strong> モデルで BenADDA ボード上の 3 色 LED を使用可<br />

能にし ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 413<br />

リリース 9.2.00 2007 年 8 月


R<br />

Xtreme<strong>DSP</strong> ADC<br />

モデルでハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行する場合に、 <strong>System</strong><br />

<strong>Generator</strong> コンポーネントを Nallatech 社製 BenAdda ボード の 2 つのアナログ<br />

入力チ ャ ネルに接続で き る よ う に し ます。 ADC1 と ADC2 があ り、 それぞれア<br />

ナログ入力チャネル 1 と 2 に接続し ます。<br />

Simulink では、このブロ ッ クは Register ブ ロ ッ ク を駆動する Gateway In ブロッ<br />

ク を使用し てモデル化されています。 倍精度信号が入力 と し て受信さ れ、2 進小数点位置が 13 の符<br />

号付き 14 ビ ッ ト のザ イ リ ン ク ス固定小数点信号が出力 と し て生成 さ れます。<br />

ハー ド ウ ェ アでは、 ADC ブロックの出力で駆動されるコンポーネン トは、 BenAdda ボード上にあ<br />

る 2 つの 14 ビッ ト AD6644 AD コンバータ デバ イ ス のいずれかで駆動 さ れます。 ADC ブロック<br />

を使用する <strong>System</strong> <strong>Generator</strong> モデルがハード ウ ェアに変換される と、ADC ブロッ クはモデル HDL<br />

の最上位の入力ポー ト に変換されます。 ポー ト が ADC コンポーネントにより正しく駆動されるよ<br />

う に、 適切なピ ン配置制約が BenAdda 制約フ ァ イルに追加 さ れます。<br />

ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン モデルに ADC ブロックが含まれる場合は、 フ リーランニング<br />

ク ロ ッ ク を使用する必要があ り ます。 ま た、 プ ロ グ ラ ム可能な ク ロ ッ ク スピードは 64MHz 以下に<br />

設定する必要があ り ます。<br />

ブロック パラ メータ<br />

データ シー ト<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

ADC ブロッ クのパラ メータを次に示します。<br />

• [Sample Period] : ブ ロ ッ ク のサンプル周期を指定し ます。<br />

AD6644 デバイ スのデータ シー ト は、 Xtreme<strong>DSP</strong> 開発キ ッ ト の イ ン ス ト ール ディレク ト リに含ま<br />

れています。 Nallatech 社製 FUSE ソフトウェアが含まれる FUSE デ ィ レ ク ト リ が存在する場合は、<br />

データ シー ト は次の場所にあ り ます。<br />

FUSE\Xtreme<strong>DSP</strong> Development Kit\Docs\Datasheets\ADC ad6644.pdf<br />

414 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Xtreme<strong>DSP</strong> Co-simulation<br />

Xtreme<strong>DSP</strong> Co-simulation<br />

Xtreme<strong>DSP</strong> 協調シ ミ ュ レーシ ョ ン用に コ ンパ イル さ れた Simulink サブシステム<br />

の代わ り に使用でき ます。 こ のブ ロ ッ ク は、 シ ミ ュ レーシ ョ ンの実行中は こ のブ<br />

ロ ッ ク の基 と な る サブシ ス テム と ま った く 同じ動作を し ます。 唯一の相違点は、 シ<br />

ミュレーション データが ソ フ ト ウ ェ アではな く 、 ハー ド ウ ェ アで処理さ れる こ と<br />

です。<br />

協調シ ミ ュ レーシ ョ ン ブロッ クのポート インターフェイスは多様です。 モデルを<br />

協調シ ミ ュ レーシ ョ ン用に コ ンパ イ ルする と、 カ ス タ ムの Xtreme<strong>DSP</strong> ハー ド ウ ェ ア協調シ ミ ュ<br />

レーシ ョ ン ブロッ クを含む新しいライブラ リが作成されます。 こ のブ ロ ッ ク には入力および出力<br />

ポー ト があ り 、オ リ ジナルのモデルの Gateway 名 (サブシ ス テムが最上位レベルでない場合は、ポー<br />

ト名) に対応し ています。<br />

ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブロッ クは、Simulink シミュレーション中は、Xtreme<strong>DSP</strong> 開<br />

発キ ッ ト ボード と通信し ます。 ブロックの入力ポートに書き込まれたシミ ュレーショ ン データは<br />

ブロックによ りハードウェアに渡されます。 データ が協調シ ミ ュ レーシ ョ ン ブロックの出力ポート<br />

か ら 読み出される場合は、 ブ ロ ッ ク でハー ド ウ ェ アか ら適切な値が読み出 さ れ、 Simulink で解釈で<br />

き る よ う に出力ポー ト に駆動されます。 ま た、 ブ ロ ッ ク では開発キ ッ ト の開始、 コ ン フ ィ ギ ュ レー<br />

シ ョ ン、 ス テ ッ プ、 終了が自動的に実行されます。<br />

ブロック パラ メータ<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

[Basic] タブ<br />

[Basic] タブからは、 次のよ う なパラ メ ータ を設定でき ます。<br />

• [Clock source] : シングル ステップまたはフ リーランニング クロック ソ ース を選択で き ます。<br />

シングル ステップ クロックを選択すると、1 度に 1 クロック サイクルずつボードをステップ<br />

できます。 各クロッ ク サイクル ステップは、 Simulink での一定の時間に相当し ます。 こ の ク<br />

ロック ソース を使用する と 、 シ ミ ュ レーシ ョ ン中の協調シ ミ ュ レーシ ョ ン ハー ド ウ ェ アのビ<br />

ヘイビアが、そのサブシステムのシ ミ ュレーシ ョ ン ビヘイ ビアに比較し て、 ビ ッ ト 精度および<br />

サ イ ク ル精度 と な り ます。 シングル ステッピングは不要で、フ リーランニング クロックでボー<br />

ド を実行で き る場合も あ り ます。 こ の場合、ボー ド は Simulink シ ミ ュ レーシ ョ ン と 非同期で動<br />

作します。<br />

• [Frequency (MHz)] : フ リーランニング クロック モー ド を選択し た場合は、 シ ミ ュ レーシ ョ ン<br />

実行中のフ リ ーラ ンニング ク ロ ッ ク の動作周波数を指定し ます。 指定された ク ロ ッ ク の周波数<br />

は、 プ ロ グ ラ ム可能なオシ レータ で使用可能な周波数に近い値に丸め られます。<br />

メモ : モデルの FPGA イ ンプ リ メ ンテーシ ョ ンの最大動作周波数を超えない よ う に注意し て<br />

ください。 プ ロ グ ラ ム可能なオシ レータ の有効な動作周波数を次に示し ます。<br />

20 MHz、25 MHz、30 MHz、33.33 MHz、40 MHz、45 MHz、50 MHz、60 MHz、66.66 MHz、<br />

70 MHz、 75 MHz、 80 MHz、 90 MHz、 100 MHz、 120 MHz<br />

• [Card number] : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンで使用する、Xtreme<strong>DSP</strong> 開発キ ッ ト カー<br />

ドのインデックスを指定します。 複数の Xtreme<strong>DSP</strong> キッ ト ボード がイ ンス ト ールされている<br />

場合を除き、 デフ ォル ト 値の 1 を使用して く ださい。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 415<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

• [Bus] : Simulink シ ミ ュ レーシ ョ ンの実行中に、協調シ ミ ュ レーシ ョ ン ブロッ ク と Xtreme<strong>DSP</strong><br />

開発キ ッ ト ボード の通信で使用される イ ン ターフ ェ イ ス を選択し ます。 PCI または USB イン<br />

ターフ ェ イ スのいずれかを選択し ます。<br />

• [Has combinational path] : ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン ブロックの出力ポートから同<br />

じ ブ ロ ッ ク の入力ポー ト への直接組み合わせフ ィ ー ド バ ッ ク パス (同じブロッ クで出力ポート<br />

か ら入力ポー ト にワ イ ヤで接続さ れてい る など) が必要な場合も あ り ます。 出力ポー ト か ら入<br />

力ポー ト への直接フ ィ ー ド バ ッ ク パスが必要で、デザイ ンに入力ポー ト から出力ポー ト への組<br />

み合わせパスが含まれない場合は、 こ のチェ ッ ク ボックスをオフにすると、デザインでフィー<br />

ドバック パスを使用できるよ うにな り ます。<br />

• [Bitstream name] : Xtreme<strong>DSP</strong> 開発キ ッ ト ボード用の協調シ ミ ュ レーシ ョ ン FPGA コンフィ<br />

ギュレーション ファイルを指定します。 新規の協調シ ミ ュ レーシ ョ ン ブロッ クがコンパイル<br />

中に イ ン ス タ ンシエー ト さ れる と 、 こ のパ ラ メ ータ が自動的に設定さ れ、 正し い コ ン フ ィ ギ ュ<br />

レーシ ョ ン ファイルが使用されます。 フ ァ イルの場所が変わった場合にのみこ のパラ メ ータ を<br />

修正し ます。<br />

416 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Xtreme<strong>DSP</strong> DAC<br />

Xtreme<strong>DSP</strong> DAC<br />

モデルでハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行する場合に、<strong>System</strong> <strong>Generator</strong><br />

コンポーネントを Nallatech 社製 BenAdda ボード の 2 つのアナロ グ出力チャネル<br />

に接続できるようにします。 DAC1 と DAC2 があ り、 それぞれアナログ出力チャ<br />

ネル 1 と 2 に接続し ます。<br />

Simulink では、このブロ ッ クは Gateway Out ブ ロ ッ ク を駆動する Register ブロッ<br />

クによりモデル化されています。 DAC 制御信号はすべて、 正し く 定数に接続さ れています。 DAC<br />

ブロックは、2 進小数点の位置が 13 である 14 ビッ ト ザ イ リ ン ク ス固定小数点信号で駆動さ れる必<br />

要があ り ます。 DAC ブロ ッ ク では、 倍精度型の信号が出力されます。<br />

ハー ド ウ ェ アでは、 DAC ブ ロ ッ ク 入力を駆動する コ ンポーネン ト に よ り 、 BenAdda ボード にあ る<br />

2 つの 14 ビット AD9772A DA コンバータ デバイ スのいずれかが駆動さ れます。 DAC ブロックを<br />

使用する <strong>System</strong> <strong>Generator</strong> モデルがハード ウ ェアに変換される と、 DAC ブロッ クはモデル HDL<br />

の最上位の出力ポー ト に変換されます。 出力ポー ト が DAC ピ ン を正し く 駆動する よ う に、 適切な<br />

ピ ン配置制約が BenAdda 制約フ ァ イルに追加 さ れます。<br />

ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン モデルに DAC ブロックが含まれる場合は、 フ リーランニング<br />

ク ロ ッ ク を使用する必要があ り ます。 ま た、 プ ロ グ ラ ム可能な ク ロ ッ ク スピードは 64MHz 以下に<br />

設定する必要があ り ます。<br />

ブロック パラ メータ<br />

データ シー ト<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

DAC ブロッ クのパラ メータを次に示します。<br />

• [Sample Period] : ブ ロ ッ ク のサンプル周期を指定し ます。<br />

AD9772A デバイ スのデータ シー ト は、 Xtreme<strong>DSP</strong> 開発キ ッ ト の イ ン ス ト ール ディレク ト リに含<br />

まれています。 FUSE ソフトウェアが含まれる FUSE デ ィ レ ク ト リ が存在する場合は、 データ シー<br />

ト は次の場所にあ り ます。<br />

FUSE\Xtreme<strong>DSP</strong> Development Kit\Docs\Datasheets\DAC AD9772A.pdf<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 417<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Xtreme<strong>DSP</strong> External RAM<br />

モデルでハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を実行する場合に、 <strong>System</strong><br />

<strong>Generator</strong> コンポーネントを Nallatech 社製 BenAdda ボード の外部 256K ×<br />

16 ZBT SRAM に接続でき る よ う にし ます。<br />

このブロッ クは、 メモリ デバイ ス用の Simulink シミュレーション モデルで<br />

す。 ブ ロ ッ ク のポー ト は、 通常の同期 RAM デバイスのポート と同様に動作します。 アドレス ポー<br />

トは、2 進小数点の位置が 0 である符号なし 18 ビッ ト ザ イ リ ン ク ス固定小数点信号で駆動さ れる<br />

必要があ り ます。 we ポー ト はザイ リ ン ク ス ブール信号で駆動される必要があ り ます。 data ポー ト<br />

は 16 ビッ ト ザイ リ ン ク ス固定小数点信号で駆動さ れる必要があ り ます。 ブロッ クは、16 ビッ ト ザ<br />

イ リ ン ク ス固定小数点データ値を出力ポー ト に駆動し ます。<br />

ハー ド ウ ェ アでは、Simulink のブ ロ ッ ク か ら読み出しおよび書き込みを実行する コ ンポーネン ト に<br />

より、BenAdda ボード上の Micron 社製 ZBT SRAM デバイ スに対する読み出しおよび書き込みが<br />

実行されます。 外部 RAM ブ ロ ッ ク を使用する <strong>System</strong> <strong>Generator</strong> モデルがハード ウ ェアに変換され<br />

ると、RAM ブロッ クのポートはモデル HDL の最上位の入力および出力ポー ト に変換されます。 こ<br />

れ ら のポー ト の適切なピ ン配置制約が、 BenAdda 制約フ ァ イ ルに含まれます。 ZBT SRAM デバイ<br />

スでは、ハード ウ ェア協調シ ミ ュ レーシ ョ ンのイ ンプ リ メ ンテーシ ョ ンの <strong>System</strong> <strong>Generator</strong> 部分 と<br />

同じ ク ロ ッ クが使用されます。<br />

ブロック パラ メータ<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

このブロックでは、 次のパラメータが設定できます。<br />

• [Output Data Type] : RAM の出力データ型を選択し ます。 [Unsigned] または [Signed] (2 の補<br />

数) を指定し ます。<br />

• [Data Binary Point] : メ モ リ の内容 と し て格納さ れてい るデータ値の 2 進小数点の位置を指定<br />

します。 2 進小数点の位置は、 0 ~ 16 (データ幅) です。<br />

418 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


Xtreme<strong>DSP</strong> LED Flasher<br />

Xtreme<strong>DSP</strong> LED Flasher<br />

ブロック パラ メータ<br />

モデルでハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンを実行する場合に、 <strong>System</strong><br />

<strong>Generator</strong> モデルでBenADDA ボード上の 3 色 LED を使用可能に し ます。 モデ<br />

ルで協調シ ミ ュ レーシ ョ ン を実行する と 、 LED は赤、緑、黄色と変化します。<br />

LED は、 27 ビッ トのフリーランニング カウンタの上位 2 ビ ッ ト で駆動されま<br />

す。 LED の 3 色の変化を確認する には、 モデル シ ミ ュ レーシ ョ ンの実行中にフ<br />

リーランニング ク ロ ッ ク を選択する必要があ り ます。<br />

ブロッ クのパラ メータ ダイアログ ボックスは、 Simulink モデル内でブロ ッ ク をダブルク リ ッ クす<br />

る と 表示されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 419<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

420 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


R<br />

<strong>System</strong> <strong>Generator</strong> ユーテ ィ リ テ ィ<br />

xlAddTerms シン ク およびソース を自動的に <strong>System</strong> <strong>Generator</strong><br />

モデルに追加し ます。<br />

xlfda_denominator FDATool ブロッ クのフィルタ オブジェ ク ト の分<br />

母を返し ます。<br />

xlfda_numerator FDATool ブロッ クのフィルタ オブジェ ク ト の分<br />

子を返し ます。<br />

xlGenerateButton <strong>System</strong> <strong>Generator</strong> のコード ジェネレータを起動<br />

します。<br />

xlgetparam および xlsetparam <strong>System</strong> <strong>Generator</strong> ブロッ クのパラ メータを取得<br />

し、 設定する ために使用し ます。<br />

xlgetparams <strong>System</strong> <strong>Generator</strong> ブロッ クのすべてのパラメータ 値を取得する ために使用し ます。<br />

xlInstallPlugin <strong>System</strong> <strong>Generator</strong> ハー ド ウ ェ ア協調シ ミ ュ レー<br />

ション プラグイン の イ ン ス ト ールに使用し ます。<br />

xlLoadChipScopeData ChipScope データ の PM ファイルをワークスペー<br />

スに読み込みます。<br />

xlSetNonMemMap Gateway ブロッ クを、 メモリ マップされない<br />

ポー ト と し て使用する よ う 設定し ます。<br />

xlSetUseHDL サブシステムのモデルのブロ ッ クの [Use<br />

behavioral HDL] オプシ ョ ンをオンにし ます。<br />

xlSBDBuilder <strong>System</strong> <strong>Generator</strong> Board Description Builder ツー<br />

ルを起動し ます。<br />

xlTBUtils <strong>Xilinx</strong> Toolbar ブ ロ ッ ク で使用可能な、 layout、<br />

redrawlines、 getselected などの便利なプロシー<br />

ジャへのアクセスを提供します。<br />

xlTimingAnalysis <strong>System</strong> <strong>Generator</strong> の タ イ ミ ング解析ツールを起動<br />

し、 指定されたタイ ミ ング データ を表示し ます。<br />

xlUpdateModel <strong>System</strong> <strong>Generator</strong> のバージ ョ ンを管理し ます。<br />

第 4 章<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 421<br />

リリース 9.2.00 2007 年 8 月


xlAddTerms<br />

R<br />

構文<br />

説明<br />

こ の関数は、 モデルで接続されていないポー ト を終端または駆動する ためのブ ロ ッ ク を追加する と<br />

言う点で、Simulink の addterms コマンドに似ています。 この関数を使用すると、 出力ポートは<br />

Simulink 終端ブ ロ ッ ク で終端さ れ、 入力ポー ト は Simulink または <strong>System</strong> <strong>Generator</strong> の Constant<br />

ブ ロ ッ ク で正し く 駆動されます。 また、<strong>System</strong> <strong>Generator</strong> の Gateway ブ ロ ッ ク も条件付き で追加で<br />

きます。<br />

optionStruct 引数を使用する と 、ブ ロ ッ ク のプ ロパテ ィ を設定し た り (Constant ブロックの値を 5 に<br />

するなど)、 異な る ソース または終端ブロ ッ クが使用される よ う に設定でき ます。<br />

xlAddTerms(arg1,optionStruct)<br />

次の説明で、 「ソース ブ ロ ッ ク」 は接続さ れていないポー ト を駆動する ブ ロ ッ ク を意味し、 「終端ブ<br />

ロ ッ ク 」 は接続されていないポー ト を終端する ブ ロ ッ ク を意味し ます。<br />

xlAddTerms(arg1,optionStruct)<br />

xlAddTerms の引数は 1 つまたは 2 つです。 2 番目の引数、 optionStruct はオプシ ョ ンです。 最初の<br />

引数は、 シ ス テム名ま たはブ ロ ッ ク の リ ス ト です。<br />

arg1 説明<br />

gcs 現在のシ ス テムの文字列ハン ド ルです。<br />

'top/test1' test1 と い う シ ス テムの文字列ハン ド ル。 この場合、<br />

xlAddTerms がシステムに渡され、 test1 の下のすべての<br />

ブロック (サブシステムの子ブロ ッ ク もすべて) で実行さ<br />

れます。<br />

{'top/test1'} ブロ ッ ク の文字列ハンド ル。 こ の場合、 xlAddTerms はブ<br />

ロックに渡され、test1 ブ ロ ッ ク でのみ実行されます。 子<br />

ブロックは処理されません。<br />

{'t/b1';'t/b2';'t/b3'} ブ ロ ッ ク の文字列ハン ド ルの リ ス ト 。<br />

[1;2;3] ブ ロ ッ ク の数値ハン ド ルの リ ス ト 。<br />

422 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


xlAddTerms<br />

optionStruct 引数はオプシ ョ ンですが、 使用する場合は MATLAB 構造にする必要があ り ます。 次<br />

の表に、 構造で使用可能な値を示し ます。 構造フ ィ ール ド 名では、 MATLAB の場合と 同様、 大文<br />

字 と 小文字が区別されます。<br />

optionStruct 説明<br />

Source xlAddTerms では、 任意のソース ブロックを使用して入力ポート<br />

を終端できます (SourceWith フィールド参照)。 ソース ブロッ クの<br />

パラ メータは、 optionStruct の Source フィールドを使用し、パラ<br />

メータを Source フ ィ ール ド のサブフ ィ ール ド と し て渡すこ と に<br />

より指定できます。 Source フ ィ ール ド を使用する と、 ソ ース ブ<br />

ロックに対して set_params が複数回実行されます。 ソース ブロッ<br />

ク の タ イ プは変更可能であ る ため、 指定さ れたパ ラ メ ータ が使用<br />

されるソース ブ ロ ッ ク に対応し てい る よ う に注意する必要があ り<br />

ます。<br />

Simulink の Constant ブロッ クが Source Block として使用されて<br />

いる場合に、 ブロ ッ ク の値を 10 にする例を示し ます。<br />

Source.value = '10'<br />

<strong>System</strong> <strong>Generator</strong> の Constant ブロックがソース ブロッ ク と して<br />

使用されてい る場合に、Constant ブロッ クの値を 10 に、データ型<br />

を UFIX_32_0 に設定する方法は次の と お り です。<br />

Source.const = '10';<br />

Source.arith_type='Unsigned';<br />

Source.bin_pt=0;<br />

Source.n_bits=32;<br />

SourceWith ソース ブロッ クを指定します。 デフォル ト では、 Constant ブロッ<br />

ク が使用 さ れます。 SourceWith にはサブフ ィールド が 2 つあ り、<br />

両方 と も指定する必要があ り ます。<br />

SourceWithBlock : フル パスおよび使用されるブロ ッ ク名を指定<br />

する文字列です (built-in/Constant、 xbsIndex_r3/AddSub、 など)。<br />

SourceWithPort : 接続に使用 さ れる ポー ト 番号を指定する文字列<br />

です。 1 または 3 な どの よ う に指定し ます。 1 を指定した場合は、<br />

接続にポー ト 1 が使用されます。<br />

TermWith 終端ブ ロ ッ ク を指定し ます。 デフォル ト では、 Simulink の<br />

Terminator ブロッ クが使用されます。 TermWith にはサブフ ィ ー<br />

ルドが 2 つあ り 、 両方 と も指定する必要があ り ます。<br />

TermWithBlock : フル パスおよび使用さ れる ブ ロ ッ ク名を指定す<br />

る文字列です (built-in/Terminator、 xbsIndex_r3/AddSub、 など)。<br />

TermWithPort : 接続に使用 さ れる ポー ト 番号を指定する文字列で<br />

す。 1 または 3 などの よ う に指定し ます。 1 を指定した場合は、 接<br />

続にポー ト 1 が使用されます。<br />

UseGatewayIns 必要に応じ て、<strong>System</strong> <strong>Generator</strong> の Gateway In ブロッ クが挿入さ<br />

れるよ うにします。 こ のフ ィ ール ド を使用する と 、 Gateway In が<br />

挿入さ れます。 Gateway In を使用し ない場合は、 こ のフ ィ ール ド<br />

は使用し ないで く だ さい。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 423<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

例<br />

メモ<br />

optionStruct 説明<br />

GatewayIn Gateway In が挿入される場合は、Source と Term の場合のよ う に、<br />

こ のフ ィ ール ド を使用し てパ ラ メ ータ を設定で き ます。<br />

例 1 : 現在のシ ス テムでデフ ォル ト パ ラ メ ータ を使用し て xlAddTerms を実行します。 Constant<br />

ソース ブロッ クが使用され、 Gateway は追加されません。 サブシ ス テムは再帰的に終端されます。<br />

xlAddTerms(gcs);<br />

例 :<br />

GatewayIn.arith_type='Unsigned';<br />

GatewayIn.n_bits='32'<br />

GatewayIn.bin_pt='0'<br />

Gateway In で ufix_32_0 が出力される よ う に設定されます。<br />

UseGatewayOuts 必要に応じ て、 <strong>System</strong> <strong>Generator</strong> の Gateway Out が挿入される よ<br />

うにします。 こ のフ ィ ール ド を使用する と 、Gateway Out が挿入さ<br />

れます。 Gateway Out を使用し ない場合は、こ のフ ィ ール ド は使用<br />

しないでください。<br />

GatewayOut Gateway Out が挿入される場合は、 Source と Term の場合のよ う<br />

に、 こ のフ ィ ール ド を使用し てパ ラ メ ータ を設定で き ます。<br />

例 :<br />

GatewayOut.arith_type='Unsigned';<br />

GatewayOut.n_bits='32'<br />

Gatewayout.bin_pt='0'<br />

Gateway Out に ufix_32_0 が入力される よ う に設定されます。<br />

RecurseSub<strong>System</strong>s xlAddTerm がすべての子サブシステムで再帰的に実行される よ う<br />

にします。 ス カ ラ値番号 1 または 0 を指定します。<br />

例 2 : サブシステム tt./mySubsystem のすべてのブロ ッ ク で xlAddTerms を実行します。<br />

xlAddTerms(find_system('tt/mySubsystem','SearchDepth',1));<br />

例 3 : 現在のシ ス テムで、 ソ ース ブ ロ ッ ク の定数値を 1 に設定し、 Gateway Out を使用し、 終端ブ<br />

ロックとして Simulink の display ブロックが使用されるよ うに xlAddTerms を実行します。<br />

s.Source.const = '10';<br />

s.UseGatewayOuts = 1;<br />

s.TermWith.Block = 'built-in/Display';<br />

s.TermWith.Port = '1';<br />

s.RecurseSub<strong>System</strong> = 1;<br />

xlAddTerms(gcs,s);<br />

フ ィ ール ド 名では大文字 と 小文字が区別さ れる こ と に注意し て く だ さ い。 Source、 GatewayIn、 お<br />

よび GatewayOut のフ ィ ール ド を使用する場合、 設定さ れるパ ラ メ ータ名が有効であ る こ と を確認<br />

してください。<br />

424 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


xlAddTerms<br />

関連項目<br />

「Toolbar」、 「xlTBUtils」<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 425<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

xlfda_denominator<br />

構文<br />

説明<br />

関連項目<br />

ザイ リンクス FDATool ブロックに格納されているフィルタ オブジェ ク ト の分母を返し ます。<br />

[den] = xlfda_denominator(fdablk_name);<br />

ザイ リ ンク ス FDATool ブロ ッ ク fdablk_name に格納さ れている フ ィ ルタ オブジェ ク ト の分母を 返<br />

し ま す。 ブロ ッ ク が存在し ない場合は、 エラ ーが返さ れま す。 ブロ ッ ク 名は、 ロ ーカル (FDATool な<br />

ど )、 相対パス (../../FDATool など)、 ま たは絶対パス (untitled/foo/bar/FDATool など) で指定し ま す。<br />

「xlfda_numerator」、 「FDATool」<br />

426 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


xlfda_numerator<br />

xlfda_numerator<br />

構文<br />

説明<br />

関連項目<br />

ザイ リンクス FDATool ブロックに格納されているフィルタ オブジェ ク ト の分子を返し ます。<br />

[num] = xlfda_numerator(fdablk_name);<br />

ザイ リ ンク ス FDATool ブロ ッ ク fdablk_name に格納さ れている フ ィ ルタ オブジェ ク ト の分子を 返<br />

し ま す。 ブロ ッ ク が存在し ない場合は、 エラ ーが返さ れま す。 ブロ ッ ク 名は、 ロ ーカル (FDATool な<br />

ど )、 相対パス (../../FDATool など)、 ま たは絶対パス (untitled/foo/bar/FDATool など) で指定し ま す。<br />

「xlfda_denominator」、 「FDATool」<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 427<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

xlGenerateButton<br />

構文<br />

説明<br />

関連項目<br />

<strong>System</strong> <strong>Generator</strong> のコード ジェネレータを起動します。<br />

status = xlGenerateButton(sysgenblock)<br />

<strong>System</strong> <strong>Generator</strong> のコード ジェネレータを起動し、 ステータス コードを返します。 <strong>System</strong><br />

<strong>Generator</strong> ブ ロ ッ ク を引数 と し て こ の関数を実行する と 、 <strong>System</strong> <strong>Generator</strong> ブロックのパラ メータ<br />

ダイアログ ボックスを開き、[Generate] ボタンをク リ ッ クするのと同じ操作が実行されます。 次に、<br />

xlGenerateButton よ り返されるステータス コードを示します。<br />

ステータス 説明<br />

1 キャンセル<br />

2 シ ミ ュ レーシ ョ ンの実行中<br />

3 チェッ ク パラ メータ エラー<br />

4 コンパイル/生成ネ ッ ト リ ス ト エラー<br />

5 ネッ ト リ スタ エラー<br />

6 ネッ ト リ スタ後スク リプト エラー<br />

7 ネッ ト リ スト後エラー<br />

8 生成後エ ラー<br />

9 コンフィギャブル サブシ ス テム と し て イ ンポー ト し ている場合の、 外部<br />

ビ ューの不一致<br />

「xlgetparam および xlsetparam」、 「xlgetparams」、 「<strong>System</strong> <strong>Generator</strong>」<br />

428 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


xlgetparam および xlsetparam<br />

xlgetparam および xlsetparam<br />

構文<br />

説明<br />

例<br />

関連項目<br />

<strong>System</strong> <strong>Generator</strong> ブロ ッ クのパラ メータを取得し、 設定するために使用します。 どちらの関数も<br />

Simulink の get_param および set_param コマンドに似ており、 Simulink 関数の代わ り に使用する<br />

必要があ り ます。<br />

value1, value2, ...] = xlgetparam(sysgenblock, param1, param2, ...)<br />

xlsetparam(sysgenblock, param1, value1, param2, value2, ...)<br />

<strong>System</strong> <strong>Generator</strong> ブロッ クは、 1 つのイ ン ス タ ン スに複数のセ ッ ト のパラ メ ータが格納される と い<br />

う 点で、 ほかのブロ ッ ク と異な り ます。 パラ メータの各セッ トは、 <strong>System</strong> <strong>Generator</strong> ブロックで使<br />

用可能な異な る コ ンパイ ル ターゲ ッ ト に対応し ます。<strong>System</strong> <strong>Generator</strong> ブロックに格納された異な<br />

るコンパイル ターゲッ トの切り替えには、 'compilation' パ ラ メ ータ を使用し ます。 特定の コ ンパイ<br />

ル タ イ プに対応する パ ラ メ ータ を取得ま たは設定する には、 最初に xlsetparam を使用して<br />

'compilation' パラ メータを正しいコンパイル ターゲ ッ ト に設定し てか ら、 その他の値を指定する必<br />

要があ り ます。<br />

[value1, value2, ...] = xlgetparam(sysgenblock, param1, param2, ...)<br />

xlgetparam の最初の入力引数は、 <strong>System</strong> <strong>Generator</strong> ブロ ッ ク へのハンド ルである 必要があり<br />

ます。 その後に続く 引数は、パラ メ ータ 名です。 返さ れる 出力は、入力パラ メ ータ と 同じ 数の配列<br />

です。 要求さ れたパラ メ ータ が存在し ない場合は、 xlgetparam から 空の値が返さ れま す。<br />

xlgetparams 関数は、現在のコ ンパイ ル タ ーゲッ ト のすべてのパラ メ ータ の取得に使用でき ま す。<br />

xlsetparam(sysgenblock, param1, value1, param2, value2, ...)<br />

xlsetparam 関数で も、 <strong>System</strong> <strong>Generator</strong> ブ ロ ッ ク のハン ド ルが最初の引数 と し て使用 さ れます。<br />

その後に続 く 引数は、 パラ メ ータ名と パラ メ ータ値のペアで指定する必要があ り ます。<br />

例 1 : HDL ネ ッ ト リ ス ト に使用される合成ツールの変更<br />

xlsetparam(sysgenblock, 'compilation', 'HDL Netlist');<br />

xlsetparam(sysgenblock, 'synthesis_tool', 'XST')<br />

1 番目の xlsetparam では、 コ ンパイル ターゲッ トが HDL Netlist に設定されています。 2 番目の<br />

xlsetparam では、 合成ツールが XST に変更されています。<br />

例 2 : フ ァ ミ リ およびデバイ ス情報の取得<br />

[fam,part]=xlgetparam(sysgenblock,'xilinxfamily','part')<br />

fam =<br />

Virtex2<br />

part =<br />

xc2v1000<br />

「xlGenerateButton」、 「xlgetparams」<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 429<br />

リリース 9.2.00 2007 年 8 月<br />

R


xlgetparams<br />

R<br />

構文<br />

説明<br />

例<br />

関連項目<br />

<strong>System</strong> <strong>Generator</strong> ブロッ クの現在のコンパイル タ イ プに設定さ れてい るパ ラ メ ータ をすべて取得<br />

します。 xlgetparam コマンドおよび xlsetparam コマンド と併用して、 <strong>System</strong> <strong>Generator</strong> ブロック<br />

のパ ラ メ ータ を変更ま たは取得で き ます。<br />

paramstruct = xlgetparams(sysgenblk);<br />

<strong>System</strong> <strong>Generator</strong> ブ ロ ッ ク で使用可能なパ ラ メ ータすべてを こ の コ マン ド で取得で き ます。 パラ<br />

メータの詳細は、 <strong>System</strong> <strong>Generator</strong> ブロッ クのマニュアルを参照してください。<br />

paramstruct = xlgetparams(sysgenblock);<br />

xlgetparams の最初の入力引数は、<strong>System</strong> <strong>Generator</strong> ブロ ッ クへのハン ド ルであ る必要があ り ます。<br />

この関数では、 パラ メータ値のペアを リ ス トする MATLAB 構造が返されます。<br />

例 1 :<br />

params=xlsetparams(sysgenblock)<br />

params =<br />

compilation: 'HDL Netlist'<br />

compilation_lut: [1x1 struct]<br />

simulink_period: '1'<br />

incr_netlist: 'off'<br />

trim_vbits: 'Everywhere in Sub<strong>System</strong>'<br />

dbl_ovrd: 'According to Block Masks'<br />

deprecated_control: 'off'<br />

xilinxfamily: 'Virtex2'<br />

part: 'xc2v1000'<br />

speed: '-4'<br />

package: 'bg575'<br />

synthesis_tool: 'XST'<br />

directory: './netlist'<br />

testbench: 'off'<br />

sysclk_period: '100'<br />

core_generation: 'According to Block Masks'<br />

run_coregen: 'off'<br />

eval_field: '0'<br />

clock_loc: ''<br />

synthesis_language: 'VHDL'<br />

compilation_lut パラ メータは、 この <strong>System</strong> <strong>Generator</strong> ブロックに格納されたほかのコンパイ<br />

ル タイプをリストする別の構造です。 xlsetparam を使用してコンパイル タ イ プを設定する と 、その<br />

コンパイル タイプに対応するパラメータが xlgetparams または xlgetparam で認識される よ う にな<br />

ります。<br />

「xlGenerateButton」、 「xlgetparam および xlsetparam」<br />

430 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


xlInstallPlugin<br />

xlInstallPlugin<br />

構文<br />

説明<br />

例<br />

関連項目<br />

指定 さ れた <strong>System</strong> <strong>Generator</strong> のハード ウ ェア協調シ ミ ュ レーシ ョ ン プラグインをインス トールし<br />

ます。 イ ン ス ト ールが完了する と、 新し い コ ンパイル ターゲッ ト を <strong>System</strong> <strong>Generator</strong> ブロッ クの<br />

パラ メータ ダイアログ ボックスで選択できるようになります。<br />

xlInstallPlugin('')<br />

インストールするプラグイン フ ァ イルの名前を指定する、plugin と い う パラ メ ータのみが使用され<br />

ます。 こ のパ ラ メ ータ には、 パス情報を含め る こ と がで き ます。 .zip の拡張子はオプシ ョ ンです。<br />

例 1 :<br />

例 2 :<br />

xlInstallPlugin('plugin.zip')<br />

xlInstallPlugin('plugin')<br />

「ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン用の イ ン ス ト ール」 、 「新規プ ラ ッ ト フ ォ ーム のサポー ト 」<br />

「xlSBDBuilder」<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 431<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

xlLoadChipScopeData<br />

構文<br />

説明<br />

例<br />

関連項目<br />

ChipScope Pro の PRN フ ァ イルを読み込み、 ワー ク スペース変数を作成し、 条件付き で結果をプ<br />

ロットします。<br />

status = xlLoadChipScopeData(filename, plotResults);<br />

filename に指定された PRN フ ァ イルを読み込み、plotResults == 1 に指定されている場合は結果を<br />

プロッ ト します。 filename に指定されたフ ァ イルが見つから ない場合は、 -1 のステータスが返され<br />

ます。 正常に終了し た場合は 0 のステータスが返されます。<br />

メモ : 符号付きおよび符号な し の 10 進数のみがサポー ト さ れます。<br />

例 1 :<br />

xlLoadChipScopeData('SineWave.prn',0);<br />

「ChipScope」<br />

432 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


xlSetNonMemMap<br />

xlSetNonMemMap<br />

構文<br />

説明<br />

例<br />

関連項目<br />

ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの実行時に、 Gateway In または Gateway Out ブロックがメモ<br />

リ マップされないポート として使用されるよ うに設定します。 このオプションは、 ハードウェア協<br />

調シ ミ ュ レーシ ョ ン メモリ マップではなく、FPGA 外部のハー ド ウ ェ アに Gateway が配線される<br />

場合に頻繁に使用されます。<br />

xlSetNonMemMap(block, company, project)<br />

xlSetNonMemMap の呼び出しには、 最低 3 個のパ ラ メ ータ が必要です。 1 番目は、 メ モ リ マップ<br />

されないよ う設定する Gateway の名前またはハン ド ルです。 メモリ マップされないよ う設定する<br />

かど うかは、 社名およびプロジェ ク ト名に基づきます。 2 番目および 3 番目のパ ラ メ ータは、 社名<br />

およびプ ロ ジ ェ ク ト 名を表す文字列です。<br />

例 1 :<br />

xlSetNonMemMap(gcbh, '<strong>Xilinx</strong>', 'jtaghwcosim');<br />

例の 1 番目のパラ メータでは、 現在選択されているブロッ クのハンドルが返されます。 この<br />

Gateway は、 ザイ リ ン ク スの JTAG ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン用に生成さ れる場合は、 メ<br />

モリ マップされないポート として使用されます。<br />

例 2 :<br />

xlSetNonMemMap(gcbh, 'Nallatech, 'xdspkit');<br />

例の 1 番目のパラ メータでは、 現在選択されているブロッ クのハンドルが返されます。 この<br />

Gateway は、 Nallatech 社製 Xtreme<strong>DSP</strong> 開発キ ッ ト 用に生成される場合は、 メ モ リ マップされな<br />

いポー ト と して使用されます。<br />

「ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ンの使用」、 「新規プ ラ ッ ト フ ォームのサポー ト 」<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 433<br />

リリース 9.2.00 2007 年 8 月<br />

R


xlSetUseHDL<br />

R<br />

構文<br />

説明<br />

例<br />

関連項目<br />

サブシステムのモデルのブロ ッ クの [Use behavioral HDL] オプシ ョ ンをオンにし ます。<br />

xlSetUseHDL(system, mode)<br />

system パ ラ メ ータ で指定 さ れたモデルま たはシ ス テムで、コ ア ま たはビヘイ ビア HDL (モード によ<br />

り いずれかを決定) の使用が設定さ れます。 モード は数値で、 0 の場合はコ ア、 1 の場合はビヘイ ビ<br />

ア HDL が使用されます。<br />

例 1 :<br />

xlSetUseHDL(gcs,0)<br />

現在選択されたシ ス テムで コ アを使用する よ う に設定し ます。<br />

「xlSetNonMemMap」、 「xlSBDBuilder」<br />

434 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


xlSBDBuilder<br />

xlSBDBuilder<br />

構文<br />

説明<br />

関連項目<br />

<strong>System</strong> <strong>Generator</strong> Board Description (SBD) Builder アプ リ ケーシ ョ ンでは、協調シ ミ ュレーシ ョ ン<br />

プラ ッ ト フォームに関連した情報を入力でき るグラ フ ィ カル ユーザー インターフェイスが提供さ<br />

れるため、 新規の JTAG ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン プ ラ グ イ ンの設計に役立ち ます。<br />

xlSBDBuilder;<br />

こ の関数を実行する と 、 SBDBuilder が開き ます。<br />

「ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン用の イ ン ス ト ール」 、 「新規プ ラ ッ ト フ ォームのサポー ト 」 、<br />

「xlInstallPlugin」<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 435<br />

リリース 9.2.00 2007 年 8 月<br />

R


xlTBUtils<br />

R<br />

構文<br />

説明<br />

ザイ リンクス Toolbar ブ ロ ッ ク の一部へのア ク セス を提供し ます。 layout、 rerouting 関数および選<br />

択されたブ ロ ッ ク および行を返す関数にア ク セスで き る よ う にな り ます。<br />

例 :<br />

xlTBUtils(function, args)<br />

xlTBUtils('ToolBar')<br />

xlTBUtils('Layout',struct('verbose',1,'autoroute',0))<br />

xlTBUtils('Layout',optionStruct)<br />

xlTBUtils('Redrawlines',struct('autoroute',0))<br />

xlTBUtils('RedrawLines',optionStruct)<br />

[lines,blks]=xlTBUtils('GetSelected','All')<br />

xlTBUtils(function [,args])<br />

xlTBUtils は、 ザイ リ ン ク ス Toolbar ブ ロ ッ ク で使用される関数の集合です。 引数には、 実行する関<br />

数名を指定し ます。 引数 と し て指定し た関数に引数が必要な場合は、その関数に引数を指定し ます。<br />

引数では大文字 と 小文字は区別されません。 使用でき る値を次に示し ます。 詳細な説明は、 表の後<br />

に記述し ます。<br />

関数 説明<br />

'ToolBar' ザイ リ ンクスの Toolbar GUI を起動し ます。 既に起動し てい る場合は、前面<br />

に表示されます。<br />

'Layout' モデルでレ イ アウ ト アルゴ リ ズム を実行し、 配置および再配線を実行し ま<br />

す。 次に説明する オプシ ョ ン構造を使用し て、 カ ス タ マ イ ズで き ます。<br />

'RedrawLines' モデルで配線アルゴ リ ズムを実行し、 再配線を実行し ます。 次に説明する オ<br />

プシ ョ ン構造を使用し て、 カ ス タ マ イ ズで き ます。<br />

'GetSelected' フォーカス されたシステムで選択されているブロ ッ クおよびラ イ ンへの<br />

MATLAB Simulink ハン ドルを返し ます。<br />

xlTBUtils('Layout',optionStruct)<br />

Simulink モデルを自動的に配置配線し ます。 optionStruct は MATLAB 構造のデータ型で、 Layout<br />

のパラ メ ータ を含みます。 optionStruct 引数はオプシ ョ ンです。<br />

Layout では、回路は左から右に配置される と想定されています。 配置の後、Simulink を使用してワ<br />

イ ヤ接続が自動的に配線されます。 Simulink では、 ブロ ッ ク ラベルなど、 画面に表示さ れる も のは<br />

すべて避け る よ う に配線 さ れます。 [ignore_labels] をオンにする と 、 ラ ベルを通過し て配線 さ れま<br />

す。 ラベルは配線後に手動で見やすい場所に移動で き ます。 フ ィ ール ド 名では大文字 と 小文字が区<br />

別されるこ とに注意してください。<br />

436 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


xlTBUtils<br />

例<br />

フィールド名 説明 [デフォルト値]<br />

x_pitch、<br />

y_pitch<br />

x_start、<br />

y_start<br />

xlTBUtils('RedrawLines',optionStruct)<br />

ラ インが選択されていない場合は、 Simulink モデル内の ラ イ ン をすべて再描画し ます。 ラインを選<br />

択した場合は、 選択されたラインのみが再描画されます。 ブランチを選択した場合は、 ライン全体<br />

( メインのトランクおよびその他のサブ ブ ラ ンチすべて) が再描画さ れます。<br />

[lines,blks]=xlTBUtils('GetSelected',arg)<br />

選択されたブ ロ ッ ク およびラ イ ンへのハン ド ルを返し ます。 引数 arg はオプシ ョ ンです。 値は、次の<br />

表で説明されてい る文字列のいずれかであ る必要があ り ます。<br />

2 つの項目 (ライン情報 (lines) およびブロ ッ ク ハン ドルの配列 (blks) を含む構造の配列) を持つ配<br />

列を返し ます。 'lines' 引数が使用さ れる場合は、 blks は空の配列 と な り 、 'blocks' 引数が使用さ れる<br />

場合は、 lines が空の配列と な り ます。<br />

例 1a : レイアウトの実行<br />

a.verbose = 1;<br />

a.autoroute= 0;<br />

xlTBUtils('Layout',a);<br />

ブロッ クの間隔 (ピッチ) のピクセル数。 x_pitch ではブロ ッ クの左右の間<br />

隔、 y_pitch ではブ ロ ッ ク の上下の間隔を指定し ます。 [30]<br />

左余白 (x_start) および上余白 (y_start) をピクセル数で指定します。 モデル<br />

の左および上のスペースです。 [10]<br />

autoroute Simulink の ラ イ ンの自動配線をオンに し ます。 値は 1 または 0 です。 [1]<br />

ignore_labels ラ イ ン を自動配線する場合、 Simulink ではテキス ト ラベルを避けて配線し<br />

ます。 このフィールドを 1 に設定する と 、配線実行中はテキ ス ト ラベルのサ<br />

イ ズが最小化されます。<br />

sys レ イ ア ウ ト する シ ス テムの名前。 [gcs]<br />

verbose 1 に設定する と 、 レ イ ア ウ ト 処理の実行中に待機バーが表示されます。<br />

フィールド名 説明 [デフォルト値]<br />

autoroute Simulink の ラ イ ンの自動配線をオンに し ます。 値は 1 または 0 です。 [1]<br />

sys レ イ ア ウ ト する シ ス テムの名前。 [gcs]<br />

フィールド名 説明 [デフォルト値]<br />

'all' 選択された ラ イ ン と ブ ロ ッ ク の両方を取得し ます (デフォル ト)。<br />

'lines' 選択された ラ イ ンのみを取得し ます。<br />

'blocks' 選択されたブ ロ ッ ク のみを取得し ます。<br />

レイアウト ツールが、 verbose をオン、 autoroute をオフに し て実行さ れます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 437<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

メモ<br />

関連項目<br />

例 1b : レイアウトの実行<br />

xlTBUtils('Layout',struct('verbose',1,'autoroute',0));<br />

レイアウト ツールが、 verbose をオン、 autoroute をオフに し て実行さ れます。<br />

例 2 : ラ イ ンの再描画<br />

xlTBUtils('Redrawlines',struct('autoroute',0));<br />

現在のシ ス テムの ラ イ ン を、 autoroute をオフに し て再描画し ます。<br />

例 3 : 選択された ラ イ ンおよびブ ロ ッ ク の取得<br />

[lines,blks]=xlTBUtils('GetSelected')<br />

lines =<br />

1x3 struct array with fields:<br />

Handle<br />

Name<br />

Parent<br />

SrcBlock<br />

SrcPort<br />

DstBlock<br />

DstPort<br />

Points<br />

Branch<br />

blks =<br />

1.0e+003 *<br />

3.0320<br />

3.0480<br />

現在のシ ス テムで選択されたすべての ラ イ ン と ブ ロ ッ ク が返さ れます。 この例では、 ライン 3 つと<br />

ブロック 2 つが選択さ れています。 最初の ラ イ ン ハン ドルには、次のコマン ド を使用してアクセス<br />

できます。<br />

lines(1).Handle<br />

ans =<br />

3.0740e+003<br />

最初ブ ロ ッ ク へのハン ド ルには、 次の コ マン ド を使用し てア ク セスで き ます。<br />

blks(1)<br />

ans =<br />

3.0320e+003<br />

Layout および RedrawLines の実行内容は元に戻すこ と がで き ません。 元に戻す必要があ る場合に<br />

備えて、 実行前にモデルの コ ピーを保存し て く だ さ い。<br />

「Toolbar」、 「xlAddTerms」<br />

438 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


xlTimingAnalysis<br />

xlTimingAnalysis<br />

構文<br />

説明<br />

例<br />

<strong>System</strong> <strong>Generator</strong> のタイ ミ ング解析ツールの GUI は通常、 MATLAB の <strong>System</strong> <strong>Generator</strong> ブロッ<br />

クのパラ メータ ダイアログ ボックスで [Timing Analysis] コンパイル ターゲ ッ ト を使用する と 起<br />

動しますが、 こ の コ マン ド を使用し て も起動で き ます。 [Timing Analysis] コンパイル ターゲッ ト を<br />

設定する と 、 ツールでデザ イ ンが コ ンパイ ル さ れ、 配置配線が実行さ れ、 その他の処理が実行さ れ<br />

てから タ イ ミ ング解析ツールの GUI が表示されます。 こ の コ マン ド を使用する と 、コ ンパ イル ター<br />

ゲ ッ ト を新たに処理せずに、 前回生成さ れた タ イ ミ ング データ を GUI で開 く こ と ができ ます。<br />

xlTimingAnalysis(target_directory);<br />

タイミング データ が保存さ れてい るデ ィ レ ク ト リ を指定し て こ の コ マン ド を呼び出す と 、 <strong>System</strong><br />

Generate タイミング解析ツールの GUI が起動し ます。<br />

タイミング解析ツールの GUI には、 指定されたターゲッ ト ディレク ト リに保存されている<br />

timing.twx および name_translations データ フ ァ イルの内容が表示 さ れます。<br />

ターゲッ ト デ ィ レ ク ト リ 名は、 相対パスで も絶対パスで も かまいません。<br />

>> xlTimingAnalysis('timing')<br />

ここで 'timing' は前回の タ イ ミ ング解析を実行し た ターゲ ッ ト ディレク ト リ名です。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 439<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

xlUpdateModel<br />

構文<br />

説明<br />

<strong>System</strong> <strong>Generator</strong> v7.1 以前で作成さ れたモデルを v9.1.01 以降で使用する には、 モデルをア ッ プ<br />

デー ト する必要があ り ます。 モデルをアップデートするには、変換ス ク リプ ト を起動する MATLAB<br />

コマンド xlUpdateModel を実行し ます。<br />

変換ス ク リ プ ト では、 モデルの変換前のバージ ョ ンおよび変換後の新し いバージ ョ ンは自動的には<br />

保存されません。 変換ス ク リ プ ト を実行する前にモデルのバ ッ ク ア ッ プ コ ピーを作成する か、 ア ッ<br />

プデー ト し たモデルを別の名前で保存し て く ださい。<br />

モデルによ っては、 xlUpdateModel を実行した後に手動で変更を加える必要がある ものもあ り ま<br />

す。 こ の関数を実行する と 、 手動の変更が必要な箇所が示さ れます。<br />

xlUpdateModel('my_model_name');<br />

xlUpdateModel('my_model_name', 'lib');<br />

xlUpdateModel('my_model_name', 'assert');<br />

V2.x 以前のモデルのア ッ プデー ト<br />

v3.1 より前のバージョンのモデルをアップデートする場合は、<strong>System</strong> <strong>Generator</strong> v7.x を入手して<br />

モデルを v7.x にア ッ プデー ト し てか ら v9.1.01 にア ッ プデー ト する必要があ り ます。<br />

v3.x、 v6.x、 および v7.x モデルのアップデート<br />

このセクションでは、<strong>System</strong> <strong>Generator</strong> v3.x、 v6.x、および v7.x モデルを v9.1.01 で機能する よ う<br />

にア ッ プデー ト する手順を示し ます。<br />

メモ : このセクショ ンの v7.x に関する手順は、 v3.x または v6.x に も適用で き ます。<br />

v7.x モデルを v9.1.01 にア ッ プデー ト する基本的な手順は、 次の と お り です。<br />

1) v7.1 モデルおよびモデルで使用されるユーザー定義ラ イブラ リ のバッ ク ア ッ プ コ ピーを作成し<br />

ます。<br />

2) xlUpdateModel を まずラ イ ブ ラ リ に対し て実行し、 その後モデルに対し て実行し ます。<br />

3) xlUpdateModel のレ ポー ト を参照し、 指示に従います。<br />

4) モデルが v9.1.01 で動作する かど う かを確認し ます。<br />

これらの手順を、 次に詳し く説明します。<br />

1. v7.1 モデルおよびモデルで使用 さ れる ユーザー定義ラ イ ブ ラ リ のバ ッ ク ア ッ プ コピーを作成<br />

します。<br />

2. xlUpdateModel を実行します。<br />

MATLAB の [Command Window] で cd コ マン ド を 使用し 、 モデルを 含むディ レ ク ト リ に移動<br />

します。 モデル名が designName.mdl の場合は、「 xlUpdateModel('designName')」 と 入力し ま す。<br />

xlUpdateModel は、 次の タ ス ク を実行し ます。<br />

♦ v7.x デザ イ ンの各ブ ロ ッ ク を、 同じ設定を使用し た対応する v9.1.01 ブロックにアップ<br />

デー ト し ます。<br />

440 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


xlUpdateModel<br />

♦ 加えた変更を説明する レ ポー ト を作成し ます。 こ のレポー ト に、 ユーザーが手動で加え る<br />

必要のあ る変更も記述さ れます。<br />

ほ と んどの場合、 xlUpdateModel で等価の v9.1.01 モデルが生成されますが、 変更が必要な構<br />

文が含まれている可能性があ り ます。 レポート を参照し、 このセクシ ョ ンの残りの手順に従う<br />

ことが重要です。<br />

3. xlUpdateModel レポート を参照し、 その指示に従います。<br />

レポー ト に次の問題が記述されている場合は、 手動の変更が必要です。<br />

a. <strong>System</strong> <strong>Generator</strong> v7.x モデルに削除さ れたブ ロ ッ ク が含まれてい る。<br />

次のブロ ッ クは、 <strong>System</strong> <strong>Generator</strong> か ら削除さ れています。<br />

CIC、Clear Quantization Error、Digital Up Converter、J.83 Modulator、Quantization Error、<br />

Sync<br />

b. <strong>System</strong> <strong>Generator</strong> v7.x モデルに廃止予定のブ ロ ッ ク が含まれてい る。<br />

DDSv4.0 ブロッ クはまだ <strong>System</strong> <strong>Generator</strong> に含まれていますが、 廃止予定です。<br />

c. <strong>System</strong> <strong>Generator</strong> v7.x モデルでサンプ リ ング周期を明示的に指定する フ ィ ール ド が使用<br />

されている。<br />

サンプ リ ン グ周期を明示的に指定する フ ィ ール ド は、 <strong>System</strong> <strong>Generator</strong> v9.1.01 のソース<br />

以外のほ と んどのブ ロ ッ ク で削除されています。 Counter ブロッ クなどのソース ブロック<br />

では、 サンプ リ ン グ周期の明示的な指定が可能です。 フィードバック ループを含むモデル<br />

を ア ッ プデー ト する場合は、 <strong>System</strong> Generater でパスの適切なレー ト と タ イ プを判断で き<br />

るようにするため、 通常 xlUpdateModel を実行した後に Assert ブ ロ ッ ク を追加する必要<br />

があ り ます。 次の メ ッ セージは、 Assert ブロッ クが必要であるこ とを示しています。<br />

The data rates could not be established <strong>for</strong> the feedback paths through this block. You<br />

may need to add Assert blocks to instruct the system<br />

この場合、 各フィードバック ループに Assert ブロックを追加し、 このブロッ クでレート<br />

とタイプを指定します。<br />

変換ス ク リ プ ト では、 v7.1 モデルの周期が明示的に指定 さ れた部分すべてに対し て、 モデ<br />

ルが変換された こ と が示さ れます。 変換後のモデルでは、 ほ と んどの場合 Assert ブロッ ク<br />

を追加する必要はあ り ません。 Assert ブ ロ ッ ク が必要かど う かを判断する には、 ダ イ アグ<br />

ラムをアップデート します ([編集] → [モデルの更新] をクリ ック)。 レート が決定しない場<br />

合は、 1 つ以上の Assert ブ ロ ッ ク を挿入する必要があ り ます。<br />

明示的なサンプ リ ン グ周期の設定を使用する ブ ロ ッ ク の後に自動的に Assert ブロッ クを<br />

追加する よ う に、 変換ス ク リ プ ト を設定で き ます。 このオプショ ンを使用するには、 次の<br />

コマンドを実行します。<br />

xlUpdateModel(designName,'assert')<br />

4. アップデート されたモデルを保存し、 閉じます。<br />

アップデート前のモデルのバックアップ コ ピーを作成し ていない場合は、ア ッ プデー ト 後<br />

のモデルを別の名前で保存し ます。<br />

5. モデルが <strong>System</strong> <strong>Generator</strong> v9.1.01 で動作する こ と を確認し ます。<br />

上記の手順に従っていれば、 モデルは <strong>System</strong> <strong>Generator</strong> v9.1.01 で動作するはずです。 モ<br />

デルを <strong>System</strong> <strong>Generator</strong> v9.1.01 で開き、 実行し て く だ さ い。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 441<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

例<br />

例 1 :<br />

>> xlUpdateModel('my_model_name');<br />

現在の作業デ ィ レ ク ト リ にあ る my_model_name.mdl フ ァ イ ルをア ッ プデー ト し ます。<br />

例 2 :<br />

>> xlUpdateModel('my_model_name','lib');<br />

現在の作業デ ィ レ ク ト リ にあ る my_model_name.mdl ファイルと関連するライブラリをアップ<br />

デー ト し ます。<br />

例 3 :<br />

>> xlUpdateModel('my_model_name','assert');<br />

現在の作業デ ィ レ ク ト リ にあ る my_model_name.mdl フ ァ イルをア ッ プデー ト し ます。 必要に応じ<br />

て Assert ブロックを追加します。<br />

442 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


xlVersion<br />

xlVersion<br />

構文<br />

説明<br />

例<br />

関連項目<br />

複数のバージ ョ ンの <strong>System</strong> <strong>Generator</strong> をインストールできます。 MATLAB コマンド xlVersion を<br />

使用する と イ ンス ト ールされているバージ ョ ンが表示され、 バージ ョ ンを切り 替える こ とができ ま<br />

す。 バージ ョ ンの切 り 替えには、 MATLAB の再起動が必要な場合があ り ます。 その場合は、 コ マ<br />

ン ド に よ り その指示が表示されます。<br />

<strong>System</strong> <strong>Generator</strong> 8.2 をインストールした後に 8.1 を イ ン ス ト ールし た場合、xlVersion を機能させ<br />

るには 8.2 を再イ ン ス ト ールする必要があ り ます。<br />

xlVersion;<br />

xlVersion ver;<br />

xlVersion -add directory;<br />

パラ メ ータ を指定せずに こ の コ マン ド を呼び出す と、 イ ン ス ト ール さ れた現在のバージ ョ ンの<br />

<strong>System</strong> <strong>Generator</strong> および使用可能なバージ ョ ンすべてが表示さ れます。<br />

ver オプシ ョ ンで、 切り 替え先の <strong>System</strong> <strong>Generator</strong> のバージ ョ ンを指定し ます。<br />

-add オプシ ョ ン を使用する と 、 デ ィ レ ク ト リ を指定で き ます。 <strong>System</strong> <strong>Generator</strong> がインス トールさ<br />

れているディ レ ク ト リ を指定し ます。 指定されたディ レク ト リにインス トールされた <strong>System</strong><br />

<strong>Generator</strong> が、 使用する <strong>System</strong> <strong>Generator</strong> として起動します。<br />

例 1 :<br />

>> xlVersion<br />

イ ン ス ト ール さ れてい る使用可能な <strong>System</strong> <strong>Generator</strong> が示されます。<br />

Version 8.2 in C:/MATLAB71/toolbox/xilinx/sysgen<br />

Version 8.1 in C:/MATLAB71/toolbox/xilinx.8.1/sysgen<br />

<strong>System</strong> <strong>Generator</strong> の現在のバージ ョ ンは、 8.2 です。<br />

例 2 :<br />

>> xlVersion 8.1<br />

<strong>System</strong> <strong>Generator</strong> のバージ ョ ンが切 り 替わ り ます。 MATLAB を再起動する必要があ り ます。<br />

例 3 :<br />

>> xlVersion -add c:/matlab/toolbox/xilinx81/sysgen<br />

「ハー ド ウ ェ ア協調シ ミ ュ レーシ ョ ン を使用し た リ アルタ イ ム信号処理」<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 443<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

444 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


R<br />

プログラムを使用したアクセス<br />

プ ログ ラムを使用し たブ ロ ッ ク図の生成<br />

第 5 章<br />

システムのデザイン入力には Simulink のグラフ ィ カルなブロ ッ ク エデ ィ タがよ く 使用されます<br />

が、 ブ ロ ッ ク および信号の イ ン ス タ ンシエーシ ョ ン、 カ ス タ マ イ ズ、 削除などの機能をサポー ト す<br />

る MATLAB API を使用して、 Simulink モデルを作成でき ます。 この API を使用する と 、 <strong>System</strong><br />

<strong>Generator</strong> モデルなどの Simulink モデルを新規に生成する MATLAB ス ク リ プ ト を作成で き ます。<br />

また、Simulink モデルをマ ス ク 初期化ブ ロ ッ ク か ら カ ス タ マ イ ズする場合に も便利です。 パラ メー<br />

タ の変更に応じ て、 サブシ ス テムの構成が変更さ れます。<br />

FPGA に最適な CORDIC アルゴ リ ズムを使用し た、 直交座標か ら極座標への変換ブ ロ ッ ク の イ ン<br />

プリメントを例に考えて見ます。 計算は、 次の反復方程式で定義さ れます。<br />

こ こ で、 変数δ i は 1 または -1 となり、y i は単調に 0 になる傾向があ り ます。<br />

CORDIC アルゴ リ ズムは単純です。 シ フ ト および加算演算のみを使用し て出力を計算し ます。 従来<br />

のプ ロ セ ッ サでは、 反復方程式は <strong>for</strong> や while などの反復ループ内で計算さ れていま し た。 これは<br />

FPGA で も実行で き ますが、 次に示すよ う に、 各繰 り 返し手順で個別の処理エレ メ ン ト を使用し て<br />

計算をパ ラ レル化する と 、 スループ ッ ト を大幅に向上で き ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 445<br />

リリース 9.2.00 2007 年 8 月


R<br />

CORDIC プロセッサはこのよ うな処理エレメン トがカスケード接続によ り構成されており、次の図<br />

に示すよ う に、各エレ メ ン ト が Simulink サブシステムとしてインプリ メント されます。 チェーンの<br />

最後のエレ メ ン ト の出力では、 zn は tan-1(x0) の近似値、 xn は K(x2 + y2)1/2 と な り ます。 こ の場<br />

合、 定数 K = 1.646760... です。<br />

CORDIC プ ロ セ ッ サの出力でのビ ッ ト 精度は、繰 り 返し ス テ ッ プ数の関数、 またはチェーンにあ る<br />

処理エレ メ ン ト の数の関数です。 この値はマスク パラ メータ と して保管でき、 モデルはパラ メータ<br />

の変化に対応し て動的に調整されます。<br />

VHDL では、 こ の タ イ プの反復する ブ ロ ッ ク の イ ン ス タ ンシエーシ ョ ンは、 FOR GENERATE 文<br />

で実行でき ます。 <strong>System</strong> <strong>Generator</strong> では、 サブシ ス テムのマス ク 初期化コー ド で MATLAB API 関<br />

数を実行し ます。 次の よ う にな り ます。<br />

cordic_pe = find_system(gcb, 'lookUnderMasks', 'all',<br />

'FollowLinks','on','masktype', 'CORDIC parallel PE');<br />

a=find_system(cordic_pe{1}, 'lookUnderMasks', 'all',<br />

'FollowLinks','on','masktype', 'CORDIC iteration PE');<br />

こ の結果、 含まれた CORDIC PE サブシ ス テムすべてのベ ク タ (セル配列) 'a' が生成 さ れます。 各<br />

ベクタの削除は、 次のよ うに実行されます。<br />

delete_block(a{i});<br />

ま た、 次の関数呼び出し では、 エレ メ ン ト 間の ラ イ ンが削除さ れます。<br />

delete_line(cordic_pe{1}, ['CORDIC PE' int2str(i-1) '/' int2str(j)],<br />

['CORDIC PE' int2str(i) '/' int2str(j)]);<br />

同様の呼び出し で、 サブシ ス テムの入力ポー ト および出力ポー ト への ラ イ ンが削除さ れます。 次の<br />

よ う に、 サブシ ス テムに反復サブシ ス テム を任意の回数挿入し ます。<br />

add_block([cordic_pe{1} '/CORDIC PE1'], [cordic_pe{1} '/CORDIC PE'<br />

int2str(i)], 'ii', int2str(i-1),'pe_nbits', 'pe_nbits','pe_binpt',<br />

'pe_binpt','pipeline',['pipeline(1,' int2str(i)<br />

')'],'position',[150+(i-1)*125, 70, 205+(i-1)*125, 130]);<br />

ここで、マスク パラ メータ pe_nbits および pe_binpt では、 各処理エレ メ ン ト のビ ッ ト 精度が定義<br />

されます。 サブシステム ブ ロ ッ ク は次の関数を使用し て接続されます。<br />

add_line(cordic_pe{1}, ['CORDIC PE' int2str(i-1) '/' int2str(j)],<br />

['CORDIC PE' int2str(i) '/' int2str(j)], 'autorouting', 'on');<br />

ザイ リンクス <strong>リファレンス</strong> ブロッ クセッ トには、CORDIC アルゴ リ ズムのバ リ エーシ ョ ンを含め、<br />

この API を使用する サブシ ス テムの例が含まれています。 API の構文の詳細は、Simulink のマニュ<br />

アルを参照して く ださい。<br />

メモ : CORDIC デモで示 さ れてい る よ う に、サブシ ス テムのマス ク 初期化コー ド にモデルを変更す<br />

る コ マン ド を組み込む場合は、 コー ド を MATLAB の 「try」 「catch」 節で囲み、このcatch 節で<br />

disp(lasterr) を呼び出す と 便利です。<br />

メモ : ブ ロ ッ ク のパ ラ メ ータ設定を容易にする ため、 ザ イ リ ン ク ス ではブ ロ ッ ク に設定で き るすべ<br />

てのパ ラ メ ータ と 設定可能なパ ラ メ ータ を記述する MATLAB 関数を提供し ています。 こ の関数を<br />

使用する には、 パ ラ メ ータ を設定する ブ ロ ッ ク の コ ピーを選択し、 次の関数を実行し ます。 こ こ で<br />

は、 ザイ リ ン ク スの Accumulator ブ ロ ッ ク に対し て生成 さ れる出力も同時に示し ます。<br />

446 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


プ ログ ラムを使用し たブ ロ ッ ク図の生成<br />

>> xlShowParams('xbsIndex_r4/Accumulator')<br />

-----------------------------------------------------<br />

<strong>Xilinx</strong> Accumulator Block<br />

Parameters Valid Settings<br />

---------- --------------<br />

operation: 'Add' or 'Subtract'<br />

n_bits: <br />

overflow: 'Wrap' or 'Saturate'<br />

or 'Flag as error'<br />

scale: '1' or '1/2' or '1/4' or '1/8'<br />

or '1/16' or '1/32' or '1/64'<br />

or '1/128' or '1/256'<br />

rst: 'on' or 'off'<br />

hasbypass: 'on' or 'off'<br />

en: 'on' or 'off'<br />

-----------------------------------------------------<br />

set_param の使用例<br />

set_param(blk,'operation','Add')<br />

set_param(blk,'operation','Subtract')<br />

set_param(blk,'n_bits','f(x)')<br />

set_param(blk,'overflow','Wrap')<br />

set_param(blk,'overflow','Saturate')<br />

set_param(blk,'overflow','Flag as error')<br />

set_param(blk,'scale','1')<br />

set_param(blk,'scale','1/2')<br />

set_param(blk,'scale','1/4')<br />

set_param(blk,'scale','1/8')<br />

set_param(blk,'scale','1/16')<br />

set_param(blk,'scale','1/32')<br />

set_param(blk,'scale','1/64')<br />

set_param(blk,'scale','1/128')<br />

set_param(blk,'scale','1/256')<br />

set_param(blk,'rst','on')<br />

set_param(blk,'rst','off')<br />

set_param(blk,'hasbypass','on')<br />

set_param(blk,'hasbypass','off')<br />

set_param(blk,'en','on')<br />

set_param(blk,'en','off')<br />

>><br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 447<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

<strong>System</strong> <strong>Generator</strong> でのプログラムを使用したアクセス<br />

<strong>System</strong> <strong>Generator</strong> API では、 フ ァ イル SharedMemory.h で定義されている ク ラ スが主に使用され<br />

ています。 各クラス内には、 <strong>System</strong> <strong>Generator</strong> データへのア ク セス を可能にする関数があ り ます。<br />

この API には、 SharedMemory.h (sysgen/include 内) および sysgen.dll (sysgen/lib 内) への リ<br />

ン ク を含め る必要があ り ます。<br />

次のオブジェ ク ト が、 Sysgen 名前空間で定義されています。<br />

SharedMemory クラス<br />

LockableSharedMemory クラス<br />

SharedMemoryProxy クラス<br />

Request Struct<br />

NamedPipeReader クラス<br />

NamedPipeWriter クラス<br />

448 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


SharedMemory<br />

SharedMemory<br />

Public タイプ<br />

Public メソッド<br />

Static Public 属性<br />

Protected タイプ<br />

LockableSharedMemory および SharedMemoryProxy に継承されます。<br />

• enum creation_tag_dispatch { creation_tag }<br />

• enum owner_type { base, lockable, proxy }<br />

• SharedMemory (const std::string &name, int nwords, int word_size, creation_tag_dispatch)<br />

• SharedMemory (const std::string &name, unsigned start_address=0, int nwords=INHERIT,<br />

int word_size=INHERIT, double timeout_sec=NEVER)<br />

• virtual ~SharedMemory ()<br />

• std::string getName () const<br />

• unsigned getNWords () const<br />

• unsigned getWordSize () const<br />

• owner_type getOwnerType () const<br />

• virtual bool couldBlockOnReadOrWrite () const<br />

• virtual bool read (unsigned addr, StdLogicVector &value, double timeout_sec=NEVER) const<br />

• virtual bool write (unsigned addr, const StdLogicVector &value, double timeout_sec=NEVER)<br />

• virtual bool readArray (unsigned addr, unsigned nwords, StdLogicVectorVector &buffer, double<br />

timeout_sec=NEVER) const<br />

• virtual bool writeArray (unsigned addr, unsigned nwords, const StdLogicVectorVector &buffer,<br />

double timeout_sec=NEVER)<br />

• const int NEVER = -1<br />

Protected メソッド<br />

Protected 属性<br />

• const int INHERIT = -1<br />

• enum protected_constructor_tag_dispatch { protected_constructor_tag }<br />

• SharedMemory (const std::string &name, int nwords, int word_size, protected_constructor_tag_<br />

dispatch)<br />

• SharedMemory ()<br />

• SharedMemoryImpl * _impl<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 449<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

メンバー列挙<br />

enum creation_tag_dispatch<br />

列挙値 :<br />

creation_tag : 既存の物理 メ モ リ にア ク セスする コ ン ス ト ラ ク タ か ら、物理 メ モ リ を作成する コ<br />

ン ス ト ラ ク タ を区別する ためにのみ使用さ れます。<br />

enum owner_type<br />

列挙値 :<br />

base : SharedMemory として作成された物理メモリ。<br />

lockable : LockableSharedMemory として作成された物理メモリ。<br />

proxy : SharedMemoryProxy として作成された物理メモリ。<br />

enum protected_constructor_tag_dispatch [protected]<br />

列挙値 :<br />

protected_constructor_tag<br />

コンストラクタおよびデストラクタ<br />

SharedMemory (const std::string & name, int nwords, int word_size,<br />

creation_tag_dispatch T)<br />

このタグ ディ ス パッ チさ れたコ ン ス ト ラ ク タ では、 オブジェ ク ト の基礎と なる 物理メ モリ (OS と 共<br />

有) が作成さ れま す。 呼び出す際に、 メ モリ が格納する ワ ード 数およ びワ ード 当たり のビ ッ ト 数を 指<br />

定する 必要があり ま す。 コ ン ス ト ラ ク タ の最終的な引数は、列挙型定数 SharedMemory::creation_tag<br />

である 必要があり ま す。<br />

パラ メータ<br />

name : OS への発行に使用された共有 メ モ リ の名前。 ほかのス レ ッ ド に よ る作成さ れた メ モ リ<br />

の検出にも使用されます。<br />

nwords : メ モ リ が格納する ワー ド 数。<br />

word_size : ワード当た りのビッ ト数。<br />

T : 使用で き る値は SharedMemory::creation_tag のみです。 こ のパラ メ ータは、 こ のコ ン ス ト<br />

ラ ク タ が要求された も のであ り 、 指定さ れた名前を持つ既存の共有 メ モ リ を検出する も のでは<br />

ないこ と を コ ンパイ ラに明確に示すために使用されます。<br />

SharedMemory (const std::string & name, unsigned start_address = 0, int<br />

nwords = INHERIT, int word_size = INHERIT, double timeout_sec =<br />

NEVER)<br />

このコンス ト ラクタでは、 既に作成された物理メモリ ストアを使用する SharedMemory インスタ<br />

ンスが作成されます。 既存の メ モ リ は指定 さ れた名前を使用し て OS によ り検出されますが、 指定<br />

し た名前の メ モ リ が見つか らず、 タ イ ムア ウ ト が発生し た場合は、 Sysgen::Error というエラーが発<br />

生します。<br />

450 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


SharedMemory<br />

パラ メータ<br />

name : OS への発行に使用 さ れた共有 メ モ リ の名前。<br />

start_address : 物理 メ モ リ のア ド レ ス空間へのオフセ ッ ト (デフォル ト は 0)。<br />

nwords : イ メージ化されたメモリのサイズ。 物理 メ モ リ のサ イ ズ よ り も小さ い値に し ます。 大<br />

きい場合 (start_address が設定 さ れてい る場合は物理 メ モ リ の終点を越えた場合) は、<br />

Sysgen::Error というエラーが発生します。 デフォル ト値は INHERIT で、 イ メ ージ化された メ<br />

モリは物理メモリの終点まで拡張します。<br />

word_size : ワード当た りのビッ ト数。 物理 メ モ リ に一致する必要があ り ます。 一致し ない場合<br />

は Sysgen::Error というエラーが発生します。 デフォル ト 値は INHERIT です。<br />

timeout_sec : 物理共有 メ モ リ が OS を介し て使用可能にな る まで コ ン ス ト ラ ク タ が待機する時<br />

間を秒単位で指定し ます。 デフォル ト 値は 15 秒です。 NEVER に も設定で き ます。<br />

~SharedMemory () [virtual]<br />

SharedMemory オブジェ ク ト が破棄される と、 そのハン ドルが OS を介して共有されている物理メ<br />

モリに開放されます。 物理メモリはリ ファレンスを考慮したリ ソースで、 リ ソースへのハンドルが<br />

すべて開放される と メモリ も開放されます。 メモリが 1 つのス レ ッ ド で作成されてから 2 番目のス<br />

レ ッ ド でア ク セ ス さ れる場合、 物理 メ モ リ を作成および初期化し たオブジ ェ ク ト が作成ス レ ッ ド で<br />

破棄された後も、 2 番目のス レ ッ ド は メモリ ス トアにそのままアクセスし続けることができます。<br />

SharedMemory (const std::string & name, int nwords, int word_size,<br />

protected_constructor_tag_dispatch T) [protected]<br />

派生ク ラ スで使用されるprotected コンスト ラクタで、 public クラス API の一部ではあ り ません。<br />

パラ メータ<br />

nwords : メ モ リ が格納する ワー ド 数。<br />

word_size : ワード当た りのビッ ト数。<br />

T : 使用で き る値は SharedMemory::protected_constructor_tag のみです。 こ のパラ メ ータは、<br />

こ の コ ン ス ト ラ ク タ が要求 さ れた も のであ り 、 public コンス ト ラクタではないことをコンパイ<br />

ラ に明確に示すために使用さ れます。<br />

SharedMemory () [protected]<br />

メンバー関数<br />

デフォル ト のコンス ト ラ ク タでは基礎になる インプ リ メ ンテーシ ョ ンがない (_impl ポインタが<br />

NULL) SharedMemory が作成されます。 こ の場合、こ の コ ン ス ト ラ ク タは private として宣言され、<br />

親の イ ンプ リ メ ンテーシ ョ ン を確立する必要があ る派生ク ラ スに よ っ てのみ使用さ れます。<br />

std::string getName () const<br />

戻り値<br />

メ モ リ の作成に使用された名前。 こ の名前は、 ほかの SharedMemory インスタンスを同じメモ<br />

リ に割 り 当てる場合にも使用でき ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 451<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

unsigned getNWords () const<br />

戻り値<br />

メ モ リ に格納される ワー ド 数。 メモリのインデックスは、 アドレス 0 ~ getNWords()-1 にな り<br />

ます。 特定の SharedMemory インスタンスでは、 この値は定数です。<br />

unsigned getWordSize () const<br />

戻り値<br />

メモリのワード当たりのビット数。 特定の SharedMemory インスタンスでは、この値は定数<br />

です。<br />

Sysgen::SharedMemory::owner_type getOwnerType () const<br />

戻り値<br />

次の列挙定数値のいずれか 1 つが返されます。<br />

♦ SharedMemory::base : 物理 メ モ リ がベース SharedMemory コンスト ラクタを介して作成<br />

されている場合<br />

♦ SharedMemory::lockable : 物理 メ モ リ が派生 LockableSharedMemory コンスト ラクタを<br />

介して作成されている場合<br />

♦ SharedMemory::proxy : 物理 メ モ リ が派生 SharedMemoryProxy コンスト ラクタを介して<br />

作成されてい る場合<br />

bool couldBlockOnReadOrWrite () const [virtual]<br />

戻り値<br />

read() または write() への呼び出しがブロ ッ ク (read/write 呼び出しへの timeout_sec パラ メー<br />

タが NEVER に設定されている場合) ま たはタ イ ムア ウ ト する可能性のあ る場合は True。 メモ<br />

リを作成していない SharedMemory オブジ ェ ク ト が、 反対側にあ る LockableSharedMemory<br />

または SharedMemoryProxy と し て作成 さ れた メ モ リ を参照する場合があ り ます。 いずれの場<br />

合も、 read/write 呼び出し がブロ ッ クする可能性があ り ます。 SharedMemory オブジェ ク ト が<br />

LockableSharedMemory に接続さ れてい る場合は、 読み出し操作および書き込み操作で<br />

acquireLock および releaseLock セマンテ ィ ク ス が暗示的に強制されます。<br />

LockableSharedMemory および SharedMemoryProxy で再イ ンプ リ メ ン ト されます。<br />

bool read (unsigned addr, StdLogicVector & value, double timeout_sec =<br />

NEVER) const [virtual]<br />

パラ メータ<br />

addr : 読み出さ れる ア ド レ ス。 範囲は [0, getNWords()-1] であ る必要があ り ます。 範囲外の場<br />

合は、 Sysgen::Error 例外が発生し ます。<br />

value : メ モリ から 読み出さ れた値で内容が上書き さ れる StdLogicVector への参照。<br />

StdLogicVector の型およびサイズを適切にするには、呼び出し側でコンス ト ラ ク トする必要が<br />

あります。<br />

timeout_sec : read 操作を試みる時間を秒単位で指定し ます。<br />

452 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


SharedMemory<br />

戻り値<br />

読み出し が正し く 実行さ れた場合は True。 timeout_sec が NEVER に設定されている場合は<br />

Ttrue が返されるか、 何も返されません。 False が返された場合は、 タ イ ムア ウ ト です。<br />

couldBlockOnReadOrWrite()、 readArray() も参照してください。<br />

bool write (unsigned addr, const StdLogicVector & value, double<br />

timeout_sec = NEVER) [virtual]<br />

パラ メータ<br />

戻り値<br />

addr : 書き込まれるアドレス。 範囲は [0, getNWords()-1] であ る必要があ り ます。 範囲外の場<br />

合は、 Sysgen::Error 例外が発生し ます。<br />

value : 内容が物理共有 メ モ リ に コ ピー さ れる StdLogicVector への参照。 StdLogicVector の<br />

ビ ッ ト 数を メ モ リ に一致させる には、 呼び出し側で コ ン ス ト ラ ク ト する必要があ り ます。<br />

timeout_sec : write 操作を試みる時間を秒単位で指定し ます。<br />

書き込みが正し く実行された場合は True。 timeout_sec が NEVER に設定されている場合は<br />

Ttrue が返されるか、 何も返されません。 False が返された場合は、 タ イ ムア ウ ト です。<br />

couldBlockOnReadOrWrite()、 writeArray() も参照してください。<br />

bool readArray (unsigned addr, unsigned nwords, StdLogicVectorVector &<br />

buffer, double timeout_sec = NEVER) const [virtual]<br />

パラ メータ<br />

戻り値<br />

addr : 読み出 さ れる 1 番目のア ド レ ス。 範囲は [0, getNWords()-1] である必要があ り ます。 範<br />

囲外の場合は、 Sysgen::Error 例外が発生し ます。<br />

nword : 読み出 さ れる ワー ド 数。<br />

buffer : メモリから読み出された値で内容が上書きされる StdLogicVectorVector への参照。<br />

StdLogicVectorVector の型、 ワード数 (nwords 以上)、 およびワード当たりのビット数を適切<br />

にする には、 呼び出し側で コ ン ス ト ラ ク ト する必要があ り ます。<br />

addr+nwords > getNWords() の場合は、 Sysgen::Error 例外が発生し ます。<br />

timeout_sec : readArray 操作を試みる時間を秒単位で指定し ます。<br />

読み出し が正し く 実行さ れた場合は True。 timeout_sec が NEVER に設定されている場合は<br />

Ttrue が返されるか、 何も返されません。 False が返された場合は、 タ イ ムア ウ ト です。<br />

couldBlockOnReadOrWrite()、 read() も参照してください。<br />

bool writeArray (unsigned addr, unsigned nwords, const<br />

StdLogicVectorVector & buffer, double timeout_sec = NEVER) [virtual]<br />

パラ メータ<br />

addr : 書き込まれる 1 番目のア ド レ ス。 範囲は [0, getNWords()-1] である必要があ り ます。 範<br />

囲外の場合は、 Sysgen::Error 例外が発生し ます。<br />

nword : 書き込まれるワード数。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 453<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

戻り値<br />

メンバー データ<br />

addr+nwords > getNWords() の場合は、 Sysgen::Error 例外が発生し ます。<br />

buffer : 内容が物理共有メ モリ に移動さ れる StdLogicVectorVector への参照。<br />

StdLogicVectorVector の型、 ワード数 (nwords 以上)、 およびワード当たりのビット数を適切<br />

にする には、 呼び出し側で コ ン ス ト ラ ク ト する必要があ り ます。<br />

timeout_sec : writeArray 操作を試みる時間を秒単位で指定し ます。<br />

書き込みが正し く実行された場合は True。 timeout_sec が NEVER に設定されている場合は<br />

Ttrue が返されるか、 何も返されません。 False が返された場合は、 タ イ ムア ウ ト です。<br />

couldBlockOnReadOrWrite()、 write() も参照してください。<br />

const int NEVER = -1 [static]<br />

タ イ ムア ウ ト が発生し ないよ う に、 タ イ ムア ウ ト 設定で メ ソ ッ ド をパラ メ ータ化するために使用し<br />

ます。<br />

LockableSharedMemory および SharedMemoryProxy で再イ ンプ リ メ ン ト されます。<br />

const int INHERIT = -1 [static]<br />

既に作成されてい る共有 メ モ リ の特性を継承する ために使用さ れます。<br />

LockableSharedMemory で再イ ンプ リ メ ン ト されます。<br />

SharedMemoryImpl* _impl [protected]<br />

454 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


LockableSharedMemory<br />

LockableSharedMemory<br />

Public タイプ<br />

Public メソッド<br />

Static Public 属性<br />

メンバー Typedefs<br />

SharedMemory の特性を継承し ます。<br />

• typedef void(* callback )(LockableSharedMemory &, void *)<br />

• LockableSharedMemory (const std::string &name, int nwords, int word_size,<br />

creation_tag_dispatch)<br />

• LockableSharedMemory (const std::string &name, unsigned start_address=0,<br />

int nwords=INHERIT, int word_size=INHERIT, double timeout_sec=15.0)<br />

• virtual ~LockableSharedMemory ()<br />

• virtual bool couldBlockOnReadOrWrite () const<br />

• virtual bool acquireLock (double timeout_sec=NEVER)<br />

• virtual bool acquireLock (callback function, void *arg, double timeout_sec=NEVER)<br />

• virtual bool lockedByMe () const<br />

• virtual void releaseLock ()<br />

• virtual const StdLogicVectorVector & viewAsStdLogicVectorVector () const<br />

• virtual StdLogicVectorVector & viewAsStdLogicVectorVector ()<br />

• const uint32 * getRawDataPtr () const<br />

• uint32 * getRawDataPtr ()<br />

• const int NEVER = -1<br />

• const int INHERIT = -1<br />

• typedef void(* callback)(LockableSharedMemory&, void*)<br />

コンストラクタおよびデストラクタ<br />

LockableSharedMemory (const std::string & name, int nwords, int<br />

word_size, creation_tag_dispatch T)<br />

マッ チング ベース ク ラス (SharedMemory) コ ン ス ト ラ ク タ に似ていま すが、 ロ ッ ク (mutex) セマ<br />

ン ティ ク ス 付き の共有メ モリ が作成さ れま す。 LockableSharedMemory ク ラスは、SharedMemory<br />

クラスを acquireLock() および releaseLock() メ ソ ッ ドを使用して拡張します。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 455<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

LockableSharedMemory (const std::string & name, unsigned start_address<br />

= 0, int nwords = INHERIT, int word_size = INHERIT, double timeout_sec =<br />

15.0)<br />

マッ チング ベース ク ラス (SharedMemory) コ ン ス ト ラ ク タ に似ていま すが、 ロ ッ ク (mutex) セマ<br />

ン ティ ク ス 付き の共有メ モリ が作成さ れま す。 LockableSharedMemory ク ラスは、SharedMemory<br />

クラスを acquireLock() および releaseLock() メ ソ ッ ドを使用して拡張します。<br />

~LockableSharedMemory () [virtual]<br />

メンバー関数<br />

使用法はベース クラス (SharedMemory) デス ト ラ ク タ とほぼ同じですが、LockableSharedMemory<br />

デス ト ラ ク タ ではロ ッ ク が保持さ れていれば解放さ れます。<br />

virtual bool couldBlockOnReadOrWrite () const [inline, virtual]<br />

戻り値<br />

read() または write() への呼び出しがブロ ッ ク (read/write 呼び出しへの timeout_sec パラ メー<br />

タが NEVER に設定されている場合) ま たはタ イ ムア ウ ト する可能性のあ る場合は True。 メモ<br />

リを作成していない SharedMemory オブジ ェ ク ト が、 反対側にあ る LockableSharedMemory<br />

または SharedMemoryProxy と し て作成 さ れた メ モ リ を参照する場合があ り ます。 いずれの場<br />

合も、 read/write 呼び出し がブロ ッ クする可能性があ り ます。 SharedMemory オブジェ ク ト が<br />

LockableSharedMemory に接続さ れてい る場合は、 読み出し操作および書き込み操作で<br />

acquireLock および releaseLock セマンテ ィ ク ス が暗示的に強制されます。<br />

SharedMemory から再インプリ メント されます。<br />

bool acquireLock (double timeout_sec = NEVER) [virtual]<br />

ロ ッ ク の取得を試みます。<br />

パラ メータ<br />

timeout_sec : acquireLock 操作を試みる時間を秒単位で指定し ます。<br />

返される内容<br />

timeout_sec 秒以内に ロ ッ ク が取得で き た場合は True、 それ以外は False が返されます。<br />

timeout_sec が NEVER に設定されてい る場合は True が返されるか、 何も返されません。<br />

bool acquireLock (callback function, void * arg, double timeout_sec =<br />

NEVER) [virtual]<br />

ロ ッ ク の取得を試み、 取得された場合は、 処理中のほかのユーザーが ロ ッ ク を解放する ために使用<br />

で き る コールバ ッ ク 関数を設定し ます。 ユーザー アプ リ ケーシ ョ ンでは、 通常はこのメ ソ ッ ド を使<br />

用しないでください。 このメ ソ ッ ドは、複数のメモ リ クライアントが 1 つのス レ ッ ド にあ り 、 こ の<br />

メ ソ ッ ド を使用しなければデッ ド ロ ッ クになる可能性がある、<strong>System</strong> <strong>Generator</strong> の内部アプ リ ケー<br />

シ ョ ンで使用し ます。<br />

パラ メータ<br />

function : ロ ッ ク が必要なほかの共有メ モリ クライアント によって起動されるコールバック<br />

関数。<br />

456 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


LockableSharedMemory<br />

戻り値<br />

arg : コールバ ッ ク 関数に渡される void* 引数。<br />

timeout_sec : acquireLock 操作を試みる時間を秒単位で指定し ます。<br />

timeout_sec 秒以内に ロ ッ ク が取得で き た場合は True、 それ以外は False が返されます。<br />

timeout_sec が NEVER に設定されてい る場合は True が返されるか、 何も返されません。<br />

bool lockedByMe () const [virtual]<br />

戻り値<br />

呼び出し てい る イ ン ス タ ン スが ロ ッ ク を保持し てい る場合は True。<br />

void releaseLock () [virtual]<br />

呼び出し てい る イ ン ス タ ン スが ロ ッ ク を保持し てい る場合は解放し ます。 ロ ッ ク を保持し ていない<br />

場合は、 呼び出し は no-op となります。<br />

const Sysgen::StdLogicVectorVector & viewAsStdLogicVectorVector ()<br />

const [virtual]<br />

戻り値<br />

内部データ ス ト アが物理共有 メ モ リ に対応付け られている const StdLogicVectorVector 参照。<br />

こ の メ ソ ッ ド は、高性能のアプ リ ケーシ ョ ンでのみ使用し て く だ さ い。 アクセスは高速ですが、<br />

チェ ッ ク が実行されないため安全性が低 く な り ます。<br />

Sysgen::StdLogicVectorVector & viewAsStdLogicVectorVector () [virtual]<br />

戻り値<br />

内部データ ス ト アが物理共有 メ モ リ に対応付け ら れてい る StdLogicVectorVector 参照。 この<br />

メソッドは、高性能のアプリケーションでのみ使用してください。 アクセスは高速ですが、<br />

チェ ッ ク が実行されないため安全性が低 く な り ます。<br />

const Sysgen::uint32 * getRawDataPtr () const<br />

戻り値<br />

物理共有 メ モ リ の内部データ ス トアへの const raw データ ポインタ。 こ の メ ソ ッ ド は、高性能<br />

のアプ リ ケーシ ョ ンでのみ使用し て く だ さ い。 アクセスは高速ですが、 チェックが実行されな<br />

いため安全性が低 く な り ます。<br />

Sysgen::uint32 * getRawDataPtr ()<br />

戻り値<br />

物理共有 メ モ リ の内部データ ストアへの raw データ ポインタ。 このメ ソッ ドは、 高性能のア<br />

プ リ ケーシ ョ ンでのみ使用し て く だ さ い。 ア ク セスは高速ですが、 チェ ッ クが実行されないた<br />

め安全性が低 く な り ます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 457<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

メンバー データ<br />

const int NEVER = -1 [static]<br />

タ イ ムア ウ ト が発生し ないよ う に、 タ イ ムア ウ ト 設定で メ ソ ッ ド をパラ メ ータ化するために使用し<br />

ます。<br />

SharedMemory から再インプリ メント されます。<br />

const int INHERIT = -1 [static]<br />

既に作成されてい る共有 メ モ リ の特性を継承する ために使用さ れます。<br />

SharedMemory から再インプリ メント されます。<br />

458 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


SharedMemoryProxy<br />

SharedMemoryProxy<br />

Public タイプ<br />

Public メソッド<br />

SharedMemory の特性を継承し ます。<br />

• typedef void(* requestServicer )(const Request &, SharedMemoryProxy &, void *arg)<br />

• SharedMemoryProxy (const std::string &name, int nwords, int word_size, requestServicer rs,<br />

void *rs_arg=NULL)<br />

• ~SharedMemoryProxy ()<br />

• virtual bool couldBlockOnReadOrWrite () const<br />

• void service ()<br />

Static Public 属性<br />

メンバー Typedefs<br />

• virtual const StdLogicVectorVector & viewAsStdLogicVectorVector () const<br />

• virtual StdLogicVectorVector & viewAsStdLogicVectorVector ()<br />

• const uint32 * getRawDataPtr () const<br />

• uint32 * getRawDataPtr ()<br />

• const int NEVER = -1<br />

typedef void(* requestServicer)(const Request&, SharedMemoryProxy&,<br />

void *arg)<br />

この typedef で宣言された タ イプの関数ポイ ン タは、 SharedMemoryProxy コンス ト ラクタのコン<br />

ストラクタに渡されます。 詳細は、 コ ン ス ト ラ ク タ のマニ ュ アルを参照し て く だ さ い。<br />

コンストラクタおよびデストラクタ<br />

SharedMemoryProxy (const std::string & name, int nwords, int word_size,<br />

requestServicer rs, void * rs_arg = NULL)<br />

こ のコンスト ラ ク タでは、オブジェク ト の基礎と なる物理メ モリ (OS と 共有) が作成さ れま す。 呼び<br />

出す際に、 メ モリ が格納する ワ ード 数およ びワ ード 当たり のビ ッ ト 数を 指定する 必要があ り ま す。<br />

SharedMemoryProxy で作成さ れる 物理メ モリ には、 ほかのク ラ イ アン ト でサービ ス (読み出し /書き<br />

込み) 要求はでき ま すが、 格納さ れたデータ に直接アク セス でき ま せん。 クライアント は、ベース ク<br />

ラス SharedMemory オブジェクト を介してメモリ にアクセスします。 サービ ス 要求は、 物理メ モリ<br />

を 作成し た SharedMemoryProxy オブジェ ク ト に渡さ れま す。 この構造により、SharedMemoryProxy<br />

でリ モート 記憶域にデータ が格納さ れま す (実際に保管さ れたデータ がハード ウ ェ ア プラ ッ ト<br />

フ ォ ームま たはリ モート マシン に格納さ れる 場合など )。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 459<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

関数ポイ ンタ は、 ほかのメ モリ クライアント による SharedMemoryProxy への要求を 処理する 関数を<br />

指定する 必要があり ま す。 こ れら の要求は、 渡さ れた SharedMemoryProxy::Request オブジェ ク ト に<br />

よ り エン コ ード さ れた読み出し 要求ま たは書き 込み要求の形を 取る こ と ができ ま す。 またこのオブ<br />

ジェク ト には、 読み出し /書き 込みのワ ード 数およ び開始アド レ ス も 含ま れま す。 SharedMemoryProxy<br />

への参照も 、 コ ンス ト ラ ク タ で使用さ れる ボイ ド ポイ ンタ と 共にサービ ス 提供関数に渡さ れま す。<br />

パラ メータ<br />

name : OS への発行に使用された共有 メ モ リ の名前。 ほかのス レ ッ ド に よ る作成さ れた メ モ リ<br />

の検出にも使用されます。<br />

nwords : メ モ リ が格納する ワー ド 数。<br />

word_size : ワード当た りのビッ ト数。<br />

rs : メ モ リ 要求を提供する コールバ ッ ク関数。<br />

rs_arg : requestServicer コールバッ クを渡す void* 引数。<br />

~SharedMemoryProxy ()<br />

メンバー関数<br />

サービ ス要求を発行し た共有 OS リソースにインスタンスのハンドルを開放します。 これは参照を<br />

考慮したリソースで、 リソースを確立した SharedMemoryProxy が破棄された後も維持されるこ と<br />

があ り ます。 これは、 SharedMemoryProxy デス ト ラ ク タ が呼び出 さ れた場合は、 メ モ リ の残 り の<br />

ク ラ イ アン ト で問題が発生する こ と を意味し ます。 特に読み出し/書き込み呼び出しは処理 さ れず、<br />

停止する か タ イ ムア ウ ト にな り ます。<br />

virtual bool couldBlockOnReadOrWrite () const [inline, virtual]<br />

戻り値<br />

read() または write() への呼び出しがブロ ッ ク (read/write 呼び出しへの timeout_sec パラ メー<br />

タが NEVER に設定されている場合) ま たはタ イ ムア ウ ト する可能性のあ る場合は True。 メモ<br />

リを作成していない SharedMemory オブジ ェ ク ト が、 反対側にあ る LockableSharedMemory<br />

または SharedMemoryProxy と し て作成 さ れた メ モ リ を参照する場合があ り ます。 いずれの場<br />

合も、 read/write 呼び出し がブロ ッ クする可能性があ り ます。 SharedMemory オブジェ ク ト が<br />

LockableSharedMemory に イ ン ターフ ェ イ スする場合は、 読み出し操作および書き込み操作で<br />

acquireLock および releaseLock セマンテ ィ ク ス が暗示的に強制されます。<br />

SharedMemory から再インプリ メント されます。<br />

void service ()<br />

ク ラ イ アン ト でサービ ス要求が発行さ れたかど う かを確認し、 発行さ れてい る場合は、<br />

requestServicer callback (SharedMemoryProxy コンスト ラクタにより確立) が呼び出されます。<br />

const Sysgen::StdLogicVectorVector & viewAsStdLogicVectorVector ()<br />

const [virtual]<br />

戻り値<br />

内部データ ス ト アが物理共有 メ モ リ に対応付け ら れてい る const StdLogicVectorVector 参照。<br />

こ の メ ソ ッ ド は、高性能のアプ リ ケーシ ョ ンでのみ使用し て く だ さ い。 アクセスは高速ですが、<br />

チェ ッ ク が実行されないため安全性が低 く な り ます。<br />

460 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


SharedMemoryProxy<br />

Sysgen::StdLogicVectorVector & viewAsStdLogicVectorVector () [virtual]<br />

戻り値<br />

内部データ ス ト アが物理共有 メ モ リ に対応付け ら れてい る StdLogicVectorVector 参照。 この<br />

メソッドは、高性能のアプリケーションでのみ使用してください。 アクセスは高速ですが、<br />

チェ ッ ク が実行されないため安全性が低 く な り ます。<br />

const Sysgen::uint32 * getRawDataPtr () const<br />

戻り値<br />

物理共有 メ モ リ の内部データ ス トアへの const raw データ ポインタ。 こ の メ ソ ッ ド は、 高性能<br />

のアプ リ ケーシ ョ ンでのみ使用し て く だ さ い。 アクセスは高速ですが、 チェックが実行されな<br />

いため安全性が低 く な り ます。<br />

Sysgen::uint32 * getRawDataPtr ()<br />

戻り値<br />

メンバー データ<br />

物理共有 メ モ リ の内部データ ストアへの raw データ ポインタ。 このメ ソッ ドは、 高性能のア<br />

プ リ ケーシ ョ ンでのみ使用し て く だ さ い。 ア ク セスは高速ですが、 チェ ッ クが実行されないた<br />

め安全性が低 く な り ます。<br />

const int NEVER = -1 [static]<br />

タ イ ムア ウ ト が発生し ないよ う に、 タ イ ムア ウ ト 設定で メ ソ ッ ド をパラ メ ータ化するために使用し<br />

ます。<br />

SharedMemory から再インプリ メント されます。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 461<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

Request Struct<br />

Public タイプ<br />

Static Public 属性<br />

メンバー列挙<br />

• enum Type { read_request, write_request }<br />

• enum Sysgen::SharedMemoryProxy::Request::Type type<br />

• unsigned start_address<br />

• unsigned nwords<br />

SharedMemoryProxy::requestServicer コールバッ ク関数に渡された情報のエンコードに使用しま<br />

す。 詳細は、 SharedMemoryProxy コ ン ス ト ラ ク タ のマニ ュ アルを参照し て く だ さ い。<br />

enum Type<br />

列挙値 :<br />

メンバー データ<br />

read_request : ク ラ イ アン ト で メ モ リ を読み出し ます。<br />

write_request : クライアントでメモリに書き込みます。<br />

enum Sysgen::SharedMemoryProxy::Request::Type : type<br />

unsigned start_address<br />

読み出し/書き込みを開始する ア ド レ ス。<br />

unsigned nwords<br />

読み出し/書き込みのワー ド 数 。<br />

462 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


NamedPipeReader<br />

NamedPipeReader<br />

Public メソッド<br />

Static Public 属性<br />

• NamedPipeReader (const std::string &name, int nwords=INHERIT, int word_size=INHERIT,<br />

double timeout_sec=15.0)<br />

• ~NamedPipeReader ()<br />

• void peek (StdLogicVector &value) const<br />

• bool read (StdLogicVector &value, double timeout_sec=NEVER)<br />

• bool readArray (unsigned nwords, StdLogicVectorVector &buffer, double<br />

timeout_sec=NEVER)<br />

• unsigned getNWords () const<br />

• unsigned getWordSize () const<br />

• bool isEmpty () const<br />

• unsigned numAvailable () const<br />

• const int NEVER = -1<br />

• const int INHERIT = -1<br />

コンストラクタおよびデストラクタ<br />

NamedPipeReader (const std::string & name, int nwords = INHERIT, int<br />

word_size = INHERIT, double timeout_sec = 15.0)<br />

NamedPipeWriter で既に作成されている名前付きパイプからデータを読み出す NamedPipeReader<br />

インスタンスを作成します。 名前付き パイ プは指定 さ れた名前を使用し て OS より検出されます<br />

が、 指定し た名前付きパイ プが見つか らず、 タ イ ムア ウ ト が発生し た場合は、 Sysgen::Error という<br />

エ ラーが発生し ます。<br />

パラ メータ<br />

name : NamedPipeWriter でパ イ プ作成時に使用 さ れた名前。<br />

nwords : NamedPipeWriter で作成されたパイプのワー ド 数よ り も小さい値にし ます。大きい場<br />

合は、 Sysgen::Error というエラーが発生します。 デフォル ト値は INHERIT です。<br />

word_size : ワード当たりのビッ ト数。 NamedPipeWriter で指定されたワード数に一致する必<br />

要があ り ます。 一致し ない場合は Sysgen::Error というエラーが発生します。 デフォル ト 値は<br />

INHERIT です。<br />

timeout_sec : 名前付きパイ プが OS を介し て使用可能にな る まで コ ン ス ト ラ ク タ が待機する時<br />

間を秒単位で指定し ます。 デフォル ト 値は 15 秒です。 NEVER に も設定で き ます。<br />

~NamedPipeReader ()<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 463<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

メンバー関数<br />

void peek (StdLogicVector & value) const<br />

パイプの末端の値を取得します。 取得される値は read() の場合 と同じですが、 パイプの状態は変更<br />

されず、 peek() で確認し たワー ド がパイプか ら削除される こ と はあ り ません。 peek() では、 read()<br />

と 異な り 、 パ イ プの状態が変更 さ れないため、 暗示的な mutex の要件がな く 、 パイプが空でない限<br />

り 、 処理は必ず正し く 実行されます。<br />

パイプが空の場合は、 Sysgen::Error 例外が発生し ます。<br />

パラ メータ<br />

value : パイプの値で内容が上書きされる StdLogicVector への参照。 StdLogicVector の型およ<br />

びサ イ ズを適切にする には、 呼び出し側で コ ン ス ト ラ ク ト する必要があ り ます。<br />

read() も参照してください。<br />

bool read (StdLogicVector & value, double timeout_sec = NEVER)<br />

パイプが空の場合は、 Sysgen::Error 例外が発生し ます。<br />

peek()、 readArray() も参照してください。<br />

パラ メータ<br />

戻り値<br />

value : パ イ プか ら読み出 さ れた値で内容が上書き さ れる StdLogicVector への参照。<br />

StdLogicVector の型およびサイズを適切にするには、呼び出し側でコンス ト ラ ク トする必要が<br />

あります。<br />

timeout_sec : read 操作を試みる時間を秒単位で指定し ます。 特定のパ イ プへのア ク セ ス では、<br />

NamedPipeWriter と NamedPipeReader 間に暗示的な mutex があ り ます。<br />

読み出し が正し く 実行さ れた場合は True。 timeout_sec が NEVER に設定されている場合は<br />

Ttrue が返されるか、 何も返されません。 False が返された場合は、 タ イ ムア ウ ト です。<br />

bool readArray (unsigned nwords, StdLogicVectorVector & buffer, double<br />

timeout_sec = NEVER)<br />

nwords で指定し たワー ド数がパイプに含まれていない場合は、 Sysgen::Error 例外が発生し ます。<br />

呼び出し では、 nwords < numAvailable() であ る こ と を確認する必要があ り ます。<br />

パラ メータ<br />

戻り値<br />

nword : 書き込まれるワード数。<br />

buffer : 内容がパイ プにコ ピーさ れる StdLogicVectorVector への参照。 StdLogicVectorVector<br />

の型、 ワード数 (nwords 以上)、 およびワー ド 当た り のビ ッ ト 数を適切にする には、 呼び出し<br />

側でコ ン ス ト ラ ク ト する必要があ り ます。<br />

timeout_sec : read 操作を試みる時間を秒単位で指定し ます。 特定のパ イ プへのア ク セ ス では、<br />

NamedPipeWriter と NamedPipeReader 間に暗示的な mutex があ り ます。<br />

読み出し が正し く 実行さ れた場合は True。 timeout_sec が NEVER に設定されている場合は<br />

Ttrue が返されるか、 何も返されません。 False が返された場合は、 タ イ ムア ウ ト です。<br />

read() も参照してください。<br />

464 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


NamedPipeReader<br />

unsigned getNWords () const<br />

戻り値<br />

パイ プで保持で き る ワー ド 数 (現在保持さ れていない分のみ)。<br />

numAvailable() も参照してください。<br />

unsigned getWordSize () const<br />

戻り値<br />

パイ プで伝送されるデータ のワー ド 当た り のビ ッ ト 数。 特定の NamedPipe インスタンスでは、<br />

こ の値は定数です。<br />

bool isEmpty () const [inline]<br />

unsigned numAvailable () const<br />

戻り値<br />

メンバー データ<br />

パイ プにあ り 、 読み出し可能な ワー ド 数。<br />

getNWords() も参照してください。<br />

const int NEVER = -1 [static]<br />

const int INHERIT = -1 [static]<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 465<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

NamedPipeWriter<br />

Public メソッド<br />

Static Public 属性<br />

• NamedPipeWriter (const std::string &name, int nwords, int word_size)<br />

• ~NamedPipeWriter ()<br />

• bool write (const StdLogicVector &value, double timeout_sec=NEVER)<br />

• bool writeArray (unsigned nwords, const StdLogicVectorVector &buffer, double<br />

timeout_sec=NEVER)<br />

• unsigned getNWords () const<br />

• unsigned getWordSize () const<br />

• bool isFull () const<br />

• unsigned numAvailable () const<br />

• const int NEVER = -1<br />

コンストラクタおよびデストラクタ<br />

NamedPipeWriter (const std::string & name, int nwords, int word_size)<br />

こ の コ ン ス ト ラ ク タ では、名前付きパ イ プ オブジ ェ ク ト の基礎 と な る物理 メ モ リ (OS と共有) が作<br />

成されます。 呼び出す際に、 パイ プが保持で き る ワー ド 数およびワー ド 当た り のビ ッ ト 数を指定す<br />

る必要があ り ます。<br />

名前付きパ イ プには、 ラ イ タは 1 つしかあり ません。 リ ーダは複数持つこ と がで き、 使用および破<br />

棄を繰 り 返すこ と がで き ます。<br />

パラ メータ<br />

name : OS への発行に使用 さ れた共有さ れた名前付き パイ プの名前。 ほかのス レ ッ ド に よ る、<br />

こ のパイ プの検出に も使用さ れます。<br />

nwords : パ イ プが保持する ワー ド 数。<br />

word_size : ワード当た りのビッ ト数。<br />

~NamedPipeWriter ()<br />

名前付きパ イ プを表す共有さ れた OS リソースへのインスタンスのハンドルを開放します。 これは<br />

<strong>リファレンス</strong>を考慮したリソースで、リソースを確立した NamedPipeWriter が破棄された後も維持<br />

されるこ とがあり ます。 同じ リ ソースを使用している NamedPipeReader インスタンスでは継続し<br />

て リ ソ ースにア ク セス し、 データ を読み出すこ と がで き ます。 リ ソ ースが空にな る までは、 パイ プ<br />

に新し いデータ を追加で き ません。<br />

466 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


NamedPipeWriter<br />

メンバー関数<br />

bool write (const StdLogicVector & value, double timeout_sec = NEVER)<br />

パイプがフルの場合は、 Sysgen::Error 例外が発生し ます。<br />

パラ メータ<br />

戻り値<br />

value : 内容が名前付きパ イ プ ス トレージにコピーされる StdLogicVector への参照。<br />

StdLogicVector のビ ッ ト 数を適切にパ イ プに一致させる には、 呼び出し側で コ ン ス ト ラ ク ト す<br />

る必要があ り ます。<br />

timeout_sec : write 操作を試みる時間を秒単位で指定し ます。 特定のパ イ プへのア ク セスでは、<br />

NamedPipeWriter と NamedPipeReader 間に暗示的な mutex があ り ます。<br />

書き込みが正し く実行された場合は True。 timeout_sec が NEVER に設定されている場合は<br />

Ttrue が返されるか、 何も返されません。 False が返された場合は、 タ イ ムア ウ ト です。<br />

writeArray() も参照してください。<br />

bool writeArray (unsigned nwords, const StdLogicVectorVector & buffer,<br />

double timeout_sec = NEVER)<br />

パイ プに十分な nwords の領域がない場合は、 Sysgen::Error 例外が発生し ます。<br />

パラ メータ<br />

戻り値<br />

nword : 書き込まれるワード数。<br />

buffer : 内容が名前付き パイ プに移動さ れる StdLogicVectorVector への参照。<br />

StdLogicVectorVector の型、 ワード数 (nwords 以上)、 およびワード当たりのビット数を適切<br />

にする には、 呼び出し側で コ ン ス ト ラ ク ト する必要があ り ます。<br />

timeout_sec : write 操作を試みる時間を秒単位で指定し ます。 特定のパ イ プへのア ク セスでは、<br />

NamedPipeWriter と NamedPipeReader 間に暗示的な mutex があ り ます。<br />

書き込みが正し く実行された場合は True。 timeout_sec が NEVER に設定されている場合は<br />

Ttrue が返されるか、 何も返されません。 False が返された場合は、 タ イ ムア ウ ト です。<br />

write() も参照してください。<br />

unsigned getNWords () const<br />

戻り値<br />

パイ プで保持で き る ワー ド 数 (現在保持さ れていない分)。<br />

numAvailable() も参照してください。<br />

unsigned getWordSize () const<br />

戻り値<br />

パイ プで伝送されるデータ のワー ド 当た り のビ ッ ト 数。 特定の NamedPipe インスタンスでは、この<br />

値は定数です。<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> <strong>ガイド</strong> japan.xilinx.com 467<br />

リリース 9.2.00 2007 年 8 月<br />

R


R<br />

bool isFull () const [inline]<br />

unsigned numAvailable () const<br />

メンバー データ<br />

const int NEVER = -1 [static]<br />

468 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> <strong>リファレンス</strong> ガイ ド<br />

リリース 9.2.00 2007 年 8 月


索引<br />

数字<br />

2 Channel Decimate by 2 MAC FIR Filter リ<br />

ファレンス デザイ ン 363<br />

2n+1-tap Linear Phase MAC FIR Filter リ<br />

ファレンス デザイ ン 364<br />

2n-tap Linear Phase MAC FIR Filter リファ<br />

レンス デザイ ン 365<br />

2n-tap MAC FIR Filter <strong>リファレンス</strong> デザイ<br />

ン 366<br />

4-channel 8-tap Transpose FIR Filter リファ<br />

レンス デザイ ン 367<br />

4n-tap MAC FIR Filter <strong>リファレンス</strong> デザイ<br />

ン 368<br />

5x5Filter <strong>リファレンス</strong> デザイ ン 369<br />

A<br />

Accumulator ブロック 51<br />

Addressable Shift Register ブロック 53<br />

AddSub ブロッ ク 55<br />

Assert ブロッ ク 57<br />

B<br />

Basic Elements ブロック 24<br />

BitBasher ブロッ ク 59<br />

Black Box ブロック 62<br />

BPSK AWGN Channel <strong>リファレンス</strong> デザ<br />

イン 371<br />

C<br />

ChipScope Pro Analyzer<br />

MATLAB ワークスペースへのデータ<br />

のインポート 72<br />

既知の問題 73<br />

ハー ド ウ ェ ア と ソ フ ト ウ ェ ア条件 70<br />

プロジェク ト ファイル 72<br />

ChipScope ブロック 70<br />

CIC Filter <strong>リファレンス</strong> デザイ ン 372<br />

Clock Enable Probe ブロック 74<br />

Clock Probe ブロッ ク 76<br />

CMult ブロック 77<br />

Communication ブロッ ク 27<br />

Concat ブロック 79<br />

Configurable Subsystem Manager ブロック<br />

80<br />

Constant ブロック 82<br />

Control Logic ブロッ ク 28<br />

Convert ブロッ ク 85<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> japan.xilinx.com 469<br />

リリース 9.2.00 2007 年 8 月<br />

Convolutional Encoder v3_0 ブロック 86<br />

Convolutional Encoder v6_0 ブロック 88<br />

Convolutional Encoder <strong>リファレンス</strong> デザ<br />

イン 374<br />

CORDIC ATAN <strong>リファレンス</strong> デザイ ン<br />

376<br />

CORDIC DIVIDER <strong>リファレンス</strong> デザイ ン<br />

377<br />

CORDIC LOG <strong>リファレンス</strong> デザイ ン 378<br />

CORDIC SINCOS <strong>リファレンス</strong> デザイ ン<br />

380<br />

CORDIC SQRT <strong>リファレンス</strong> デザイ ン<br />

381<br />

Counter ブロッ ク 90<br />

D<br />

DAFIR v9_0 ブロック 92<br />

Data Types ブロック 30<br />

DDS Compiler v1_1 ブロック 96<br />

DDS Compiler v2_0 ブロック 100<br />

DDS v4_0 ブロック 104<br />

DDS v5_0 ブロック 106<br />

Delay ブロッ ク 109<br />

Depuncture ブロック 114<br />

Disregard Subsystem ブロック 116<br />

Down Sample ブロッ ク 117<br />

<strong>DSP</strong> ブロック 31<br />

<strong>DSP</strong>48 Macro ブロッ ク 123<br />

<strong>DSP</strong>48 ブロック 120<br />

<strong>DSP</strong>48A ブロック 133<br />

<strong>DSP</strong>48E ブロック 136<br />

Dual Port Memory Interpolation MAC FIR<br />

Filter <strong>リファレンス</strong> デザイ ン 383<br />

Dual Port RAM ブロッ ク 141<br />

E<br />

EDK Processor ブロック 147<br />

Expression ブロック 150<br />

F<br />

FDATool ブロック 151<br />

FFT v1_0 ブロッ ク 153<br />

FFT v3_1 ブロッ ク 157<br />

FFT v3_2 ブロッ ク 162<br />

FFT v4_1 ブロッ ク 167<br />

FIFO ブロック 172<br />

FIR Compiler v1_0 ブロック 173<br />

FIR Compiler v2_0 ブロック 177<br />

FIR Compiler v3_0 ブロック 182<br />

FIR Compiler v3_1 ブロック 188<br />

From FIFO ブロック 194<br />

From Register ブロック 196<br />

G<br />

Gateway In ブロック 198<br />

Gateway Out ブロック 200<br />

I<br />

Indeterminate Probe ブロッ ク 202<br />

Index ブロック 32<br />

Interleaver Deinterleaver v4_0 ブロッ ク<br />

203<br />

Interleaver Deinterleaver v5_0 ブロッ ク<br />

206<br />

Interpolation Filter <strong>リファレンス</strong> デザイ ン<br />

384<br />

Inverter ブロッ ク 209<br />

J<br />

JTAG Co-Simulation ブロック 210<br />

L<br />

LFSR ブロッ ク 212<br />

Lockable SharedMemory ク ラス 455<br />

Logical ブロック 214<br />

LogiCORE バージ ョ ン 356<br />

M<br />

Math ブロック 41<br />

m-channel n-tap Transpose FIR Filter リ<br />

ファレンス デザイ ン 385<br />

MCode ブロック 215<br />

Mealy State Machine <strong>リファレンス</strong> デザイ<br />

ン 386<br />

Memory ブロック 42<br />

MicroBlaze Processor ブロッ ク 236<br />

ModelSim ブロック 245<br />

Moore State Machine <strong>リファレンス</strong> デザイ<br />

ン 389<br />

Mult ブロック 250<br />

Multipath Fading Channel Model リファレ<br />

ンス デザイ ン 392


R<br />

Multiple Subsystem <strong>Generator</strong> ブロック<br />

251<br />

Mux ブロック 256<br />

N<br />

NamedPipeReader 463<br />

NamedPipeWriter 466<br />

Negate ブロック 257<br />

Network Ethernet Co-simulation ブロック<br />

258<br />

n-tap Dual Port Memory MAC FIR Filter リ<br />

ファレンス デザイ ン 399<br />

n-tap MAC FIR Filter <strong>リファレンス</strong> デザイ<br />

ン 400<br />

O<br />

Opmode ブロック 260<br />

P<br />

Parallel to Serial ブロック 263<br />

Pause Simulation ブロック 264<br />

PicoBlaze Instruction Display ブロック<br />

265<br />

PicoBlaze Microcontroller ブロッ ク 266<br />

Point-to-Point Ethernet Co-Simulation ブ<br />

ロック 268<br />

Puncture ブロック 270<br />

R<br />

Register ブロッ ク 272<br />

Registered Mealy State Machine リファレン<br />

ス デザイ ン 401<br />

Registered Moore State Machine リファレン<br />

ス デザイ ン 404<br />

Reinterpret ブロック 273<br />

Relational ブロッ ク 274<br />

Request Struct 462<br />

Resource Estimator ブロック 275<br />

ROM ブロック 278<br />

RS Decoder v5_1 ブロック 281<br />

RS Decoder v6_0 ブロック 285<br />

RS Encoder v5_0 ブロック 289<br />

RS Encoder v6_0 ブロック 293<br />

S<br />

Sample Time ブロック 297<br />

Scale ブロック 298<br />

Serial to Parallel ブロック 299<br />

Shared Memory Read ブロック 304<br />

Shared Memory Write ブロッ ク 306<br />

Shared Memory ブロッ ク 43, 300<br />

SharedMemory ク ラス 449<br />

SharedMemory.h 448<br />

SharedMemoryProxy ク ラス 459<br />

Shift ブロック 308<br />

Simulation Multiplexer ブロック 309<br />

SineCosine ブロック 311<br />

Single Port RAM ブロック 313<br />

Single-Step Simulation ブロック 319<br />

Slice ブロック 320<br />

Sysgen <strong>Generator</strong><br />

NamedPipeReader クラス 463<br />

NamedPipeWriter クラス 466<br />

Sysgen Namespace<br />

Lockable SharedMemory ク ラス 455<br />

Request Struct 462<br />

SharedMemory ク ラス 449<br />

SharedMemoryProxy ク ラス 459<br />

sysgen.dll 448<br />

<strong>System</strong> <strong>Generator</strong> ブロック 321<br />

<strong>System</strong> <strong>Generator</strong> ユーテ ィ リ テ ィ<br />

xlAddTerms 422<br />

xlfda_denominator 426<br />

xlfda_numerator 427<br />

xlGenerateButton 428<br />

xlgetparam 429, 430<br />

xlInstallPlugin 431<br />

xlLoadChipScopeData 432<br />

xlSBDBuilder 435<br />

xlSetNonMemMap 433<br />

xlsetparam 429<br />

xlSetUseHDL 434<br />

xlTBUtils 436<br />

xlTimingAnalysis 439<br />

xlUpdateModel 440<br />

xlVersion 443<br />

T<br />

Threshold ブロッ ク 326<br />

Time Division Demultiplexer ブロック 327<br />

Time Division Multiplexer ブロック 329<br />

To FIFO ブロック 330<br />

To Register ブロック 332<br />

Toolbar ブロッ ク 334<br />

Tools ブロック 44<br />

U<br />

Up Sample ブロック 337<br />

470 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong><br />

V<br />

索引<br />

Virtex Line Buffer (Imaging) <strong>リファレンス</strong><br />

デザイ ン 407<br />

Virtex2 5 Line Buffer (Imaging) リファレン<br />

ス デザイ ン 409<br />

Virtex2 Line Buffer (Imaging) <strong>リファレンス</strong><br />

デザイ ン 408<br />

Viterbi Decoder v5_0 ブロック 339<br />

Viterbi Decoder v6_0 ブロック 342<br />

W<br />

WaveScope ブロッ ク 345<br />

White Gaussian Noise <strong>Generator</strong><br />

(Communication) <strong>リファレンス</strong> デザイ ン<br />

410<br />

X<br />

xlAddTerms 422<br />

xlfda_denominator 426<br />

xlfda_numerator 427<br />

xlGenerateButton 428<br />

xlgetparam 429, 430<br />

xlInstallPlugin 431<br />

xlLoadChipScopeData 432<br />

xlSBDBuilder 435<br />

xlSetNonMemMap 433<br />

xlsetparam 429<br />

xlSetUseHDL 434<br />

xlTBUtils 436<br />

xlTimingAnalysis 439<br />

xlUpdateModel 440<br />

xlVersion 443<br />

Xtreme<strong>DSP</strong> ADC ブロッ ク 414<br />

Xtreme<strong>DSP</strong> Co-simulation ブロック 415<br />

Xtreme<strong>DSP</strong> DAC ブロッ ク 417<br />

Xtreme<strong>DSP</strong> External RAM ブロック 418<br />

Xtreme<strong>DSP</strong> LED Flasher ブロック 419<br />

き<br />

共通オプシ ョ ン<br />

ブロック パラ メータ 46<br />

共有 メ モ リ の結合<br />

From FIFO ブロック 194<br />

From Register ブロック 196<br />

Shared Memory ブロッ ク 300<br />

To FIFO ブロック 330<br />

To Register ブロッ ク 332<br />

リリース 9.2.00 2007 年 8 月


索引<br />

さ<br />

ザイ リンクス<br />

LogiCORE バージ ョ ン 356<br />

ザイ リンクス ブロッ クセッ ト<br />

Accumulator 51<br />

Addressable Shift Register 53<br />

AddSub 55<br />

Assert 57<br />

BitBasher 59<br />

Black Box 62<br />

ChipScope 70<br />

Clock Enable Probe 74<br />

Clock Probe 76<br />

CMult 77<br />

Concat 79<br />

Configurable Subsystem Manager 80<br />

Constant 82<br />

Convert 85<br />

Convolutional Encoder v3_0 86<br />

Convolutional Encoder v6_0 88<br />

Counter 90<br />

DAFIR v9_0 92<br />

DDS Compiler v1_1 96<br />

DDS Compiler v2_0 100<br />

DDS v4_0 104<br />

DDS v5_0 106<br />

Delay 109<br />

Depuncture 114<br />

Disregard Subsystem 116<br />

Down Sample 117<br />

<strong>DSP</strong>48 120<br />

<strong>DSP</strong>48 Macro 123<br />

<strong>DSP</strong>48A 133<br />

<strong>DSP</strong>48E 136<br />

Dual Port RAM 141<br />

EDK Processor 147<br />

Expression 150<br />

FDATool 151<br />

FFT v1_0 153<br />

FFT v3_1 157<br />

FFT v3_2 162<br />

FFT v4_1 167<br />

FIFO 172<br />

FIR Compiler v1_0 173<br />

FIR Compiler v2_0 177<br />

FIR Compiler v3_0 182<br />

FIR Compiler v3_1 188<br />

From FIFO 194<br />

From Register 196<br />

Gateway In 198<br />

Gateway Out 200<br />

Indeterminate Probe 202<br />

Interleaver Deinterleaver v4_0 203<br />

<strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong> japan.xilinx.com 471<br />

リリース 9.2.00 2007 年 8 月<br />

Interleaver Deinterleaver v5_0 206<br />

Inverter 209<br />

JTAG Co-Simulation 210<br />

LFSR 212<br />

Logical 214<br />

MCode 215<br />

MicroBlaze Processor 236<br />

ModelSim 245<br />

Mult 250<br />

Multiple Subsystem <strong>Generator</strong> 251<br />

Mux 256<br />

Negate 257<br />

Network Ethernet Co-simulation 258<br />

Opmode 260<br />

Parallel to Serial 263<br />

Pause Simulation 264<br />

PicoBlaze Instruction Display 265<br />

PicoBlaze Microcontroller 266<br />

Point-to-Point Ethernet Co-Simulation<br />

268<br />

Puncture 270<br />

Register 272<br />

Reinterpret 273<br />

Relational 274<br />

Resource Estimator 275<br />

ROM 278<br />

RS Decoder v5_1 281<br />

RS Decoder v6_0 285<br />

RS Encoder v5_0 289<br />

RS Encoder v6_0 293<br />

Sample Time 297<br />

Scale 298<br />

Serial to Parallel 299<br />

Shared Memory 300<br />

Shared Memory Read 304<br />

Shared Memory Write 306<br />

Shift 308<br />

Simulation Multiplexer 309<br />

SineCosine 311<br />

Single Port RAM 313<br />

Single-Step Simulation 319<br />

Slice 320<br />

<strong>System</strong> <strong>Generator</strong> 321<br />

Threshold 326<br />

Time Division Demultiplexer 327<br />

Time Division Multiplexer 329<br />

To FIFO 330<br />

To Register 332<br />

Toolbar 334<br />

Up Sample 337<br />

Viterbi Decoder v5_0 339<br />

Viterbi Decoder v6_0 342<br />

WaveScope 345<br />

Xtreme<strong>DSP</strong> ADC 414<br />

Xtreme<strong>DSP</strong> Co-simulation 415<br />

Xtreme<strong>DSP</strong> DAC 417<br />

Xtreme<strong>DSP</strong> External RAM 418<br />

Xtreme<strong>DSP</strong> LED Flasher 419<br />

ザイ リンクス <strong>リファレンス</strong> デザイ ン ライ<br />

ブラ リ<br />

2 Channel Decimate by 2 MAC FIR<br />

Filter 363<br />

2n+1-tap Linear Phase MAC FIR Filter<br />

364<br />

2n-tap Linear Phase MAC FIR Filter<br />

365<br />

2n-tap MAC FIR Filter 366<br />

4-channel 8-tap Transpose FIR Filter<br />

367<br />

4n-tap MAC FIR Filter 368<br />

5x5Filter 369<br />

BPSK AWGN Channel 371<br />

CIC Filter 372<br />

Convolutional Encoder 374<br />

CORDIC ATAN 376<br />

CORDIC DIVIDER 377<br />

CORDIC LOG 378<br />

CORDIC SINCOS 380<br />

CORDIC SQRT 381<br />

<strong>DSP</strong> デザイ ン 361<br />

Dual Port Memory Interpolation MAC<br />

FIR Filter 383<br />

Interpolation Filter 384<br />

m-channel n-tap Transpose FIR Filter<br />

385<br />

Mealy State Machine 386<br />

Moore State Machine 389<br />

Multipath Fading Channel Model 392<br />

n-tap Dual Port Memory MAC FIR<br />

Filter 399<br />

n-tap MAC FIR Filter 400<br />

Registered Mealy State Machine 401<br />

Registered Moore State Machine 404<br />

Virtex Line Buffer (Imaging) 407<br />

Virtex2 5 Line Buffer (Imaging) 409<br />

Virtex2 Line Buffer (Imaging) 408<br />

White Gaussian Noise <strong>Generator</strong><br />

(Communication) 410<br />

演算デザ イ ン 362<br />

画像デザ イ ン 362<br />

制御ロ ジ ッ ク デザイ ン 361<br />

通信デザ イ ン 361<br />

ザイ リンクス ブロッ クセッ ト ライブラリ<br />

ブロックの構造 24<br />

ザイ リンクス ブロッ ク ライブラリ<br />

Basic Elements ブロック 24<br />

Communication ブロッ ク 27<br />

Control Logic ブロッ ク 28<br />

Data Types ブロック 30<br />

R


は<br />

R<br />

<strong>DSP</strong> ブロック 31<br />

Index ブロック 32<br />

Math ブロック 41<br />

Memory ブロック 42<br />

Shared Memory ブロッ ク 43<br />

Tools ブロック 44<br />

パラ メータ<br />

共通オプシ ョ ン 46<br />

ふ<br />

ブロックセッ ト ライブラリ<br />

構造 24<br />

ブロック パラ メータ<br />

共通オプシ ョ ン 46<br />

め<br />

メモリの結合<br />

From FIFO ブロック 194<br />

From Register ブロッ ク 196<br />

Shared Memory ブロッ ク 300<br />

To FIFO ブロック 330<br />

To Register ブロック 332<br />

472 japan.xilinx.com <strong>System</strong> <strong>Generator</strong> <strong>for</strong> <strong>DSP</strong><br />

索引<br />

リリース 9.2.00 2007 年 8 月

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!