HDL フィルターでの分散計算
分散計算 (DA) は、乗算器を使用せずに積和計算を実装するために広く使用されている手法です。設計者は、フィルターや他の DSP アプリケーションの効率的な積和演算回路 (MAC) を作成するために、よく DA を使用します。DA の主な利点は、計算の効率性が高いことです。DA は、通常の乗算器を必要としないように、乗算と累積演算をシフター、ルックアップ テーブル (LUT) および加算器全体に分散します。
FIR フィルター構造の DA 実現では、幅 W
の入力データ ワード列がパラレルからシリアル シフト レジスタに供給され、ビットのシリアル化されたストリームが生成されます。その後、シリアル化されたデータはビット単位のシフト レジスタに供給されます。このシフト レジスタは遅延線として機能し、ビットのシリアル データ サンプルを保管します。
遅延線には (入力ワード サイズ W
に基づいて) タップが付けられ、ルックアップ テーブル (LUT) にインデックス付けする W
ビット アドレスを形成します。LUT は、部分積の考えられるすべての合計をフィルター係数空間に保管します。LUT には、LUT から順番に取得した値を追加するシフトおよび加算器 (スケーリング アキュムレータ) が続きます。
テーブル ルックアップはビットごとに順次 (LSB から開始して重要度の順) に実行されます。クロック サイクルごとに、LUT の結果が直前のサイクルから加算されシフトされた結果に追加されます。最後のビット (MSB) については、オペランドの符号が考慮されてテーブル ルックアップの結果が差し引かれます。
DA の基本的な形式は、一度に 1 ビットを処理する完全なシリアルです。入力データ列が W
ビット幅の場合、FIR 構造は出力を計算するのに W
クロック サイクルかかります。対称および非対称の FIR 構造は例外で、W+1
サイクルを必要とします。これは、前置加算器のキャリー ビットを処理するために追加の 1 クロック サイクルが必要だからです。
DA コードの生成方法は DALUTPartition
および DARadix
実装パラメーターを使用して制御できます。DALUTPartition
および DARadix
パラメーターには、異なるフィルター タイプに固有の特定の要件と制約があります。これらの要件は、各パラメーターの説明に含まれています。
LUT サイズの低減: DALUTPartition
パラレル化によるパフォーマンスの向上: DARadix
DA の理論的基礎は、追加の参考文献を参照してください。
分散計算のコード生成の要件と考慮事項
固定小数点量子化の必要性
DA コードの生成は固定小数点フィルターの設計でのみサポートされています。
フィルター精度の指定
DA アーキテクチャ用に生成された HDL コード内のデータ パスは、完全精度の計算のために注意深く最適化されています。フィルターの結果は、出力に対して提示される最終ステージでのみ出力データ サイズにキャストされます。
分散計算は乗算器とアキュムレータの演算をマージし、完全精度で計算を行います。このアプローチでは、Digital Filter ブロックの [Product output] および [Accumulator] プロパティが無視され、これらのプロパティは完全精度に設定されます。
ゼロ値をもつ係数
DA はゼロ値の係数をもつタップを無視して DA LUT のサイズを適切に減らします。
対称および非対称フィルターの考慮事項
対称フィルターおよび非対称フィルターに関して、以下を考慮してください。
ビットレベルの前置加算器または前置減算器には、等価値または逆の符号あるいはその両方の係数をもつタップ データ値を追加する必要があります。追加のキャリー ビットにより、結果を計算するには追加の 1 クロック サイクルが必要です。
HDL Coder™ は、できる限りフィルターの対称性を利用します。これらのフィルター タイプの実フィルター長は半分なので、これにより DA LUT のサイズが大幅に小さくなります。
追加の参考文献
DA の理論的な基礎の詳細な説明は、以下の文献に記されています。
Meyer-Baese, U., Digital Signal Processing with Field Programmable Gate Arrays, Second Edition, Springer, pp 88–94, 128–143
White, S.A., Applications of Distributed Arithmetic to Digital Signal Processing:A Tutorial Review.IEEE ASSP Magazine, Vol. 6, No. 3