FPGA FM Stereo Tuner

FPGA FM Stereo Tuner をゲット!

2012年6月23日、 FPGA FM Stereo Tuner の組み立てが完了しました。

林輝彦さん設計の FM 専用 DSP チューナ です。 (DSP : Digital Signal Processor)

[DC (ZeroIF)] [DDC] [DSP Detector] [DSP MPX] と、現在考えられる 最高水準の FM 専用チューナ です。 (DC : Direct Conversion, DDC : Digital Down Conversion)

技術的に Accuphase T-1100 (定価33万円) を超えているかも。

FPGA へのデータ書き込みは専用ケーブルが必要など敷居が高いです。 これについては林さんが相談にのってくれます。 私は林さんに FPGA への書き込みをお願いしてしまいました。 あくまでも林さんのご厚意なので、失礼の無いようにしましょう。



FPGA とは

  1. 大規模集積回路である LSI には大きく分類して ASIC と FPGA があります。 ASIC はカスタム LSI で、内部ロジックを決定してしまうと変更できません。 FPGA はプログラマブル LSI で、内部ロジックを何度でも自在に書き換えできます。 (LSI : Large Scale Integration, ASIC : Application Specific Integrated Circuit, FPGA : Field Programmable Gate Array)

  2. こうであると FPGA のほうが ASIC より良いと言うことになります。 確かにそうなのですが、問題はコストなのです。 FPGA は通常1万円以上の単価ですが、ASIC は高いものでも数百円の単価です。 地デジチューナが特売で3千円程度で売られていますが、こういう安価な機器に FPGA を使うことはコスト面で不可能です。

  3. FPGA 内でロジックを決定するプログラム素子に SRAM が使われます。 SRAM は揮発性メモリですから電源消失するとロジックが消えてしまいます。 電源消失でロジックが消えてしまう LSI って笑い事ではないです。

  4. FPGA では電源消失の問題を解決するために、不揮発性メモリ (フラッシュメモリ) を搭載しています。 FPGA への電源供給開始時の最初の一瞬でフラッシュメモリから SRAM にプログラミングデータをコピーしてロジックを回復します。 これをコンフィグレーションと言います。

  5. FPGA をプログラミングすると言うことは、FPGA 内フラッシュメモリにプログラムデータを書き込むと同意です。



製作に必要なもの

  1. FPGA 基板

  2. FM チューナ基板と部品

  3. AC アダプタ



構成

  1. 右の図がチューナの論理構成図です。

  2. 右の図は MPX 部の論理構成です。

  3. 右の図は全体回路図です。

  4. 主な 使用 IC




調整

写真の FM/AM 標準信号発生器 Panasonic VP-8175A (以下 SSG)、 FM Stereo 信号発生器 MEGURO MSG-2170、 周波数カウンタ ADVANTEST TR5822 を使って調整します。

  

  1. 調整と言っても RF 同調部だけです。

  2. 私は 79.5/80.0/81.3/82.5MHz を受信するので、79.5〜82.5MHz のちょうど中間の 81.0MHz に同調させました。

    手順 SSG周波数 SSG出力 調整箇所 TP 及び調整値 備考
    1 81MHz 60dB
    変調 : OFF
    T101
    T102
    T103
    T104
    C114とT201の接続点波形 = 最大 オシロスコープで観測



使ってみました

  1. 外観

  2. 接続

  3. 受信周波数などの設定

  4. 受信帯域幅設定

  5. 許容最大周波数偏移設定

  6. [アナログ出力左右入れ替え] と [DAI (S/PDIF) サンプリング周波数設定]

  7. FM 受信

  8. ちょっとした改善提案



受信周波数変更の方法

  1. 受信周波数を変更するには FPGA 設計ソースを変更してコンパイルし、回路情報ファイル (.jed) を作成する必要があります。 本機では 受信周波数変更を可能にするため FPGA を使っている とも言えます。 受信周波数対応のソース変更について記述します。

  2. 埼玉県越谷対応の 79.5/80.0/81.3/82.5MHz が受信できる FPGA ソースは FM_Tuner_NS_r24_koshigaya.zip です。 FPGA への書込データはこの中にある FM_Tuner_NS_r24.jed です。

  3. 例として、79.5/80.0/81.3/82.5MHz 受信に対応する方法を述べます。

  4. 3項のようにすれば受信周波数を変更することができます。 Exel で 76.0〜108.0MHz 間での受信周波数定数表 を作成しました。 この表を見てソース変更します。 エンファシスが、日本では 50uS、アメリカでは 75uS と違うので海外バンドで使う時はディエンファシス時定数の変更も必要です。



ケースに入れました ・・・ ズボラ加工

  1. 使っていて、裸基板では電気的に心配、周波数切換が面倒と思うようになりました。 そこでケースを買ってきて手間暇を大幅に省力化した ズボラ加工 で基板をケースに実装しました。 ズボラなのでケース加工は約2時間です。

  2. フロントパネルです。

  3. リアパネルです。

  4. 見る角度を変えてみました。

  5. 内部の様子です。

  6. 基板の固定



Full Coverage FPGA FM Stereo Tuner 同様の改造を実施

  1. 2014年9月28日、 Full Coverage FPGA FM Stereo Tuner 同様の改造を実施しました。

  2. 改造により、ドキュメントが以下のように変わります。

  3. 改造による効果

  4. 改造後に使ってみました。



自分で FPGA へデータを書き込んでみたい

  1. FPGA へのデータ書き込みラインを JTAG と言います。 以下の4つの信号で FPGA とデータ入出力します。 (JTAG : Joint Test Action Group)

    信号名 信号の方向
    TDI (Test Data In) → FPGA
    TDO (Test Data Out) ← FPGA
    TCK (Test Clock) → FPGA
    TMS (Test Mode Select) → FPGA

  2. 上記の他に TRST (Test Reset) という信号がありますが、オプション扱いで、今回の FPGA (Lattice LFXP2-5E) にはありません。

  3. FPGA へデータを書き込むには Lattice LFXP2-5E では xxxxxxxx.jed というデータファイルを書き込みソフトを使って、パソコンから上記の JTAG ラインで送ればよいです。

  4. 書き込みソフトは Lattice 社提供で無償で使えるものがあり、パソコンとのインタフェース回路も公開されています。 ですから、インタフェース回路を自作すれば安上がりです。

    → 問題はこの公開されたインタフェース回路がパソコンのパラレルインタフェースを要求すること!

    今時のパソコンにはパラレルインタフェースが付いていませんよね ・・・

  5. そこで、 特殊電子回路株式会社J-Writer という JTAG プログラマを購入しました。 送料・税込で10,290円でした。

  6. 注意事項

  7. J-Writer での FPGA 書込方法

    1. 上記の注意事項をよく読んで FPGA 基板と J-Writer を接続し、プログラミング可能状態にします。 プログラミングソフトが正しくインストールされていることが前提です。

    2. コマンドプロンプトから jwriter -detect を実行します。 このコマンドは JTAG チェーン上のデバイスを検出します。 以下の実行例のように FPGA デバイス LFXP2-5E が検出されれば正常です。 このコマンドを何回か実施して、常に正しいデバイス検出がされることを確認します。 これが不安定であると FPGA 書込が失敗します。

        C:\Program Files\TokudenKairo\JWriter>jwriter -detect
        JWriter V1.09β (C)Copyright 2009-2010 TokushuDenshiKairo Inc.
        JWRITER Ver 1.01 に接続しました
        自動検出を実行しています
            1番目:LFXP2_5E_XXM132が検出され、デバイス名を自動設定しました
        
    3. いよいよ FPGA 書込です。 jwriter -auto xxxxxxxx.jed のように回路情報ファイル (.jed) を指定してコマンド発行します。 これで、消去・書込・ベリファイの一連の処理が実行されます。

    4. 何もエラーが出なかったら完了です。

  8. これで設計者の林さんから回路情報ファイル (.jed) をメール添付でいただくだけで、後は自分で FPGA 書き込みできるようになりました。



仕様その他

  1. FPGA ファームは、前半の記事では FM_Tuner_NS_r24_koshigaya.zip ですが、[Full Coverage FPGA FM Stereo Tuner] 同様の改造を実施後は FPGA tuner Configuration Data の74の数字が入ったファイルです。

  2. FM ステレオ・チューナの製作セミナー資料 も理解に役立ちます。

  3. [Full Coverage FPGA FM Stereo Tuner] 同様の改造前の仕様は以下です。 改造後は Full Coverage FPGA FM Stereo Tuner の記事を参考にしてください。

    項目 仕様
    受信周波数設定 @76.0〜90.0MHz のいずれか1周波数が標準 (RF 同調部が固定のため)
    ARF 同調周波数±1.5MHz の範囲内であれば実用受信範囲
    B受信周波数を4つまで設定可能 (従来型チューナのプリセット相当)
    受信帯域幅設定 以下の4設定が可能 (従来型チューナの IF Band 切換相当)
    @236kHz (Super Wide)
    A198kHz (Wide) ・・・ 隣接 400kHz 局分離用 [デフォールト設定]
    B162kHz (Half)
    C126kHz (Narrow) ・・・ 隣接 300kHz 局分離用
    許容最大周波数偏移設定 @192.0/170.7/153.6/139.6/128.0/118.2/109.7/102.4/96.0/90.4/85.3/80.8/76.8/73.1/69.8/66.8 kHz に設定可能
    A139.6kHz がデフォールト
    B出力レベルも同時に変わる
    S/N 比 (80dBf 入力, A 補正) 82dB
    高調波歪率 1kHz : 0.002%
    10kHz : 0.002%
    周波数特性 10〜15,000Hz +0 -0.2dB
    ステレオセパレーション 100Hz : 60dB
    1kHz : 60dB
    10kHz : 60dB
    キャリアリーク -110dB
    S/PDIF サンプリングレート 48/96/192kHz のいずれか/20bit
    アナログ音声出力 L/R ch. 入れ替え機能あり
    入出力端子 @アンテナ端子 (F 端子)
    A光デジタル音声出力 (S/PDIF)
    Bアナログ音声出力 (RCA ジャック×2)
    C電源入力ジャック (2.1mm、センタ+)
    電源 DC5V 450mA
    消費電力 2.25W 以下
    外形寸法 100(W)×100(H)×35(D)mm (突起部分を含まず)
    重量 117g
    初期設計時期 2009年4月
    製作費 21,580円 (FPGA 基板が付録の「CQ 出版 ディジタル・デザイン・テクノロジ No.1」と AC アダプタを含む)