始める電子回路 CPUを作る 回路がわかる本 始める電子工作 

ROMブロック単独動作


        

本来のROMブロックの単独 動作確認


ここまでROMの基本機能は確認できたので 本来のROMブロック機能の確認!!

アドレスバスの信号によって内容を読み出す TD4 ROMの本来の機能


* このテストはオリジナルのDIPスイッチのROMでも アドレスバスのAD0-AD3に接続すれば同様に機能確認出来るはずです。オリジナルのまま作る人もSWいっぱい付けて完成したらテスト方法として参考にできます。
     (ただし動作確認すると、楽しみの先取りになるかもしれないので、そのへんは以前の回の TD4スゴロクを振って....)


ROMがSWで入力されているデータを読み出す原理は  ROMブロックの役割  を参照。

アドレスバスとして出ている AD0-AD3 に本来はCPU機能から来るアドレス信号が入るわけですが、その代わりに、作った信号を入れて動作確認しようという試みです。

さて、その AD0-AD3に入れる4bitデータですが、 配置基板には ディップスイッチ(DIPsw) がなぜかあります。。

  右上の方に青い4連SWが。。


先に基板右側にある4bitDIPswを先に作ってしまうことを 思いつきました。

これは本来、操作入力に使うもので最後の方に制作することになりますが、先にこれを作ってDIPsw機能だけを使う・・・ちょうど4bitだし。

こんな出来になりました。

本では、この4スイッチはプルダウンになっています。
  ON=High の方が初心者にはわかりやすいからと言うことだそうです。
  プルアップの方になれているので1kΩのプルアップで制作。

10kΩぐらいのプルアッフにすると、この場合、ICクリップなどのコネクタで簡易的に信号を取り出すので不安定になることもありそうなので、本書にあわせ1kで作りました。

これでSWと抵抗の真ん中をROMのアドレスバスにつなぐとH,L信号がSWで切り替え可能に。

テスト確認


アドレスバスに DIPswとつないだ線から信号を入れて動作を検証

準備
   アドレスバスと作ったDIPswをICクリップでつなぐ。
   LEDもデータバスとつないでおく。
   ROMのクロック入力SWを OFF側に設定


アドレスバスへ入れた信号で その行の内容がデータバスに出てくればOK!

こんな感じでつなぎました。




左下ad0-3にpinを出しています。こことこれから作るCPU部分とがつながるので、ここにSWで作った信号を入力。。

実態基板と、絵 ちゃんと同じで気持ちいいですね。普通は、ちゃんと配線書いても現場アレンジで作っているうちに違ってきたりするんですが。。見事に見比べられ、写真と見劣りしない・・(^^   と悦に浸っていないで テストです。

まずは ROMにデータをいれておきます。

ROMの内容のデータを入れるプログラミングは
   ・オリジナルROMなら ディップSWを チマチマと上げ下げ。
   ・近代的TD4ROMなら マウスで PC画面上のディップSWらしきボタンを チマチマと上げ下げ そして転送。

どっちでも1つずつ入れていくわけですが これまでと同様に

ROM番号    アドレスバス   ROMの内容
  0     =   0000       0000 0001
  1     =   0001       0000 0010
  2     =   0010       0000 0100
  3     =   0011       0000 1000
           ・
           ・

ROMにデータ として ROMの内容 を通信で入れる。
    オリジナルSWROMの人は SWの上げ下げ設定で入力

ROMの内容は LEDが流れるように
  0001 → 0010  のようなデータを書き込む。

これでアドレスバスのデータを 0000 → 0001 → と変えていくと そのROM番号の中身がデータバスに出てきて、LEDの点灯になってわかる
DIPswを アドレスバス にあわせて 0000  → 0001  → 0010 ・・としていくと、LEDの点灯が変わっていくハズ。


調子わるい・・


DIPswで 0001 、 0010 などを入力していきますが、
うーんおかしい、出力がうまくでない・・たまに調子が悪くなるときがあったりして動作が変です。

AVRのプログラムや回路などを修正したりもしましたが、いろいろ試すとあるとき原因がわかりました。
通信ボードを抜くと、ちゃんと正常動作して読み出す。通信ボードを刺したままだと、アドレス信号が変わっても切り替わらない。

AVR側の問題です。クロック入力ではうまくいきましたが、アドレス信号の読み取りは問題があります。
なぜだろう。。

ポートとして ポートPD0-6 のうち
PD0,PD1は 通信ポートに使用
PD2 はクロック入力ポート(割り込み)
PD3-PD6 までを アドレスポートに設定  とポートPDは 面倒にも分けて使用しています。

なぜだろう。。 3-6BITだけを抜き出して使用しているので他のビットの影響は受けないはずですが、ポートが他の影響で誤作動しているかな。動くのを優先で作ってきたのであまり煮詰めていません。。

詳しく考える必要がありそうです。でも書き込んだ後、通信ボードを抜けば正常動作はするので機能は果たします。

DIPswの上げ下げでデータを作るので軽快にはいかなかったが、確認はできました。
仕上げ調整は後回しにして、これで機能はするので進みます。

クロック入力に比べると、DIP SWの上下で設定してLEDを流すのは難しい。
      ROM番号 1→2→3
はアドレスデータでは
      2進数 0001→0010→0011 
こんなスイッチの上下設定をスムーズにはできない。。

やっぱりクロック入力があってよかった。このクロック入力機能は、この先、8ビットのテスト入力用信号を自在に作れ、切り替えられたら役立ちそうという意図で備えています。


まあ、ROMってこんなふうにうごくんだなぁ と実感できた感じです。
ここはDIPsw群のオリジナルROMだったらもっと作業も多くて、メカニカルROMなのでROM動作が実感できて達成感もあじわえそうですね。

近代的TD4 ROM、調子悪いのは後々進みながら調べることにして、ROMは機能はしました。

とりあえず五合目までやっと来た!(富士山9合目まであることににしておきましょう)
ここまで5/9 はCPUの周辺回路。。

次の段階はいよいよ、CPUの中身の機能に切り込んでいくことに。。。

実はここまでしか 登山口で計画してない。。。
後は、どこから作るか計画もこれから立てることになります。仕組みは一応は読んで理解しましたが、配線図はまたこれからになります。

これからは第二ステージ  いよいよ CPUの中身の制作に向かいます。



始める電子回路 CPUを作る 回路がわかる本 始める電子工作 
        メインページへ