FM 復調器

おじさん工房 TOP へ     APB−2 のページへ     サポート掲示板へ     APB-2 キット頒布中

■ページ履歴

2011/06/19 このページ公開


2011/06/19

FMを復調するには、アナログ回路ではレシオ検波や、パルスカウント方式がありますが、デジタル回路ではどういう回路が規模や特性の観点から良いのか知りたいと思っていました。

いろいろ調べてみると CORDIC で偏角を計算し微分して周波数を得るもの、ATAN を直接微分して周波数を得るもの、PLL 方式などがありました。 PLL は特にメリットはあるように思えない(どちらにしろ一度位相差を計算しなくてはいけないから)ので今回は PLL 以外の2つの方式を実装して、特性を調べてみました。


FM復調器2種類 VHDLソース 20110619 (ZIP 9KB)


■回路

外部から入力した FM 信号をインバーターで 1bit デジタルにして FPGA に入れます。

FPGA内部では、入力された 1bit FM信号を 100MHz でサンプリングしたあと複素周波数変換してゼロ周波数にします。 それを CICフィルターに通し、128 分の 1 の 781kHz にサンプリング周波数を下げ、それぞれのFM復調回路でオーディオ信号になり、ΔΣ DA変換して出力します。

出力信号は、抵抗とコンデンサでつくった LPF をとおして最終的なオーディオ信号になります。


■CORDIC方式

CORDICで偏角を求め、1サンプリング前の偏角との差分をとる(微分)ことで周波数を求めます。

□ 入出力特性実測
CORDIC特性

x軸は周波数差、y軸は復調出力です。 入出力はきれいな直線になっています。


□ 1KHzサイン波(デビエーション 156kHz)
CORDIC 1KHzサイン特性

2次、3次の歪はΔΣ DA変換で生じたものと思われます。


FPGA の使用状況は以下のようになりました。

   Selected Device : 3s200avq100-4 

    Number of Slices:                      193  out of   1792    10%  
    Number of Slice Flip Flops:            111  out of   3584     3%  
    Number of 4 input LUTs:                366  out of   3584    10%  
    Number of IOs:                          52
    Number of bonded IOBs:                  51  out of     68    75%  
    Number of GCLKs:                         1  out of     24     4%  
			


■ATAN微分方式
ATANを直接微分した以下の式を使って周波数を求めます。

        d
   f = ---- atan( Q/I )
        dt


           d                     d
          ----( Q ) * I  -  Q * ----( I )
           dt                    dt
     = -------------------------------------
                 I * I  +  Q * Q
			
時間微分は CORDIC のときと同じように1サンプリング前との差分です。


□ 入出力特性実測
ATAN特性

周波数差が小さいところでは直線に近いですが、周波数が離れるに従って直線性が悪くなっています。 アナログ復調回路のS字カーブみたいです。

□ 1KHzサイン波(デビエーション 156kHz)
ATAN 1KHzサイン特性

直線性の悪さで3次歪が増えています。 2次歪はセンター周波数が若干ずれている(信号源と)ためです。
サイン波形を見ても波形の上下が丸くなっているのがわかります。


FPGA の使用状況は以下のようになりました。

    Selected Device : 3s200avq100-4 

    Number of Slices:                      231  out of   1792    12%  
    Number of Slice Flip Flops:            268  out of   3584     7%  
    Number of 4 input LUTs:                292  out of   3584     8%  
    Number of IOs:                          52
    Number of bonded IOBs:                  52  out of     68    76%  
    Number of MULT18X18SIOs:                 1  out of     16     6%  
    Number of GCLKs:                         1  out of     24     4%  
			
振幅が一定であれば ATAN を微分した式の分母( I*I + Q*Q )は一定になるので分母での割算回路は不要になります。 その場合、スライス使用量は 117 でした。 とはいっても CORDIC では使っていなかった乗算器を1個使っていますので、もし乗算器をスライスで作るとするともっと大きくなります。


■比較結果
スライス使用量、特性、どちらをとっても CORDIC のほうが良いです。 実行クロックもどちらも20弱とほとんど変わらないですし。

振幅が一定で、歪がそれほど気にならず、乗算器があまっているようなときは ATAN 微分方式のほうがスライス数が少なく実装可能ですが、あまりそういう状況はないような気がします。



■閑話休題




inserted by FC2 system