UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 5366

LogiCORE MAC FIR Filter、DA FIR Filter、FIR Compiler - DA および MAC FIR フィルタ用に浮動小数点を固定小数点に変換する方法

説明

キーワード : CORE Generator, CORE Generator, coef, COE, FIR, PSA, SDA, fixed point, floating point, normalize, filter, 固定小数点, 浮動小数点, フィルタ

FIR フィルタがデザインされる場合、係数の値は通常浮動小数点のフォーマットになりますが、ザイリンクスの Distributed Arithmetic FIR (DA FIR) コア、Multiply Accumulate FIR (MAC FIR) コアは固定小数点の係数のみを受け入れます。浮動小数点の係数は、通常固定小数点に変換しないと FIR フィルタ コアで使用できません。変換方法を教えてください。

メモ : FIR コンパイラ コアは、浮動小数点の係数を受け入れ、係数ビット幅に基づき自動的に次の変換を実行します。

ソリューション

次の手順は、浮動小数点の係数の最大値が 1 未満の場合に使用してください。これらは、2 の補数形式の符号付き整数に変換されます。

:
係数は 0.0174、-0.0123、0.127、-0.0123、0.0174 です。

1. 係数変換の最初のステップは、係数を表すビット数 (N) を決めることです。通常、これはシステム レベルの決定で、フィルタの必須 Dynamic Range の因数なので、インプリメンテーションのコストはフィルタによって異なります。この値を使用し、次の式で計算することにより、係数の最大および最小値が決まります。

最大値 = 2^(N-1)-1
最小値 = -2^(N-1)

メモ : 係数は 2 の補数なので N-1 が使用されます。

:
10 ビットの場合、最大値は 511 で最小値は -512 です。

2. 係数値から最大 Dynamic Range が達成できるように、浮動小数値を正規化します。係数の最大絶対値を決め、次の式のように、それを割って係数を算出します。

(coefficients) / max_of_coefficients ( absolute_value_of_coefficients (coefficients) )

:
正規化した値は 0.1370、-0.0969、1、-0.0969、および 0.1370 です。

これですべての係数が 1 または -1 に正規化されます。

3. 正規化された値に、手順 1 で計算した係数の最大値を掛けます。この結果を丸め、係数を求めます。

result = round (normalized_values * 2^(N-1)-1)

:
2 の補数フォーマットの固定小数値は 70、-49、4024、-49、70

上記の手順をあわせると、次の MATLAB 式が得られます。この式で、N はビット幅、coef は浮動小数点の係数配列です。

result = round (coef/max(abs(coef)) * (2^(10-1)-1))

得られた係数は、COE ファイルで使用します。この際、COE ファイルの RADIX 宣言が係数を指定した際に使用した基数と一致していることを確認してください。
AR# 5366
作成日 08/21/2007
最終更新日 08/06/2008
ステータス アクティブ
タイプ 一般