FPGA tuner 専用コントローラの製作

概要



専用コントローラ用 PIC16F886 チップの領布について

  1. hex オブジェクトを公開しています

  2. プログラム書き込み済み PIC16F886 チップの領布もします



ハードウェア仕様

  1. ハードウェアは 秋月電子通商 の PIC マイコン赤外線リモコン学習キット をそのまま使います。

  2. FPGA tuner のコントローラとして必要なハードウェア機能が搭載されています。

  3. FPGA tuner と接続するにはオプションの選択に若干の注意が必要です。 以下の記述はコントローラと FPGA tuner を直結する場合であって、一番最後にある「朗報かもしれない情報」のように整合回路を付加するのであれば、5V で動作させても構いません。 むしろ 5V 動作の LCD のほうが見やすいし、FPGA tuner と電源を共有できるので、5V 動作させるほうがお奨めです。

  4. ハードウェアはそのまま使えますが、PIC16F886 の制御プログラムは書き換える必要があります。



ソフトウェア仕様

  1. 通常モード

    普通に電源 ON した時にこのモードになる。

  2. スペシャルモード

    1. リモコンコード送信

      [<<] [W/N] キーの2つを押しながら電源 ON した時にこのモードになる。

      • LCD 表示

        1. LCD に以下の情報を表示する。
          
          +------------------+
          |   Send IR code   |
          |      key **      |
          +------------------+
                     **      : (1) Key No.
          
        2. 表示情報の説明

          No. 表示項目 説明
          1 Key No. 最初は [**] と表示されているが、キーを押すとそのキーコード (00~15) を表示する。

      • 操作方法

        No. 操作項目 操作説明
        1 概要 (1) このモードは学習リモコンを FPGA tuner リモコンとして使う想定の機能である。
        (2) コントローラの各キーに対応したリモコンコードをコントローラから発信する。
        (3) リモコンコードは NEC フォーマットとし、キーコードとリモコンコードの対比は以下である。
           00 : [123400FFh] ~ 15 : [12340FF0h]
        (4) このモードではリモコンからの操作を禁止している。
        2 使いかた (1) 電源 ON 時に本スペシャルモードを起動する。
        (2) 各キーを押すと、そのリモコンコードが発信されるので、これを学習リモコンに記憶させる。
        (3) 電源 OFF → ON して [通常モード] に戻す。
        (4) これ以降、学習リモコンから FPGA tuner を操作できる。

    2. S/PDIF サンプリング周波数設定

      [<] [W/N] キーの2つを押しながら電源 ON した時にこのモードになる。

      • LCD 表示

        1. LCD に以下を表示する。
          
          +------------------+
          | S/PDIF Rate(kHz) |
          | [<] 192 [>][MEM] |
          +------------------+
                ***          : (1) サンプリング周波数
          
        2. 表示情報の説明

          No. 表示項目 説明
          1 サンプリング周波数 最初は現在のサンプリング周波数が表示されているが、[<] [>] キーを押すことで 48, 96, 192 のいずれかに変わる。

      • 操作方法

        No. 操作項目 操作説明
        1 概要 (1) S/PDIF のサンプリング周波数を 48kHz, 96kHz, 192kHz のいずれかに設定する。
        (2) このモードではリモコンからの操作を禁止している。
        2 使いかた (1) 本モードになると、現在のサンプリング周波数が表示される。
        (2) [<] キーを押すとサンプリング周波数が低くなる。最小 48 まで。
        (3) [>] キーを押すとサンプリング周波数が高くなる。最大 192 まで。
        (4) [MEM] キーを押すとサンプリング周波数がコントローラに記憶され、通常モードになる。

    3. UART ボーレート補正

      [>>] [W/N] キーの2つを押しながら電源 ON した時にこのモードになる。

      • LCD 表示

        1. LCD に以下を表示する。
          
          +------------------+
          | Baud Rate Adjust |
          | [<] -11 [>][MEM] |
          +------------------+
                ***          : (1) 補正値
          
        2. 表示情報の説明

          No. 表示項目 説明
          1 補正値 最初は現在の補正値が表示されているが、[<] [>] キーを押すことで -16~+15 に変わる。

      • 操作方法

        No. 操作項目 操作説明
        1 概要 (1) 本コントローラでは PIC16F886 内蔵クロックを用いて 115.2kbps のボーレートを得ている。
        (2) 内蔵クロックの発振周波数を 7.3728MHz 近辺に設定すると正しいボーレートとなる。
        (3) 内蔵クロックの発振周波数は PIC16F886 の個体差や周囲温度で若干ズレる可能性がある。
        (4) 本機能は内蔵クロックの発振周波数を補正することを目的とする。
        (5) 補正値は -16~+15 を設定でき、マイナス側は発振周波数が下がる方向、プラス側は上がる方向である。
        (6) 内蔵クロックの基本発振周波数は 8MHz で、これは補正値 00 の時である。これを中心として±12% 程度の補正が可能である。
        (7) 補正値 -11 とすると、ほぼ全ての PIC16F886 で 7.3728MHz 近辺に設定できる。
        (8) このモードではリモコンからの操作を禁止している。
        2 使いかた (1) 本モードになると、現在の補正値 (通常は -11) が表示される。
        (2) [<] キーを押すと補正値がデクリメントされる。最小 -16 まで。
        (3) [>] キーを押すと補正値がインクリメントされる。最大 +15 まで。
        (4) [MEM] キーを押すと補正値がコントローラに記憶され、通常モードになる。

  3. PIC16F886 内蔵 EEPROM のデータテーブル仕様


  4. ソフトウェアリリース履歴

  5. 将来追加(するかもしれない)機能

    1. プログラム受信機能

      • 機能概要

        1. あらかじめ、最大4つのプリセット放送局をプログラム登録する。
        2. 電源 ON ごとに、プログラムしたプリセット放送局を順に受信する。
        3. 1プログラム実行するごとに、実行済みプログラムを消去する。 (プログラムシフト)
        4. プログラムが全部実行された後の電源 ON では通常モードに戻り、イニシャルステーションを受信する。

      • 要検討事項

        1. プログラミングするユーザインタフェースの仕様検討と実装

    2. スキャンサーチ機能

      • 機能概要

        1. [<] または [>] キー長押しで周波数スキャンを開始する。
        2. 放送局が見つかると、そこでスキャン動作を停止する。

      • 要検討事項

        1. 据え置きが前提のチューナでは、この機能が本当に必要かどうか疑問
        2. 長押し検知のアルゴリズムの仕様検討と実装



接続仕様

  1. コントローラと FPGA tuner は右のように TX/RX をタスキ掛けに接続します。 GND と合わせて3本接続するだけです。

  2. 図のコントーラ側の信号は全て [J2] 端子に出ています。

  3. FPGA tuner 側の信号は基板のタイプで違うと思うので、お調べください。 我が家の FPGA tuner では [AUX1] 端子となっていました。



朗報かもしれない情報

  1. FPGA tuner 設計者の林さまから情報をいただきました

  2. コントローラを 5V 動作させる

  3. ノイズ対策