4. Die Spartan3-Familie - Technische Informatik · wiederum die Ausgänge der beiden F5-Multiplexer...
Transcript of 4. Die Spartan3-Familie - Technische Informatik · wiederum die Ausgänge der beiden F5-Multiplexer...
1
4. Die Spartan3-Familie
2
Programm für heute:
Die Spartan3-Familie• CLBs (configurable logic blocks), Slices, Logic Cells• IO-Blöcke• Taktung
3
Configurable Logic Block (CLB)
Ein CLB besteht aus zwei identischen so genannten Slices .
Eine Slice besteht aus zwei sehr ähnlichen Logic Cells .
Die beiden Logic Cells jeder Slice nutzen eine Reihe von Steuersignalen gemeinsam. Zum Beispiel werden sie über eine gemeinsame Taktleitung CLK getaktet. Näheres dazu auf den folgenden Folien.
Durch spezielle Multiplexer (F5- und F6-Multiplexer) können aus den Logic Blocks eines CLBs sehr effizient komplexere Funktionen geformt werden, die mit einem einzelnen Logic Block nicht möglich wären.
4
Logic Cell (LC)
Der Grundbaustein des Spartan-3 ist die Logic Cell (LC). Sie besteht aus
1. Einer 4-Input-Lookup-Table (LUT, in der Literatur auch als function generatorbezeichnet), mit der eine beliebige Boolesche Funktion mit vier Eingängen implementiert werden kann.
2. Einem Speicherelement. Dieses ist realisiert als taktgesteuertes D-Flipflop mit set-und reset-Eingang. Das Flipflop kann am Ausgang zur Speicherung eines in der LC berechneten Wertes genutzt werden.
3. Einer sogenannten Carry-und-Control-Logik. Diese bietet die Funktionalität, den Ausgang der LUT mit weiteren Eingängen zu kombinieren, geeignete Signale an den Ausgang der LC zu leiten und den Carry-Ausgang zu beschalten, falls die LC als Teil einer Addiererschaltung benutzt werden soll.
Der prinzipielle Aufbau einer Slice aus zwei LCs ist auf der folgenden Folie zu sehen.
5
2 Logic Cellsbilden eine Slice
6
Look-Up Tables (LUTs)
Die LUTs können wahlweise in unterschiedlichen Betriebsmodi genutzt werden. Die Standardnutzung ist die Implementierung eines Schaltnetzes mit bis zu vier Eingängen und einem Ausgang.
Da es sich bei einer LUT um ein16x1-Bit synchrones RAM handelt, können sie darüber hinaus für die Logik auch als solches benutzt werden. Ferner können zwei LUTs innerhalb einer Slice kombiniert werden entweder zu einem 32x1-Bit RAM oder zu einem 16x2-Bit RAM oder zu einem 16x1-Bit dual ported RAM, also einem RAM, das gleichzeitig zwei Zugriffe erlaubt. Diese Funktionalität ist ausgesprochen hilfreich in Applikationen, bei denen viele einfache Prozessorelemente auf einem FPGA implementiert werden müssen.
Eine weitere Möglichkeit der LUT ist die Konfiguration zu einem 16-Bit Schieberegister. Dieses kann in Bit-seriellen Applikationen nützlich sein, generiert aber – wenn es mehrfach auf dem selben FPGA genutzt wird - einen hohen Leistungsverbrauch (da RAM immer wesentlich weniger Strom braucht als Schieberegister).
Natürlich geht die Funktion der LC als Schaltnetz verloren, wenn das RAM als Speicher genutzt wird.
7
Speicherelement
Die Speicherelemente in der Spartan3-Slice können entweder als flankengesteuerte oder als pegelgesteuerte D-Flipflops konfiguriert werden.
Ihr D-Eingang ist entweder der Ausgang der LUT oder ein primärer Eingang der Zelle (BY).
Die Aktivität des Flipflops wird über ein CLK und über ein CE (clock enable) gesteuert.
Zusätzlich hat jedes Flipflop einen synchronen Set/Reset-Eingang (SR).
Alle Steuerungssignale (CLK, CE, SR, BY) gehen an beide Flipflops innerhalb einer Slice, die aus zwei LCs besteht. Ein Bild ist auf der folgenden Folie gezeigt.
8
9
-- Sieben-Segment-Anzeigelibrary IEEE;use IEEE.STD_LOGIC_1164.ALL;-- use IEEE.STD_LOGIC_ARITH.ALL;-- use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity SiebenSeg isport (
Binary : in std_logic_vector(3 downto 0);S6 : out std_logic );
end SiebenSeg;
architecture Behavioral of SiebenSeg is
begin
-- S6 ist Segment 6 der Anzeige -- also der oberste Querbalkenwith Binary select
S6 <= '0' when "0001", -- 1'0' when "0100", -- 4'0' when "1011", -- B'0' when "1101", -- D'1' when others;
end Behavioral;
10
11
12
Additional Logic
In jeder Slice befindet sich ein so genannter F5-Multiplexer. Dieser kombiniert die Ausgänge der funktion generators (LUTs), um damit - eine beliebige 5-Input Schaltnetzfunktion oder- spezielle Funktionen mit bis zu 9 Inputszu realisieren.
Ferner gibt es in jedem CLB einen so genannten F6-Multiplexer. Dieser kann wiederum die Ausgänge der beiden F5-Multiplexer der beiden Slices des CLB zusammenführen, um damit- eine beliebige 6-Input Schaltnetzfunktion oder- spezielle Funktionen mit bis zu 19 Inputszu realisieren.
13
-- G ist 1, wenn der Bit-Vektor X drei-- oder mehr Einsen enthält
library IEEE;use IEEE.STD_LOGIC_1164.ALL;
entity F5MUXdemo isport(
X : in std_logic_vector(4 downto 0);G : out std_logic );
end F5MUXdemo;
architecture Behavioral of F5MUXdemo is
begin
G <= ( X(0) and X(3) and X(4) ) or( X(0) and X(1) and X(2) ) or( X(0) and X(2) and X(3) ) or( X(0) and X(1) and X(3) ) or( X(0) and X(1) and X(4) ) or( X(1) and X(3) and X(4) ) or( X(1) and X(2) and X(3) ) or( X(1) and X(2) and X(4) ) or( X(2) and X(3) and X(4) ) or( X(0) and X(2) and X(4) );
end Behavioral;
14
15
Arithmetische Logik
In den CLBs befinden sich spezielle Gatter und Leitungen, die für die Implementierung schneller Arithmetik genutzt werden können.
Spezielle Carry-Logik innerhalb jeder Logic Cell. Also 2 Bits innerhalb der Slice.
Ein XOR-Gatter (XORG) pro Logic Cell. Dadurch wird die Implementierung eines Volladdierers pro LC möglich.
Ein AND-Gatter pro Logic Cell (GAND). Dadurch wird die Implementierung von Multiplizierern unterstützt.
Man kann auf der folgenden Folie sehen, wie ein Volladdierer aus den vorhandenen Blöcken der LC gebastelt werden kann: Die Eingänge A[3] und A[1] werden in der LUT durch XOR verknüpft und liefern D. Das Summenbit entsteht durch die XOR-Verknüpfung von D mit dem eingehenden Carry der unteren LC bzw. durch das CIN. Es wird an den Y-Ausgang geliefert. Das ausgehende Carry ist gleich dem eingehenden Carry, wenn D=‘1‘ ist und gleich dem Wert von A[3] (oder A[1], denn in diesem Fall ist A[3]=A[1]), wenn D=‘0‘ ist. Dies leistet der obere Multiplexer CYMUXG.
16
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following lines to use the declarations th at are-- provided for instantiating Xilinx primitive component s. library UNISIM; use UNISIM.VComponents.all; entity RCA_PRI is
generic( WIDTH : positive := 8 ); port ( A : in std_logic_vector(WIDTH-1 downto 0);
B : in std_logic_vector(WIDTH-1 downto 0); CI : in std_logic; S : out std_logic_vector(WIDTH-1 downto 0); CO : out std_logic);
end RCA_PRI; architecture Behavioral of RCA_PRI is
signal sum: std_logic_vector(WIDTH downto 0); signal zeros: std_logic_vector(WIDTH-1 downto 0) := ( others => '0');
beginprocess (CI, A, B, sum) begin
sum <= ('0' & A) + ('0' & B) + (zeros & CI); S <= sum(WIDTH-1 downto 0); CO <= sum(WIDTH);
end process; end Behavioral;
17
18
19
20
Maximum delay is 16.392ns.Delay: 16.392ns (data path)
Source: B<0> (PAD)Destination: CO (PAD)Data Path Delay: 16.392ns (Levels of Logic = 6)
Data Path: B<0> to CODelay type Delay(ns) Logical Resource(s)---------------------------- -------------------Tiopi 0.924 B<0>
B_0_IBUFnet (fanout=1) 4.364 B_0_IBUFTopcyf 1.486 rca_pri_S<0>lut
rca_pri_S<0>cyrca_pri_S<1>cy
net (fanout=1) 0.000 rca_pri_S<1>_cyoTbyp 0.096 rca_pri_S<2>cy
rca_pri_S<3>cynet (fanout=1) 0.000 rca_pri_S<3>_cyoTbyp 0.096 rca_pri_S<4>cy
rca_pri_S<5>cynet (fanout=1) 0.000 rca_pri_S<5>_cyoTbyp 0.096 rca_pri_S<6>cy
rca_pri_S<7>cynet (fanout=1) 3.774 CO_OBUFTioop 5.556 CO_OBUF
CO---------------------------- ----------------------- ----Total 16.392ns (8.254ns logic, 8.138 ns route)
(50.4% logic, 49.6% route)
21
LUT als Schieberegister
Die Speicherelemente in der Spartan-3-Slice können auch als Schieberegister fester oder variabler Länge konfiguriert werden. Dabei wird die Länge in vier Bit (A0 bis A3) codiert, wobei die effektive Länge (zwischen 1 und 16 Bit) sich als 8A3+4A2+2A1+A0+1 ergibt.
D ist der serielle Eingang und Q der serielle Ausgang. Das Schieberegister schiebt bei der steigenden Taktflanke.
22
SRL16 16-Bit Shift Register Look-Up-Table (LUT)
Architectures Supported
No CoolRunner-II
No CoolRunner XPLA3
No XC9500, XC9500XV, XC9500XL
Primitive Virtex-II, Virtex-II Pro, Virtex-II Pro X
Primitive Virtex, Virtex-E
Primitive Spartan-3
Primitive Spartan-II, Spartan-IIE
SRL16
23
Instanzierung:
-- SRL16: 16-bit shift register LUT operating on posedg e of clock-- All FPGAs -- Xilinx HDL Libraries Guide version 7.1i
SRL16_inst : SRL16
port map ( Q => Q, -- SRL data outputA0 => A0, -- Select[0] inputA1 => A1, -- Select[1] inputA2 => A2, -- Select[2] inputA3 => A3, -- Select[3] inputCLK => CLK, -- Clock inputD => D -- SRL data input );
-- End of SRL16_inst instantiation
24
LUT als Read Only Memory
Die Speicherelemente in der Spartan-3-Slice können auch explizit als ROM verwendet werden. Hier finden wir ein Beispiel für ein 16x1 Bit ROM. Andere Größen (bis zu 32x1) sind möglich.
25
ROM16X1 16-Deep by 1-Wide ROM
Architectures Supported
No CoolRunner-II
No CoolRunner XPLA3
No XC9500, XC9500XV, XC9500XL
Primitive Virtex-II, Virtex-II Pro, Virtex-II Pro X
Primitive Virtex, Virtex-E
Primitive Spartan-3
Primitive Spartan-II, Spartan-IIE
ROM16X1
26
Instanzierung:
-- ROM16X1: 16 x 1 Asynchronous Distributed => LUT ROM -- Xilinx HDL Language Template version 6.1i
ROM16X1_inst : ROM16X1
-- Edit the following generic to define the contents of the ROM. generic map ( INIT => X"0000")
port map ( O => O, -- ROM outputA0 => A0, -- ROM address[0] A1 => A1, -- ROM address[1] A2 => A2, -- ROM address[2] A3 => A3 -- ROM address[3] );
-- End of ROM16X1_inst instantiation
27
LUT als Random Access Memory
Die Speicherelemente in der Spartan-II-Slice können auch explizit als RAM verwendet werden. Hier finden wir ein Beispiel für ein 16x1 Bit RAM. Andere Größen (bis zu 32x16) sind möglich.
Auszug aus der Spezifikation von XilinX:RAM16X1S_1 is a 16-word by 1-bit static random access memory with synchronouswrite capability and negative-edge clock. When the write enable (WE) is Low, transitions on the write clock (WCLK) are ignored and data stored in the RAM is notaffected. When WE is High, any negative transition on WCLK loads the data on thedata input (D) into the word selected by the 4-bit address (A3 – A0). For predictableperformance, address and data inputs must be stable before a High-to-Low WCLK transition. This RAM block assumes an active-Low WCLK. However, WCLK can beactive-High or active-Low. Any inverter placed on the WCLK input net is absorbedinto the block. The signal output on the data output pin (O) is the data that is stored in the RAM at the location defined by the values on the address pins.
28
RAM16X1S_1 16-Deep by 1-Wide Static Synchronous RAM with Negative-Edge Clock
Architectures Supported
No CoolRunner-II
No CoolRunner XPLA3
No XC9500, XC9500XV, XC9500XL
Primitive Virtex-II, Virtex-II Pro, Virtex-II Pro X
Primitive Virtex, Virtex-E
Primitive Spartan-3
Primitive Spartan-II, Spartan-IIE
RAM16X1S_1
29
Instanzierung:
-- RAM16X1S_1: 16 x 1 negedge write distributed => LUT RAM -- All FPGA -- Xilinx HDL Language Template version 6.1i
RAM16X1S_1_inst : RAM16X1S_1
-- Edit the following generic to change the inital contents-- of the RAM.
generic map ( INIT => X"0000")
port map ( O => O, -- RAM outputA0 => A0, -- RAM address[0] inputA1 => A1, -- RAM address[1] inputA2 => A2, -- RAM address[2] inputA3 => A3, -- RAM address[3] inputD => D, -- RAM data inputWCLK => WCLK, -- Write clock inputWE => WE -- Write enable input );
-- End of RAM16X1S_1_inst instantiation
30
5. Taktung
31
Taktung
Alle synchronen Schaltungen werden durch ein oder mehrere Taktsignale gesteuert. Die Frequenzen dieser Taktsignale bestimmen in der Regel die Performance. Durch die Entwicklung der Halbleitertechnologie wurden in der Vergangenheit immer schnellere Gatter möglich, was zwangsläufig einen Bedarf an immer höheren Taktfrequenzen generierte. Solange die Schaltzeit der Gatter signifikant über den Laufzeiten der (Takt-) Signale auf den Leitungen lag (etwa bis zur Mitte der 80er Jahre), war dies kein Problem.
Bei heutigen CMOS-Schaltungen werden die Signale etwa mit einem Zehntel der Lichtgeschwindigkeit über (Metall-) Leitungen transportiert (Dieser Wert variiert mit dem Widerstand der Leitung, der Kapazität der aufzuladenden Transistorgatter und der Treiberleistung des treibenden Gatters; trotzdem kann diese Approximation für unsere Zwecke als genau genug angesehen werden). Mit dieser Geschwindigkeit kann ein Signal in einer Taktphase eines Taktes mit einer Frequenz von 1GHz die Strecke von 3 cm zurücklegen. Häufig steht aber nur eine halbe Taktphase zur Verfügung, ferner werden Signale nicht durchgehend auf Metallleitungen übertragen, so dass die Laufzeit auf den Leitungen sich bei heutiger Technologie bereits in der Größenordnung der Schaltzeit von Elementargattern befindet. Dadurch entstehen Probleme, die wir auf den folgenden Folien studieren und lösen wollen.
32
Setup- und Hold-Zeiten von Latches und Flipflops
Die Hold-Zeit eines Latches oder eines Flipflops ist die Zeitspanne, die das Eingangssignal nach dem Übernahmeevent (Taktflanke beim Flipflop, Ende des Taktpegels beim Latch) noch unverändert anliegen muss, um korrekt übernommen zu werden.
Die Setup-Zeit eines Flipflops ist die Zeitspanne, die das Eingangssignal vor dem Übernahmeevent anliegen muss, um korrekt übernommen zu werden. In Bezug auf Latches spielt die Setup-Zeit nur in sofern eine Rolle, als das Eingangssignal mindestens für die Setup-Zeit stabil anliegen muss, damit es übernommen werden kann. Allerdings sind die Setup-Zeiten immer deutlich kürzer als die Dauer der positiven oder negativen Taktphase.
Typische Setup-Zeiten bei Flipflops in heutiger CMOS-Technologie (z.B. 0,18µ-Prozess) 60-120 ps, d.h. etwa ein Zehntel ns.
Typische Hold-Zeiten bei Flipflops in heutiger CMOS-Technologie (z.B. 0,18µ-Prozess) 0-30 ps.
Typisches Clock-to-Output-Delay eines taktflankengesteuerten Flipflops in 0,18µ-Technologie 200 ps.
33
Setup- und Hold-Zeiten von Latches und Flipflops
CLK
D
Q
tS tS tStH tH
tCO Clock-to-Output Delay
Setup zu kurzdaher keineÜbernahme
Setup-Zeit Hold-Zeit
34
Taktverzögerungen in synchronen Schaltungen
Beispiel: Ein Schieberegister aus Flipflops:
D Q
CLK
M2 M4 M6
t
CLK
D
M2
M4
M6
Q
35
Wenn wir diese Schaltung betrachten, gehen wir davon aus, dass die Setup-Zeit tS und Hold-Zeit tH mit der Taktfrequenz f harmonieren, d.h.
tS < 1/(2f)
tH < tCO <1/(2f)
Ein Taktzyklus hat die Länge 1/f. tCO bezeichnet dabei die Verzögerungszeit des Flipflops vom Taktereignis bis zur Änderung des Ausgangs. CO steht für clock-to-output
Wenn diese Bedingungen gegeben sind, kann ein solches Schieberegister aus Latches aufgebaut werden, die abwechselnd positiv und negativ pegel-gesteuertsind.
36
D Q
D Q
CLK
M1 M2 M3 M4 M5 M6 M7
M2 M4 M6
tCLK
D
M1
M2
M4
M6
Q
Schieberegister aus Latches
37
Digital Clock Manager (DCM)
Häufig kommt es vor, dass das Taktsignal, mit dem der Chip von außen gesteuert wird,
• Durch die Übertragung über den Anschlussdraht und den Input-Paddegeneriert wird
• Eine über die Zeit veränderliche Taktverschiebung (Jitter) aufweist
• Für die Funktionalität unterteilt werden muss, da eine höhere Frequenz erforderlich ist
• In der Phase verschoben werden muss.
Diese Funktionen übernimmt eine Digital Clock Manager (DCM), ein Regelkreis, der kurzfristige Taktschwankungen eliminiert, und nach Bedarf Takte der doppelten oder halben Frequenz generiert. Ferner erzeugt die DCM an ihrem Ausgang ein sauberes Rechteck, auch wenn der Eingang z.B. eine Sinusform aufweist.
Unser Spartan-3 Chip verfügt über 4 DCMs für bis zu 4 globale Taktsignale. Die DCMs können anwendungsspezifisch für die obigen Zwecke genutzt werden. Weitere Beispiele für Anwendungen von DCMs sehen wir auf den folgenden Folien.
38
Funktionalität einer DCM beim Spartan-3
CLKInput
CLKOutput
Rückkopplngsschleife
GlobalBuffer Input
GlobalClockBuffer
IBUFG BUFG
CLKIN
CLKFB
Output
Digital Clock Manager
39
Anschlüsse einer DCM beim Spartan-3
CLKINCLKFB
RSTPSENPSINCDECPSCLK
CLK0CLK90
CLK180CLK270CLK2X
CLK2X180
CLKDIVCLKFX
CLKFX180
STATUS[7:0]LOCKED
PSDONE
40
Anschlüsse einer DCM beim Spartan-3
CLKIN: Eingang des externen (getriebenen) Clock-SignalCLKFB: Feedback-Eingang um Eingang und Ausgang zur
Deckung zu bringenRST ResetPSEN Phase Shift EnablePSINCDEC Phase Shift Increment (1) oder Decrement (0)PSCLK Taktflanke um zu inkrementieren oder dekrementieren
„Dynamic fine phase shifting“ 256 Stufen möglichCLK90 Um 90 Grad verschobener ClockCLK2X Clock mit doppelter FrequenzCLKDIV Clock mit halber Frequenz (über Attribut auch anders teilbar)CLKFX Clock mit Frequenz, die kein ganzzahliges Vielfaches der
Ursprungsclock ist. Kofiguriert über Attribute
41
Was passiert, wenn das Taktsignal auf der Leitung v erzögert wird?
D Q
CLK
M2 M4 M6
t
CLK
D
M2
M4
M6
Q
∆
CLK‘
CLK‘
42
1. Lösung: Taktsignale den Datensignalen entgegen f ühren:
D Q
CLK
M2 M4 M6
t
CLK
D
M2
M4
M6
Q
∆
CLK‘
CLK‘
43
d0q0
CLK
2. Lösung: Pipelining (geht, wenn zwischen den FF ko mbinatorische Logik sein darf)
C1
d1 q1
C2
d2
t
CLK
d0
q0
d1
q1
d2
CLK‘
∆CLK‘
∆
44
d0q01
CLK
2. Lösung: Pipelining, optimiert
C10
d10 q10
C10
d11
t
CLK
d0
q01
d10
q10
d11
q11
q11
45
D Q
D Q
CLK
M1 M2 M3 M4 M5 M6 M7
M2 M4 M6
t
CLK
D
M1
M2
M4
M6
Q
CLK
3. Lösung: 2-Phasen-Takt: Möglich, wenn lokale Synchronisation sichergestellt ist.
CLK
46
D Q
D Q
CLK1
M1 M2 M3 M4 M5 M6 M7
M2 M4 M6
t
CLK1
D
M1
M2
M4
M6
Q
CLK2
4. Lösung: Besser: Nichtüberlappender 2-Phasen-Takt :
CLK2
47 t
Erzeugung eines nichtüberlappenden 2-Phasen-Taktes aus einem Muttertakt (CLK) mittels einer DLL. Diese erzeugt e inen um 90 o
verschobenen zweiten Takt CLK 90:
CLK
CLK90
≥1
&CLK
CLK90 CLK1
CLK2
CLK1
CLK2
DLL
BUFG
48
Vor- und Nachteile dieser Taktungsstrategien
Der große Vorteil beim Aufbau von Schaltwerken mit 2-Phasen-Takten ist die Möglichkeit, die aufeinander folgenden Latches unterschiedlicher Polarisation zu trennen: Man kann kombinatorische Logik zwischen je ein p-Latch und ein n-Latcheinfügen. Dadurch werden beide Phasen des Taktes ausgenutzt. Außerdem bringt die kombinatorische Logik ein zusätzliches Delay zwischen dem Signal am Ausgang des ersten Latches und dem Signal am Eingang des zweiten Latches. Um dieses Delay können die Taktphasen zueinander verschoben sein, ohne zu Fehlverhalten zu führen.
Der Nachteil ist die relativ genaue Synchronisation zweier Signale auf dem Chip. Je größer die Anzahl der Gatter auf dem Chip wird, desto schwieriger wird diese Aufgabe. Mit nichtüberlappenden 2-Phasen-Takten konnte man in den 90er Jahren diese Probleme bis zu Taktfrequenzen von 66 MHz bewältigen. Darüber hinaus aber nicht.
In den Jahren 1989 und 1991 veröffentlichte der Däne Christer Svensson zwei Arbeiten über eine neue Taktungsstrategie, den True-Single-Phase-Clock (TSPC). Diese Technik revolutionierte die Taktung aller komplexer synchroner Systeme auf einem Chip angefangen vom Mikroprozessor bis hin zum DSP. Heutige Mikroprozessoren verwenden ausschließlich TSPC, mit dem Taktfrequenzen bis zu 10GHz oder mehr möglich ist.
49
Nicht invertierendes positiv level-gesteuertes Flipflop für TSPC(die Autoren bezeichnen dieses irreführenderweise als n-Latch,weil der Takttransistor ein n-Transistor ist)
CLK
Vdd
GND
IN
OUT
50
Nicht invertierendes negativ level-gesteuertes Flipflop für TSPC(die Autoren bezeichnen dieses irreführenderweise als p-Latch,weil der Takttransistor ein p-Transistor ist)
CLK
Vdd
GND
IN
OUT
51
Negativ taktflankengesteuertes Flipflop für TSPC
OUT
CLK
Vdd
GND
IN
52
Vorteile von TSPC
Es gibt auf dem ganzen Chip nur ein globales Taktsignal, d.h. Clock-skew (also die Verschiebung der Takte gegeneinander) ist kein Problem mehr.
Jedes Flipflop hat nur zwei Takttransistoren, d.h. die Taktlast ist nur noch halb so groß wie bei dynamischen Flipflops mit herkömmlichen Taktstrategien.
Pro Taktphase schalten immer nur maximal die Hälfte der beteiligten Transistoren.
Zusätzlich können – wie bei den 2-Phasen-Takten - kombinatorische Logik und Latches gemischt werden.
An kritischen Punkten im Entwurf erlaubt TSPC den Einbau von so genannten Synchronisations-Latches. Ein Beispiel für das Problem und seine Lösung ist auf den folgenden Folien zu sehen.
Dadurch, dass clock-skew bis zu einem gewissen Grad toleriert werden kann, entschärft sich das Problem der ungleichmäßigen Str omaufnahme während des Taktzyklus: Ein genau synchronisiertes System hat im Taktzyklus nur einen oder zwei Zeitpunkte, an denen alle Transistoren schalten. In diesem Moment kann die Versorgungsspannung zusammenbrechen, so dass keine korrekte Funktion mehr möglich ist. Dies passiert nicht mehr, wenn die Taktflanke überall zu leicht unterschiedlichen Zeiten entsteht.
53
Q1
t
CLK
Q1
M1
CLK‘
D1
Q2D2
∆
CLK
CLK‘
M1 M2
M2
M1
M2erwartet
tatsächlich
54
Q1
t
CLK
Q1
M1
CLK‘
D1
Q2
∆
CLK
CLK‘
M1 M2
M2
M1
M2erwartet
tatsächlich
M0
Synchronisationslatch
M0
55
Taktverteilung
Auch mit TSPC bleibt das Problem, dass man den ganzen Chip annähernd zur selben Zeit mit einer Taktflanke bedienen muss (Die Toleranz ist bei Verwendung von Synchronisations-Latches maximal der halbe Taktzyklus minus einer Setup-Zeit eines Latches). Wie kann man das erreichen?
Ferner: Auf einem Chip mit 250.000.000 Transistoren (oder mehr) kann man sicher mit einer Größenordnung von 106 Takt-Transisoren rechnen. Diese stellen in ihrer Gesamtheit eine große Kapazität dar (Größenordnung 1µF). Sie müssen von einem zentralen Punkt aus zu etwa dem selben Zeitpunkt eine Taktflanke bekommen.
Um ein solches Signal zu treiben, benutzt man eine Kette von sogenannten Treibern. Das sind Inverter, deren Transistoren gegen Ende der Kette immer größer werden. Das Verhältnis zweier aufeinander folgender Treiber in einer solchen Kette variiert typischerweise zwischen 1:3 und 1:8. Ein solcher großer Treiber kann auch als mehrere parallele entsprechend kleinere Treiber realisisert werden, wobei man darauf achten muss, dass all diese gleichgroß sind, so dass sie die gleiche Schaltverzögerung generieren.
Die folgende Folie zeigt eine Treiberkette und eine Mögliche Taktverteilung auf einem Chip.
561
11
1 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Taktverteilung mit dem H-Baum
57
Taktverteilung mit einem Kamm (Systola-Chip, mit 64 Prozessoren)Weil die Systola vom Modell her nicht sonderlich anfällig gegen Taktverschiebung ist, genügt eine relativ einfache Taktverteilung, die lediglich dafür sorgt, daß Prozessoren, die physikalisch nebeneinander liegen, auch den Takt zu (fast) gleicher Zeit bekommen. Prozessoren, die nicht benachbart sind, tauschen ja nie Daten aus; daher ist deren Synchronisation nicht erforderlich. Gewählt wurde ein Kamm-Layout des Taktes:
Am Eingang und am unteren Anfang jeder Zinke sitzt ein Takt-Treiber (ein Inverter). Ferner ist in jedem Prozessor eine Einheit, die die drei geschalteten Takte (normal, Multiplizierer, Shifter) erzeugt und ebenfalls über zwei Inverter treibt. Insgesamt läuft das Taktsignal also durch vier invertierende Treiberstufen.
11 1 1 1 1 1 1 1
58
Taktverteilung auf dem Spartan-3-Chip (Mischung aus Kamm und H-Baum)