• 検索結果がありません。

A

C 48 48 PCIN

Op 11

= optional register with optional reset and clock enable to various

control ports

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

Virtex-II Pro や Spartan-3 な ど のザ イ リ ン ク ス FPGA 用のデザ イ ンは、Virtex-4 デバ イ ス に コ ンパ イ ルで き ます。乗算器は DSP48 ブ ロ ッ ク にマ ッ プ さ れますが、加算器お よ びマルチプ レ ク サは コ ア と し て供給 さ れ、 合成で ロ ジ ッ ク を最適化で き ないため、 加算器お よ びマルチプ レ ク サ を DSP48 ブ ロ ッ ク に含め る こ と がで き ません。配置配線では MULT18X18S お よ び MULT18X18 DSP48 ブ ロ ッ ク に配置 さ れますが、 加算器お よ びマルチプ レ ク サは DSP48 ブ ロ ッ ク に配置 さ れません (マルチプ レ ク サは LUT ベース の加算器に配置 さ れ る)

最高のパフ ォ ーマン ス を 得る には、 乗算器のレ イ テ ン シ を 3 に設定し 、 入力レ ジ ス タ を 追加し て、

DSP48 の出力から 加算器への遅延に対処する よ う にし ま す。こ の回路のパフ ォ ーマン ス は、Virtex-4

-11 デバ イ ス で 200 300MHz の範囲であ り 、 加算器の ス ピー ド に よ り 制限 さ れます。 Virtex-4 バ イ ス では、Virtex-II Pro お よ び Spartan-3 デバ イ ス と 異な り 、 乗算速度はビ ッ ト 幅に依存 し ませ ん。中程度の速度のデザ イ ンは、 こ の方法で う ま く い き ます。

CORE Generator で提供 さ れてい る MACFIR ブ ロ ッ ク な ど、DSP48 用に最適化 さ れた IP ブ ロ ッ ク を使用す る 方法や、Architecture Wizard を使用 し て DSP48 を カ ス タ マ イ ズす る 方法 も あ り ます。

こ れ ら の方法では、DSP48 を含む ロ ジ ッ ク を ブ ラ ッ ク ボ ッ ク ス と し て System Generator に イ ン ポー ト す る 必要があ り ます。シ ミ ュ レーシ ョ ンは、ModelSim の HDL 協調シ ミ ュ レーシ ョ ンで実行 す る 必要があ り ます。

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

合成ツールで DSP48 ロ ジ ッ ク を推論で き ます。合成ツールで推論 さ せ る と 、 加算器、 乗算器、 マル チプ レ ク サ を DSP48 ブ ロ ッ ク に配置で き 、 リ タ イ ミ ン グやレ ジ ス タ の複製な ど の合成手法 も 可能 にな り ます。

合成可能なブ ロ ッ ク でデザ イ ン を作成す る と 、Synplify Pro お よ び XST の両方で DSP48 が推論 さ れ、DSP48 の ロ ーカル イ ン タ ー コ ネ ク ト バ ス (PCOUT、PCIN、BCOUT、BCIN) が利用 さ れ ま す。上記の例では、3 つのブ ロ ッ ク が次の M 関数で定義 さ れた MCode ブ ロ ッ ク を使用 し て作成 さ れてい ます。

function o = xlsynmux2(i0,i1,sel) if (sel==0) o=i0; else o=i1; end function p = xlsynmult(a,b) p=a*b;

function s = xlsynadd(a,b)

正 し く 合成 さ れ る よ う にす る には、DSP48 にマ ッ プ可能な回路を作成 し 、信号のビ ッ ト 幅を DSP48 の対応す る バ ス幅以下にす る 必要があ り ます。

ロ ジ ッ ク 合成ツールは急速に向上 し てお り 、DSP48 の推論が必ず し も 公式どお り に行われない場合 があ り ます。た と えば、 マ ッ プ可能なデザ イ ンであ っ て も マ ッ プが効率的でなかっ た り 、 マ ッ プ結 果が一貫 し ない こ と があ り ます。 Synplify Pro のゲー ト レ ベルテ ク ノ ロ ジ ビ ュ ーア な ど の ツール を使用 し て、 合成後のネ ッ ト リ ス ト でデザ イ ンが正 し く マ ッ プ さ れてい る かを確認す る 必要があ り ます。正 し く マ ッ プ さ れていない場合は、 修正 し ます。完全に合成可能な FIR フ ィ ル タ のモデル例 が、System Generator の イ ン ス ト ールデ ィ レ ク ト リ の次のパ ス に含まれてい ます。

<path_to_sysgen>\examples\dsp48\synth_fir\synth_fir_tb.mdl

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

DSP48 ブ ロ ッ ク は、DSP48 UNISIM プ リ ミ テ ィ ブの ラ ッ パであ る ので、可能な DSP48 デザ イ ンで あればど んなデザ イ ンで も イ ンプ リ メ ン ト で き ます。ただ し 、 こ の低レベルイ ンプ リ メ ン テーシ ョ ンでは、11 ビ ッ ト のバ イ ナ リ opmode DSP48 の制御ポー ト に配線す る 必要があ り ます。 Constant ブ ロ ッ ク には、DSP 制御フ ィ ール ド の生成を可能にする 特別なモー ド が含まれてい ます。 DSP48 の パ イ プ ラ イ ンモー ド お よび ローカル イ ン タ ー コ ネ ク ト バス (PCOUTPCINBCOUTBCIN) 使用を指定す る には、DSP48 ブ ロ ッ ク のパ ラ メ ー タ ダ イ ア ロ グボ ッ ク ス を使用 し ます。 DSP48 ブ ロ ッ ク を使用 し た Simulink モデルの例が、System Generator の イ ン ス ト ールデ ィ レ ク ト リ の次の パ ス に含まれてい ます。

<path_to_sysgen>\examples\dsp48\dsp48_primitive.mdl

DSP48 のダ イ ナ ミ ッ ク 制御

DSP48 には、 サ イ ク ルご と に操作を変更す る 機能があ り ます。こ の機能は、 複数の タ ッ プが 1 つの 乗算器で イ ンプ リ メ ン ト さ れてい る FIR フ ィ ル タ な ど の よ う に、DSP48 を リ ソ ース共有モー ド で 使用す る アプ リ ケーシ ョ ン で有益です。こ の よ う な制御パ タ ーン を生成す る には、 ク ロ ッ ク ご と に

DSP48 命令を選択す る マルチプ レ ク サを使用す る のが簡単な方法です。

上図の例では、DSP48 ブ ロ ッ ク と Constant ブ ロ ッ ク を使用 し て、35X35 ビ ッ ト 乗算器 (4 ク ロ ッ クサ イ ク ル) を イ ンプ リ メ ン ト し てい ます。合成の ロ ジ ッ ク 最適化に よ り 、Mux お よ び Constant ジ ッ ク が縮小 さ れます。上図の例では、DSP48 ブ ロ ッ ク と 4:1 Mux ブ ロ ッ ク が 2 つの 4 入力 LUT に イ ンプ リ メ ン ト さ れます。パ ラ レ ルお よ びシーケ ン シ ャ ル 35X35 ビ ッ ト 乗算器 (シーケ ン シ ャ ル モー ド に ダ イ ナ ミ ッ ク 操作 を 使用) を イ ン プ リ メ ン ト す る 方法 を 示す Simulink モデルの例が、

System Generator の イ ン ス ト ールデ ィ レ ク ト リ の次のパ ス に含まれてい ます。

<path_to_sysgen>\examples\dsp48\mult35x35\mult35x35_tb.mdl

DSP48 Macro ブ ロ ッ ク

DSP48 Macro ブ ロ ッ ク は、DSP48 命令 (ダ イ ナ ミ ッ ク 命令) のシーケ ン ス を簡単に イ ンプ リ メ ン ト で き る よ う に し た DSP48 ブ ロ ッ ク の ラ ッ パです。こ のブ ロ ッ ク では、入力お よ び出力のデー タ 型を 指定で き ます。上図の例では、DSP48 Macro ブ ロ ッ ク が、4 つの異な る 命令のシーケ ン ス を使用 し た複素乗算器を イ ンプ リ メ ン ト す る よ う 設定 さ れてい ます。命令は、DSP48 Macro ブ ロ ッ ク のパ ラ メ ー タ ダ イ ア ロ グボ ッ ク ス で入力 し ます。 DSP48 Macro ブ ロ ッ ク を使用 し たモデル例が、System Generator の イ ン ス ト ールデ ィ レ ク ト リ の次のパ ス に含まれてい ます。

<path_to_sysgen>\examples\dsp48\dsp48_macro.mdl

DSP48 設計手法

DSP48 を使用 し た フ ィ ル タ の設計

DSP48 ブ ロ ッ ク は、FIR フ ィ ル タ を イ ンプ リ メ ン ト す る のに適 し てい ます。タ イ プ 1 お よ び タ イ プ 2 の FIR フ ィ ル タ に DSP48 ブ ロ ッ ク を使用す る 方法を示 し たモデル例が、System Generator の イ ン ス ト ールデ ィ レ ク ト リ の次のパ ス に含まれてい ます。

<path_to_sysgen>\examples\firs\dsp48_firs_tb.mdl

高パ フ ォ ーマ ン スデザイ ンの設計手法

DSP48 ベース のデザ イ ンには、 通常 I/OBRAM、 お よ びス ラ イ ス ロ ジ ッ ク が必要です。ス ラ イ ス ロ ジ ッ ク は、 遅延レ ジ ス タ 、SRL16、 マルチプ レ ク サ、 カ ウ ン タ 、 お よ び制御 ロ ジ ッ ク を イ ンプ リ メ ン ト す る のに使用 さ れます。 DSP48 ブ ロ ッ ク は、500MHz 以上の ス ピー ド で動作す る と 予測 さ れ る ので、 ほかの コ ン ポーネ ン ト も 同 じ ス ピー ド で動作す る 必要があ り ます。そのため、DSP48 以外 の ロ ジ ッ ク に対 し て特別な設計手法が必要にな り ます。

500MHz では、 各 ク ロ ッ クサ イ ク ルは 2ns です。 Virtex-4 -11 デバ イ ス では、 レ ジ ス タ の clock-to-out に約 300ps、 セ ッ ト ア ッ プに約 300ps 必要です。 LUT 遅延は 166ps です。ク ロ ッ ク イ ネーブル や DSP48 お よ び BRAM の信号な ど特殊な入力/出力では、clock-to-out タ イ ムはほぼ 500ps です。

ク ロ ッ ク ス キ ュ ーお よびジ ッ タ を含め る と 、 ネ ッ ト 遅延に許容 さ れ る のは約 1ns です。こ の制限に よ り 、 各パ ス に 1 ネ ッ ト し か使用で き ず、 かな り 短い必要があ り ます。

DSP48 の ス ピ ー ド で確実に動作す る よ う にす る ためのガ イ ド ラ イ ン が あ り ま す。その一部を次に 示 し ます。

SRL16 BRAM

BRAM

+

DSP48

+

3) PCOUT-PCIN bus

+

4) Use extra registers to cover distance greater than 20-40 slices

2) Extra output regs

lut 6) Use input and

output regs with LUTs

5) Limit fanout to 4-8 loads

1) Pipeline regs 8) srl16 as control pattern

generator

1) use input and output regs 7) Limit to 1 level

of logic

9) dsp48 as counter, adder

1. DSP48BRAM16FIFO16 には、常に入力レ ジ ス タ 、乗算器、お よ び出力レ ジ ス タ を使用す る 。 2. 必要に応 じ て、DSP48 お よ び BRAM の出力に フ リ ッ プ フ ロ ッ プを追加す る 。

3. PCOUT PCIN バ ス を使用 し 、DSP48 をチ ェ ーン接続で き る よ う にする 。 4. 20 ~ 40 個以上の ス ラ イ ス が連続す る 場合は、 パ ス に レ ジ ス タ を追加す る 。 5. 20 個の ス ラ イ ス内にあ る フ ァ ン ア ウ ト を 32 個の ロー ド に制限す る 。 6. LUT ベース の ロ ジ ッ ク に出力レ ジ ス タ を追加する 。

7. LUT 1 レベルま たは 4:1 マルチプ レ ク サに制限 し 、 入力ま たは出力で ロ ーカル レ ジ ス タ が 使用 さ れ る よ う にす る 。

8. 制御パ タ ーン を生成す る には、 ス テー ト マシ ンではな く RAM ま たは SRL16 を使用す る 。 9. 8 ~ 16 ビ ッ ト 以上のカ ウ ン タ お よ び加算器 イ ンプ リ メ ン ト す る には DSP48 を使用す る 。 10.エ リ ア制約 「INST ff1* LOC = SLICE_X0Y8:SLICE_X1Y23;」 を使用す る 。

DSP48 ベースのデザイ ンの物理設計

DSP48 を使用 し て高集積度、 高パ フ ォ ーマ ン ス のデザ イ ン を達成す る には、 正 し い配置が必要で

す。配置配線 ツ ールで適切 な 配置 を 達成す る こ と は可能ですが、 最適 な 結果 を 得 る には手動で DSP48 お よ び RAM ブ ロ ッ ク を配置す る 必要があ る 場合があ り ます。 DSP48 を使用す る 際には、追 加の考慮事項がい く つかあ り ます。

カ スケー ド 接続バス

隣接す る DSP48 ブ ロ ッ ク は、PCOUT お よ び BCOUT と い う 2 つの ロ ーカルバ ス で接続 さ れます。

PCOUT バ ス は、1 つの DSP48 か ら 次の DSP48 に累積デー タ を送信 し ます。 BCOUT バ ス は、 遅 延 さ れた B 入力のデー タ を次の DSP48 に送信 し ま す。 DSP48 お よ び DSP48 Macro ブ ロ ッ ク は、

両方 と も PCOUT BCOUT バ ス をサポー ト し ます。上の図はパ イ プ ラ イ ン 4 タ ッ プタ イ プ 1 FIR フ ィ ル タ であ り 、 こ れ ら のバ ス の使用法を示 し ます。

C 入力の共有

DSP48 の各ペアでは、1 つの C 入力が共有 さ れます。リ ソ ース の使用を計画す る 際、 こ の こ と を考 慮す る 必要があ り ます。配置ツールで C 入力を共有す る ための最適な配置を見つけ ら れ る と は限 ら ないので、 可能な限 り C 入力は使用 し ない よ う に し ます。

加算器ツ リ ー

ツ リ ーベース の フ ィ ル タ ト ポ ロ ジは、DSP48 の効率的な イ ンプ リ メ ン テーシ ョ ンの妨げ と な り ま す。加算器ツ リ ーには、 分離 さ れた 2 入力加算器が必要です。 2 入力の 36 ビ ッ ト 加算器は、1 つの DSP48 を使用 し て イ ンプ リ メ ン ト で き ますが、 こ れには C 入力が必要であ り 、 乗算器が使用で き な く な り ま す。ま た、DSP48 間の長い信号に追加のパ イ プ ラ イ ン段が必要な場合 も あ り ま す。ツ

リ ー構造をパ イ プ ラ イ ンカ ス ケー ド 接続に変換す る こ と をお勧め し ます。

配置

ほ と ん ど のデザ イ ンは、DSP48 お よ び BRAM を一部配線す る こ と で向上 し ます。エ リ ア制約を使 用 し て LUT ロ ジ ッ ク の配置を制約す る と 、 有益な場合があ り ます。

信号の長 さ

500MHz では、 信号の長 さ を 20 ス ラ イ ス程度に制限す る 必要があ り ま す。長い信号には、 複数の

パ イ プ ラ イ ン段を使用 し て く だ さ い。

ク ロ ッ ク イ ネーブル

[Clock Enables] オプシ ョ ン を使用す る と 、 高周波数では ク ロ ッ ク イ ネーブルが制限パ ス にな る こ と が良 く あ り ます。こ れは、System Generator で LUT を使用 し て、 デス テ ィ ネーシ ョ ンで ク ロ ッ ク を ゲー ト 処理 し てい る か ら です。ク リ テ ィ カルパ ス で ク ロ ッ ク イ ネーブルを回避す る には、Up Sample お よ び Down Sample を介 し た ク ロ ッ ク ド メ イ ン を使用 し ない よ う に し て く だ さ い。こ れ には、 シ ス テ ム ク ロ ッ ク レー ト 未満で動作す る ロ ジ ッ ク に ク ロ ッ ク イ ネーブルを手動で追加す る 必要があ り ます。

配置配線フ ロー

• map -timing コ マ ン ド を エフ ォー ト レベル High で使用 し 、 マ ッ プ と 配置を実行 し ます。

• trce -v 100 を使用 し て タ イ ミ ン グ を満た し ていないネ ッ ト を確認 し 、xflow/design.twr フ ァ イ ルでデザ イ ンの タ イ ミ ン グ を理解 し ます。

• bitstream_v4.opt フ ァ イ ルは、examples\dsp48 デ ィ レ ク ト リ にあ り ます。 こ の フ ァ イ ルは、

System Generator ト ー ク ンのパ ラ メ ー タ ダ イ ア ロ グ ボ ッ ク ス で [Compilation] [Bitstream]

を選択 し た場合に、PAR オプシ ョ ン を設定す る ために使用で き ます。

合成 フ ロー

• すべての LUT と 信号を手動でパ イ プ ラ イ ン化す る の を回避す る ため、Synplify Pro を使用す る 際は リ タ イ ミ ン グお よ びパ イ プ ラ イ ン処理を イ ネーブルに し ます。

• Synplify Pro では、 フ ァ ン ア ウ ト を 32 に制限 し 、 ネ ッ ト 遅延が長 く な る の を回避 し ます。

• Synplify Pro で コ ンパ イ ル し たプ ロ ジ ェ ク ト を開 き 、RTL レベルお よ びゲー ト レベルの表示を 使用 し て生成 さ れた ロ ジ ッ ク を確認 し ます。

• syn.pl フ ァ イ ルは、examples\dsp48 ディ レ ク ト リ にあり ま す。こ のフ ァ イ ルを <path_to_sysgen>\

scripts ディ レ ク ト リ に配置し 、System Generator の合成オプショ ン を 変更し ま す。

ロ ジ ッ クのレ ベル数

次のガ イ ド ラ イ ンに従 う と 、Virtex-4 -11 デバ イ ス を使用 し た場合に LUT を 450MHz で動作 さ せ る こ と が可能です。

ドキュメント内 System Generator for DSP ユーザー ガイド (ページ 99-137)

関連したドキュメント