Forum: Analoge Elektronik und Schaltungstechnik Timing Probleme bei Flankenerkennung in CMOS


von Max A. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte ein D-Flipflop selbst mit PMOS und NMOS umsetzen.
Siehe LT-Spice Schaltung und zugehöriger Screenshot im Anhang.

Auf Gatterebene habe ich die "vereinfachte Schaltung" von dieser Seite 
genommen: 
http://www.iris.uni-stuttgart.de/lehre/eggenberger/eti/19_Flipflops/Ds-FF.htm

Die Schaltung funktioniert auch perfekt für ein pegelgesteuertes 
D-Latch, nun möchte ich jedoch statt Pegelsteuerung eine 
Flankensteuerung nutzen. Dafür habe ich folgenden Flankenerkenner 
eingebaut:
1
CLK: Clock
2
CLK': Flanke
3
CLK' = and(inv(CLK), CLK)

bzw. einen Inverter, ein NAND und noch einen Inverter auf CMOS-Ebene.

Das Problem: Die Spannung CLK' erreicht höchstens 20mV (siehe CLK_.PNG 
im Anhang). Das liegt wohl daran, dass der erste Inverter zu schnell 
schaltet, bevor das NAND-Gatter die Ausgangsspannung regulieren kann.

Ich möchte gerne realitätsnah bleiben, deswegen fallen 
LTSpice-"Funktionen" wie delay weg.
Im Internet habe ich des Öfteren Kondensatoren und Widerstände in dem 
Zusammenhang gesehen, z. B.: 
http://www.electro-tech-online.com/threads/need-advice-on-a-rising-and-falling-edge-sensor-circuit.92431/#post-733214.
An sich ist das jedoch eine andere Schaltung, da CLK im letzten NAND nur 
einmal auftaucht (?).
Wie genau muss ich die bei meiner Schaltung verbauen?

Danke im Voraus :)

: Verschoben durch User
von Thomas E. (picalic)


Lesenswert?

Max A. schrieb:
> Die Schaltung funktioniert auch perfekt für ein pegelgesteuertes
> D-Latch, nun möchte ich jedoch statt Pegelsteuerung eine
> Flankensteuerung nutzen. Dafür habe ich folgenden Flankenerkenner
> eingebaut:

Servus Max,

sowas macht man in der Realität wohl eher nicht durch Gatter-Laufzeiten, 
sondern durch Hintereinanderschaltung von zwei Pegelgesteuerten Latches.
Für ein Positiv-Flankengetriggertes D-FF wird D bei CLK=low in das erste 
Latch übernommen (das zweite Lätch ist bei CLK=Low verriegelt), wechselt 
CLK dann von low nach high, verriegelt das ersten Latch und das zweite 
übernimmt die Daten vom ersten Latch.

von Max A. (Gast)


Lesenswert?

Hallo Thomas,

Danke für die Antwort!
Ich bin ehrlich gesagt erstaunt, dass man in der Realität für jedes 
flankengesteuerte Flipflop ein Master-Slave-Flipflop nimmt. Ist das 
nicht ein hoher Platzverbrauch?

Im Internet habe ich noch weiter recherchiert, man findet leider oft nur 
Gatterschaltnetze und nicht die darunter liegende Implementierung.
Auch bin ich auf einen Flankenerkenner mit 4 Invertern und einem 
Hochpass gestoßen: http://www.falstad.com/circuit/e-leadingedge.html. 
Leider habe ich auch den nicht in LT Spice zum "Laufen" bringen können - 
als Ausgang erhalte ich maximal 4.4µV, viel weniger als mein VDD.

Glücklicherweise habe ich dann jedoch noch diese Seite gefunden: 
http://www.vlsitechnology.org/

Deren D-Flipflop in ihrer Standardzellenbibliothek nutzt laut 
Beschreibung auch das Master-Slave-Prinzip: 
http://www.vlsitechnology.org/html/cells/vsclib013/dfnt1.html

von Thomas E. (picalic)


Angehängte Dateien:

Lesenswert?

Nun, ich bin auch kein Halbleiter-Experte - kann sein, daß die 
Halbleiter-Bäcker das auch noch anders hinkriegen, als über 2 D-Latches.
So viel mehr Transistoren, als ein Nand mit vorgeschaltetem Delay-Gate 
ist das ja auch nicht. Wenn man dann wegen der Verzögerung auch noch 
Kapazität integrieren muss, ist es wahrscheinlich noch größer, als ein 
paar zusätzliche Transistoren.
Ich habe es grade mal hingebastelt - im Anhang ist meine Lösung mit dem 
ersten Latch aus 4 NOR-Gates, damit es ohne zusätzlichen Inverter bei 
Gate=Low transparent ist. Die kleine, parasitäre Kapazität (C1) scheint 
dem Simulator das Rechnen deutlich zu erleichtern.

von Thomas E. (picalic)


Angehängte Dateien:

Lesenswert?

Es geht auch mit ein paar Transistoren weniger... :)

von Max A. (Gast)


Lesenswert?

Vielen Dank, Thomas!

Um mir das selbst zu erklären und vielleicht für die Nachwelt, folgende 
Erläuterung zu deiner Schaltung (korrigiert mich bitte, falls ich 
Fehlinformationen verbreite):

Du hast also ein RS-Latch aus 4 NORs vor dem eigentlichen D-Latch 
eingefügt.
Die zwei ersten NORs vor dem RS-Latch sorgen dafür, dass wenn Clock=1 
ist, (R, S)=(0, 0) erzwingt wird, also der aktuelle Wert für den Eingang 
des D-Latches gehalten wird. D.h. keine Änderung von Data wird 
irgendetwas verändern, solange Clock=1 ist.

Nur wenn Clock=0 ist, wird in das RS-Latch genau (R, S)=(!Data, Data) 
gespeist, sodass jegliche Änderung von Data 1:1 für den Eingang des 
D-Latches übernommen wird.

Wenn nun Clock=1 ist, übernimmt das D-Latch den Wert des Eingangs; da 
sich dieser Wert nur zum Pegel Clock=1 verändert haben kann, bildet die 
ganze Schaltung effektiv ein D-Flipflop.

von Thomas E. (picalic)


Lesenswert?

Hallo Max,

ja, ist schon richtig. Ob man nun ein Latch aus NANDs oder NORs aufbaut, 
ist im Prinzip egal - ein NOR ist ja im im Grunde das gleiche wie ein 
NAND, nur mit inverser Logik.

Bei der zweiten Schaltung werden die beiden Latches durch jeweils einen 
2:1 Multiplexer gebildet, mit Clock am Select-Eingang. Die Benutzung der 
Transmission-Gates als (Um-)Schalter spart Transistoren gegenüber 
"klassischer" boolscher Logik.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.