ザイリンクス CIC Compiler は、さまざまなザイリンクス FPGA デバイスに AXI4-Stream 準拠の Cascaded Integrator-Comb (CIC) フィルターをデザインおよびインプリメントします。
CIC フィルターは Hogenauer フィルターとも呼ばれ、デジタル システムで大きなサンプル レートの変更をインプリメントするためによく使用されるマルチレート フィルターです。一般的には、過剰なサンプルレートを必要とするアプリケーションに採用されます。つまり、デジタル ダウン コンバーター (DDC) およびデジタル アップ コンバーター (DUC) のように、システムのサンプル レートが処理された信号の帯域幅よりはるかに大きい場合です。CIC フィルターのインプリメンテーションは、加算器、減算器、および遅延エレメントのみを使用する構造になっています。これらの構造により、CIC フィルターは、マルチレートのフィルター処理をハードウェアで効率的に実現できます。
サンプル レートと CIC Compiler ブロック
CIC Compiler ブロックは、プログラム可能なレート変更オプションがあり、それが Simulink® ではサポートできないため、常にシステム レートで実行する必要があります。CIC Compiler ブロックの出力で新しいサンプルが使用可能になったときは、ready 出力信号を使用して、ダウンストリーム ブロックに通知する必要があります。
CIC はデータをダウンサンプリングしますが、サンプル レートはクロック レートのままになります。CIC Compiler ブロックの出力を見ると、R のレート変更に対して各出力データが R 回繰り返され、data_tvalid
信号が R サイクルごとに 1 回パルスしていることがわかります。ダウンストリームのブロックは、クロックがレート変更 R より遅くなることがなければ、システムより低いレートでクロックを供給できます。
これを処理するには、複数の方法があります。デザイン全体をシステム レートで動作させたまま、イネーブル付きレジスタまたはほかのブロックのイネーブルを使用して、正しいタイミングでデータを取り込むことができます。または、最小のレート変更 R に対応する Down Sample ブロックを使用して、それ以上のレート変更はイネーブル信号で処理することも可能です。
必要なレート変更が少ない場合は、MUX ブロックを使用して、異なるレート変更ごとに異なる Down Sample ブロックを使用できます。これは、レート変更によってダウンストリームのブロックが異なる場合に、レートごとに異なるパスを作成することになります。前述のように、イネーブルを使用するのが最も効率的であると考えられます。
CIC Compiler ブロックをプログラマブル モードで使用しない場合は、CIC Compiler の後に Up Sample/Down Sample ブロックを配置して、サンプル レートが正しくダウンストリーム ブロックに伝搬されるようにします。これらのブロックはこのレートを継承し、これらのダウンストリーム ブロックを新しいレートで有効にする CE 回路が自動的に構築されます。
ブロック パラメーター
- Filter Specification タブ
-
Filter
Specification タブには、次のパラメーターがあります。
- [Filter Specification]
-
- [Filter Type]
- CIC コアは、補間および間引きアーキテクチャをサポートします。フィルター タイプに間引きを選択した場合、入力サンプル ストリームは係数 R でダウンサンプリングされ、補間を選択した場合、入力サンプルは R でアップサンプリングされます。
- [Number of Stages]
- 積分器および櫛形フィルターの段数を指定します。段数 N を指定した場合、フィルターに N 段の積分器と N 段の櫛形フィルターが作成されます。このパラメーターの有効な範囲は 3 ~ 6 です。
- [Differential Delay]
- 間引きまたは補間の櫛形フィルター セクションの各櫛形フィルターに適用する単位遅延の数。このパラメーターの有効な値は 1 または 2 です。
- [Number of Channels]
- インプリメンテーションでサポートされるチャネル数。このパラメーターの有効な範囲は 1 ~ 16 です。
- [Sample Rate Change Specification]
-
- [Sample Rate Changes]
- [Fixed] または [Programmable] を選択します。
- [Fixed or Initial Rate(ir)]
- CIC のサンプル レート変更値を初期値または固定値で指定します。このパラメーターの有効な範囲は 4 ~ 8192 です。
- [Minimum Rate]
- プログラム可能なレート変更での最小レート変更値。このパラメーターの有効な範囲は 4 ~ 固定レート (ir) です。
- [Maximum Rate]
- プログラム可能なレート変更での最大レート変更値。このパラメーターの有効な範囲は、固定レート (ir) ~ 8192 です。
- [Hardware Oversampling Specification]
-
- [Select format]
- [Maximum_Possible]、[Sample_Period]、[Hardware Oversampling Rate] のいずれかを選択します。ハードウェア オーバーサンプリング レートの指定方法を選択します。この値は、ブロック インプリメンテーションの並列処理のレベルおよび使用されるリソースに直接影響します。[Maximum Possible] を選択すると、s_axis_data_tdata ポートのデータ フィールドに接続された信号のサンプル周期に対応する最大オーバーサンプリングが使用されます。[Hardware Oversampling Rate] を選択すると、オーバーサンプリング レートをユーザーが指定できます。[Sample Period] を選択した場合、ブロックのクロックはシステム クロックに接続され、[Sample Period] に指定した値によりブロックでサポートされる入力サンプル レートが設定されます。[Sample Period] パラメーターは、ブロックのハードウェア オーバーサンプリング レートも決定します。[Sample Period] を選択すると、s_axis_data_tvalid 制御ポートが強制的に使用されます。
- [Sample period]
- 入力サンプル間のクロック サイクル数。複数のチャネルを指定した場合、この値は、時分割多重化された入力サンプル データ ストリーム間のクロック サイクル数の整数倍である必要があります。
- [Hardware Oversampling Rate]
- フォーマットとして Hardware_Oversampling_Rate を選択した場合に、ハードウェア オーバーサンプリング レートを入力します。
- Implementation タブ
-
- [Numerical Precision]
-
- [Quantization]
- [Full_Precision] または [Truncation] を指定します。注記: [Truncation] は、出力段階でのみ発生します。
- [Output Data Width]
- [Truncation] では、48 ビットまでの値を指定できます。
- [Optional]
-
- [Use Xtreme DSP slice]
- ターゲット デバイスで可能な場合に XtremeDSP スライス (DSP48 タイプのエレメント) を使用するよう指定します。
- Use Streaming Interface
- 複数チャネル インプリメンテーションのストリーミング インターフェイスを使用するかどうかを指定します。
- [Control Options]
-
- [ACLKEN]
- ブロックにクロック イネーブル ポートがあるかどうかを指定します (CORE Generator GUI で [Has ACLKEN] オプションをオンにするのと同等)。
- [ARESERTn]
- ブロックがリセット ポートを持つよう指定します。アクティブ Low の同期クリアです。2 サイクル以上の ARESETn パルスが必要です。
- [Has TREADY]
- ブロックがデータ出力チャネル用の TREADY ポートを持つよう指定します (CORE Generator GUI で [Has_DOUT_TREADY] オプションをオンにするのと同等)。
このブロックで使用されるその他のパラメーターについては、[Block Parameters] ダイアログ ボックスの共通オプション を参照してください。
LogiCORE 資料
『CIC Compiler LogiCORE IP 製品ガイド』 (PG140)