メディア

CORDICって何?Q&Aで学ぶマイコン講座(60)(2/4 ページ)

» 2021年04月01日 11時00分 公開

基本原理

 CORDICは、平面でベクトル(または座標)を回転させながら角度θになるまで繰り返し演算を行い、最終的にθの関数値を得るものです。比較的簡単なハードウェアで実現できるので、関数電卓などにも採用されています。

 例えば、角度θの正弦(sin)と余弦(cos)は、回転角度の累積合計が入力角度と等しくなるまで、単位ベクトル [1, 0] を回転させることによって決定されます。回転したベクトルのxおよび、y成分は、それぞれθの正弦と余弦に対応します。

 逆にベクトル [x, y] の角度は、アークタンジェント(tan-1)(y/x)に対応し、[x, y] を連続的に減少する角度で回転させて単位ベクトル [1, 0] を求めます。双曲線に沿ったステップで連続する円回転を置き換えることにより、双曲線関数(sinh、cosh、tanh-1)の計算にも使用できます。

関数

 CORDICで扱える関数はマイコンによって異なります。例えば32ビットマイコン「STM32G4シリーズ」に搭載されているCORDICで扱える関数は次の通りです。

  • コサイン(cosθ)
  • サイン(sinθ)
  • 位相(atan2 y,x)
  • 絶対値(モジュラス)(√(x2+y2))
  • アークタンジェント(tan-1 x)
  • 双曲線サイン(sinh x)
  • 双曲線コサイン(cosh x)
  • 双曲線アークタンジェント(tanh-1 x)
  • 自然対数(ln x)
  • 平方根(√x)

 使用する関数の定義は、CORDIC_CSRレジスタのFUNCフィールドを設定することによって選択します。したがって、一度に使用できる関数は1つだけです。

関数パラメーター

 いくつかの関数は、ARG1とARG2の2つの入力引数を取り、RES1とRES2の2つの結果を同時に生成します。

 本来必要な結果がRES1だけであっても、CORDICアルゴリズムはRES2にも結果が発生します。本記事では、これをCORDICアルゴリズムの副作用と呼びます。

 例えば、極座標を直交座標に変換する場合、sinθはcosθも生成し、cosθはsinθも生成します。

 同様に、直交座標から極座標への変換(phase(x, y)、modulus(x, y))および双曲線関数(coshθ、sinhθ)の場合も同じです(図2

図2:関数パラメーター

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.