KZ80マイコンでTom’s SBC(1)

KZ80-1MSRAM

2021年 あけましておめでとうございます。今年も電子工作的に自分が気が向いたことを、ぼちぼちと試してBLOGに残していこうと思います。

さて…..Tom’s SBCというGrantさんのCP/Mマイコンと似たシステムがあるようで、FuzixというZ80などのCPUに対応したOSが対応してるみたいです。KZ80-ZilogIOと手持ちの各種基板を組み合わせたら作れそう。ちょっと検討してみます….

Fuzixの情報

Fuzixという名前のOSは、たまにTwitterなどでも見かけてはいたのですが、いかんせん日本語情報がなかなかありません。英語の不得意な私には厳しい状況です。なにやらUNIXライクOSらしいのですが…

そんななか、電子ブロック工房さんのところでTom’s SBCというマイコン用のFuzixのブートROMやCFカードイメージでブートすることに成功されています。スクリーンショットも掲載されていてFuzixの動作イメージがわかりやすくなっています。素晴らしい。

FZ/KM mega の紹介

FZ/KM web の紹介:Fuzixをwebアプリケーションで実行

Fuzix公式のサイトとしては、以下のgithubや公式サイトがあります。

GitHub - EtchedPixels/FUZIX: FuzixOS: Because Small Is Beautiful
FuzixOS: Because Small Is Beautiful. Contribute to EtchedPixels/FUZIX development by creating an account on GitHub.
301 Moved Permanently

公式サイトの「Bootable Image」にTom’s SBCというマイコン用の64kバイトROMと128M CFカード用イメージが載ってます。”SBC”というからにはKZ80マイコンでも行けそうじゃん?というところがとっかかりです。

githubの説明にも書いてますが、以下のシステム要件みたいです。ブートROMとしてはバンクROMが必要でRAMは64k(システム32k、ユーザーー32k)ということでした。

What does UZI have over FUZIX
Can run in 64K of RAM (32K kernel/32K user). FUZIX would need banked ROM or similar to pull this off. If you have banked ROM then our kernel footprint in RAM is about 8K plus userspace plus any framebuffers and similar overhead. On a 6809 it’s just about possible to run in a straight 64K

FuzixOS: Because Small Is Beautiful

Tom’s SBCの仕様

Tom’sSBCの仕様ですが、電子ブロック工房さんのサイトからもリンクされている以下のサイトに回路図などがありますので、そちらを参考にしたいと思います。

CPM Z80 Board Version C - OSHWLab
In EasyEDA open source hardware lab, open source square pools all kinds of electrical design engineerings together to realize resource sharing easily.
  1. CPUはZ80
  2. I/Oポートとしては以下の通り
    • Z80 SIO : $00-17
    • CFカード : $10-17
    • メモリー制御 : $38-3F
  3. ROMは$0000-$3FFFの16kB。
    • メモリー制御の$3E、$3FでA14、A15アドレス信号を制御しているので64kバイト ROMを16kBごとに4バンク使える
  4. RAMは64kB装備
    • ブート時は$4000-$FFFFまでがRAMだが、メモリー制御の$38へHレベル($01)を出力すると64kバイトフルRAM構成となる。

メモリー制御の部分が若干拡張されていますが、以前 KZ80-CF(CFカードアダプタ)や KZ80-ZilogI/Oボードを作ったときに参考にさせていただいた、以下のGrantさんのCP/Mマイコンに準拠しています。

Grant's home-designed CP/M machine

GrantさんのCP/Mマイコンだとメモリー制御はROMを無効化してフルRAM(64kバイト)にする部分だけでしたが、そこを74ALS259(8ビットアドレス可能ラッチ)を使って拡張しているようでした。

74ALS259(8-bit Addreable Latch)の動き

74ALS259(または74HC259)は手持ちにありませんでしたので、データシートを見てみました。概要はこんな感じ。

TC74HC259データシート

ここの説明だけだとわかりずらいので、論理図と真理値表も見てますと….

TC74HC259データシート

上記のようなものであるらしく、A、B、Cの3つの信号線にアドレスを入力。それに対応したQn(n:0~7)の信号線についてDATA-IN端子の信号をラッチするというもののようです。ちなみにCLR信号線がLレベルになるとQn(n:0~7)の信号線は全部Lに落ちます。

出力信号線1本づつの状態をON/OFF制御できる便利ICなんですね。持ってないですけど。

Tom’s SBCのメモリー制御

GrantさんのCP/Mマイコンでは74LS00(NANDゲート)x2個のRSフリップフロップで1ビット分の情報を保持してそこをON/OFFすることでROM+RAM構成とフルRAM構成を切り替えていました。

そこに加えて、Tom’s SBCでは 搭載ROMを64kバイトにして16kバイトずつ(つまりアドレスバスとしてはA0~A13)分のバンクROMとして使うために、残りのA14、A15信号線を74ALS259(8-bit Addreable Latch)を使って制御しています。

I/Oアドレスの$3E番地でA15アドレス信号、$3F番地でA14アドレス信号を制御している感じです。電源投入時のリセット信号をCLR端子へ入れてますので、初期状態ではどちらもLレベルとなりブートROMの$0000-3FFFの16kバイトが使われます。

Tom’s SBC回路図
EasyEDA(Standard) - A Simple and Powerful Electronic Circuit Design Tool
EasyEDA is a free and easy to use circuit design, circuit simulator and pcb design that runs in your web browser.

KZ80マイコンで足りない回路の検討

KZ80マイコンでは、基本的な回路はGrantさんのマイコンをベースにしたのですが、アドレスデコードとかROM/RAMバンク切り替えの回路が違います。

その部分を外付け回路として作れないものかと回路図を引いてみました。ただし、手持ちに74ALS259(8-bit Addressable Latch)が無いので、74LS138とか74LS74とかで作れないかなと検討した結果が以下の回路であります。

まだ未検証ですが(すいません) 74ALS259相当部分は、クロックパルスとして 74LS138でアドレスデコードした信号を74LS04で反転しそれぞれの信号を74LS74へ投入。ラッチするデータとしてはTom’s SBCにならってD0信号線。ROM/RAM切り替えの制御はGrantさんのCP/MマイコンやTom’s SBCにならって74LS32が2つの回路で生成して….ということで動かないかなぁと考えました。

信号の制御がちゃんとできているかの確認のためにLEDもあるといいよねと思って追加回路をつけたりしているわけですが、当初は2SC1815で組んでみた回路を、先日秋月電子で買ったトランジスタアレイ(シンクドライバ)も「使ってみたかった」という理由で入れてみていたりします。

買ったのは以下のTD62003APGですが、KiCADのシンボルにあったのはピン互換?のULN2003Aだったのでそちらにしています。TD62004APGはディスコンみたいですし、ULN2003Aの方が安いので今後はそちらの方が良さげです。

トランジスターアレイ(7chダーリントンシンクドライバー) TD62003APG: 半導体 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,LED,マイコン,電子工作トランジスターアレイ(7chダーリントンシンクドライバー) TD62003APG秋月電子通商 電子部品通信販売

ここまで作ってみて、まぁ…..素直に74ALS259とか74HC259を調達してシンプルな回路にした方がいいよねと思い始めている2021年のお正月なのであります。

…..というわけで、この検討はつづくのであります。

コメント