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

TD4の代わりのROM部分を作る


        

TD4の代わりのROMを作る


一番ハンダ付けの多そうなROM部分はマイコンで代用することに決めたのですが、それを作る必要があります。

TD4のROM部分はDIPswで16バイト分ありますが、この本でもっとも驚いたのがこのROMでした。
この本では、普通と違う角度から部品を見たり使ったりしているところがあります。。

原始的作りのCPUに最初に思っていたのは 

             ROMは一体どうするのだろう?

楽しみなキットの中身が気になるに似ていますが、本読む前にこの部分は気になっていました。
なぜなら、ROMは自作というわけにいかないはず。。

RAMについては この始める電子回路でも ゲートを組み合わせて作るフリップフロップで
 これは1ビットのRAMです と紹介していますがこれは昔からいわれています。

フリップフロップはゲートICを組み合わせ、保持の機能を持った回路です。
しかし、ROMは 電気を切っても値を保持して覚えておくのがROMなので回路の動作で工夫しようがありません。
がんばって回路の動作考えても、電気切ったら回路は働かずもう何もできないので。。。

ROMは、少しだけ関わったZ80の時代でも(およそH8の前の世代のマイコン)、その昔は書き込む、紫外線を当てて消すというような機器が必要だったので趣味で使うにはハードルがあったと思います。フラッシュROMというのができ、全部含んだワンチップのマイコンが登場してずいぶん手軽になった。
もっと昔PC98当初はプログラムデータはデータを電源なしでも保存するにはカセットテープ これに音でプログラムを録音していた。今となっては冗談のように聞こえますが、プログラムデータは音としてもラジカセで聞けた^^ そして、ラジカセでカセットテープに、お気に入りに曲の合間にプログラムデータ録音していた。
原始的とはいうけれど 
            何か外部の記憶機器使うにも通信が必要だし、ROMはどうやるのだろう?

これが本読む前の関心事でしたが、一番驚いた実現方法でもありました。

この本の基礎回路の説明で プルアップの説明があります。

このHPでも出てきたプルアップのナゾですが、

            これは1ビットのROMです

という記述が一番この本で驚いたところでした。  たった一行に意外な発見がある・・・

プルアップのナゾのところで、マイコンとかにH,Lを伝える 簡単な説明があります。




 このHPでもプルアップとはこんな回路ですと説明していますが。。。

 この ICの足 をマイコンにすると スイッチ切り替えで
 H,L が入力できます。






ここで スイッチの状態:ON,OFF で回路にH,Lが伝わる。。。電気切ってもSWは変わらない。
電気付けるとスイッチの状態でまたH,Lがマイコンに伝わる。 

            確かに1ビットのROMだ! 記憶できる! 
フリップフロップは1ビットのRAMで、これは言い古されたことですが、プルアップは1ビットのROMだったとは!
ここで初めて気づいて驚いた。

でも、昔から使われていたようで 昔はヒューズを飛ばしてこんな原理でプログラムしていたと書かれています。
 (この本ではZ80でさえも ギリシャ神話に登場する(ような気がする) となっています・・) ヒューズ飛ばして・・なんてそんなことを知るこの著者の方 絶滅した首長竜よりも古い時代から変化を生き長らえた珍しい生き物 ゆえにこんな、まれに見る本が書けたといえるかもしれません^^

この首長竜のROM、スイッチでH,Lを入力する。外から回路で書き込みは出来ず人間がSWを上げ下げする、と反対から考えると案外単純かもしれませんが・・・

そして、この仕組み通りにベタに配線を16バイト分 8×16=128ビット分配線して作り、SWで出来たROMが使われます。
驚いたROMなのですが、これだけを作るのは気が萎える。。。
16バイトはプログラム入れるROMとしては少なめですが、これだけでも制作大変なので、全体からこれ以上の容量にしなかったのでしょうね。

 これがTD4のROM部分です。 本書の完成写真より(P278)

ダイオードを使いますが、この本でダイオードアレイという部品があるのを知りました。この部品も扱っているところが少なく入手が難しいです。
ダイオードアレイでなくてもいいけど、これを使わないともっと配線作業が多くなる。

このROMを無くして考えると、基板は約半分でよくなり、入手も難しい大型基板でなくともよくなる。ダイオードアレイもいらない。

ということでこのROMをマイコンに肩代わりさせるとかなりハードルが下がります。オリジナルのTD4とはことなりますが、CPUはそのままです。

これを 近代的TD4 ROM と名付け制作することにしました。

AVRを使ったROMの制作


AVRを使って、PCから送られるデータを内部のEEPROMに受ける。
それをプログラムカウンターのバスに従って読み出すという役割で、ROM部分を外側から見ると

 

124ページのROM回路 はこのようになり、AVR1コの 近代的TD4 ROM は外側のIC2つを飲み込みます
外に出たバスの配線は本来ROMのままで置き換え可能なようにします。

通信部分を作るのが手間暇かかりますが、ROMがバッサリとなくなり、基板も小さいもので作ることが可能になりました。
基板はオリジナルのTD4は入手が難しいサンハヤトの一番大きいもの、これも入手が難しい部品ダイオードアレイ を使っていたという点が解消され、基板は市販の大きめのものでOK、ダイオードアレイはナシということになります。

これで制作で、部品の入手も楽になりハードルは下がりそうです。

 ところが・・・

性能もマイコンなので十分にROMとして使える、というより全体の一部分としてのROMなんですがこれがCPUより高性能

だからというか、
     マイコンの中にROMがいっぱいありすぎる! これが誘惑です。やっぱり誘惑されます

作るTD4のROM容量は16バイトです。

しかし、、、AVRにはEEPROMが128バイトも入っています。使おうと思えば全部使うのも可能です。使わなければ遊んでいる空き空間です。

この内の16バイトしか使わないとなると、
  広大な宴会部屋に住みながら一角で四畳半生活をしているようなものです。せめて十畳ぐらい使って住みたい。。。

だれしもそう思ってしまうでしょう。。そこで増やすことを考えました。

すると、プログラムカウンターは4ビットなので最大15まで、
TD4は0〜15のROMアクセスなので そのいっぱいまで使われています。

ROM容量だけ増やしてもアクセスできません。まずこのプログラムカウンターも増やす必要があります
(なんかCPU用語バンバンでてくるようですが、この本を読むと意味がわかるようにるでしょう)

プログラムカウンターを増やすには、その先のフリップフロップも増やすことになりますが、これもいっぱいまで使われていて空きはありません。。。。
そこを増やすと、使用するCPUのICが増えて回路に変更もでます。

それならいっそのことプログラムカウンターも飲み込んで、マイコンでやろうか・・・と考えました。

しかしその先にはまだまだつながっていて、しまいには、ハメ込み技で作った最後のゲートICの組み合わせまで換えなければいけないことになり、

  いっそのことそれも飲み込んでマイコンでと考えていくと
  結局、全部このマイコンの中で動くシミュレータになるので あきらめて、四畳半生活にしました。


近代的TD4 ROM


  AVR ATtiny2313を使用

       アドレスバス 4ビット A0〜3
       データバス  8ビット D0〜7

 データ保持は内部のEEPROM16バイトに読み書き
 読み書きはPCとCOM通信(変換ICでUSB接続も可)

という機能で置き換え、本来のROMはAVR1コに変わりました。
124ページの全面をとったROM回路図が こんなIC AVR1個の感じになります。。

実際は、通信ラインの先に、PCとの通信用にもう1つICが必要
方法により
     MAX232系か、USB変換ボードか、CHANさんの邪悪な方法でのゲートIC の
どれか1つがつながります。

実際の通信用のポートに2pin使い 通信部はAVRのところと同じ回路です。
   RS232C と USB変換チップ使用 AVRのUSART

これでCOMポートの無いPCでもUSB変換チップを乗せれば可能

AVRの動作は、転送データはTD4のROM容量の16バイト固定なので、そのデータを受け取りEEPROMに書き込み、読み出しは合図受けるとEEPROMを読み出し送信という内容。

このソフト、後に公開予定です。

テストボードで試して、実際に乗せる回路は作っていませんが、実回路はCHANさんのチョンボ技を使った”邪悪な方法”で作ってみる予定。


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