Yamamoto's Laboratory
Lesson
   1.Numbers
   2.Memory
   3.RAM
   4.Ports
   5.Timer
   6.ROM
   7.8085A
   8.Instruction
   9.Monitor
Appendix

Lesson 6ROM

Elenco Electronics社のコンピュータートレーニングボード MICRO-MASTER MM-8000 の Lesson 6 に関するメモです.ここでは,ROMの取り扱いを学習します.(参照:MM-8000のマニュアルのLesson 6)

2816_MM8000A.png
MM-8000上のROM(XLS2816AP-250)とラッチ用のIC(74HCT573)

目次



ROM

はじめに

2816のピンアサイン
2816のピンアサイン

Lesson 3では,RAMについて説明しました.RAMに記憶されたデータは,電源をOFFにすると消えてしまいます.もし,全てのコンピュータープログラムがRAMに格納され,電源をONする度に,ユーザー自身が(手で)入力する必要があるならば,多くの時間が浪費されるでしょう.それゆえ,少なくとも一つのプログラム(モニターと呼ばれる)を不揮発性のROMに常駐させます.ROMのデータは,電源をOFFにしても消えまえん.ROMは, 消去可能なものと,消去不可能なものに大別できます.消去可能なROMは,紫外線を用いるなどいろいろな方法でプログラムを消します.消去不可能なROMはプログラムの書き込みは,一度限りです.MM-8000では,電気的に消去可能なROM(E2PROM:ElectricallyErasable Programmable Read Only Memory)である2816を使っています.その名(Electrically Erasable)の通り,2816と同様にプログラムの消去と書き込みができます.書き込み処理のためには,10[msec]の時間がかかります.

2816は,2000以上の1バイト(8ビット)の記憶領域があります.トータル 16[K bits]になります.これが名前の由来となっています.2816のピン番号は, 左の図のようになります.

このROMのデータシートは,ここにあります.


2816のピンの役割

簡単に2816のピンの役割を示します.このピンの使い方は,次の「2816の動作モード」でもう少し詳しく説明します.あるいは,データシートを読んでください.

ADDRESS LINES (A0 〜 A10)

2000のアドレスを指定するために,アドレス線は11本あります.210 ‹ 2000 ‹ 211ですから.

INPUT/OUTPUT LINES (I/O 0 〜 I/O 7)

アドレス線で指定されたアドレスのデータを読み書きするときに,データの入出力に使われます.一つのアドレスのデータは,1バイト(8 bits)なので,I/Oの線は,8本です.

CHIP ENABLE  (CE)

表記の上線は,NOTを表します.いわゆる負論理と呼ばれるもの,LOW(論理:0,0V)の時にチップ(Chip)が動作状態(Enable)になります.

OUTPUT ENABLE  (OE)

この線とCEがLOW(論理:0,0V)かつWEがHIGH(論理:1,5V)のとき,2816からデータを読み込むことができます.

WRITE ENABLE  (WE)

この線とCEがLOW(論理:0,0V)かつOEがHIGH(論理:1,5V)のとき,2816にデータを書き込むことができます.

2816の動作モード

2816のピンの役割を理解するために,その動作を説明します.ここでは, データシートにしたがい動作モードの説明を行います.ただ,データシー トを見ても「???」と思うようなところがありますので,自分で2816を動かして, その内容を理解することを勧めます.

以下に示すように,3つのピン(CEOE,WE) の状態で,2816の動作モードが決まります.

2816のモード(データシートから抜粋)
CE OE WE Mode I/O Power
VIH X X Standby HIGH Z Standby
VIL VIL VIH Read DOUT Active
VIL VIH HLH Byte Write(WE Controlled) DIN Active
HLH VIH VIL Byte Write(CE Controlled) DIN Active
VIL VH VIL Chip Erase Data In=VIH Active
X VIL X Write Inhibit

読み込みモード(Read Mode)

WEがHIGHの状態で, CEOEをLOWにすれば,読み込みモー ドになり,2816に保存されているデータを読み込むことができます.データの アドレスは,A0 〜 A10で指定します.このモードでは,いつでもアドレスを変 えて,データを読み込むことができます.

書き込みモード(Write Mode)

2816にデータを書き込むための動作は,少々複雑です.まずOEがHIGH(1)の状態で,WECE をLOW(0)にします.このとき,WECE がLOW(0)になる立ち下がりの遅い方のエッジで,2816は書き込むアドレス(A0〜A10)をラッチします.そうして,書き込むデータ(IO 0〜IO 7)は,WEまたはCEがHIGHになる立ち上がりでラッチされます.ようするに,WEあるいはCEを,HIGH→LOW(min 150nsec)→HIGHとしなくてはなりません.WEをHIGH→LOW→HIGHとする場合を「WE Controlled」と言い,CEの場合を「CE Controlled」と言います.

アドレスとデータがラッチされると,2816は(1)古いデータの消去,(2)新しいデータの書き込みを10[msec]以内に行います.

ROM(2816)への書き込みの処理は10[msec]以内に終了しますが,これはコンピューターにとってはかなり長い時間です.しかしながら,書き込みの処理は 2816 自身が行うため,システム(コンピューター)は他の処理を進められます.この書き込み処理の間,読み込みコマンドを仮定すると7番ピンを除いてI/Oピンはハイインピーダンス(high impedance state)になります.と,データシートには書かれていますが,私にはちょっと「high impedance state」が理解できません.ただ単に,端子がハイインピーダンスになっているだけ? テスターで調べれば分かるかもしれませんが,2816が破損するのも嫌なので,このままにしておきます.ハイインピーダンスは,配線から見ると,何も接続されていないのと同じ状態です.

出力停止モード(Output Disable Mode)

読み込みモードの時,OEをHIGHにしても,読み込みモードですが,出力は停止します(I/Oピンは,全てハイインピーダンス状態).これ,どういうこっちゃ!!

スタンバイモード(Standby Mode)

CEをHIGHにすると,2816 は全ての I/O ピンをハイインピーダンス状態にして,スタンバイモードになります.この状態でも,TTLレベルの入力では,40[mA]の電流が流れます(電力を使います).CEがHIGHの状態では,全てのインプットピンは停止し,2816はシステムバスから切り離されます.ハイインピーダンスなので,バス(線)から切り離されたのと同じ.

消去モード(Chip Erase — High Voltage Mode)

次にようにすると,2816のデータを一度に消去することもできます.CEをLOWの状態で,OEピンにVH(15〜18[V])を印加します.消去は,I/OピンをHIGHの間,標準的なバイト書き込みコマンドにより実行されます(?動作不明.データシート直訳).全ての1を含んで いるバイトが,ROMの全ての場所に自動的にかかれます(?動作不明.データシート直訳).

74HCT573

このROM(2816)は,RAM 8155のように,MM-8000で使用しているMPU 8085Aに直接接続することができません.8085Aの8本のバスは,アドレスバスとデータバスが共通です.それらのバスは,8155では共通ですが,2816では異なります.そのため,8085AでROMのデータを読み込み/書き込みを行う場合には,データあるいはアドレスをラッチするICを間に入れる必要があります.そのために,「74HCT573(Octal D-type transparent latch;3-state)」というICを使います.このICの詳細は,データシートを参照をしてください..

以下は,MM-8000のマニュアルの記述と同じです(ほとんど和訳).

Lesson 3で学習したRAM(8155)では,アドレスとデータは同じバスを使います.8155のデータを読み込み/書き込みを行う場合,最初にバスはアドレスのLSB(最下位バイト)を設定します.それは,8156の内部レジスターに保存されます.そして,同じバスをデータの読み込み/書き込みに使います. ROM 2816のアドレス指定方法は,RAM 8155と次の二つの点で異なります. 第一に,2816はアドレスレジスターが無いので,外部のアドレスレジスターを接続しなくてはなりません.MM-8000では,74HCT573(Octal D-type transparent latch;3-state)を使います. 第二に,2816の方が8155よりもアドレスバスが3本多いので,メモリー空間が広がります.これらの違いがあるものの,2816は8155と同じようにデータの読み込み/書き込みができます.

74HCT573_Pin.png
74HCT573の機能ダイアグラムとピン番号

以下は,74HCT573のデータシートから読み取りました.

アドレスのラッチ(アドレスレジスターの代わり)に使う74HCT573の機能とピン番号は,右上の図の通りです.20ピンのICで,10番がGND,20番がVcc(5V)です.1番ピンのOEは「Output Enable」,11番ピンのLEは「Latch Enable」からの命名です.

OEがLOWかつLEがHIGHの場合,D0〜D7の信号は,そのままQ0〜Q7に出力されます(transparent mode).

OEとLEがともにLOWの場合,D0〜D7の信号はラッチされ,74HCT573に蓄えられます.そのラッチされたデータは,Q0〜Q7に出力されます.ラッチされるデータは,LEがHIGH→LOWになる立ち下がりの時のD0〜D7です.

OEがHIGHかつLEがLOWの場合,D0〜D7の信号はラッチされますが,Q0〜Q7には出力されません.このとき,Q0〜Q7はハイインピーダンスとなっています.


74HCT573の動作モード(データシートから抜粋).l:LEがH→Lの立ち下がりの時L,h:LEがH→Lの立ち下がりの時H.Z:ハイインピーダンス.
動作モード 入力 ラッチ状態 出力
OE LE DN QN
enable and read register
(transparent mode)
L H L L L
L H H H H
latch and read register L L l L L
L L h H H
latch register and disable outputs H L l L Z
H L h H Z

ASSEMBLY INSTRUCTIONS

とくに難しい半田付けはなく,マニュアル(p.6-2)の通りにすれば,この Lesson の回路は完成します.

CIRCUIT DESCRIPTION

Lesson 6のROMの学習に使う回路は,下の図(ROM(2816)のテスト回路)の通りです.一部,MM-8000のマニュアル(Figure 6-3)とピンの名前が異なる部分がありますが,回路は同じです.

また,この回路図には示されていないですが,「TEST PROCEDURE」での動作を理解する上で重要な接続もあります.

  • ROMのデータバスはLEDとスライドスイッチに接続されています.LEDでデータ内容の確認,スライドスイッチでデータの設定を行います.
  • Write Busは,MM-8000のキーボードのWRボタンに接続されています.WENがup側の状態で,このボタンを押すとWEはLになり,離すとHになります.
  • Read Busは,キーボードのRDボタンに接続されています.このボタンを押すと,OEはLになり,離すとHになります.
  • ALE Busは,キーボードのALEボタンに接続されています.このボタンを押すと,LEはLになり,離すとHになります.
  • アドレスバスのA8〜A10は,将来(Lesson 10),CPUに接続されます.しかし,現在はCPUには未接続です.ここでは,A9とA10は抵抗(6.8[kΩ])を通して,グランドに接続されています.したがって,A9とA10はLです.A8はスライドスイッチのA8でH(up側)にもL(down側)にもできます.

手動でのデータの書き込み/読み込みは,次のようにします.EN ROMスイッチをup側にすることにより,2816のCEピンがLになり,ROMは動作状態となります.次に,WENスイッチをupにして,キーボードのWRボタンとWEを接続します.AD0〜AD7のスライドスイッチで,書き込みアドレスを決めます.そして,ALEボタンを押します.次に,AD0〜AD7のスライドスイッチで,書き込むデータを指定します.WRボタンを押すことで,データの書き込みが完了します.データの読み込みの場合,はじめに,AD0〜AD7のスライドスイッチでアドレスを指定し,ALEボタンを押します.その後,RDボタンを押すことで,データを読み込むことができます.LEDでの表示が読み込んだデータです.

ROM(2816)のテスト回路
ROM(2816)のテスト回路

TEST PROCEDURE

ROM(2816)の動作を理解するために,マニュアル(p.6-4)にしたがい次のように操作します.

1.準備

ここでは,ROMにデータを読み書きする前の準備作業を行います.

電源は接続しないで,POWERスイッチはオフ(down)の状態にしておきます.動作開始前,全てのスライドスイッチはdown側にしておきます.

  1. EN ROMとEN RAMはオフ(down側)の状態にします.
  2. WEN(write enabe)スイッチをdown側にします.これは,電源をオンにしたときに,誤ってデータが書き込まれることを防ぐためです.
  3. ACアダプターを接続し,POWERスイッチはオン(up側)にします.
  4. EN ROMスイッチをup側にします.これで,CEがLになり,ROMが使用可能になります.

2.書き込み

  1. WENスイッチをup側にします.これで,キーボードのWRボタンを押すとWEはLに,離すとHにすることができます.
  2. A8スイッチをdown側(L)にします.キーボードのAD7〜AD0のスライドスイッチでアドレス(000 0000 0000〜000 1111 1111)を指定することにより,256バイトのデータの読み書きができます.
  3. 書き込みアドレスを指定するために,スライドスイッチAD7〜AD0を 0000 0000にします.
  4. ALEボタンを押します.すると,75HCT573のLEピンが「L→H→L」と変化します.このH→Lに変化する立ち下がりでアドレスがラッチされます.ラッチされたデータは,Q0〜Q7に出力され,ROMのアドレスになります.
  5. スライドスイッチAD7〜AD0を「0000 0011」にします.これはROMに書き込むデータになります.
  6. キーボードのWRボタンを押します.ROMのWEピンが「H→L→H」と変化します.この立ち下がり(H→L→)でアドレス(75HCT573出力とA8〜A10)をラッチします.立ち上がり(L→H)ではデータがROMに保存されます.
  7. ステップ7〜10を繰り返すことにより,以下のデータをROMに記憶させます.もちろん,7で指定するアドレスと9で指定するデータは,その都度変更します.
    ROMに書き込むデータ
    HEXADECIMAL(十進)
    ADDRESS
    BINARY(二進) DATA
    0 000 0000 0000 0000 0011
    1 000 0000 0001 0000 1100
    2 000 0000 0010 0011 0000
    3 000 0000 0011 1100 0000

3.読み込み

  1. 書き込んだデータを次のようにして確認します.
    1. 読み込みたいデータのアドレスを,スライドスイッチAD7〜AD0で指定する.
    2. ALEボタンを押す.
    3. RDボタンを押す.すると,ボタンが押されている間(OEがL),書き込んだデータがLEDに表示されます.
  2. WENをdown側にします.POWERスイッチをONあるいはOFFするとき,ROMに余計なデータが書き込まれるのを防ぐためです.
  3. POWERスイッチをOFFします.
  4. 再び,POWERスイッチをONにします.
  5. 12と同じようにして,データが保存されていることを確認します.ROMは電源をOFFしても,デーが失われません.

4.書き込み

次は,別のアドレスを使って,データの読み書きを行います.

  1. スライドスイッチA8をup側(H)にします.こうすると,アドレス100H〜1FFの間でデータの読み書きが可能になります.ここでHは16進数(hexadecimal number)を表しています.
  2. ROMにデータを書き込むために,WENスイッチをup側にします.
  3. ステップの7〜10と同じ手順で,以下のデータをROMに書き込みます.
    ROMに書き込むデータ
    HEXADECIMAL(十進)
    ADDRESS
    BINARY(二進) DATA
    100 001 0000 0000 1000 0001
    101 001 0000 0001 0100 0010
    102 001 0000 0010 0010 0100
    103 001 0000 0011 0001 1000
  4. ステップ13を実行します.
  5. ステップ7のアドレスを変えて,ステップ7と8を実行し,RDボタンを押します.すると,書き込まれたデータを読み出すことができます.
  6. スライドスイッチA8をdown側(L)にします.そうして,ステップ12を実行し,000H〜003Hのデータが保存されていることを確認します.
  7. 電源をOFFします.
Test_Procedure400.png
Test Procedure

参考文献・WEBサイトなど



no counter