AR# 15137

|

LogiCORE CORDIC v3.0 - 平方根ファンクションのデータ入力/出力に使用されるフォーマット

説明

キーワード : calculate, calculation, 計算

CORDIC core v1.0 を使用して入力の平方根を算出する必要があります。 入力および出力データに必要なフォーマットは何ですか。 フォーマットはどのように平方根に関係しますか。

ソリューション

データ フォーマットに関して例をはじめとする情報が、CORDIC v4.0 およびそれ以降のバージョンのデータシートに記載されています。

CORDIC コアの出入力は、Q1 フォーマットの 2 進数です。Q1 フォーマットには、左から 1 つ目の位置に虚数の小数点がにあります。CORDIC の平方根関数では、符号なしの出入力データが想定されます。Q1 フォーマットの例は次のとおりです。

CORDIC コアを平方根計算に使用する場合、次の 2 つのケースがあります。

ケース 1 : 小数の平方根を計算する場合

8 ビット入力の入力フォーマット :
0.0001000 = (SQRT 1/16)
8 ビット入力の出力フォーマット :
0.0100000 = (1/4)

20 ビット入力の入力フォーマット :
0.0001000000000000000 = (SQRT 1/16)
20 ビット入力の出力フォーマット :
0.0100000000000000000 = (1/4)

ケース 2 : 平方根の出入力を直接解釈して入力範囲を変更する場合

左から 1 つ目の位置 (Q1) から開始し、入力データが 2*N ビット左にシフトされている場合は出力データを N ビット左にシフトします。

平方根の 8 ビット入力 :
0000100.0 = (SQRT 4) ------> この入力は 6 (= 2*3) ビット シフトされているので N = 3
0010.0000 = (2) ---> 出力を 3 ビット分シフト

平方根の 20 ビット入力の例 1 :
0000000000000000010.0 = SQRT(2) ---------> 入力が 18 (= 2*9) シフトされているので N = 9
0000000001.0110101000 = 1.4140625 ------> 出力を 9 ビット分シフト

平方根の 20 ビット入力の例 2 :
0000000000000000100.0 = SQRT(4)
0000000010.0000000000 = 2

CORDIC 平方根の整数出入力のインスタンシエーションは次のとおりです。

X_IN : STD_LOGIC_VECTOR(20-1 DOWNTO 0);
X_OUT : STD_LOGIC_VECTOR(20-1 DOWNTO 0);

21 ビット平方根のインスタンシエーション :

X_IN_SQRT : STD_LOGIC_VECTOR(21-1 DOWNTO 0);
X_OUT_SQRT : STD_LOGIC_VECTOR(21-1 DOWNTO 0);

次のように指定します。

入力 :
X_IN_SQRT <= X_IN & '0';

出力 :
X_OUT(20-1 DOWNTO 11) <= (OTHERS=>'0');
X_OUT(10 DOWN TO 0) <= X_OUT_SQRT(21-1 DOWN to 10)

LogiCORE CORDIC のリリース ノートおよび既知の問題は、(Xilinx Answer 29570) を参照してください。

AR# 15137
日付 03/27/2009
ステータス アクティブ
種類 一般
People Also Viewed