Akita National College of Technology Yamamoto's Laboratory
ホーム研究内容コンピューター講義ノート学内限定
 
Lesson
  3.RAM
  2.Ports
 
 
 
 
 
コンピューターMPU基礎システム(はじめに) → Lesson 4.

Lesson 4   REGISTERS AND PORTS

Elenco Electronics社のコンピュータートレーニングボード MICRO-MASTER MM-8000 の Lesson 4 に関するメモです.ここでは,I/Oポートの取り扱いを学習する.

REGISTERS and PORTS

はじめに

MPUは,メモリーの他にI/Oポートとデータの入出力を行う.ここでは,主にI/Oポートの取り扱いについて勉強する.このキットでは,MPU使ってI/Oポートをコントロールする前に,人間がスイッチによりそれを制御し,動作を確認する.前の Lesson の RAM と同じような経験をする.

外部機器とデータを入出力するインターフェースをI/Oポートという.端的に言うと,コンピューターと外部機器の接点のことである.ここを通して,MPUは,外部機器(キーボードやハードディスクなど)のデータの入出力を行う.

このキットで使っている Intel 8155 には AとB, Cの3つのポートがある.これらのポートを使って,MPUと外部機器はデータの受け渡しを行う.8155は MPU と外部機器との間にあり,それぞれのデータを受け渡すバッファーのような役割を担っている.詳細についてはデータシートをみると良い.また,ブロックダイアグラムとピン番号は,次の図の通り.

8115 ブロックダイアグラム 8115 ピン配置

I/Oポート

使い方

8155はRAMとI/Oポートの機能がある.それらを同時に使うことはできない.IO/Mピンを High/Low にすることとで,それらの機能の選択を行う.I/Oポートを使う具体的な手順は次のようにする.

  1. CE を Low にする.これにより,このICが動作状態になる.
  2. IO/Mを High にする.これにより,アドレスバスとデータバスが,RAMではなくI/Oポートに接続される.

RAM同様,MPUはI/Oポートともデータの受け渡しを行う.I/Oポートとのデータの受け渡しは,レジスターを使う.レジスターは,RAMの記憶場所と同じように考えることができる.レジスターとのデータの受け渡し方法は,アドレスバスでレジスターを指定し,データバスでデータの受け渡しを行う.

8085には,4つのレジスターがある.そのレジスターのアドレスと役割は次の通り.アドレスの'x'は,0でも1でも良いことを示す.いわゆる"don't care"のこと.

8115のレジスター
アドレス レジスター名 機能 bit
xxxxx000 コマンド/ステータスレジスター 8155の外部ポートとタイマーの設定を行う.
8511の状態を表す.
8
xxxxx001 PAレジスター Aポートとのデータの受け渡しに使う. 8
xxxxx010 PBレジスター Bポートとのデータの受け渡しに使う. 8
xxxxx011 PCレジスター Cポートとのデータの受け渡しに使う. 6

これらのレジスターへの書き込み/読み込みの手順は,RAMの場合と全く同じようにする.

  1. AD0〜AD7にこれらのアドレスを設定する.
  2. ALEを一度,High にする.立ち下がりのエッジでアドレスを読み込む.これにより,操作対象のレジスターが決まる.
  3. 書き込みと読み込みの動作を行う.それぞれは,以下の通り.
    • 書き込み  書き込むデータをAD0〜AD7を設定した後,WRを Low にする.
    • 読み込み  WRを Low にすると,AD0〜AD7にデータが出力される.

コマンド/ステータスレジスター

コマンド/ステータスレジスター(command/status register)は,書き込みに時(WRがLow)にはコマンドを書き込み,読み込み時(RDがLow)にはステータスを読み込む.前者をコマンドレジスターと呼び,8115へ命令を与える.後者をステータスレジスターと呼び,8511の状態を示す.

コマンドレジスター  この Lesson で学ぶ I/Oポートの設定は,コマンドレジスターより決める.コマンドレジスターに書き込む各ビットは次のようになっている.

8115のコマンドレジスター
ビット 名称 機能
第7, 6ビット TM2,TM1 00:タイマー動作に影響なし 01:タイマーを停止
10:TCに達すると停止
11:タイマー停止中 モードとCNTをロードして,スタート.
    タイマー動作中 TC到達後にモードとCNTをロードして,再スタート
第5ビット IEB 0:ポートBの割り込みを禁止 1:ポートBの割り込みを許可
第4ビット IEA 0:ポートAの割り込みを禁止 1:ポートAの割り込みを許可
第3, 2ビット PC2, PC1 00:prot C は入力 11:prot C は出力
01:prot C は出力とPAをハンドシェーク付きIO
11:PAとPBをハンドシェーク付きIO
第1ビット PB 0:prot B は入力 1:prot B は出力
第0ビット PA 0:prot A は入力 1:prot A は出力

ステータスレジスター  ステータスレジスターを読み込むと,8115の状態を知ることができる.ステータスレジスターが表す各ビットの内容は次のようになっている.

8115のステータスレジスター
ビット 名称 機能
第7ビット   未使用
第6ビット Timer TCに達したときに High.リセットは,ステータスレジスターの読み込み,あるいはRESTをHigh.
第5ビット INTE B ポートB割り込み許可 1:許可 0:禁止
第4ビット B BF ポートBバッファフル 1:フル 0:空
第3ビット INTR B ポートB割り込み要求 1:あり 0:なし
第2ビット INTE A ポートA割り込み許可 1:許可 0:禁止
第1ビット A BF ポートAバッファフル 1:フル 0:空
第0ビット INTR A ポートA割り込み要求 1:あり 0:なし

汎用ポート

PAとPB,PCは汎用ポートで,RAMと同じように読み書きができる.これらのポートの入力/出力の設定は,コマンドレジスターで行う.読み/書きには「使い方」で述べたように,アドレスバスとデータバスを使う.

大事なことは,I/Oポートを通して外部機器とのデータの受け渡しを行う場合でも,アドレスバスとデータバスを使うことである.こうすることにより,MPU からは,RAMも外部機器も同じように見える.外部機器に依存して,コンピューターを設計する必要がなくなるので,コンピューターそのものが単純になる.その分,外部機器の方をコンピューターに合わせる.

ASSEMBLY INSTRUCTIONS

交換したトランジスター

とくに難しい半田付けはなく,マニュアルの通りにする.この課程で,A70というトランジスターが1個不足している—最初から入っていない—ことが分かった.その代わりに,A20というトランジスターが入っている.データシートによると,どちらも NPN型のシリコントランジスターで,特性も大きくは違わない.スイッチとして使っているだけなので,問題ないだろうと判断する.

TEST PROCEDUREで動作不良が発生した.どうしても,DSP2の7セグが点灯しない.テスターで調べてみたところ,トランジスターQ1とQ2が怪しそうである.これらのトランジスターを交換することにする.2SA1015(NPN型シリコントランジスター)を大量に持っているので,それと交換.すると,TEST PROCEDUREの通り,問題なく動作した.


CIRCUIT DESCRIPTION

TEST PROCEDURE

FUNCTIONAL TESTの様子

参考文献・WEBサイトなど


last update:2009/03/03 16:04:30