パラメータ化
- 実装にあたっては前記したように積分器、微分器の段数、微分器の遅延数、デシメーションをパラメータで指定することで使用用途に合わせたCICフィルタが構築できるようにします。
- 積分器、微分器のタップ数はプログラマブルに変数で変化させることが出来ないのでparameterにより指定しコンパイル時に確定させるようにします。[1]
積分器、微分器のそれぞれの1タップ分の処理を指定されたparameterの数でfor文を回すようにして実装します。そのため各タップでの結果は配列に保存します。
この結果を次の処理に接続することでタップ数分の処理を実現します。
- 微分器の遅延数もparameterで指定できるようにします。微分器に指定された遅延数を配列で覚えておき次の配列に送ることで遅延させます。
- デシメーションする変換率は積分器と微分器のクロック比率で設定します。例えば積分器のクロックの半分の周期のクロックを微分器に渡すことでデータを1/2にデシメートします。
- 処理するビット幅はCICフィルタで増えるビットをカバーする必要があります。ビット幅も予めparameterにより指定するものとします。ビット幅の決め方は以下で決まります。詳細は「CIC Filter Introduction」を参照してください。
- Out Bits = N × log2(R × M) + In Bits
N:タップ数
R:デシメーション変換率
M:微分器の遅延数
In Bits:入力データのビット数[2]
- 例えば入力するデータを8bit、タップ数を3、デシメーションを変換率を4(1/4にデシメーション)、微分器の遅延数を1とした場合
Out Bits = 3 × log2(4 × 1) + 8 = 3 × 2 + 8 = 14
となり14bitのデータ幅が必要となります。
回路デザイン > 設計例 [CICフィルタ] > 実装にあたって 次のページ(コーディング) このページのTOP ▲