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

●組立説明書の [2]メモリ(RAM)回路とスイッチ入力回路 の続きです

☆☆☆今回は動作テストの説明です。前回にも書いたことですが、今回も描かなければいけない説明図がたくさんあって、大変でした。☆☆☆

●2−14.動作テスト

以上で[2]メモリ(RAM)回路とスイッチ入力回路の組立は完了です。
電源をつないで動作を確認してみましょう。
といっても、まだCPUらしい動きは何もできません。
今回はRAMとスイッチを実装しましたから、メモリにデータを書き込むことだけができるようになりました。
 
MYCPU80組立キットに付属しているACアダプタ型+5V電源のDCプラグを、MYCPU80基板の電源ジャック(J1)に接続して、電源本体のACプラグをACコンセントに差してください。

●2−15.メモリにデータを書き込む

最初はメモリの書き込み、読み出しテストを行うだけですから、適当なデータをメモリに書き込んでみます。
アドレス0000に12を、0001に34を、0002に56を、0003に78をそれぞれ書き込んでみます(数値は全て16進数です)。

(1)トグルスイッチを使ってメモリに直接データ(プログラムも同じ)を書き込むときは、ディップスイッチDS3の一番左側の4のみを、小型のマイナスドライバを使って図のようにON(下側)にセットします。



DS3−4をONにすると、アドレスバス、データバスやその他の制御信号ラインがCPUから切り離されて、外部から直接メモリにアクセスすることができるようになります。
このスイッチ(DS3の4番)は外部からCPUにバス信号線を開放することを要求するBUSRQ(BUS Request)につながっていて、スイッチをONにするとBUSRQがアクティブになって、CPUから出力されているBUS信号線やその他の制御信号線がハイインピーダンスになり、外部から制御できるようになります。
BUSが開放されたことを示すLED(BUSAK)が点灯します。同時にメモリがREADアクセス状態になるため、MRD(Memory Read)も点灯します。

(2)ディップスイッチのDS1、DS2とトグルスイッチのA3〜A0を使って、メモリアドレスをセットします。
このスイッチはBUSRQがアクティブのときだけ有効になります。
回路図bPでDS3−4をONにすると、その信号が回路図bR0のT1(トランジスタC1815)に送られて、T1がアクティブになることで、アドレススイッチ、データスイッチがGNDとつながります。

図のようにディップスイッチのDS1、DS2とトグルスイッチのA3〜A0の全部を下側にします。スイッチを上側にすると"1"、下側にすると"0"がセットされます。
これでアドレスが2進数表示の0000 0000 0000 0000(16進数表示の0000)にセットされたことになります。
ディップスイッチは小さいので、小型のマイナスドライバを使ってセットします。
トグルスイッチは普通に指でセットできます。


アドレスバスの状態を示すLED(ADDRESS BUS)のA15〜A0は全消灯します。

(3)トグルスイッチのD7〜D0を使って、データをセットします。
メモリアドレス0000には12(16進数)を書き込みます。
16進数の12は、2進数では0001 0010になります。
図のように、トグルスイッチのD7〜D0のうちのD4とD1を上に、その他を下にします。



この段階では、まだデータスイッチの状態はメモリに反映されていません。
メモリからはアドレス0000の現在の値(現在メモリに書き込まれている値)がデータバスに読み出されています。
データバスの状態は、LED(DATA BUS)のD7〜D0に表示されます。
たまたまデータスイッチとメモリからの値とが一致したビットはスイッチの状態がそのままLEDに表示されますが、スイッチとメモリからの値が一致しないビットは、スイッチとメモリからの値がショートするため、LでもなくHでもない中間的な値になりますから、LEDは薄く点灯するかまたは消灯します。
[注意]この状態のまま長く置くことはICにとってはよくありませんから、このまま長い時間放置しないようにしてください。

(4)MEMWRSWを押します。
MEMWRSWを押すと、IC251(74HC123)からワンショットパルスが出力され、そのパルスがメモリ(RAM)のWR信号になるので、データスイッチでセットした値がメモリに書き込まれます。
その瞬間にメモリから出力される値がデータスイッチでセットした値と一致しますから、LED(DATA BUS)の表示がデータスイッチで設定した値の通りになります。



(5)次のアドレス0001(16進数表示)をセットします。
2進数表示では0000 0000 0000 0001ですから、最下位ビットのA0が変わるだけです。
トグルスイッチA0だけを上にセットします。
DS1、DS2は変更なしです。


データスイッチD7〜D0の値は、MEMWRSWを押さないことには、データバスに反映されませんが、アドレススイッチの状態は、ただちにアドレスバスに反映されます。
アドレスバスの状態を示すLED(ADDRESS BUS)のA15〜A0は、右端のA0のみが点灯します。



(6)データ34(16進数)をセットします。
2進数表示では0011 0100です。
トグルスイッチD7〜D0のうち、D5、D4、D2が"1"(上側)で、その他のスイッチは"0"(下側)にします。



(7)MEMWRSWを押します。
メモリにデータスイッチでセットした値(34)が書き込まれた結果、LED(DATA BUS)の表示も34(00110100)になります。



(8)次のアドレス0002(16進数表示)をセットします。
2進数表示では0000 0000 0000 0010ですから、A1のみが"1"(上側)で、その他は"0"(下側)にします。
DS1、DS2は変更なしです。



LED(ADDRESS BUS)の表示も0000 0000 0000 0010になります。



(9)データ56(16進数)をセットします。
2進数表示では0101 0110です。
トグルスイッチD7〜D0のうち、D6、D4、D2、D1が"1"(上側)で、その他のスイッチは"0"(下側)にします。



(10)MEMWRSWを押します。
メモリにデータスイッチでセットした値(56)が書き込まれた結果、LED(DATA BUS)の表示も56(01010110)になります。



(11)次のアドレス0003(16進数表示)をセットします。
2進数表示では0000 0000 0000 0011ですから、A1とA0のみが"1"(上側)で、その他は"0"(下側)にします。
DS1、DS2は変更なしです。



LED(ADDRESS BUS)の表示も0000 0000 0000 0011になります。



(12)データ78(16進数)をセットします。
2進数表示では0111 1000です。
トグルスイッチD7〜D0のうち、D6、D5、D4、D3が"1"(上側)で、その他のスイッチは"0"(下側)にします。



(13)MEMWRSWを押します。
メモリにデータスイッチでセットした値(78)が書き込まれた結果、LED(DATA BUS)の表示も78(01111000)になります。



●2−16.メモリからデータを読む

(1)データスイッチをFFにする。
ディップスイッチDS3の4をONにした状態では、アドレススイッチ(ディップスイッチDS1、DS2とトグルスイッチA3〜A0)で示されるメモリアドレスに書き込まれているデータが、そのままLED(DATA BUS)のD7〜D0に表示されます。
ただしこのときデータスイッチ(トグルスイッチD7〜D0)がON(下側)になっていると、そのビットは正しく表示されません。
そこでメモリからデータを正しく読むためには、トグルスイッチD7〜D0を全て"1"(上側)にしておく必要があります。



データスイッチを図のように全部上側にすると、これは2進数の11111111(16進数のFF)を示していることになります。
データスイッチをこの状態にすると、メモリから出力されたデータがデータスイッチの影響を受けなくなるため、LED(DATA BUS)に正しく表示されるようになります。
アドレススイッチが、上の2−15.の作業で0003の状態になっていたとすると、データスイッチをFFにしても、LED(DATA BUS)は78(0111 1000)を表示しているはずです。

(2)アドレスを0000にしてみる。
アドレススイッチを、2−15.(2)と同じように、0000(16進数)にしてみます。
すると、アドレススイッチをそのようにセットするだけで、LED(DATA BUS)には、さきほどメモリアドレス0000に書き込んだ値12(00010010)がただちに表示されます。

(3)アドレスを0001にしてみる。
アドレススイッチを、2−15.(5)と同じように、0001(16進数)にしてみます。
LED(DATA BUS)には、メモリアドレス0001に書き込んだ値34(00110100)が、ただちに表示されます。

(4)アドレスを0002にしてみる。
アドレススイッチを、2−15.(8)と同じように、0002(16進数)にしてみます。
LED(DATA BUS)には、メモリアドレス0002に書き込んだ値56(01010110)が、ただちに表示されます。

●2−17.うまく動作しないときは

今回の作業でハンダ付けを行った個所のどこかに、ハンダ付けの不良、ショート、ハンダの付け忘れ、あるいは部品の取付けミス(部品違い、逆差し)などがあると考えられます。
もう一度よく確認をしてみてください。
それでも解決しなかった場合は、どのような異常なのかをメールにて当社にご連絡ください。
メールを見させていただいた上で、さらにチェックしていただきたいポイントなどを、ご返事いたします。

2009.8.9upload

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