「ものづくり:make」を楽しみながら学ぶ人へ向けた独習サポートサイト。

and more...

Lab.以外の情報を紹介しています。

2764・5565(6264)の実装とメモリーへのアクセスのしくみ

【Z80】YS-6464Aのメモリー空間とアクセス

2025-04-222025-04-22

YS-6464AのROM領域・RAM領域には、それぞれ2764・5565(6264)というメモリーが実装されています。YS-6464Aのメモリー空間と、それぞれのメモリーに対するアクセスのしくみを解説します。YS-6464Aは「【Z80】Z80マイクロコンピューター「YS-6464A」」で紹介しています。

1.YS-6464Aのメモリー空間

アドレスバスとデーターバス

Z80では、外部のメモリーに対してデーターの場所を指定する信号線として「アドレスバス(Address Bus)」があります。また、データーは「データーバス(Data Bus)」によってアクセス(読み書き)されます。「バス」とは、複数の信号線の束を表す言葉で、Z80の場合、アドレスバスは16本・データーバスは8本で構成されています。

図1-1.Z80のバスと信号の向き
図1-1.Z80のバスと信号の向き

Z80のアドレス空間

1回のアクセスで読み書きできるデーターの長さとメモリーロケーション(データーの格納エリア)の個数は、それぞれデーターバスとアドレスバスの本数に対応します。つまり、データーバス([mathjax]~\rm{D0}~[/mathjax]~[mathjax]~\rm{D7}~[/mathjax])が8本、アドレスバス([mathjax]~\rm{A0}~[/mathjax]~[mathjax]~\rm{A15}~[/mathjax])が16本なので、1回のアクセスで読み書きできるデーターの長さは8ビット(1バイト)、メモリーロケーションの個数は16ビットで表現できる「0000 0000 0000 0000(16進表記で0000H)」~「1111 1111 1111 1111(FFFFH)」までの最大65,536個となります。このアドレスバスで指定できるすべての範囲を「アドレス空間」といいます。

図1-2.Z80のアドレス空間
図1-2.Z80のアドレス空間

YS-6464Aのメモリー空間

Z80のアドレス空間のすべてを使うと、最大64Kバイトのメモリーにアクセスできます。ここで「最大」と表現したのには理由があります。その理由とは「メモリーの実装はアドレス空間の一部でもよい」ということです。YS-6464Aでは、64Kバイトのうち、前半の32Kバイト(0000H~7FFFH)をROM領域、後半の32Kバイト(8000H~FFFFH)をRAM領域とし、それぞれ先頭から8Kバイトのメモリーを実装しています。つまり、Z80のアドレス空間のうち、実際にメモリーが実装されたメモリー空間は、0000H~1FFFH(ROM)・8000H~9FFFH(RAM)となります。

図1-3.YS-6464Aのメモリー空間
図1-3.YS-6464Aのメモリー空間
イメージとは

図1-3を見ると「イメージ」と書かれた範囲があることに気づきます。このイメージとは、例えば、ROM領域の場合、メモリーの実装されている0000H~1FFFHと同じ内容が、2000H~3FFFH・4000H~5FFFH・6000H~7FFFHの3回出現することを表しています。RAM領域でも同様に、メモリーの実装されている8000H~9FFFHの内容が、A000H~BFFFH・C000H~DFFFH・E000H~FFFFHの3回出現します。また、RAM領域の場合、イメージの範囲にデーターを書き込むと、該当するメモリー(例えば、C100Hに書き込むと8100H)の内容が書き換わります。なぜこのようなことが起こるのか?その理由は後ほど。

2.メモリーの実装

YS-6464AのROM領域・RAM領域には、それぞれ2764・5565(6264)という型番のメモリーが実装されています。いずれも、容量は8Kバイト(64Kビット)です。

2764

ROM領域(0000H~7FFFH)のうち、メモリーを実装しているのは前半の8Kバイト(0000H~1FFFH)です。メモリーには、2764という型番のUV-EPROM(紫外線消去型EPROM)が採用され、あらかじめ、モニタープログラム・ユーティリティープログラム・デモプログラムが書き込まれています。また、長期にわたる信頼性を確保するために、パッケージ(黒い樹脂)上部の窓には紫外線を遮光するシールが貼られています。

図2-1.2764
図2-1.2764

2764は、パッケージの両長辺から金属のピン(端子)がでている「DIP(Dual In-line Package)」という形状をしています。ピンの数は28ピンです。

図2-2.2764のピン番号とその名称
図2-2.2764のピン番号とその名称

以下に、それぞれのピンの名前と役割を簡単に紹介します。

[mathjax]~\rm{\boldsymbol{A0}}~[/mathjax]~[mathjax]~\rm{\boldsymbol{A12}}~[/mathjax]:Address bus:8Kバイトのメモリーなので、13ビット幅のバスとなります。

[mathjax]~\rm{\boldsymbol{D0}}~[/mathjax]~[mathjax]~\rm{\boldsymbol{D7}}~[/mathjax]:Data bus:8ビット幅のバスです。データーの読み出しに使用します。

[mathjax]~\rm\overline{\boldsymbol{CE}}~[/mathjax]:Chip enable:[mathjax]~\rm\overline{OE}~[/mathjax]とともにLレベルにすることでリードモードになります。Hレベルにすることでスタンバイモードとなり、[mathjax]~\rm\overline{OE}~[/mathjax]の状態に関係なく、[mathjax]~\rm{D0}~[/mathjax]~[mathjax]~\rm{D7}~[/mathjax]はハイインピーダンスとなります。

[mathjax]~\rm\overline{\boldsymbol{OE}}~[/mathjax]:Output enable:[mathjax]~\rm\overline{CE}~[/mathjax]とともにLレベルにすることでリードモードになります。

[mathjax]~\rm\overline{\boldsymbol{PGM}}~[/mathjax]:Program control:データーの書き込み時に使用するパルス信号です。

[mathjax]~\rm{\boldsymbol{+5V}}~[/mathjax]:Power source:+5Vの電源です。

[mathjax]~\rm{\boldsymbol{VPP}}~[/mathjax]:Program Power source:データーの書き込み時に使用する電源です。+21Vを印加します。

[mathjax]~\rm{\boldsymbol{GND}}~[/mathjax]:Ground:グランド(0V)です。

[mathjax]~\rm{\boldsymbol{NC}}~[/mathjax]:Non Connection / No Connecting:通常、この端子にはなにも接続しません。

図2-3.2764のバスと信号の向き
図2-3.2764のバスと信号の向き

5565(6264)

RAM領域(8000H~FFFFH)のうち、メモリーを実装しているのは前半の8Kバイト(8000H~9FFFH)です。メモリーには、5565(6264)という型番のRAMが採用されています。

図2-4.5565(6264)
図2-4.5565(6264)

5565(6264)は、パッケージの両長辺から金属のピン(端子)がでている「DIP(Dual In-line Package)」という形状をしています。ピンの数は28ピンです。

図2-5.5565(6264)のピン番号とその名称
図2-5.5565(6264)のピン番号とその名称

以下に、それぞれのピンの名前と役割を簡単に紹介します。

[mathjax]~\rm{\boldsymbol{A0}}~[/mathjax]~[mathjax]~\rm{\boldsymbol{A12}}~[/mathjax]:Address bus:8Kバイトのメモリーなので、13ビット幅のバスとなります。

[mathjax]~\rm{\boldsymbol{D0}}~[/mathjax]~[mathjax]~\rm{\boldsymbol{D7}}~[/mathjax]:Data bus:8ビット幅のバスです。データーの読み書きに使用します。

[mathjax]~\rm\overline{\boldsymbol{CS1}}~[/mathjax]:Chip select 1:[mathjax]~\rm\overline{CS1}~[/mathjax]をLレベル、[mathjax]~\rm{CS2}~[/mathjax]をHレベルにすることで、このRAMが選択された状態になります。YS-6464Aの回路では、[mathjax]~\rm{CS2}~[/mathjax]がHレベルに固定されているため、[mathjax]~\rm\overline{CS1}~[/mathjax]のみで制御します。

[mathjax]~\rm{\boldsymbol{CS2}}~[/mathjax]:Chip select 2:[mathjax]~\rm\overline{CS1}~[/mathjax]をLレベル、[mathjax]~\rm{CS2}~[/mathjax]をHレベルにすることで、このRAMが選択された状態になります。YS-6464Aの回路では、[mathjax]~\rm{CS2}~[/mathjax]は+5Vに接続され、常にHレベルです。

[mathjax]~\rm\overline{\boldsymbol{OE}}~[/mathjax]:Output enable:RAMの選択後、Lレベルにすることでリードモードになります。

[mathjax]~\rm\overline{\boldsymbol{WE}}~[/mathjax]:Write enable:RAMの選択後、Lレベルにすることでライトモードになります。

[mathjax]~\rm{\boldsymbol{+5V}}~[/mathjax]:Power source:+5Vの電源です。

[mathjax]~\rm{\boldsymbol{GND}}~[/mathjax]:Ground:グランド(0V)です。

[mathjax]~\rm{\boldsymbol{NC}}~[/mathjax]:Non Connection / No Connecting:通常、この端子にはなにも接続しません。

図2-6.5565(6264)のバスと信号の向き
図2-6.5565(6264)のバスと信号の向き

3.メモリーへのアクセスのしくみ

もう一度、YS-6464Aのメモリー空間を見てみましょう。Z80のアドレス空間のうち、前半の32Kバイト(0000H~7FFFH)をROM領域、後半の32Kバイト(8000H~FFFFH)をRAM領域とし、それぞれ先頭から8Kバイトのメモリーを実装していました。つまり、実際にメモリーが実装されたメモリー空間は、0000H~1FFFH(ROM)・8000H~9FFFH(RAM)となります。

図3-1.YS-6464Aのメモリー空間
図3-1.YS-6464Aのメモリー空間

では、どのようにしてROMとRAMを切り替えているのでしょうか。実際の回路図(メモリーに関する部分の抜粋)を見ながら考えてみます。

図3-2は、Z80とROM・RAMを接続する回路図です。Z80のデータバス([mathjax]~\rm{D0}~[/mathjax]~[mathjax]~\rm{D7}~[/mathjax])は、ROMとRAMに対して共通に接続されています。また、アドレスバス([mathjax]~\rm{A0}~[/mathjax]~[mathjax]~\rm{A15}~[/mathjax])のうち、[mathjax]~\rm{A0}~[/mathjax]~[mathjax]~\rm{A12}~[/mathjax]の13本が共通に接続されています。これは、いずれも8Kバイトのメモリーであり、13ビット幅のアドレスバスですべての範囲を表現できるためです。では、アドレスバスのうち、残りの[mathjax]~\rm{A13}~[/mathjax]~[mathjax]~\rm{A15}~[/mathjax]はどうなっているのでしょうか。[mathjax]~\rm{A13}~[/mathjax]と[mathjax]~\rm{A14}~[/mathjax]は未接続ですが、アドレスバスの最上位ビットである[mathjax]~\rm{A15}~[/mathjax]は、NOTゲートと2入力ANDゲート(負論理)で構成される回路に接続されています。

図3-2.YS-6464Aの回路図(メモリーに関する部分の抜粋)
図3-2.YS-6464Aの回路図(メモリーに関する部分の抜粋)

図3-3は、その回路を拡大したものです。この回路を「チップセレクト回路」といいます。この回路の入力には、Z80の[mathjax]~\rm{A15}~[/mathjax]と[mathjax]~\rm\overline{MREQ}~[/mathjax](Memory request)が接続されています。出力には、2764の[mathjax]~\rm\overline{CE}~[/mathjax](Chip enable)と5565(6264)の[mathjax]~\rm\overline{CS1}~[/mathjax](Chip select 1)が接続されています。[mathjax]~\rm\overline{CE}~[/mathjax]と[mathjax]~\rm\overline{CS1}~[/mathjax]は、いずれもLレベルでそのメモリーが選択された状態となります。

図3-3.YS-6464Aのチップセレクト回路
図3-3.YS-6464Aのチップセレクト回路

図3-4は、NOTゲートと2入力ANDゲート(負論理)の真理値表です。

図3-4.NOTゲートと2入力ANDゲート(負論理)の真理値表
図3-4.NOTゲートと2入力ANDゲート(負論理)の真理値表

では、チップセレクト回路の動作を見てみましょう。まず、ROM領域(0000H~7FFFH)にアクセスするときを考えます。アドレスが7FFFH以下の場合、アドレスバスの最上位ビットである[mathjax]~\rm{A15}~[/mathjax]は必ずLレベル(0)となります。メモリーへのアクセスを示す[mathjax]~\rm\overline{MREQ}~[/mathjax]もLレベル(0)となることから、チップセレクト回路を通った結果、2764の[mathjax]~\rm\overline{CE}~[/mathjax]がLレベル(0)、5565(6264)の[mathjax]~\rm\overline{CS1}~[/mathjax]がHレベル(1)となり、2764が選択された状態になります。

図3-5.チップセレクト回路の動作(ROM領域)
図3-5.チップセレクト回路の動作(ROM領域)

では、RAM領域(8000H~FFFFH)にアクセスするときはどうでしょうか。アドレスが8000H以上の場合、アドレスバスの最上位ビットである[mathjax]~\rm{A15}~[/mathjax]は必ずHレベル(1)となります。メモリーへのアクセスを示す[mathjax]~\rm\overline{MREQ}~[/mathjax]はLレベル(0)となることから、2764の[mathjax]~\rm\overline{CE}~[/mathjax]がHレベル(1)、5565(6264)の[mathjax]~\rm\overline{CS1}~[/mathjax]がLレベル(0)となり、5565(6264)が選択された状態になります。

図3-6.チップセレクト回路の動作(RAM領域)
図3-6.チップセレクト回路の動作(RAM領域)

このように、アドレスバスの最上位ビットである[mathjax]~\rm{A15}~[/mathjax]の状態、つまりアクセスするアドレスの範囲(0000H~7FFFH、または8000H~FFFFH)によって、選択するメモリーを切り替えています。これが、Z80のアドレス空間(0000H~FFFFH)が、前半の32Kバイト(0000H~7FFFH)と後半の32Kバイト(8000H~FFFFH)で分割されている理由です。

Z80では、メモリーにアクセスするときに使用するピンとして、アドレスバス([mathjax]~\rm{A0}~[/mathjax]~[mathjax]~\rm{A15}~[/mathjax])・データーバス([mathjax]~\rm{D0}~[/mathjax]~[mathjax]~\rm{D7}~[/mathjax])・メモリーへのアクセスを示す[mathjax]~\rm\overline{MREQ}~[/mathjax]のほかに、データーの読み込みを要求する[mathjax]~\rm\overline{RD}~[/mathjax]・データーバス上に有効なデーターを保持していること(書き込みの要求)を示す[mathjax]~\rm\overline{WR}~[/mathjax]があります。[mathjax]~\rm\overline{RD}~[/mathjax]は両メモリーの[mathjax]~\rm\overline{OE}~[/mathjax](Output enable)、[mathjax]~\rm\overline{WR}~[/mathjax]は5565(6264)の[mathjax]~\rm\overline{WE}~[/mathjax](Write enable)に接続されています。

図3-7.[mathjax]~\rm\overline{RD}~[/mathjax]と[mathjax]~\rm\overline{WR}~[/mathjax]
図3-7.[mathjax]~\rm\overline{RD}~[/mathjax]と[mathjax]~\rm\overline{WR}~[/mathjax]
イメージが出現する理由

Z80のアドレスバス([mathjax]~\rm{A0}~[/mathjax]~[mathjax]~\rm{A15}~[/mathjax])のうち、[mathjax]~\rm{A0}~[/mathjax]~[mathjax]~\rm{A12}~[/mathjax]と[mathjax]~\rm{A15}~[/mathjax]のみがメモリーのアクセスに使用されています。つまり、未接続の[mathjax]~\rm{A13}~[/mathjax]と[mathjax]~\rm{A14}~[/mathjax]がどのような値になっても、結局[mathjax]~\rm{A0}~[/mathjax]~[mathjax]~\rm{A12}~[/mathjax]と[mathjax]~\rm{A15}~[/mathjax]で示されるアドレスにアクセスするということになります。これが、イメージの出現する理由です。

本記事で紹介したチップセレクト回路は、YS-6464Aで採用されている回路です。システムが異なれば、また違ったチップセレクト回路が見られます。

おすすめ

たのしくできるセンサ回路と制御実験

出版社
東京電機大学出版局
著者
鈴木 美朗志
発売日
1999/1/20

機械に知力をつける 制御用マイコン―初歩から応用まで[第2版]

出版社
日刊工業新聞社
著者
太平洋工業株式会社
発売日
1986/2/1

図解 Z80マイコン応用システム入門(ハード編)

出版社
東京電機大学出版局
著者
柏谷 英一
発売日
2000/5/20

図解 Z80マイコン応用システム入門(ソフト編)

出版社
東京電機大学出版局
著者
柏谷 英一
発売日
2000/3/20

図解 マイクロコンピュータ Z-80の使い方

出版社
オーム社
著者
横田 英一
発売日
1981/5/1

ザイログZ80伝説

出版社
ラトルズ
著者
鈴木 哲哉
発売日
2020/8/25
この記事を読んだ人は、こんな記事にも興味があります。
スポンサーリンク
TOPへ移動
目次へ移動