18
XAPP552 (v1.0) 2012 6 1 japan.xilinx.com 1 © Copyright 2012 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Zynq, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. AMBA and ARM are registered trademarks of ARM in the EU and other countries. All other trademarks are the property of their respective owners. はじめに このアプリケーション ノ ー ト では、 CORDIC (coordinate rotational digital computer) アルゴリズム [1] に基づ く 三角関数、 指数関数、 対数関数の演算に使用す る 、 パ ラ メ ー タ ー指定可能な浮動小数点 ラ イ ブ ラ リ に よ る 計算方法を、ザ イ リ ン ク ス の System Generator ツールを用いて構築する設計手法につい て解説し ます。 この設計手法は、 固定小数点 CORDIC LogiCORE™ IP v5.0 ブ ロ ッ ク と 、 加算器、 乗 算器、 コンパレータ、 ROMFIFO などの浮動小数点構築ブロ ッ ク を組み合わせて使用し、 アプ リ ケー シ ョ ン の構築ブ ロ ッ ク と し て使用で き る 一連の浮動小数点 CORDIC 関数を作成します。 これらは、 三 角関数または指数関数の演算を大量に効率よ く処理する必要がある、 画像処理、 マニピュレーター運動 学、 レーダー信号処理、 ロボッ ト 工学、 最適化プロセスなど、 広範なエンジニア リ ング アプリケーショ ンに と っ て不可欠な関数です。 ラ イ ブ ラ リ は、 System Generator for DSP バージ ョ ン 13.4 を使用して設 計され、 IEEE 754 浮動小数点規格 [参照 2] で規定された単精度および倍精度の入力をサポー ト し ます。 概要 演算ユニ ッ ト は CPU 設計における重要な要素の 1 つです。 複雑な算術関数をハード ウ ェアで計算する 場合、 CORDIC は魅力的な固定小数点アルゴ リ ズムです。 このアルゴ リ ズムは、 単純なシフ ト 演算およ び加算演算のシーケンスだけで、 幅広い算術関数を計算できます。 ただし、 多く のアプ リ ケーシ ョ ンの 動作には、 高い精度だけでな く、 大きなダイナ ミ ッ ク レンジも求められます。 浮動小数点による計算 は、実数を表現するダイナミ ッ ク レンジと分解能や精度を保つ能力を併せ持った、高性能システムを実 現で き る ソ リ ュ ーシ ョ ン です。 ザイリンクス FPGA 向けの浮動小数点ソ リ ューシ ョ ン ザイリンクスの FPGA は、 固定小数点 DSP およびビデオ アルゴリズムをハードウェアにインプリ メン トするために、長年にわたって使用されてきました。プログラム可能なロジックが持つ柔軟性によって、 固定小数点プ ロ セ ッ サの 81632 ビッ ト という境界に縛られないカスタムのビッ ト幅による、固定小 数点の計算が可能にな り ます。大きなダイナ ミ ッ ク レンジを必要とするアプリケーションに対応するた めに、 必要に応じて固定小数点のビ ッ ト 幅を増やすこ と もでき ます。 ただし、 ダイナ ミ ッ ク レンジに対 するニーズの増加に伴い、 固定小数点のイ ンプ リ メ ンテーシ ョ ン コ ス ト は ま す ま す高 く な り ま す。 FPGA 上の浮動小数点ソ リ ューシ ョ ンは、 現在のプロセッサに比べて低速である ものの、 このアルゴ リ ズ ム固有の大規模な並列性に よ り 、 等価の ソ フ ト ウ ェ ア ソ リ ューシ ョ ンに匹敵する性能は得られます。 その よ う な理由か ら 、 浮動小数点ア ク セ ラ レー タ と し て、 FPGA の適用が拡大しつつあ り ます。 並列性 の利点を生かすために、 FPGA にはハード ウェア効率のよいアルゴ リ ズムの使用が求められます。 FPGA 上のよ り 複雑な浮動小数点システムには、 対数、 指数、 三角関数などの初等関数を適切にイ ンプ リ メ ン ト する必要があ り ます。 System Generator ツールは、 Simulink モデ リ ン グ環境内か ら の浮動小数点アル ゴリズムの設計とインプリメンテーションをサポートすることで、この要求に応えます。 System Generator は、 初期モデルに対してビ ッ ト 精度およびサイ クル精度を保ちながら インプ リ メ ンテーシ ョ ンを最適化する柔軟性も備えています。 このライブラ リは、 System Generator ツールのフローに精通し ているユーザー向けの拡張機能と して設計されたものです。 アプリケーション ノート : Spartan-6Virtex-67 シリーズおよび Zynq-7000 デバイス XAPP552 (v1.0) 2012 6 1 パラ メーター指定可能な CORDIC ベースの浮動 小数点 ラ イ ブ ラ リ 演算 著者 : Nikhil DhumeRamakrishnan Srinivasakannan

: Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

Embed Size (px)

Citation preview

Page 1: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 1

© Copyright 2012 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Zynq, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. AMBA and ARM are registered trademarks of ARM in the EU and other countries. All other trademarks are the property of their respective owners.

はじめに こ のアプ リ ケーシ ョ ン ノ ー ト では、 CORDIC (coordinate rotational digital computer) アルゴ リ ズム [参

照 1] に基づ く 三角関数、 指数関数、 対数関数の演算に使用する、 パラ メ ーター指定可能な浮動小数点ラ

イブラ リ によ る計算方法を、ザイ リ ン ク スの System Generator ツールを用いて構築する設計手法につい

て解説し ます。 こ の設計手法は、 固定小数点 CORDIC LogiCORE™ IP v5.0 ブロ ッ ク と、 加算器、 乗

算器、 コ ンパレータ、 ROM、 FIFO などの浮動小数点構築ブロ ッ ク を組み合わせて使用し、 アプ リ ケー

シ ョ ンの構築ブロ ッ ク と し て使用でき る一連の浮動小数点 CORDIC 関数を作成し ます。 これらは、 三

角関数または指数関数の演算を大量に効率よ く 処理する必要があ る、 画像処理、 マニピ ュ レーター運動

学、 レーダー信号処理、 ロボ ッ ト 工学、 最適化プロセスなど、 広範なエンジニア リ ング アプ リ ケーシ ョ

ンに と って不可欠な関数です。 ラ イブラ リ は、System Generator for DSP バージ ョ ン 13.4 を使用し て設

計され、 IEEE 754 浮動小数点規格 [参照 2] で規定された単精度および倍精度の入力をサポー ト し ます。

概要 演算ユニ ッ ト は CPU 設計におけ る重要な要素の 1 つです。 複雑な算術関数をハード ウ ェ アで計算する

場合、 CORDIC は魅力的な固定小数点アルゴ リ ズムです。 このアルゴ リ ズムは、 単純なシフ ト 演算およ

び加算演算のシーケン スだけで、 幅広い算術関数を計算でき ます。 ただし、 多 く のアプ リ ケーシ ョ ンの

動作には、 高い精度だけでな く 、 大き なダ イナ ミ ッ ク レ ンジ も求め られます。 浮動小数点によ る計算

は、 実数を表現するダ イナ ミ ッ ク レ ンジ と分解能や精度を保つ能力を併せ持った、 高性能システムを実

現でき る ソ リ ューシ ョ ンです。

ザイ リ ン クス FPGA 向けの浮動小数点ソ リ ューシ ョ ン

ザイ リ ン ク スの FPGA は、固定小数点 DSP およびビデオ アルゴ リ ズムをハード ウ ェアにイ ンプ リ メ ン

ト する ために、長年にわたって使用されてき ま し た。プロ グ ラ ム可能な ロ ジ ッ ク が持つ柔軟性によ って、

固定小数点プロセ ッ サの 8、 16、 32 ビ ッ ト と い う 境界に縛られないカス タ ムのビ ッ ト 幅によ る、 固定小

数点の計算が可能にな り ます。大き なダ イナ ミ ッ ク レンジを必要とする アプ リ ケーシ ョ ンに対応するた

めに、 必要に応じ て固定小数点のビ ッ ト 幅を増やすこ と もでき ます。 ただし、 ダ イナ ミ ッ ク レンジに対

す る ニーズの増加に伴い、 固定小数点の イ ン プ リ メ ン テーシ ョ ン コ ス ト は ますます高 く な り ます。

FPGA 上の浮動小数点ソ リ ューシ ョ ンは、 現在のプロセ ッ サに比べて低速であ る ものの、 このアルゴ リ

ズム固有の大規模な並列性によ り 、 等価のソ フ ト ウ ェ ア ソ リ ューシ ョ ンに匹敵する性能は得られます。

そのよ う な理由から、 浮動小数点ア ク セラ レータ と し て、 FPGA の適用が拡大しつつあ り ます。 並列性

の利点を生かすために、FPGA にはハード ウ ェ ア効率のよいアルゴ リ ズムの使用が求められます。FPGA 上のよ り 複雑な浮動小数点システムには、 対数、 指数、 三角関数などの初等関数を適切にイ ンプ リ メ ン

ト する必要があ り ます。System Generator ツールは、Simulink モデ リ ング環境内からの浮動小数点アル

ゴ リ ズ ム の設計 と イ ン プ リ メ ン テーシ ョ ン を サポー ト す る こ と で、 こ の要求に応え ま す。 SystemGenerator は、 初期モデルに対し てビ ッ ト 精度およびサイ クル精度を保ちながら イ ンプ リ メ ンテーシ ョ

ンを最適化する柔軟性も備えています。 こ のラ イブラ リ は、 System Generator ツールのフ ローに精通し

ているユーザー向けの拡張機能と し て設計された ものです。

アプ リ ケーシ ョ ン ノ ー ト : Spartan-6、 Virtex-6、 7 シ リーズおよび Zynq-7000 デバイス

XAPP552 (v1.0) 2012 年 6 月 1 日

パラ メ ーター指定可能な CORDIC ベースの浮動小数点ラ イブ ラ リ演算著者 : Nikhil Dhume、 Ramakrishnan Srinivasakannan

Page 2: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

固定小数点 CORDIC アルゴ リズム

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 2

固定小数点 CORDIC アルゴ リズム

CORDIC アルゴ リ ズムは、三角関数やその他の超越関数を、 シフ ト および加算の反復演算だけで計算す

る ソ リ ューシ ョ ンの集合です。 三角関数は、 ベク ター回転に基づいて イ ンプ リ メ ン ト されます。 対数や

指数などの増分関数は、 ハード ウ ェ ア アーキテ クチャの単純な拡張のみで実行されます。 厳密な意味で

は CORDIC アルゴ リ ズム と はいえないものの、その類似性から多 く の場合 CORDIC の一部と見な され

ます。 アルゴ リ ズムの詳細は、 「固定小数点 CORDIC アルゴ リ ズム」 で説明し ます。

設計手法

固定小数点 CORDIC ブロ ッ ク と その他の基本ブロ ッ ク を用いて、 CORDIC 三角関数用の浮動小数点ラ

イブ ラ リ を開発し ま し た。 選択し た手法は、 固定小数点 CORDIC アルゴ リ ズムの範囲を拡張する ため

に、 基本と な る三角関数の関係を使用する ものです。 入力する浮動小数点の数値は、 範囲縮小ステ ッ プ

を経た後、 固定小数点 CORDIC ブロ ッ ク で処理されます。 範囲縮小ステ ッ プは、 入力の範囲を固定小

数点 CORDIC アルゴ リ ズムで処理可能な ものに縮小し ます。 後処理ステ ッ プでは、 固定小数点の計算

後、 範囲縮小ステ ッ プ と は逆の処理を実行し ます。 図 1 に、 こ の手法の詳細を示し ます。 柔軟性を最大

限に高める ために、 ラ イブラ リ はパラ メ ーターを変更でき る よ う に作成し ま し た。 このアプ リ ケーシ ョ

ン ノ ー ト で紹介する浮動小数点 CORDIC ラ イブ ラ リ は、 ザイ リ ン ク スの IP ポー ト フ ォ リ オを使用し

て イ ンプ リ メ ン ト さ れま し た。 フ ローの イ ンプ リ メ ン ト には、 System Generator for DSP バージ ョ ン

13.4 を使用し ま し た。

固定小数点 CORDIC アルゴリズム

CORDIC と は、 ベク ター回転を実行する ために設計されたアルゴ リ ズムです。 こ の操作は、 ベク ター

(X, Y) を角度 だけ回転させて新しいベク ター (X', Y') を得る ものです。 ベク ター回転は次の式で表さ

れます。

式 1

式 2

式 3

CORDIC アルゴ リ ズムは、 微小回転 と 呼ばれる atan(2-i) の角度のよ り 細かい回転を連続し て実行する

シーケン スによ ってベク ターを回転させます。 式 4 ~式 6 に、 i 番目の反復操作に対する式を示し ます。

こ こ で、 i は 0 ~ n の値を取る反復のイ ンデッ ク スです。 i 番目の微小回転を表す式は次の とお り です。

式 4

式 5

式 6

i は回転方向を表し、 その値は ±1 のいずれかです。

CORDIC アルゴ リ ズムの詳細な説明は、 「浮動小数点アルゴ リ ズム」 と 10 ページの 「ラ イブラ リ イ ン

ターフ ェ イ スの仕様」 に記載されています。

X-Ref Target - Figure 1

図 1 : 浮動小数点 CORDIC ラ イブ ラ リ向けに選択し た手法

Input Floating-Point Number

Output Floating-Point Number

RangeReduction

Fixed-PointAlgorithm

ExceptionHandling

X552_01_042612

RangeExtension

X cos X sin– Y =

Y cos Y sin+ X =

0=

Xi 1+ xi i– yi 2i–=

yi 1+ yi i xi 2i–+=

i 1+ i i– 2i– atanh=

Page 3: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

浮動小数点アルゴ リズム

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 3

浮動小数点アルゴリズム

浮動小数点 CORDIC Sin-cos

固定小数点 CORDIC の回転モード を使用し て、 入力角度に対する正弦 (sin) と余弦 (cos) を同時に計算

でき ます。 入力ベク ターの y 成分をゼロにする こ と で回転モード は次の式に簡約化でき ます。

式 7

式 8

こ こ で、 An は i 番目の微小回転に対する利得係数です。

範囲の縮小/拡張

固定小数点 CORDIC アルゴ リ ズムのための範囲縮小ステ ッ プは、 入力に対し て角度回転を実行する こ

と で実現でき ます。 入力を、 - ~ + の間の値へ と 回転し ます。 回転後の値を固定小数点 CORDIC に

入力し ます。 こ のステ ッ プが必要と な るのは、 固定小数点 CORDIC が - ~ + の範囲でしか収束し な

いためです。 回転後の角度は次式で求められます。

式 9

剰余から を差し引 く ため、 このステ ッ プには鏡映演算が組み込まれている こ と にな り ます。 し たがっ

て、 後処理でこれを補正する必要があ り ます。

アルゴ リズム

アルゴ リ ズムのステ ッ プは次の とお り です。

1. 範囲縮小 : 入力を - ~ + の範囲に回転し ます。

2. 固定小数点 CORDIC ブロ ッ ク によ って、 数値の正弦と余弦を前述のよ う に計算し ます。

3. 後処理 : 固定小数点 CORDIC ブロ ッ ク の出力に対し て鏡映演算を実行し ます。

浮動小数点 CORDIC sinh-cosh

三角関数と双曲線関数の間の密接な関係は、 双曲線関数の計算にも同じ アーキテ クチャ を適用でき る可

能性を示唆し ています。 双曲線回転の CORDIC 式は、 式 4、 式 5、 式 6 の係数 i を式 10 で表される

値に設定する こ と で導出でき ます。

式 10\

これによ って、 回転モード の CORDIC 出力は、 式 11 と式 12 のよ う に簡略化されます。

式 11

式 12

式 13

y0 を 0 に設定すれば、 双曲線正弦 (sinh) と双曲線余弦 (cosh) の値がわか り ます。

範囲の縮小/拡張

双曲線関数の範囲縮小は、 入力を小数部分と整数部分に分ける こ と で実現でき ます。 整数部分は、 保存

されたルッ ク ア ッ プ テーブル (LUT) を使用し て処理でき ます。小数部分は、保存された LUT の使用と

は別に処理でき ます。

アルゴ リズム

アルゴ リ ズムのステ ッ プは次の とお り です。

1. 範囲縮小 : 入力は、 まずその数値の絶対値を求め、 次にそれを整数部分 (int) と小数部分 (frac) に分

ける こ と で範囲を狭めます。

Xn An x0 cos=

Yn An x0 sin=

回転後の角度 (x) 剰余 (x, 2 –=

i –1 if i 0, +1 otherwise<=

xn An x0 0 cosh y0 0 sinh+ =

yn An x0 0 cosh y0 0 sinh+ =

An 1 22i–

– 0.80=

Page 4: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

浮動小数点アルゴ リズム

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 4

2. int 部分は保存された LUT で処理する一方、 frac 部分は固定小数点 CORDIC アルゴ リ ズムを使用

し て処理し ます。

3. 後処理 : int および frac 部分の出力を、 式 14 と式 15 を利用し て結合し ます。

式 14

式 15

4. 最終段階 : 入力が負の場合は、 鏡映演算を実行し ます。

浮動小数点 CORDIC Power

指数関数 (ex) の値は、 「浮動小数点 CORDIC sinh-cosh」 で計算し た sinh と cosh か ら求めます。 こ の

ラ イブラ リ は、 指数関数に加えて 10 および 2 のべき乗もサポー ト し ています。

アルゴ リズム

1. 指数関数の値は、 式 16 の sinh と cosh から計算でき ます。

式 16

2. 10 および 2 のべき乗は、 式 17 と式 18 を使用し てコ アが計算し ます。

式 17

式 18

浮動小数点 CORDIC Atan

浮動小数点 CORDIC は、角度が 0 で初期化された場合、CORDIC 回転演算子のベク ター モード によ っ

て逆正接 (atan(y/x)) を直接計算し ます。 引数は x/y の比 と し て与え る必要があ り ます。 角度アキ ュ ム

レータの出力は式 19 によ って求められます。

式 19

範囲の縮小/拡張

範囲縮小のステ ップでは、 入力の符号部分を取 り 除 く と共に、 虚数部が常に実数部よ り も大き く なる よ う

に入力を調整し ます。 この調整は、 出力角が常に第 1 象限に現れる よ う にするために行います。

アルゴ リズム

アルゴ リ ズムのステ ッ プは次の とお り です。

1. 入力の絶対値を求め、 実数部が虚数部よ り も大き く な る よ う に両者を調整し ます。

2. 固定小数点 CORDIC の atan を使用し て出力を計算し ます。

3. 出力を、 入力の符号および数値の実数部が虚数部よ り も大きいかど う かに基づいて、 適切な象限ま

で回転させます。

浮動小数点 CORDIC Log

CORDIC によ る自然対数関数 (ln) は、CORDIC の双曲線ベク ター モード でイ ンプ リ メ ン ト されていま

す。 双曲線逆正接関数 (atanh) と式 20 を使用し て log を計算でき ます。 10 および 2 を底とする対数に

も対応し ています。

式 20

int frac+ cosh int cosh frac cosh int sinh frac sinh+=

int frac+ sinh int cosh frac sinh frac cosh int sinh+=

ex

x sinh x cosh+=

10x

ex ln(10)

=

2x

ex ln(2)

=

n 0

x0

y0-----

1–tan+=

w ln 2w 1–w 1+------------- atanh=

Page 5: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

System Generator による イ ンプ リ メ ンテーシ ョ ン

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 5

範囲の縮小/拡張

前のステ ッ プは本来、 範囲縮小を伴います。 w-1 と w+1 を使用する こ と で、 実数部が常に虚数部よ り も

小さ く 、 実数部が虚数部に等し く な る こ と は決し てないこ と が保証されます。 実数部と虚数部が等し く

な る と、 atanh の出力は無限大にな り ます (固定小数点 CORDIC ブロ ッ ク では無限大を表現でき ない)。

別の範囲縮小アルゴ リ ズムでは、 入力を仮数部と指数部に分け、 それぞれ独立し て処理し ます。 仮数部

は固定小数点 CORDIC で処理され、 指数部は乗算器で処理されます。

アルゴ リズム

アルゴ リ ズムのステ ッ プは次の とお り です。

1. 入力を指数部と仮数部に分けます。 指数部は、 最後のステ ッ プで処理が完了し た仮数部に再び足す

こ と ができ ます。

2. 仮数部を上記の固定小数点 CORDIC アルゴ リ ズムで処理し ます。

3. log10 と log2 は、 式 21 を使用し て CORDIC コ ア内で求められます。

式 21

System Generator によるイ ンプ リ メ ンテーシ ョ ン

ラ イブ ラ リの設定

System Generator ツール内で ラ イ ブ ラ リ を使用する ために、 リ フ ァ レ ン ス デザ イ ンに含まれる TAR フ ァ イル内にパ ッ チが作成されています (16 ページの 「 リ フ ァ レ ン ス デザイ ン」 参照)。 オーバーレ イ

のイ ン ス ト ール後、 ラ イブラ リ は図 2 のよ う に表示されるはずです。 パッチは、 nt、 nt64、 lin、 lin64 向

けビル ド の System Generator ツール バージ ョ ン 13.4 に適用されます。

ラ イブラ リ を設定するには、 次の手順に従います。

1. xlCache ('clear all') コマン ド を用いて、 MATLAB および System Generator ツールの

キ ャ ッ シ ュ を ク リ ア し ます。

2. WinZip または tar -xvf コマン ド を用いて、 IDS ビル ド の上にパッチを抽出し ます。

3. 該当する IDS ビル ド に対し て System Generator ツールを起動し ます。

4. これによ って、 浮動小数点ブロ ッ ク が、 リ フ ァ レ ン ス ブロ ッ ク セ ッ ト の一部、 「Floating Point」 ラ

イブラ リ と し て表示される よ う にな り ます。

5. ラ イブラ リ の一部と し て提供されるのは、 Absolute、 Conditional Negate、 Floor-ceil、 Split、 Merge、

Remainder、 Cordic Sin-cos、 Cordic Sinh-cosh、 Cordic Atan、 Cordic Log、 Cordic Power ブロ ッ ク

です。

6. こ のラ イブラ リ は、 単精度および倍精度の浮動小数点データ型に対し て動作し ます。

ラ イブ ラ リの使用法

図 2 に示すとお り 、 ラ イブラ リ は リ フ ァ レン ス ブロ ッ ク セ ッ ト の [Floating point] (浮動小数点) のセ ク

シ ョ ンから使用でき ます。 このラ イブラ リ を使用する場合は、 任意のブロ ッ ク を新しいモデル フ ァ イル

に ド ラ ッ グ アン ド ド ロ ッ プし ます。

w blog w logb log

-----------------=

Page 6: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

System Generator による イ ンプ リ メ ンテーシ ョ ン

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 6

イ ンプ リ メ ンテーシ ョ ンの説明

こ こ では System Generator ツール固有のイ ンプ リ メ ンテーシ ョ ンに関する詳細情報と、ラ イブラ リ に含

まれるその他のブロ ッ ク の用途について解説し ます。

ブロ ッ クのパラ メ ーターを変更可能にする

ラ イブラ リ 内の個々のブロ ッ クはサブシステム と し て作成されます。 GUI はブロ ッ ク マス ク ウ ィ ン ド

ウの [Parametes] タブによ ってカス タマイ ズ されます。 さ らに、 単精度と倍精度、 LUT のサイ ズなどの

ユーザー プ リ フ ァ レン スは、 ブロ ッ ク マス ク編集ウ ィ ン ド ウの [Initialization] タブで処理し ます。 図 3 は、 sin-cos のパラ メ ーターを表示し たブロ ッ ク マス ク ウ ィ ン ド ウです。 [Initialization] のセ ク シ ョ ン

は、 レ イ テンシの調整に も対応し ます。 ブロ ッ ク マス ク の作成方法に関する詳細な手順は、 13 ページ

の 「現在の手法におけ る ト レード オフ」 に記載されています。

X-Ref Target - Figure 2

図 2 : ザイ リ ン クス リ フ ァ レンス ブロ ッ クセ ッ ト の浮動小数点ブロ ッ ク

X552_02_042612

Page 7: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

System Generator による イ ンプ リ メ ンテーシ ョ ン

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 7

AXI ブロ ッ クのレ イテンシ処理

CORDIC LogiCORE IP v5.0 ブロ ッ クは AXI-Stream イ ン ターフ ェ イ ス を備えています。 一方、 基本ブ

ロ ッ ク には、 こ のイ ン ターフ ェ イ スがあ り ません。 このため、 入力パラ メ ーターの中には、 レ イ テンシ

を調整する ために出力側に伝播し なければな ら ないものがあ り ます。 これを目的と し て、 デザイ ン内で

は FIFO を使用し ています。 図 4 に、 AXI ブロ ッ クのレ イ テンシ調整に対応する FIFO ブロ ッ ク の適用

例を示し ます。 た と えば、 sin-cos ブロ ッ ク の出力側では符号の情報が有効になっている必要があ り ま

す。 FIFO の リ ード イネーブル信号は、 CORDIC ブロ ッ ク の TVALID 出力で駆動されます。

X-Ref Target - Figure 3

図 3 : Mask Editor : CORDIC Sin-cos のパラ メ ーター

X552_03_021612

Page 8: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

System Generator による イ ンプ リ メ ンテーシ ョ ン

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 8

分割と結合

ラ イブラ リ 内の一部のブロ ッ ク では、 入力の指数部と仮数部を固定小数点の数値と し て別々に処理し た

後、 これら を再結合し て意味のあ る浮動小数点出力を構成でき ます (例 : log、 atan)。 このよ う な動作に

便利なブロ ッ ク が、 split と merge です。 split ブロ ッ クは、 入力が非数値信号 (NaN) であったかど う か

の情報を提供する と共に、入力された浮動小数点の数値を、指数部と仮数部に分割し ます。merge ブロ ッ

クは、 これ と逆の動作を し ます。 正規化された仮数部と指数部を再結合し て出力の浮動小数点の数値を

構成し ます。

剰余

一部のアルゴ リ ズムの範囲縮小ステ ッ プには数値の剰余計算が含まれます (例 : sin-cos、 sinh-cosh)。 こ

れには剰余ブロ ッ ク を使用でき ます。 こ のブロ ッ クは、 浮動小数点の除算と床関数の計算によ って イ ン

プ リ メ ン ト されています。 剰余ブロ ッ クは、 ラ イブラ リ の一部と し てユーザーも使用でき ます。

X-Ref Target - Figure 4

図 4 : CORDIC LogiCORE IP v5.0 ブロ ッ ク内のレ イテンシ調整のために Sin-cos ブロ ッ ク内で FIFO を使用する方法

phase_tdata_phase

Convert

4In4

phase_tvalid

phase_tlast

dout_treadydout_tlast

dout

empty

full

din

we

re

CORDIC_5_0

FIFO

dout_tdata_real

dout_tdata_imag

dout_tvalid

phase_tready

z-4cast

Convert3

z-4cast

Convert1

Conditional-negate

Negate

inout

sign

z-4cast

Convert2

Delay5

z-4cast

z-1

float

z-1

x(-1)

z-4cast

From

[A]

Goto2Delay3

z-5

Delay2

2Out2

[A]

Goto

[C]

From2

3

Out3

4

Out4

z-5 5

Out5

1Out1

Convert4

Terminator1

Terminator

[C]

X552_04_021612

Page 9: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

System Generator による イ ンプ リ メ ンテーシ ョ ン

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 9

LUT

sinh-cosh と Power ブロ ッ ク は、 処理の一部を内部 LUT を使用し て イ ンプ リ メ ン ト し ています。 上記

のブロ ッ ク の出力範囲は急激に無限大へと増加する傾向があ り 、 ユーザーは入力範囲全体を必要 と し な

い可能性も あ り ます。 し たがって、 ユーザーが入力範囲に応じ て LUT サイ ズを選択でき る制御機能が

提供されています。ユーザー設定可能な LUT のイ ンプ リ メ ンテーシ ョ ンには、ROM ブロ ッ ク を使用し

ま し た (図 5 参照)。 このオプシ ョ ンによ り 、 ユーザーは リ ソース使用率を改善する ために、 ブロ ッ ク の

イ ン ス タ ン ス を最適化でき ます。

レ イテンシの調整

サブシステム内の各ブロ ッ ク のレ イ テンシは、 単精度浮動小数点データ型の場合は約 280MHz、 倍精度

浮動小数点データ型の場合は 240MHz になる よ う に調整されます。

X-Ref Target - Figure 5

図 5 : ユーザー定義の入力範囲をサポー ト するために構成された ROM ブロ ッ ク

X552_05_022912

Page 10: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

ラ イブラ リ イ ン ターフ ェ イスの仕様

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 10

ラ イブ ラ リ イ ンターフ ェ イスの仕様

こ こ では、 各種ブロ ッ ク に使用されるブロ ッ ク イ ン ターフ ェ イ スの用語について説明し ます。 図 6 に、

MATLAB で生成し た sinh と cosh のユーザー イ ン ターフ ェ イ スの例を示し ます。

表 1 は、 CORDIC ラ イブラ リ の各種ブロ ッ ク で使用されるパラ メ ーター イ ン ターフ ェ イ ス を説明し て

います。

X-Ref Target - Figure 6

図 6 : CORDIC Sinh-cosh ブロ ッ クのブロ ッ ク マスク

表 1 : CORDIC ラ イブ ラ リのパラ メ ーター イ ン ターフ ェ イス

パラ メ ーター名 説明

Iterations 加算 - 減算の反復回数。0 に設定し た場合、反復回数は出力に必要 と さ

れる精度によ って決ま り ます。 Iterations のデフ ォル ト 値は 0 です。

Precision 固定小数点 CORDIC の内部精度を設定し ます。 0 に設定し た場合、 内

部精度は自動的に決ま り ます。

Data type こ のラ イブラ リ がサポー ト するデータ型は、IEEE 754 規格が規定する

Single (単精度) と Double (倍精度) です。 カ ス タ ムのデータ型または

パラ メ ーター推論はサポー ト し ていません。

X552_06_021612

Page 11: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

結果と検討

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 11

表 2 は、CORDIC ラ イブラ リ の各種ブロ ッ ク で使用されるポー ト イ ン ターフ ェ イ ス を説明し た表です。

結果と検討 アーキテ クチャ レベルでの比較を行 う ために、 ラ イブラ リ 内の各種ブロ ッ クについて、 ス ピード、 エ リ

ア、 レ イ テンシ、 スループ ッ ト を見積も り ま し た。 こ こ に示し た結果は、 Virtex- 7 デバイ スによ る もの

です。 ス ピード の情報は、 ス ピード グレード -1、 -2、 -3 に対する値を示し ます。 デバイ スの使用率は、

-2 デバイ スの数値です。 表 3 に、 単精度データ型のパフ ォーマン ス を ま と めます。

Pipeline mode サポー ト し ているパイプラ イ ン モード は次の とお り です。

• Maximum : CORDIC コ アは、 すべてのシフ ト - 加算サブステージ

の後にパイプラ イ ンを備えた イ ンプ リ メ ンテーシ ョ ンにな り ます。

• Optimal : CORDIC コ アは、 使用する LUT が増えない範囲で、 で

き るだけ多 く のステージでパイプラ イ ン処理が行われる よ う にイ

ンプ リ メ ン ト されます。

Architectural configuration サポー ト されている アーキテ クチャ設定は、 次の とお り です。

• Parallel : CORDIC コ アのデータ スループ ッ ト が 1 サイ クルになる

ものの、 シ リ コ ン エ リ アは大き く な り ます。

• Word-serial : CORDIC コ アは、データ スループ ッ ト が複数サイ ク

ルになる ものの、 シ リ コ ン エ リ アは小さ く な る よ う にイ ンプ リ メ

ン ト されます。

Maximum input value LUT のサイ ズを最適化し てエ リ アを節約する ために、 sinh、 cosh、 指

数関数に対し て設定し ます。 指数関数の演算はすぐに無限大へ と 増大

する傾向があ る ため、 こ の設定が役に立ちます。

表 2 : CORDIC ラ イブ ラ リのポー ト イ ン ターフ ェ イス

ポー ト 名 方向 説明

Cartesian_tvalid IAXI-Stream の入力 tvalid ハン ド シェ イ ク信号

Phase_tvalid I

Tdata_imag I 入力データの虚数部

Tdata_real I 入力データの実数部

Tdata_phase I sin-cos および sinh-cosh モード に使用する角度入力

Cartesian_tlast I ス ト リ ーム内の最後のデータ を指定する ために使用

Dout_tready I AXI-Stream のハン ド シェ イ ク信号

Cartesian_tready OAXI-Stream のハン ド シェ イ ク と し て使用する出力 tready 信号

Phase_tready O

Dout_tvalid O 出力データが有効であ る こ と を示す信号

Dout_tlast O 出力の最後のデータ を示す信号

表 1 : CORDIC ラ イブ ラ リのパラ メ ーター イ ン ターフ ェ イス

パラ メ ーター名 説明

Page 12: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

結果と検討

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 12

表 4 に、 倍精度データ型のパフ ォーマン ス を ま と めます。

表 3 : 単精度データ型のブロ ッ ク パフ ォーマンスのま とめ

ブロ ッ ク名 モー ド

-3 スピー ド グレー ド

-2 スピー ド グレー ド

-1 スピー ド グレー ド

レ イテンシ スループ ッ ト

LUT と フ リ ッ プ

フ ロ ッ プ

スラ イス レジス タ

スラ イス LUT ブロ ッ ク RAMDSP48E1

スラ イス

Sin-cos

Word Serial302 281 223 130 24

6,514 4,725 4,898 1 9

Parallel302 281 223 130 1

8,605 6,905 6,937 1 9

Sinh-cosh

Word Serial302 281 223 138 28

10,020 7,306 7,560 3 27

Parallel302 281 223 138 1

12,453 9,804 9,940 3 27

Power

Word Serial302 281 223 171 28

11,049 8,091 8,198 3 40

Parallel302 281 223 171 1

13,489 10,589 10,578 3 40

Log

Word Serial302 279 223 64 28

2,460 1,625 1,856 1 8

Parallel302 281 223 64 1

4,944 4,132 4,290 1 8

Atan

Word Serial302 279 223 67 26

2,682 1,834 2,025 2 5

Parallel302 281 223 67 1

4,935 4,152 4,257 2 5

表 4 : 倍精度データ型のブロ ッ ク パフ ォーマンスのま とめ

ブロ ッ ク名 モー ド

-3 スピー ド グレー ド

-2 スピー ド グレー ド

-1 スピー ド グレー ド

レ イテンシ スループ ッ ト

LUT と フ リ ッ プ

フ ロ ッ プ

スラ イス

レジス タスラ イス LUT ブロ ッ ク RAM

DSP48E1

スラ イス

Sin-cos

Word Serial282 246 215 171 45

16,598 12,504 12,060 1 20

Parallel297 258 222 171 1

23,437 19,542 18,811 1 20

Sinh-cosh

Word Serial285 251 217 179 49

24,183 17,898 18,219 5 73

Parallel297 258 222 179 1

31,607 25,498 25,553 5 73

Page 13: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

現在の手法における ト レー ド オフ

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 13

現在の手法における ト レー ド オフ

現在の手法では、 単純な範囲拡張アルゴ リ ズムを固定小数点 CORDIC アルゴ リ ズム と共に使用し てい

ます。 得られる結果はハー ド ウ ェ ア効率に優れ、 固定小数点 CORDIC ブロ ッ ク に匹敵する性能を期待

でき ます。 た と えば、 下位の 32 ビ ッ ト モード CORDIC ブロ ッ クは、 固定小数点の sin および cos を計

算する場合、 パラ レル モー ド では 345MHz、 ワー ド -シ リ アル アーキテ ク チャでは 222MHz で動作す

る もの と予想されます。これに対し て、単精度モード の浮動小数点 CORDIC アルゴ リ ズムでは、280MHz と い う 互角の性能が得られま し た。 誤差のパーセンテージは、 よ り 低い入力範囲で増大する傾向があ る

一方、 絶対誤差はよ り 高い入力範囲で大き く な る傾向があ り ます。

図 7 ~図 9 に、 各種ブロ ッ ク の詳細な誤差プロ フ ァ イルを示し ます。 誤差プロ フ ァ イルの単位は ULP (Units in Last Place) です。図 7 は、単精度モード の sin-cos および sinh-cosh の誤差プロ フ ァ イルです。

誤差プ ロ フ ァ イ ルは、 浮動小数点 リ フ ァ レ ン ス ブ ロ ッ ク の入力 と し て ラ ン プ信号を与え、 こ れを

Simulink の出力と比較する こ と で求めま し た。 このグ ラ フから、入力値が 0 に最も近い と きに誤差が最

大になる こ と がわか り ます。

Power

Word Serial285 229 217 212 49

26,257 19,438 19,663 5 101

Parallel297 229 222 212 1

33,681 27,038 27,997 5 101

Log

Word Serial283 248 216 85 49

3,075 2,787 3,575 1 25

Parallel297 258 222 85 1

12,045 10,463 11,020 1 25

Atan

Word Serial283 247 216 88 47

5,140 3,319 4,100 3 14

Parallel297 258 222 88 1

12,399 10,636 11,271 3 14

表 4 : 倍精度データ型のブロ ッ ク パフ ォーマンスのま とめ (続き)

ブロ ッ ク名 モー ド

-3 スピー ド グレー ド

-2 スピー ド グレー ド

-1 スピー ド グレー ド

レ イテンシ スループ ッ ト

LUT と フ リ ッ プ

フ ロ ッ プ

スラ イス

レジス タスラ イス LUT ブロ ッ ク RAM

DSP48E1

スラ イス

Page 14: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

現在の手法における ト レー ド オフ

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 14

X-Ref Target - Figure 7

図 7 : sin-cos および sinh-cosh の誤差プロ フ ァ イル

sin-cos Single

X552_07_042712

sinh-cosh Single

Input

Err

or in

ULP

-5

12

10

8

6

4

2

0

Err

or in

ULP

6

5

4

3

2

1

0

-4 -3 -2 -1 0 1 2 3 4

Input-5 -4 -3 -2 -1 0 1 2 3 4

sin

cos

sinh

cosh

Page 15: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

現在の手法における ト レー ド オフ

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 15

図 8 に、 指数および対数関数の誤差プロ フ ァ イルを示し ます。

X-Ref Target - Figure 8

図 8 : Log および Power の誤差プロ フ ァ イル

Log Single

X552_08_042712

Power Single

Input

Err

or in

ULP

0

1

0.8

0.6

0.4

0.2

0

Err

or in

ULP

4

3

2

1

0

200 400 600 800 1000 1200 1400 1600 1800 2000

Input0 1 2 3 4 5 6 7 8 9

Log

Power

Page 16: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

リ フ ァ レンス デザイ ン

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 16

図 9 に、 入力 1 にラ ンプ、 入力 2 に反転ラ ンプを与えた場合の atan の誤差プロ フ ァ イルを示し ます。

リ フ ァ レンス デザイ ン

こ のアプ リ ケーシ ョ ン ノー ト の リ フ ァ レ ン ス デザイ ンは、 次のサイ ト から ダウ ン ロード でき ます。

https://secure.xilinx.com/webreg/clickthrough.do?cid=185372

表 5 に、 リ フ ァ レ ン ス デザイ ンの詳細を示し ます。

X-Ref Target - Figure 9

図 9 : atan の誤差プロ フ ァ イル

atan Single

Input

Err

or in

ULP

0 20 40 60 80 100 120 1400

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

atan

X552_08_042712

表 5 : リ フ ァ レンス デザイ ンの詳細

パラ メ ーター 説明

全般

開発者 Nikhil Dhume、 Ramakrishnan Srinivasakannan

ターゲ ッ ト デバイ ス ( ステ ッ ピング レベル、

ES、 プロ ダ ク シ ョ ン、 ス ピード グレード )Spartan-6、 Virtex-6、 7 シ リ ーズ、 および Zynq-7000 デバイ ス

ソース コード の提供 あ り

ソース コード の形式 System Generator MDL ラ イブラ リ

既存のザイ リ ン ク ス アプ リ ケーシ ョ ン ノー ト

/ リ フ ァ レ ン ス デザイ ン、 CORE Generator ツール、 サード パーテ ィ からデザイ ンへの

コード /IP の使用

あ り

Page 17: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

ま とめ

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 17

ま とめ 三角関数、 指数関数、 対数関数を計算する浮動小数点ラ イブラ リ を、 下位の固定小数点ブロ ッ ク に対し

て範囲拡張アルゴ リ ズムを適用する こ と で設計し ま し た。 この手法によ って、 下位の固定小数点ブロ ッ

ク に匹敵する性能が得られる こ と が実証されま し た。 ラ イブラ リ 内の全ブロ ッ ク に対するデバイ ス使用

率、 レ イ テンシ、 最大動作周波数を示し ま し た。

参考資料 こ のアプ リ ケーシ ョ ン ノー ト では、 次の参考資料が使用されています。

1. Volder, Jack E., The CORDIC trigonometric computing technique. IRE Transactions on Electronic Computers, vol. EC-8, September 1959, pp. 330-334http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5222693

2. IEEE Std.754-2008, IEEE Standard for Floating-Point Arithmetic, August 2008. http://ieeexplore.ieee.org/servlet/opac?punumber=4610933

3. WP409 : 『ザイ リ ン ク ス FPGA を使用し た、 ビ ッ ト およびサイ クル精度の浮動小数点アルゴ リ ズムの実装』

4. Andraka, Ray. A survey of CORDIC algorithms for FPGA based computers, Proceedings of the 1998 ACM/SIGDA sixth international symposium on Field programmable gate arrays, Feb 22–24, 1998. pp. 191–200http://www.andraka.com/files/crdcsrvy.pdf

5. Lang, T. and E. Antelo, High-throughput CORDIC-based geometry operations for 3D computer graphics, IEEE Transactions on Computers, vol. 54, no. 3, March 2005, pp. 347–361http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1388199

6. DS858 : 『LogiCORE IP CORDIC 製品仕様』

7. UG638 : 『System Generator for DSP リ フ ァ レ ン ス ガイ ド』

8. Creating a Block Mask (in MATLAB)http://www.mathworks.com/help/toolbox/simulink/ug/brx7xj4.html

シ ミ ュ レーシ ョ ン

機能シ ミ ュ レーシ ョ ンの実施 あ り

タ イ ミ ング シ ミ ュ レーシ ョ ンの実施 あ り

機能およびタ イ ミ ング シ ミ ュ レーシ ョ ンでの

テス ト ベンチの利用

あ り

テス ト ベンチの形式 System Generator MDL フ ァ イル

使用し たシ ミ ュ レータ ツール / バージ ョ ン System Generator for DSP バージ ョ ン 13.4

SPICE/IBIS シ ミ ュ レーシ ョ ンの実施 な し

イ ンプ リ メ ンテーシ ョ ン

使用し た合成ツール / バージ ョ ン Xilinx Synthesis Technology (XST) 13.4

使用し た イ ンプ リ メ ンテーシ ョ ン ツール /バージ ョ ン

System Generator for DSP バージ ョ ン 13.4

ス タ テ ィ ッ ク タ イ ミ ング解析の実施 あ り

ハー ド ウ ェ ア検証

ハード ウ ェア検証の実施 な し

検証に使用し たハード ウ ェア N/A

表 5 : リ フ ァ レンス デザイ ンの詳細 (続き)

パラ メ ーター 説明

Page 18: : Spartan-6 Virtex-6 Zynq-7000 CORDIC - japan. · PDF fileCORDIC アルゴリズムは、三角関数やその他の超越関数を、シフトおよび加算の反復演算だけで計算す

改訂履歴

XAPP552 (v1.0) 2012 年 6 月 1 日 japan.xilinx.com 18

改訂履歴 次の表に、 こ の文書の改訂履歴を示し ます。

Notice of Disclaimer

The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of Xilinx products. To the maximum extent permitted by applicable law: (1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort, including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising under, or in connection with, the Materials (including your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage (including loss of data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if such damage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same. Xilinx assumes no obligation to correct any errors contained in the Materials or to notify you of updates to the Materials or to product specifications. You may not reproduce, modify, distribute, or publicly display the Materials without prior written consent. Certain products are subject to the terms and conditions of the Limited Warranties which can be viewed at http://www.xilinx.com/warranty.htm; IP cores may be subject to warranty and support terms contained in a license issued to you by Xilinx. Xilinx products are not designed or intended to be fail-safe or for use in any application requiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in Critical Applications: http://www.xilinx.com/warranty.htm#critapps.

本資料は英語版 (v1.0) を翻訳し た もので、 内容に相違が生じ る場合には原文を優先し ます。

資料によ っては英語版の更新に対応し ていないものがあ り ます。

日本語版は参考用と し てご使用の上、 最新情報につき ま し ては、 必ず最新英語版をご参照 く ださい。

こ の資料に関する フ ィ ード バッ クおよび リ ン ク などの問題につき ま し ては、

[email protected] までお知らせ く だ さ い。 いただき ま し たご意見を参考に早急に対応さ

せていただき ます。 なお、 この メ ール ア ド レ スへのお問い合わせは受け付けてお り ません。 あ らかじめ

ご了承 く ださ い。

日付 バージ ョ ン 内容

2012 年 6 月 1 日 1.0 初版 リ リ ース