Steuerwerk Erklärung

OP #5993175
Lesenswert?

Das gegebene Operationswerk aus Abbildung 1 basiert auf den vier 16-Bit 
Registern A, B, R und NUM, dem
4-Bit Register CNT und einer 16-Bit ALU. Sowohl die Eingänge als auch 
der Ausgang der ALU und Register
sind 16 Bit breit. Mithilfe des Steuersignals sub kann die Subtraktion A 
= A - B auf der ALU ausgeführt werden.
Ist das Ergebnis negativ, so setzt die ALU das N-Flag. Als weitere 
Kriterien stehen das U-Flag, welches bei
einem Überlauf des Registers CNT gesetzt wird, und das C-Flag, welches 
das aus dem Register R im Rahmen
eines durch lsrR hervorgerufenen Rechtsshifts herausgeshiftete Bit 
enthält, zur Verfügung. Die Steuersignale clrX (X ∈ {CNT, B , NUM}) 
setzen den Wert des entsprechenden Registers auf 0 und die Steuersignale 
incB
und incCNT inkrementieren die korrespondierenden Registerwerte. Das 
Steuersignal NUMinA erlaubt das
Kopieren des Wertes von Register NUM in Register A wohingegen BinNUM den 
Wert aus dem Register B in
das Register NUM kopiert.
Abbildung 2 zeigt ein für das Operationswerk konzipiertes Steuerwerk, 
deren Analyse Kern dieser Aufgabe
ist.

Kann mir das mal jemand erklären, verstehe das 0.
Danke
Angehängte Dateien:
Gast #5993185
Lesenswert?

Wenn du das wirklich gar nicht verstehst, dann mache dich mal zuerst mit 
Logikschaltungen und deren Symbolen vertraut.

Hoffentlich kennst du die aber schon. In diesem Fall nenne mal bitte 
alle Fachbegriffe aus dem Text, die du nicht kennst, damit wir 
irgendeinen Punkt zum Anfangen haben.

Ansonsten fangen wir nämlich bei Thomas Edison an.
Gast #5993199
Lesenswert?

Rack C. schrieb:
> Die Logiksymbole habe ich drauf.

Allerdings scheinbar eine sehr kurze Aufmerksamkeitsspanne. Egal, ich 
wiederhole die Bitte nochmal:

> In diesem Fall nenne mal bitte alle Fachbegriffe aus dem Text,
> die du nicht kennst, damit wir irgendeinen Punkt zum Anfangen haben.
OP #5993204
Lesenswert?

Post kam nicht durch 2 verfasst.
Was hat das mit dem N Flag auf sich, soll ja hier zero flag sein, 
richtig? Wieso wird das 0 gesetzt, wird dann nicht ein negatives 
Ergebnis als 0 dargestellt?
Wie ist das mit der Abbildung des Steuerwerks zu verstehen?
CNT steht ohne Verbindung da, genauso wie isrR.
Was soll ein U Flag sein.
Was ist ein Überlauf eines Registers?
Wie ist so ein Entwurf zu lesen.
edit:

c und u sind anscheinend die Flags aus CNT und isrR
was geschieht dann mit denen laut Abbildung, stehen auch wieder so da.
OP #5993217
Lesenswert?

Welche Werte diese Flags jeweils wann haben weiß ich immer noch nicht.
und wann isrR einen Shift durchführt und wohin dieser weitergeleitet 
wird.
Genauso was mit den Flags geschieht.

Und wird jetzt bei sub einfach nur 0 als Ergebnis kommen, oder was hat 
es mit dem N Flag auf sich?
Gast #5993223
Lesenswert?

Rack C. schrieb:
> Post kam nicht durch 2 verfasst.

Ist das ein deutscher Satz? Ich verstehe ihn nicht.

> Was hat das mit dem N Flag auf sich, soll ja hier zero flag sein, richtig?

Laut Text zeugt es an, ob das Ergebnis negativ war. Mehr gibt es dazu 
auch nicht zu sagen. Das ist eben so bei dieser ALU. Du sollst das 
Steuerwerk analysieren, nicht die ALU.

> Wie ist das mit der Abbildung des Steuerwerks zu verstehen?

Wie ist was zu verstehen? Du hast geschrieben, dass du mit 
Logikschaltungen und deren Symbolen vertraut bist. Also sollte die 
Funktion des Steuerwerks offensichtlich sein.

> CNT steht ohne Verbindung da, genauso wie isrR.

Ich sehe da keinen "CNT" Anschluss. Nur einen "incCNT" Ausgang. Der soll 
wohl dem CNT Register das Kommando schicken, seinen Wert zu 
inkrementieren (um 1 erhöhen).

> Was ist ein Überlauf eines Registers?

Das ist, wenn der Zähler von einem alten Auto beim Fahren von 99.999 
Kilometer auf 0 springt (weil er nur 5 Ziffern hat).

Das CNT Register hat 4 Bits, daher findet Überlauf statt, wenn es den 
Wert 1111 enthält und dann inkrementiert wird. Das Ergebnis ist dann 
0000.

> Was soll ein U Flag sein.

Steht im Text. Es wird gesetzt, wenn das CNT Register überläuft.
(Firma: Q3) #5993225
Lesenswert?

Die Bezeichnung der Flags ist eigenwillig (oder Prozessor-spezifisch?). 
ICH kenne das so:

- SIGN (Vorzeichen), ist 1 wenn Ergebnis der Rechenoperation negativ
- CARRY (Überlauf), ist 1, wenn Operationsergebnis nicht in Register 
passt
- ZERO (NULL), eine Operation hatte das Ergebnis Null
- ...
Gast #5993235
Lesenswert?

> Welche Werte diese Flags jeweils wann haben weiß ich immer noch nicht.

Aber die sind doch im obigen Text Beschrieben. Anscheinend sind da noch 
weitere begriffe drin, die du nicht verstehst.

> und wann isrR einen Shift durchführt

Das ergibt sich aus der Logikschaltung des Steuerwerks. Ich frage 
nochmal: Bist du mit allen Symbolen der Logikschaltung vertraut? Wenn 
nicht, musst du nämlich nochmal zurück auf Los. In meiner Ausbildung 
wäre das 1 Jahr zurück gewesen.

> und wohin dieser weitergeleitet wird.

Wer wird weiter geleitet, der Shift? "Der Shift" ist eine Operation des 
R Registers. Da gibt es nichts weiter zu leiten. Das Register führt 
diese Operation aus, wenn es vom Steuerwerk das Signal erhält.

ich denke, dass heißt "lsrR" (steht so oben im Text!). Es schiebt die 
Bits nach rechts. Auch das ist eine grundsätzliche Logik-Operation, die 
du kennen solltest.

Lies das: 
http://www.prof-heuermann.de/files/download/skripte/Digitaltechnik_Skript_04_2017.pdf
https://www.elektronik-kompendium.de/sites/dig/index.htm
#5993524
Lesenswert?

Frank E. schrieb:
> Die Bezeichnung der Flags ist eigenwillig

Ach was. Es geht offensichtlich um eine fiktive ALU.

> ICH kenne das so:

(schnipp)

Namen sind Schall und Rauch. Jede ALU darf Flags haben und nennen, wie 
sie lustig ist. Natürlich gibt es einen Satz an Flags, der für jede 
ALU wünschenwert ist und deswegen typischerweise implementiert wird. 
Bspw. wäre eine ALU ohne Carry-Flag weitgehend nutzlos.

Aber ob man ein Flag für das Vorzeichen nun S(ign) oder N(egative) 
nennt, ist ein unwichtiges Detail. Tatsächlich würde ich N(egative) 
vorziehen, weil da klar ist, was ein gesetztes Flag bedeutet. Bei S(ign) 
muß man zusätzliche Interpretationsregeln kennen, um zu wissen ob ein 
gesetztes S Flag nun positiv oder negativ bedeutet.
Gast #5993527
Lesenswert?

Frank E. schrieb:
> Die Bezeichnung der Flags ist eigenwillig (oder Prozessor-spezifisch?).
> ICH kenne das so:

Jeder, der so ein Steuerwerk konzipiert, darf seine Flags so nennen, wie 
er möchte und sie setzen, unter welchen Bedingungen er möchte.
Wenn das bei obigem Steuerwerk so geregelt ist, wie oben beschrieben, 
dann ist das so. Basta.
Gast #5993831
Lesenswert?

Bild 2
Die Takt-Schaltung ist eh Quatsch, weil die Bedingung vom Und A^B=1
ja nie erfüllt wird. Die Wahrheitstabelle bringt es ans Licht.

Das ganze soll wohl eine Eigenkreation sein?

Beim Reset würde ich auch den R-Eingang von dem Register beschalten
und nicht einen Takteingang.

Bild 1
Wie das schon erwähnt wurde, ist das eine Alu mit den dazu gehörenden
Registern.

Grob beschrieben:
Ein Steuerwerk lädt den Befehlssatz aus dem Speicher in das dafür 
vorgesehene Register(fetch),interpretiert den Maschinencode(decode)
und erzeugt die Signale (execute)um das Datum (Singular von Daten)
logisch weiter zu bearbeiten.

https://de.wikipedia.org/wiki/Steuerwerk
#5994002
Lesenswert?

Dr.Who schrieb:
> Bild 2
> Die Takt-Schaltung ist eh Quatsch, weil die Bedingung vom Und A^B=1
> ja nie erfüllt wird. Die Wahrheitstabelle bringt es ans Licht.

Praktiker wissen, daß Gatter Laufzeiten haben. Der Takt und der 
invertierte Takt erreichen das AND Gatter nicht exakt zur gleichen Zeit. 
Im Ergebnis ist diese "sinnlose" Teilschaltung ein Detektor für die 
steigende Flanke des Taktsignals.
Gast #5994806
Lesenswert?

Habe folgende Aufgaben dazu.
Könnt mir sonst so weiterhelfen, geht um Klausurvorbereitung.

Um welche Art von Steuerwerk handelt es sich?

Welche Funktionalität realisiert die Teilschaltung aus Abbildung 3? 
(mit der 1 und Takt)

Analysieren Sie nun das in Abbildung 2 gegebene Steuerwerk für das 
Operationswerk aus Abbildung 1, indem Sie die nachfolgend die 
Steuersignale ergänzen.

      RT-Quellcode           Steuersignale
 declare register CNT(3:0),A(15:0),B(15:0), 
R(15:0),NUM(15:0),C,N,U
 R <- 252, CNT <- 0, A <- 0, U <- 0, B <- 0;
 LOOP:      ________________________________;    ________________ 
if _________ then
         ______________________________  _________________ 
fi,
 ________________________________; ________________ 
________________________________; ________________ 
if _________ then
         ______________________________  _________________ 
fi,
 ________________________________; ________________ 
CHECK:
      ________________________________; ________________ 
if _________ then
         _____________________________
      fi; END: goto END;


Geben Sie nun die zu den Steuersignalen korrespondierenden 
Registertransferoperationen an, indem Sie den RT-Code ergänzen. Das 
Setzen der einzelnen Flags müssen Sie nicht realisieren.

Welche der nachfolgend genannten Berechnungen wird vom Steuerwerk auf 
dem Operationswerk durchgeführt?

o Berechnung der Hamming-Distanz von A und B o Zählen der im Wert von R 
vorkommenden 1en.  o Zählen der im Wert von R vorkommenden 0en. o 
Berechnung der Länge (Anzahl an Bits) des längsten zusammenhängenden 
Blocks an 1en in R. o Berechnung der Länge (Anzahl an Bits) des längsten 
zusammenhängenden Blocks an 0en in R.  o Berechnung der Parität

Wie oft wird die im Algorithmus vorkommende Schleife (Loop) je Durchlauf 
des Algorithmus abgearbeitet?
Gast #5994907
Lesenswert?

Rack schrieb:
> was ändert das am Inhalt?

Es macht ihn verständlich und es zeigt, dass der TO sich die angemessene 
Mühe gibt.

Ich habe kein Mitleid mit faulen Menschen, die anderen auf der Tasche 
liegen, alle Arbeiten delegieren, arbeitende herabwürdigen, und darauf 
auch noch Stolz sind (nicht wahr, finanzberater?).

Zur eigentlichen Frage: Rack, du hast geschrieben, dass du mit der 
Logikschaltung vertraut bist. Meine wiederholten Zweifel und Rückfragen 
hast du nicht beantwortet. Dennoch zeigst du hier erneut wieder nur die 
Aufgabe ohne auch nur einen geringsten Einblick in deinen persönlichen 
Lösungsansatz vorzulegen.

So kann man Dir nicht helfen.

Wer es überhaupt nicht kann, den sollte man auch nicht zu einem 
gemogelten Abschluss verhelfen.

Also Rack, zeige uns, was du kannst und wo deine Grenzen sind. Dann 
helfen wir dir, dein Know-How zu erweitern. Wir werden hier aber an 
deiner Stelle deine Aufgaben lösen.
Gast #5994971
Lesenswert?

Rack schrieb:
> was ist das z.B. das.
> sehe da 2D und 3D aber nicht deren Verhalten und genauso mit C1 usw.

Aha, jetzt kommen wir voran. Da hat sich mein provokatives Meckern ja 
doch gelohnt.

Wenn man sich dumm stellt, findet man bei Google ähnliche Bilder und den 
Hinweis, dass es sich um ein ANSI/IEC Logiksymbol handelt. Mit dem 
Stichwort findet man zahlreiche Erklärungen der Symbole.

Im Kopfbereich zeigt das Symbol vier Steuereingänge, darunter einen 
Speicher (Schieberegister) mit 7 Bit breite.

C1 → : Der Speichereinhalt wird nach unten geschoben. Die oberste 
Speicherzelle hat danach einen undefinierten Inhalt weil ihr Eingang D1 
offen ist.
C2 ← : Der Speichereinhalt wird nach oben geschoben. Die unterste 
Speicherzelle hätte danach einen undefinierten Wert, weil dessen Eingang 
D2  offen ist. Allerdings kommt das nicht vor, weil dieser Steuereingang 
nicht benutzt wird.
C3   : Der Speicher übernimmt die Signale von seinen 3D Eingängen 
(parallel load)
R    : Der Speicher wird auf 0000000 zurück gesetzt

C steht hier übrigens für "Clock" und R für "Reset". Darunter bedeutet 
ein D auf der linken Seite "Data input" und ein Q auf der rechten Seite 
"Data output", wobei hier jemand die rechte Seite schlampigerweise nicht 
beschriftet hat. D3 sind die Eingänge für das Taktsignal C3.

Hier hat jemand beschrieben, aus welchen Grundgattern so ein komplexes 
Schieberegister bestehen könnte: 
https://www.allaboutcircuits.com/textbook/digital/chpt-12/parallel-in-parallel-out-universal-shift-register/

Ich hoffe das hilft Dir weiter. Ich will nicht alles vorsagen, deswegen 
schau erst mal, wie weit du die Funktion der Steuerung nun 
nachvollziehen kannst.
#5995014
Lesenswert?

Rack schrieb:

[Schaltzeichen]

> was ist das z.B. das.

Das ist schon mal kein Standard-Schaltzeichen. Aus dem Kontext würde ich 
auf ein Schieberegister tippen. Aber die Bezeichnungen an den 
Eingängen(?) links ergeben keinen rechten Sinn.

Wahrscheinlich wird das auf vorhergehenden Seiten bzw. überhaupt im 
Lehrmaterial erklärt.

> Ich kann es nicht und frage nach Hilfe wo ist da ein Problem?
> Dachte man bekommt hier Hilfe, wenn man etwas nicht versteht.

Du kannst Hilfe für konkrete Fragen bekommen. So wie die eben.

Andererseits:

Rack C. schrieb:
> Die Logiksymbole habe ich drauf.

Und jetzt fragst du gerade danach, was du angeblich "drauf" hast.
Gast #5995017
Lesenswert?

C steht hier übrigens für "Clock" und R für "Reset". Darunter bedeutet 
ein D auf der linken Seite "Data input" und ein Q auf der rechten Seite 
"Data output", wobei hier jemand die rechte Seite schlampigerweise nicht 
beschriftet hat. D3 sind die Eingänge für das Taktsignal C3.

Dass die Pfeile "Schieben" bedeuten, habe ich ehrlich gesagt geraten*. 
Alle anderen Interpretationsmöglichkeiten die mir sonst eingefallen 
sind, würden keinen Sinn ergeben.

*) ich hätte es aber wissen müssen, denn ich habe das vor vielen 
Jahren gelernt.
Gast #5995168
Lesenswert?

Danke schonmal.

Nächste Frage, wie muss ich bei den Steuersignalen der Loop usw 
vorgehen?
Linke Seite schreiben, z.B. RESET & TAKT -> 3D ^ TAKT -> IsrR ?
Wenn man das gerade nachvollziehen kann was ich meine.
Also einfach, wann diese Signale gesetzt werden?
Gast #5995174
Lesenswert?

Rack schrieb:
> Linke Seite schreiben, z.B. RESET & TAKT -> 3D ^ TAKT -> IsrR ?
> Wenn man das gerade nachvollziehen kann was ich meine.

Kann ich leider nicht nachvollziehen.

Ich gehe doch mal stark davon aus, dass der Reset Impuls einmalig zum 
Initialisieren ausgelöst wird und der Takt danach fortlaufend 
stattfindet. Alles Andere ergibt sich daraus (und aus dem Programm 
natürlich).

Überlege dir lieber, welche Befehle diese CPU ausführen kann und wie sie 
das tut.
Gast #5995183
Lesenswert?

Stefanus F. schrieb:
> Überlege dir lieber, welche Befehle diese CPU ausführen kann und wie sie
> das tut.

Sorry, das war blöd formuliert.

Ich meinte, du sollst Dir überlegen in welchem Zustand das 
Schieberegister nach dem Reset ist und wie es dann pro Takt weiter geht.

> Reset 1 und Takt 1 ergibt 1 für 3D_1.
> Dann nochmal Takt 1 ergibt 3D_2 und somit IsrR

Genau, darauf wollte ich hinaus.

Der Nächste Takt wäre incB, aber nur wenn C=1 ist.
Gast #5995206
Lesenswert?

Rack schrieb:
> Wie schreibt man das als RT Quellcode auf?

Keine Ahnung. Ich würde erstmal mit einer Tabelle anfangen. Eine Zeile 
pro Takt und horizontal die Signale.

Wenn die Kreuzchen eingetragen sind, kann man vielleicht als Text 
daneben Schreiben, was die Operationen bewirken.
Gast #5995485
Lesenswert?

Aha, so ist das gemeint.

Dann beschreibe halt in diesem Stil, was beim Reset/Init passiert und 
was danach passiert.

Mehr kann ich dazu nicht sagen, ohne gleich alles vorzusagen.

Hilft Dir jetzt nicht, ich weiß. Sorry.
Gast #5995551
Lesenswert?

Die initiale Belegung der Register muss irgend jemand (du?) vor dem 
Programmstart festlegen. In der Aufgabenstellung ist das offen gelassen. 
Für die Analyse des Steuerwerks spielt es auch keine Rolle.
Gast #5996039
Lesenswert?

Rack C. schrieb:
> Doch, siehe weiter oben, als ich darauf hingewiesen wurde richtig zu
> formatieren.

Aaah, sehr gut. Das habe ich übersehen.

Die erste Aktion (nach der Initialisierung und Reset) ist lsrR. Hast du 
selbst erkannt:

> Dann nochmal Takt 1 ergibt 3D_2 und somit lsrR
1
R = 252 = 0000 0000 1111 1100
2
shift     0000 0000 0111 1110 = 126

R hat jetzt also den Wert 126.
Das C Flag ist danach 0 weil eine 0 herausgeschoben wurde.

> Der Nächste Takt wäre incB, aber nur wenn C=1 ist.

C ist aber nicht 1. Parallel dazu führt der selbe Ausgang des 
Steuer-Registers zur Aktion NUMinA. Ich habe keinen Startwert für NUM 
gefunden, also lassen wird das mal als Variable so stehen. A <- NUM.

Beim nächsten Takt wird die Aktion sub ausgelöst. A <- (A - B)
Da B den Wert 0 hat, bleibt A unverändert.

Du musst nach jeder Aktion überlegen, welche Register beinflusst werden 
und danch welche Flags durch die Änderung der Register beeinflusst 
werden, denn davon hängt teilweise ab, wie das Steuerwerk weiter macht.
...

Irgendwann wird C=1 sein und dann wird incB ausgeführt und zugleich 
wegen dem Takt C3 ein neuer Wert von den D3 Eingängen parallel in das 
Steuer-Register geladen.

Das wäre ein bedingter Sprung, vermutlich der Punkt, wo entschieden 
wird, ob eine Schleife (loop) wiederholt wird, oder nicht.
Gast #5996252
Lesenswert?

Rack C. schrieb:
> wie gebe ich da dann einen shift an? R(1:1) <- R(2:1)?

Das würde nur ein Bit schieben.

Weiss ich nicht. Vollständig dargestellt müsste man wohl so etwas 
schreiben:

C <- R(0), R(14:0) <- R(15:1), R(15) <- 0,

Aber frage das mal liebe deinen Lehrer/Professor. Denn mit dieser 
Schreibweise bin ich nicht vertraut.
Gast #5996291
Lesenswert?

Rack schrieb:
> Könnt mir sonst so weiterhelfen, geht um Klausurvorbereitung.

Sehr gut! Klausuren bei denen gesiebt wird, erfüllen ihren Zweck zu 
100%.

Hoffentlich wird in der Klausur möglichst viel vom Stoff abgefragt, und 
zwar so, dass auswendig lernen nichts nützt, sondern nur verstehen!
Gast #5996353
Lesenswert?

Rack C. schrieb:
> if c = 1 then
>    B <- B+1 (incB)
> fi

Da passiert noch mehr:
1
if c = 1 then
2
   B <- B+1 (incB)
3
   if U=0 && SteuerRegister.6=1 then
4
      SteuerRegister <- 01000001 (binär)
5
   else
6
     SteuerRegister <- 01000000 (binär)
7
   fi
8
fi

Ich denke, das musts du noch weiter auflösen, so dass in deinem 
Pseudo-Quelltext das Steuerregister gar nicht mehr genannt werden muss.

Den Rest habe ich nicht geprüft. Das ist jetzt nur noch eine 
Fleißarbeit, durch die du durch musst.
Beitrag #5996509 wurde von einem Moderator gelöscht.
Gast #5996514
Lesenswert?

> SteuerRegister.6=1 wieso .6?

So benenne ich das Bit 6 vom Steuerregister (also das unterste), weil es 
keinen Namen hat. Man könnte auch Steueregister(6) schreiben.

> meinst du damit 3D.2

Nein, das gibt es nicht. Das wäre Bit 2 vom Register 3D, es gibt aber 
kein Register mit diesem Namen.
Gast #5997688
Lesenswert?

Erich schrieb:
> Rack C. schrieb:
>> Das ist keine Hausaufgabenhilfe ich versuche dadurch das Thema zu
>> verstehen.
>
> Hä?????

Der TO scheint zu glauben, er bekäme hier Nachhilfe.
Das kann das Forum vom Aufwand wohl nicht leisten.
Schon deshalb nicht, weil der Bildungsstand jedes Posters
ja ein anderer ist.
Wenn er ausgesiebt wird, wohl zu recht.
Gast #5997792
Lesenswert?

Jetzt hört doch mal auf zu lästern. Ich finde, das deutlich erkennbar 
ist, dass meine Anreize fruchten. Er hat sich zu den Punkten selber 
weiter informiert und Schlüsse gezogen (nicht alle richtig, aber sei's 
drum). Wir haben hier bestimmt keinen rotzfaulen Menschen vor uns, der 
andere für sich arbeiten lässt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren