Die ALU besitzt an ihren beiden Operandeneingängen jeweils ein temporäres Eingangsregister.
In diesen Registern wird jeweils ein 8bit Datenwort zwischengespeichert, das als Eingangswert für den Operanden A oder B der ALU dient.
Die Ausgänge der beiden Register sind deshalb fest mit den Dateneingängen EA und EB des ALU-Blocks verbunden.
Die Ausgänge der Register sind immer aktiv, sodaß ein abgespeicherter Operand sofort an die ALU weitergegeben wird.
Diese Register habe ich vorgesehen, um einen umfaßenden Befehlßatz implementieren zu können und um das Design der CPU-Ablaufsteuerung zu vereinfachen.
So kann der interne CPU-Datenbus nacheinander zur Übertragung verschiedener Datenworte benutzt werden und wird nicht durch ALU-Operanden blockiert.
Im Befehlßatz können nun bei ALU-Operationen jeweils z.B. drei Arbeitsregister einbezogen werden.
Also z.B. könnte ein Additionsbefehl so außehen:
ADD C,A,B
was bedeutet, der Inhalt des Arbeitsregisters C wird mit dem Inhalt des Arbeitsregisters A addiert und das Ergebnis in Register B abgelegt.
Die temporären Eingangsregister sind im Schaltungsdesign an die Arbeitsregister des Arbeitsregistersatzes angelehnt.
Die Schaltung wurde etwas vereinfacht, da eine Ausgangßteuerung nicht notwendig ist und die Adreßdecodierung ebenfalls entfällt.
Auf dem folgenden Bild ist die Schaltung der temporären Eingangsregister.
| Pinnummer | Name | Funktion | Pegel |
| 1 | DB0 | Dateneingang 0 | 0V,12V,H |
| 2 | frei | keine Belegung | H |
| 3 | DB1 | Dateneingang 1 | 0V,12V,H |
| 4 | frei | keine Belegung | H |
| 5 | DB2 | Dateneingang 2 | 0V,12V,H |
| 6 | frei | keine Belegung | H |
| 7 | DB3 | Dateneingang 3 | 0V,12V,H |
| 8 | frei | keine Belegung | H |
| 9 | DB4 | Dateneingang 4 | 0V,12V,H |
| 10 | frei | keine Belegung | H |
| 11 | DB5 | Dateneingang 5 | 0V,12V,H |
| 12 | frei | keine Belegung | H |
| 13 | DB6 | Dateneingang 6 | 0V,12V,H |
| 14 | frei | keine Belegung | H |
| 15 | DB7 | Dateneingang 7 | 0V,12V,H |
| 16 | frei | keine Belegung | H |
| 17 | GND | Stromversorgung 0V | 0V |
| 18 | GND | Stromversorgung 0V | 0V |
| 19 | GND | Stromversorgung 0V | 0V |
| 20 | GND | Stromversorgung 0V | 0V |
| 21 | GND | Stromversorgung 0V | 0V |
| 22 | GND | Stromversorgung 0V | 0V |
| 23 | GND | Stromversorgung 0V | 0V |
| 24 | GND | Stromversorgung 0V | 0V |
| 25 | +12V | Stromversorgung 12V | 12V |
| 26 | frei | keine Belegung | H |
| 27 | +12V | Stromversorgung 12V | 12V |
| 28 | frei | keine Belegung | H |
| 29 | +24V | Stromversorgung 24V | 24V |
| 30 | frei | keine Belegung | H |
| 31 | +24V | Stromversorgung 24V | 24V |
| 32 | frei | keine Belegung | H |
| 33 | CLEARB | Stromversorgung 24V | 24V |
| 34 | frei | keine Belegung | H |
| 35 | WRITEB | Steuereingang CLEAR | 0V,12V |
| 36 | frei | keine Belegung | H |
| 37 | CLEARA | Steuereingang WRITE | 0V,12V |
| 38 | frei | keine Belegung | H |
| 39 | WRITEA | Steuereingang READ | 0V,12V |
| 40 | frei | keine Belegung | H |
Da der Datenaustausch nur in der Richtung vom CPU-Datenbus zum ALU-Block erfolg, sind die Datenleitungen nur als Eingänge geschaltet und führen direkt zu den Selbsthalteschaltungen im Register.
Die Leitungen des Datenbußes werden den temporären Registern über DB0..DB7 an den Anschlüßen 1;3;5;7;9;11;13 und 15 zugeführt.
Die eigentliche Speicherung erfolgt mit den Relais REL4 bis REL11.
Diese sind mit einer Selbsthalteschaltung versehen.
Die genaue Funktion soll am Beispiel von Relais REL4 erläutert werden.
Wenn am Anschluß 15 des Steckverbinders P1 eine positive Spannung angelegt wird, so öffnet Diode D5 und das Relais 4 zieht an.
Dadurch schließt Kontakt REL4[8,4] und dem Anschluß REL4[1] wird eine positive Spannung zugeführt.
Damit bleibt das Relais 4 angezogen, auch wenn die Spannung am Anschluß 15 wieder auf 0V wechselt.
Die Löschung des gespeicherten Wortes wird mit Relais REL2 erreicht.
Wenn der Steuereingang CLEAR mit einer positiven Spannung von +12V belegt wird, zieht Relais REL2 an und trennt die Relais von der Haltespannung, sodaß sie abfallen.
Da das Register nun aber nicht auf alle positiven Spannungen auf dem Bus reagieren soll, sondern nur ganz bestimmte Worte auf dem Datenbus abspeichern soll, habe ich Relais REL1 vorgesehen.
Dieses Relais bewirkt eine Umschaltung der Haltespannung.
Wenn der Anschluß WRITE auf +12V gelegt wird, so zieht Relais REL1 an und die Haltespannung der Relais REL4..REL11 liegt zwischen 0V und 12V.
Somit öffnet nun, wie bereits oben beschrieben, bei einer positiven Spannung am Datenbus die Diode in der Datenleitung und das Relais zieht an.
Fällt die Spannung an der Datenbusleitung, so hält das Relais über die Haltespannung.
Fällt Relais REL1 nun ab, weil die Steuerleitung WRITE auf 0V gelegt wird, so wechseln die Relaiskontakte am Relais REL1 und verbinden die Haltespannung der Speicherrelais REL4..REL11 nun mit +12V und +24V.
Das hat zur Folge, daß die Relaisanschlüße 16 der Relais REL4..11 nun mit +12V und die Haltekontakte 9 mit 24V verbunden sind.
Dadurch kann eine positive Spannung von +12V auf einer Datenbusleitung das entsprechende Speicherrelais REL4..REL11 nicht mehr anziehen laßen, denn die Diode in der Datenleitung wird nicht göffnet.
Somit ist der Registerinhalt dauerhaft gespeichert.
Der Kondensator C1 dient dazu, die Relais REL4..REL11 während des kurzen Kontaktwechsels an Relais REL1 weiter mit Spannung zu versorgen, sodaß der Registerinhalt erhalten bleibt.
Von den Dioden D41, D42, D43 und D44 in den Eingangsleitungen WRITEA, CLEARA, WRITEB, CLEARB sind auf der Platine der Registers TEMPA nur die Dioden D41 und D42 bestückt und auf der Platine für das Register TEMPB nur die DIODEN D43 und D44.
In der Wahrheitstabelle sind nun die einzelnen Pegel zur Umsetzung der Registersteuerung aufgelistet.
Durch die Programmsteuerung müßen also, je nach den Vorgaben der Befehlsdecodierung, diese Pegel an den
Eingangsleitungen des Registers erzeugt werden.
0=logisch 0-Pegel, entspricht 0V
1=logisch 1-Pegel, entspricht 12V
H=hochohmiger Zustand
X=beliebiger Zustand
| WRITE | CLEAR | DB0..DB7 | Erläuterung |
| 0 | 0 | X | Das Register ist vom Datenbus abgekoppelt, der Registerinhalt bleibt erhalten, die Ausgänge geben das zuletzt gespeicherte Wort an den ALU-Block weiter. |
| 0 | 1 | X | Der Registerinhalt wird auf 0x00 zurückgesetzt, und an den ALU-Block weitergegeben. |
| 1 | 0 | DB=IN | Der Inhalt des Datenbußes wird mit dem Registerinhalt ODER-Verknüpft, und an den ALU-Block weitergegeben. |
| 1 | 1 | DB=IN | Der Registerinhalt wird auf 0x00 zurückgesetzt, und an den ALU-Block weitergegeben. Achtung, sollte CLEAR vor WRITE inaktiv werden, so wird der Wert vom Datenbus in das Register übernommen. |
Durch den Einsatz der temporären Register vereinfacht sich das Design der Ablaufsteuerung wesentlich und es kann durch eine Mikrocodesteuerung ein komfortabler Befehlßatz aufgebaut werden. Zu beachten ist, genau wie bei den Arbeitsregistern, daß zum Abspeichern eines neuen Datenwortes eine Löschung des Registerinhalts notwendig ist, da es sonst zu einer Veroderung der Datenworte kommt.
|
Sollte jemand seine Rechte durch eine Veröffentlichung auf dieser oder einer anderen meiner Seiten verletzt sehen, bitte ich um sofortige Kontaktaufnahme.
Ich werde die entsprechenden Inhalte umgehend entfernen.
Somit sind sowohl ein anwaltlicher Rat als auch eine kostenpflichtige Abmahnung nicht erforderlich!
Weiterhin weise ich darauf hin, dass der Inhalt verlinkter Seiten nicht in meiner redaktionellen Verantwortung liegt. |
www.schlaefendorf.de 2012