CORDIC 6.0 - 2022.1 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2022-05-26
Version
2022.1 日本語

ザイリンクス CORDIC ブロックは、汎用 CORDIC (Coordinate Rotation Digital Computer) アルゴリズムをインプリメントします。AXI に準拠しています。

CORDIC コアは、次の式をインプリメントします。

  • Rotate
  • Translate
  • Sin_and_Cos
  • Sinh_and_Cosh
  • Arc_Tan
  • Arc_Tanh
  • Square_Root

CORDIC コアでは、次の 2 つのアーキテクチャ構成を使用できます。

  • スループットは複数サイクルだがシリコン エリアの小さいワード シリアル インプリメンテーション。
  • シリコン エリアは大きくなるが、1 サイクルのデータ スループットを実現する完全並列構成。

粗回転は、入力サンプルを完全な円から第 1 象限に回転します。CORDIC アルゴリズムは第 1 象限でのみ有効であるため、粗回転段階が必要です。逆粗回転段階は、出力サンプルを正しい象限に回転します。

CORDIC アルゴリズムは、結果の振幅にスケール係数を導入しますが、CORDIC コアには CORDIC スケール係数を自動的に補正するオプションがあります。

CORDIC 4.0 から CORDIC 6.0 への変更点

AXI 準拠

  • CORDIC 6.0 ブロックは AXI に準拠しています。

ポート名の変更

  • enaclken に変更
  • rstaresetn に変更
  • rdydout_tready に変更。cartesian_tready および phase_tready は、それぞれのチャンネルを追加したときに自動的に追加されます。
  • x_incartesian_tdata_real に変更
  • y_incartesian_tdata_imag に変更
  • phase_inphase_tdata_phase に変更
  • x_outdout_tdata_real に変更
  • y_outdout_tdata_imag に変更
  • phase_outdout_tdata_phase に変更

ポートの変更

  • データ出力ポートは、CORDIC 6.0 ではオプションではありません。データ出力ポートは、選択した関数に基づいて選択されます。
  • シリコン エリアは大きくなるが、1 サイクルのデータ スループットを実現する完全並列構成。cartesian および phase 入力チャンネルには、それぞれ個別の tusertlast、および tready ポートがあります。
  • dout_tlast 出力ポートは、cartesian 入力チャンネルからの tlastphase 入力チャンネルからの tlast、またはすべての tlasts を AND または OR で結合した信号を出力するよう設定できます。

最適化

  • AXI の動作に Blocking モードを選択すると、コアを最小リソース (Resources) または最高パフォーマンス (Performance) のいずれかを選択できます。

ブロック アイコンにポート名を表示

  • Display shortened port names を選択すると、ブロック シンボルの AXI ポート名を短縮できます。

ブロック パラメーター

Page 1 タブ
Functional selection
Rotate
CORDIC アルゴリズムを使用して、入力ベクター (real, imag) を入力角度分回転します。これにより、スケーリングされた出力ベクター Zi * (real', imag') が生成されます。
Translate
CORDIC アルゴリズムを使用して、入力ベクター (real, imag) を imag 要素が 0 になるまで回転します。これにより、スケーリングされた出力の大きさ Zi * Mag(real, imag) と出力の位相 Atan(imag/real) が生成されます。
Sin_and_Cos
CORDIC アルゴリズムを使用して、ユニット ベクターを入力角度分回転します。これにより、出力ベクター (Cos( ), Sin( )) が生成されます。
Sinh_and_Cosh
CORDIC アルゴリズムを使用して、ベクター (1,0) を双曲線に沿って双曲角 p で移動します。双曲角は、ベクター (real, imag) の下のエリアの対数を表し、三角法の角度とは無関係です。これにより、出力ベクター (Cosh(p), Sinh(p)) が生成されます。
Arc_Tan
CORDIC アルゴリズムを使用して、入力ベクター (real, imag) を imag 要素が 0 になるまで回転します。これにより、出力角度 Atan(imag/real) が生成されます。
Arc_Tanh
CORDIC アルゴリズムを使用して、入力ベクター (real, imag) を双曲線に沿って imag 要素が 0 になるまで移動します。これにより、双曲角 Atanh(imag/real) が生成されます。双曲角は、ベクター (real, imag) の下のエリアの対数を表し、三角法の角度とは無関係です。
Square_Root
CORDIC アルゴリズムを使用して、入力の正の平方根を計算します。
Architectural configuration
[Configuration]:
Word_Serial
エリアの小さいハードウェア結果を得る場合に選択します。
Parallel
スループットの高いハードウェア結果を得る場合に選択します。
Pipelining mode
No_Pipelining
CORDIC コアをパイプライン処理なしでインプリメントします。
Optimal
CORDIC コアを、LUT を追加せずにできるだけパイプライン段数を多くしてインプリメントします。
Maximum
CORDIC コアを、各シフト加算/減算段階の後にパイプラインを使用してインプリメントします。
Data format
SignedFraction
デフォルト設定。real と imag の入力および出力は、2 ビットの整数幅を持つ固定小数点 2 の補数値で表現されます。
UnsignedFraction
Square_Root 関数設定でのみ使用可能です。real と imag の入力および出力は、1 ビットの整数幅を持つ符号なし固定小数点値で表現されます。
UnsignedInteger
Square_Root 関数設定でのみ使用可能です。real と imag の入力および出力は、符号なし整数で表現されます。
Phase format
Radians
real と imag の入力および出力は、3 ビットの整数幅を持つ固定小数点 2 の補数値 (ラジアン単位) で表現されます。
Scaled_Radians
real と imag の入力および出力は、3 ビットの整数幅を持つ固定小数点 2 の補数値 (pi ラジアン単位) で表現されます。1 scaled-radian は、Pi * 1 ラジアンに相当します。
[Input/Output Options]
Input width
入力ポート cartesian_tdata_realcartesian_tdata_imag、および phase_tdata_phase の幅を指定します。有効な入力幅は 8 ~ 48 ビットです。
Output width
出力ポート dout_tdata_realdout_tdata_imag、および dout_tdata_phase の幅を指定します。有効な出力幅は 8 ~ 48 ビットです。
[Round mode]
Truncate
real、imag、および phase 出力を切り捨てます。
Round_Pos_Inf
real、imag、および phase 出力を丸めます (1/2 は切り上げ)。
Round_Pos_Neg_Inf
real、imag、および phase 出力を丸めます (1/2 は切り上げ、-1/2 は切り下げ)。
Nearest_Even
real、imag、および phase 出力を最も近い偶数値に丸めます (1/2 は切り下げ、3/2 は切り上げ)。
Page 2 タブ
[Advanced Configuration Parameters]
Iterations
内部加算/減算の反復回数を指定します。0 に設定すると、出力に必要な精度に基づいて、実行される反復回数が自動的に決定されます。
Precision
加算/減算の内部精度を設定します。0 に設定すると、出力に必要な精度と内部反復回数に基づいて、内部精度が自動的に決定されます。
Compensation scaling
CORDIC の大きさスケーリングの補正に使用する補正スケーリング モジュールを制御します。CORDIC の大きさスケーリングは、Vector Rotation および Vector Translation 関数コンフィギュレーションには影響しますが、SinCos、SinhCosh、ArcTan、ArcTanh、および Square Root 関数コンフィギュレーションには影響しません。後者のコンフィギュレーションでは、補正スケーリングはスケール補正なしに設定されます。
Coarse rotation

粗回転モジュールのインスタンシエーションを制御します。粗回転モジュールのインスタンシエーションは、Vector Rotation、Vector Translation、Sin と Cos、および Arc Tan 関数コンフィギュレーションのデフォルトです。これらの関数で [Coarse Rotation] がオフの場合、入力/出力の範囲は第 1 象限 (-Pi/4 ~ +Pi/4) に制限されます。

Sinh、Cosh、Arctanh、および Square Root コンフィギュレーションでは、粗回転は必要ありません。標準 CORDIC アルゴリズムは第 1 象限で演算を実行します。粗回転は、入力サンプルを第 1 象限に回転させ、出力サンプルを逆回転させて適切な象限に戻すことにより、CORDIC の動作範囲を完全な円に拡張します。

Optional ports
Standard
aclken
この信号がアサートされていない場合、この信号が再度アサートされるか、または aresetn 信号がアサートされるまで、ブロックは現在のステートを保持します。aresetn 信号は、クロック イネーブル信号よりも優先されます。この信号は、ブロックのサンプル レートの倍数で動作する必要があります。このポートを駆動する信号は、ブール型である必要があります。
aresetn
この信号をアサートすると、ブロックが初期ステートに戻ります。このリセット信号は、ブロックで使用可能なオプションの aclken 信号よりも優先されます。リセット信号は、ブロックのサンプル レートの倍数で実行する必要があります。このポートを駆動する信号は、ブール型である必要があります。
tready
ブロッキング モードがアクティブな場合に dout_tready ポートを追加します。
Cartesian
[tlast]
Cartesian 入力チャネルに tlast 入力ポートを追加します。
tuser
Cartesian 入力チャネルに tuser 入力ポートを追加します。
tuser width
Cartesian tuser 入力ポートのビット幅を指定します。
Phase
tlast
Phase 入力チャネルに tlast 入力ポートを追加します。
tuser
Phase 入力チャネルに tuser 入力ポートを追加します。
tuser width
Phase tuser 入力ポートのビット幅を指定します。
Tlast behavior
Null
データ出力ポート。
Pass_Cartesian_TLAST
データ出力ポート。
Pass_Phase_TLAST
データ出力ポート。
OR_all_TLASTS
すべての TLAST 入力ポートの論理 OR を渡します。
AND_all_TLASTS
すべての TLAST 入力ポートの論理 AND を渡します。
Flow control
AXI behavior
NonBlocking
ノンブロッキング モードを選択します。このモードでは、1 つの入力チャネルにデータがない場合でも、データが別の入力チャネルで受信されたときに、演算の実行はブロックされません。
Blocking
ブロッキング モードを選択します。このモードでは、1 つの入力チャネルにデータがない場合、データが別の入力チャネルで受信されたときに、演算の実行がブロックされます。
Optimization
ノンブロッキング モードを選択している場合、次の最適化オプションがアクティブになります。
Resources
コアをリソースが最小限になるように設定します。
Performance
コアをパフォーマンスが最高になるように設定します。
Implementation タブ
Block Icon Display
Display shortened port names
このオプションはデフォルトでオンになっています。オフにすると、ブロック アイコンに各ポートの完全な AXI 名が表示されます。

LogiCORE 資料

『CORDIC LogiCORE IP 製品ガイド』 (PG105)