Speichern von Zuständen
Erweiterung eines R‐S‐Latch zu einem D‐Latch (D=Data, C=Clock) C D altes Q neues Q
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
R S altes Q neues Q
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 0
R
S
Beispiel
Ergebnis ist ein Bit
Eingang n Bit
…
Kombinatorische Schaltung
…
Zeit
Wir wollen das Ergebnis einer kombinatorischen Schaltung in einem D‐Latch speichern. Q soll wohldefiniert entweder den Inhalt vor
oder nach der „Berechnung“ speichern.
D‐Latch D (Daten)
Q
NOT(Q) C (Clock)
Problem: Wann liegt das Ergebnis‐Bit stabil an D an?
Lösung: Taktung
Ergebnis ist ein Bit
Eingang n Bit
…
Kombinatorische Schaltung
…
Zeit
Wir wollen das Ergebnis einer kombinatorischen Schaltung in einem D‐Latch speichern. Q soll wohldefiniert entweder den Inhalt vor
oder nach der „Berechnung“ speichern.
D‐Latch D (Daten)
Q
NOT(Q) C (Clock)
Letztes Clock‐Signal
Nächstes Clock‐Signal Takt‐Zyklus
D‐Latches sind Transparent bzgl. Taktsignal
R
S
D
C
Q
D‐Flip‐Flop (ist nicht transparent)
Ausgang ändert sich nur bei einer fallenden Taktflanke.
D Latch D
C
Q D
Latch D
C D Q
C
!Q
D
C
Q
Logische Bausteine
Blockschaltdiagramme
Bausteine als Black‐Box
Wir haben jetzt einige Basisbausteine kennen gelernt.
In dieser Vorlesung sind wir mit Blockschaltbildern in der Regel eine Abstraktionsebene höher.
Die betrachteten Bausteine sind „Kästen“ mit Eingangsleitungen und
Ausgangsleitungen. Die Leitungen können entweder Daten (Datenleitungen) oder Steuersignale (Steuerleitungen) transportieren.
Wie die Bausteine der Blockschaltbilder intern mit Grundbausteinen aufgebaut sind und wie die Taktung der einzelnen Bausteine genau abläuft betrachten wir in dieser Vorlesung nicht weiter.
Bemerkung: In Blockschaltbildern wird das für sequentielle Bausteine erforderliche Clock‐Signal häufig der Übersicht halber weg gelassen.
Baustein
Ausgangsleitungen Eingangsleitungen
Beispiel eines abstrakten Bausteins
Verschaltung von Bausteinen
n Bits Einzelne Leitung
Bus (lassen häufig die Markierung n‐Bits weg)
Verbinden von Bauelementen Datenflussrichtung
Eingabe eines logischen Bausteins Ausgabe
eines logischen Bausteins
Kreuzungen und Verbindungen Beispiel
Leitungen kreuzen sich, sind aber nicht verbunden
Verbindungen außerhalb der
Leitungsendpunkte sind durch einen
Punkt gekennzeichnet.
Baustein A
Baustein B
Baustein C
Arithmetische, logische Einheit (ALU)
ALU
Zero (1) Result (n) Overflow (1) ALU Operation (k)
CarryOut (1) A (n)
B (n)
Angabe in Klammern ist die Anzahl Bits.
Beispiel‐Funktionen AND
OR NOT
Addition Subtraktion Vergleich
Ggf. ist die ALU auf eine Operation festgelegt. Dann Entfällt der Eingang und ALU wird mit dem Namen der Operation ersetzt.
Kombinatorisch?
Sequentiell?
Register und Shift‐Register
Speichert n Bits Eingang (n)
Ausgang (n)
Shift (1) Load (1) Reset (1)
Kombinatorisch?
Sequentiell?
Control
Kombinatorisch?
Sequentiell?
Control
Ein Baustein der das Zusammenarbeiten von anderen Bausteinen koordiniert.
In Abhängigkeit der Eingänge werden die passenden Steuerleitungen geschaltet.
Ausgänge sind Steuerleitungen in andere Bausteine Eingänge sind
Datenleitungen aus anderen Bausteinen
Control Beispiel
4‐Bit‐Register R1
Store R1 4‐Bit‐Register R2
R2 Bit 0
Control
Zero
Store R2
SUB
Control soll folgenden Algorithmus implementieren:
wenn R2 gerade und R1-R2=0, dann R1 = 0
wenn R2 ungerade und R1-R2!=0, dann R2 = R1-R2
R2 Bit 0
Zero Store R1
Store R2
0 0
0 1
1 0
1 1
Control wird als kombinatorische Schaltung realisiert.
Hierzu die Wahrheitstabelle:
Anhand der Wahrheitstabelle wird dann die Schaltung gebaut.
Rückgekoppelte Register haben immer einen wohldefinierten Zustand, da Register nur zur Clock‐Flanke aktualisiert werden.
Eingabe Ausgabe
Darstellung von Algorithmen
Pseudo‐Code‐Darstellungen
Elementaranweisungen
Variablenzuweisungen, z.B.:
x = 42
Arithmetik, z.B.:
y = 10
x = (42 + y) * 20
Das Symbol „=“ beinhaltet implizit eine zeitliche Abfolge, damit ist z.B. sinnvoll:
x = x + 1
Abkürzende Schreibweise für voriges Konstrukt: x++
Allgemein: als Elementaranweisung betrachten wir jede
Anweisung, die auf der betrachteten Abstraktionsebene nicht
weiter sinnvoll in eine Folge von einfacheren Anweisungen
unterteilbar ist.
Felder
Felder für den Zugriff auf den Speicher, z.B.: A[]
Zugriff auf ite Speicherstelle: A[i]
Beispiel:
0x0f00 : 14 A[0]
0x0f01 : 15 A[1]
0x0f02 : 42 A[2]
0x0f03 : 43 A[3]
...
...
0x0f0f : 255 A[15]
Sequenz von Elementaranweisungen
Setze i auf i+1 Setze j auf 2*i
usw.
Jedes Programm beginnt an einer Stelle und terminiert (hoffentlich) irgendwann.
Im Flussdiagramm ist Beginn und Ende des Programms mit den ovalen Symbolen dargestellt.
Im Beispiel also „Start“ und „Ende“.
Das einfachste Programm arbeitet einfach eine Sequenz von elementaren Anweisungen ab.
Im Flussdiagramm wird so eine Sequenz durch ein Rechteck dargestellt.
Die Abarbeitungsrichtung des Programms wird durch die Pfeile gekennzeichnet.
Start
Ende
If‐then‐else
if‐then‐else am Beispiel:
if(i<10) then
<Code-Block 1>
else
<Code-Block 2>
Ist i<10?
Code‐Block 1 Code‐Block 2 ja
nein
Switch‐Statement
Switch‐Statement am Beispiel:
switch(i) case 1:
<Code-Block 1>
case 2:
<Code-Block 2>
...
defaut:
<Code-Block n>
i=1?
Code‐Block 2 Code‐Block 1 ja
Code‐Block n i=2?
nein
ja
nein
...
For‐Schleife
For‐Schleife am Beispiel:
for(i=0; i<10; i++) {
<das innere der Schleife>
}
Bedeutet:
• Initialisiere i mit 0
• Führe das innere der Schleife aus
• Erhöhe i um eins
• Wiederhole wenn immer noch i<10
Ist i<10?
Ende Start
Innere der Schleife Setze i auf 0
Erhöhe i um 1 ja
nein
While‐Schleife
While‐Schleife an Beispiel:
i=0
while(i<10) {
<das innere
der Schleife>
i++
}
Bedeutet:
• Initialisiere i mit 0
• Führe das innere der Schleife aus
• Erhöhe i um eins
• Wiederhole wenn immer noch i<10
Ist i<10?
Ende Start
Innere der Schleife Setze i auf 0
Erhöhe i um 1 ja
nein
Gegeben seien die ganzzahligen Variablen n und m.
Bestimme größtes k welches n
k< m erfüllt:
Beispiel
Multiplikation
Multiplikation nach der Schulmethode
Gegeben seien die Binärzahlen A und B. Was ist a * b? Beispiel:
Multiplikand A: 1 1 0 1 0 Multiplikator B: * 1 1 0 1 ---
Produkt:
Maximale Länge des Ergebnisses
Beobachtung: Multiplikand der Länge n Bits und Multiplikator der
Länge m Bits ergibt Produkt einer Länge mit maximal n+m Bits.
Das Verfahren als Algorithmus
Beispiel 1001*0101:
1 0 0 1
* 0 1 0 1 --- 1 0 0 1 + 0 0 0 0 ---
1 0 0 1 + 1 0 0 1
--- 1 0 1 1 0 1 + 0 0 0 0
--- 0 1 0 1 1 0 1
Start Teste erstes Multiplikator
‐Bit
Shifte Multiplikand ein Bit nach Links
Shifte Multiplikator ein Bit nach Rechts Addiere Multiplikand
zum Produkt
5ter Durch‐
lauf?
Ende
0 1
ja
nein Beispiel für
4‐Bit‐Zahlen