ワンボードマイコンをつくろう!(パソコンの原点はここから始まった)
TK80ソフトコンパチブル!8080、Z80マシン語からBASICまでこれ1台でこなせます
[第175回]
●ND80Z4Eの回路図から PICの効用
ND80Z4Eの回路図は[第156回]にあります。
ND80Z3.5の初期モデルとしてND80ZV組立キットを製作して販売を開始したのは2011年でしたからそれからもう14年も経ってしまいました([第110回])。
このころは消費税もまだ5%だったのですね。
価格は22000円(税別)でしたからつい先日までのND80Z3.5組立キットと同じ価格でずっとやってきたことになります(その間に消費税は倍の10%になりました)。
その1年後にND80ZVをマイナーチェンジしND80Z3.5として販売を開始しました。
その変更はZB3DOS(CP/M互換DOS)に対応する目的で基板上に増設RAM回路を追加したことです(ワンボードマイコンでCP/Mを![第237回])。
十年ひと昔といいますからひと昔を越えてずっと同じ価格でやってきたことになります。
その間にパーツの仕入価格も少しずつ上がりことに近年の円安もあってさすがにこのままでは無理というところまで来てしまいました。
それでやむを得ず先日ND80Z3.5組立キットおよび完成品の値上げに踏み切りました。
ことはND80Z3.5だけではなくてそのほかのほぼ全製品に及びます。
時間をみつけて少しずつ原価計算をし直しながら価格の改定をしていく予定です。
しかしただ単に原価が上がったから値上げをするというのもなんだかなあという感じですし10年以上も同じ回路のままやってきていることですからここらで何とか一工夫できないものかと無い知恵をしぼった結果誕生したのがND80Z4Eです。
EはEconomyの意です。
必要性が低いと思う回路は思い切って省くことにしました。
いまどきRS232Cも無いだろうということで省きました。
RAMのメモリバッアップもSAVE/LOADの機能を使えば省くことが可能と考えて省いた結果メモリ周りもすっきりしました。
ND80Z3.5では82C55の全ポートをユーザーに開放するためにTK−80ではキースイッチのアクセスに8255を使っていたところを74HCロジックICで代用していました。
ここもTK−80に戻って82C55でキースイッチにアクセスするように改めました。
もっとも大幅に回路を変更したのが7セグメントLED表示回路です。
下はND80Z3.5のLED表示回路です。

動作としてはTK−80と同じDMA回路になっています。
タイマーIC555によって周期パルスをCPUに送り短い時間CPUの動作を停止してアドレスバス、データバスとメモリのアクセス信号を開放させてRAMのLED表示データがあるアドレスを順に読んでそのデータを7セグメントLEDに表示させています。
74HC191はLEDの表示桁を選択するためのカウンタで74HC373はRAMから読み出した表示桁に対応する値を表示期間中ラッチしておくために使っています。
7セグメントLEDはダイナミック点灯を行なっています。
全桁を常時点灯させるのではなくて数百Hzで短時間に一度に1桁だけを順に点灯することで人間の目には全桁が点灯して見える表示方式です。
各桁の表示はわずかな期間表示するだけなので表示する期間は大きな電流を流して明るく光らせます。
そのため各LEDのコモン端子には全セグメントの点灯時には短時間ですがかなり大きな電流が流れます。
その値は標準的な74HCロジックの許容値を越えますからLEDドライブのために74LS145を使っています。
いずれのICも価格が高くなるとともに入手が困難になってきています。
特にLS145は深刻です。
実はND80Z3.5の7セグメントLED表示回路はTK−80よりも複雑になっています。
右下のA10〜A14につながる回路はTK−80には無い回路です。
TK−80は小さなメモリ容量のRAMを搭載していたので7セグメントLEDの表示アドレスは83FXにありました。
ND80Z3.5では62256型の32KBのRAMを搭載していますからRAMのアドレスは8000〜FFFFになります。
右下の回路が無いと7セグメント表示データのアドレスはFFFXになってしまいます。
ND80Zモニタプログラムではそのようになっているのですが昔のTK−80のプログラムを走らせようとすると7セグメントLEDに表示できません。
ND80Z3.5のシステムROMにはND80ZモニタプログラムとTK−80モニタプログラムが入っていてスイッチで選択するようになっています。
右下の回路はTK−80モニタプログラムが選択されていたらアドレスのA10〜A14を強制的に0にすることで83FXが選択されるようにするためのものです。
その部分を含めて全体としてかなり多くのロジックICを使っているのでコスト低減のためにはここは一番なんとかしたいところでした。
実のところ最大のコスト高の要因はキースイッチの高騰でした。
なかなかにしっかりしたキースイッチなのですが仕入れの度に価格が上がって今では昔の数倍になってしまいました。
これが一番のコストアップ要因でしたのでND80Z4Eでは比較的低価格で入手できるタクトスイッチに変更しました。
話がそれてしまいましたがキースイッチに次いでなんとかしたいと思ったのが上記の7セグメント表示回路でした。
で。
回路図を眺めていて思いついたのがこの回路をPICに置き換え出来ないかという考えでした。
今は少しお休みしていますがついこの間までPICBSコンパイラとかPICWRITERとかで結構PICをいじくっていたじゃありませんか。
今こそ。
ここにPICを使うべき。
がしかし。
CPU回路にPICを使おうとするときに障害となるのはPICが遅いということです。
何を言ってるの。
ND80Z3.5のCPUクロックは6MHzだけどいまどきのPICなら普通に20MHzはいけるでしょう。
そうなのですけれど。
その程度のクロックではCPUの周辺LSIとしてはとても使えないのです。
計算を簡単にするためにZ80のクロックが4MHzだったとしてIOWR信号のパルス幅はわずか0.5μsしかありません。
一方でPICは20MHzのとき1命令を0.2μsか0.4μsで実行しますがそれではCPUから出されるWR信号を見て何らかの処理をすることはとてもできません。
割込みを使ったとしても無理です。
CPUバス信号に合わせられるような機能のPICもあるようですが単純なPPI(Programmable Peripheral Interface)として使うならともかくとして今使いたいと思っているようなちょいと複雑な回路の置き換えにはとても使えません。
やっぱりなあ。
無理だよなあ。
一旦は諦めようとしたのですけれど。
そこをもうひと頑張り。
回路図をうーんとうなって見詰めていましたら。
やっと気が付きました。
あれ?
そうだった。
この回路、DMAじゃありませんか。
つうことは。
クロックが遅くてもとにかく見た目不自然にならない程度の速度でダイナミック点灯ができればいい!
それならできるじゃありませんか。
ということに気がついてPICに置き換えたのが下の回路です。
この回路図は[第156回]でお見せしました。

ND80Z3.5の7セグメントLED表示回路をPIC1個で置き換えてしまいました。
なおPICのポート出力でも7セグメントLEDのダイナミック点灯をダイレクトに行なうのは少しきついのでトランジスタでドライブしています。
ここは74LS145の置き換えです。
ワンボードマイコンをつくろう![第175回]
2025.10.31upload
前へ
次へ
ホームページトップへ戻る