ザイリンクス FIR Compiler ブロックは、AXI4-Stream 準拠のインターフェイスを使用して、パラメーターを柔軟に指定してエリアを効率的に使用する高パフォーマンスの FIR フィルターを生成します。
このブロック特有の AXI ポート
このブロックは、AXI CONFIG チャネルをサブフィールド名に基づく個別のポートのグループとして使用できるようにします。サブフィールド ポートの説明は次のとおりです。
コンフィギュレーション チャネル入力信号:
config_tdata_fsel | コンフィギュレーション チャネル ベクターの fsel フィールドを表すサブフィールド ポートです。fsel は、アクティブ フィルター セットを選択します。このポートは、係数セットが複数の場合に使用可能です。このフィールドのビットの説明は、『FIR Compiler v7.2LogiCORE IP 製品ガイド』 (PG149) を参照してください。 |
ブロック パラメーター
Simulink® モデルでブロックのアイコンをダブルクリックすると、[Block Parameters] ダイアログ ボックスが開きます。
- Filter Specification タブ
-
Filter Specification タブには、次のパラメーターがあります。
- Filter Coefficients
-
- Coefficient Vector
- 係数ベクターを 1 つの MATLAB® 行ベクターとして指定します。タップ数は、 MATLAB® 行ベクターの長さから推論されます。複数の係数セットを指定した場合、各セットはベクター内の前のセットに追加されます。これらの係数は、FDATool ブロックを使用して入力することもできます。
- Number of Coefficients Sets
- インプリメントするフィルター係数セットの数。係数の数に剰余なく除算できる値を指定する必要があります。
- Use Reloadable Coefficients
- ブロックに係数再読み込みポートを追加します。RELOAD チャネルに読み込まれたデータ セットは、リコンフィギュレーション同期イベントによってトリガーされるまで使用されません。RELOAD チャネルのインターフェイス タイミングの詳細な説明は、『FIR Compiler v7.2LogiCORE IP 製品ガイド』 (PG149) を参照してください。このブロックでは、xlGetReloadOrder 関数がサポートされています。詳細は、Model Composer ユーティリティ関数 xlGetReloadOrder を参照してください。
- Filter Specification
-
- Filter Type
-
- Single_Rate
- 入力と出力のデータ レートは同じです。
- Interpolation
- 出力のデータ レートは、[Interpolation Rate Value] で指定した値倍だけ入力より高速になります。
- Decimation
- 出力のデータ レートは、[Decimation Rate Value] で指定した値倍だけ入力より低速になります。
- Hilbert
- フィルターでヒルベルト変換を使用します。
- Interpolated
- 補間 FIR フィルターは、従来の FIR フィルターと同様のアーキテクチャですが、ユニット遅延演算子が k-1 単位の遅延に置き換えられています。k はゼロ パッキング係数と呼ばれます。補間 FIR を補間フィルターと混同しないようにしてください。補間フィルターは、狭帯域フィルターを効率的に実現するために採用されたシングル レート システムで、多少の改良を加えることで広帯域フィルターにも対応できます。入力と出力のデータ レートは同じです。
- Rate Change Type
- このフィールドは、[Filter Type] が [Interpolation] および [Decimation] に設定されている場合に適用されます。レート変更のタイプを Integer または Fixed_Fractional に指定します。
- Interpolation Rate Value
- このフィールドは、[Fractional Rate Change] インプリメンテーションで [Filter Type] が [Interpolation] および [Decimation] に設定されている場合に適用されます。このフィールドで指定した値は、アップサンプリング係数、または固定分数レート (P/Q) 再サンプリング フィルター インプリメンテーションの P を定義します。
- Decimation Rate Value
- このフィールドは、[Fractional Rate Change] インプリメンテーションで [Filter Type] が [Decimation] および [Interpolation] に設定されている場合に適用されます。このフィールドで指定した値は、ダウンサンプリング係数、または固定分数レート (P/Q) 再サンプリング フィルター インプリメンテーションの Q を定義します。
- Zero pack factor
- 係数ベクターで指定された係数間に挿入する 0 の数を指定します。ゼロ パッキング係数を k とすると、指定した係数値の間に k-1 個の 0 が挿入されます。このパラメーターは、[Filter Type] が [Interpolation] に設定されている場合にのみ有効になります。
- Channel Specification タブ
-
Channel
Specification タブには、次のパラメーターがあります。
- Interleaved Channel Specification
-
- Channel Sequence
- Basic または Advanced を選択します。アドバンス チャネル仕様機能の詳細は、 『FIR Compiler LogiCORE IP 製品ガイド』 (PG149) を参照してください。
- Number of Channels
- FIR Compiler ブロックで処理されるデータ チャネル数。複数チャンネルのデータは、時分割多重化されてコアに渡されます。最大 64 チャネルがサポートされます。
- Sequence ID List
- インプリメントするチャネル シーケンスを指定するカンマ区切りリスト。
- Parallel Channel Specification
-
- Number of Paths
- フィルターで処理する並列データパスの数を指定します。次の図に示すように、複数のパスを指定すると、data_tdata 入力ポートが各並列パスを表すサブポートに分割されます。図 1. 複数のパスを指定
- Hardware Oversampling Specification
-
- Select format
-
- Maximum_Possible
- オーバーサンプリングが din サンプル レートに基づいて自動的に決定されるよう指定します。
- Input_Sample_Period/Output_Sample_Period
- [Sample Period] が有効になります。サンプル周期仕様を入力します。このオプションを選択すると、s_axis_data_tvalid ポート (以前のバージョンのコアでは ND ポート) が使用可能になります。このポートが使用可能になると、入力ハンドシェイクの抽象化もレート伝搬も実行されません。
- Hardware Oversampling Rate
- [Hardware Oversampling Rate] が有効になります。ハードウェア オーバーサンプリング レートを入力します。
- Hardware Oversampling Rate
- ハードウェア オーバーサンプリング レートは、並列処理の程度を決定します。レートが 1 の場合、完全なパラレル フィルターが生成されます。n ビットの入力信号に対してレートを n (または n+1) に設定すると、非対称 (または対称) インパルス応答の完全シリアル インプリメンテーションが生成されます。中間の値では、中程度の並列処理が実行されたインプリメンテーションが生成されます。
- Implementation タブ
-
Implementation タブには、次のパラメーターがあります。
- Coefficient Options
-
- Coefficient Type
- Signed または Unsigned を指定します。
- Quantization
- 係数の量子化に使用する量子化方法を指定します。次のいずれかに設定できます。
- Integer_Coefficients
- Quantize_Only
- Maximize_Dynamic_Range
- Normalize_to_Centre_Coefficient
- Coefficient Width
- 係数を表現するビット数を指定します。
- Best Precision Fractional Bits
- 係数の小数幅を、指定されたフィルター係数の精度が最大になるように自動的に設定します。
- Coefficient Fractional Bits
- 係数データパス オプションの 2 進小数点の位置を指定します。
- Coefficients Structure
- 係数構造を指定します。係数構造に応じて、特定のフィルター構成をインプリメントするために必要なハードウェアの量を削減する最適化がコアで実行されます。次のいずれかの構造を選択できます。
- Inferred
- Non-Symmetric
- Symmetric
- Negative_Symmetric
- Half_Band
- Hilbert
指定した係数のベクターは、指定した構造に一致している必要があります。ただし、[Inferred] (係数から推論) を選択した場合は、構造はこれらの係数から自動的に決定されます。
- Datapath Options
-
- Output Rounding Mode
- 次のいずれかを選択します。
- Full_Precision
- Truncate_LSBs
- Non_Symmetric_Rounding_Down
- Non_Symmetric_Rounding_Up
- Symmetric_Rounding_to_Zero
- Symmetric_Rounding_to_Infinity
- Convergent_Rounding_to_Even
- Convergent_Rounding_to_Odd
- Output Width
- 出力幅を指定します。編集ボックスは、[Output Rounding Mode] を Full_Precision 以外に設定すると有効になります。
- Detailed Implementation タブ
-
Detailed
Implementation タブには、次のパラメーターがあります。
- Filter Architecture
- 次の 2 つのフィルター アーキテクチャがサポートされています。
- [Systolic_Multiply_Accumulate]
- [Transpose_Multiply_Accumulate]注記: [Transpose_Multiply_Accumulate] を選択した場合、次の制限が適用されます。
- 対称は利用されません。Filter Specification タブで指定された Coefficient Vector が対称と検出された場合、FIR Compiler ブロックの [Block Parameters] ダイアログ ボックス では [Transpose Multiply Accumulate] は選択できません。
- 複数のインターリーブされたチャネルはサポートされません。
- Optimization Options
-
コアを可能な最大速度で動作させる必要があるか (Speed) またはエリアを最小にする必要があるか (Area) を指定します。[Area] が推奨されるデフォルトであり、通常デザインに最適な速度とエリアを達成できますが、特定の構成では、全体のリソース使用量を多くしてもパフォーマンスを向上させるために Speed に設定することが必要となる場合があります。この設定では通常、クリティカル パスにパイプライン レジスタが追加されます。
- Goal
-
- [Area]
- [Speed]
- [Custom]
- List
- ブロックでインプリメントする最適化を指定するカンマ区切りリスト。次の最適化を指定できます。
- Data_Path_Fanout
- データ メモリ出力にパイプライン レジスタを追加して、ファンアウトを最小限にします。乗算/加算ユニットごとに複数の DSP スライスを必要とするデータ幅の広いフィルターをインプリメントする場合に有益です。
- Pre-Adder_Pipeline
- ファブリック リソースを使用してインプリメントする際に前置加算器をパイプライン処理します。これは、広い係数幅を指定した場合に発生することがあります。
- Coefficient_Fanout
- 係数メモリ出力にパイプライン レジスタを追加して、ファンアウトを最小限にします。乗算/加算ユニットごとに複数の DSP スライスを必要とする係数幅の広いフィルターをインプリメントする場合に有益です。
- Control_Path_Fanout
- 並列チャネルを指定した場合に、制御ロジックにパイプライン レジスタを追加します。
- Control_Column_Fanout
- フィルターをインプリメントするのに複数の DSP 列が必要な場合に、パイプライン レジスタを追加します。
- Control_Broadcast_Fanout
- 完全パラレル (入力サンプルごとに各チャネルに 1 クロック サイクル) 対称フィルターのインプリメンテーションの制御ロジックに、パイプライン レジスタを追加します。
- Control_LUT_Pipeline
- アドバンス チャネル シーケンスの制御ロジックをインプリメントするのに必要なルックアップテーブルをパイプライン処理します。
- No_BRAM_Read_First_Mode
- ブロック RAM に Read-First モードを使用できないことを指定します。
- Increased speed
- 非対称フィルターのインプリメンテーションに複数の DSP スライス列が必要です。
- Other
- その他の最適化。
注記: すべての最適化を指定できますが、コアのコンフィギュレーションに関係する場合にのみインプリメントされます。
- Memory Options
- MAC インプリメンテーションのメモリ タイプは、ユーザーが選択するか、最適なインプリメンテーション オプションに合わせて自動的に選択するかを指定します。Distributed を選択すると、フィルター構造で適切な場合に、シフト レジスタがインプリメントされることがあります。RAM を Block または Distributed に強制すると、不適切な使用によりリソースが非効率的に使用されることがあるので、注意が必要です。ほとんどのアプリケーションでは、デフォルトの [Automatic] モードが推奨されます。
- Data Buffer Type
- データ サンプルを格納するメモリのタイプを指定します。
- Coefficient Buffer Type
- 係数を格納するメモリのタイプを指定します。
- Input Buffer Type
- データ入力バッファーをインプリメントするのに使用するメモリのタイプを指定します。
- Output Buffer type
- データ出力バッファーをインプリメントするのに使用するメモリのタイプを指定します。
- Preference for other storage
- データパスに汎用ストレージをインプリメントするのに使用するメモリのタイプを指定します。
- DSP Slice Column Options
-
- Multi-Column Support
- DSP スライスを含むデバイス ファミリでは、大規模な高速フィルターをインプリメントする際に、複数の列の DSP スライス エレメントを連結する必要がある場合があります。該当する場合 (この機能は複数列デバイスでのみ有効)、フィルター構造を複数列にまたがって折りたたむ方法を選択できます。[Automatic] (プロジェクトに選択したデバイスに基づく) または [Custom] (最初の列と後続の列の長さをユーザーが選択) を指定できます。
- Column Configuration
- 各列の長さをカンマ区切りリストで指定します。詳細は、データシートを参照してください。
- Inter-Column Pipe Length
- 列間の接続には、パイプライン段が必要です。必要なパイプライン処理のレベルは、必要なシステム クロック レート、選択したデバイス、およびその他のシステム レベルのパラメーターによります。このパラメーターは、常にユーザーが指定する必要があります。
- Interface タブ
-
- Data Channel Options
-
- TLAST
- TLAST は、Not_Required (ブロックにポートなし)、Vector_Framing (TLAST がデータ チャネルのインターリーブされたサイクルの最後のサンプル)、または Packet_Framing (ブロックで TLAST は解釈されず、信号はデータパスと同じレイテンシで出力データ チャネルに渡される) のいずれかに設定できます。
- Output TREADY
-
data_tready
ポートを有効にします。このポートを有効にすると、ブロックでバック プレッシャーがサポートされます。このポートが有効でない場合、バック プレッシャーはサポートされませんが、リソースは節約され、パフォーマンスが向上する可能性が高くなります。 - Input FIFO
- S_AXIS_DATA チャネルの FIFO インターフェイスを選択します。FIFO を選択すると、データは FIFO のサイズ (デフォルトでは 16) までの連続バースト、またはそれ以上の場合はインターリーブされたデータ チャンネルの数で転送できます。FIFO には、追加の FPGA ロジック リソースが必要となります。
- TUSER
- 入力および出力に、次のいずれかのオプションを選択します。
- Not_Required
- どちらにも必要なく、当該するチャンネルには TUSER フィールドは含まれません。
- User_Field
- このモードでは、ブロックは TUSER フィールドの内容を無視し、内容を入力チャネルから出力チャネルにそのまま渡します。
- Chan_ID_Field
- このモードでは、TUSER フィールドにより転送用の時分割多重化チャンネルが特定されます。
- User and Chan_ID_Field
- このモードでは、TUSER フィールドにユーザー フィールドと chan_id フィールドの両方が含まれます (chan_id フィールドは最下位ビット)。チャンネルの記述に必要な最小限のビット数により、chan_id フィールドの幅が決定されます (例: 7 チャンネルには 3 ビット必要)。
- Configuration Channel Options
-
- Synchronization Mode
-
- On_Vector
- コンフィギュレーション パケットがある場合、インターリーブされたデータ チャネル シーケンスの最初のサンプルがブロックで処理されるときに消費され、その内容が適用されます。ブロックが 1 つのデータ チャネルを処理するように設定されている場合、コンフィギュレーション パケットはブロックの処理サイクルごとに消費されます。
- On_Packet
- コンフィギュレーション パケットの消費をさらに限定します。パケットは、s_axis_data_tlast がアサートされた s_axis_data チャネルでブロックがトランザクションを受信した後にのみ消費されます。
- Configuration Method
-
- Single
- インターリーブされたすべてのデータ チャネルの処理に、1 つの係数セットを使用します。
- By_Channel
- インターリーブされた各データ チャネル用に固有の係数セットを指定します。
- Reload Channel Options
-
- Reload Slots
- 事前に読み込むことができる係数セットの数を指定します。再読み込みされた係数は、コンフィギュレーション パケットが消費された後にのみブロックに適用されます (範囲 1 ~ 256)。
- Control Options
-
- ACLKEN
- アクティブ High のクロック イネーブル。MAC ベースの FIR インプリメンテーションに使用できます。
- ARESETn (active low)
- アクティブ Low の同期クリア入力。ACLKEN よりも優先されます。この信号にはパフォーマンスのため内部でレジスタが付けられているので、2 サイクル以上の ARESETn アクティブ パルスが必要です。1 サイクルのパルスでコアの制御およびデータパスがリセットされますが、パルスに対する応答はその直後のサイクルには現れません。
- Advanced タブ
-
- Block Icon Display
-
- Display shortened port names
-
デフォルトでオンになっています。オフにすると、たとえば
data_tvalid
はm_axis_data_tvalid
になります。このブロックで使用されるその他のパラメーターについては、[Block Parameters] ダイアログ ボックスの共通オプション を参照してください。
LogiCORE 資料
『FIR Compiler LogiCORE IP 製品ガイド』 (PG149)