FPGA (Field Programmable Gate Array) による

デジタル方式 FMステレオ・チューナ

Mar.20, 2012 受信帯域幅、出力レベルの調整が可能な新バージョンをリリースしました。

Apr.22, 2012 表面実装部品(SMD)実装済みの基板を用意しました。

Xilinx社のFPGA、Spartan6を搭載したモジュール(XP68-01)を使ったもの。

 

★ FPGA で FM チューナを作る!

FPGA (Field Programmable Gate Array) を使うことで大規模なデジタル回路を IC の上にただちに実装して、あたかも専用の IC(ASIC) を作ってそれを自由に使うようなことが簡単にできるようになりました。ここで紹介するFMステレオ・チューナはそのFPGAにデジタル信号処理エンジンを実装して、気に入った放送局 1局専用のFMステレオ・チューナを実現したものです。

このFMチューナでは、アンテナ端子から入ってきた高周波信号を最低限の増幅を行ったのち、VHF帯の周波数のまま A-Dコンバータによってデジタル信号(サンプリング周波数:73.728MHz)に変換し、それ以降のすべての信号処理をデジタル信号処理によって行います。(ダイレクト・サンプリング方式、あるいはDDC:Digital Down Conversion 方式と呼びます。)FPGA上のデジタル信号処理ではまず、発振器(NCO:Numerically Controlled Oscillator)で生成した、受信周波数と同じ周波数を持った2相の局部発振とを乗算することで、受信信号を0Hzを中心とするI、Q 2系統の信号に変換し、以降、必要な受信帯域幅を確保しながらサンプリング周波数を落としていきます。(デシメーション:今回は768kHzまで)FM復調(周波数弁別)はCORDICという、三角関数を求める古くからあるアルゴリズムをFPGAに実装して、信号の位相を計算したのち、その時間的変化率をもって周波数情報を得ることで実現しています。

ステレオ信号を復調するためには、19kHzのパイロット信号をもとに、送信側に正確にロックした19kHz、38kHzの信号を生成する必要があります。このチューナではデジタル回路で実現したデジタルPLLを使い、正弦波の38kHzを生成してFM復調出力と乗算することでL−R信号を復元しステレオ信号(L、R)を復調します。(スイッチング方式ではなく、マトリクス方式)最終的にステレオの音声信号に復調された出力は、デジタル・オーディオ・インターフェースであるS/PDIFの光出力として、48k サンプル/秒、20 ビットのデータで出力されます。また、ボード上にもD-Aコンバータ(192k/96k サンプル/秒、20 ビットで動作)を搭載しているので、アナログ出力をRCAジャックに得ることもできます。

デジタル信号処理を用いることにより、遅延平坦に近い受信帯域特性を実現できること、CORDICによる位相計算からひずみの無い理想的なFM復調回路を実現できること、38kHzサブキャリアを正弦波で生成し、理想に近いステレオ復調を行なえること等、アナログ方式では実現が困難だった数々の信号処理の「理想」をFPGA上に実装し、高い性能、高音質を狙った意欲的な実験機かつ実用機に仕上がっています。感度、選択度の面でも、SDRのアプローチを活かすことで、市販の高級FMチューナと比べ遜色ありません。

回路の詳しい解説は、CQ出版社 ディジタル・デザイン・テクノロジ(DDT)誌、創刊号(2009年4月10日発売)の10章、及び、トランジスタ技術 2009年12月号(2009年11月10日発売)の「ディジタルFMチューナ向けアナログ・フロントエンドの製作」をご覧ください。(DDT誌の記事につきましてはネット上で記事の全文を閲覧することもできます。)FPGAボードとしてはこれまで、このDDT誌、創刊号の付属FPGA基板でLattice社のLFXP2-5E というFPGAが搭載されたものを使ってきましたが、バックナンバーとしてDDT誌の創刊号を入手することもそろそろ難しくなってきましたので、今回、ヒューマンデータ社の製品でXilinx社、Altera社のFPGAが搭載された、 PLCC68ピンパッケージの大きさのモジュールを使うようにしました。

DDT誌の付属FPGA基板を使った作例 (NSのADC14C080をA-Dコンバータに使用)

ヒューマンデータ社のPLCC68ピンモジュール(AP68-03:Altera社 CycloneIII搭載)を使った作例

QFNパッケージのA-Dコンバータの周辺

★ 基板頒布に関して

プリント基板、クロック生成用の水晶発振器については、これらをセットにして「キット」として頒布しています。DDT誌の記事ではA-DコンバータとしてMAXIM社 MAX12554を用いましたが、現在頒布中の基板は、NS社 ADC14C080用を用いる基板です。(4,000円 送料込み) ご希望の方は下記のメールアドレスまでお問い合わせください。

製作上、もっとも難しいのはQFNパッケージで提供されるADコンバータの基板への実装です。とは言っても基板ランドへの位置合わせ、テープによる固定をしっかり行なえば、手付けのハンダ付けもそれほど困難ではありません。セミナーの資料 後半に具体的な手順、注意点を含め筆者の経験を記しましたので参考にしてください。

左がPLCC68ピンモジュールを使用するもの。右は従来のDDT誌の付属基板を使うもの。(今後も頒布、サポートを継続。)

★ 表面実装部品(SMD)実装済みの基板を用意しました

今回、基板製造会社にお願いして、表面実装部品の実装をやってもらいました。少々、費用がかかりましたが、この後、スルーホール部品、コネクタ類を実装すれば基板として完成します。(作業時間、1時間程度。)頒価は19,000円(送料込み)で、これにはスルーホール部品、コネクタ類、スペーサ等、完成に必要な部品(写真左)をすべてを含んでいます。DDT誌のLattice FPGA基板用、ヒューマンデータ社のPLCC68ピンFPGAモジュール用、両方の実装基板の用意があります。手持ちの部品、お好みの部品が使いたい等の理由で、スルーホール部品、コネクタ類を含まない、表面実装部品実装済みの基板だけが欲しい、という場合はご相談ください。

写真はPLCC68ピンモジュール用の例。DDT誌付属基板用も用意できます。

★ 最新の設計データベース

このFPGA FMチューナは記事の執筆以来、筆者の常用 FMチューナとしてFM放送の高音質受信、エアチェック(古い言葉?)に活躍していますが、その日々の実用の中で少しずつ、設計の改善を行なってきました。これまでに DIP SWによる4つの受信周波数の選択機能(RF部の同調が固定ですので本来は1局専用のチューナですが、3MHz程度の範囲内であれば、受信周波数可変の実用性はあります。)AFC機能、強制モノラル機能を追加してきました。

今回のリリースでは、ユーザの方のご要望もあり、復調出力レベルの可変機能(16段階、9.2dB)受信帯域特性の大幅な改善、4種の帯域幅選択機能の追加を行いました。さらに PCM1781をDACとして搭載している基板に関しては、DACとのインタフェースのサンプリング周波数を192kHzまで高めるようにしました。(これまでは96kHz)詳しい内容に関しては以下の説明、あるいは各設計データを参照ください。

以下は現時点における最新の設計データです。基板のリビジョン、使用FPGAによって現在5種類のデータがあります。お持ちの基板に合わせてご利用ください。いずれのデータも最近のバージョンの設計環境で作成されていて、Lattcie社の設計環境は DIAMOND 1.4.1  Xilinx社の設計環境は ISE 13.4、Altera社の設計環境は QuartusII 11.1sp1 (いずれもWebエディション)で生成、動作確認してあります。セミナー、フォーラム等で基板をご購入いただいた方は、ZIPアーカイブのパスワードをお伝えしていない場合もありますので、その場合はお手数ですがメールにてパスワードをリクエストしてください。

     FM_Tuner_MX_r16.zip  (MAXIMのADコンバータを使う基板r1.0用)
     FM_Tuner_NS_r16.zip  (NSのADコンバータを使う基板r1.0-1.1用)
     FM_Tuner_NS_r22.zip  (NSのADコンバータを使う基板r2.0用)
     FM_Tuner_Hu68_r31x.zip  (ヒューマンデータ社のFPGAモジュール:XP68-01を使う基板r3.0用)
     FM_Tuner_Hu68_r31a.zip  (ヒューマンデータ社のFPGAモジュール:AP68-03を使う基板r3.0用)

★ 受信帯域特性の改善と、帯域幅選択機能について

この FPGA FM チューナでは受信帯域特性の大部分を、第1デシメージョン(1/16)のCICフィルタの後に続く第2デシメージョン(1/6)用FIRフィルタによって得ています。この部分におけるサンプリング周波数は4.608MHzであり、これまで使用してきた96タップのFIRフィルタで得られる選択度では少々不満が残ります。

これまでの受信帯域特性。隣接500kHz局の分離はできるが、さらに近接した局があれば混信してしまう。

今回のリリースではPLLによって2倍の周波数のクロック(147.456MHz)を生成してFIRフィルタを倍速で運転し、192タップのFIRフィルタを実現しました。フィルタの特性は係数ROMに格納した4種類の係数セットにより、#0 から#3 までの4種類から選ぶことができます。 #1 が400 kHz離れた周波数に別の局が存在することを想定した400kHz分離用の特性、#3 が300 kHz離れた周波数の局を分離する 300kHz分離用の特性となります。

#1がWIDE設定(400kHz局分離)、#3がNARROW設定(300kHz局分離)。

フィルタの特性により復調出力のひずみ率は影響を受けます。下の表はLチャンネルだけを変調した場合と、LチャンネルとRチャンネルを逆相(L=−R)で変調した場合の2つの場合について、フィルタ特性を換えながらLチャンネル出力のひずみ率を測定したものです。側波帯成分が増えるL =−Rの条件において300 kHz分離用の狭帯域の特性でもひずみ率は0.15%程度にとどまり、十分な実用レベルにあります。#1と#0ではひずみ率に有意な差はなく、今回は#1をデフォルト特性としました。

フィルタ設定とひずみ率の関係(実測値)

4種類のフィルタ特性を選択するための2ビットの制御入力は、出力レベル調整のビットと合わせ、AUX1のピンヘッダに出してあります。

★ 出力レベル調整と許容最大周波数偏移について

FM放送局に許される最大周波数偏移=「FM変調の深さ」は75kHzとなっていますが、WAVファイルでデジタルデータのままエアチェックをするようになると、放送局によって変調の深さはかなり違うことに気が付きます。これまでは、東京タワーから送信されるNHK-FMの変調に合わせ、最大周波数偏移として192kHzまで対応できるよう、CORDICを768kHzで運転したのち±50%でサチュレーション処理し、その後ディエンファシス処理時に1.375倍のスケーリングを施してきました。これは、低域の周波数においては最大で139.6kHzの周波数偏移に対応していることになります。(高域ではディエンファシスのLP特性により、許容最大周波数偏移は192kHzに近づいていく。)民放局では、よりピークを押さえた送出になっていることが普通で、出力レベルをもう少し上げて欲しい(=周波数偏移は小さくて良い)という要望も多く、一方では逆に、測定器としても使うので 200kHz程度までは対応して欲しいというご要望もありました。

今回はMPX処理部のディエンファシスの後のスケーリングにおいて、1.0 + 0.125×n (n=0〜15)の範囲で16段階の設定を選ぶことができるようにしています。出力レベルの調整として見るなら 9.2dBの範囲で調整できることになります。4ビットの設定入力に対する最大許容周波数偏移は以下の表になります。

16段階の出力レベル調整=許容最大周波数周波数偏移 設定

LatticeのFPGA基板を使うFMチューナ基板では、これら4ビットの設定入力(weak pull-up付)は、受信帯域幅選択の2ビットと同様、ピンヘッダのピンにアサインしてあり、その隣接のピンをロジックL出力としてありますので、ピンヘッダにジャンパピンを挿すことで設定できます。ヒューマンデータ社のPLCC68ピンモジュールを使うFMチューナ基板では、ピン数の関係でジャンパピンによる設定はあきらめ、外部にSW接点を置くことを想定しています。これら具体的なピンのアサインは、設計データの中にある、出力レベル_BW調整.pdf を参照ください。

★ 受信性能の測定結果例

現在、頒布中のNSのADコンバータを使った作例での、ひずみ率、SN比、セパレーションの測定結果 の例です。(82.5MHzにRF部を調整したもの。)

@ Lchのみ1kHz(984Hz)で 100%変調(パイロット分があるのでデビエーション67.5kHz)した60dBuV-EMFをアンテナ入力に与えたときのLch出力のFFT解析結果。1kHzのレベルは-6.55dBFS。高調波ひずみはほぼ皆無(THD:0.0012%)であるが、1kHzと高調波関係にない成分がFM変調の非線形性、MPX処理の折り返し等が原因で発生する。(THD+N:0.035%)パイロットリークは-110dB程度まで抑圧できている。
A ステレオ時の無変調の状態(パイロット信号は変調)でのノイズレベルを測定したもの。アンテナ入力レベル:60dBuV-EMF。ノイズのRMSパワーは-78.05dBFSであり、@の1kHzのレベルと比較してSN比を求めるなら71.5dBであるが、@のTHD+N:0.035%をもとにSN比を計算する方が実際の信号を復調している時のダイナミックな特性を反映したSN比と言える。この場合は69.2dBのSN比。通常、アンテナからのRF出力は60dBuV以上確保できることが多くこのSN比は実用状態での下限。
B Rchのみ1kHz で100%変調し、Lchへの漏洩を測定したもの。Lchのレベルは-77.12dBFS であり@の1kHzのレベルと比較してセパレーションを評価するなら70.6dB。漏洩信号に顕著な高調波ひずみを伴っていないこと、19kHzのパイロットリークに1kHzの側波帯成分が発生しないことはアナログチューナの様相とかなり異なる。

★ FCZコイル/トスリンクについて

長らくお世話になったFCZコイルですが、昨年の5月をもって製造中止となり、そろそろ流通在庫も底をついてきました。7mm角の可変コイルとして秋葉原の千石電商で扱っているAMZコイル(80Mと表記のあるもの)を試したところ、問題なく使用できます。無負荷Qは80前後と、70前後だったFCZコイルに較べやや良く、BPFを構成した時のロスもやや少ないようです。トスリンクのTOTX147/177に関しても入手が難しくなっていますが、EVERLIGHT社のPLT133/T10(DigiKey)が基板のフットプリントが同一の代用品となります。

左がこれまでのFCZコイルを使った時のアンテナ端子からADC入力までの伝送特性。右はAMZコイルで代用した場合。(20dBのATT込みの特性)

★ サポートについて

希望の受信周波数に調整した完成基板を用意できることがあります。下記のメールアドレスまでご相談ください。DDT誌の付属FPGA基板、あるいはヒューマンデータ社のFPGAモジュール(XP68-01、03またはAP68-03、04)をご用意いただく必要があります。

その他、キット製作上の問題、不明な点、特性の評価に関すること、FPGAの書き込み、製作途中で挫折しそうなのでHELP! 等々、完成に到るまで可能な限りサポートさせていただきます。また、過去に基板と水晶発振器のセット、あるいは部品キットを購入された方で、まだ製作する時間がなく、実装済みの基板があるならそちらが欲しいという方はご連絡ください。

現在ビットファイルをFPGAにダウンロードする環境をお持ちではなく、ご使用中の基板で最新の設計データへ更新したい方もご連絡ください。お手伝いいたします。

林 輝彦 / JA2SVZ    E-mail:  thayashi@ta2.so-net.ne.jp