標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第436回]

●やっとMYCPU80を発送しました

1月にご注文いただいていた分のMYCPU80の基板2枚が先週になってやっとできてきましたので、ここ何日かその発送のための準備に追われていました。
昨日やっと発送することができました。
ご注文いただきましたK大学様および千葉県八千代市のYS様、大変お待たせして申し訳ありませんでした。
今後ともよろしくお願いいたします。
有難うございました。

その後にご注文いただきました札幌市のAI様分につきましては、現在プリント基板を手配中です。
お待たせして申し訳ありませんが、プリント基板が出来あがってきますまで、今しばらくお待ちくださいますようお願いいたします。

●前回の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表示を禁止することができるようにしてあります。
[第434回]の7セグメント表示回路で、DMAONという信号がそれです。
DMAONをLにすると、Z80CPUへのBUSREQ出力が禁止されると同時に、7セグメントLEDの各桁のコモン端子をドライブしている74LS145の出力も禁止されるので、LEDも表示されなくなります。

このDMAON信号は、同じく[第434回]の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表示がおこなわれなくなりますが、そのかわりに、プログラムは遅延することなく正確な時間で実行されるようになります。

2010.2.18upload

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