4001(ROM)

投稿者: 芦田和毅. Posted in MCS-4

この文書では,MCS-4用ROMであるIntel社製4001について説明します.全体の概要を述べたのち,パッケージとピン,ブロック図による内部構造について説明します.


概要

4001はMCS-4のプログラムROMとして使われていました.現在よくマイコンで使われているEEPROM(Electrically Erasable Programmable Read-Only Memory)ではなくマスクROMでした.EEPROMの場合には後で記憶を書き換えられるのに対し,マスクROMの場合には一度書き込むと書き換えられませんので作成には細心の注意が必要でした.また8[bit]の値を256個記憶,合計2048[bit]しかありませんでしたが,4004に最大16個接続可能でしたので,合計32768ビットまで記憶できました.


パッケージとピン

MCS-4を構成する他のICと同様にパッケージはDIP16でした.下にピンアサインを示します.それぞれの役割を説明します.なお,MCS-4で共通的に使われる端子(D0~D3,VDD,VSS,Φ1,Φ2,SYNC,RESETについてはこちらをご覧ください.

 

4001PinAssign

 

クリア信号用端子CL

4001にあるいくつかのレジスタをクリアするときに用いられるのがCLです.通常の動作中,この信号がHighになるとその時点でレジスタのクリアが行われます.大事なことは「その時点で」ということです.つまり,クロックとは無関係に,言い換えれば非同期にクリアされます.

チップ選択端子CM

4001はMCS-4で最大16個接続可能であることは既に説明済みですね.ではそれぞれを4004が選択するときどうすると思いますか?ROMの場合にはSRC命令でアドレスを指定したのち,受信するように設計されています.もう少し正確に説明すると,ROMには固有の4[bit]アドレスを設定できるようになっており,4004から送られてくる12[bit]のアドレスのうち上位4[bit]を比較して同じだったROMが反応するように作られています.4[bit]あれば16個のROMを表すことができますし,下位8[bit]あれば256個の8[bit]データを指定できるようになっていたのです.

基本的にMSC-4では16個のROMを制御できますがそれ以上のROMを搭載する必要があるときどうすればいいでしょう?その時に使われるのがCMです.この端子により,1バンク16個のROMを2バンクにすることができます.つまり,CMがLowの時にはバンク1,Highの時にはバンク2のようにすることで,倍のROMを制御できるようになるのです.

入出力端子I/O0~I/O3

MCS-4では,入出力端子がROMのICにあり,これらを使ってさまざまな電子デバイスを制御することができます.皆さんのよく知っているマイコンであれば,汎用端子の入出力を変えるのはレジスタであると思いますが,MCS-4では入出力を決めるのはROMを焼くときです.したがいまして,一度入出力を決めたら変えることができませんでした.


ブロック

下に4001のブロック図を示します.

4001BlockDiagram

まず,上側にタイミングを生成するブロックがあります.そうでなければΦ1とΦ2,加えてSYNCを入力するとクロックが生成され,各ブロックへ送られます.なお,各ブロックへ送られているクロックをすべて矢印で繋げると大変見にくくなるため省略しています.

次に,左側上方向にデータバスI/Oバッファブロックを見てください.データバスD0~D3の信号線がつながっていることを確認できますね?.4004から4001に送られてくるデータ,つまりアドレスや4001のI/Oから出力されるデータはこのバッファに保持されます.アドレスが送られてきた場合,アドレスレジスタ・デコーダにアドレスが送られ,さらにそのアドレスに対応するデータをROMアレイから取り出すときマルチプレクサを用いています.それらの関係が図で表されていることを確認してください.反対に4001から4004に送られるデータ,つまりROMに保存されているデータや4001のI/Oに入力されたデータはこのバッファに一旦保持されます.これらの動作を制御しているのが図の中央付近にある制御回路です.

次に左下方向にあるブロックをご覧ください.こちらには入力ポートと出力ポートがあり,それぞれI/O0~I/O3が接続されています.繰り返しになりますが,4001には4本の入出力端子があり,それぞれはメタルマスクでデータを記憶するときに入力端子にするのか出力端子にするのかを決めることができます.入力端子にしたのであれば,スイッチやキーボードなどからの信号を4001のバスを通じて4004に送られますし,出力端子にしたのであれば4004からのデータをデータバスを通じて4001に送られ,出力ポートに接続されたLEDなどの周辺機器に出力されます.入出力に関しても制御回路が動作を決めています.

最後にその他の信号についても説明しておきます.CL信号がHighになるとその瞬間に出力ポートにあるレジスタをクリアしてくれます.また,RESET信号がLowになると出力ポートのレジスタに加えて4001の制御回路がクリアされます.