ワンボードマイコンをつくろう!(パソコンの原点はここから始まった)
TK80ソフトコンパチブル!8080、Z80マシン語からBASICまでこれ1台でこなせます
当記事は2009年11月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 2011.6.26
前へ
次へ
目次へ戻る
ホームページトップへ戻る
☆それは特注品の試作から始まりました
TK80コンパチブルで、その上中日電工オリジナルのND80Zとしても動作するというZ80CPUのワンボードマイコンを企画し、その開発準備をしていたところに、ND80Zの特注品の開発依頼をいただきました。

[第5回]

●前回の7セグメントLED表示回路の説明についてあと少しだけ補足を

前回は7セグメントLEDの表示回路について説明をしました。
今回のZ80版TK80ボードの7セグメントLEDの表示は、数百HzのパルスをZ80CPUのBUSREQ端子に入力して、CPUの命令の実行をほんのわずかの期間(数μs)停止させておいて、その間にメモリから表示データを読み出して、それをラッチすることで行っています。
DMA(Direct Memory Access)による、ダイナミック点灯です。

CPUのクロックは水晶発振回路から得た4MHzですから、プログラムの実行時間はそれを構成する命令の実行クロックの総和にクロック周波数から求めた0.25μs/クロックを掛けることで正確に求めることができます。
しかしそこにたとえわずかとはいえ、毎秒数百回6μsほどの中断が発生するとなると、せっかくの水晶発振クロックの正確さも発揮することができません。

それでも、その誤差は6μs/1200μsていどですから、わずか0.5%ほどの誤差にすぎません。
通常のプログラムでしたら、問題になるほどではありません。

しかし、なかにはもっと正確な実行時間が求められるようなプログラムもあるかもしれません。
TK80はそういう正確な実行時間が必要なプログラムを実行する場合のために、7セグメントLED表示のもとになっているDMAを禁止することができるようになっていました。
TK80では8255のPC7の出力をLにすることで、DMA(およびLED表示)を禁止するような回路になっていました。

今回のZ80版TK80でも同じ考えで、DMAとLED表示を禁止することができるようにしてあります。
[第3回]の7セグメント表示回路で、DMAONという信号がそれです。
DMAONをLにすると、Z80CPUへのBUSREQ出力が禁止されると同時に、7セグメントLEDの各桁のコモン端子をドライブしている74LS145の出力も禁止されるので、LEDも表示されなくなります。

このDMAON信号は、同じく[第3回]のI/O回路にあります。
図の中ほどにある74HC373(I/Oアドレス98〜9B)からのD7出力がDMAON信号です。
モニタプログラムでは、初期状態でI/Oアドレスの98〜9Bにビット7=1であるような値を出力して、DMAと7セグメントLED表示が行われるようにします。
ユーザープログラムで、I/Oアドレスの98〜9Bに、ビット7=0になるような値を出力すると、それ以後はDMAとLED表示がおこなわれなくなりますが、そのかわりに、プログラムは遅延することなく正確な時間で実行されるようになります。
CPUをつくろう!第437回(2010.2.20upload)を再編集

ワンボードマイコンをつくろう![第5回]
2011.6.26upload

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