• 本当は、田舎に庵を建てて隠遁生活したいけど、先立つものも無いので自宅で..。

CICフィルター

ミキサーの後に設けるアンチエイリアスフィルターです。 サンプリング周波数とクロックが同じなので、処理に何クロックも必要なFIRフィルターは使えません。 CICフィルターは、フィルター特性はイマイチですが、1クロックで処理できることと、フィルタリングとデシメーションが同時に行えるので、多用されています。

Basis3では、IPにCICフィルタが用意されいるので、そのまま利用しました。
IPだけで構成されているので、モジュールにする必要はないのですが、CICフィルター単独でシミュレーションしたかったのでモジュール化しました。

デシメーション率は1024にしました。 UARTの最大速度を実験的に確かめたところ、私の開発環境では、6Mbaudでは動作しませんでした。 現状、クロックを80MHzとしていますので、デシメーション率1024だとデシメーション後のサンプリング周波数は、78.125kHzになるので5MHzあれば転送できます。

ソースです。

I,Q信号それぞれをIPで生成したcicフィルタに入力しているだけです。

テストベンチです。

あらかじめ、simdata.txtに20kHzと78kHzの複素信号のデータを書き込んでおいて、80MHzのクロックで読み出してcicフィルタに入力しているだけです。

20kHzの信号を入力した時のシミュレーション結果です。

入力信号が少し怪しいですが、正常に動作しているようです。 フィルターの出力は、デシメーションされて78.125kHzで出力されるので、角ばった信号になっていますが正常です。

78kHzを入力した時のシミュレーション結果です。

ほぼ、出力がありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA