Professional Documents
Culture Documents
http://www.pdfmail.com
B
Connexion Programmable
(Flash EPROM)
C
A
F1 = AB + A ’B ’C + A ’B ’
B F2 = A ’B ’C + BC + A ’B ’
F3 = AB + A ’B ’
C
F1
= connexion
F2
F3
PAL Combinatoire
Macro-Cellule
PAL Synchrone
Macro-Cellule
PAL22V10
Macro-Cellule
PAL22V10
Macro-Cellule
Macro-Cellule
Bloc
Macro-Cellule
Logique
Bloc Bloc
Logique Logique
Max7000 (7064)
PIA (Programmable Interconnect Array) permet de connecter les macrocells entres elles
et économiques
• Capacité logique équivalente :
De 4 à 20 PALs 22V10 D Q
Inconvénients :
• Consommation non négligeable
due principalement à la grande charge capacitive imposée aux buffers d’entrée :
Chaque buffer doit pouvoir piloter :
Nbre_termes_produits_par macro_cellule X Nbre_macro_cellules X 2
E/S E/S
Bloc Bloc Bloc Bloc Bloc Bloc
Logique Logique Logique Logique Logique Logique
E/S
26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 13
Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com
Blocs de logique
configurables (CLB)
comprenant logique combinatoire
et registres.
Chaque CLB peut également être
configuré en ALU cascadable 2 bits,
ou en mémoire synchrone,
simple ou double port ultra rapide
1 CLB = 1Slice
Réseau d'interconnexions
hierarchisé programmable
- Longues lignes verticales pour
signaux de contrôle
- Longues lignes horizontales pour
bus de données
- Interconnexions générales
- Interconnexions directes
- Arbres d’horloges
Blocs de Logique
Configurables
(CLB) de capacité double
1 CLB = 2 Slices
Banque 3
Architecture Virtex-E
Banque 0 Banque 1
I/O Blocs
d’entrée/sortie
(IOBs)
répartis en 8 banques
Modes différentiels (LVDS)
Block SelectRAM
(4 Kbits/bloc, Banque 2
Double port)
Blocs de Logique
Configurables
(CLB) de capacité double
1 CLB = 2 Slices
Banque 3
Architecture Virtex-II
Banque 0 Banque 1
I/O Blocs
d’entrée/sortie
Block SelectRAM répartis en 8 banques
(18 Kbits/bloc, Banque 2
Double port)
Multiplieurs dédiés
18x18 signés
Banque 3
Blocs de Logique
Configurables
1 CLB = 4 Slices
9 composants
Virtex
6 composants
Spartan-II
11 composants
Virtex-E
8 composants
Spartan-IIE
11 composants
Virtex-II
comparateurs, accumulateurs…
• Mais aussi de multiplieurs,
multiplieurs/accumulateurs…
Bascule
SET
(synchrone ou asynchrone)
ð Toutes les bascules sont
configurables en Latch transparent
ð Polarité programmable pour tous les
signaux de contrôle : horloge, enable,
set et reset.
0
ð SET et RESET synchrones ou 1 D Q
D
asynchrones
ð Les signaux de contrôle sont CE
communs pour les 2 bascules d’un CK
même slice, mais peuvent être de
polarité différente CK
ð Validation de l’horloge sur toutes les
bascules des CLBs et IOBs. (Evite
l’insertion de délais de logique
combinatoire et de routage)
RESET
(synchrone ou asynchrone)
F2
Eléments
DECOD
ð La combinaison des F3 4 --> 16
mémoire
entrées commande un F4 initialisés à la MUX DOUT
indépendants.
A3 A3
ADR(3)
A2
GENE/UA7 ADR(3)
A2
GENE/UA3
ADR(2) ADR(2)
A1 ADR(1) A1 INT(3)
ADR(1) INT(7) DOUT(7) DOUT(3)
A0 O ADR(0) A0 O
ADR(0)
D DIN(2) D
DIN(2)
WE WR WE
WR
CK WCLK RAM16x1S CK WCLK RAM16x1S
ADR(3) A3 ADR(3) A3
A2
GENE/UA6 ADR(2) A2
GENE/UA2
ADR(2)
ADR(1) A1 ADR(1) A1
INT(6) DOUT(6) INT(2) DOUT(2)
ADR(0) A0 O ADR(0) A0 O
DIN(1) D DIN(1) D
WR WE WR WE
CK WCLK RAM16x1S CK WCLK RAM16x1S
ADR(3) A3 ADR(3) A3
ADR(2) A2
GENE/UA5 ADR(2) A2
GENE/UA1
ADR(1) ADR(1)
A1 A1
ADR(0) INT(5) DOUT(5) ADR(0) INT(1) DOUT(1)
A0 O A0 O
DIN(0) DIN(0)
D D
WR WR
WE WE
CK CK
WCLK RAM16x1S WCLK RAM16x1S
ADR(3) A3 ADR(3) A3
A2
GENE/UA4 A2
GENE/UA0
ADR(2) ADR(2)
ADR(1) A1 INT(4) ADR(1) A1 INT(0)
DOUT(4) DOUT(0)
ADR(0) A0 O ADR(0) A0 O
DIN(0) D DIN(0) D
WR WE WR WE
CK WCLK RAM16x1S CK WCLK RAM16x1S
READ_B
A3 SLICE A3 SLICE
ADR(3)
A2
GENE/UA7 ADR(3)
A2
GENE/UA3
ADR(2) ADR(2)
A1 ADR(1) A1 INT(3)
ADR(1) INT(7) DOUT(7) DOUT(3)
A0 O ADR(0) A0 O
ADR(0)
D DIN(3) D
DIN(7)
WE WR WE
WR
CK WCLK RAM16x1S CK WCLK RAM16x1S
ADR(3) A3 ADR(3) A3
A2
GENE/UA6 ADR(2) A2
GENE/UA2
ADR(2)
ADR(1) A1 ADR(1) A1
INT(6) DOUT(6) INT(2) DOUT(2)
ADR(0) A0 O ADR(0) A0 O
DIN(6) D DIN(2) D
WR WE WR WE
CK WCLK RAM16x1S CK WCLK RAM16x1S
ADR(3) ADR(3)
A3
GENE/UA5 SLICE A3
GENE/UA1 SLICE
ADR(2) A2 ADR(2) A2
ADR(1) ADR(1)
A1 A1
ADR(0) INT(5) DOUT(5) ADR(0) INT(1) DOUT(1)
A0 O A0 O
DIN(5) DIN(1)
D D
WR WR
WE WE
CK CK
WCLK RAM16x1S WCLK RAM16x1S
ADR(3) A3 ADR(3) A3
A2
GENE/UA4 A2
GENE/UA0
ADR(2) ADR(2)
ADR(1) A1 INT(4) ADR(1) A1 INT(0)
DOUT(4) DOUT(0)
ADR(0) A0 O ADR(0) A0 O
DIN(4) D DIN(0) D
WR WE WR WE
CK WCLK RAM16x1S CK WCLK RAM16x1S
READ_B
library IEEE;
use IEEE.std_logic_1164.all;
Générateur de fonction F ou G
ð En séparant les adresses de
lecture et celles d’écriture, il est DIN CE0
bits. WR_EN
ð 16 Octets = 8 slices
CE15
CK DELAI
Adr G
4
12 Cycles
Operation A Operation B
64
4 Cycles 8 Cycles
64
Operation C Operation D - NOP
3 Cycles 9 Cycles
Equilibrage des retards
sur les deux voies
12 Cycles
ADD_SUB A15
COUT
S15 = f (A15, B15, CIN, ADD_SUB)
B15 CIN
Fonction de 4 entrées
A3 COUT
S3 = f (A3, B3, CIN, ADD_SUB)
B3
CIN
A2 COUT
A1 COUT
S1 = f (A1, B1, CIN, ADD_SUB)
B1 CIN
A0 COUT
entity DEMO is
Port ( A, B : in std_logic_vector(13 downto 0);
ADD_SUB : in std_logic;
--clk : in std_logic;
S : out std_logic_vector(13 downto 0));
end DEMO;
SOMME <= A + B;
DIFFERENCE <= A - B;
S <= SOMME when ADD_SUB = '1' else DIFFERENCE;
--process(clk)
--begin
--if rising_edge(clk) then
-- if ADD_SUB = '1' then S <= (A + B);
-- else S <= (A - B);
-- end if;
--end if;
--end process;
end Behavioral;
Logique arithmétique
Implémentation d’un accumulateur en addition/soustraction
ADD_SUB A15 D Q
COUT
EC
B15 CIN CK
ADD_SUB = 1:
A=A+B A3 COUT D Q
ADD_SUB = 0: B3
EC
CIN CK
A=A-B 1 slice
A2 COUT D Q
EC
B2 CIN CK
A1 COUT D Q
EC
B1 CIN CK
1 slice
A0 COUT D Q
EC
B0 CIN CK
CLOCK
VALIDATION
Multiplexeurs dédiés
Multiplexeurs dédiés
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
begin
S <= Din(sel);
end Behavioral;
Multiplexeurs dédiés: 8 à 1
Din0 SLICE1
G = Din0 Sel0\ + Din1 Sel1
Din1 LUT1
Sel0
MUXF5
Din2 F = Din2 Sel0\ + Din3 Sel1
Din3 LUT2
Sel0
Sel1 MUXF6 S
Din4 SLICE2
G = Din4 Sel0\ + Din5 Sel1
Din5 LUT1
Sel0
MUXF5
Din6
F = Din6 Sel0\ + Din7 Sel1 Sel2
Din7 LUT2
Sel0
Sel1
I/O Blocs
d’entrée/sortie
Block SelectRAM répartis en 8 banques
(18 Kbits/bloc, Banque 2
Double port)
Multiplieurs dédiés
18x18 signés
Banque 3
Blocs de Logique
Configurables
1 CLB = 4 Slices
DI
1 à 16 bits
ADDR MATRICE
MEMOIRE
8 à 12 bits REG DO
DECOD CONFIGURABLE 1 à 16
4Kx1 MUX
2Kx2
1Kx4
512x8
ENABLE
256x16
WE
CE
EN RST
RST
(Reset synchrone)
CLK DELAI
DI
1 à 36 bits
ADDR MATRICE
MEMOIRE
9 à 14 bits REG DO
DECOD CONFIGURABLE 1 à 36
16Kx1 MUX
8Kx2
4Kx4
2Kx9
ENABLE
1Kx18
512x36
WE
CE
EN SET/RST
RST ou SSR
(Synchronous Set Reset)
CLK DELAI
ADDRA
ð Set/Reset synchrone de l’étage de sortie
WEA ð Entrée de validation des opérations de lecture
ENA et d’écriture (ENA et ENB)
RSTA DOA
CLKA ð Contenu initialisé pendant la configuration
• Permet l’implémentation de machines d’états,
DIB séquenceurs…
RAMB4_S#_S#
ADDRB ð Supportent les bits de parité
• 1 bit de parité par octet
WEB
ENB
RSTB DOB
CLKB
RAMB4_S16_S16
WE WEA Organisation 256 x 16
EN ENA
RST RSTA DOA<15:0> DO<31:16>
CLK CLKA
VCC, ADDR<6:0> ADDRA<7:0>
DIA<15:0>
DI<31:16>
WEB Organisation 256 x 16
ENB DO<15:0>
RSTB DOB<15:0>
CLKB
GND, ADDR<6:0> ADDRB<7:0>
DI<15:0> DIB<15:0>
Distribution d’horloges
IPAD BUFG
(dédié)
CLKDV BUFG
RST LOCKED
ð Etage de sortie :
TRI
TRI_ENABLE EC OBUF • Sortie directe ou à registre avec signal
de validation d’horloge
• Contrôle Tri-state direct ou à registre
OUT
OUT_ENABLE EC ð Etage d’entrée :
PAD • Entrée directe et par l’intermédiaire d’un
IN
registre
IN_Q
EC ð Tous les registres sont intialisés à la fin
de la configuration.
IBUF
CLK • Valeur par défaut : 0
IN_ENABLE
ð Entrée SET et RESET synchrone ou
asynchrone pour tous les registres
I/O Blocs
d’entrée/sortie
Block SelectRAM répartis en 8 banques
(18 Kbits/bloc, Banque 2
Double port)
Multiplieurs dédiés
18x18 signés
Banque 3
Blocs de Logique
Configurables
1 CLB = 4 Slices
MULTIPEXEURS STATIQUES
(sélection définie pendant la configuration)
TRI
TRI_ENABLE EC OBUF Le fait de disposer de bascules
d’entrée, de sortie et de contrôle tri-
state permet de maîtriser les délais
OUT
OUT_ENABLE EC de sortie et temps de setup pour les
PAD
entrées, indépendament de la
IN
IN_Q
position géographique des IOBs, et
EC quelle que soit la qualité du routage.
IBUF
CLK
IN_ENABLE
MULTIPEXEURS STATIQUES
(sélection définie pendant la configuration)
TRI
Réglage du slew rate :
TRI_ENABLE EC OBUF
INST “NOM_IO” FAST; # defaut = slow
OUT
OUT_ENABLE EC
Réglage de la sortance :
PAD
INST “NOM_IO” DRIVE = 24; défaut = 12
IN
IN_Q
EC Choix du standart d’entrée/sortie :
IBUF INST “NOM_IO” IO_STANDARD = SSTL2_II; #
CLK
IN_ENABLE
défaut = LVTTL
Ressources de Routage
Interconnexions Générales
Interconnexions Générales
Interconnexion
directe
T0 = 0 ns
Slice Slice T3 = Z ns Slice
Switch
matrix
Capacité
Capacité
parasite
Switch Switch Switch
matrix matrix matrix