6
236 CHAPTER ● 4 ─ Z80 の実際 AKI-80 の SRAM を無効とし、速度を下げ、 DRAM を接続して消費電力を上げる暴挙 Z80のいちばんの魅力は、DRAMの接続に 配慮した端子の機能にある。当時のパーソナ ル・コンピュータの多くが Z80 を採用したの も、命令の機能が素晴らしかったからではな く、DRAMを接続するためだった。実際、イ ンテル社の周辺チップと8080のプログラム で使われた不遇の時期でさえ、DRAMの端子 が未接続になることだけはなかった。いまは もう、64Kバイトくらいの容量にDRAMを使 う意味はない。しかし、TMPZ84C015は律儀 にDRAMの端子をもち、AKI-80もまたそれ を端子に引き出している。そこまでやってあ るものを、誰がほったらかしにできようか。 もっとも、AKI-80を付属の制作マニュアル のとおりに作ったら ROM とはじめから取り 付けられている RAM で接続可能なメモリの 容量がいっぱいになり、DRAMを接続する余 地がない。速度も、クロックが10MHzだとつ いていけない。そこで、もうひとつAKI-80を 買い、改造して使う。AKI-80には、標準のゴ ールドキットと、データシートや制作マニュ アルを省略して価格を安くしたゴールドボー ドがあり、ふたつめはゴールドボードを買え ばいい。同じものをふたつ買い、余計な作業 をして、出来上がるのが低速で消費電力の高 いAKI-80だというのだからあきれる。正々 堂々と書いたらDRAMに関心のない人から 叱られるので、まともなAKI-80と区別し、こ の本の押し詰まったところで書いている。 AKI-80を組み立てるとき、付属の制作マニ ュアルのとおりにやらないところはふたつあ る。ひとつは、キットに付属していない水晶 振動子を取り付けてクロックを下げ、もうひ とつは、パターンの一部を切って、はじめから 取り付けられている SRAM を無効にする。 DRAM を接続するのに適当なクロックは、 計算で割り出せるが、その必要はない。本物 の Z80 と同じ 2.4576MHz にして、Z80 が現役 だった当時を再現すればいい。水晶振動子は、 4.9152MHzになる。この水晶振動子はキット に付属しておらず、別に用意する必要がある。 取り替えた水晶振動子の付近を図7-1に示す。 組み立てかたは、同じなので説明しない。 はじめから取り付けられているSRAMを 無効とするには、部品面の74VHC00(または 相当品)の9 番の端子からROMへ向かうパタ ーンを切る。これは、組み立てる前にやって おかないとやりづらい。一方、パターンを切 ってしまってから SRAM を有効にするには、 100kΩの抵抗のTMPZ84C015に近い側から 電線を引き出し、AKI-80のA15端子(CN4の DRAM接続 7 CHAPTER4 Z80 の実際 図 7-1 ●水晶振動子を取り替えた AKI-80

DRAMの接続237 7 DRAMの接続 これでもう、時限爆弾の赤い電線か青い電線 かわからない状況にも対応できると思う。ユニバーサル基板をDRAM対応に拡張

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DRAMの接続237 7 DRAMの接続 これでもう、時限爆弾の赤い電線か青い電線 かわからない状況にも対応できると思う。ユニバーサル基板をDRAM対応に拡張

236CHAPTER●4─Z80の実際

AKI-80のSRAMを無効とし、速度を下げ、DRAMを接続して消費電力を上げる暴挙

Z80のいちばんの魅力は、DRAMの接続に配慮した端子の機能にある。当時のパーソナル・コンピュータの多くがZ80を採用したのも、命令の機能が素晴らしかったからではなく、DRAMを接続するためだった。実際、インテル社の周辺チップと8080のプログラムで使われた不遇の時期でさえ、DRAMの端子が未接続になることだけはなかった。いまはもう、64Kバイトくらいの容量にDRAMを使う意味はない。しかし、TMPZ84C015は律儀にDRAMの端子をもち、AKI-80もまたそれを端子に引き出している。そこまでやってあるものを、誰がほったらかしにできようか。もっとも、AKI-80を付属の制作マニュアル

のとおりに作ったらROMとはじめから取り付けられているRAMで接続可能なメモリの容量がいっぱいになり、DRAMを接続する余地がない。速度も、クロックが10MHzだとついていけない。そこで、もうひとつAKI-80を買い、改造して使う。AKI-80には、標準のゴールドキットと、データシートや制作マニュアルを省略して価格を安くしたゴールドボードがあり、ふたつめはゴールドボードを買えばいい。同じものをふたつ買い、余計な作業をして、出来上がるのが低速で消費電力の高

いAKI-80だというのだからあきれる。正々堂々と書いたらDRAMに関心のない人から叱られるので、まともなAKI-80と区別し、この本の押し詰まったところで書いている。AKI-80を組み立てるとき、付属の制作マニュアルのとおりにやらないところはふたつある。ひとつは、キットに付属していない水晶振動子を取り付けてクロックを下げ、もうひとつは、パターンの一部を切って、はじめから取り付けられているSRAMを無効にする。DRAMを接続するのに適当なクロックは、計算で割り出せるが、その必要はない。本物のZ80と同じ2.4576MHzにして、Z80が現役だった当時を再現すればいい。水晶振動子は、4.9152MHzになる。この水晶振動子はキットに付属しておらず、別に用意する必要がある。取り替えた水晶振動子の付近を図7-1に示す。組み立てかたは、同じなので説明しない。はじめから取り付けられているSRAMを無効とするには、部品面の74VHC00(または相当品)の9番の端子からROMへ向かうパターンを切る。これは、組み立てる前にやっておかないとやりづらい。一方、パターンを切ってしまってからSRAMを有効にするには、100kΩの抵抗のTMPZ84C015に近い側から電線を引き出し、AKI-80のA15端子(CN4の

DRAMの接続

7CHAPTER●4 Z80の実際

図7-1●水晶振動子を取り替えたAKI-80

Page 2: DRAMの接続237 7 DRAMの接続 これでもう、時限爆弾の赤い電線か青い電線 かわからない状況にも対応できると思う。ユニバーサル基板をDRAM対応に拡張

237 7─DRAMの接続

これでもう、時限爆弾の赤い電線か青い電線かわからない状況にも対応できると思う。

ユニバーサル基板をDRAM対応に拡張デコーダとコネクタの追加と周辺事情

配線を済ませたユニバーサル基板は、もうひとつ作る必要はなく、いまあるものに部品を追加し、AKI-80を差し替えて使う。3端子レギュレータ7805は、放熱器を取り付けずに使っていたら、取り付けておく必要がある。DRAMは、無効にしたSRAMのアドレス、8000h番地~ FFFFh番地の32Kバイトに割り当てる。このアドレスの範囲は、AKI-80のA15端子がHになることでわかり、DRAMのチップセレクト信号は、A15端子をNOTで反転して作る。NOTは、7404に6個まとめて入っている。アドレスの範囲、チップセレクト信号の作りかた、7404を使ったデコーダなどは、すでに説明している8085のコンピュータと同じになるので、参考にしてほしい。ユニバーサル基板には、7404を使ったデコーダを追加するが、DRAMまで追加する場所がない。そこで、とりあえず、コネクタを取り付けてDRAMの接続に必要な信号をつないでおく。コネクタは、40端子のボックスヘッダにする。本当は、40端子までは必要ないが、これだと、格安で売っている、パラレルATAケーブルが挿さる。あまった端子は、DRAM以外のチップを接続するとき、必要な信号を追加するために使える。たぶん、数本の電線を追加すれば汎用バスになると思う。コネクタを取り付け、どんな信号をつないでも、何も挿さなければ、AKI-80の動作に何の影響もない。だから、DRAMを接続するかどうかにかかわらず、追加しておくと格好がいい。それが汎用バスなら、なおのこと、夢を見られる。

14番)へつなぐ。これらの位置を図7-2に示す。パターンは部品面から示し、天地はシルク印刷の「AKI80」が正しく読める方向で示している。パターンを切るときにはちょっと勇気がいるだろうが、どこを切ればいいかわかっているだけまだマシだ。ぼくは、切ったが最後、買ったばかりのAKI-80をオシャカにしてしまうかもしれない恐怖と闘いながら切った。

図7-2●SRAMを無効、有効にする改造(部品面)

切断で無効

接続で有効

切断、接続する位置

パターンを切断した様子

Page 3: DRAMの接続237 7 DRAMの接続 これでもう、時限爆弾の赤い電線か青い電線 かわからない状況にも対応できると思う。ユニバーサル基板をDRAM対応に拡張

238CHAPTER●4─Z80の実際

DRAMを接続するため、ユニバーサル基板に追加する配線の実体配線図を図7-3に示す。例によってユニバーサル基板の裏側の状態を見たままに書いており、端子の配置は、マニュアルに掲載される上面図とは左右が反対になっている。端子の記号は正論理か負論理かに頓着しておらず、負論理でも#や\を付けていない。配線は、原則、省略せずに書いてあるが、電源だけは記号で示し、つないでいない。コネクタへの配線は、結局、DRAMをのせ

るもうひとつのユニバーサル基板のコネクタと一致していればいいので、つなぎやすい位置につなぎ、番号の付いた信号は番号の順に配慮した。AKI-80が、一部、番号の付いた信号を番号の順に並べていないため、込み入ったところもあるが、まあ、いい感じだと思う。

DRAMを接続するため、追加あるいは交換する部品を図7-4に示す。部品番号は、もう忘れてしまったかもしれないが、だいぶ前に示した回路図(図1-6)と対応している。

工夫を凝らして端子を減らした4164複雑きわまりない読み書きの手順

DRAMは、1980年ころの最先端のチップ、64Kビットの4164を使う。これ以前のチップは、3種類の電源を必要とし、ユニバーサル基板から電源を供給できない。これ以降のチップは、容量が大きくなってしまって、Z80のアドレスバスだと信号が不足する。つまり、使いやすく進歩していて、古臭さを味わえる。4164の主要な仕様を図7-5に示す。DRAMの利点はいくつかあるが、いちばんの狙いは

図7-3●DRAMを接続するために追加する配線の実体配線図(下面図)

NCD1D3D5D7A0A1A2A3A4A5A6A7

NCD0D2D4D6A14A15A10A12A11A9A8A13

SYNCBRxDBTxCBDTRBCTSBDCDARTSATXDARxCA

SYNCA

W/RDYBRxCBTxDBRTSBDCDBCTSADTRATxCARxDAW/RDYA

PB1

PB3

PB4

PB7

BRDY

IOR

CLKOUT/IN

IEO

WDTOUT

ZC/TO1

ZC/TO3

CLK/TRG2

CLK/TRG0

PB0

PB2

PB4

PB6

RSTB

NMI

IOW

A7RF IEI

ZC/TO0

ZC/TO2

CLK/TRG3

CLK/TRG1

PA1

PA3

PA5

PA7

ARDY

HALT

IORQ WR

WAIT

RESET

RFSH

GND

Vcc

PA0

PA2

PA4

PA6

ASTB

INT

MREQ

RD BUSACK

M1

BUSREQ

GND

Vcc

AKI-80

CN3

CN2

CN4

CN1

4D4Q5D5Q6D6QGND

Vcc1D1Q2D2Q3D3Q

74LS04

Vcc

D0

D1

D2

D3

MRE

QWR

BANK

A0

A1

A2

A3

A4

A5

A6

A7

GND D4

D5

D6

D7

RD CS

RFSH A8

A9

A10

A11

A12

A13

A14

A15

+

Page 4: DRAMの接続237 7 DRAMの接続 これでもう、時限爆弾の赤い電線か青い電線 かわからない状況にも対応できると思う。ユニバーサル基板をDRAM対応に拡張

239 7─DRAMの接続

を与えて#CAS端子をLにする。このままジッと待っていると記憶しているデータがDO端子に出力されるから、SRAMの#RD端子に相当する読み出し用の端子は存在しない。書き込みは、いろいろな方法があり、ややこしいので、一般的な、アーリーライトという方法を説明する。書き込みでも、まず、アドレス信号の下位8ビットを与えて#RAS端子をL

チップの小型化にある。1970年代、チップを小さくするには端子を減らすしかなかった。4164は、思い付く限りの方法を使って端子の数を減らし、16端子のパッケージになった。アドレス端子はA0 ~ A7端子の8本しかな

く、アドレス信号は上位8ビットと下位8ビットを分けて与える。まず、下位8ビットを与えて#RAS端子をLにする。次に、上位8ビット

図7-4●DRAMを接続するために追加、交換する部品

部品番号 部品名称 型番/値 数量 実機で使用した部品

AKI-80 コンピュータキット AKI-80 1 AKI-80ゴールドボード(ヘッダピン、ソケット付属)

IC3 TTL(NOT) 7404 1 テキサスインスツルメンツ社SN74LS04N

C3 コンデンサ 0.1μF 1 MMC積層セラミックコンデンサC50V104

C9 コンデンサ 10μF 1 日本電気タンタルコンデンサ16V10

CON3 コネクタ 40端子 1 ボックスヘッダL型プリント基板用(メーカー不明)

─ 水晶振動子 4.9152MHz 1 九州電通HC-49U/4.9152MHz

─ ICソケット DIL14P 1 ケルICC05-014-360T

─ 耐熱電線 ─ 適量 潤工社ETFE0.26各色

A0 ~ A7 アドレス信号を入力

#RAS アドレス信号の下位8ビットを与えたときLを入力

#CAS アドレス信号の上位8ビットを与えたときLを入力

#WE 4164にデータを書き込むとき(4164に入力させるとき)#CASを有効にする前にLを入力

DI データの入力端子

DO データの出力端子

Vcc 電源端子(5V)

GND 電源端子(0V)

端子の配置(上面図)

端子の機能

電源電圧、電流 5V±10%、最大25mA

動作可能温度範囲 0℃~ 70℃

信号電圧 TTL互換

記憶容量 1ビット×64K

主要な定格

図7-5●4164の主要な仕様

GND#CASDOA6A3A4A5A7

NC(#REF)DI

#WE#RAS

A0A2A1Vcc

4164

Page 5: DRAMの接続237 7 DRAMの接続 これでもう、時限爆弾の赤い電線か青い電線 かわからない状況にも対応できると思う。ユニバーサル基板をDRAM対応に拡張

240CHAPTER●4─Z80の実際

にするが、ここで#WE端子をLとし、次に、上位8ビットを与えて#CAS端子をLにする。読み出しと書き込みは、一連の操作の途中、

#WE端子の状態で区別される。いずれの場合も、チップは#CAS端子がLになったとき選択される。だから、SRAMの#CS端子に相当するチップセレクト端子は存在しない。データはDI端子に入力し、DO端子に出力

される。入力用と出力用が1本ずつしかなく、Z80のデータバスに接続するには8個のチップを並べなければならない。容量は最低が64Kバイトになり、AKI-80では半分をあまらせてしまう。それが嫌な人は、デコーダをぐっと複雑にしてPIOで制御すると、バンク切り替えという方法で64Kバイトを使い切ることができる。関心のある人は、自分で勉強してほしい。この本は、そこまでは説明しない。

リフレッシュの操作の意味と実際2m秒しか記憶しない困った性質

DRAMは、工夫を凝らして端子を減らし、小型化したかわりに使いかたを難しくした。それをもっと難しくしているのが、ほったらかしておくとデータを2m秒しか記憶しないという困った性質だ。DRAMは、2m秒より長く読み書きしないと記憶したデータを忘れ

てしまう。読み書きすれば、アドレス信号の下位7ビットが一致する512個のデータが復活する。だとしても、2m秒ごとに下位7ビットが満遍なく読み書きされなければならず、それは無理なので、リフレッシュと呼ばれるデータの復活の操作が必要になる。リフレッシュは、普通の読み書きが行われない期間を狙い、アドレス信号の下位7ビットを与えて#RAS端子をLにする。これは、読み書きを途中までやるだけだが、DRAMは、これでデータが512個ずつ復活するように作ってある。#CAS端子はLにしないので、チップはバスから切り離されていて悪い影響を与えない。Z80は、リフレッシュのタイミングを与える#RFSH端子をもっている。また、#RFSH端子がリフレッシュを指示するごとに、リフレッシュアドレスというリフレッシュに専用のアドレス信号をアドレス端子の下位7ビットに出力する。Z80の、DRAMの接続に配慮した端子の機能とはこのことを指す。何だそれだけかと思うのはもっともで、実は、ぼくも同感なのだが、これで少なくとも問題の半分が解決する。残りの半分は、あとで述べる。DRAMの接続に関係するAKI-80の端子の機能を図7-6に示す。A0~ A15端子は、アドレス信号またはリフレッシュアドレスを出力

図7-6●DRAMの接続に関係するAKI-80の端子の機能

A0~ A6 アドレス信号またはリフレッシュアドレスの下位7ビットを出力

A7~ A15 アドレス信号の上位9ビットを出力

A7RF リフレッシュアドレスの上位1ビットを出力(4164では不要)

#RFSH リフレッシュサイクルにあるときLを出力

D0~ D7 データを入出力

#RD データを読み込むときLを出力

#WR データを書き込むときLを出力

#MREQ 読み書きの相手がメモリのときLを出力

Page 6: DRAMの接続237 7 DRAMの接続 これでもう、時限爆弾の赤い電線か青い電線 かわからない状況にも対応できると思う。ユニバーサル基板をDRAM対応に拡張

24 7─DRAMの接続

一見、TTLのような格好をしているが半導体ではなく、内部にはコイルがあって、それぞれの端子に数10n秒ずつ遅れた信号が現れる。もうひとつ、時間を遅らせるためによく使われる回路を図7-8に示す。Hの信号はコンデンサを充電してからHになり、Lの信号はコンデンサが放電してからLになるので、信号が遅れて伝わる。抵抗は、コンデンサの充放電の時間を決める役割を果たしており、コンデンサの値とあわせて信号の遅れかたを調整できる。ただし、電卓で計算した値の抵抗やコンデンサがあるとは限らない(ないと思う)し、普通の抵抗は誤差が±20%、コンデンサにいたっては+100%~ -50%となっていて、精度よく時間を遅らせることができない。遅延線は、どういうお店で買えばいいのかわからず、調べてまで使いたい部品でもないから使わない。時間を遅らせる回路は、実は、

し、D0~ D7端子は、データの入出力に使う。#MREQ端子は、メモリを読み書きするときLになり、その時点でアドレス信号が確定しているから、DRAMの#RAS端子をLにするために使える。#RD端子は、メモリを読み込むときLを出力するもので、理屈からいうとDRAMには必要ないが、よく、反転させて書き込みに使う。#WR端子は、メモリへ書き込むときLを出力するのだが、アーリーライトでの書き込みだと、タイミングが間に合わない。#RFSH端子は、リフレッシュしてもいい期間をLで指示する。なお、TMPZ84C015は、本物のZ80にはない#A7RF端子をもち、8ビットのリフレッシュアドレスを出力する。リフレッシュアドレスが8ビットだと、64KビットのDRAMの古い製品、あるいは、256KビットのDRAMをリフレッシュできる。

時間間隔を作るアナログ的な手法と最後の手段、DRAMコントローラ

DRAMの接続は、リフレッシュのタイミングを見付けるのがいちばん難しいが、Z80は、これを#RFSH端子が教えてくれるのでまったく問題にならない。読み書きやリフレッシュの信号のやりくりも、だいたい見当が付く。しかし、段階を踏んで一連の操作をする、確実な方法が思い浮かばない。一連の操作とは、前述のとおり、#RAS端子をLにしたあと少し待ってアドレス信号を替え、また少し待って#CAS信号をLにするのだが、その「少し待つ」のよりどころとなる信号が、どこにもでていない。この時間は、デジタルの手法をあきらめ、アナログの手法で作るしかないらしい。ぼくが秋葉原の日米商事で見付けたジャンク品のDRAMボードは、少し待つ時間を遅延線で作っている。その外観を図7-7に示す。

図7-7●信号を遅らせる遅延線(中央のDL14CB101)

図7-8●信号を遅らせる回路

OUTIN