close

Anmelden

Neues Passwort anfordern?

Anmeldung mit OpenID

Himmelsthürer Veranstaltungskalender

EinbettenHerunterladen
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 1 / 47
Grundlagen der Digitaltechnik mit ispLever
Hinweis 18.09.2014: Dieses Skript befindet sich aktuell in der Überarbeitung und sollte noch
nicht komplett ausgedruckt werden! Im Unterricht werden immer die benötigten, aktuellen Seiten
zur Verfügung gestellt!
Inhaltsverzeichnis
1. Logische Grundfunktionen......................................................................................................2
1.1 Schaltelemente und Beschreibungsformen (Übersicht).......................................................2
1.2 Übung: Zeitablaufdiagramme zu den logischen Grundverknüpfungen.................................3
1.3 Rechenregeln der Schaltalgebra.......................................................................................4
2. Arbeiten mit ispLever.............................................................................................................5
2.1 Der Umgang mit ispLever und der isp-Testplatine im Schnellgang......................................6
2.2 Muster-Beispiel zu ispLever..............................................................................................7
2.3 Einfache Übungen zu den Rechenregeln der Schaltalgebra.................................................8
3. Entwurf von kombinatorischen Schaltungen............................................................................9
3.1 Aufstellen und Vereinfachen einer Schaltfunktion...............................................................9
3.2 Anwendungen zum „Aufstellen einer Schaltfunktion“.......................................................10
4. Schaltungen mit Speicherverhalten (Flip-Flops).....................................................................17
4.1 Das statische SR-FF (ohne Takteingang).........................................................................17
4.2 Das Toggle-FF (taktgesteuert)........................................................................................18
4.3 Das D-Flip-Flop (D-FF, auch Data Latch genannt)............................................................19
4.4 Übungsaufgaben zu FF's................................................................................................20
5. Asynchrone Frequenzteiler (einfache Zähler).........................................................................22
5.1 Reihenschaltung aus drei T-FF: Frequenzteiler 8:1...........................................................23
5.2 Rückwärtszähler 7 – 0:..................................................................................................24
5.3 Hinweise für die Realisierung auf der isp-Platine..............................................................25
5.4 Dezimalzähler (BCD- oder m10-Zähler)...........................................................................26
5.5 Übungsaufgaben zu asynchronen Schaltungen (Klein-Projekte)........................................27
6. Entwurf von synchronen Schaltungen (mit D-FF)...................................................................28
6.1 Überblick Entwurfsverfahren für synchrone Schaltungen..................................................28
Methode 1: Der „konventionelle“ Entwurf mit Funktionsgleichungen..................................28
Methode 2: Der „fortgeschrittene“ Entwurf mit Elementen der Abelsprache........................28
Methode 3: Der Entwurf mit der Funktionstabelle.............................................................29
Methode 4: Der Entwurf mit Zustandsdiagrammen (state machines)..................................29
6.2 Synchrone Schaltungen mit Zustandsdiagrammen...........................................................30
6.3 Beispiel: Ansteuerung eines Schrittmotors.......................................................................31
7. Schieberegister....................................................................................................................35
Anhang: Konventioneller Zählerentwurf mit Gleichungen............................................................39
Synchroner Rückwärtszähler 7 .. 0,..................................................................................41
Synchroner Dezimalzähler 0 .. 9.......................................................................................42
Umschaltbarer Synchron-Vorwärts-Rückwärts-Zähler 1..6 bzw. 6..1...................................43
Zähler mit "seltsamer" Zählfolge......................................................................................45
Entwurf eines elektronischen Würfels...............................................................................46
Termine:
Arbeit Nr.1
Arbeit Nr.2
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 2 / 47
1. Logische Grundfunktionen
1.1 Schaltelemente und Beschreibungsformen (Übersicht)
Verknüpfung
AND
UND
OR
ODER
NOT
NICHT
(Inverter)
NAND
NICHT UND
NOR
NICHT ODER
Schaltzeichen
gem. DIN 40700
&
1
amerikanische
Norm, teilweise in
Programmen
verwendet
1
&
1
74 32
Schaltfunktion
X=A*B
X=A+B
XA
X  A*B
XAB
in ispLever:
X=A&B
X=A#B
X = !A
XA
X = !(A&B)
XAB
X = !(A#B)
XAB
X AB
alternative
Schreibweise:
Funktionstabelle
B
0
0
1
1
(Wahrheitstabelle)
A
0
1
0
1
X
0
0
0
1
XAB
B
0
0
1
1
A
0
1
0
1
X
0
1
1
1
A
0
1
X
1
0
B
0
0
1
1
A
0
1
0
1
X
1
1
1
0
B
0
0
1
1
A
0
1
0
1
X
1
0
0
0
Ausführung als
Kontakt-schaltung
Logische Aussage
der Schaltung
Lampe X
leuchtet, wenn
Schalter A UND
B betätigt
werden.
Lampe X
leuchtet, wenn
Schalter A ODER
B betätigt
werden.
Lampe X
leuchtet, wenn
Schalter A
NICHT betätigt
wird.
Lampe X
leuchtet, wenn A
UND B NICHT
gleichzeitig
betätigt werden.
Lampe X
leuchtet, wenn
weder A noch B
betätigt werden.
Ausführung als
Dioden- oder
Transistorschaltung
Ergänzung:
Einige IC-Typen in TTL-Technik (TTL bedeutet: Transistor-Transistor-Technik)
Die Versorgungsspannung bei TTL-IC´s sollte bei 4,75 V bis 5,25 V liegen, typisch ist US = 5 V !
Die Angabe „o. K.“ bedeutet: „offener Kollektor“, d. h. am IC-Ausgang muß ein Widerstand
(z. B. 1 k) gegen die Speisespannung geschaltet werden! Nicht benötigte Eingänge müssen richtig
beschaltet werden! Offene Eingänge wirken in der TTL-Technik wie „1“-Signal! Die Pinbelegung der einzelnen
IC´s findet man in Datenbüchern oder mit Hilfe von IC-Datenbank-Programmen!
4 * 2-fach-AND
7408
7409 o. K.
74131
4 * 2-fach-OR
7432
74130
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
6 Inverter
7404
7405 o. K.
7406 o. K.
4 * 2-fach-NAND
7400
7401 o. K.
7426
4 * 2-fach-NOR
7402
743
7433
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 3 / 47
1.2 Übung: Zeitablaufdiagramme zu den logischen Grundverknüpfungen
Ergänzen Sie für die vorgegebenen Eingangssignale A und B die Impulsdiagramme
(Zeitablaufdiagramme) für die einzelnen Schaltfunktionen! Beachten Sie, dass manche
Schaltfunktionen sich aus schon erarbeiteten Teilfunktionen zusammensetzen.
A
B
AND:
Z1 = A * B
OR:
Z2 = A + B
Inverter:
Z3 = /A
Inverter:
Z4 = /B
NAND:
Z5 = /(A * B)
NOR:
Z6 = /(A + B)
Z7 = A * B * /A
Z8 = /(A * B) + A
Z9 = /A * /B
Z10 =
/(A*B) * /(A+B)
Einige Erkenntnisse aus den Impulsdiagrammen:
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 4 / 47
1.3 Rechenregeln der Schaltalgebra
Vorbemerkung zu den Verknüpfungszeichen:
Die UND - Verknüpfung wird dargestellt durch: „*“ , die ODER- Verknüpfung durch: „+“ !
1.
Kommutativgesetze
a*b=b*a
2.
a+b=b+a
Assoziativgesetze
(a * b) * c = a * (b * c) = a * b * c
3.
(a + b) + c = a + (b + c) = a + b + c
Rechenregeln für eine Einzelvariable
a
a
a
a
a
a
Regel vom Einselement:
Regel vom Nullelement:
Tautologiegesetz:
Komplementgesetz:
*1=
+1=
*0=
+0=
*a=
* /a =
1
1
0
0
a
0
*a=a
+a=1
*a=0
+a=a
a+a =a
a + /a = 1
4. Distributivgesetze (Verteilungsregel)
(a * b) + (a * c) = a * (b + c)
(a + b) * (a + c) = a + (b * c)
5.
Die Regeln von de Morgan (sehr wichtig)
/(a * b) = /a + /b
/(a + b) = /a * /b
Wozu braucht man Rechenregeln?
Mit den Rechenregeln kann man lange und umfangreiche Schaltfunktionen vereinfachen. In der
Praxis bedeutet dies, dass man evtl. weniger Bauteile benötigt und Schaltungen kompakter
aufbauen kann. Außerdem kann man bei Bedarf durch geschickte Umformungen Schaltungen
aufbauen, wenn ein benötigtes Schaltelement gerade nicht vorhanden ist.
Einige Beispiele:
1. Man benötigt ein Dreifach-AND, hat aber nur AND's mit zwei Eingängen;
Wie kann man die Schaltung dennoch realisieren?
2. Man braucht ein Zweifach-AND, hat aber nur AND's mit vier Eingängen;
Was macht man mit den nicht benötigten Eingängen?
3. Wieviele Bauteile braucht man für folgende Schaltfunktion: x = n * m + n * w ?
Gehts auch mit weniger Bauteilen?
4. Wie kann man diese Schaltfunktion: R = (a+b) * (a+c) * (d+c) * (d+b) vereinfachen?
5. Kann man ein AND auch realisieren, wenn man nur NAND's in der Bauteilekiste hat?
6. Kann man ein AND auch realisieren, wenn man nur NOR's in der Kiste hat?
7. Hier sehen Sie eine EXOR-Schaltung (auch ,,Antivalenz" genannt): z =(/a * b) + (a * /b);
Könnte man die Schaltfunktion auch nur mit NAND's aufbauen?
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 5 / 47
2. Arbeiten mit ispLever
Mit dem Programm ispLever können programmierbare Logikbausteine programmiert werden. Hier
folgt zunächst ein Überblick über das prinzipielle Arbeiten mit dem Programm, eine Kurzanleitung
kommt anschließend.
Insbesondere die Hinweise zu Datei- und Verzeichnisnamen sind zu beachten!
1. Anlegen eines neuen Projekts
◦ Jedes Projekt wird in einem eigenen Ordner abgespeichert!
◦ Der Ordnername darf maximal 8 Zeichen enthalten
◦ In Aufgaben und Beispielen vorgegebene Namen sind verbindlich
◦ Wir verwenden weder deutsche Umlaute (ä,ö,ü, usw..)
noch Sonderzeichen (# / \ usw...)!
2. Erstellen der Abel-Quell-Datei
◦ Auch hier keine Sonderzeichen, Umlaute usw...
◦ Groß- Kleinschreibung bei Variablennamen wird unterschieden.
◦ An jedem Zeilenende steht ein Strichpunkt.
◦ Halten Sie sich an eine Mustervorlage (Projekt „Muster“)
3. Übersetzen und Linken
◦ Wenn Fehler auftreten, lesen Sie die Fehlermeldungen!
◦ „Warnings“ sind meist unkritisch und können ignoriert werden
◦ Die „beliebtesten“ Fehler im Quelltext:
▪ Strichpunkt vergessen
▪ Variablen falsch geschrieben
▪ Klammern falsch gesetzt
▪ Schlüsselwörter (DECLARATIONS, usw...) vergessen
4. JEDEC-File in den Baustein übertragen
◦ Schnittstelle muss richtig konfiguriert sein (USB)
◦ Der richtige Baustein muss eingestellt sein
◦ Das richtige JEDEC-File muss übertragen werden
Auf den nächsten beiden Seiten folgt eine Kurzanleitung und ein einfaches Musterbeispiel.
Diese beiden Seiten sollten Sie beim Arbeiten mit ispLever immer neben der Tastatur
liegen haben. Das Musterbeispiel „Muster“ sollten Sie in Ihrem eigenen Homeverzeichnis
H:\isp\Muster abespeichern und nicht verändern! Insbesondere bei Hardwareproblemen
mit der Platine können Sie so schnell das Musterbeispiel auf die Platine überspielen und
evtl. Fehler erkennen!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 6 / 47
2.1 Der Umgang mit ispLever und der isp-Testplatine im Schnellgang
Vor dem Einschalten des PCs:
PC einschalten, ispLever starten:
Falls schon vorhanden:
Beginn eines neuen Projekts:
(Name für alles z.B. „test“)
Projektnamen vergeben:
Doppelklick auf „ispLSI5384...“
Jetzt eine neues Abel-Quellfile
erstellen mit:
Am Ende abspeichern mit:
Das Abel-File muss compliert
werden:
(ABEL = Advanced Boolean
Equation Language)
Logik-Gleichungen an den
Baustein anpassen und
übertragen:
Das übersetzte Quellfile (test.jed)
downloaden:
(im download system)
Platine am USB-Port (Kabel auf dem Tisch!); nur bei Aufforderung:
Steckernetzteil an der Platine anschließen! Polarität vorher überprüfen!
Zu finden im NAL unter: Technik  ispLever
(oder evtl. auch im Windows-Startmenü)
Muster-File in H:\isp\Muster öffnen, downloaden und testen, ob alles OK
ist! Falls nicht, liegt ein Hardware-Fehler vor (Platine, Kabel, Schnittstelle
usw...)  Fehler suchen und beheben!
File  New project, für jedes Projekt (vorher) ein eigenes Verzeichnis in
H:\isp\... anlegen (hier: „test“), (oder diesen Ordner anlegen lassen)
Sicherheitshalber keine langen Dateinamen verwenden (<= 8 Zeichen)!
Aus Performance-Gründen kann man während des Unterrichts lokal auf
C:\isp\ arbeiten, am Ende den jeweiligen kompletten Projekt-Ordner
nach H:\isp\ kopieren!
Sinnvoll: wie das Unterverzeichnis! (also „test“)
Absolut keine Sonderzeichen, Umlaute usw... verwenden!
In der Titelzeile des Projektnavigators sehen Sie, ob Verzeichnis und
Dateiname korrekt eingestellt sind! (Überprüfen!)
Dann Baustein wie folgt einstellen: (s. auch Baustein auf Platine!)
Family:
ispMACH 4000
Device:
LC4128V
Speed:
10T100I
Package:
100TQFP
Source  New  Abel HDL-Module, OK klicken
Dann am besten dreimal “test“ eingeben, der Titel kann evtl. geändert
werden! Mit OK bestätigen, man landet im IspLever Text Editor und kann
jetzt sein Quellfile erstellen. Dabei sollte man sich unbedingt an eine
Muster-Vorlage halten!
Wichtig: Groß- Kleinschreibung beachten,
keine Sonderzeichen verwenden
Strichpunkte am Zeilenende
File  save oder Save-Button
Texteditor schließen oder Wechsel in den Projektnavigator,
im linken Fenster „test.abl“ anklicken, im rechten Fenster Doppelklick auf
„Compile logic“ ! Falls alles OK ist, erscheinen grüne Haken, falls nicht:
Fehlersuche, weil vermutlich ein Strichpunkt fehlt, eine Variable falsch
geschrieben ist, usw...
Im linken Fenster „LC4128V-10T100I“ anklicken, im rechten Fenster
Doppelklick auf „JEDEC File“, falls Fehler gemeldet werden, diese
korrigieren, Warnungen ignorieren, es sollten grüne Haken erscheinen!
Bei evtl. Meldung „Import Source...“ MUSS man auf Import klicken!
Falls alles OK ist, sind es nur noch wenige Klicks!
Klick auf Tools  ispVM System (oder die Schaltfläche
)
Klick auf ispTools  Scan Chain, dann Doppelklick auf das freie Feld
rechts neben LC4128V , mit Browse die richtige Datei „test.jed“ suchen
und mit OK bestätigen!
Klick auf Project  Download, (oder Schaltfläche
), warten, bis
„successful“ erscheint. Jetzt ist der Baustein programmiert!
Nach dem Schließen des Download-Fenster kann auf der Platine getestet werden, ob die Schaltung wie gewünscht
funktioniert! Bei Änderungen im Quellfile muss natürlich neu gespeichert, compiliert und das neue JDEC-File wieder in
den Baustein übertragen werden!
Wichtiger Hinweis: Wenn man das Gefühl hat, dass trotz mehrfachen Änderungen im Quell-File
diese nicht in den Baustein übertragen werden, sollte man im Projektnavigator „File  Clean up
all“ ausführen und erneut übersetzen und übertragen.
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 7 / 47
2.2 Muster-Beispiel zu ispLever
Dieses Beispiel und der „Schnellgang“ sollten bei der Arbeit mit ispLever immer bereit liegen.
Kopieren Sie das komplette Verzeichnis „Muster“ aus dem Tausch-Verzeichnis in Ihr Homeverzeichnis H:\isp\muster ! Nehmen Sie an diesem Beispiel keine Änderungen vor!
MODULE muster
TITLE 'Muster-Datei fuer ispMACH 4000 LC4128V'
"Keine Umlaute im Titel und Quelltext verwenden!
"Das Beispiel zeigt ZWEI Schaltungen,
"einfache Kombinatorik UND einen Synchronzaehler!
DECLARATIONS
"Eingaenge:
t1
PIN
t2
PIN
takt
PIN
reset
PIN
15;
17;
88;
31;
"Zwei Taster
"fuer einfaches UND
"fest vorgegeben, fuer Zaehler
"DIP-Switch, ganz rechts
"Ausgaenge:
led
PIN 61
istype 'buffer,com'; "kombinatorischer Ausgang
ff0, ff1 PIN 53,54 istype 'buffer,reg'; "Register-Ausgang f. Zaehler
EQUATIONS
"So sieht einfache Kombinatorik aus
(Beispiel 1):
led = t1 & t2;
"So programmiert man einen einfachen Synchronzaehler (Beispiel 2):
ff0.d = !ff0.q;
ff1.d = !ff1.q & ff0.q # ff1.q & !ff0.q;
"Die beiden FF's brauchen noch einen Takt:
ff0.clk = takt;
ff1.clk = takt;
"Auch ein asynchroner Reset-Taster ist möglich:
ff0.aclr = reset;
ff1.aclr = reset;
"Simulation, nur dann noetig, wenn keine Platine zur Verfügung steht
TEST_VECTORS
([takt] ->
[ff0, ff1]);
"Takt wirkt auf Zählerausgänge
@repeat 8 { [.c.] -> [.x.,.x.];}
"8 Taktimpulse, Ausgänge werden
"beobachtet !
END
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 8 / 47
2.3 Einfache Übungen zu den Rechenregeln der Schaltalgebra
Ziel dieser Übungen:
• Umgang und Vertiefen der Rechenregeln
• Routiniertes Arbeiten mit ispLever
Aufgabe 1: Ersetzen eines Vierfach-ANDS durch Zweifach-AND's
and4
Benötigt wird eine vierfache AND-Verknüpfung, leider stehen nur Zweifach-AND's zur Verfügung.
Mit Hilfe der Assoziativgesetze lässt sich das Problem aber sehr einfach lösen!
• Eingänge:
sw3 – sw0 (Pin 28 - 31)
• Ausgänge:
led53, led54
• Prinzip: Auf led53 wird die Vierfachverknüpfung ausgegeben, auf led54 die mit ZweifachAND's nachgebildete Funktion; bei allen Eingangskombinationen müssen die LED's das
Gleiche anzeigen!
Aufgabe 2: Nachweis der de Morgan-Regel (NAND)
morgan1
Nach der de Morgan-Regel gilt:
/(a * b) = /a + /b;
es gilt aber nicht:
/(a * b) = /a * /b !
• Eingänge:
t2, t1 (Pin 15, Pin 17)
• Ausgänge:
led53 (NAND), led54 (/a + /b), led55 (/a * /b)
• Test: Bei allen Eingangskombinationen müssen die Anzeigen von led53 und led54
übereinstimmen, led55 muss (bei einigen Kombinationen) andere Werte anzeigen!
Aufgabe 3: Nachweis der „de Morgan-Regel“ (NOR)
morgan2
Nach der de Morgan-Regel gilt:
/(a + b) = /a * /b;
es gilt aber nicht:
/(a + b) = /a + /b !
• Eingänge:
t2, t1 (Pin 15, Pin 17)
• Ausgänge:
led53 (NOR), led54 (/a * /b), led55 (/a + /b)
• Test: Bei allen Eingangskombinationen müssen die Anzeigen von led53 und led54
übereinstimmen, led55 muss (bei einigen Kombinationen) andere Werte anzeigen!
Aufgabe 4: Exor-Schaltung (Antivalenz) und Äquivalenz-Schaltung
exor1
Sie sollen eine Schaltung programmieren, in der die Funktion von Exor und OR verglichen wird!
Hinweis: Wenn Sie nicht wissen, was ein Exor (auch Antivalenz genannt) ist, können Sie ja mal
den fragen, der wirklich nahezu alles weiß! Und wenn Sie dann schon am Recherchieren sind,
sollten Sie auch gleich schauen, was eine Äquivalenz ist! Notieren Sie zu Antivalenz und Äquivalenz
bitte die Schaltfunktionen und Funktionstabellen auf der Rückseite!
Zur Programmierung:
• Eingänge:
t2, t1 (Pin 15, Pin 17)
• Ausgänge:
led53: (OR), led54: (EXOR, Antivalenz), led55: (EXOR aus NAND's)
led56: Äquivalenz, led58: Äquivalenz aus NAND's
• Test: Bei allen Eingangskombinationen müssen die Anzeigen von led54 und led55, sowie
led56 und led58 das Gleiche anzeigen; led53 muss (gelegentlich) andere Werte anzeigen!
• Machen Sie sich auch klar, dass die Äquivalenz immer das Gegenteil der Antivalenz ist!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 9 / 47
3. Entwurf von kombinatorischen Schaltungen
3.1 Aufstellen und Vereinfachen einer Schaltfunktion
Ausgangspunkt: Ein beliebiges Steuerungsproblem, z. B. Sensorüberwachung
In einem Tank befindet sich eine gefährliche Flüssigkeit. Wenn die Flüssigkeit einen bestimmten
Pegel erreicht hat, wird dies von zwei Sensoren angezeigt!
Die Anzeige gilt jedoch nur dann als vertrauenswürdig, wenn beide Sensoren das gleiche
Signal liefern! Bei unterschiedlichen Sensorsignalen soll ein Alarmsignal ausgelöst werden!
Dies ist das Zeichen, dass ein Sensor offensichtlich kaputt ist!
Nochmal zum Verständnis: Entworfen wird eine Schaltung zur Sensorüberwachung, keine
Füllstandsanzeige! (Hierzu müssten die Sensoren anders positioniert werden)
zu rA n ze gi ee ni he it
S en so rübe rw a chung
S1
S2
A al m
r be i
un te rsch ei d lci hen
S en so rs gi na el n
(Konventionelle) Schritte bis zur Realisierung der Schaltung:
1. Zuordnung der Variablen
2. Erstellen der Funktionstabelle, Definition der Minterme
3. Die vollständige Schaltfunktion, Definition „disjunktive Normalform“
4. Vereinfachen der Schaltfunktion mit den Rechenregeln der Schaltalgebra,
mit dem KV-Diagramm oder mit der passenden Software (z.B. ispLever)
5. Zeichnen der Schaltung (Funktionsplan)
6. Aufbereiten für NAND- oder NOR-Technik
Hinweis: Beim Arbeiten mit ispLever können die Schritte 4. - 6. entfallen.
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 10 / 47
3.2 Anwendungen zum „Aufstellen einer Schaltfunktion“
Aufgabe 1: Leistungsüberwachung
leistung
An einem Netz (U = 230 V) sind drei Verbraucher angeschlossen:
Verbraucher A: 7 kW
Verbraucher B: 5 kW
Verbraucher C: 3 kW
Wenn die dem Netz entnommene Leistung 9 kW übersteigt, soll eine Warnlampe W eingeschaltet
werden, wenn die Leistung größer als 11 kW wird, soll zusätzlich eine Hupe H ertönen !
a) Stellen Sie die Funktionstabelle auf !
b) Geben Sie die disjunktive Normalform für W und H an!
c) Legen Sie die Ein- und Ausgangsvariablen für die Realisierung mit ispLever fest und
ordnen Sie diese den entsprechenden Pin's auf der Platine zu!
d) Programmieren und testen Sie die Schaltung!
Aufgabe 2: Abschaltung
abschalt
Bei einem chemischen Produktionsprozeß wird dieselbe Größe (z. B. der Druck in einem
Reaktionsgefäß) von drei voneinander unabhängigen Meßeinrichtungen A, B und C gemessen.
Beim Erreichen eines einstellbaren Grenzwertes soll dann eine automatische Abschaltung (S)
erfolgen, wenn dieser Grenzwert von mindestens zwei Meßeinrichtungen gemessen wird.
Zu diesem Zweck sind die Ausgänge der Meßeinrichtungen logisch miteinander zur Ausgangsgröße
S zu verknüpfen, wobei der gefährliche Zustand mit "1" zu bezeichnen ist.
a) Erstellen Sie die vollständige Funktionstabelle !
b) Ermitteln Sie die Teilfunktionen, bei denen eine Abschaltung erfolgen muss (1-Minterme)
und geben Sie die disjunktive Normalform an!
c) Legen Sie die Ein- und Ausgangsvariablen für die Realisierung mit ispLever fest und
ordnen Sie diese den entsprechenden Pin's auf der Platine zu!
d) Programmieren und testen Sie die Schaltung!
Aufgabe 3: Tunnelbelüftung
tunnel
In einem langen Autotunnel sind drei Lüfter L1, L2 und L3 installiert.
An verschiedenen Stellen des Tunnels befinden sich drei Rauchgasmelder A, B und C.
1. Gibt ein Rauchgasmelder Signal, so muss Lüfter 1 laufen.
2. Geben zwei Rauchgasmelder Signal, so sind Lüfter 2 und 3 einzuschalten.
3. Wenn alle Rauchgasmelder Signal geben, müssen alle Lüfter angehen.
a) Erstellen Sie eine Funktionstabelle und geben Sie die Schaltfunktionen L1, L2 und L3 an !
b) Legen Sie die Ein- und Ausgangsvariablen für die Realisierung mit ispLever fest und
ordnen Sie diese den entsprechenden Pin's auf der Platine zu!
c) Programmieren und testen Sie die Schaltung!
Lösungen: (konventionelle Lösung mit Minimierung per KV-Diagramm, für isp-Programmierung
eigentlich nicht benötigt)
1. W = A*B + A*C
2. S = A*B + A*C + B*C
3. L1 = /C (/AB + A*/B) + C * (A*B + /A*/B)
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
H = A*B
L2 = L3 = A*B + A*C + B*C
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Aufgabe 4: Primzahlenerkennung
Datum:
Seite: 11 / 47
prim
Es soll eine Schaltung entworfen werden, die ein Ausgangssignal Z = 1 liefert, wenn die drei
Eingangsvariablen C, B und A eine dual codierte Primzahl darstellen. Die Dezimalzahl „0“ gelte
hierbei nicht als Primzahl!
1. Erstellen Sie die komplette Funktionstabelle und ermitteln Sie die DNF!
2. Legen Sie die Ein- und Ausgangsvariablen für die Realisierung mit ispLever fest und ordnen
Sie diese den entsprechenden Pin's auf der Platine zu!
3. Programmieren und testen Sie die Schaltung!
Aufgabe 5: Pseudotetradenerkennung
pseudo
Der Dualcode ist ein zweiwertiger Code mit dem Ziffernvorrat 0 und 1.
Für die Umwandlung der sechstelligen Dualzahl 1 0 0 1 0 1 in eine Dezimalzahl gilt beispielsweise:
1 0 0 1 0 1 = 1 * 25 + 0 * 24 + 0 * 23 + 1 * 22 + 0 * 21 + 1 * 20 = 3710
So lässt sich jede Dezimalzahl als geschlossene Dualzahl schreiben. Man kann jedoch leicht
erkennen, dass bei der Umwandlung größerer Dualzahlen ein großer Rechenaufwand entsteht.
Der BCD-Code (Binary Coded Decimal) ist ein etwas modifizierter Dualcode. Bei dieser Art der
Codierung werden die Dezimalzahlen nicht geschlossen codiert, sondern ziffernweise nach dem
Prinzip der dualen Codierung!
Für die Dezimalzahl 37 gilt also:
3710
=
0011 0111 (im BCD-Code)
Man sieht, dass für die Darstellung der Dezimalzahlen 0 ... 9 mindestens 4 Bit benötigt werden.
Mit 4 Bit lassen sich jedoch 24 = 16 Zahlen darstellen. Die Zahlen 10 ... 15 sind im BCD-Code als 4Bit-Zahlen aber nicht erlaubt. (Sie müssten mit 2 * 4 Bit codiert werden).
Diese unzulässigen Kombinationen werden als Pseudotetraden bezeichnet.
D
C
B
A
Es soll nun eine Schaltung entworfen werden, die
eine Ausgangsvariable Z = 1 setzt, wenn an den
Eingängen D, C, B, A eine unzulässige
Pseudotetrade anliegt!
Z = 1 ,w enn
P seudo -
D ,C ,B ,A e ni e
te traden -
1. Erstellen Sie die Funktionstabelle!
2. Wie lautet die Disjunktive Normalform?
3. Realisieren Sie die Schaltung in ispLever!
Dezimal
D
C
P seudo te trade
e rkennung
B
A
da rs te llt !
Z
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Aufgabe 6: Teichbefüllung
Datum:
Seite: 12 / 47
teich1
Die Steuerung der Befüllung eines Froschteiches mit zwei Pumpen soll entwickelt werden.
Die Sensoren liefern 1-Signal wenn das Wasser sie erreicht bzw. 0-Signal, wenn kein Wasser am
Sensor ist. Für die Einschaltung der Pumpen gilt:
• Befindet sich der Wasserstand unterhalb des Sensors A, müssen beide Pumpen laufen.
• Befindet sich der Wasserstand zwischen den Sensoren A und B, darf nur Pumpe 1 laufen.
• Befindet sich der Wasserstand zwischen den Sensoren B und C, darf nur Pumpe 2 laufen.
• Erreicht der Wasserstand den Sensor C oder höher darf keine der Pumpen in Betrieb sein.
Ermitteln Sie in der Funktionstabelle die Signale für die Pumpen P1 und P2!
Fälle, die nie auftreten können, kennzeichnen Sie mit x (Don't care position)
Nr (dez)
C
B
A
0
0
0
0
1
0
0
1
2
0
1
0
3
0
1
1
4
1
0
0
5
1
0
1
6
1
1
0
7
1
1
1
P1
P2
Bemerkung
MODULE teich1
“Beispiel fuer eine Funktionstabelle und Don't Care's
DECLARATIONS
C, B, A
PIN 29,30,31;
“Sensoren für Fuellstand = Eingaenge
P1,P2
PIN 81,67 ISTYPE 'BUFFER,COM'; “Pumpenansteuerung = Ausgaenge
x = .x.;
TRUTH_TABLE
“x ist Platzhalter für .x.
([C,B,A]
[0,0,0]
[0,0,1]
[0,1,0]
[0,1,1]
[1,0,0]
->
->
->
->
->
->
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
[P1,P2]);
[1 ,1 ];
[1 ,0 ];
[x ,x ];
[0 ,1 ];
[ , ];
“ Eingabevektor für Wahrheitstabelle
“ Don’t-Care, kann nicht vorkommen
“ usw...
“ usw...
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Aufgabe 7: Ansteuerung einer Siebensegment-Anzeige im BCD-Code
Gegeben ist
folgende Schaltung:
D (8 )
Z äh el r
DezimalC (4 )
zähler
von
B (2 )
von
1 -8
A (1 )
0-9
D ua lC ode
S ei ben segm en tC ode
a
b
c
d
e
f
g
Datum:
Seite: 13 / 47
seg7bcd
a
f
b
g
e
c
d
Der Zähler zählt periodisch von 0 - 9 (größere Zahlen treten nie auf!) und stellt das Ergebnis im
Dualcode an den Ausgängen D - A zur Verfügung. Der Codewandler erzeugt daraus die
Ansteuersignale a - g für die Siebensegment-Anzeige. Die BCD-Zahlen 0 - 9 sollen wie folgt
dargestellt werden (s. DIN 40900, Teil 12):
a) Erstellen Sie die Funktionstabelle für die Eingänge D - A und die Ausgänge a - g nach
folgendem Muster (für die Dezimalzahlen 0 bis 9):
dez.
D
C
B
A
a
b
c
d
e
f
g
0
0
0
0
0
1
1
1
1
1
1
0
1
0
0
0
1
0
1
1
0
0
0
0
2
0
0
1
0
b) Konventioneller Weg: Ermitteln Sie die minimierten Schaltfunktionen a - g! Beachten Sie, dass
der Zähler nur Zahlen von 0 - 9 liefert. Die restlichen Kombinationen können im KV-Diagramm
als Don´t care positions gesetzt werden! (Das sieht nach sehr viel Arbeit aus; und ist es auch!)
Hinweise zur (viel einfacheren) Realisierung mit ispLever:
• Eingänge:
D, C, B, A: Dipschalter mit den Pin's 28, 29, 30, 31 (Zähler kommt später)
• Ausgänge:
Rechte 7-Segmentanzeige mit den Segmenten ar, br, cr,... (r: rechts!)
• Man könnte jetzt die 7 Schaltfunktionen ar bis gr als Funktionen von D,C,B,A eintippen;
auch das ist sehr viel Tipparbeit und sehr fehleranfällig!
• ispLever beherrscht aber auch die Eingabe einer Funktionstabelle (TRUTH_TABLE) und
ermittelt daraus von alleine die benötigten Schaltfunktionen!
• Die Syntax sieht (wie im vorherigen Beispiel schon gezeigt) wie folgt aus:
DECLARATIONS "*************** Ein- und Ausgänge ***************************
in3..in0
PIN 28,29,30,31;
"Eingaenge
ar,br,cr,dr,er,fr,gr PIN 67,65,66,70,72,69,71 ISTYPE'BUFFER,COM'; "Ausgaenge
"********************* SET Deklarationen ********************************
dipschalter
= [in3..in0];
"Zusammenfassung der Eingaenge
seg7r
= [ar,br,cr,dr,er,fr,gr];
"Zusammenfassung der Ausgaenge
TRUTH_TABLE "************** Funktionstabelle ******************************
(dipschalter -> [ ar, br, cr, dr, er, fr, gr]); "Eingaenge -> Ausgaenge
0
-> [ 1, 1, 1, 1, 1, 1, 0 ];
1
-> [ 0, 1, 1, 0, 0, 0, 0 ];
Realisieren und testen Sie die Schaltung! Was wird angezeigt, wenn Sie die Zahlen 10 – 15
einstellen? Erweitern Sie die Funktionstabelle und lassen Sie für 10 - 15 „E“ wie „Error“ anzeigen!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Aufgabe 8: Ansteuerung einer Siebensegment-Anzeige im Hex-Code
Datum:
Seite: 14 / 47
seg7hex
Der Hexadezimal-Code verwendet als Basis die Zahl 16; es sind somit 16 Kombinationen möglich,
mit denen von 0 - 15 gezählt werden kann. Zur Darstellung werden folgende Ziffern bzw.
Buchstaben verwendet:
0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / A / B / C / D / E / F
Zur Anzeige dieser 16 Zeichen wird ein Codewandler benötigt. Die Eingänge des Codewandlers
sind die Signale D - A (Dualcode), die Ausgänge a- g (Segmente einer Siebensegmentanzeige).
Die Zeichen werden wie folgt dargestellt:
Hinweise zur Realisierung mit ispLever:
• Legen Sie ein neues Projekt „seg7hex an!
• Übernehmen Sie dann mit dem Texteditor den Quellcode aus „seg7bcd“!
• Testen Sie, ob alles funktioniert (gleiches Verhalten wie im vorherigen Beispiel)!
• Erweitern Sie jetzt den Quellcode so, dass auf linken 7-Segmentanzeige der HEX-Code
dargestellt wird! (von 0 – 9 somit identische Anzeigen, ab 10 links HEX, rechts Error)
Aufgabe 9: Der Gray-Code
gray1
In der Messtechnik werden zur Erfassung von Strecken oder Winkeln oft Codestreifen oder
Codescheiben verwendet. Prinzipiell könnte man diese direkt im Dualcode kodieren und könnte
somit das Ergebnis direkt ablesen. Beispiel: Codestreifen im Dualcode, Ablesefenster bei „3“:
Die Ablesung findet in der Praxis meist mit lichtempfindlichen Photodioden statt, die den
Unterschied hell/dunkel erfassen und an eine Auswertelogik weitergeben. Dabei kann es bei
Übergängen von einem Wert auf den anderen immer wieder mal zu Ablese- oder
Übertragungsfehlern kommen. (Ableserahmen steht schief, steht zwischen zwei Werten usw...).
Würde beispielsweise im obigen Beispiel das Bit 2 mit „1“ statt „0“ abgelesen werden, hätte man
als Ergebnis 7 und läge somit weit daneben!
Diese Nachteile vermeidet der sog. Gray-Code:
Er ist so aufgebaut, dass sich aufeinanderfolgende Codeworte in nur einem Bit unterscheiden.
Bei Verfälschung (bzw. Verschiebung um ein Bit) liegt man maximal um ein Codewort daneben!
Solche Codes, von denen es sehr viele gibt, nennt man zyklische Codes.
Der bekannteste und wichtigste ist der Gray-Code!
Beispiel für einen Codestreifen im Gray-Code:
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 15 / 47
Wenn hier der Ableserahmen auf „3“ steht und Bit 2 wird verfälscht (wie oben), so landet man hier
beim Codewort „4“, also nur eine Stelle „daneben“.
Beispiel für eine 3-stellige Codescheibe:
(Die gelb markierten Punkt könnten Photodioden sein)
Außen: Bit 0, innen: Bit 2, die Codierung entspricht
dem o.g. Codestreifen.
Quelle: http://de.wikipedia.org/wiki/Gray-Code
Zur Weiterverarbeitung in digitalen Rechenanlagen muss das im Gray-Code abgelesene Codewort
allerdings wieder in den Dualcode umgewandelt werden. Dazu verwendet man einen Codewandler.
z
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
4-stelliger Gray-Code
y
x
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
w
Dual-Code (8-4-2-1-Code)
dezimal d (8)
c (4)
b (2)
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Z
Der Codewandler muss jedes Codewort des
Ausgangscodes (hier: Gray-Code) in das
entsprechende Codewort des Zielcodes
(hier: Dualcode) wandeln!
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
Y
X
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
a (1)
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
W
G ra y C
- ode
D
C
B
D ua lC
- ode
A
Hinweise zur Realisierung auf der isp-Platine:
• Eingabe des Gray-Codes mit den niederwertigen Stellen des Dipschalters (z,y,x,w)
• Ausgabe des Dualcodes auf vier LED's (d,c,b,a)
• Kopfzeilen der „TRUTH_TABLE“:
([z, y, x, w] -> [d, c, b, a]);
[0, 0, 0, 0] -> [0, 0, 0, 0];
Wenn das Programm soweit funktioniert, erweitern Sie es so, dass eine zusätzliche Ausgabe im
HEX-Code auf der linken 7-Segmentanzeige erfolgt. Die (fertig getestete) Funktionstabelle für die
Umwandlung Dual → HEX können Sie dafür aus dem vorherigen Beispiel (seg7hex) übernehmen!
Machen Sie sich beim Durchschalten des Gray-Codes auf dem Dipschalter bewusst, dass Sie immer
nur eine Stelle verändern müssen! Dies wäre beim Dual-Code nicht der Fall!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Aufgabe 10: Abstimmungsanzeige im „Thermometer-Code“
Datum:
Seite: 16 / 47
abstimm1
Das Abstimmungsergebnis eines vierköpfigen Gremiums mit den Mitgliedern a, b, c, d soll
automatisch ermittelt werden. Jedes Mitglied erhält eine Taste, durch Tastendruck signalisiert ein
Mitglied Zustimmung. Ja-Stimme: 1; Nein-Stimme: 0.
Die Signale d2, d1, d0 geben das Abstimmungsergebnis im 8-4-2-1-Code als Dualzahl an.
Dieses Abstimmungsergebnis wird über die Logik 2 als Leuchtband-Anzeige dargestellt
(„Thermometer-Code“)
Bei einer Ja-Stimme leuchtet nur l0, bei zwei Ja-Stimmen leuchten l0 und l1, bei drei Ja-Stimmen
leuchten l0, l1, l2 usw.
a
l3
d2
b
Logik1
c
l2
d1
Logik2
l1
d0
l0
d
4 AbstimmungsTeilnehmer
Dualzahl
Leuchtband-Anzeige
Funktionstabelle
d
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Teilnehmer
c
b
0
0
0
0
0
1
0
1
1
0
1
0
1
1
1
1
0
0
0
0
0
1
0
1
1
0
1
0
1
1
1
1
a
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Dualzahl
d2 d1 d0
Leuchtband
l3
l2
l0
l0
Hinweise zur Realisierung mit der isp-Platine: Zwei Funktionstabellen verwenden!
Für die erste TRUTH_TABLE:
([d ,c ,b ,a ] -> [d3,d2,d1,d0]);
Für die zweite TRUTH_TABLE:
([d3,d2,d1,d0] -> [l3, l2, l1, l0]);
Wenn alles funktioniert, können Sie zusätzlich noch die linke Sieben-Segment-Anzeige verwenden,
oder das Beispiel auf 8 Personen „aufrüsten“!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 17 / 47
4. Schaltungen mit Speicherverhalten (Flip-Flops)
Bei den bisher betrachteten Schaltelementen wie UND, ODER, usw... war kein Speicherverhalten
zu erkennen: Ein UND liefert nur dann ein 1-Signal am Ausgang, wenn beide Eingänge dauerhaft
auf 1 liegen! Aus dem Treppenhaus eines z.B. mehrstöckigen Hauses kennen Sie aber vielleicht
folgendes Verhalten: Sie betätigen (kurz) einen Taster, das Licht bleibt an! Zwei Stockwerke höher
betätigen Sie wieder einen Taster, das Licht geht aus! (Oder das Licht geht nach einer bestimmten
Zeit von alleine wieder aus). In beiden Fällen „merkt“ sich eine Schaltung, dass Sie einen Taster
gedrückt haben. Hier ist ein deutliches Speicherverhalten zu erkennen! In der Digitaltechnik
werden Schaltungen, die eine Information speichern können, Flip-Flops genannt. Es gibt sehr viele
Typen von Flip-Flops, eine prinzipielle Unterscheidung besteht in sog. statischen bzw.
taktgesteuerten Typen. Mit statischen FF's kann man z.B. sehr einfach mechanische Schalter /
Taster entprellen, taktgesteuerte FF's sind die Grundbausteine für Frequenzteiler- und
Zählschaltungen. In diesem Kurs werden wir nur die drei wichtigsten FF's kennenlernen.
Zum Nachlesen siehe auch: http://www.elektronik-kompendium.de/sites/dig/0209302.htm
4.1 Das statische SR-FF (ohne Takteingang)
Das statische SR-FF (oft auch gleichwertig RS-FF genannt hat 2 Eingänge und 2 Ausgänge;
die Funktionsweise wird in einer Funktionstabelle beschreiben:
Eingang S
Setzen
Eingang R
Rücksetzen
Ausgang Qttn+1
Ausgang Q*tn+1
tn+1: Folgezustand = Qtn negiert
Bemerkung
0
0
Qtn
/Qtn
Speichern, Ausgang bleibt!
1
0
1
0
Setzen, Q wird 1
0
1
0
1
Rücksetzen, Q wird 0
1
1
-,-
-,-
nicht definiert, verboten
(Block-) Schaltzeichen und praktische Realisierung (Aufbau aus 2 NOR's):
A1
A2
Ermittlung der Ausgänge für die NOR-Schaltung
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
In der Schaltung aus den
beiden NOR's sind die
Ausgänge (Q und der
negierte Ausgang Q*
absichtlich nicht bezeichnet.
Diese sollen jetzt ermittelt
und eingetragen werden!
Ermittlung der Funktionsgleichung mit den
Bezeichnungen Q und QN (Q negiert)
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Programmierbeispiel: Test eines SR-FF
Datum:
Seite: 18 / 47
srff
Eingang S:
Taster Pin 15, Eingang R:
Taster Pin 17,
Ausgang Q:
Led Pin 61; negierter Ausgang Qn: Led Pin53
Gleichung (s. vorherige Seite!):
Q = (!R & S) # (!R & Q);
Programmieren Sie das Beispiel und machen Sie sich die Funktion klar!
Welchen Wert hat Q beim Einschalten bzw. direkt nach der Übertragung auf die Platine?
Was sieht man am Ausgang, wenn am Eingang die verbotene Kombination (1,1) angelegt wird?
4.2 Das Toggle-FF (taktgesteuert)
Bei dem bisher besprochenen 1-aktiven statischen SR-FF (und auch bei einem 0-aktiven /S/R-FF)
reagiert der Ausgang erst dann auf den Befehl an den Steuereingängen, wenn ein bestimmter
Spannungspegel (z.B. für HIGH) erreicht wird. Dies kann je nach Baustein vielleicht bei 3 V,
vielleicht bei 4,2 V der Fall sein. Der exakte Zeitpunkt des Umschaltens ist somit nicht genau
festgelegt. Oft ist jedoch ein sehr exaktes Schalten erwünscht. Man denke z. B. an einen
100 m-Lauf, wo es auf jede Hundertstelsekunde ankommt.
In solchen zeitkritischen Schaltungen kommen taktgesteuerte FF zum Einsatz.
Hierbei unterscheidet man zwischen taktzustands- und taktflankengesteuerten FF.
Als Takt wird sehr häufig eine Rechteckspannung benutzt:
Z e it t
Bei flankengesteuerten FF unterscheidet man positiv- bzw. negativ flankengetriggerten FF:
positiv flankengetriggert:
FF reagiert auf die positive Flanke, d.h. ein 01 - Übergang
negativ flankengetriggert: FF reagiert auf die negative Flanke, d.h. ein 10 - Übergang
p o s itvi e T a k tfal n ke n
n e g a tvi e T a k tfal n ke n
Das einfachste FF mit Taktsteuerung ist das Toggle-FF (kurz: T-FF);
die Funktion eines flankengetriggerten T-FF ist sehr schnell beschrieben:
Bei jeder auslösenden Taktflanke kippt („toggelt“) der Ausgang Q in den anderen Zustand!
Ergänzen Sie die beiden Zeitablaufdiagramme (Impuldiagramme)!
K u rzd a rs te llung d e s T -FF :
po s itiv f lank eng e tr igg e r t:
B e isp ie l fü r e in m
I pu lsd iag ramm :
C
Q
T
Q
n eg a tiv f lank eng e tr igg e r t:
Q
T
Q
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 19 / 47
4.3 Das D-Flip-Flop (D-FF, auch Data Latch genannt)
Dieses FF gibt es taktzustands- und taktflankengesteuert, betrachten wir zunächst das
taktzustandsgesteuerte D-FF mit folgendem Schaltzeichen:
Bezeichnungen:
Q
1D:
Dateneingang, von C1 abhängig
1D
C1:
Takt- oder Enable-Eingang, oft auch mit
C1
G oder E bezeichnet (Freischalteingang)
Q:
Ausgang
Funktionsweise:
Wenn am Takteingang C=1 anliegt, nimmt der Ausgang Q die Information des Dateneingangs D
an, man sagt, das FF ist "transparent"! Die Information wird übernommen, solange C=1 ist!
Wenn C=0 anliegt, sperrt das FF, am Ausgang wird der letzte Zustand gespeichert!
C
0
0
1
1
D
0
1
0
1
Qn+1
Qn
Qn
0
1
Bemerkung
gesperrt, letzten
Zustand halten
freigeschaltet,
Daten übernehmen
Für den Zusammenhang zwischen Aus- und
Eingang kann man folgende Gleichung
angeben: Qn+1 = Dn (in Worten: der neue
Zustand an Q ist gleich der Information am
Dateneingang (natürlich nur bei C=1)!
Das taktflankengesteuerte D-FF mit diesem Schaltzeichen:
positiv flankengetriggert:
1D
C1
negativ flankengetriggert:
Q
1D
C1
Q
Bezeichnungen:
1D:
Dateneingang,
von C1 abhängig
C1:
Takteingang
Q:
Ausgang
Funktionsweise:
Wenn am Takteingang C eine Impulsflanke eintrifft, wird die Information vom Dateneingang
übernommen und gespeichert.
D
0
1
C
 bzw. 
 bzw. 
Qn+1 Bemerkung
0
bei Flanke 0 übernehmen
1
bei Flanke 1 übernehmen
Zusammenhang zwischen Q und D:
Qn+1 = Dn (natürlich nur beim
Eintreffen einer Flanke an C!
Wichtiger Hinweis:
Jedes taktgesteuerte FF kann auch noch sog. asynchrone dominante Setz- oder Rücksetzeingänge
(S, R) haben! Diese dominanten Eingänge sind nicht vom Takt abhängig, der Ausgang Q reagiert
sofort auf die Informationen an S, R. Speziell den Rücksetzeingang könnte man als „Not-Aus“
bezeichnen. Beispiel Förderband: Bei einem Unfall muss es unverzüglich ausgeschaltet werden,
wenn jemand auf den Not-Aus-Taster drückt!
Schaltbild für ein D-FF mit asynchronen S, R – Eingängen:
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Programmierbeispiel: Ein D-FF testen
Datum:
Seite: 20 / 47
dff
MODULE Dff
"Untersuchung eines D-FFs mit
"Takt (am besten von Hand!) am Takt-Eingang C (Clock)
"Taster am Daten-Eingang D
"Taster am asynchronem Reset-Eingang (AR)
DECLARATIONS "********** Ein- und Ausgaenge ****************************
takt
PIN 88;
"Jumper auf S3 - gelber Taster
daten
PIN 15;
"Eingang von Taster 1 heisst Daten
reset
PIN 17;
"Eingang von Taster 2 heisst Reset
dff
PIN 53 ISTYPE'BUFFER,REG'; "Es wird ein D-Flipflop verwendet
"das dff genannt wird und dessen
EQUATIONS
"******** Funktionsgleichungen ****************************
dff.d
= daten; "D-Eingang des FF, mit Taster Daten beeinflussen!
dff.ar = reset; "Reset-Eing. des FF, mit Taster Reset ausloesen!
dff.clk = takt;
"Takt des D-FF vom Taktgenerator
END
Ein flankengetriggertes D-FF läßt sich auch im Toggle-Mode betreiben. Dazu muss lediglich der
Ausgang Q* auf den Dateneingang D zurückgekoppelt werden! (Zur Erinnerung: Im Toggle-Mode
kippt das FF bei jeder Taktflanke in den jeweiligen Komplementärzustand!). Das D-FF im ToggleMode wirkt genauso wie das T-FF.
Programmierbeispiel: Ein D-FF im Toggle-Modus testen
dffto
MODULE Dff
"Untersuchung eines D-FFs im Toggle-Modus
"Takt (z.B. 1 Hz) am Takt-Eingang C (Clock)
DECLARATIONS "********** Ein- und Ausgaenge ****************
takt
reset
dff
EQUATIONS
PIN 88;
"Jumper auf S3 - gelber Taster
PIN 17;
"Eingang von Taster2 heisst Reset
PIN 53 ISTYPE'BUFFER,REG'; "Es wird ein D-Flipflop verwendet
"********* Funktionsgleichungen **************
dff.d
= !dff.q;
dff.ar = reset;
dff.clk = takt;
END
"Rueckkopplung vom Ausgang /Q auf D
"Reset-Eing. des FF mit Taster Reset ausloesen
"Takt des D-FF kommt vom Taktgenerator
Ein D-FF schaltet man in den Toggle-Mode,
indem man den negierten Ausgang !Q auf den
D-Eingang zurückkoppelt!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
1D
C1
Q
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 21 / 47
4.4 Übungsaufgaben zu FF's
Analyse und Test der fertigen Programme
Die kompletten Projektordner für die auf den vorhergehenden Seiten besprochenen
Beispiele srff, dff und dffto finden Sie im Tauschverzeichnis _alle!
Kopieren Sie diese drei Ordner in Ihr eigenes isp-Verzeichnis H:\isp!
Nehmen Sie die die FF-Beschreibungen zur Hand! Nach den Übungen soll Ihnen die
Funktionsweise der FF's klar sein!
1. Übertragen Sie das Programm srff auf die Platine und testen Sie die Funktionsweise!
Machen Sie sich die Funktion des SR-FF gemäß Funktionstabelle klar!
Welchen Wert hat Q beim Einschalten bzw. direkt nach der Übertragung auf die Platine?
Was sieht man am Ausgang, wenn am Eingang die verbotene Kombination (1,1) anliegt?
2. Übertragen Sie das Programm dff auf die Platine und testen Sie die Funktionsweise!
Machen Sie sich die Funktion des D-FF gemäß Funktionstabelle klar!
Beobachten Sie (bei langsamem Takt oder besser bei Handtakt! ) die Reaktion auf die
Taktflanke! An welcher Flanke reagiert das FF? Welche Bedeutung hat der Reset-Taster?
Versuchen Sie, bei gedrücktem Reset-Taster mit Hilfe von D und C den Ausgang Q zu
setzen! Warum wird dies nicht funktionieren? Machen Sie sich hiermit die Funktion der
statischen dominanten Eingänge klar!
3. Übertragen Sie das Programm dffto auf die Platine und testen Sie die Funktionsweise!
Machen Sie sich die Funktion der Rückkopplung dff.d = !dff.q klar!
An welcher Taktflanke reagiert der Ausgang Q?
Was macht der Ausgang Q, wenn Sie den Reset-Taster dauerhaft gedrückt halten?
Erstellung von zwei neuen Programmen
Aufgabe 4: Reihenschaltung von T-FF (D-FF im Toggle-Mode) Version 1
actrv1
Legen Sie ein komplett neues Projekt actrv1 an!
Übernehmen Sie dann den Programmcode aus dem Beispiel dffto (D-FF im Toggle-Mode)!
Definieren Sie zwei weitere FF's (Sie haben somit dff0 – Pin 53, dff1 – Pin 54 ,dff2 – Pin 55)!
Schalten Sie die drei FF's jeweils in den Toggle-Mode)!
Verbinden Sie die fertigen T-FF's dann wie folgt:
Takt-Eingang des 1. FF's: direkt an den Takt!
Takt-Eingang des 2. FF's: an den Ausgang Q des 1. FF's
Takt-Eingang des 3. FF's: an den Ausgang Q des 2. FF's
Testen Sie die Schaltung und machen Sie sich die Funktion klar! Worum handelt es sich?
Testen Sie „mittendrin“ auch die Funktion des Rest-Tasters!
An welcher Flanke reagieren die FF's jeweils?
Wenn alles klar ist: Schalten Sie noch ein weiteres FF dazu (wie die drei ersten), testen Sie!
Geben Sie dann noch die 4 Ausgänge im HEX-Code auf der linken 7-Segmentanzeige aus!
Aufgabe 5: Reihenschaltung von 4 T-FF (D-FF im Toggle-Mode) Version 2
actrv2
Legen Sie ein komplett neues Projekt actrv2 an!
Alles andere exakt wie im vorherigen Beispiel mit folgenden kleinen Änderungen:
Alle Takt-Eingänge werden jetzt negiert (also auf „negativ flankengetriggert“ umgestellt);
dies geschieht beispielsweise wie folgt: dff0.clk = !takt; dff1.clk = !dff0.q, usw...
Wie könnten Sie die Funktion dieser Schaltung beschreiben?
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 22 / 47
5. Asynchrone Frequenzteiler (einfache Zähler) 03.11.14
Worin unterscheiden sich asynchrone bzw. synchrone Zählschaltungen?
• Synchrone Schaltungen: Alle FF's sind am gleichen Takt angeschlossen und reagieren somit
exakt gleichzeitig auf die auslösende Taktflanke!
• Asynchrone Schaltungen bestehen aus hintereinander geschalteten FF's; jedes
nachfolgende FF kann also erst dann reagieren, wenn das vordere „dran war“. Bei vielen
FF's kann es somit zu Verzögerungen aufgrund der Laufzeiten eines FF's kommen.
Beispiel: Wenn man ein Gerücht synchron verbreiten will, stellt sich einer vor die Klasse und ruft:
„Im Hof gibt’s Freibier!“ - Alle werden sofort loslaufen. Bei der asynchronen Verbreitung sagts
Schüler 1 → Schüler 2, Schüler 2 → Schüler 3, usw.... Bis der letzte erfahren hat, dass es Freibier
gibt, haben's die ersten schon ausgetrunken – extrem ärgerlich!
Synchron oder asynchron können aufgebaut werden:
• Vorwärts- oder Rückwärtszähler (lineare Zählfolge)
• Dezimalzähler (0-9), mehrstellige Dezimalzähler (0-99, 0-999, usw...)
• Bereichszähler, z.B. 1 – 6 (hier gibt’s aber asynchron schon die ersten Schwierigkeiten)
Nur synchron kann man alles andere realisieren, z.B.
• Schaltung die im Graycode zählt
• Schaltung zur Steuerung von Schrittmotoren
• usw...
Asynchrone Schaltungen lassen sich jedoch einfach aufbauen und werden für einfache Zähler und
Frequenzteiler oft verwendet. Deshalb besprechen wir zunächst asynchrone Schaltungen.
Grundbausteine für asynchrone Schaltungen:
Alle FF's, die den Toggle-Modus beherrschen, bei uns also T-FF's und D-FF's im Toggle-Modus.
(Es gibt noch viele weitere FF-Typen, die wir hier aber nicht besprechen)
Prinzipielle Verschaltung der FF’s:
Das erste FF wird direkt am Takt angeschlossen, das zweite hängt am Ausgang Q des ersten, das
dritte FF am Ausgang des zweiten, usw....
Anschluss an Q oder am negierten Ausgang Q* ?
Die Verdrahtung bestimmt die Zählrichtung!
Positiv oder negativ flankengesteuert?
Auch die Art der Flankensteuerung hat einen Einfluss auf die Zählrichtung!
Varianten für Vorwärts:
Varianten für Rückwärts:
Man kann somit relativ leicht einen in der
Zählrichtung umschaltbaren Zähler bauen!
Wenn man (wie auf der isp-Platine vorhanden)
positiv flankengesteuerte FF's verwendet, gilt:
Q → Takt: Rückwärtszähler
Q* → Takt: Vorwärts
Vor jeden Takteingang muss man lediglich einen
Umschalter setzen (2 auf 1-Multiplexer)!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 23 / 47
5.1 Reihenschaltung aus drei T-FF: Frequenzteiler 8:1
Gegeben ist eine Reihenschaltung aus drei negativ flankengetriggerten T-FF.
Sie erinnern sich:
Ein T-FF ändert bei jeder (hier negativen) Taktflanke den Zustand am Ausgang Q !
QB
QA
Takt
T
QC
T
T
Ergänzen Sie das Impulsdiagramm, wenn am Takteingang des ersten FF folgendes Taktsignal
anliegt:
Takt 1
2
3
4
5
6
7
8
9
10
11
12
QA
QB
QC
QD
QA
QB
QC
dez
Erkenntnisse und Interpretation der Ergebnisse:
Kurzschaltzeichen:
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 24 / 47
5.2 Rückwärtszähler 7 – 0:
Verbinden Sie die negierten Ausgänge Qi* jeweils mit dem nachfolgenden Takteingang!
QB
QA
Takt
T
QC
T
T
Ergänzen Sie das Zeitablaufdiagramm (Impulsdiagramm)!
Takt 1
2
3
4
5
6
7
8
9
10
11
12
QA
QB
QC
QD
QA
QB
QC
dez
Wie lautet die dezimale Zählfolge dieser Schaltung?
Die gleiche Schaltung soll nun mit positiv flankengseteuerten D-FF's aufgebaut werden!
• Wie werden die D-FF in den Toggle-Modus geschaltet?
•
Wie müssen die FF's verdrahtet werden, damit die Schaltung rückwärts zählt?
•
Skizzieren Sie die Gesamtschaltung!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 25 / 47
5.3 Hinweise für die Realisierung auf der isp-Platine
Auf der isp-Platine stehen nur D-FF's mit positiver Flankensteuerung zur Verfügung; bei Bedarf
können statische dominante Setz- oder Rücksetzeingänge verwendet werden.
Sie sehen hier das Programm für das Projekt actrv1 vom letzten Termin:
MODULE actrv2
TITLE 'actrv2'
//Asynchrone Schaltung aus 4 D-FF's im Toggle-Modus
//Takteingang negiert -> negativ flankengesteuert
DECLARATIONS
//Eingaenge
reset pin 15;
takt pin 88;
//Ausgaenge 4 FF's definieren, Ausgabe auf 4 LED's, wichtig: reg!
ff3,ff2,ff1,ff0 pin 56,55,54,53 istype 'buffer,reg';
EQUATIONS
ff0.d =
!ff0.q;
//FF in den Toggle-Modus schalten
ff0.clk =
takt;
//erstes FF direkt am Takt
END
ff1.d =
ff1.clk =
!ff1.q;
ff0.q;
//FF's sind positiv flankengetriggert
//deshalb negieren
ff2.d =
ff2.clk =
!ff2.q;
ff1.q;
//FF in den Toggle-Modus schalten
ff3.d =
ff3.clk =
!ff3.q;
ff2.q;
//FF in den Toggle-Modus schalten
ff0.ar
ff1.ar
ff2.ar
ff3.ar
=
=
=
=
reset;
reset;
reset;
reset;
//Dominanter Reset-Eingang
Und hier einen Auszug aus dem Projekt actrv2 vom letzten Termin:
EQUATIONS
ff0.d =
ff0.clk =
!ff0.q;
!takt;
//FF in den Toggle-Modus schalten
ff1.d =
ff1.clk =
!ff1.q;
!ff0.q;
//FF's sind positiv flankengetriggert
//deshalb negieren
Beide Projekte finden Sie (erweitert um die Anzeige auf der Siebensegmentanzeige) im
Tauschverzeichnis! Kopieren Sie die kompletten Verzeichnisse nach H:\isp und testen Sie die
Schaltungen (falls es beim letzten Mal noch nicht geklappt hat)! Beim ersten Testen verwenden Sie
bitte den Handtakt und machen sich die Flankensteuerung klar!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 26 / 47
5.4 Dezimalzähler (BCD- oder m10-Zähler)
Die Zählkapazität dieser Schaltung ist 0 – 9, sie hat also 10 Zustände! Beim Auftreten der
Dezimalzahl 10 werden die FF über die statischen Reset-Eingänge sofort zurückgesetzt.
Verwendbar sind alle FF’s, die in den Toggle-Modus geschaltet werden können.
Q
Q
S
Q
S
T
T
R
Q
S
S
T
R
T
R
R
Reset
Zum Rücksetzen wird folgende Schaltung benötigt:
Bei FF´s mit 1-aktiven Reset-Eingängen:
Bei FF´s mit 0-aktiven Reset-Eingängen:
Man erhält folgendes Impulsdiagramm:
Takt 1
2
3
4
5
6
7
8
9
10
11
12
QA
QB
QC
QD
QA
QB
QC
QD
dez
Es ist zu beachten, daß die Dezimalzahl 10 nur für einen winzigen Moment lang an den FFAusgängen anliegt (ca. 20 ns) Diese Zeit benötigt das UND-Element, um aus den Ausgängen
QD – QA das Resetsignal zu erzeugen.
Programmmierbeispiel: Dezimalzähler 0 - 9
actr09
Legen Sie ein komplett neues Projekt actr09 an!
Übernehmen Sie dann den Programmcode aus dem Beispiel actrv2 (0-15)!
Beachten Sie, dass ein Reset der Schaltung entweder bei 10 (logisches Reset) ODER beim Drücken
des Reset-Tasters (Pin 15) erfolgen kann! Welches Schaltelement werden Sie denn benötigen?
Weitere Beispiele nach freier Wahl, z.B. Rückwärtszähler 9 – 0, zweistelliger Dezimalzähler 0 – 99
Programmmierbeispiel: Vierstufiger Vorwärts-Rückwärtszähler (0-15, 15-0)
actrvr
Realisieren Sie mit Hilfe von Multiplexern einen umschaltbaren Zähler!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 27 / 47
5.5 Übungsaufgaben zu asynchronen Schaltungen (Klein-Projekte)
Analyse und Test der fertigen Programme
Die kompletten Projektordner für die auf den vorhergehenden Seiten besprochenen Beispiele
actrv1 und actrv2 finden Sie im Tauschverzeichnis _alle!
• Kopieren Sie diese beiden Ordner in Ihr eigenes isp-Verzeichnis H:\isp!
• Testen Sie beide Programme!
• Nehmen Sie einige sinnvolle Erweiterungen vor!
Anregungen für kleine Projekte:
Wenn Sie Ihre CT-Note noch verbessern wollen, können Sie dies durch ein kleines Projekt tun.
Folgende Vorgaben sind einzuhalten:
• Es muss ein Programm erstellt und getestet werden
• Der Programmcode muss übersichtlich aufgebaut und kommentiert sein
• Das Programm muss funktionsfähig vorgeführt werden
• Das Programmlisting muss ausgedruckt und abgegeben werden
• Inwieweit sich die Note verbessert, hängt auch noch vom Schwierigkeitsgrad des
Programms und von der eigenen Kreativität ab.
• Abgabetermin: 16. Jan. 2014 (nach dem Unterricht
Einige
•
•
•
Anregungen (s. auch vorhergehende Seiten!)
Realisierung eines Dezimalzählers mit Anzeige auf der Siebensegment-Anzeige
Realisierung eines umschaltbaren Dualzählers (0-15, 15-0)
Realisierung eines zweistelligen Dezimalzählers mit Anzeige auf zwei SiebensegmentAnzeigen mit Reset-Taster
• Realisierung eines digitalen Würfels
• eigene Vorschläge
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 28 / 47
6. Entwurf von synchronen Schaltungen (mit D-FF)
Ein Blick in verschiedene IC-Datenbücher oder Datenbanken zeigt, daß die meisten
Zählerschaltungen synchron aufgebaut sind (Verhältnis synchron zu asynchron etwa 5 : 1!).
Einige Gründe für synchrone Schaltungen:
 Geschwindigkeit:
Ab ca. 1 Mhz machen sich die Gatterlaufzeiten bei asynchronen Schaltungen bemerkbar!
 Bereichszähler (z. B. 3 - 11) sind asynchron nur mit aufwändigen Zusatzschaltungen zum
korrekten Funktionieren zu ,,bewegen"!
 Umschaltbare Asynchronzähler (Vorwärts-Rückwärtszähler) ändern beim Umschalten ihren
Zählerstand und funktionieren somit nicht richtig.
 Zähler mit ,,unregelmäßiger Zählfolge" (z. B. zur Schrittmotorsteuerung) sind asynchron
praktisch nicht realisierbar!
 In programmierbaren Bausteinen (GAL's, PLD's, isp-Bausteinen) werden nahezu ausschließlich
synchrone Schaltungen verwendet!
Bei einem Synchronzähler werden alle FF mit dem gleichen Taktsignal angesteuert. Dies hat zur
Folge, daß alle FF synchron, d.h. gleichzeitig reagieren. (Bei einem Asynchronzähler waren ja
bekanntlich die einzelnen FF vom Ausgang Q des vorherigen FF abhängig.) Als Grundbausteine für
Synchronzähler können JK-MS-FF (bzw. neg. flankengetriggerte JK-FF) und D-FF verwendet
werden. Einfache T-FF sind unbrauchbar, weil hier die Vorbereitungseingänge fehlen. Zur
Realisierung eines Zählers müssen die einzelnen FF über die Vorbereitungseingänge D i richtig
vorbereitet werden. Diese Vorbereitung wird über logische Verknüpfungen der Zählerausgänge Q i
erreicht.
6.1 Überblick Entwurfsverfahren für synchrone Schaltungen
Prinzipiell hat man vier Methoden, eine synchrone Schaltung zu entwerfen.
Methode 1: Der „konventionelle“ Entwurf mit Funktionsgleichungen
•
•
•
•
Funktionstabelle für den Zähler erstellen,
Schaltfunktionen für die Dateneingänge ermitteln,
Schaltfunktionen mit dem KV-Diagramm vereinfachen,
Abel-Quellfile erstellen, simulieren und testen;
Diese Methode wird im „konventionellen“ Digitaltechnik-Unterricht verwendet. Bis zur Realisierung
(praktischer Aufbau) ist der Lösungsweg exakt der gleiche, wie er im Unterricht normalerweise
behandelt und in Abitur-Prüfungsaufgaben verlangt wird (bzw. wurde). Hier werden wir dieses
Verfahren nicht behandeln, für interessierte Schüler wird es jedoch im Anhang beschrieben.
Methode 2: Der „fortgeschrittene“ Entwurf mit Elementen der Abelsprache
Hier werden bestimmte Features bzw. Sprachelemente von ispLever/Abel verwendet. Der
Zählerentwurf wird einfacher, es sind jedoch Abel-Programmierkenntnisse nötig. Wer Erfahrungen
mit einer Programmiersprache hat, wird hier sehr schnell zurechtkommen. Allerdings geht der
Bezug zum Unterricht etwas verloren, weil die üblichen Entwurfsmethoden hier nicht geübt
werden! Da man es vor allem bei mehrstelligen Zähler mit verschachtelten WHEN ... THEN –
Anweisungen zu tun hat, könnte man ruhig mal das gute alte STRUKTOGRAMM „wiederbeleben“!
Für einen zweistelligen Dezimalzähler sieht dies etwa so aus:
(nicht ganz normgerecht aber übersichtlich und einfach zu erstellen!)
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 29 / 47
Zweistelliger synchroner Dezimalzähler
Einer.Q = 9 ?
JA:
Einer.D = 0 setzen
(beim nächsten Takt auf Null!)
NEIN:
Einer.D = Einer.Q + 1
(Einer erhöhen)
Zehner.D = Zehner.Q
(Zehner bleiben)
Zehner.Q = 9 ?
JA:
Zehner.D = 0
setzen
NEIN:
Zehner.Q =
Zehner.Q +1
FERTIG!
Methode 3: Der Entwurf mit der Funktionstabelle
Relativ einfache Entwurfsmethode, da nur eine Funktionstabelle zu erstellen ist. In dieser Tabelle
werden alle denkbaren Kombinationen und Bedingungen erfasst und formuliert. Nachteilig an
dieser Methode ist allerdings die meiner Meinung nach unübersichtliche Darstellung, da man vor
allem bei größeren Aufgaben mit vielen Nullen/Einsen konfrontiert wird.
Methode 4: Der Entwurf mit Zustandsdiagrammen (state machines)
Diese Methode ist einfach und schön
Zustandsdiagramm für einen Zähler 0 – 4:
übersichtlich. Der Entwurf beschränkt
sich auf die Lösung des Problems, die
Digitaltechnik rückt in den Hintergrund.
Ein Bezug zum Unterricht ist
vorhanden, weil Zustandsdiagramme
z.B. Thema der Abiturprüfung sind.
Für Profis gibt es Programme , mit
denen man die Zustadsdiagamme
einfach zeichnen kann.
Aus der Zeichnung wird dann
automatisch das Abel-Quell-File erstellt,
ohne dass man nur einen Befehl der
Sprache kennen muss.
Im weiteren Verlauf des Unterrichts werden wir uns aus Zeitgründen nur mit der Methode 4
(Entwurf mit Zustandsdiagrammen) beschäftigen!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 30 / 47
6.2 Synchrone Schaltungen mit Zustandsdiagrammen
Wie schon mehrfach erwähnt, sind bei einer synchronen Schaltung alle Takteingänge am gleichen
Taktsignal angeschlossen und reagieren somit exakt synchron. Ob am Ausgang eines FF's eine
Zustandsänderung eintreten soll, muss somit über die Vorbereitungseingänge erreicht werden.
Betrachten wir als Beispiel einen Zähler, der von 0 – 7 zählen soll:
Ausgänge Qi zum Zeitpunkt tn,
d.h. vor dem Umschalten:
Dezimal
0
1
2
3
4
5
6
7
Q2
0
0
0
0
1
1
1
1
Q1
0
0
1
1
0
0
1
1
Q0
0
1
0
1
0
1
0
1
Folgezustand,
nach dem
Umschalten:
Dezimal
Beschaltung der Eingänge Di
zum Zeitpunkt tn
D2
D1
D0
Fazit: An den D-Eingängen muss man einfach den gewünschten Folgezustand anlegen!
Im Zustandsdiagramm würde dies wie folgt aussehen:
Diese Zustände lassen sich in ispLever (bzw. im Abel-Quell-File) sehr einfach mit der STATEAnweisung definieren; der Übergang von einem Zustand in einen anderen wird dabei mit der
GOTO-Anweisung realisiert!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 31 / 47
Programmierung in ispLever mit Zustandsdiagramm
Das Beispiel zeigt einen Zähler 0 -3 der mit Schalter „vor“ in der Zählrichtung beeinflusst werden
kann (vor = 1: vorwärts zählen, vor = 0: rückwärts zählen)
MODULE zaehl3s
"2 Bit Vorwaerts- Rückwaertszaehler 0 bis 3 (CTR DIV 4) mit State_Diagram
"Beim State_Diagram werden keine Gleichungen benoetigt!
"Mit USB-Platine OK, 06.12.2013
DECLARATIONS
" Hier alle Ein- und Ausgaenge angeben!
takt
vor
FF1,FF0
ctr
null
eins
zwei
drei
=
=
=
=
=
PIN 88;
"Takteingang
PIN 31;
"Umschaltung vor/zurück mit DIP-Sw1
PIN 54,53 ISTYPE'BUFFER,REG'; "2 Zaehlerausgaenge mit D-FFs
[FF1
[ 0
[ 0
[ 1
[ 1
,FF0
, 0
, 1
, 0
, 1
];
];
];
];
];
"Zaehler-FFs des STATE_Diagrams
"Zustaende des STATE_Diagrams
EQUATIONS
"Hier muss nur der Takt angegeben werden
ctr.clk = takt;
"alle FFs erhalten den gleichen Takt
STATE_DIAGRAM ctr;
"Das State_Diagram bestimmt, wie das Schaltwerk zaehlt;
"Die STATE-Anweisung wie folgt lesen: Wenn vor=1 dann vorwaerts, wenn vor
"ungleich 1 (also 0), dann rueckwaerts!
STATE
STATE
STATE
STATE
null:
eins:
zwei:
drei:
IF
IF
IF
IF
vor
vor
vor
vor
THEN
THEN
THEN
THEN
eins
zwei
drei
null
ELSE
ELSE
ELSE
ELSE
drei;
null;
eins;
zwei;
"vor=1:
"vor=1:
"vor=1:
"vor=1:
0->1
1->2
2->3
3->0
,
,
,
,
sonst
sonst
sonst
sonst
0->3
1->0
2->1
3->2
END
Übungsaufgaben: (alle Beispiele mit State-Diagrammen realisieren!)
1. Synchroner Dezimalzähler (sz09)
2. Zweistelliger synchroner Dezimalzähler (sz099)
3. Umschaltbarer synchroner Dezimalzähler (szvr09)
4. Umschaltbarer Synchronzähler 1-6 (szvr16), s. S. 39!
5. Weitere Beispiele nach freier Wahl
6. Weitere Übungen im weiteren Verlauf dieses Skripts; Online-Version s.
http://ces.karlsruhe.de/~GEI/download/technik/
6.3 Beispiel: Ansteuerung eines Schrittmotors
Schrittmotoren werden in der Praxis da eingesetzt, wo es auf hohe Positioniergenauigkeit
ankommt. Beispiele: Plottersteuerung, Steuerung des Druckkopfes in einem Drucker, in
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 32 / 47
Festplatten und Diskettenlaufwerken, bei kleineren Robotern usw... Prinzipiell besteht ein
Schrittmotor aus (vier feststehenden) Spulen (Stator) und aus einem beweglichen Dauermagneten
(Rotor). Durch "geschickte" Ansteuerung der Spulen erreicht man, dass sich der Rotor dreht!
Prinzipieller Aufbau eines sog. „Klauenpolmotors“:
L0
L2
L1
Erläuterung der Funktionsweise:
Position
Schalter
Schalter bestromt:
des
S1 in:
S2 in:
Rotors:
A
A
B
A
B
B
A
B
L0, L1
4>2
Hinweis:
Spulen haben das Formelzeichen „L“ !
L3
Vereinfachtes Modell eines
Schrittmotors (s. Folie):
Ansteuerung der Spulen L3 – L0
L3
L2
L1
L0
Position
dezimal:
Steuerfolge für LINKSLAUF:
Steuerfolge für RECHTSLAUF:
Realisierungsmöglichkeiten für die Ansteuerung (Linkslauf und Rechtslauf):
1. Verwendung eines Zählers 0 – 3 und anschließendem Decoder
2. Erzeugung der Zählfolge mit einem synchronen Schaltwerk
3. Verwendung eines Schieberegisters
Bei allen Varianten soll der Motor mit einem Taster gestartet / angehalten werden können.
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 33 / 47
Schrittmotorsteuerung mit Zustandsgraphen:
State-Diagramm für Links/Rechts im Vollschrittbetrieb
Steuerfolge für LINKSLAUF:
Steuerfolge für RECHTSLAUF:
Schalter „Links“ (L) = 1:
Schalter „Links“ (L) = 0:
Taster „Start“ (S) =1
Taster „Start“ (S) =0
3
9
Linkslauf
Rechtslauf
Motor läuft
Motor läuft nicht
6
12
12
6
9
3
„Nicht Links“ = Rechts!
“Nicht Start” = Stop!
Auszug aus ispLever:
STATE_DIAGRAM Spulen;
state null:
if (start & links) then drei
else if (start & !links) then neun;
state drei:
//Einschaltmoment
if (start & links) then sechs
else if (start & !links) then neun else drei;
state sechs: if (start & links) then zwoelf
else if (start & !links) then drei else sechs;
state zwoelf: if (start & links) then neun
else if (start & !links) then sechs else zwoelf;
state neun:
if (start & links) then drei
else if (start & !links) then zwoelf else neun;
Zustandsdiagramm „von Hand“, Links: L, Start: S
(„Nicht Links“ = Rechts, „Nicht Start“ = Stop)
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 34 / 47
Steuerschaltungen für einen Schrittmotor mit ispLever
Zur Ansteuerung der 4 Spulen eines Schrittmotors werden folgende Steuerfolgen benötigt:
1. Vollschritt, Linkslauf:
2. Vollschritt, Rechtslauf:
3 / 6 / 12 / 9
9 / 12 / 6 / 3
3. Halbschritt, Linkslauf:
4. Halbschritt, Rechtslauf:
1 / 3 / 2 / 6 / 4 / 12 / 8 / 9
9 / 8 / 12 / 4 / 6 / 2 / 3 / 1
Informationen zur isp-Platine (USB-Version):
DECLARATIONS
takt, start, schnell, links
PIN 88, 15, 17, 31;
//start/stopp: linker Taster T1, links: DIP-Switch rechts außen
//schnell/langsam: Taster T2
//Motor an den OpenKollektor-Anschluessen rechts unten anschließen!
//rot: + 5V, gelb: 37, schwarz: 36, orange: 35, braun: 34
//Externes Netzteil, ca. 7,5 V anschließen, Jumper oben links auf Ext.!
//Deklaration der Spulen
L3, L2, L1, L0
PIN 37, 36, 35, 34 istype 'buffer,reg';
Spulen = [L3,L2,L1,L0];
Aufgabe 1: Vollschritt/Linkslauf, ohne Bedienung
smvsli1
Die Spulen L3, L2, L1, L0 des Schrittmotors sind an den o.g. Pin’s angeschlossen.
Im ersten Entwurf soll sich der Rotor nur links drehen, d.h. es müssen keine Taster / Schalter
berücksichtigt werden!
Aufgabe 2: Vollschritt/Linkslauf, mit Bedienung
smvsli2
Mit Hilfe des Tasters T1 soll der Rotor jetzt gestartet (T1 gedrückt halten) bzw. angehalten werden
können (T1 loslassen)! Zusätzlich können Sie den Zustand der Spulen auf vier Led's (56, 55,54,53)
ausgeben.
Aufgabe 3: Vollschritt, umschaltbar
smvsum
Der Motor soll jetzt zusätzlich in der Richtung umkehrbar sein!
Bedienelemente: T1 für Start/Stopp, DIP-Switch Pin 31: Links/Rechts
Wenn DIP = 1 (Schalter „links“) ist, soll Linkslauf realisiert werden, mit DIP = 0 Rechtslauf!
Aufgabe 4: Halbschritt, umschaltbar
smhsum
Wie Aufgabe 3, jedoch für Halbschrittbetrieb!
Aufgabe 5: Halbschritt, umschaltbar, schnell/langsam
smhsumsl
Durch Umschaltung des Zählertaktes soll jetzt die Schaltung aus Aufgabe 4 so erweitert werden,
dass von „schnell“ auf „langsam“ umgeschaltet werden kann!
Lösungsansatz:
• Aus dem Originaltakt (takt1) wird mit Hilfe eines Frequenzteilers (Zählers) ein durch 16
geteilter takt2 erzeugt.
• Mit einem durch Taster T2 gesteuerten 2 auf 1 - MUX wird entweder takt1 oder takt2 auf
den Takteingang des Zählers geschaltet.
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 35 / 47
7. Schieberegister
Definition SRG:
Ein SRG ist eine Schaltung, die eine Information taktgesteuert Bit für Bit einliest,
die Information eine gewisse Zeit lang speichert und sie dann am Ausgang
wieder abgibt.
Grundbausteine: Grundsätzlich können für SRG’s alle FF’s mit Vorbereitungseingängen verwendet
werden, also JK-FF, JK-MS-FF und D-FF. Am häufigsten werden JK-MS-FF
eingesetzt.
Die wichtigsten Anwendungen sind Schieberegister für serielle Ein- und Ausgabe
1. mit Parallelausgängen
2. mit Parallelaus- und Paralleleingängen.
Grundsätzlicher Aufbau eines SRG’s aus JK-FF oder JK-MS-FF:
Die Vorbereitungseingänge J und K des jeweils folgenden FF werden mit den Ausgängen Q und Q*
des jeweils vorherigen FF’s verbunden. Alle Takteingänge liegen an einem gemeinsamen Takt; ein
SRG ist somit eine synchrone Schaltung, weil alle FF gleichzeitig reagieren!
Vierstufiges SRG aus JK-MS-FF:
Q
Q
Q
Q
1J
C1
S
1J
C1
S
1J
C1
S
1J
C1
S
1K
R
1K
R
1K
R
1K
R
Takt
Reset
Wie müssen J und K des ersten FF beschaltet werden?
Bezeichnungen:
SE
SA
R
S
QA, QB, QC, QD
Funktion der Schaltung:
Zu Beginn seien alle FF über R = 1 zurückgesetzt (bzw über /R = 0 bei 0-aktiven
Rücksetzeingängen), d. h. an allen Ausgängen Qi liegt 0 an. Über den seriellen Eingang SE können
für das 1. FF folgende Werte an die Vorbereitungseingänge J und K angelegt werden:
SE
1
0
J
1
0
K
0
1
Funktion:
vorbereitet für „Setzen“
vorbereitet für „Rücksetzen“
Bis zum Ende des 1. Taktimpulses wird nun am Serieneingang SE eine „1“ angelegt.
Anschließend bleibt SE bei allen weiteren Taktimpulsen auf „0“.
Erarbeiten Sie das Zeitablaufdiagramm für die Ausgänge der FF!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 36 / 47
Impulsdiagramm:
Hinweis: Das SE-Signal liegt etwas länger als der erste Taktimpuls.
Takt
:
1.
2.
3.
4.
5.
SE
QA
QB
QC
QD
Aus dem Impulsdiagramm kann man erkennen:
Der zu Beginn an SE anliegende Impuls wird mit jedem Taktimpuls um eine Stufe
weitergeschoben. Nach dem 4. Impuls erscheint das Signal am Ausgang der 4. Stufe. Die
Verzögerungszeit für das „Durchschieben“ des Impulses ergibt sich somit zu: t ges = n * T.
(n: Anzahl der Stufen, T: Periodendauer des Taktes)
Typisches Anwendungsbeispiel für Schieberegister:
Datenübertragung in der Computertechnik!
Blockschaltbild:
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 37 / 47
Weiteres Beispiel: 4-Bit-Seriell-Parallelwandler
Die zu Beginn besprochene Schaltung (vierstufiges SRG) kann als Seriell-Parallelwandler eingesetzt
werden. Dazu wird am Serieneingang SE synchron mit dem Takt ein bestimmtes Bitmuster
eingelesen.
(Bei einem achtstufigen SRG könnte dies z. B. die Zeichenfolge 0 1 0 0 0 0 0 1 sein. Dies
entspricht der ASCII-Darstellung des Großbuchstabens „A“!)
Im Beispiel lesen wir das Bitmuster d3, d2, d1, d0 = 1, 0, 1, 1 ein!
Takt
:
SE
1.
2.
d3
3.
d2
4.
d1
5.
d0
QA
QB
QC
QD
Nach:
QA =
QB =
QC =
QD =
1. Impuls
d3
-
2. Impuls
Erkenntnis:
Betrachtet man die FF-Ausgänge, so sieht man,
dass nach dem 4. Taktimpuls die seriell
eingelesene Information parallel zu Verfügung
steht.
Falls keine weiteren Taktimpulse mehr
eintreffen, bleibt die Information an den
Ausgängen erhalten.
Bei weiteren Taktimpulsen (wie oben
gezeichnet) wird die Information am Ausgang
des letzten FF wieder „rausgeschoben“. Der
Ausgang QD wirkt somit als Serienausgang SA!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
3. Impuls
4. Impuls
Kurzschaltzeichen eines vierstufigen
Schieberegisters:
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 38 / 47
Schieberegister mit ispLever
Da Schieberegister synchrone Schaltungen sind und aus FF's mit Vorbereitungseingängen
bestehen, können sie natürlich auch auf der isp-Platine realisiert werden! Da in ispLever
standardmäßig D-FF's verwendet werden, müssen natürlich auch die SRG's mit D-FF's
programmiert werden!
Hier einige Hinweise zur Programmierung:
• D-FF's mit Ausgängen auf den LED's definieren!
• Synchronen Takt verwenden!
• Takt sehr langsam einstellen, dass die Signale gut verfolgt werden können!
• Ausgang eines FF's auf den D-Eingang des nächsten FF's „verdrahten“!
• Am D-Eingang des ersten FF (SE) einen Taster zum Einlesen der Information anschließen!
• Wenn man den Ausgang des letzten FF auf den D-Eingang des ersten FF zurückkoppelt
(ODER verwenden!) hat man ein Ringregister!
• Löschen aller FF's kann über die asynchronen Reset-Eingänge der FF's realisiert werden!
Programmauszug: Schieberegister (LPT-Platine, Pin-Belegung für USB-Platine anpassen!)
MODULE srg
TITLE 'Schieberegister mit vier Stufen'
//OK! Feb. 2009
//FF0 kann asynchron gesetzt werden
//alle vier FF werden synchron rückgesetzt
//Takt langsam einstellen, beim Setzen von ff0 sonst Prellen
DECLARATIONS
//Eingaenge
takt
setzen
ruecksetzen
PIN 11;
PIN 16;
PIN 18;
//Ausgaenge
ff3, ff2, ff1, ff0
PIN 7, 8, 9, 10 ISTYPE 'buffer,reg';
schieberegister = [ff3,ff2,ff1,ff0];
EQUATIONS
//Verschaltung der D-FF zu einem Ringregister
ff1.d = ff0.q;
ff2.d = ff1.q;
ff3.d = ff2.q;
ff0.d = ff3.q # setzen;
schieberegister.clk
schieberegister.aclr
= takt;
= ruecksetzen;
//synchrones Rücksetzen beim nächsten Takt:
//schieberegister.clr = ruecksetzen;
//FF0 kann asynchron gesetzt werden, OK
//ap bedeutet: asynchron preset!
//ff0.ap
= setzen;
END
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 39 / 47
Anhang: Konventioneller Zählerentwurf mit Gleichungen
Man geht beim Entwurf eines Synchronzählers wie folgt vor:
1. Schritt: Anzahl der benötigten FF ermitteln !
z.B. Zähler 0 .. 7 ==> 8 Zustände, ==> 3 FF nötig!
2. Schritt: Erstellen der Funktionstabelle
Die Funktionstabelle teilt man in 2 Teile:
Teil 1: Tabelle für die FF-Ausgänge Qi zum Zeitpunkt tn (d.h. vor dem Umschalten)
Hier wird die gewünschte Zählfolge angegeben; es ist empfehlenswert, zusätzlich zur dualen
Zählfolge auch die dezimale Darstellung anzugeben.
Teil 2: Tabelle für die Beschaltung der Dateneingänge Di zum Zeitpunkt tn
Hier gilt: An den Dateneingängen muß nur der gewünschte Folgezustand der Ausgänge Q i (tn+1)
angelegt werden. Es gilt folgende charakteristische Gleichung: D i = Qi (tn+1) !
Für einen Vorwärtszähler 0 –7 sieht die Funktionstabelle wie folgt aus:
Ausgänge Qi zum Zeitpunkt tn,
d.h. vor dem Umschalten!
Dezimal
Q2
Q1
Q0
0
0
0
0
1
0
0
1
2
0
1
0
3
0
1
1
4
1
0
0
5
1
0
1
6
1
1
0
7
1
1
1
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Folgezustan
d
Dezimal
1
2
3
4
5
6
7
0
Beschaltung der Eingänge Di
zum Zeitpunkt tn
D2
D1
D0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
0
0
0
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 40 / 47
3. Schritt: Ermitteln der Schaltfunktionen D i :
Der weitere Lösungsweg ist klar:
Wir brauchen drei KV-Diagramme für die Schaltfunktionen D2, D1 und D0 und müssen die
vereinfachten Funktionsgleichungen ermitteln!
Q0
Q0
Q1
Q1
Q2
Ergebnisse:
Q0
Q1
Q2
Q2
D0 =
D1 =
D2 =
Ermitteln Sie (zur Abschreckung!) , wieviele Standard-IC´s der Serie 74xx zum gesamten Aufbau
nötig wären! IC-Liste:
Um schon jetzt eine gewisse „Vorfreude“ zu wecken:
Es wird uns gelingen, alle drei FF und die ganze Vorbereitungslogik in ein einziges IC zu
brennen!
4. Schritt: Zeichnen der kompletten Schaltung:
Skizzieren Sie die gesamte Schaltung! Achten Sie dabei auf eine möglichst übersichtliche
Darstellung! Geben Sie dann das Kurzschaltzeichen an!
Die Schaltung wird gezeichnet. Dabei sollte man auf eine übersichtliche Darstellung achten.
Kontrolle: D0 =/Q0 D1 = Q0 * /Q1 + /Q0 * Q1 D2 = /Q1 * Q2 + /Q0 * Q2 + Q0 * Q1 * /Q2
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 41 / 47
Synchroner Rückwärtszähler 7 .. 0,
1. Es müssen 8 Zustände dargestellt werden. Dazu werden N = ld 8 FF benötigt
(ld: Logarithmus dualis). Hier erhält man N = 3, da 2 3 = 8 ergibt. Die FF heißen: FF0, FF1, FF2.
2. Funktionstabelle :
Ausgänge Qi zum Zeitpunkt tn,
d.h. vor dem Umschalten!
Dezimal
Q2
Q1
Q0
3. Ermitteln der Schaltfunktionen Di
KV-Diagramm für
Folgezustan
d
Dezimal
Beschaltung der Eingänge Di
zum Zeitpunkt tn
D2
D1
D0
( i = 0..2)
KV-Diagramm für
Q0
Q1
Q0
Q1
Q2
KV-Diagramm für
Q2
KV-Diagramm für
Q0
Q1
Q1
Q2
Ergebnisse:
Q0
Q2
D0 =
D1 =
D2 =
4. Aufbau der Schaltung und Kurzschaltzeichen auf Rückseite skizzieren!
Kontrolle: D0 =/Q0 D1 = /Q0 * /Q1 + Q0 * Q1 D2 = Q0 * Q2 + Q1 * Q2 + /Q0 * /Q1 * /Q2
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 42 / 47
Synchroner Dezimalzähler 0 .. 9
1. Anzahl der benötigten FF:
2. Funktionstabelle :
dez.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Zeitpunkt tn
Q3
Q2
Q1
3. Ermitteln der Schaltfunktionen Di
KV-Diagramm für
Q0
Beschaltung der Vorbereitungseingänge
dez
D3
D2
D1
D0
1
2
3
4
5
6
7
8
9
0
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
(i = 0 .. 3)
KV-Diagramm für
Q0
Q0
Q1
Q1
Q3
Q3
Q2
Q2
KV-Diagramm für
KV-Diagramm für
Q0
Q0
Q1
Q1
Q3
Q2
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Q3
Q2
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 43 / 47
Umschaltbarer Synchron-Vorwärts-Rückwärts-Zähler 1..6 bzw. 6..1
Aufgabe: Es soll ein Zähler entworfen werden, der durch einen Schalter V in der Zählrichtung
beeinflußt werden kann.
Zählfolge:
vorwärts:
rückwärts:
1 .. 6 bei Schalterstellung V = 1
6 .. 1 bei Schalterstellung V = 0
Um die Zählfolge und die Übergangsbedingungen optisch deutlich zu machen, verwendet man hier
einen sog. Zustandsgraphen (state machine)
RESET
Eins
V=1
V=1
V=0
Sechs
V=1
V=0
Zwei
V=0
V=0
Fuenf
V=0
V=0
V=1
Drei
V=1
V=1
Vier
Mit Hilfe solcher Zustandsgraphen können schwierigere Steuerungsprobleme übersichtlich
dargestellt werden. Wenn man mit programmierbaren Bausteinen arbeitet, können diese Graphen
direkt in den entsprechenden Programmcode umgesetzt werden!
Funktionstabelle für den Entwurf:
Zeitpunkt tn
dez.
1
2
3
4
5
6
6
5
4
3
2
1
V
1
1
1
1
1
1
0
0
0
0
0
0
Q2
Q1
Q0
Beschaltung der
Vorbereitungseingänge
dez
D2
D1
D0
Vorbereitung der FF:
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 44 / 47
Die Vorbereitungsfunktionen Di sind in diesem Beispiel nicht nur von den FF-Ausgängen, sondern
auch von der Schalterstellung V abhängig, d.h. es sind KV-Diagramme mit 16 Feldern nötig !
KV-Diagramm für
KV-Diagramm für
Q0
Q0
Q1
Q1
S
S
Q2
Q2
KV-Diagramm für
KV-Diagramm für
Q0
Q0
Q1
Q1
S
Q2
S
Q2
Ergebnisse:
D0 =
D1 =
D2 =
Problem aus der Praxis:
Bei obigem Zähler tritt der Zustand „0“ in der Zählfolge nicht auf! FF’s haben jedoch die
Eigenschaft, beim Anlegen der Speisespannung die Ausgänge auf „0“ zu setzen.
1.1. In welchen Folgezustand springt der Zähler nach der Zahl „0“ bei V = 1 bzw. V = 0 ?
Kommt der Zähler „in Tritt“ (d. h. kommt nach „0“ ein regulärer Zustand)?
1.2. Wie lässt sich das Problem in der Praxis beheben?
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 45 / 47
Zähler mit "seltsamer" Zählfolge
Mit den bekannten Entwurfsverfahren ist es kein Problem, einen Zähler für folgende etwas wirr
erscheinende Zählfolge zu entwerfen: 5 / 1 / 3 / 2 / 6 / 14 / 10 / 11 / 9 / 13
(Hinweis für Insider: Bei dieser Zählfolge handelt es sich um den sog. Petherick-Code, einen Code,
der in der Steuerungstechnik für Winkel- oder Streckencodierer verwendet wird, vgl. auch GrayCode!))
1. Anzahl der benötigten FF:
2. Funktionstabelle zum Zählerentwurf:
dez
Q3
Zeitpunkt tn
Q2
Q1
3. Ermittlung der Schaltfunktionen Di
KV-Diagramm für
Q0
Beschaltung der Vorbereitungseingänge
dez
D3
D2
D1
D0
(i = 0..
KV-Diagramm für
Q0
Q0
Q1
Q1
S
S
Q2
Q2
KV-Diagramm für
KV-Diagramm für
Q0
Q0
Q1
Q1
S
Q2
S
Q2
Ergänzung: Beim Einschalten der Versorgungsspannung liegt an allen FF-Ausgängen 0 an.
Welche Zusatzschaltung ist nötig, damit direkt nach dem Einschalten der richtige
Startzustand eingenommen wird (dez. 5)?
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 46 / 47
Entwurf eines elektronischen Würfels
In einer Bauanleitung zu einem elektronischen Würfel findet man folgendes Blockschaltbild:
Q3
b
Q2
a
Q1
c
S pe ci he rbau s e
t ni en Q 0
d
Log si che s
S cha w
lt e rk
G
m it
Tas e
t r
a
c
b
d
c
b
a
Die Funktion der Schaltung wird wie folgt beschrieben:
Der Generator liefert ein Taktsignal mit f = 5 kHz. Solange der Taster gedrückt wird, gelangen
Taktimpulse an den Eingang des Schaltwerks und schalten die Zustände am Ausgang durch. Wird
der Taster losgelassen, bleibt die Schaltung bei einem "zufälligen" Ergebnis stehen und die
gewürfelten "Augen " werden angezeigt. Das Schaltwerk ist so aufgebaut, daß natürlich nur die
Augenzahlen 1 .. 6 auftreten können!
1. Wie könnte dieses Schaltwerk denn aufgebaut sein ?
Q0
Q0
Q1
Q0
Q1
Q1
Q3
Q2
Q0
Q1
Q3
Q3
Q2
Q2
D0 =
D2 =
D1 =
D3 =
Q3
Q2
Skizzieren Sie die Schaltung auf der Rückseite!
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
Stand: 06.11.2014
Digitaltechnik mit programmierbarer Logik
CT-TGJ1 - Geiger
Carl-Engler-Schule
Karlsruhe
Datum:
Seite: 47 / 47
2. Was passiert beim Einschalten der Speisespannung?
Beim Einschalten der Speisespannung tritt an den Zählerausgängen ein Zustand auf, der im
Entwurf nicht berücksichtigt wurde (z.B. alle FF-Ausgänge = 0)
Wie könnte man erreichen, daß der Zähler im Einschaltmoment auf den richtigen Startwert
springt?
3. Anschluß der Leuchtdioden a .. d
An den Ausgängen Q3 .. Q0 der Schaltung sollen Leuchtdioden angeschlossen werden.
Für die (Low current) LED´s gilt: UF  1,6 V (rote LED), IF  2 mA.
(Für Bastler: bei gelben LED´s gilt UF  2,4 V, bei grünen UF  2,7 V,
Stromverbrauch bei Standard-LED´s: IF  10 mA)
Wie sind die LED´s a .. d anzuschließen, wenn das Schaltwerk eine Spannung von
ca. 3 .. 5 V liefert?
Skizzieren Sie die möglichen Schaltungen und berechnen Sie die nötigen Vorwiderstände!
4. "Freudenschrei" bei "6"
Wenn die Zahl "6" gewürfelt wurde, soll eine Sirene eingeschaltet werden. Die Sirene soll erst
dann wieder ausgehen, wenn eine "1" gewürfelt wird (hoffentlich bald) !
Entwerfen, begründen und skizzieren Sie die notwendige Erweiterung!
5. Aufbau des Taktgenerators
Skizzieren Sie den Taktgenerator für ca. 5 kHz und dimensionieren Sie die Schaltung unter
praktischen Gesichtspunkten!
Einige Daten: R = 330 , US = 5 V
6. Lösung mit ispLever und der isp-Platine
Überlegen Sie, wie man die Aufgabe auf der isp-Platine zum Laufen bringen könnte!
Gehen Sie bei der Realisierung schrittweise vor und testen Sie die einzelnen Teile hintereinander!
Zeigen Sie die Augen zunächst auf den Leuchtdioden an! (Pin-Belegung sinnvoll wählen)
Zeigen Sie die Augen dann (zusätzlich) auf der rechten Siebensegmentanzeige an! Mit Hilfe einer
Funktionstabelle (Truth_table) können Sie dazu die Zählerausgänge in den passenden Code
wandeln!
Beispiel für eine Truth_table (BCD -> Siebensegmentcode, rechte Anzeige)
DECLARATIONS "*************** Ein- und Ausgänge ***************************
in3..in0
PIN 28, 29, 30, 31;
"Eingaenge
a,b,c,d,e,f,g PIN 67,65,66,70,72,69,71 ISTYPE'BUFFER,COM'; "Anzeige-Ausgaenge
"********************* SET Deklarationen ********************************
dipschalter = [in3..in0];
"Zusammenfassung der Eingaenge
leds
= [ar,br,cr,dr,er,fr,gr]; "Zusammenfassung der Ausgaenge
EQUATIONS "****************************************************************
TRUTH_TABLE "************** Funktionstabelle ******************************
(dipschalter
0
1
2
3
4
5
6
7
8
9
->
->
->
->
->
->
->
->
->
->
->
[ar,br,cr,dr,er,fr,gr])
[1 ,1 ,1 ,1 ,1 ,1 ,0 ];
[0 ,1 ,1 ,0 ,0 ,0 ,0 ];
[1 ,1 ,0 ,1 ,1 ,0 ,1 ];
[1 ,1 ,1 ,1 ,0 ,0 ,1 ];
[0 ,1 ,1 ,0 ,0 ,1 ,1 ];
[1 ,0 ,1 ,1 ,0 ,1 ,1 ];
[1 ,0 ,1 ,1 ,1 ,1 ,1 ];
[1 ,1 ,1 ,0 ,0 ,0 ,0 ];
[1 ,1 ,1 ,1 ,1 ,1 ,1 ];
[1 ,1 ,1 ,1 ,0 ,1 ,1 ];
H:\Unterricht\CT-TGJ1-isp\ct-tgj1-isp.odt
"Eingänge -> Ausgänge
"
LEDs high-aktiv!
"
a
"
--"
f | g | b
"
--"
e | d | c
"
---
Stand: 06.11.2014
Document
Kategorie
Technik
Seitenansichten
45
Dateigröße
652 KB
Tags
1/--Seiten
melden