Computer & RF Technology

CentSDRでFMラジオが受信できるようになりました

CentSDRでFM放送を受信することができるようになりました。コーデックを192kHzで動作させることにより、150kHz程度の帯域幅のあるFM放送をカバーし、復調できています。この写真は82.5MHzの放送を受信している様子です。広がった放送波のスペクトラムがカバーされているのがわかります。

image

FM放送は150kHz程度の帯域幅があるので、もともとfs=48kHzで動作させているCentSDRでは、FM放送は当初は対象外と考えていました。

一方、TLV320AIC3204のチップそのものは192kHz動作をサポートしており、いつかは実験してみたいと思っていました。そのときの想定ではADCは192kHzで動作させて広い帯域幅を利用し、他方オーディオの再生では高いサンプリング周波数は無駄なので、DACは48kHzで動作させることを考えていました。すなわち信号処理において復調処理の過程でダウンサンプリングも行う、すなわちマルチレート処理とするのが、まっとうなプランと考えていました。そのためには若干回路側に改良が必要で、次の版で実験する想定でした。

ところが、いろいろと実験をしていると、HF帯域の中に、邪魔な幅広いノイズが散見されます。その原因がFM放送でした。というのもアナログスイッチをミキサーとして使用している原理上、奇数倍の周波数に感度を持ちます。たとえば、82.5MHzの放送であれば、その1/3である27.5MHzにチューニングすることで信号が入ります。FMモードの復調は実装済みだったので、チューニングしてみると、ほとんどノイズですが、たまに音声がわかるという感じでした。

このノイズだらけの音を聞いていたら、マルチレートの実装にしなくても、全体をえいやっと192kHzで動作させてしまえばイケるかも、と思いついてしばらく試行錯誤してみました。

その過程でわかったのは、TLV320AIC3204はADCを192kHz動作させたとしても、チップの想定する仕様では、デシメーションフィルタの特性で帯域が制限されてしまうということでした。デシメーションフィルタはA,B,Cの3種類用意されており、192Hz動作ではCを選択することが想定されているようです。Cのフィルタは下記のように0.2 x fsの通過帯域しかなく、192kHzで動作させたとしても帯域は±38kHzが上限となってしまいます。

image

音声アプリケーションであればこれは望ましい特性かもしれませんが、SDRとしてはせっかく192kHzで動作させている意味がありません。

こちらは48kHz、96kHzのときに選べるタイプA、タイプBのフィルタ特性です。理論いっぱいの0.5 x fsまで応答があるのがわかります。

image

image

これがわかって、FM放送受信は半ばあきらめかけたのですが、往生際悪くしばらく、オーバーサンプリングの分周比や、DAC側のデシメーションの負荷を下げるための設定パターンなど、いろいろと試行錯誤してみたところ、なんと192kHz動作で広帯域の応答が得られる設定を見つけることができました。使えるフィルタはBタイプです。

これで動かしてみたところ、ちゃんとFM放送がそれなりに受信することができるようになりました。下の動画ではちゃんと音になっているのがわかります。(まだデエンファシスは入っていないため高音がかなり強調された状態です)

192kHzサンプリング動くようになった pic.twitter.com/NYS5LZ1HV3

— TT@北海道 (@edy555) 2018年1月29日

その後、実装の調整をいろいろしており、かなり改善できたと思います。スペクトラムの表示は30fps近く出ており、音楽に合わせてダイナミックにスペクトラムが飛び跳ねるのは、飽きずいくらでも眺めていられます。

ステレオの再生にもチャレンジしています。実装はLPC-Link2でやったFM受信機からの流用です。すこし調整が必要でしたが、パイロット信号のPLLを動作させることができ、一応ステレオにはなりました。が、ノイズが著しく増えてしまいます。原因ですが、おそらく受信帯域の特性がフラットではなく、両側が丸くなだらかに下がっていることがわかっており。このあたりに含まれる副搬送波38kHz付近の成分が劣化しているのだと予想しています。この肩の減衰を補償する処理を追加することを考えています。なんとか、まともなステレオ再生を実現したいと思っています。

もう一つ問題があります。動作中にサンプリングレートを切り替えると、I2SとDMAの関係か、どこかでデータがずれるらしく、IQがひっくり返ったり(症状としては、逆サイドが対称に出たり左右逆になったりする)、バイトがずれるのか全く音にならなくなったりします。何度か切り替えると正常になったりします。これもうまい制御がないか、方法をさぐっているのですが、まだ解が見つかっていません。

もうひとつ本質的な限界は、0Hzの穴です。受信帯域の中央に十数Hz幅の穴が空いており、これがノイズや歪みの原因になります。なので決して高音質にはなりませんので、あくまで実験としてご理解ください。

ところで本日は関西ハムフェスティバルが開催されたそうで、今回キットにチャレンジしていただいたPUPさん、北神電子サービスさん、JL1VNQさんがCentSDRを展示してくださったとのことです。来場者の方で興味を持ってくださった方がいらっしゃったとのことで、ありがたい限りです。貴重な機会をCentSDRに割いていただいたことに御礼申し上げます。

リンク

comments powered by Disqus