Taktsignale und Clock Trees
Eine besonderes Element in einer logischen Schaltung mit einer wichtigen Funktion ist der sogenannte Clock Tree. Dieser versorgt einen bestimmten Bereich der ASIC-Schaltung mit
einem gemeinsamen und zeitlich ausbalancierten Taktsignal. Ein Bereich mit einem eigenen Takt wird auch als Clock Domain bezeichnet. Wie der Name schon sagt ist ein Clock Tree eine
baumartig aufgebaute Struktur, die von einem gemeinsamen Root Buffer mehr und mehr bis zu den Blättern (Leaf Cells) verzweigt. Meistens bestehen die Leaf Cells aus Flipflops oder anderen sequentiellen Elementen (z.B. synchrone RAMs). Da der
gesamte Clock Tree mit z.T. tausenden von Leaf Cells nicht von einem einzelnen Root Buffer alleine versorgt werden kann, ist vor jeder weiteren Gruppe von Baumverzweigung ein weiterer Buffer geschaltet.
Im einfachsten Fall wird einer Clock Domain das Taktsignal von außen zugeführt. Hier ist dem Root Buffer ein ganz normaler Input-Buffer vorgeschaltet (s. Abbildung oben). Andere Takte für andere
Domänen können u.U. von diesem Takt z.B. über einen Teiler abgeleitet werden (s.u.). i.A. werden folgende Erwartungen an einen Clock Tree und den Taktsignalen in seinen Zweigen gestellt:
Die High-Phase des Taktsignals soll gleich lang wie die Low-Phase sein (Verhältnis 50:50).
Die Flanken des Taksignals - insbesondere die aktive steigende Flanke - soll eine definierte Signalsteilheit durch eine zu hohe Last nicht unterschreiten um definierte Schaltzeiten der Flipflops
zu gewährleisten.
Die Flanken des Taktsignals sollen bei allen Flipflops und den anderen angeschlossenen sequentiellen Bauelementen (z.B. synchrone RAMs) möglichst gleichzeitig und unabhängig von der Tiefe des Clock Trees ankommen. Daher ist ein Clock Tree immer regelmäßig aufgebaut und die
Anzahl der Buffer-Stufen ist für jede Leaf Cell gleich.
Der Clock Delay - die Signalverzögerung von der Taktquelle bis zur Leaf Cell - soll möglichst klein sein. Diese Verzögerung muß insbesondere einem Eingangsdatenstrom angepaßt werden.
Daher muß die Anzahl der Buffer-Stufen im Clock Tree möglichst klein sein. Ist der Clock Delay für eine Applikation zu groß, kann dieser mit einer Skew-kompensierenden PLL nahezu vollständig ausgeglichen werden (s. PLL).
Die Differenz zwischen der am schnellsten ankommenden Flanke und der spätesten Flanke wird Clock Skew genannt und muß möglichst klein sein. Je kleiner der Clock Skew um so besser kann
die Zeit der Taktperiode für die Kombinatorik ausgenutzt werden. Typische Werte für Clock Skews liegen im Bereich unterhalb einer Nanosekunde.
Da das Taktsignal innerhalb einer Clock Domain das Signal mit der höchsten Frequenz ist, müssen bestimmte Maßnahmen ergriffen werden, um ein Übersprechen des Taktes auf andere Signale zu
verhindern. Die wichtigste Maßnahme insbesondere bei den feinsten Strukturen neuerer Technologien ist die Abschirmung durch beidseitig zum Takt parallel verlaufende Leitungen, die fest auf GND-Potential geklemmt sind (Clock Shielding).
Allgemein kann bei der Implementierung des Clock Trees im Layout der Clock Skew um so kleiner gehalten werden, je kleiner die Clock Domain ist und je lokaler die Domain-Elemente plaziert werden
können. Eine Justierung des Clock Trees im Layout auf einen minimalen Clock Skew wird Clock Balancing genannt.
Synchronisierung zwischen den Clock Domains Insbesondere in Kommunikationsapplikationen, in denen zahlreiche Datenströme mit ähnlichen aber
voneinander als unabhängig zu betrachtenden Datenraten auf dem ASIC zusammenlaufen, wird für jeden Datenstrom ein eigener Takt benötigt, der entweder zu Verfügung gestellt wird oder aus einem seriellen
Datenstrom zurück gewonnen wird (Clock Recovery). Dieser Takt baut einen Clock Tree auf und definiert entsprechend eine Clock Domain. Werden Daten und/oder Informationssignale zwischen den
Domänen unterschiedlicher Taktsignale ausgetauscht, müssen diese über spezielle Schaltungen zur Synchronisierung geführt werden. Datensignale, die in Paketen aus mehreren Worten organisiert sind, werden häufig über Dual-Port RAMs geführt (s. auch RAMs). Bei diesen RAMs werden die Daten der sendenden Domäne mit dem entsprechenden Takt in den einen RAM-Port hinein
geschrieben und über den anderen RAM-Port mit dem anderen Takt der zweiten Domäne ausgelesen (Bild unten). Das Frequenzverhältnis der beiden Taktsignale ist dabei beliebig solange ein Voll- oder
Leerlaufen des RAMs durch entsprechende Maßnahmen verhindert wird. Asynchrone 1-Bit breite Informations- bzw. Kontrollsignale können über eine einfache zweistufige Synchronisierung von der einen in die andere
Domäne geführt werden (Bild unten). Hier wird ein möglicher instabiler Zustand in die erste Flipflop-Stufe durch die zweite Flipflop-Stufe ausgefiltert.
Sollen Daten von einer langsamen Domäne in eine schnelle Domäne transferiert werden, kann eine einfache Registerstufe mit einem synchronisierten Kontrollsignal verwendet werden.
Andere Takterzeugungen Neben Taktsignalen, die dem ASIC von außen direkt zugeführt werden, können Taktsignale mit anderen
Frequenzen aus einem zugeführten Referenztakt intern erzeugt werden. Im folgenden sind einige Möglichkeiten aufgeführt:
PLL (Phase Locked Loop)
In vielen Applikationen erzeugt eine PLL aus einem Referenztakt F Ref einen Takt F PLL mit einer
zum Referenztakt erhöhten oder reduzierten Frequenz. Das Verhältnis der Frequenzen bestimmt sich dabei aus zwei internen Teilern m und n zu FPLL = FRef * m/n
Eine vertiefende Beschreibung der PLL befindet sich hier.
Gated Clock Gated Clocks sind im eigentlichen Sinn keine erzeugten Taktsignale. Über ein Gate wie z.B. einem AND-Gatter, kann der an dem einem Eingang des Gatters anliegenden Takt am Ausgang des
Gatters ein- bzw. ausgeschaltet werden. Zum Ein- und Ausschalten wird der zweite Eingang des Gatters benutzt (1=Ein; 0=Aus). Das Gate einer Gated Clock kann jedoch nicht als Root Buffer
betrachtet werden. Daher muß im Anschluß an das Gate zunächst ein eigener Root-Buffer plaziert werden. Um Spikes, also kurze Störpulse, auf dem Ausgangssignal des Gates zu vermeiden, muß das
Steuersignal synchron zu dem gesteuerten Takt angelegt werden und darf nicht während der geschalteten Clock-Pulse ein- oder ausgeschaltet werden.
Teiler (Divider) Wird ein binärer Zähler mit seinem Takt kontinuierlich erhöht, entstehen an seinen Zählerausgängen Signale, die eine aus dem Taktsignal geteilte Frequenz darstellen. Mit solchen
Zählern kann aus einer Basisfrequenz durch ganzzahlige Teilung eine neue Frequenz erzeugt werden, die wiederum eine eigene Clock Domain speisen kann.
Der kleinste mögliche Teiler besteht aus einem einzelnen Flipflop, das bei jedem Takt den Zustand seines Ausgangs ändert (Toggle Flipflop). Dieses stellt so einen Teiler durch 2 dar und ein
angeschlossener Takt einer bestimmten Frequenz liegt an seinem Ausgang entsprechend halbiert vor.
Weiter zum Aufbau von verschiedenen Makros
|
|