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

トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆


[第251回]



●レジスタ、I/O回路の回路図

今回はHCMOSIC版MYCPU4のレジスタ、I/O回路の紹介です。
下はレジスタ回路の回路図です。

左上がAレジスタでその下がBレジスタ、一番下がプログラムカウンタです。
中央の74HC283は4ビットフルアダー(全加算器)です。
右上はワークレジスタです。
74HC283のデータ出力は74HC173にラッチされます。
加算後のキャリーフラグとゼロフラグも74HC74でラッチされます。
74HC283は加算器ですから加算はできますが減算はできません。
減算命令(SUB)のためには回路に工夫が必要です。
減算命令はSUB A,BとSUB A,dです。
dは即値で外部データバスD3〜D0から直接読み込みます。
Bとdは74HC157(IC4)でどちらかを選択します。
選択するための信号はB/dselです。
減算であることを示す信号がBd invです。
SUB命令のときはBd inv=1になります。
そのとき74HC157(IC4)の出力は74HC86(IC8)によってインバート(反転)されます。
たとえば−1は4ビットの(符号付の)数ではF(1111)です。
1(0001)の各ビットを反転すると1110になります(1の補数)。
そこでその最下位ビットに1を加えると1111になって、−1になります(2の補数)。
最下位に1を加える代わりに74HC283のCIN(pin7)(下位桁からのキャリー)を1にします。
またたとえば4−1の計算を考えると答えは3になって上位桁へのキャリー(減算なので正確に言えばボロー)は発生しません。
しかし−1を1111で表す減算を加算器で行なうと、4−1は
   0100
   1111(+
  0011
となって上位桁へのキャリーが出てしまいます。
これを補正するために減算の場合には74HC283からのキャリー出力(Cout、pin9)も反転させます。

下はI/O回路の回路図です。

OUTは出力データをラッチして外部に出力します。
INは外部からの入力ですが信号がなまっていたりスイッチ入力などのチャタリングなどを回避するためにシュミットトリガ回路を通してから内部バスに読み込みます。
シュミットトリガ回路はともかくとしてS1〜S4のプッシュスイッチは本来のCPU回路にはないものですが、トレーニング的な回路としてはあれば便利ですからI/O回路の一部としてプッシュスイッチも搭載しています。

トランジスタでCPUをつくろう![第251回]
2020.10.20upload

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