始める電子回路 | CPUを作る | 回路がわかる本 | 始める電子工作 |
ROMブロックの役割ROMブロックの役割ROMの配線がPC上でできたので、ROMブロックの役割について。 ROMの部分ですが、277ページ一面を占めています。これを近代的TD4ROMとしてAVRチップで代用したわけですが機能は同等です。 この回路図を見ると、ページ一面をROM部分だけが占めている大きな回路図ですが、 機能としては ページ左側に A0-A3 のアドレス信号 が入り、 右側に D0-D7 のデータ信号が出て行く という機能。 こんな感じで 近代的TD4ROM になっています。(2本の通信ラインが加わっている) ROMブロックの機能は アドレスバスで(A0-A3 のアドレス信号 4ビット) が入力され、それに応じてデータバスで(D0-D7 のデータ信号 8ビット)が出力される という機能。 その信号はいったい何なの? というと簡単には 読み出すROM行の指定 : アドレスバス 読み出したROM行の中身 : データバス で出される と簡単にいえそうです。 ROMは 16byte(1行8bit=1byteで 16行) 16行のプログラム をROMに入れることができる。16行までのプログラムが入る ともいえる。。 そのROMの内容を 普通に実行だと 0行目から ↓ 1行目 ↓ 2行目 と順番に読み出していくことで 実行。。 画面でプログラムが動く感じと同様で考えられます。何行目を読み出すかを指定するのがアドレスバスということなのですが、 通常 0→1→2行目 と順番に行を進めて実行していきます。 このROMブロックには外から アドレスバス と データバスが入っているだけです。 アドレスバスでの入力に従って、対応する行の中身を データバスに出す。。 オリジナルのROM回路のブロックは広大ですが、 AVRで代用した近代的TD4ROMはこの通り 中で何やってるかは置いといても、 入力と出力で考えると、アドレス信号が入って、データ信号が出て行くだけ。オリジナルと同じ機能さえすれば代用できます。 アドレスを上げるものアドレスバスでの入力に従って、対応する行の中身を データバスに出す アドレスバスは4本:4bitなので、2進数で0-15まで可能。 ( 行数で ) ( それをアドレスバス値2進数で言うと ) 0行目 0000 ↓ 1行目 0001 ↓ 2行目 0010 ↓ 3行目 0011 順番にプログラムを実行する場合、0→1→2行目 と読み出し行をアップ(アドレスを上げる)していくことになるわけですが、 誰が順番にあげていくんでしょう? ROMはやりませんよ それは、このROMブロックの預かり知るところではなく、ROMブロックは単にアドレスバスでの入力に従って、対応する行の中身を データバスにほり出す。。という範囲の役割です。 何行目を読み出せ という入力に従って、内容を出力するだけなので、順番に読み出すなら次々と読み出し行を上げてアドレスバスから入力される。。どっかから順番に上げられたデータが来るのでそれは他のブロックの役割。他に任せROMは気にしないですみます。 そこでちゃんとやってもらえばいいわけですが、やっぱり気になります。 この本ではもっと後に登場するのでここでは回路もできてないですが、 この本のもっと後のころで 現在の命令位置(アドレス)を指し示す役割をするのが プログラムカウンタです。 とあり、そのプログラムカウンタの章Chapter8−2の冒頭には・・(以下引用) 人類がテクノロジーと呼べるモノをもっているとするならば、プログラムカウンターこそがその象徴といえます。 というのは大げさですが、、 、と続きます。 (この本、こんな書き出しがよくあって、「ええ! そんなスゴイものだったの? 」 と驚きと共に食いついてしまうワナがたくさん仕込まれています 最後の方まで読んで行くと その手は食わぬ・・と だんだんと素通りできるようになる^^) アドレスを操作するのは、プログラムカウンターです。。 何度も出てきた、 アドレスバスでの入力に従って、対応する行の中身を データバスに出す のがROMブロックで、 このアドレスを操作するプログラムカウンターが無いことには、ROMブロックは出来上がっても、ROMのメカニズムを起動させることはできない。。オリジナルのDIPswROMも同様です。 ここまでようやく進めたので、プログラムカウンターの代わりにアドレス信号入れて、ROMを起動もしてみたい。 ROMブロックが完成したら、そういうところもテストしてみたらより実感できそうです。 |
始める電子回路 | CPUを作る | 回路がわかる本 | 始める電子工作 |
メインページへ |