Z8010 MMUは手に入れたものの、とりあえず今回は使わないでおきます。
Z8001/2のZ-BUSは結構ややこしくて、頭がいま混乱しています。Z8000 Technical Manual を参照しながら、頭の中を整理しがてらこれを書いています。
ICのピン数を減らすためなのか、アドレスバスとデータバスが共用になっており、AD0-15にアドレスを先に出してから、AD0-15を通してデータの入出力を行います。メモリーアクセス中はアドレスを保持しておく必要があるので、ASの立ち上がりエッジでアドレスが確定後、ラッチを使い保持します。
Z8001の場合は、SN0-6もメモリアクセス中に一時的にしか出ないので保持する必要があります。
次は、メモリとアドレス・データバスの接続。これがややこしい。
まず、Z8001にはダイナミックバスサイジングの機能がないので、16bit分のデータバスの配線をしなければなりません。AD0-7 は奇数アドレスのメモリに、AD8-15は偶数アドレスのメモリに接続します。なんとなく逆な気がするのですが、下の図のとおりです。
偶数・奇数アドレスメモリの選択ですが、図にあるように(メモリ選択は正論理)、
バイトリード : B/W = H, R/W = H で、遇奇両アドレス選択
バイトライト : B/W = H, R/W = L で、AD0 = 0 が偶数アドレス選択、 AD0 = 1 が奇数アドレス選択
ワードリードライト : B/W = L, R/W = L or H で、遇奇両アドレス選択
になります。
バイトリードが両方選択なのは、CPUがAD0-7かAD8-15を選択して取り込むからです。このあたりは 9.4.2 Memory Transactions に書いてあります。
図ではメモリアドレスにはAD0から繋ぐような印象を受けますが、実際にはAD1からつなぎます。
ここまで書いてなんとなく頭の中が整理されてきました。というか思い出してきました。
年齢のせいか理解するのに時間がかかるし、字は見づらいわで苦労します。
Z8001/2のZ-BUSは結構ややこしくて、頭がいま混乱しています。Z8000 Technical Manual を参照しながら、頭の中を整理しがてらこれを書いています。
ICのピン数を減らすためなのか、アドレスバスとデータバスが共用になっており、AD0-15にアドレスを先に出してから、AD0-15を通してデータの入出力を行います。メモリーアクセス中はアドレスを保持しておく必要があるので、ASの立ち上がりエッジでアドレスが確定後、ラッチを使い保持します。
Z8001の場合は、SN0-6もメモリアクセス中に一時的にしか出ないので保持する必要があります。
Figure 9-3 より |
次は、メモリとアドレス・データバスの接続。これがややこしい。
まず、Z8001にはダイナミックバスサイジングの機能がないので、16bit分のデータバスの配線をしなければなりません。AD0-7 は奇数アドレスのメモリに、AD8-15は偶数アドレスのメモリに接続します。なんとなく逆な気がするのですが、下の図のとおりです。
Figure 9-4 より |
バイトリード : B/W = H, R/W = H で、遇奇両アドレス選択
バイトライト : B/W = H, R/W = L で、AD0 = 0 が偶数アドレス選択、 AD0 = 1 が奇数アドレス選択
ワードリードライト : B/W = L, R/W = L or H で、遇奇両アドレス選択
になります。
バイトリードが両方選択なのは、CPUがAD0-7かAD8-15を選択して取り込むからです。このあたりは 9.4.2 Memory Transactions に書いてあります。
図ではメモリアドレスにはAD0から繋ぐような印象を受けますが、実際にはAD1からつなぎます。
ここまで書いてなんとなく頭の中が整理されてきました。というか思い出してきました。
年齢のせいか理解するのに時間がかかるし、字は見づらいわで苦労します。