レトロマイコン86ボードの構想(その4)V20とPICのI/F確認 [8086]
前回の記事でPICからメモリに書込んだプログラムがV20で実行できることを確認できたので今回はPICとV20のインタフェース部の動作について確認しました。
前回書いたようにアセンブラはNASMを使っていますがマニュアルにはできるように書いてある
でのセグメント値の参照やセグメントの絶対アドレス指定の
でエラーやワーニングが発生したり、ORGを2カ所に書くとエラーになったりで悩みましたが、8086のメモリモデルとしてコードセグメントとデータセグメントを同じ値にするtinyモデルにし、データは EQUステートメントでアドレス指定することでPICとV20のインタフェースを確認しました。
PICとのインタフェースの仕掛けとして、回路は初回の記事を参照して頂くとして処理概要としては
となります。
V20側のアセンブルリストは下記のとおりです。処理内容としてはこの手の確認では定番の"Hello!"の表示です。
インタフェース試験でのV20側アセンブラソース
PIC側でのリスト表示後実行した際のログを以下に示します。ログの末尾にあるように想定通り"Hello!"が表示されました(^^)/
V20とPICのI/F確認時のpicleソース
この時のロジアナ波形を貼っておきます。左端でRESETがオフになることでV20が動作を開始し、中央部のHLDACがhighになっている部分がV20からの'H'(Hello!の最初の文字)出力要求に対してPICが処理している部分となります。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
前回書いたようにアセンブラはNASMを使っていますがマニュアルにはできるように書いてある
SEGMENT DATA MOV AX,DATA |
でのセグメント値の参照やセグメントの絶対アドレス指定の
SEGMENT CODE ABSOLUTE=0xffc0 |
でエラーやワーニングが発生したり、ORGを2カ所に書くとエラーになったりで悩みましたが、8086のメモリモデルとしてコードセグメントとデータセグメントを同じ値にするtinyモデルにし、データは EQUステートメントでアドレス指定することでPICとV20のインタフェースを確認しました。
PICとのインタフェースの仕掛けとして、回路は初回の記事を参照して頂くとして処理概要としては
- V20からの処理要求
I/F用のワークエリアにパラメータを設定し、A15=1のアドレスにI/O命令を発行する。 - READY信号がinactiveに遷移
PICのコンパレータの出力(オープンドレイン)を使ってハード的にREADY信号がinactiveとなりV20はwait状態になる。 - PIC側での処理
PIC側ではREADY信号を監視していてREADY信号がinactiveになったらコンパレータ出力を無効にし(プルアップしているのでREADY信号はactiveになる)HLDRQをactiveにしてバスの使用権を獲得し、ワークエリアに設定された要求を処理後、結果をワークエリアに保存する。 - PIC側のバスの開放
バスを開放し、コンパレータの出力を有効にする。
となります。
V20側のアセンブルリストは下記のとおりです。処理内容としてはこの手の確認では定番の"Hello!"の表示です。
|
PIC側でのリスト表示後実行した際のログを以下に示します。ログの末尾にあるように想定通り"Hello!"が表示されました(^^)/
|
この時のロジアナ波形を貼っておきます。左端でRESETがオフになることでV20が動作を開始し、中央部のHLDACがhighになっている部分がV20からの'H'(Hello!の最初の文字)出力要求に対してPICが処理している部分となります。
PICとV20のインタフェース確認時の波形サンプル |
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]
2019-07-28 22:37
nice!(0)
コメント(0)
コメント 0