2016.12.20
前へ
次へ
ホームページトップへ戻る


KL5C80A12マイコンボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
KL5C80A12はZ80互換の高速高性能8ビットマイクロコントローラです。
残念なことに数年前に生産中止になってしまいました。
しかし当社ではKL5C80A12を使った組込みマイコンボードはまだ健在です。
そのKL5C80A12を使ったND80Z3.5上位互換マイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第5回]


●MMU

KL5C80A12のCPUコアはZ80互換の8ビットCPUです。
Z80互換ですからアクセスできるメモリアドレスは0000〜FFFFの64KBに限られます。
その一方ですでに説明しましたように、KL5C80A12は内蔵の512バイトのRAMのほかに外部にマキシマムモードでは最大512KBのメモリを接続することができます。
その場合外部メモリのアドレスは00000〜7FFFFの範囲になります(内蔵RAMはFFE00〜FFFFFです)。
0000〜FFFFの間のアドレスしかアクセスできないCPUコアで、00000〜7FFFFおよびFFE00〜FFFFFの物理メモリ空間をアクセスできるようにアドレス変換をするのがMMU(Memory Management Unit)の働きです。

KL5C80A12では64KBの論理メモリ空間をR0〜R4の5個のブロックに分けることができます。
論理アドレス上での配置順はR0<R1<R2<R3<R4です。
このうちR0の先頭アドレスは0000で、かつ物理メモリアドレスの00000に固定されています。
またR4の物理ベースアドレスはF0000に固定されています。
物理ベースアドレスは後ほど説明します。


上の図はマキシマムモードでの物理メモリと論理メモリの関連付けの例です。
あとで説明しますが、マキシマムモードで内蔵RAMをR4領域に割り当てると、アドレスFC00〜FDFFの範囲がメモリのない領域になってしまいます。
ですからここではR4のエリアは消滅させてしまってR3でカバーする構成にしています。
R0は下限アドレスが00000に固定されていますから、自由に配置することはできませんが、R1〜R3は図のように物理メモリのどこにでも自由に結びつけることができます。

論理メモリアドレスから物理メモリアドレスへの変換は各領域の論理アドレスと物理ベースアドレスを加算することで行なわれます。



BBR1(I/Oアドレス00)とBR1(I/Oアドレス01)は領域R1のレジスタです。
BBR2(I/Oアドレス02)とBR2(I/Oアドレス03)は領域R2のレジスタです。
BBR3(I/Oアドレス04)とBR3(I/Oアドレス05)は領域R3のレジスタです。
BBR4(I/Oアドレス06)とBR4(I/Oアドレス07)は領域R4のレジスタです。
BBRnは領域Rnの下限論理アドレスの上位6ビット(A15〜A10)を定義します。
BBRnの上位2ビットはBRnと合わせて物理ベースアドレスの上位10ビット(A19〜A10)を定義します。
ただしBBR4の上位2ビットは常に0で、BR4は常にF0Hに固定されています。
いずれも下位10ビット(A〜A)は0です。
まずは論理ベースアドレスについて下の図で説明をします。



論理ベースアドレスは同時に下位ブロックとの境界を示すアドレスでもあります。
たとえば上図の例でアドレス8000はR1の先頭アドレス(論理ベースアドレス)であるとともにR0との境界のアドレスでもあります。
各ブロックは先頭アドレス(論理ベースアドレス)のみ定義します。
なぜならその終わりのアドレスは上位のブロックの先頭アドレス(論理ベースアドレス)によって決定されるからです。
R0の先頭アドレス(論理ベースアドレス)はシステムによって0000に決定されていて変えることはできません。
したがって各ベースアドレスは01〜3Fの値を設定できますが、3Fは無効値とされていて、3Fを設定するとそのブロックは消滅します。
おそらく3Fにそのような特殊な意味を持たせたためだと考えられますが、本来の計算上のベースアドレス値から−1したものを設定値にするというルールになっています。

上の例でR1の先頭アドレスは8000です。
その上位6ビットは20になりますが、BBR1に設定する値はそこから−1した1Fになります。
上の例ではBBR4に3Fを指定しているので、R4は消滅します。
そのときR3は上位のブロックがないため、終わりのアドレスはシステムの上限のFFFFになります。
各設定値の大小が逆転したり同じ値を設定すると、下位のブロックが消滅します。
たとえば上図の例でBBR1=28とするとその値は無効値とされ、R1が消滅します。

上の例では、BBR1〜BBR4の上位2ビットは0にしています。
その各2ビットは物理ベースアドレスの下位2ビットです。
BBR4の上位2ビットは常に0になります(この2ビットはread onlyです)。
BBR1〜BBR3の上位2ビットは上の例では0にしていますが、いつも0でなければならないというわけではありません。
物理ベースアドレスについては後ほど説明します。

KL5C80A12はリセット直後はシステムによりBBR1〜BBR4の値が3Fに設定されます。
これによりR1〜R4は消滅しR0のみになります。
R0の先頭アドレスは物理アドレスの00000に結びつけられているため、論理メモリ空間は下図のように物理メモリの00000〜0FFFFになります。


次は物理ベースアドレスの説明に移るわけですが、ちょっと説明が長くなってしまいましたので、この辺で一息入れて、続きは次回にすることにいたします。

KL5C80A12マイコンボードの製作[第5回]
2016.12.20upload

前へ
次へ
ホームページトップへ戻る