ディジタルFMステレオ・チューナの製作 ―― 雑誌の付属基板でここまでできる

林 輝彦

● CORDICによるFM復調

 FM変調は搬送波の周波数を変化させることで,情報を高周波信号に載せ(変調)て伝送します.FM受信機では受信した高周波信号の周波数情報をなんらかの方法で検出する必要があります.CORDICは比較的単純な座標変換を連続して行い,その際の座標変換ごとの回転角が既知であることを利用する巧妙なアルゴリズムです.直交座標から極座標への変換や,その逆に角度を与えて三角関数の値を求めるなどの使い方ができます.

 今回は,ベースバンドに変換された受信信号の位相情報を,CORDICのアルゴリズムを用いて計算し,その位相情報(位相検波出力)の時間的な変化率を周波数情報として求めることで,FM復調を行います.

 図20はCORDICの計算を行う時の基本的な座標変換の様子を示したものです.この座標変換では,現在の座標の値の2のべき乗分の1を加減算するという簡単な計算だけが必要となりますので,演算の負荷やリソースは小さくてすみ,高速な動作が期待できます.座標変換ごとの回転角は単純な値ではありませんが,あらかじめ計算しておくことができます.その値の格納に大きな容量は必要ないのでHDLの中のコードに直接,値を記述しています.



[図20] CORDICによる座標変換とベクトルの回転
同じCORDICの基本処理を,直交座標から座標軸への変換と,その逆である角度から三角関数の計算に用いることができる.

 CORDICの計算を行う基本の処理は,直交座標→極座標の変換,あるいは逆の,角度→三角関数値の変換,どちらでも共通に使えます.そこで今回は,FM復調で使うCORDICと,ステレオ復調器のパイロット信号の発生で使う,NCO用のCORDICを一つにまとめるよう工夫してみました(bcordic18.vhd).CORDICは信号のサンプリング周波数としては384kHzで動作していて,この後,位相情報の差分を計算してFM復調を行います.FM変調の変調度の深さを表す周波数偏移としては最大で±192kHzまで対応できます(pmfmcv.vhd).

● 差分と微分の補正

 CORDICで求めた信号の位相情報を時間微分することで周波数情報が得られるなら,FM復調を行うことができるはずですが,実は一つ問題があります.それは,単純にサンプリング周期ごとに位相データの「差」を計算しただけでは,単に「差分」を求めたに過ぎず,十分微小な時間間隔で信号の傾きを計算する「微分」の処理とは厳密には異なってくるという問題です.このため,変調信号の周波数が高くなると,FM復調後の信号の振幅が減少する「アパーチャ効果」が現れます.

 図21は受信機全体をHDLシミュレーションして,FM復調の周波数特性をグラフにしたものです.シミュレーション結果はSINC関数として現れるアパーチャ効果の計算結果の値とよく一致しています.音声信号の帯域(15kHz以下)ではこのアパーチャ効果の影響は大きくありませんが,ステレオ信号の差信号(L-R信号)の含まれる周波数帯域(23kHz~53kHz)における復調感度の低下は,ステレオ分離度の低下を引き起こしますのでなんらかの補正が必要です.



[図21] FM復調回路の周波数特性
「微分」を「差分」で代用したことで生じるアパーチャ効果による,高い周波数でのゲインの低下.

 図22はこのアパーチャ効果を補正するために用意したイコライザ回路です.簡単な移動平均型のLPFの出力を入力信号から差し引くことで,高い周波数をブーストするようにしています.補正後の周波数特性は図21の点線で示してあります(eqcomp.vhd).アパーチャ効果の補正が終了した復調信号は,カットオフ周波数がFs/4であるローパス・フィルタを通し,Fs=192kHzの最終的なFM復調出力とします.図23はこのローパス・フィルタの周波数特性です(fir192.vhd).



[図22] アパーチャ効果を補正するために用意したイコライザ回路移動平均方LPFを利用した高域周波数の強調.


 



[図23] FM復調出力のローパス・フィルタの周波数特性
188タップのFIRフィルタとして構成.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日