一握りのリレー。 パート2-登録ファイル

電磁リレーを使ったコンピューターの開発について書き始めて1年以上が経ちました。 今日は、コンピューターの2番目のモジュールであるレジスタファイルの作業を完了しました。







これで、コンピューターが4つのブロック( ALU 、レジスタファイル、制御ブロック、メモリブロック、周辺機器)で構成されることが明らかになりました。



レジスタブロックは最も単純なものです。各レジスタには、ビットを保存するための8つのリレー、リセット用のリレー、およびレジスタをバスに接続するための複数のリレーがあります。







それでも、リレーでの論理回路の構築を扱うために最初にALUを実行しました。 さらに、これはすぐに8ビットの計算機になり、同僚によってオンになったことがあります(最近、コンピューターが職場に移動しました)。



リレーがデータを保存する方法



通常、リレーはデータの保存には使用されず、信号の切り替えのみに使用されます。 しかし、彼の作品にフィードバックを加えると、結果はRSトリガーになる可能性があります。 そのため、リレーがオフにならずにオン状態を保持するためには、通常は開いている接点を介して巻線に電圧を供給する必要があります。 接点が閉じているとき、この電圧はリレーをオンに保ちます。







ここで、このリレーをオフにするには、電源と巻線間の接続を切断する必要があります。 このために、トリガーのリセットを担当する追加のリレーが使用されます。







なぜリレーをリセットするのですか? 実際には、プリセット値を書き込む最も簡単な方法は、古い値をリセットし、電圧を印加する(または印加しない)ことで新しい状態を維持することです。

レジスタは常に完全にリセットされるため、同じリセットリレーがすべてのビットに使用されます。



データストレージを担当するリレー内のすべてのスイッチの接点は並列化されています。 これは、信頼性を高めるために行われます。一方の接点が故障すると、もう一方に電流が流れます。



コンピュータアーキテクチャ



最初は、コンピューターのアドレスバスが12ビットになるように計画しました。 したがって、アドレス空間全体をいくつかの8ビットグループに簡単に分割し、異なるデバイスをそれらに接続できます。 この場合、アドレス演算は8ビットに簡略化されます(8086でメモリセグメントを操作するのとほとんど同じです)。



したがって、レジスタファイルには、2種類のレジスタがありました。4個の8ビットGPR、2個の「セグメント」それぞれ4ビット、2個のオフセットが8ビットのレジスタです。 同時に、「セグメント」と「オフセット」から、レジスタがZ80のHL、DE、BCなどの固定ペアでスタックされているため、2つの完全なアドレスを形成できました。 しかし同時に、どのレジスタもALUの入力または出力として使用できます。



変更は、セグメントレジスタを8ビットに「突然」作成したときに始まりました。 これによりアーキテクチャは根本的に変わりませんでした(アドレスバスは12ビットのままでした)が、計算の機会が増えました。



次に、256個のメモリセルを単純に加算しても数十分かかると考えました。 そこで、アドレスバスを8ビットに狭めることにしました。 このため、コマンドシステムは大幅に簡素化されています。

  1. 12ビットの増分、12ビットの転送、12ビットの値の読み込みという個別のコマンドの必要性はなくなりました。
  2. ジャンプ、サブルーチン呼び出し、および8ビット値の読み込みコマンドは、わずかに異なる1つにまとめられました。

    副作用として、load valueコマンドには条件付きで実行する機能があります。
  3. メモリを操作するためのコマンドには、直接アドレス値を持つオプションがあります




これらすべてのおかげで、制御モジュール回路も簡単になりました。 それに必要なリレーの数は大幅に減少しました。 命令カウンタを個別に実装する必要がないという事実を含めます(ほとんど通常のレジスタの形でレジスタモジュールに移動したため)。



その結果、ARMプロセッサのThumbモードに似たものが見つかりましたが、8ビットのレジスタが8つあります。 1つのレジスタはリターンアドレスとして機能し、もう1つのレジスタは命令カウンタとして機能します。 任意のコマンド引数として任意のケースを使用できます。

唯一の例外は、メモリからの読み取り(または書き込み)のアドレスとして使用できるレジスタは8つのうち4つだけです。



レジスタが接続されているバスは、データ(たとえば、命令コードまたはALUオペランド)を送信するための2個と、アドレスを送信するための1個であることが判明しました。



建設業



最も困難な(または、むしろ疲れる)ことは、レジスターの名前でプレートを作成することでした。 前回、レーザー彫刻を注文しました。 しかし、これに使用されるデバイスの作業領域は非常に小さく、これは私のプレートには十分ではありませんでした。 そのため、フォトリソグラフィーを取り上げました。 私は長い間、少なくとも受け入れられるものが判明するまで、フォトレジストを貼り付け/スプレーし、展示し、見せることを学びました。 理想はまだ遠いですが、これはコンピューターの最後のブロックではありません。







このブロックのレジスタに値をロードするためのトグルスイッチは組み込みませんでした。 結局、レジスタモジュールはすぐにALUに接続でき、そのトグルスイッチをすでに使用できます。



このモジュールのもう1つの特徴は、信号を表示するための追加のLEDがないことです。 保存されたすべてのデータは、リレーに組み込まれた制御LEDを使用して観察できます。 したがって、レジスタダンプを削除するには、カメラがあれば十分です。







現在、将来のコンピューターの2つのブロック、つまりレジスタファイルとALUが既に機能しています。 ただし、両方とも外部信号によって制御されるため、計算機モードでのみ計算を実行できます。 制御モジュールのケースはほとんど準備ができているので、すぐにカチカチ音を立てる回路の実行を開始することが可能になります。



より良くできること



ペアのレジスタを拒否したという事実により、二重のデータバスの必要性はなくなりました。

今では本当に1か所でのみ必要です-命令をフェッチするとき。 すべての命令のサイズは16ビットなので、1クロックサイクルで命令コード全体をダウンロードするには16ビットバスが必要です。 2番目の引数をALUに接続するには、アドレスバスを使用できます。 このため、レジスタのブロックに8個のリレーを保存することが可能です(場合によっては、コントロールブロックにさらに2個)。



古い学校のバージョンを使い果たしたので、サインプレートを固定するためにプラスドライバーのボルトを使用しました。 誰もが真っ直ぐなスロットで真ちゅうのボルトを入手する場所を知っていますか? 前回、私はヘルシンキのホビー雑貨店でそれらを買いました。 しかし、それは非常に高価であり、再び私は近い将来そこに着くことはありません。







レーザープリンターで印刷されたネガマスクをどうにかして改善する必要があります。 これで、ブラックフラッドフィールドが少し透明になりました。 そのため、一部のタブレットでは、これにより小さなドットが表示されました。 たぶん誰かがこれを打ち負かす方法を知っていますか?



ボーナス



次のビデオでは、クロックジェネレーターの動作プロトタイプ。 周波数を少し上げて、1秒あたり約5ビートを取得します。







githubのプロジェクトページ: github.com/Dovgalyuk/Relay



All Articles