本連載はHisa Ando氏による連載「コンピュータアーキテクチャ」の初掲載(2005年9月20日掲載)から第72回(2007年3月31日掲載)までの原稿を再掲載したものとなります。第73回以降、最新のものにつきましては、コチラにて、ご確認ください。

タイミング発生回路はこのコラムの40回、41回で設計した回路であり、8相の各サイクルを示す信号を生成する。OPRに格納された命令コードは、次のサイクルでOP regにコピーされ、X1サイクルにおいてOPAの最下位のビットと合わせて(SRCとFIM命令の区別、FINとJIN命令の区別のため)命令デコードされ、各命令に対応する出力線が"1"となる。OPAに接続されたデコーダは命令デコーダからIO命令の信号を受け取りエネーブルされ、OPAの内容がRead命令の場合はIO Read線が"1"、Write命令の場合はIO Write線が"1"となる。そして、IO命令でない場合は、両方の出力ともに"0"となるように設計する。

2ndByte FFは、命令の2バイト目を処理している状態を示すFFで、命令デコードの結果から2バイト目(正確には2回目の8サイクル)の処理を必要とする種類の命令の信号をBig ORで纏めてD入力を作成する。図には描かれていないが、2ndByte FFの EN入力はX3に接続し、X3サイクルの終わりでデータを取り込むようにする。また、2ndByte FFのD入力にはAND回路が挿入され、他方の入力として*Qが入っているので、2ndByte処理が終わると次は強制的に1stByte処理に戻るようになっている。

これで、データバスバッファやレジスタ類のエネーブルを生成する元となる信号が出来たので、これらを組み合わせることにより、SRCやDST信号を作ることができる。この図に示したのはデータバスバッファのDST信号の生成回路である。この信号は、

  1. A1~A3 DST:全ての命令の1stByte、2ndByte
  2. 1stByte X2 DST:SRC、IO write命令
  3. 1stByte X1 DST:全ての命令
  4. 1stByte X3 DST:SRC命令

のケースで"1"となる必要があり、まず、OR回路でA1、A2、およびA3サイクルで"1"となる信号を作る。但し、この設計では上記の3つの条件をNAND回路でORを取る(*)ため、 3入力NOR回路を用いて否定した信号を作る。

(*)なお、一般的に、次の式のように論理式Fの否定は、AND(・で示す)とOR(+で示す)を入れ替え、各変数を否定したものと等しい。この関係はドモルガン(DeMorgan)の定理と呼ばれる。

  • ドモルガンの定理

従って、この場合のようにNAND回路に否定した信号を入力するとOR回路として動作する。また、逆にNORゲートに否定した信号を入力するとAND回路として動作するので、このDeMorganの定理を覚えておくと便利である。

次に、OR-NAND回路を使い、SRC命令の場合とIO Write命令の場合をORし、それに1stByteの信号とX2サイクルの信号をNANDして2番目の条件を作る。3番目の条件は1stByteの信号とX1サイクルの信号をNANDして生成し、4番目も同様に、1stByte、X3サイクル、SRC命令の信号をNANDして生成する。

次の4入力NAND回路は入力が全て否定の形で入るので、全体としてはOR回路として動作し、上記の3つの条件をORしデータバスバッファのDST信号が出来上がる。

詳細は省略するが、4ビット内部バスに接続される他のユニットのSRCとDST信号についても同様に設計すれば、内部データバスの制御回路が完成する。