シンプルZ80マイコン(2)
2025.09.11
コンピュータとは、すなわち配線なり。
とにかく配線が大変だと思えば良いです。

トランジスタ百万個とか数千万個を集積・・・と聞きますが、実際にはトランジスタ等の素子同士をつなぐ配線のほうが多くの面積を占めていると思います。

昔、通っていた学校には汎用機(メインフレーム)があり、後ろの穴からのぞきこむと、ラッピング線がたくさん接続されていました。CPUを構成する基板が何枚もささっていて、これらをお互いに接続する為のバックプレーンの配線です。

4ビット、8ビット、16ビット、32ビット、64ビット、ということは、それだけ配線の数が増えるということです。

64ビットを手配線することを想像すれば、データ8本、アドレス16本のZ80なんか楽だと思うことにしましょう。(今後も時々思い出しながら配線すると、難行苦行も難なくこなせるかも)


さて、本に載っていた簡単マイコン回路の課題を書きます。

あの頃は何も知らず、書いてある通りに作るしかありませんでした。
就職してから上司に聞いてみると、わけのわからない事を言われて頭がパンクしました。
そのレベルに追いつくまでずいぶん時間を要しましたが、いまでは下記のように説明できます。

この回路の課題

■リセット回路
(1)立ち上がりが遅い場合、/RESETがバタついてZ80が不安定になる事がある。
シュミットトリガ74LS14等を通して入力する事。

(2)この回路では瞬間的な電圧低下に対してリセットがかからない場合がある。
放電用としてDがついているけれど短時間にON/OFFされると放電しきれずリセットがかからない場合がある。
実験的には構わないが、リセットIC(電圧検出)を付けること。

(3)リセットスイッチSW1で電解コンデンサをショートしているので、瞬間的に大電流が流れ、接点を傷める。
SW1と直列に数十Ωを接続すること。

■制御信号/MREQ、/WR
ダイオードを通している為、その順方向電圧によりLレベルが持ち上がるのでノイズマージンが低下する。
Lレベルが持ち上がりすぎると正常に動作しないことがある。
もしどうしてもダイオードを使うならショットキーダイオードを使用することが望ましい。

当時は最初ダイオードで試してなぜかうまくいかず(ほかの原因もあったでしょうけれど)、結局はICをいくつか使った回路にしてようやく動きました。

■DMA
BUSREQとBUSACKを使うやり方が多いと思うけど、単純にZ80にリセットをかけ続ける(Lレベル継続)とバスが開放されるので、アドレス・データスイッチからDMAが可能となる。
これでRAMに直接プログラムを書いたり読んだりする。

BUSREQでバスを開放させた場合と、RESETをかけ続けてバスを開放させた場合での違いについて、データシートの記述を良く確認して比較してみる。
MREQ, RD, WRの信号がハイインピーダンスになるか、Hレベルになるか、そういった違いもあったような気がする。(年数経過で忘れた。要確認)

■クロック
そのマイコンが対応できる最大の周波数にしたくなるのが人の性
それ以上にしてみたくなる人の性
さらに、どこまでいけるか試してみたくなるのも人の性

実験で動かしてみるだけなら遅いクロックで十分。
それでも人間より速い。
かえって遅くしたほうが、目で動きが追えるので面白い。

注意:NMOS版Z80では最低動作周波数がある。内部がダイナミック回路になっているため。

CMOS版では手動クロックでも動作可能。
押しボタンの信号をチャタリング処理して、クロックとして与える。
1クロックずつの動作を追ってみるのも勉強になる。

NMOS版ではクロックの入力条件が本来は厳しい。
おそらく内部でクロックをたくさん分配しているから負荷が重たいのだろうけど、いろんな製作例を見ても、厳密にはほとんど条件を満足していないようです。
それでもとりあえず動いています。

■DMA部
スイッチ側のアドレス・データにはバッファを入れる。/RESET=Lの時だけバッファをイネーブルする。

■そのほか
バスにプルアップ抵抗を入れるべきかどうか。入れておくと良い。
参考値10KΩで、コモンタイプの抵抗アレイ8素子入が使いやすい。

バスの使用条件でハイインピーダンスになる場合があるなら入れるべき。/RESET=Lの時とか、BUSREQ=Lの時とか。
トラックバックURL
トラックバック一覧
コメント一覧
コメント投稿

名前

URL

メッセージ

- CafeLog -