-
Die
vorliegende Erfindung betrifft ein Dual-Rail Precharged (DRPC) Flip-Flop
in Master-Slave Struktur, wobei Master und Slave jeweils eine dynamische
Eingangslogik aufweisen.
-
Der
Einsatz von intelligenten Chipkarten, so genannten Smart Cards,
findet eine immer weitere Verbreitung, da sie als kryptographisch
sehr sicher gelten. Die in den Karten gespeicherte geheime Information
dient zur Autorisierung und Identifizierung bei z. B. einer Kontoführung, sodass
nicht verwunderlich ist, dass Smart-Karten Angriffen ausgesetzt
sind, mit denen diese Information ausspioniert werden soll. Eine
der wichtigsten Methoden ist dabei die differenzielle Stromprofilanalyse,
die im Englischen als differential power analysis (DPA) bekannt
ist. Bei der DPA wird der Stromverbrauch der Chipkarte über ein
oder mehrere Takte gemessen, ein Modell aufgestellt und mittels
statistischer Methoden versucht, aus der Korrelation von systematischen
Datenvariationen und Stromverbrauch Rückschlüsse auf die zu schützende Information
zu ziehen. Der Stromverbrauch der Schaltung ändert sich dabei in Abhängigkeit
von den Zustandsübergängen einzelner
Transistoren. Diese Stromänderungen
sind in der CMOS-Technologie besonders ausgeprägt.
-
Da
Chipkarten klein sind und billig sein sollen, lassen sich gängige Abwehrmaßnahmen
gegen die DPA, wie große
Kondensatoren und Spannungsregler, die die Variationen im Stromverbrauch
minimieren, nicht anwenden. Man greift daher bei der Implementierung
von DPA-sicheren Smartkarten auf Dual-Rail Precharge-Schaltungstechnik zurück. Dual-Rail
bedeutet, dass jedem Bit ein zweites, dazu komplementäres Bit
zugeordnet wird, und beide gleichzeitig übertragen und verarbeitet werden.
Dem logischen Wert 0 ordnet man so beispielsweise das Paar (0,1)
zu und dem Wert 1 das Paar (1,0). Aus der Datenfolge:
1 → 1 → 0 → 0 → 1
wird
mit der obigen Zuordnung die Datenfolge:
(1, 0) → (1, 0) → (0, 1) → (0, 1) → (1, 0).
-
Sind
die Datenpfade für
beide Elemente eines Paares physikalisch gleich ausgeführt, so
lässt sich
mittels DPA nicht mehr erkennen, ob eine 1 oder eine 0 übertragen
wurde, da in beiden Fällen
der komplementäre
Wert mitübertragen
wurde, d. h. immer sowohl eine 1 als auch eine 0 übertragen
wird.
-
Es
darf auch nicht möglich
sein, dass man die vier möglichen Übergänge eines
Signals (0-0, 0-1, 1-0, 1-1) anhand des Stromverbrauchs unterscheiden
kann. Ändert
sich ein Zustand nicht, wie z. B. 0-0 oder 1-1, würde bei
einer CMOS-Realisierung kein
Strom fließen,
wohl aber bei einem Übergang von
0-1 oder 1-0. Damit alle Übergänge den
gleichen Stromverbrauch aufweisen, wird zwischen zwei Zuständen ein
so genannter Vorladezustand, im Englischen auch „precharge" genannt, eingefügt. Bei dem Precharge-Zustand
werden das Signal als auch das dazu komplementäre Signal auf dasselbe elektrische Potenzial
geladen. Je nachdem, ob man auf High oder Low vorlädt entstehen
die logisch ungültigen Wertepaare
(1,1) oder (0,0). Die obige Datenfolge ändert sich bei einem Precharge
auf High zu:
(1, 1) → (1,
0) → (1,
1) → (1,
0) → (1,
1) → (0,
1) → (1, 1) → (0, 1) → (1, 1) → (1, 0)
-
Bei
jedem der vier möglichen
Zustandsübergänge wird
genau nun einer der Ausgänge
geladen bzw. entladen, d. h. die Übergänge lassen sich anhand ihres
Stromverbrauchs nicht mehr unterscheiden, und sind somit gegen DPA
gesichert.
-
Zur
Realisierung von DPA-sicheren Schaltungen für Smartkarten sind auch DPA-sichere Flip-Flops
erforderlich. 1 zeigt
die Funktionsweise eines derartigen DRPC-Flip-Flops anhand von Signalverläufen. Zum
besseren Verständnis
ist noch ein D-Flip-Flop
gezeigt, das bei steigender Taktflanke getriggert wird. Derartige,
nicht gegen DPA gesicherte Flip-Flops, die keine Precharge-Logik
aufweisen, werden auch als „statisch" bezeichnet.
-
Gezeigt
in 1 ist ein Taktsignal
CK und ein Datensignal D. Bei einem statischen D-Flip-Flop werden
die Daten bei der ansteigenden Taktflanke übernommen und erscheinen anschließend am
Ausgang Q. Im Gegensatz dazu wird bei einem DRPC-Flip-Flop vor der Ausgabe der Daten
ein Precharge-Zustand, der schraffiert in den Signalverläufen Q*
bzw. |Q* eingezeichnet ist, eingenommen. Während des Precharges sind die
Daten ungültig, ähnlich wie
bei einem Reset-Zustand, und können
je nach Precharge-Wert beide 0 oder 1 sein. Die Daten werden beim
DRPC-Flip-Flop ebenfalls bei der steigenden Taktflanke übernommen,
werden aber erst bei der fallenden Taktflanke am Ausgang sichtbar.
-
In
jedem Zyklus, d. h. von einer steigenden Taktflanke bis zur nächsten steigenden
Taktflanke, wird ein Ausgang in der Precharge-Phase umgeladen. Bei
einem Precharge auf den Wert 0 ist es derjenige, der gerade den
Wert 1 hatte. Mit der fal lenden Taktflanke werden die Daten ausgewertet
und gültig. Es
wird wieder genau einer auf 1 umgeladen, der andere bleibt auf 0. Über einen
Takt hat man so zwei Umladevorgänge,
einen in der Precharge-Phase, einen in der Evaluate-Phase, unabhängig davon,
welche Daten anliegen. Durch den Precharge wird daher der Stromverbrauch
des DRPC-Flip-Flops unabhängig
von den Daten, die anliegen. Bei einer balancierten Realisierung
der Schaltung wird so eine DPA erschwert.
-
2 zeigt eine Implementierung
eines DPA-sicheren Flip-Flops
aus dem Stand der Technik. Damit das Flip-Flop auf die Flanke und
nicht auf den Pegel des Taktsignals reagiert, ist es als Master-Slave
Struktur ausgeführt.
Der Master und der Slave bestehen jeweils aus dynamischen Eingangsstufen DM,
DS und den statischen Ausgangsstufen SM, SS. Diese werden über die
insgesamt vier unterschiedlichen Takte master_clk, pre_master_clk,
slave_clk, pre_slave_clk angesteuert. Zur Realisierung sind 14 getaktete
Elemente (6 Transistoren + 2·4
Transistoren in den NAND-Gattern) und insgesamt 47 Transistoren
(21 Transistoren + 4·6
NAND + 2·Inverter)
notwendig.
-
Weiter
ist das Flip-Flop mit einem Multiplexer MUX ausgestattet, mit dem
durch die Signale static_i, drpc_i und hold_i gewählt werden
kann, ob statische Daten, DRPC-Daten oder die Ausgangsdaten des Flip-Flops
q_0, q_no an den Eingang des Masters geschaltet werden. Bei den
statischen Daten a_i handelt es sich dabei um nicht DPA-sichere
Signale, bei denen durch einen Inverter I0 der komplementäre Wert
gebildet wird und dann das Paar Dual-Rail-mäßig weiterverarbeitet wird.
Bei den rückgekoppelten Ausgangsdaten
handelt es sich um Daten, die man im Flip-Flop halten möchten, indem
man sie aktiv vom Ausgang des Slaves zurück an den Eingang des Masters
im Kreis schiebt. Über
den DRPC-Eingang kann ein normales DRPC-Signalpaar b_i, b_ni an den Eingang
geschaltet werden.
-
Die
dynamische Eingangsstufe des Masters DM weist als Eingänge die
DRPC-Daten aus dem Multiplexer MUX und das Taktsignal master_clk
auf, ihre Ausgänge
master_set_ni und master_reset_ni dienen als Eingangssignale für die statische
Ausgangsstufe des Masters SM. Die dynamische Eingangsstufe des Masters
besteht aus dem kreuzgekoppelten Transistorpaar P0 und P1, die auch
als Keeper bezeichnet werden, da sie nach Setzen durch die DRPC-Eingangssignale
diese in komplementärer Weise
speichern. Weiter sind die Transistoren P2 und P3 vorgesehen, die
bei einem Low des master_clk Signals aktiviert werden und die dynamischen
Knoten im Master M, MB auf das Potenzial VDD ziehen. Auf diese Weise
werden die dynamischen Knoten M, MB bei einem Low des master_clk vorgeladen
und weisen beide High-Werte auf.
-
Geht
das master_clk Taktsignal auf High, so werden die Transistoren P2
und P3 deaktiviert und der Precharge beendet. Die beiden Transistoren
P0 und P1 befinden sich dann in einem floatenden Zustand, da an
den beiden Drains und damit an den Gattern des gegenüberliegenden
Transistors jeweils ein High-Zustand
anliegt. Im diesem Precharge-Zustand ist der Fuß-Transistor N0 deaktiviert, sodass die
dynamischen Knoten im Master M, MB nicht verändert werden.
-
Wird
nun das Taktsignal master_clk wieder High, so werden über den
Fuß-Transistor
N0 des Masters die DRPC-Eingänge
mit den dynamischen Knoten im Master M, MB verbunden. Da diese Eingänge komplementär sind,
wird immer einer der beiden Keeper-Transistoren P0, P1 deaktiviert
und der andere aktiviert. Liegt z. B. eine 0 an dem dynamischen
Knoten M an, so bleibt der Transistor P0 aktiviert und hält den dynamischen
Knoten MB auf VDD, während
gleichzeitig der Transistor P1 durch den High-Zustand von MB gesperrt
wird und sich der dynamische Knoten M über den Multiplexer MUX entlädt. Die
zueinander komplementären
dynamischen Knoten im Master M, MB werden als Eingänge master_set_ni
und master_reset_ni an die statische Ausgangsstufe des Masters SM
weitergeleitet.
-
Die
statische Ausgangsstufe des Masters SM besteht aus zwei NAND-Gattern
mit jeweils drei Eingängen,
die durch Rückkopplung
als RS-Flip-Flop dienen. Jeweils einer der Eingänge ist mit dem Taktsignal
pre_master_clk verbunden. Ist dieses Signal auf High, so werden
die Eingangsdaten master_set_ni, master_reset_ni übernommen
und liegen als gültige
Werte an den Ausgängen
PM, PMB an. Das Flip-Flop ist dabei statisch, d. h. die Werte am
Ausgang bleiben erhalten, auch wenn die Eingänge master_set_ni, master_reset_ni
im Precharge VDD-Potenzial erhalten.
-
Für den Fall,
dass das Taktsignal pre_master_clk Low wird, so erhält man aufgrund
der NAND-Funktion an den beiden statischen Ausgängen des Masters PM, PMB High-Zustände. Auf
diese Weise lässt
sich der Ausgang des Masters vorladen. Befindet sich die dynamische
Eingangsstufe des Masters im Precharge-Zustand, so ist jeweils ein Eingang
der NAND-Gatter auf High. Ist das Taktsignal pre_master_clk ebenfalls
High, so vereinfacht sich die statische Ausgangsstufe des Masters
zu einem rückgekoppelten
Inverterpaar.
-
Der
Slave des in 2 gezeigten DRPC-Flip-Flops
besitzt eine dynamische Eingangsstufe DS und eine statische Ausgangsstufe
SS, die identisch zu denen des Masters aufgebaut sind, der einzige
Unterschied besteht darin, dass sie über eigene Taktsignale slave_clk
und pre_slave_clk verfügen.
Die Ausgänge
q_o und q_no der statischen Ausgangsstufe des Slaves SS stellen
den Ausgang des DRPC-Flip-Flops dar.
-
In 3 sind zum besseren Verständnis des in 2 gezeigten DRPC-Flip-Flops
die einzelnen Taktphasen für
die dynamischen Eingangsstufen DM, DS und die statischen Ausgangsstufen
SM, SS von jeweils dem Master und dem Slave gezeigt. Aus dem primären Takt
clk_i werden die Taktsignale master_clk, pre_master_clk, pre_slave_clk
und slave_clk abgeleitet. Die dynamischen Eingangsstufen DM, DS
wechseln dabei zwischen Evaluieren der Eingangsdaten und dem Precharge-Zustand, die statischen
Ausgangsstufen SM, SS zwischen einem Precharge-Zustand und einem
Zustand, an dem gültige
Daten an ihren Ausgängen
liegen, periodisch ab. Geht man von einem Anfangszustand aus, bei
dem clk, master_clk und pre_slave_clk High sind und pre_master_clk
und slave_clk Low sind, so wertet die dynamische Eingangsstufe des
Masters DM die Dateneingänge
aus, während
die statische Master-Ausgangsstufe SM auf High vorgeladen wird.
Dieses Vorladen auf einen High-Wert ist durch die Ziffer 1 in dem Signalverlauf
von pre_master_clk gekennzeichnet. In der Zwischenzeit wird die
dynamische Eingangsstufe des Slaves DS vorgeladen, während die
statische Ausgangsstufe des Slaves SS gültige Daten ausgibt.
-
Zum
Zeitpunkt t1 fällt
der primäre
Takt clk_i auf Low, während
zum Zeitpunkt t2 das pre_master_clk Signal ansteigt und so die Daten
am Ausgang der statischen Ausgangsstufe des Masters SM gültig werden.
Zum Zeitpunkt t3 fällt
das Signal master_clk und führt
dazu, dass die dynamische Eingangsstufe des Masters DM vorgeladen
wird und die statische Ausgangsstufe des Masters SM die Daten hält. Die
Eingangsdaten werden mit der fallenden Flanke von master_clk eingelesen.
Zum Zeitpunkt t4 fällt
pre_slave_clk und lädt
den statischen Ausgang des Slaves vor. Im nächsten Schritt, zum Zeitpunkt t5,
steigt slave_clk und die Eingangsdaten an den Slave werden ausgewertet.
Anschließend
steigt pre_slave_clk zum Zeitpunkt t6 an und übergibt die Daten an den Ausgang.
Zum Zeitpunkt t7 fällt slave_clk
und lädt
so die dynamische Eingangsstufe des Slaves DS vor und sorgt dafür, dass
die Daten an der statischen Ausgangsstufe des Slaves SM gehalten
werden. Zum Zeitpunkt t8 fällt
pre_master_clk und lädt
die statische Ausgangsstufe des Masters vor. Zum Zeitpunkt t9 steigt
master_clk an und wertet neue Daten am Flip-Flop-Eingang in einem
neuen Zyklus aus.
-
Ähnlich wie
statische Flip-Flops können
einem DRPC-Flip-Flop transparente und opake Zustände zugewiesen werden. Der
opake Zustand von z. B. dem Master fängt mit der fallenden Flanke
von master_clk an und hört
mit der fallenden Flanke des pre_master_clk auf. In dieser Zeit
wird die dynamische Eingangsstufe des Masters vorgeladen. Die Master-Stufe
wird dabei aus der Eingangsstufe und der Ausgangsstufe zusammengesetzt
betrachtet. Die transparente Phase des Masters entspricht dem Rest der
Zykluszeit und korrespondiert ungefähr zu dem Zeitraum, an dem
die statische Master-Ausgangsstufe SM auf High vorgeladen wird.
Dies ist im Unterschied zu einem statischen Flip-Flop, bei dem im transparenten
Zustand der Ausgang dem Eingang folgt. Aus diesem Grund ist in der
Zeichnung das Wort „transparent" in Anführungszeichen
geschrieben, da der Ausgang wegen der Vorladung nicht dem Eingang
folgt. Analog lassen sich für
den Slave opake und transparente Zustände bestimmen. Wie aus 3 ersichtlich ist, überschneiden
sich die transparenten Zustände
von Master und Slave nicht; man kann daher von einer sicheren Funktion
des DRPC-Flip-Flops ausgehen.
-
Das
aus dem Stand der Technik und in 2 dargestellte
DRPC-Flip-Flop weist signifikante Nachteile auf. Jede der Eingangs-
und Ausgangsstufen des Masters und des Slaves benötigt einen
eigenen Takt. Zur korrekten Funktion des Flip-Flops müssen zudem bestimmte Phasenverhältnisse
der Takte zueinander eingehalten werden. Das Erzeugen und Verteilen
von vier Taktphasen führt
zu hohem Stromverbrauch und erhöhtem
Platzbedarf. Dadurch, dass vier Takte erforderlich sind, lässt sich
auch die Taktfrequenz nicht beliebig erhöhen, sodass das Flip-Flop nur
bis zu gewissen Frequenzen eingesetzt werden kann.
-
Ein
weiterer Nachteil des in 2 gezeigten DRPC-Flip-Flops ist, dass zur
Realisierung von nur einem Flip-Flop 47 Transistoren erforderlich
sind. Von den 47 Transistoren entfallen 24 auf die NAND-Gatter in
den statischen Ausgangsstufen des Masters und des Slaves, da jedes
NAND-Gatter intern 6 Transistoren aufweist. Da Flip-Flops häufig in großer Anzahl
eingesetzt werden, wird so eine große Chipfläche benötigt.
-
Aufgabe
der Erfindung ist es daher, ein DRPC-Flip-Flop anzugeben, bei dem
die Taktung von Master und Slave möglichst einfach ist und die Realisierung
möglichst
wenig Bauelemente benötigt.
-
Diese
Aufgabe wird dadurch gelöst,
dass Master und Slave durch einen einphasigen Takt getaktet werden.
-
Dadurch,
dass das erfindungsgemäße DRPC-Flip-Flop
mit nur einem Taktsignal auskommt, reduziert sich der Stromverbrauch
zum Erzeugen und Verteilen des Taktes und die umzuladenden Kapazitäten werden
stark reduziert. Vorteilhaft ist weiter, dass durch den einphasigen
Takt die Einschränkungen
bezüglich des
nicht Überlappens
von Taktzyklen aufgehoben werden. Auf diese Weise lassen sich schnellere
Flip-Flops realisieren, da keine Taktzeit verloren geht. Das erfindungsgemäße Flip-Flop kann
so bei den höheren
Frequenzen von Highspeed-Schaltungen eingesetzt werden, auch solchen,
die nicht DPA-sicher ausgeführt
sind. Des Weiteren ermöglicht
es der einphasige Takt, das Flip-Flop als einen Baustein in einem
zellbasierten Designsystem einzusetzen. Bei einem Flip-Flop mit vier
separaten Taktphasen lässt
sich dagegen der Schaltungsaufbau nicht automatisch berechnen, d.
h. er ist nicht synthetisierbar.
-
Weitere
vorteilhafte Ausgestaltungen der Erfindung sind in den untergeordneten
Patentansprüchen
angegeben.
-
Vorteilhafterweise
sind die Precharge-Zustände
im Inneren des Flip-Flops High-Zustände. Das Vorladen von DRPC-Paaren
auf (1,1) ist normalerweise ungewollt, da dadurch im Folgegatter NMOS-Transistoren
aktiviert werden können.
In dieser Erfindung wird jedoch auf High anstelle Low vorgeladen,
da dadurch zwei Inverter am Ausgang des Masters eingespart werden
können
und somit vier Transistoren weniger für den Schaltungsaufbau benötigt werden.
Des Weiteren kann durch das Vorladen auf einen High-Zustand ein
Teil der dynamischen Eingangsstufe des Slaves mitbenutzt werden,
um ein geschaltetes Inverterpaar zu bilden, durch welches gültige Daten
am Ausgang des Slaves gespeichert werden. Auf diese Weise lassen
sich weitere Transistoren einsparen.
-
Vorteilhafterweise
weisen sowohl die Dateneingänge
der dynamischen Eingangsstufen von Master als auch Slave kreuzgekoppelte
Transistoren auf. Über
diese ist es möglich,
sicherzustellen, dass ein anliegendes DRPC-Paar nur einmal ausgewertet wird.
Nach diesem ersten Auswerten ist nämlich die Pre charge-Ladung
zerstört.
Würde man
das Gatter ohne erneutes Vorladen noch einmal auswerten, so verhält sich
der Master bzw. Slave wie ein statisches Gatter und wäre nicht
mehr DPA-sicher.
-
Ebenfalls
vorteilhaft ist, dass die kreuzgekoppelten Transistoren zusammen
mit der dynamischen Eingangsstufe des Slaves ein durch den Takt geschaltetes
Inverterpaar bildet. Da die kreuzgekoppelten Transistoren je nach
Taktzustand unterschiedliche Funktionen wahrnehmen, lassen sich
dadurch weitere Gatter einsparen.
-
Der
Takt für
das DRPC-Flip-Flop wird vorteilhaft durch einen Inverter lokal invertiert.
Diese komplementäre
Taktung für
Master und Slave lässt
sich auf diese Weise einfach realisieren und steht damit in starkem
Kontrast zu den komplizierten Phasenanforderungen bei einem Flip-Flop
aus dem Stand der Technik.
-
Vorteilhafterweise
liefert der Inverter bei steigenden Flanken schneller ein Ausgangssignal
als bei fallenden Flanken. Auf diese Weise kann sichergestellt werden,
dass der Slave evaluiert, bevor Daten durch ein Vorladen des Masters
gelöscht
werden. Das Flip-Flop wird dadurch robuster.
-
Vorteilhafterweise
ist der Takt für
den Slave gegenüber
dem Takt für
den Master verzögert.
Auf diese Weise lässt
sich die Asymmetrie des Precharges, d. h. dass der Master auf High
und der Slave zusammen mit allen anderen angeschlossenen DRPC-Logiken auf Low vorgeladen
ist, ausnutzen, um ein Race am Master-Eingang zu entschärfen und dadurch
eine robustere Schaltung zu erhalten.
-
Vorteilhafterweise
wird der Takt einem Pulsgenerator zugeführt und dann anschließend an
den Master und über
einen Inverter an den Slave verteilt. Der Einsatz eines Pulsgenerators
ermöglicht
es, unabhängig
von dem anliegenden Takt immer ein definiertes Taktsignal zu erhalten.
-
Vorteilhafterweise
fällt der
vom Pulsgenerator erzeugte Puls selbständig nach einer festen Zeit auf
den Wert 0. Dadurch können
Daten in dem Slave statisch gespeichert werden, selbst wenn das Takt-Signal
auf einem High-Pegel stehen bleibt. Der Takt kann somit jederzeit
angehalten werden, ohne dass ein Overhead in dem Master wegen der
statischen Abspeicherung entsteht.
-
Bevorzugterweise
beträgt
die Pulsdauer des Pulses weniger als 20 % des Taktzyklusses. Der
Puls kann dabei so schmal gemacht werden, dass gerade noch ein Precharge
stattfindet und der Großteil
eines Zyklusses für
logisches Auswerten zur Verfügung steht.
-
Vorteilhafterweise
können
die am Eingang des Master anliegenden Daten auch erst nach der ansteigenden
Flanke des Taktsignals übernommen werden.
Dies ermöglicht
das so genannte „Time
Borrowing", bei
dem die Daten noch nicht bei der steigenden Taktflanke anliegen
müssen,
da zu diesem Zeitpunkt sich die Schaltung noch im Precharge-Zustand
befindet. Auf diese Weise lassen sich weiche Taktflanken (soft clock
edge) realisieren.
-
Vorteilhafterweise
ist ein Multiplexer im Master eingebettet. Durch den Multiplexer
ist es möglich, das
Flip-Flop mit unterschiedlichen Eingangssignalen zu betreiben.
-
Vorteilhafterweise
weist der Multiplexer eine Logik zum Umwandeln von Single-Rail-Signalen
in Dual-Rail-Signale auf. Dadurch lassen sich auch Signale, die
nicht DRPC-mäßig aufbereitet
sind, in den DRPC-Zustand versetzen.
-
Vorteilhafterweise
werden die Ausgänge
des Slaves über
den Multiplexer an den Eingang des Masters geschaltet. Durch diese
Rückkopplung
ist es möglich,
Daten im Flip-Flop zu halten, indem man sie aktiv im Kreis herum
schiebt.
-
Vorteilhafterweise
sind die Precharge-Transistoren der dynamischen Eingangsstufen mit
geringer Breite bzw. größerer Länge ausgeführt, sodass sie
eine schwächere
Leitfähigkeit
als die anderen Transistoren besitzen. Auf diese Weise wird sichergestellt,
dass der Precharge-Übergang
langsam erfolgt und so das Race zwischen Master und Slave entschärft wird.
-
Vorteilhafterweise
weisen die Slave-Ausgänge
jeweils einen Inverter auf. Dadurch werden die dynamischen Knoten
im Slave von der Außenwelt
entkoppelt, dem Flip-Flop zusätzliche
Treiberleistung zugefügt
und die Ausgänge
auf Low vorgeladen, damit das Flip-Flop kompatibel mit anderer DRPC-Logik bleibt.
-
Vorteilhafterweise
ist das Flip-Flop in einer Dynamic-Power-Analysis sicheren Ausführung realisiert.
Dies ist im Besonderen für
Smart-Karten von Vorteil, da diese dann nicht mehr so leicht durch
DPA angegriffen werden können.
-
Vorteilhafterweise
ist das Flip-Flop mit balancierten Signalwegen und in CMOS-Technologie
ausgeführt.
Durch das Balancieren der Signalwege wird es weiter erschwert, über DPA
eine Analyse der Schaltvorgänge
und Zustände
in dem Flip-Flop vor zunehmen. CMOS ist die Schaltungstechnologie,
die vorteilhafterweise keine Ruheströme aufweist.
-
Die
Erfindung wird nachfolgend an einem Ausführungsbeispiel anhand der Zeichnungen
näher erläutert.
-
In
den Figuren zeigen:
-
1 einen
Vergleich der Signalverläufe zwischen
einem statischen Flip-Flop und einem Dual-Rail-Precharged-Flip Flop,
-
2 eine
Realisierung eines DRPC-Flip-Flops nach dem Stand der Technik,
-
3 ein
Zeitablaufdiagramm eines DRPC-Flip-Flops nach dem Stand der Technik,
-
4 ein
Ausführungsbeispiel
eines erfindungsgemäßen DRPC-Flip-Flops,
-
5 Strom-
und Signalverläufe
des Ausführungsbeispiels
in 4,
-
6 ein
Anwendungsbeispiel des erfindungsgemäßen Flip-Flops in einem zehnstufigen Schieberegister.
-
4 zeigt
ein Ausführungsbeispiel
eines DRPC-Flip-Flops mit nur einem Taktsignal clk_i. Die Schaltung
ist der aus 2 ähnlich, sie besteht wieder
aus einem Master und einem Slave. Die Unterschiede zu 2 bestehen
darin, dass anstelle von vier Taktphasen nur noch eine Taktphase
benötigt wird,
die über
einen Inverter I1 den Slave ansteuert. Des Weiteren sind die statischen
Ausgangsstufen des Masters und des Slaves SM, SS, die in 2 aus
je zwei NAND-Gattern bestehen, verschwunden. Die Schaltung weist
ferner die kreuzgekoppelten Transistorpaare N7, N8 und N23, N26
an den Eingängen
der dynamischen Eingangsstufe des Masters und des Slaves DM, DS
auf. Zusätzlich
sind die dynamischen Knoten im Slave S, SB mit den Invertern I2,
I3 verbunden, um das Ausgangssignal zu invertieren. Gegenüber dem
Stand der Technik sind anstelle von 14 getakteten Bauelementen sind
nur noch 5 erforderlich, die Gesamtzahl der Transistoren hat sich von
47 auf 33 reduziert. Diese Merkmale führen zu einer Reduzierung der
Stromaufnahme und der Kapazitäten,
die geschaltet werden müssen.
Gleichzeitig wird weniger Chipfläche
benötigt
und die Taktfrequenz kann erhöht
werden. Ebenfalls neu ist ein Pulsgenerator PG, über den das bisherige Taktsignal clk_i
zu einem nadelförmigen
Puls geformt wird.
-
Ist
das Taktsignal clk_i auf Low, so befindet sich der Master im Precharge-Zustand.
Die Precharge-Transistoren P2 und P3 in der dynamischen Eingangsstufe
des Masters DM sind aktiviert und verbinden die dynamischen Knoten
im Master M, MB mit dem Versorgungspotenzial VDD. Die vorher im
Slave erfassten Daten liegen nun als gültige Daten am Ausgang des
Flip-Flops q_no, q_o. Sobald das Taktsignal clk_i ansteigt, werden
vom Master neue Daten eingelesen und ausgewertet, während der
Slave in den Precharge-Zustand geht. Fällt darauf das Taktsignal clk_i,
geht der Master wieder in den Precharge-Zustand, und der Slave evaluiert
den vorigen Master-Ausgang und gibt diesen als gültige Daten beim Fallen der
Taktflanke von clk_i aus. Durch die Dual-Rail-Precharged und balancierte
Realisierung ist der Stromverbrauch unabhängig von den Daten und die
Schaltung DPA-sicher.
-
Der
gezeigte Multiplexer MUX ist mit dem in 2 beschriebenen
identisch und wird daher nicht noch einmal beschrieben. Auch die
dynamischen Eingangsstufen des Masters und des Slaves DM, DS entsprechen
denen in 2 angegebenen und funktionieren
entsprechend. Sie bestehen wieder aus den kreuzgekoppelten Keeper-Transistoren
P0, P1 im Master und P8, P9 im Slave, sowie den Precharge-Transistoren
P2, P3 im Master bzw. P10, P11 im Slave.
-
Die
kreuzgekoppelten Transistorpaare N7, N8 und N23, N26 dienen dazu
sicher zu stellen, dass Master und Flip-Flop jeweils nur einmal
ausgewertet werden, auch in dem Fall, dass sich die Eingänge vor dem
nächsten
Precharge ändern.
Nach einer Evaluierung werden nämlich
die Precharge-Ladungen zerstört,
liegen danach weitere Daten an, so würde sich das Gatter wie ein
statisches Gatter verhalten und wäre es nunmehr nicht DPA-sicher.
Liegt z. B. am Eingang b_i ein High-Signal an, so wird VSS an den Source
von N7 weitergeleitet und da das Gate von N7 durch die Vorladung
des dynamischen Knotens M auf High ebenfalls High ist, leitet N7
so dass der Drain von N7 ebenfalls auf Low ist. Dieser ist jedoch mit
dem Gate von N8 verbunden, so dass N8 ein für alle mal abgeschaltet wird. Ändern sich
b_i und b_ni, so hat das keine Auswirkungen, da die dynamischen Knoten
N, MB nunmehr nicht im High-Zustand vorgeladen sind. Durch diese
Anordnung wird sicher gestellt, dass der Master und Slave nach einer
Auswertung/Evaluate opak sind und somit die bisher erforderlichen
statischen Ausgangsstufen SM, SS vom Master und Slave sowie die
zugehörigen
Takte pre_master_clk und pre_slave_clk gegenüber dem Stand der Technik eingespart
werden können.
Das Transistorpaar N7, N8 kann weggelassen werden falls die Eingänge des
Flip-Flops DRPC-Daten sind, da diese im Gegensatz zu statischen
Eingän gen
keine Störimpulse
beim Übergang
von einem Zustand zum anderen aufweisen.
-
Im
Unterschied zum Stand der Technik kann das in 4 gezeigte
DRPC Flip-Flop nur im Slave Daten statisch halten. Dies stellt jedoch
keine Einschränkung
dar, da bei einem gepulsten Takt, der durch den Pulsgenerator PG
automatisch aus der ansteigenden Flanke des Taktes generiert wird,
der Impuls immer auf 0 zurückfällt, unabhängig von
dem Taktsignal clk_i. Ist der Takt Low, so ist der Slave aktiv und
der Master nicht. Auf diese Weise sind keine Transistoren notwendig
um den Master mit einer statischen Funktion zu versehen.
-
Im
Gegensatz zum Master, wird im Slave ein statisches Verhalten erreicht,
so dass ein Anhalten vom Takt clk_i beliebig lange möglich ist.
Dies wird erreicht durch ein geschicktes Zusammenspiel von Master
und Slave. Die am Master ausgegebenen Daten werden dabei so lange
statisch gehalten, so lange das Taktsignal Low ist. In diesem Fall
ist der Takt für
den Slave High und die Slave-Eingänge N24, N25 mit den auf High
vorgeladenen dynamischen Knoten M, MB des Masters verbunden. Somit
sind die Transistoren N24, N25, N27 aktiviert. Nachdem der Slave bereits
zu diesem Zeitpunkt Daten übernommen
hat, ist einer der komplementären
Ausgänge
Low, so dass einer von N23, N26 aktiviert und der andere deaktiviert
ist. Die Transistoren P8, P9, N23, N26 bilden so ein rückgekoppeltes
Inverterpaar, welches zum statischen Speichern benutzt wird. Das
Inverterpaar wird dabei abhängig
von dem Taktsignal zusammengeschaltet, so dass auch keine Querströme fließen können wenn
der Slave statisch wird.
-
Diese
Realisierung, die mit weniger Transistoren trotzdem noch statisches
Verhalten des Slaves ermöglicht,
wird erst dadurch ermöglicht,
dass der Master im Precharge-Zustand nicht wie gewöhnlich auf
Low, sondern auf High vorgeladen wird. Normalerweise werden dynamische
Precharge-Schaltungen immer auf Low vorgeladen damit keine der nachfolgenden
NMOS Logiktransistoren durch das Precharge angeschaltet werden.
Dadurch dass die dynamischen Knoten N, MB des Masters of High vorgeladen
werden, spart man sich die ansonsten notwendigen zwei Inverter und
damit vier Transistoren am Ausgang des Masters.
-
Dadurch,
dass man an Stelle von vier separaten Taktphasen nur noch eine hat,
die Master und Slave komplementär
taktet, spart man sich die Erzeugung und Verteilung von den zusätzlichen
Taktphasen. Dadurch wird der Leistungsverbrauch und die umzuladenden
Kapazitäten
reduziert; gleichzeitig ist das Design von solchen Flip-Flops automatisierbar. Durch
die aufgehobenen Einschränkung
der strengen Phasenzuordnung der einzelnen Phasen, die sich nicht überschneiden
dürfen,
lässt sich
die Totzeit in einem Zyklus reduzieren und die zur Verarbeitung zur
Verfügung
stehenden Zeit vergrößern.
-
Diesen
Vorteilen steht gegenüber,
dass nun zwei Precharged/Evaluate Races in dieser Schaltungsanordnung
vorliegen. Diese Precharged/Evaluate Races treten in allen Precharged-Logiken auf, und
besteht darin, dass beim Zusammenschalten von Gattern in Precharged-Logik,
das Folgegatter die vorigen Daten bereits evaluiert haben muss,
bevor das erste Gatter wieder in den Precharge-Zustand geht, da
in diesem Fall durch das Precharge die bisherigen Daten gelöscht werden.
Diese Races treten an zwei Stellen auf, einmal am Eingang und einmal am
Ausgang des Masters.
-
Ist
dem Master eine kombinatorische DRPC-Logik vorgeschaltet, welche
einen invertierten Takt benutzt, d. h. wenn der Takt High ist vorlädt und wenn
der Takt Low ist auswertet, so muss der Master bei einer steigenden
Taktflanke die Daten an seinem Eingang erfassen bevor sie durch
das Vorladen der kombinatorischen Logik verloren gehen.
-
Das
zweite Race findet im Inneren des RS Flip-Flop statt und existiert
in allen Standard-Flip-Flops, die durch eine steigende Taktflanke getriggert
werden: Bei der fallenden Taktflanke muss der Slave opak sein bevor
der Master wieder transparent wird. Bei einem DRPC Flip-Flop gemäß dem Ausführungsbeispiel
muss bei einer fallenden Taktflanke der Slave die Daten schon ausgewertet
haben, bevor sie durch den Master durch Vorladen ungültig werden.
Dies kann dadurch erreicht werden, dass die Precharge-Transistoren
P2, P3 des Masters eine geringere Leitfähigkeit als die anderen Transistoren
aufweisen und somit der Precharge-Vorgang langsam abläuft. Dies
kann man z. B. erreichen, indem man die Kanäle der Precharge-Transistoren
mit geringerer Breite und größerer Länge ausführt. Auf
diese Weise wird sicher gestellt, dass das Evaluate schon abgeschlossen
ist bevor der Precharge-Vorgang beendet wird.
-
Eine
zweite Möglichkeit
das Race zwischen Master und Slave zu entschärfen bestehen darin, dass der
Takt-Inverter I1 so ausgeführt
ist, dass steigende Flanken schneller am Ausgang erscheinen als fallende
Flanken. Auf diese Weise wird sicher gestellt, dass der Slave noch
Zeit hat die Daten zu evaluieren bevor sie durch den Precharge des
Masters gelöscht
werden. Durch diese Sicherheitsmaßnahme wird das Flip-Flop noch
robuster.
-
Das
Race am Master-Eingang ist schwieriger zu lösen, da die Eingänge durch
das Vorladen der dem Master vorgeschalteten kombinatorischen DRPC-Logik
auf Low liegen und somit die NMOS-Transistoren im Multiplexer MUX
abschaltet wurden. Geschieht dies zu früh, so hat der Master keine
Zeit die Daten auszuwerten, da es dadurch nicht mehr möglich ist,
die dynamischen Knoten M, MB entsprechend der Daten, zu entladen.
-
Im
Gegensatz zum Master, werden die Eingänge des Slaves auf High vorgeladen,
so dass derjenige der Transistoren N24, N25, der bisher ausgeschaltet
war, eingeschaltet wird. Auf diese Weise ist es möglich, die
dynamischen Knoten S, SB des Slaves vollständig zu entladen, wobei durch
die Transistoren N23, N26 bereits vor dem Zeitpunkt, an dem N24,
N25 leitend sind, festgelegt wird, welcher der dynamischen Knoten
S, SB mit Masse verbunden werden soll. Der Unterschied zusätzlich liegt
darin, dass beim Vorladen auf High, diejenigen Transistoren noch
zusätzlich
angeschaltet werden, die vorher ausgeschaltet waren, während beim
Vorladen auf Low, der bisher leitende Transistor auch noch ausgeschaltet
wird. Diese Asymmetrie des Flip-Flops, die darin besteht, dass der
Master auf High vorgeladen wird, der Slave aber mit allen andern
DRPC-Logiken auf Low, lässt
sich ausnutzen, das Race am Eingang des Masters zu entschärfen.
-
Der
Taktinverter I1 dient zur logischen Invertierung des Taktes, weist
aber immer auch eine Verzögerungszeit
auf. Prinzipiell sind zwei Möglichkeiten zur
Taktversorgung von Master und Slave denkbar. In der ersten Version
wird der Takt zwei Invertern zugeführt, wobei nach dem ersten
Inverter der Takt für
den Slave abgezweigt wird und nach dem zweiten Inverter der für den Master.
Die zweite Möglichkeit
besteht darin, den Takt direkt dem Master zuzuführen und über einen Inverter an den Slave.
Die beiden Möglichkeiten
unterscheiden sich dadurch, dass einmal der Takt des Slaves gegenüber dem
des Masters vorauseilt und einmal verzögert wird. Wenn der Takt des
Slaves gegenüber
dem Takt des Masters verzögert
ist erhält
man eine Entschärfung
des Races und somit eine robustere Schaltung.
-
Die
Inverter I2, I3 am Ausgang des Slaves dienen dazu, die dynamischen
Knoten S, SB nach außen
hin zu entkoppeln und die Ausgänge
des Flip-Flops mit auf Low vorgeladene DRPC-Logik kompatibel zu
gestalten.
-
Durch
den Pulsgenerator PG wird aus dem Taktsignal clk_i ein positiver
Impuls mit einer festen Zeitdauer aus der ansteigenden Taktflanke
des Taktsignals clk_i erzeugt. Dies hat folgende Vorteile: Selbst
wenn der Takt clk_i auf einem hohen Pegel verweilt, wird der intern
Takt auf Low zurückkehren und
die Daten dadurch statisch im Flip-Flop gespeichert. Auf diese Art
kann der Takt clk_i jederzeit angehalten werden ohne die statische
Speicherung der Daten zu beeinflussen. Gleichzeitig wird dadurch
der Overhead vermieden, der im Stand der Technik für das statische
Speichern im Master notwendig war. Durch den Pulsgenerator PG erhält man zudem
ein vom Tastverhältnis
des Taktes clk_i unabhängiges Tastverhältnis. Der
Impuls wird sehr kurz gestaltet, gerade lang genug, dass das Precharge
ausgeführt werden
kann, so dass man den Rest des Taktes für logische Auswertung nutzen
kann.
-
Diese
Flip-Flop ermöglicht
das sogenannte „time-borrowing", da die Taktflanke
gegenüber DRPC-Daten
weich ist. Die Dateneingänge
des Masters können
sich zum Zeitpunkt der ansteigenden Taktflanke in einem Precharge
Low Zustand befinden und brauchen erst nach einer gewissen Zeit
den endgültigen
Wert einnehmen. Diese Zeit wird durch die für den Precharge erforderliche
Zeit bestimmt.
-
In 5 wird
für das
in 4 angegebenen Ausführungsbeispiel beispielhaft
der Stromverbrauch, das Taktsignal, die Eingangs- und Ausgangssignale,
sowie die Verläufe
der Spannungen an den dynamischen Masterknoten M, MB gezeigt. Mit
der ansteigenden Taktflanke werden die Daten in den Master eingelesen,
und erscheinen komplementär
an den dynamischen Master Knoten M, MB. Die beiden Ausgänge Q und
QB werden auf Low vorgeladen und weisen beide den gleichen logischen
Wert Low auf. Mit der fallenden Taktflanke werden die Daten am Ausgang
des Flip-Flops sichtbar, die Ausgänge Q und QB sind komplementär zueinander.
Der Master befindet sich nun wieder im Precharge-Zustand, was man
daran erkennen kann, dass die dynamischen Masterknoten M, MB beide
High-Werte aufweisen. Im Stromverlauf lässt sich erkennen, dass dieser weitgehendst
von den anliegenden Daten unabhängig
ist.
-
In 6 ist
ein 10-stufiges Schieberegister gezeigt, das durch 10 hintereinander
geschaltete DRPC-Flip-Flops nach 4 realisiert
ist. Gezeigt sind Stromverbrauch i(VDD) bzw. i(VSS), Taktsignal v(CLK),
Eingangs- und Ausgangsdaten des Schieberegisters v(in), v(out1).
Die Eingangsdaten v(in) erscheinen nach 10 Taktzyklen am Ausgang
v(out1). Sehr gut zu erkennen ist, dass der Stromverbrauch unabhängig von
den anliegenden Daten und den Datenübergängen ist, die Schaltung ist
daher als DPA-sicher anzusehen.
-
In
dem angegebenen Ausführungsbeispiel wird
somit ein DPA-sicheres,
Dual-Rail Precharged Flip-Flop in Master-Slave Struktur realisiert,
welchen gegenüber
dem Stand der Technik mit nur einer Taktphase auskommt und eine
stark reduzierte Anzahl von Transistoren aufweist.
-
- a_i
- statisches
Eingangssignal
- b_i,
b_ni
- DRPC-Eingangssignalpaar
- drpc_i
- Auswahlsignal
für Multiplexer
- hold_i
- Auswahlsignal
für Multiplexer
- static_i
- Auswahlsignal
für Multiplexer
- clk_i
- primäres Taktsignal
- DM
- dynamische
Eingangsstufe des Master
- DS
- dynamische
Eingangsstufe des Slaves
- I0
- Inverter
für statisches
Eingangssignal
- I1
- Taktinverter
- I2,
I3
- Ausgangsinverter
des Slaves
- master_clk
- Taktsignal
der dynamischen Eingangsstufe des Mas
-
- ter
- pre_master_clk
- Taktsignal
der statischen Ausgangsstufe
-
- des
Masters
- slave_clk
- Taktsignal
der dynamischen Eingangsstufe des
-
- Slaves
- pre_slave_clk
- Taktsignal
der statischen Ausgangsstufe des
-
- Slaves
- M
- dynamischer
Knoten im Master
- MB
- komplementärer dynamischer Knoten
im Master
- S
- dynamischer
Knoten im Slave
- SB
- komplementärer dynamischer Knoten
im Slave
- SM
- statische
Ausgangsstufe des Masters
- SS
- statische
Ausgangsstufe des Slaves
- MUX
- Eingangsmultiplexer
mit DRPC-Wandellogik
- N0,
N27
- Fuß-Transistor
des Masters und Slaves
- N7,
N8
- kreuzgekoppelte
Transistoren des Masters
- N23,
N26
- kreuzgekoppelte
Transistoren des Slaves
- N24,
N25
- Eingangstransistoren
des Slaves
- P0,
P1
- Keeper-Transistoren
der dynamischen Eingangsstufe
-
- des
Masters
- P8,
P9
- Keeper-Transistoren
der dynamischen Eingangsstufe
-
- des
Slaves
- P2,
P3
- Precharge-Transistoren
der dynamischen Eingangs
-
- stufe
des Slaves
- P10,
P11
- Precharge-Transistoren
der dynamischen Eingangs
-
- stufe
des Slaves
- PM
- statischer
Knoten im Master
- PMB
- komplementärer statischer
Knoten im Master
- PG
- Pulsgenerator
- q_o
- Ausgang
des DRPC-Flip-Flops
- q_no
- komplementärer Ausgang
des DRPC-Flip-Flops
- VDD
- Versorgungspotenzial
- VSS
- Bezugspotenzial