FPGA FMチューナー

Ayumi's Lab.

2013年7月28日

FPGA FMチューナーフロント

(このドキュメントは作成中です)

遅ればせながら、林さんのFPGA FMチューナーを2012年の夏に見つけ、さっそく入手して聴いてみたところ、我が家のCATV経由の受信であっても、ほとんどノイズのない、生々しい良好な受信ができることがわかりました。

この高音質のソースをそのままエアチェックすべく、TASCAM DR-100MkIIを導入して、デジタル録音を行っていました。 DR-100MkIIのデジタル入力は同軸のみなので、74HC04をバッファとして1:1のパルストランスを駆動するアダプタを付加しました。 実際には、FPGAは最大で20mAまで出力することができるので、74HC04によるバッファは不要です。 ちなみに、林さんは、1:1ではなく、降圧型のトランスを使っていますが、そのほうがFPGAが駆動する電流が少なくて済むため、そのようなトランスを入手できるのであれば、そちらのほうがベターです。

しかしながら、DR-100MkIIはタイマー録音ができないため、1日中録音しっぱなしにしていますが、約2時間ごとに別のファイルになってしまい、一つの番組が2つのファイルに分かれてしまうため、編集が面倒です。 幸い、DR-100MkIIには赤外線によるリモートコントロールが可能で、デジタル入力とも併用できる(有線のリモコンとデジタル入力は併用不可)ので、マイクロプロセッサでタイマー機能を付加することにしました。

以下の機能を実装することにしました。

FPGA FMチューナー内部

MPUには、ルネサスのR8C/2Bを使った秋月電子のボードを使いました。 このMPUには1kバイト x 2のフラッシュメモリが付いていますが、リモコンの学習データが500バイト弱、放送局のデータやタイマーのデータで500バイト弱のデータ量になるため、それぞれ2回保存するごとにフラッシュメモリを消去することになります。 10,000回の消去を保障していますが、このままではデータが20,000回しか変更できないので、タイマーのデータは週リピートの年月日が変化しないようにして、ほとんどの場合データの保存が起きないようにしてあります。 (実はこの処理が災いして、1か月弱タイマーが時々動作しないという現象に悩まされました。)

MPUとFPGAの通信は、ピン数の関係からシリアル通信を行っていますが、FPGAの入力が敏感なのと、5V動作のMPUと3.3V動作のFPGAの間に入れた秋月電子の8ビット双方向ロジックレベル変換モジュールの駆動能力が低いこともあり、当初は正常に通信できませんでした。 林さんに相談にのっていただき、FPGA側に信号が安定するまで待つ判定回路を組み込むことにより回避できました。

電源は2組あり、MPUを常に動作させておくための常時通電の電源(5V 100mA)と、ソリッドステートリレーによりON/OFFされるFPGA用の5V 500mAで、両方ともLM317(相当)によるリップルリジェクションの高い電源としています。 整流にはショットキーバリアダイオードを使いましたが、FPGA側は手を触れられないほど発熱するので、暫定的にヒートシンクを付けています。 隣のコンデンサが加熱されているので、近い将来組み替えたいと思っています。 時計は停電時にも動作し続けるよう、CR2032でバックアップしています。

時計の自動修正は、音声のアナログ信号をR8CでA/D変換(fs=3520Hz)し、 離散コサイン変換で440Hzと880Hzの成分の大きさを検出しています。

ケースは、タカチのOS 70-26-23SSを使いました。 フロントパネルのLCD部分は見栄えに直結しますので、フロントパネルだけ加工してもらいました。

フロントパネルにある電源以外のスイッチは、ツマミの部分が長いタクトスイッチを使っています。 メーカー製のように押す部分にプラスチックの別部品を使えないので、安くかつあまり見栄えが悪くない方法として、よく使っています。

FPGA FMチューナー後部パネル

2月くらいにケースを注文したのですが、やっと完成にこぎつけました。 途中、CATVのFMの品質が急激に悪くなり、CATV会社にクレームを付けましたが、3か月くらいかかってようやく改善しましたが、それでも最良だった頃に比べるとまだまだのレベルです。 今更FMだけのためにアンテナを上げるのも考え物です。

あとは、フロントエンドを電圧制御にして、76MHz〜90MHzをカバーできれば、チューナーとして一人前になりますが、高周波の測定環境がないため、いつになることやら。

戻る