6 Latches und Flipflops (Bistabile Kippstufen) Latches und Flipflops dienen als Speicherelemente in sequentiellen Schaltungen. Latches werden durch Pegel gesteuert (Zustandssteuerung). Bei der VHDL-Synthese treten Latches häufig unerwünscht auf VHDL-Syntheserichtlinien beachten! Flipflops sind wesentlicher Bestandteil getakteter Schaltungen wie z.b. von Zustandsautomaten und Prozessoren. Sie werden durch Flanken, also durch Pegeländerungen gesteuert. Beim Einsatz von Flipflops sind zeitliche Randbedingungen unbedingt zu beachten, um einen eindeutig definierten Ausgangszustand zu erhalten. Es werden erläutert: Basis RS-Latch Taktzustandsgesteuertes RS-Latch Data- (D-) Latch D-Flipflop JK-Flipflops haben heute nur geringe praktische Bedeutung DIGITALTECHNIK 6-
6. Basis RS-Latch Grundstruktur aller Flipflops enthält Rückkopplungen der Ausgänge zu deneingängen Strukturelle VHDL-Beschreibung durch zwei kreuzgekoppelte NOR-Gatter buffer-port Modus erforderlich: Schaltsymbol: library ieee; use ieee.std_logic_64.all; entity RSLATCH is port( R, S : in std_logic; -- Setzen/Ruecksetzen Q, NQ: buffer std_logic); -- Ausgaenge als buffer end RSLATCH; ------------------------------------- architecture STRUKTUR of RSLATCH is NQ <= S nor Q after ns; Q <= R nor NQ after ns; end STRUKTUR; DIGITALTECHNIK 6-2
Verhalten des Basis RS-Latches Zustandsfolgetabelle: S R Q Q + Q + Bedeutung Im RS-Latch existiert eine kombinatorische Schleife, d.h. der Ausgang eines kombinatorischen Ausgangs wird ohne Latch oder Flipflop auf den Eingang des Gatters geführt. Bei kombinatorischen Schleifen besteht die Gefahr des Schwingens! Arbeitstabelle: S R Q + Synthesetabelle: Q Q + S R DIGITALTECHNIK 6-3
Analyse der Zustandsübergänge im Basis RS-Latch (die Rückkopplung wird sequentiell betrachtet) NOR-Gatter: Ein beliebiger '' Eingang erzwingt eine '' am Ausgang Alle Eingänge '' bewirken eine '' am Ausgang Setzen Halten Rücksetzen Irregulär DIGITALTECHNIK 6-4
VHDL-Verhaltensbeschreibung für das Basis RS- Latch architecture VERHALTEN of RSLATCH is process(r, S) if (S='' and R='') then Q <= '' after ns; --Setzen elsif (S='' and R='') then Q <= '' after ns; --Ruecksetzen elsif (S='' and R='') then Q <= Q after ns; --Speichern else Q <= '' after ns; --Irregulaer end if; end process; NQ <= not Q after ns; end VERHALTEN; Charakteristische Gleichung des RS-Flipflops: Q + : Q Q 4 5 R 2 6 7 3 R S S S Q + =... Hinweis: RS-Basis Latches lassen sich auch aus kreuzgekoppelten NAND-Gattern aufbauen. Dann werden die Eingänge Low-Aktiv gesteuert. DIGITALTECHNIK 6-5
6. Taktzustandsgesteuertes RS-Latch (Gated RS-Latch) Das Basis RS-Latch ist für synchrone Schaltungen kein geeignetes Speicherelement da es sich nicht mit anderen Schaltungsteilen synchronisieren läßt. Es kann als asynchroner Zustandsautomat aufgefasst werden. Das taktzustandsgesteuerte RS-Latch enthält ein Takttor (Gate), welches aus zwei UND-Gattern besteht und die S- und R-Eingänge mit dem Takt synchronisiert. Durch diese Gatter aktiviert der S- bzw. R-Eingang das Latch nur, wenn gleichzeitig das Takttor geöffnet ist, d.h. das Taktsignal C='' ist. C S R SI RI Q Q + Zustand DIGITALTECHNIK 6-6
VHDL-Verhaltensmodell für das taktzustandsgesteuerte RS-Latch (mit Testbenchauszug) library ieee; use ieee.std_logic_64.all; entity RSLATCHT is --- keine port-deklarationen da Testbench end RSLATCHT; architecture VERHALTEN of RSLATCHT is signal C, R, S, Q: std_logic; --- Teststimuli -- STIM: process C <=''; R <=''; S <=''; wait for 5 ns; -- Setzen... end process STIM; RS: process(c, R, S) if C = '' then if (S='' and R='') then Q <= '' after ns; --Setzen elsif (S='' and R='') then Q <= '' after ns; --Ruecksetzen elsif (S='' and R='') then Q <= Q after ns; --Speichern else Q <= '' after ns; --Irregulaer end if; end if; end process RS; end VERHALTEN; DIGITALTECHNIK 6-7
Zeitverhalten des taktzustandsgesteuerten RS-Latches Das taktzustandsgesteuerte Latch wird als transparent bezeichnet, wenn C='' ist. D.h. jede Änderung von R und S wirkt sich sofort auf die Ausgänge aus. Während C='' behält das RS-Latch seinen Ausgangswert bei. R und S sind also Vorbereitungseingänge, deren Wirkung erst bei C='' auftritt. Bei Verwendung des taktzustandsgesteuerten RS-Latches ist weiter dafür zu sorgen, dass R und S im transparenten Zustand (C='') nicht gemeinsam aktiviert werden. D.h. es muss die Nebenbedingung C R S = '' eingehalten werden. Bei t= ist das RS-Latch solange undefiniert 'U', bis ihm durch R oder S ein Wert zugewiesen wird. DIGITALTECHNIK 6-8
Syntheseergebnis des Basis RS-Latches für ein C958 CPLD Syntheseergebnis des RS-Latches für ein C958 CPLD ; Implemented Equations. /QOUT := Vcc QOUT.CLKF = Gnd QOUT.RSTF = C * R QOUT.SETF = C */R * S QOUT.PRLD = GND DIGITALTECHNIK 6-9
6.2 D-Latch (Data-Latch) D-Latches werden dort verwendet, wo in einer Schaltung Signale eine bestimmte Zeit (die Periodendauer des Taktes C) konstant gehalten werden sollen. Ein D-Latch dient als Speicherelement nur während der Haltephase, d.h. während es nicht transparent ist C=''. Bei C='' erscheint der am D-Eingang liegende Signalwert nach kurzer Verzögerung am Latchausgang. Wenn das D-Latch als Speicher mit definierter Zykluszeit arbeiten soll, so muss der Entwickler dafür sorgen, dass während des transparenten Zustands keine Signaländerungen am D-Eingang erfolgen. Das D-Latch entsteht aus dem taktzustandsgesteuerten RS-Latch, indem durch einen Inverter zwischen den S- und R- Eingängen dafür gesorgt wird, dass der irreguläre Zustand nicht auftreten kann. Schaltsymbol: DIGITALTECHNIK 6-
D-Latch Verhalten Zustandsfolgetabelle: C D Q Q + Arbeitstabelle: C D Q + Charakteristische Gleichung des D-Latches:... Synthesetabelle (C=''): Q Q + D DIGITALTECHNIK 6-
VHDL-Modellierung von D-Latches entity DLATCH is port( C, D : in bit; Q: out bit); end DLATCH; architecture VERHALTEN of DLATCH is process(c, D) if C ='' then Q <= D after ns; --Uebernehmen -- else Q <= Q; --Speichern end if; end process; end VERHALTEN; Syntheserichtlinie für D-Latches: Ein Signal oder eine Variable wird dann zum D-Latch synthetisiert, wenn dem Signal bzw. der Variablen in einer if- oder case-anweisung nicht in allen möglichen Verzweigungen ein Wert zugewiesen wird. Um sicher zu sein, dass kein Latch verwendet werden soll, sollte dem Signal bzw. der Variablen vor der Verzweigung ein Defaultwert zugewiesen werden. DIGITALTECHNIK 6-2
6.3 D- (Daten-) Flipflop D-Latches sind als Speicherelement in Schaltwerken nicht zu empfehlen da die Transparenz der Latches zu schwerwiegenden Fehlern beim Schaltverhalten führen kann. Seit vielen Jahren werden in Schaltwerken überwiegend flankengesteuerte Speicherelemente (Flipflops) verwendet. Diese haben den Vorteil, dass das Takttor nur während eines sehr kurzen Entscheidungsintervalls nahe der aktiven Flanke geöffnet ist. Kurzzeitige Störungen des Eingangsignals erscheinen nicht am Flipflopausgang. DIGITALTECHNIK 6-3
D-Flipflop Varianten In der Praxis besitzen Flipflops weitere Eingänge: - Einen Rücksetz- (Reset-) und / oder einen Setz- (Preset-) Eingang. Damit wird der Flipflopausgang asynchron, d.h. unabhängig vom Takt, auf '' bzw. '' gebracht. - Einen Freigabe- (Enable-) Eingang. Falls dieser Eingang nicht aktiviert ist, so erfolgt während der aktiven Taktflanke keine Datenübernahme. Er dient in Schaltwerken mit mehreren Flipflops dazu, eine Bedingung zu definieren, unter der die Datenübernahme erfolgen soll. Unterschiedliche Flipflop Typen werden bei ansteigender oder bei abfallender Flanke betrieben. Beispiele für Flipflop-Schaltsymbole: Ansteigende Flanke, ENABLE und RESET Abfallende Flanke, ENABLE und PRESET DIGITALTECHNIK 6-4
VHDL-Beschreibung zweier D-Flipflops entity DFLIPFLO is port( CLK, D, RESET, PRESET, ENABLE : in bit; QR, QF: out bit); -- Zwei Flipfloptypen end DFLIPFLO; architecture VERHALTEN of DFLIPFLO is R_EDGE: process(clk, RESET) --. FF-Typ if RESET='' then QR <= '' after ns; -- asynchroner Reset auf '' elsif (CLK='' and CLK'event) then -- ansteigende Flanke if ENABLE = '' then QR <= D after ns; -- Freigabe in extra if-anweisung end if; end if; end process R_EDGE; F_EDGE: process(clk, PRESET) -- 2. FF-Typ if PRESET='' then QF <= '' after ns; -- asynchroner Preset auf '' elsif (CLK='' and CLK'event) then -- abfallende Flanke if ENABLE = '' then QF <= D after ns; -- Freigabe in extra if-anweisung end if; end if; end process F_EDGE; end VERHALTEN; DIGITALTECHNIK 6-5
Syntheserichtlinien für D-Flipflops Synthesewerkzeuge inferrieren D-Flipflops, wenn die nachfolgenden Syntheserichtlinien eingehalten werden: Durch die Klammer elsif... CLK'event... end if wird ein taktsynchroner Rahmen definiert. Die Taktflanke wird z.b. durch if CLK='' and CLK'event beschrieben. Alle Signale und Variable, denen im taktsynchronen Rahmen ein Wert zugewiesen wird, werden zu Flipflops bzw. Registern (das sind mehrere gleichartig angesteuerte Flipflops) synthetisiert. Die asynchronen Setz- und Rücksetzeingänge müssen vor der Taktflankenabfrage abgefragt werden. In der if-abfrage der Flanke darf keine weitere Bedingung, wie z.b. eine Enable-Abfrage stehen. Signalen oder Variablen, denen in einem taktsynchronen Rahmen ein Wert zugewiesen wurde, darf außerhalb dieses getakteten Rahmens kein Wert zugewiesen werden. Wenn eine Variable innerhalb eines taktsynchronen Rahmens auf allen Pfaden durch einen Prozess zuerst eine Wertzuweisung erfährt, bevor sie gelesen wird, bzw. in einer if- oder case- Abfrage verwendet wird, so wird die Variable als kombinatorische Logik synthetisiert, bzw. heraus optimiert. if-anweisungen müssen nicht alle möglichen Verzweigungen enthalten, um Latches zu vermeiden. DIGITALTECHNIK 6-6
Analyse des Zeitverhaltens: qf reagiert mit Verzögerung auf die ansteigende Flanke. qr reagiert mit Verzögerung auf die abfallende Flanke. Die RESET und PRESET Eingänge wirken asynchron. Die Datenübernahme erfolgt nur bei enable =''. DIGITALTECHNIK 6-7
Synthese eines D-Flipflops mit Freigabeeingang Falls keine Flipflops mit Freigabeeingang zur Verfügung stehen, so ist der Freigabeeingang durch einen Datenpfad zu beschreiben, der den aktuellen Zustand auf den Eingang zurück führt: D_INT = (ENABLE D) ( ENABLE QR) Gefährlich wäre es, wenn das ENABLE-Signal mit dem Taktsignal UND verknüpft werden würde. Grund: Das UND-Gatter würde eine Verzögerung bewirken. Dies ist jedoch in Schaltungen mit vielen Flipflops nicht zulässig, da alle Flipflops gemeinsam getaktet werden müssen ( Clock-Skew so gering wie möglich!). DIGITALTECHNIK 6-8
Setup- und Hold- Zeiten in D-Flipflops Um sicher zu stellen, dass der D-Eingang an den Q-Ausgang sicher übertragen wird, darf sich das Eingangssignal kurz vor und nach der aktiven Flanke (im Entscheidungsintervall) nicht ändern. Andernfalls geht das Flipflop in einen metastabilen Zustand. Das Entscheidungsintervall t E besteht aus der Setupzeit t S und der Holdzeit t H : t E = t S + t H Das Ausgangssignal erscheint um die Signalverzögerungszeit t plh verzögert. t S t H Zahlenwerte für die Advance High Density CMOS- (AHC-) Logikfamilie: t S = 5 ns t H =.5 ns t plh = t phl = 9...5 ns t plh Eine direkte Kopplung von Flipflopausgängen auf Flipflopeingänge ist in einem synchronen System nur deswegen möglich, weil t H << t p. Clock-Skew minimieren! DIGITALTECHNIK 6-9