ザイリンクス 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 に準拠しています。
ポート名の変更
-
en
をaclken
に変更 -
rst
をaresetn
に変更 -
rdy
をdout_tready
に変更。cartesian_tready
およびphase_tready
は、それぞれのチャンネルを追加したときに自動的に追加されます。 -
x_in
をcartesian_tdata_real
に変更 -
y_in
をcartesian_tdata_imag
に変更 -
phase_in
をphase_tdata_phase
に変更 -
x_out
をdout_tdata_real
に変更 -
y_out
をdout_tdata_imag
に変更 -
phase_out
をdout_tdata_phase
に変更
ポートの変更
- データ出力ポートは、CORDIC 6.0 ではオプションではありません。データ出力ポートは、選択した関数に基づいて選択されます。
- シリコン エリアは大きくなるが、1 サイクルのデータ スループットを実現する完全並列構成。cartesian および phase
入力チャンネルには、それぞれ個別の
tuser
、tlast
、およびtready
ポートがあります。 -
dout_tlast
出力ポートは、cartesian
入力チャンネルからのtlast
、phase
入力チャンネルからの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_real、cartesian_tdata_imag、および phase_tdata_phase の幅を指定します。有効な入力幅は 8 ~ 48 ビットです。
- Output width
- 出力ポート dout_tdata_real、dout_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)