1. Vorbereitung: 1.1 Zählerbaustein 74163 Bei den in der Schaltung verwendeten Zählerbausteinen handelt es sich um synchron programmierbare 4-bit-Binärzähler mit synchronem Clear. Die Zähler sind programmierbar, d.h. die Ausgänge können auf ein bestimmtes 4-bit-Wort voreingestellt werden (Preset- Funktion). Das Voreinstellen der Ausgänge geschieht mit einem L-Signal am Load-Eingang. Dieses Signal setzt die eigentliche Zählerfunktion außer Betrieb. Mit dem nun folgenden Taktimpuls werden die Informationen an den Eingängen A, B, C und D von den Ausgängen QA, QB, QC und QD übernommen. Der Zustand der Enable-Eingänge ist bei diesem Vorgang nicht von Bedeutung. Ein Low-Pegel am Clear-Eingang setzt alle Ausgänge auf logisch 0, unabhängig vom Zustand der Clock-, Load- und Enable-Eingänge. Durch die synchrone Clear-Funktion ist es möglich, die Zähldauer zu begrenzen. Wenn der Zählerstand erreicht ist, kann über eine externe NAND-Verknüpfung der Zählervorgang gestoppt werden. Der Ausgang dieser Verknüpfung ist mit dem Clear- Eingang verbunden und setzt den Zähler beim Erreichen des dekodierten Zählerstandes auf 0000 zurück. Die Carry-Funktion (Übertrag) gestattet es, eine Zählkette für n-bits aufzubauen. Dazu notwendig sind die Anschlüsse Enable und ripple carry output.beide Enable-Eingänge (P und T) müssen beim Zählvorgang High sein. Der Übertragsausgang ist dann logisch 1, wenn die Kapazität des Zählers überschritten wird. Das Ausgangssignal hat etwa die gleiche Impulslänge wie der Ausgangsimpuls von QA. Der Übergangsimpuls triggert in Zählketten den folgenden höherwertigen Zähler. 1.2 Frequenzteiler Das vorgegebene Design stellt einen synchronen Frequenzteiler dar, der die Eingangsfrequenz von 1 MHz auf 500 Hz mit 50% Duty Cycle, sowie auf 1 khz Pulse mit einer Pulsbreite von einer μs, teilt. Die Zählfunktion übernehmen dabei die Zählerbausteine 74163. Diese sind mit dem Wert C19hex an den Zählereingängen vorgespannt, um ein Teilungsverhältnis von 1000dec zu erhalten. Dies errechnet sich nach folgendem Schema: FFFhex C19hex + 2hex = 3E8hex = 1000dec. Der Wert FFFhex rührt dabei von den verwendeten drei Zählern her, würde man vier Counter hintereinander schalten, müßte man entsprechend mit FFFFhex rechnen. Die in obiger Gleichung hinzu addierten 2hex sind notwendig, weil die verwendete Zählerarchitektur einen Takt für das Synchronisationsflipflop und einen Takt für den synchronen Load benötigt. Mit der Einstellung C19hex wird also die Eingangsfrequenz von 1 MHz um 1000dec geteilt, was die 1 khz Pulse an Pin 37 erklärt. Die Pulsbreite errechnet sich zu: t = f 1 Eingang 1 = 1MHz = 1μs. Diese 1 khz Pulse liegen außerdem an beiden Eingängen eines JK-Flipflops an. Das JK- Flipflop hat dabei die Eigenschaft, dass sich der Ausgangszustand bei jedem anliegenden Puls ändert, sprich das Flipflop kippt mit jedem (gleichzeitig) ankommenden Takt an den Eingängen J und K. Dies führt dazu, dass sich die Frequenz nochmals um den Faktor zwei erniedrigt, da ja zwei Impulse an den Eingängen nötig sind, um eine vollständige Periode am Ausgang zu erhalten. Außerdem erklärt sich so der Duty Cycle von 50%, weil die
aufeinander folgenden 1kHz-Pulse in gleichen Zeitabständen an die Eingänge des JK-FF gelangen. In der gegebenen Schaltung sind die Enable-Eingänge des oberen Counters ständig auf Versorgungsspannungspotential ( logisch 1), d.h. dieser Zähler ist zuerst aktiv und beginnt bei angelegtem Takt mit dem Zählvorgang. Hat er seine Kapazität erreicht, startet sein ripple carry output den nächsten Zählerbaustein, durch Setzen der Enable-Eingänge von Low auf High, usw. Das verwendete D-FF1 dient zur Synchronisation der Schaltung, da es das Eingangssignal so lange verzögert, bis das Taktsignal kommt, erst dann wird das Eingangssignal an den Ausgang weitergegeben. Das D-FF verfügt weiterhin über eine Taktflankensteuerung, wodurch das synchrone Schalten weiter begünstigt wird. Ein zurückgeführter Taktimpuls auf die Load-Eingänge lässt die Bausteine erneut hochzählen. Die Einstellung von C19hex erfolgt in der Schaltung durch die Eingänge A, B, C und D. Dabei entspricht A der Wertigkeit eins, B hat zwei, C hat vier und D hat acht. Gesetzt werden die Eingänge durch entsprechendes anschließen an Masse ( logisch 0) bzw. an Vcc ( logisch 1). Ein Beispiel: Der unterste Counter ist gemäß dem vorzuspannenden Wert von C19hex auf C also 12dec = 1100dual einzustellen, daher liegen A und B auf Massepotential und C und D sind mit Vcc verbunden. 1.3 Vorspannwert (200/50Hz) Das Teilerverhältnis ergibt sich nach der Formel: T = Eingangsfrequenz Ausgangsfrequenz Da das Impuls/Pausenverhältnis 50% betragen soll, muss die Ausgangsfrequenz im Nenner mit dem Faktor 2 multipliziert werden. Das am Ausgang generierte 100Hz Impulssignal wird anschließend noch durch ein J/K Flip-Flop geleitet (Funktion als Teiler durch 2). Das Teilerverhältnis beträgt also: 1000.000Hz T = 2* 200Hz = 2.500 Anschließend muss der so erhaltene Teiler in Hexadezimale Form umgewandelt werden. 2500dec= 9C4hex Der nun einzustellende Wert ergibt sich aus: Ausgabe 200Hz: Ausgabe 50Hz: Xhex= FFFF hex 9C4hex + 2hex = F63Dhex Xhex= FFFF hex 2710hex + 2hex = D8F1hex
1.4 Automaten Zustandsdiagramm
2. Versuch 2.1 Simulieren der vorgegebenen Frequenzteilerschaltung am PC Die Frequenzteilerschaltung, welche 500Hz ausgibt, wird im Programm Maxplus kompiliert, und dann Simuliert. Das Simulationsfenster zeigte uns die folgenden Ein - und Ausgangssignale an Man kann das 1Mhz Eingangssignal erkennen. Es lässt sich auch herauslesen, dass die Länge des 1kHzPulse 1 μ s beträgt. Dieser Betrag kommt von dem 1MHz Taktsignal welches eine Periodendauer von 1 μ s hat. Außerdem sehen wir, dass das 500 Hz Taktsignal um 4,0956 ms vom Startpunkt des Taktes verschoben ist, dies lässt sich durch die Gatterlaufzeit der drei Zähler erklären. Hier kann man den 500 Hz Takt herauslesen. 2.2 Testen der vorgegebenen Frequenzteilerschaltung auf dem EPM 7064 Mit der Software Maxplus wurde der Baustein EPM 7064 programmiert. Mit dem Oszilloskop wurde der 1MHz Takt von Pin43 abgegriffen. Dieser Stimmte mit dem Wert der Simulation überein. Als nächstes stellten wir den 1kHzPulse am Ausgang PIN 37 dar. Wegen der geringen Pulsbreite, konnte man auf dem Oszilloskop nur die Spitze des Impulses als schwachen Punkt erkennen. Nun wurden die 500Hz am Ausgang am PIN 39 gemessen. Und auch hier stimmten das Messergebnis am Oszilloskop mit dem Ergebnis der Simulation überein. 2.3 Abändern der Frequenzteilerschaltung Die Schaltung soll nun auf ein Ausgangssignal von 100Hz abgeändert werden. Dazu errechnen wir den neuen Teiler: Teiler = 1Mhz / 200 Hz = 5000 Da der neue Teiler größer als 4095 ist, was im Hexadezimalsystem FFF entspricht, müssen wir nun vier Zähler statt der bisherigen drei verwenden. 5000dez = 1388hex Zählvorspannweite = FFFFhex - 1388hex + 2hex = EC79hex
Zu der vorhandenen Schaltung wird jetzt ein zusätzlicher Zähler eingefügt und dann werden die 4 Zähler von unten nach oben mit EC79 beschaltet. Wir simulierten die Schaltung und stellten fest, dass am Ausgang keine 100Hz zu sehen sind. Als wir die Schaltung aber in den EPM 7064 programmierten, konnten wir die 100Hz auf dem Oszilloskop erkennen. Wir konnten die 100Hz in der Simulation nicht erkennen, weil die Zähler länger als 20ms brauchen, nämlich 65ms, um bis FFFF zu zählen, unsere Simulationsweite beträgt aber nur 20ms.
Um etwas in der Simulation zu erkennen, wollen wir nun, dass der 100Hz Takt mit dem 1MHz Takt beginnt. Dazu müssen wir vor der Zählerschaltung sofort zu Beginn einen einmaligen LOW Impuls mit 1 μ s auf alle LOAD Eingänge der vier Zähler geben. Das wird mit einem Monoflop realisiert. Bei der erneuten Simulation beginnt nun der 100Hz Takt mit dem ersten 200Hz Impuls. Die Simulationsergebnisse wurden mit dem Oszilloskop am Versuchaufbau überprüft, und alle Ergebnisse bestätigt.
2.4 Entfernen der Spannungsquelle Jetzt entfernen wir die Spannungsquelle vom EPM 7064 und stellen am Oszilloskop fest, dass die Ein- und Ausgangssignale verschwinden. Wir schließen den EPM 7064 wieder an die Spannungsquelle an und stellen fest, dass die Signale wieder da sind. Die Programmierung wurde also gespeichert. Hätten wir diesen Versuch beim EP1K50 gemacht, würde die Programmierung verloren gehen. Das liegt daran, dass der EPM 7064 auf EEPROM Speicher setzt, die bei Spannungsverlust trotzdem die Information speichern, während der EP1K50 SRAM Speicher besitzt, der die Informationen bei Spannungsverlust verliert. 2.5 Generieren des 200Hz Pulses, der um eine halbe Taktperiode verschoben ist In der Schaltung sollen wir nun einen neuen Ausgang am freien PIN 36 definieren, bei dem der 200Hz Nadelpuls um eine halbe Taktperiode verschoben ist. Dazu greifen wir bei unserem vorhandenen Zähler, den Zustand ab, an dem er bei der Hälfte der Zählweite ist. Dieser Wert lässt sich berechnen durch: FFFFhex EC79hex EC79 hex + = F63Chex 2 Dieser Wert wird nun mithilfe eines kombinatorischen Netzwerks an den Zähler Ausgängen QA bis QC abgegriffen und mit einem D-Flip Flop als 200Hz Nadelpuls dargestellt.
In der Simulation erhält man nun folgende Ausgabe: 3. Versuch Automat 3.1 Zustandsdiagramm der neuen Bitfolge Für den Automatenentwurf bekamen wir eine Bitfolge zugewiesen, die lautet: Bitfolge: 01100011101
3.2 Eingeben der Bitfolge in den Texteditor von Maxplus Das Zustandsdiagramm wird nun im Maxplus Texteditor als AHDL (= Altera High Description Language = Programmiersprache von Altera) eingegeben. Dazu ändern wir ein bereits fertiges Textfile eines anderen Automaten nach folgendem Muster ab:
3.3 Simulieren des Bitfolgeautomaten Nun kompilieren und simulieren wir den Automaten. Im Simulationsfenster können wir selbst die Eingangssignale bestimmen. Im Bereich 0us 2us funktioniert Automat ohne Probleme und gibt im Zustand s10 (= Im Bild) am Ausgang eine 1 aus, dafür dass die Bitfolge richtig eingegeben wurde. Im Bereich ab 2us sehen wir eine Bitfolge mit einem Fehler in Zustand s7. Der Automat reagiert richtig auf diesen Fehler und springt zurück in den Zustand s2. Fehler 4. Nachbereitung 4.1 Wie viel Flip-Flops benötigt Ihr Automat für die Bitfolgeerkennung? Der Automat benötigt 4 Flip Flops, da er 11 Zustände besitzt. 4.2 Ermitteln Sie die Eingangsgleichungen für die D-Flip-Flops der Bitfolgeerkennung. Siehe Beiblatt. 4.3 Welchem Automatentyp gehört die Schaltung in Abbildung 4 an? Begründen Sie Ihre Antwort! Bei der Schaltung aus Bild 4 handelt es sich um einen Mealy Automaten, da der Ausgang von dem derzeitigen Zustand UND dem Eingang abhängig ist.