« XILINXのCoreGenでFIRフィルタを作る | トップページ | Artix-7のDDR3メモリで1066MHz動作 »

2017.02.03

FIRフィルタの実機テスト

Cosmo-ZにFIRフィルタを入れて、実機でテストしています。

まずは、生の信号を見てください。

Firj_1_2

これは、ある高い周波数の正弦波をCosmo-Zでアンダーサンプリングし、デシメーションを行なった後、IQ検波した信号です。ADCの周波数と正弦波の周波数がずれているため、うなりの成分が位相が90度ずれた2つの正弦波として見えています。

信号の説明はともかく、ノイズが乗っています。

これに、帯域300kHzのFIRフィルタを通してみました。

Firj_2

パッと見、ノイズが減っています。

一部分を拡大してみますと、

Firj_3

28クロックほど遅延し、ノイズがかなり平滑化されているのがわかります。

周波数で見てみると、300kHzあたりで綺麗にカットオフされているのがわかります。

Firj_4

カットオフを600kHzと1.2MHzに変えてみると、

Firj_5Firj_6

このように、狙ったとおりに帯域が広がっていくのがわかります。

sun

係数を変えればHPFにもなります。

Firj_10

HPFを通すと、時系列でみたときの1つ1つの振幅がめちゃめちゃ協調されますね。

Firj_11

sun

最後にバンドパスフィルタを試してみます。

FIRフィルタの設計は、「石川高専 山田洋士 研究室ホームページ」のページが便利です。望みの特性を入力すると、オンラインでFIRの計数を生成することができます。

41タップ、0.2~0.4ωc、Hamming窓のBPFを生成し、各係数を33554432倍してCoreGenに入れます。CoreGenで表示された周波数特性はこんな感じでした。

Firj_7

実際に動かしてみると、

Firj_8

黄色いのが入力信号、青が出力信号ですが、リップルの数も含めてぴたりと一致した特性が出ています。これが面白いものです。

BPFを通った信号というのは時系列でみると、どうしてもよくわからないものです。

Firj_9

sun

CoreGenでFIRを作るとき、係数が動的に変えられるようにしてあるので、いろいろなフィルタを試すことができて、なかなか面白いものです。

|

« XILINXのCoreGenでFIRフィルタを作る | トップページ | Artix-7のDDR3メモリで1066MHz動作 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« XILINXのCoreGenでFIRフィルタを作る | トップページ | Artix-7のDDR3メモリで1066MHz動作 »