Facharbeit "Bau eines Relaiscomputers"
von Kilian Leonhardt
Email: mail@kilian-leonhardt.de

Zurück zum Inhaltsverzeichnis

Die Programmabläufe

Achtung: Da bei den Abläufen der Befehle nachträglich Veränderungen vorgenommen wurden, ist die Befehlsreihenfolge nicht optimal. Man kann wesentlich mehr parallelisieren und daher auch mit weniger Schritten den gleichen Effekt erzielen. Die Pfeilchen am Rand der Diagramme zeigen an, wohin der Zustand übertragen wird.

Multiplikation:
Hier nun die Befehlsreihenfolge der Multiplikation im Diagramm. Jeder Schritt stellt den Ausgang einer in 2.3.2.7.1 beschrieben Zelle dar. Die Bedingung wird von einem Vergleicher zwischen Faktorspeicher und Zähler beigesteuert.
Stehen zwei Befehle bei einem Schritt, so werden die Befehle gleichzeitig ausgeführt. Op steht für Operand; lö, le, a, s steht für die Operationen löschen, lesen, auf dauerhaft auf Datenbus schalten, sowie von Datenbus trennen, genau wie bei den Speicherzellen. Der Zwischenspeicher ist einem gewöhnlichen 11-Bit-Speichermodul, welches für die interne Programmsteuerung reserviert ist, daher nicht über das eigentliche Programm gesteuert werden kann.

Wie funktioniert es? Operand zwei ist zu löschen, danach lädt man einen Faktor in den Operanden 1, einen anderen Faktor in den Faktorspeicher, danach startet man die Programmsteuerung.
Als Beispiel benutze ich die Rechnung 5 mal 2. Man lädt also 2 in den Faktorspeicher und 5 in den Operanden 1.

Zusammengefasst passiert folgendes:

- Der Zähler wird auf 0 gesetzt.

- Der Zähler zählt (Z=1)

- Das Ergebnis Operand 1 + Operand 2 (Op1=5, Op2=0; also 5) wird via Zwischenspeicher in den Operanden 2 geladen. (Op2=5)

- Der Zähler zählt (Z=2) => Bedingung Zähler = Faktorspeicher wird 1!

- Das Ergebnis Operand 1 + Operand 2 (Op1=5, Op2=0; also 10) wird via Zwischenspeicher in den Operanden 2 geladen.

- Das interne Programm ist beendet.

Das Ergebnis liegt in Operand 2 (Op2 = 10).


Division:
Die Abbruchbedingung für die Division kommt vom Vergleichermodul.

Wie funktioniert es? Operand eins und zwei sind zu löschen. Dividend ist in Operand 1 zu laden, das Negat des Divisors ist in Operand 2 zu laden.
Anhand des Beispiels 5 / 2 werde ich den Programmablauf kurz erläutern:

- Der Zähler wird auf 0 gesetzt. (Z=0)

- Das Ergebnis Operand 1 + Operand 2 (Op1=5, Op2=-2; also3) wird via Zwischenspeicher in den Operanden 1 geladen. (Op1=3)

- Der Zähler zählt. (Z=1)

- Das Ergebnis Operand 1 + Operand 2 (Op1=3, Op2=-2; also1) wird via Zwischenspeicher in den Operanden 1 geladen. (Op1=1) => Bedingung Ergebnis ist negativ wird 1! (Denn Op1 + Op2; 1 +(- 2) < 0)

- Der Zähler zählt. (Z=2)

- Das interne Programm ist beendet.

Das Ergebnis steht im Zähler (Z = 2), der Rest steht in Operand 1 (Op1 = 1).


Subtraktion:
Für die Subtraktion ist keine Bedingung erforderlich. Es wird lediglich das vom Negierer erzeugte Negat des Operanden 2 über den Zwischenspeicher in denselben geladen.

Zu diesem Diagramm ist demnach nichts mehr zu sagen...







Zurück zum Inhaltsverzeichnis