FPGAによる入出力回路の製作


概要

 FPGAを用いて、簡単な入出力回路を製作する。

製作する回路の概要

製作する回路の概要


方法

  1. アドレスデコーダ実験システムのバス などを復習しておきましょう。
  2. ノートパソコン, CPUボード, FPGAボードを接続する
    必要ならば、ロジックアナライザを使用してもよい。
  3. アドレスマップの作成
    実験用回路のアドレスマップ を参考に、作成する回路のアドレスマップを作成する。 FPGAボード上のI/Oデバイスは、 I/Oアドレスが0x8200〜0x82FFの範囲を使用できる。 FPGAボード上のメモリは、 メモリアドレスが0x80800〜0x808FFの範囲を使用できる。 上記範囲の任意のアドレスに、 LED、押しボタンスイッチ、7セグメントLED表示器、 RAM等を配置する。
  4. サンプルプロジェクトのコピー
    「all-pins」プロジェクトを コピーする。 入出力ピンの名称と用途はFPGAのピンを参照。 ロジックアナライザ用のピンとアナログボード用のピンは、 任意の用途に変更しても良い。
  5. サンプルプロジェクトの加工
    1. 使用しない出力ピンは回路図から削除する
      削除しないと、コンパイル時にエラーになる。
    2. CPUボードのデータバスcpu_ad0〜cpu_ad7に3状態バッファtriを接続する
      3状態バッファtriの出力端子をデータバスに接続する。 接続しておかないと、コンパイル時にエラーになる。 まず最初に、下図のように配線しておくとよい。
      Empty Databus
      空のデータバス

    3. CPUボードのアドレスバスcpu_a0〜cpu_a8は残しておくこと
      未使用であっても削除してはならない。 削除すると、回路をダウンロードした直後にCPUボードが停止するようになる。
  6. アドレスデコーダの作成
    アドレスバス, MCS, PCS等を入力して、 アクセスしようとするメモリやI/Oデバイスを選択する信号を出力する 回路を作成する。 PCSはI/Oアドレスが0x8200〜0x82FFの範囲であれば低レベルになる。 MCSはメモリアドレスが0x80800〜0x808FFの範囲であれば低レベルになる。 これを利用すると、アドレスバスのうちA0〜A7のみを使用すれば、 上記範囲にある任意のアドレスを選択できる。
    アドレスデコーダの作成には、 回路図エディタを用いても良いし、 ハードウエア記述言語 (HDL) を使用しても良い。 HDLを使用する場合には、 真理値表が利用できる。
    アドレスデコーダ単体で動作確認をする場合には、 アドレスバス, 制御信号 (RD, WR, MCS, PCS), アドレスデコーダの出力を ロジックアナライザ用のピンに接続しておく。 アドレスデコーダの出力用のピンは、 空いているピン (例えばロジックアナライザのデータバスla_ad0〜la_ad7) を転用する。
  7. アドレスデコーダの動作確認 (飛ばして先に進んでも良い)
    アドレスマップに記載されているアドレスを 順にアクセスするプログラムを作成する。 ロジックアナライザでアドレスバス、制御信号、アドレスデコーダ出力を観測する。
  8. LED表示回路の作成
    D-FFに書き込んだデータを用いてLEDを点灯させる。 D-Flip Flop with Enable を使うと良い。 アドレスデコーダの出力でena信号をアクティブにして、 WR (Write Storobe) の立ち上がりでcklを立ち上げる。 通常のD-Flip Flopでは、 簡単な制御回路が必要になる。
    LED表示回路の考え方

    LED表示回路の考え方

  9. LED表示回路の動作確認
  10. スイッチ入力回路の作成
    データバスにデータを送る回路の出力には、 3状態バッファを使用する。 3状態バッファの出力をデータバスに接続する。 データバスにデータを送る時に、 3状態バッファのOutput Enableをアクティブにする。
    スイッチ入力回路の考え方

    スイッチ入力回路の考え方

  11. スイッチ入力回路の動作確認
    スイッチで入力した値をLEDに表示させれば良い。
  12. 7セグメントLED表示回路の作成 (余裕があれば)
    FPGAによる回路の製作で作成した表示回路と D-FFを組み合わせる。
  13. 7セグメントLED表示回路の動作確認 (余裕があれば)
  14. RAM (さらに余裕があれば)
    RAMを参考に。
  15. RAMの動作確認 (さらに余裕があれば)
    書き込んだデータがそのまま読み出せれば良い。

(作成: 2003年9月26日, 最終更新: 2004年9月29日)