You are on page 1of 64

Ce document a été fabriqué par PDFmail (Copyright RTE Software)

http://www.pdfmail.com

Circuits Logiques Programmables

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 1


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

PAL Programmable Logic Array

• Réseau de portes ET, OU, NON


• PAL n*r*k
§ k fonctions logiques
§ n variables d ’entrée
§ r termes produits
§ composition : n inverseurs, r portes ET, k portes OU
• Différents types de PAL
§ réseau ET fixe, réseau OU programmable
§ réseau ET programmable, réseau OU fixe
§ réseau ET programmable, réseau OU programmable

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 2


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

PAL Programmable Logic Array

5 Volt 5 Volt 5 Volt 5 Volt

B
Connexion Programmable
(Flash EPROM)
C

Terme Terme Terme Terme


Produit Produit Produit Produit

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 3


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

PAL Programmable Logic Array

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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 4


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

PAL Combinatoire

Macro-Cellule

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 5


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

PAL Synchrone

Macro-Cellule

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 6


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

PAL Combinatoire et Synchrone

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 7


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

PAL22V10

Macro-Cellule

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 8


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

PAL22V10

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 9


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

CPLD Complex Programmable Logic Device

Macro-Cellule
Macro-Cellule
Bloc
Macro-Cellule
Logique

E/S Matrice d’Interconnexion E/S

Bloc Bloc
Logique Logique

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 10


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Max7000 (7064)

PIA (Programmable Interconnect Array) permet de connecter les macrocells entres elles

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 11


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Avantages et inconvénients des architectures CPLD


Avantages :
D Q
• Vitesse de fonctionnement prédictible
• Routage aisé et automatique
(ressources abondantes)
• Outils de développement simples D Q

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

• Complexité limitée à quelques centaines de bascules


• Possibilités limitées d’évolution du design après avoir figé le brochage
26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 12
Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

FPGA Field Programmable Gate Array


E/S
Bloc Bloc Bloc Bloc Bloc Bloc
Logique Logique Logique Logique Logique Logique

Bloc Bloc Bloc Bloc Bloc Bloc


Logique Logique Logique Logique Logique Logique

Bloc Bloc Bloc Bloc Bloc Bloc


Logique Logique Logique Logique Logique Logique

E/S E/S
Bloc Bloc Bloc Bloc Bloc Bloc
Logique Logique Logique Logique Logique Logique

Bloc Bloc Bloc Bloc Bloc Bloc


Logique Logique Logique Logique Logique Logique

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

FPGA Xilinx anciennes générations


Blocs d'entrée/sortie (IOB)
Blocs bi-directionnels comprenant :
Buffers, bascules et latch d'entrée,
buffer tri-state et bascule de sortie…

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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 14


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Architectures Virtex et Spartan-II

Banque 0 Banque 1 I/O Blocs


d’entrée/sortie
(IOBs)
Block SelectRAM répartis en 8 banques
(4 Kbits/bloc,
Banque 2
Double port)

Blocs de Logique
Configurables
(CLB) de capacité double
1 CLB = 2 Slices
Banque 3

ü Le coeur de logique de Virtex et


Spartan-II s’alimente en 2.5V
2 x 2 Digital Delay Locked Loop (DLL)
ü Les différentes banques d’I/Os
peuvent être alimentées en 2.5 ou 3.3v et 2 x 2 buffers d’horloges (BUFG)
ü I/Os compatibles 5v (si Vcco = 3.3v)

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 15


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

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

ü Le coeur de logique de Virtex-E et


Spartan-II-E s’alimente en 1.8V
ü Les différentes banques d’I/Os peuvent 2 x 4 Digital Delay Locked Loop (DLL)
être alimentées en 1.5, 1.8, 2.5 ou 3.3v et 2 x 2 buffers d’horloges
ü I/Os non directement compatibles 5v

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 16


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

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

ü Le coeur de logique de Virtex-II


s’alimente en 1.5V
ü Les différentes banques d’I/Os De 4 à 12 DCM (Digital Clock Managers)
peuvent être alimentées en 1.5, 1.8, et 8 x 2 buffers d’horloges
2.5 ou 3.3v

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 17


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Familles FPGA XILINX

15K 50K 200K 600K 1M 3.2M 8M

9 composants
Virtex

6 composants
Spartan-II

11 composants
Virtex-E

8 composants
Spartan-IIE

11 composants
Virtex-II

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 18


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

En résumé qu’est ce qu’un FPGA XILINX ?


• Un FPGA peut être comparé à un ASIC « en kit »
• Différentes familles permettent d’effectuer le choix idéal pour le design
envisagé, en fonction de la densité et de la performance souhaitée.
• Toutes les familles de FPGA Xilinx disposent en particulier de ressources
logiques organisées en SLICES :
• Ressources de logique combinatoire et registres en grand nombre
• Ressources spécifiques pour implémentation de fonctions arithmétiques
• Possibilités de bus « tri-state » internes
• Mémoire distribuée (Slices) et blocs de RAM dédiée
• D’autres éléments indispensable sont également disponibles :
• Blocs d’entrée/sortie bi-directionnels équipés de bascules et permettant
différents standards de communication (LVTTL, LVCMOS, LVDS sur les
familles les plus évoluées…)
• Arbres de distribution d’horloges
• Ressources de routage hiérarchisées : interconnexions directes,
générales, longues lignes horizontales (bus internes) et verticales (signaux
de contrôle).

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 19


Structure Simplifiée du Slice

ð Chaque slice dispose de quatre sorties


• Deux sorties de registres
+ deux sorties combinatoires
ö.88747.84 38
• Deux BUFTs (buffers tri-state) sont
associés à chaque CLB. Ils sont
accessibles par chacune des sorties du
CLB

ð Les fonctions combinatoires et


bascules sont utilisables
indépendament

ð Une logique arithmétique dédiée


permet l’implémentation optimisée de
fonctions telles que :
• Additionneurs, soustracteurs,
comparateurs, accumulateurs…
• Mais aussi de multiplieurs,
multiplieurs/accumulateurs…

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 20


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Structure Simplifiée du Slice

ð Chaque slice dispose de quatre sorties


• Deux sorties de registres
+ deux sorties combinatoires
• Deux BUFTs (buffers tri-state) sont
associés à chaque CLB. Ils sont
accessibles par chacune des sorties du D PRE
CLB LUT Carry D
CE
Q

ð Les fonctions combinatoires et CLR

bascules sont utilisables


indépendament

ð Une logique arithmétique dédiée D PRE


LUT Carry
permet l’implémentation optimisée de D
CE
Q
CE
fonctions telles que :
• Additionneurs, soustracteurs, CLR

comparateurs, accumulateurs…
• Mais aussi de multiplieurs,
multiplieurs/accumulateurs…

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 21


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

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)

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 22


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Table Look-Up (LUT)

ð Les générateurs de Générateur de fonction F ou G


fonction à quatre entrées
sont en fait des tables de CE0

vérité de 16 bits (LUT). F1 CE1

F2
Eléments
DECOD
ð La combinaison des F3 4 --> 16
mémoire
entrées commande un F4 initialisés à la MUX DOUT

multiplexeur de 16 vers 1. configuration


ENABLE
16 ==> 1

ð Il s’agit donc bien d’un


fonctionnement purement
combinatoire. CE15
DELAI

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 23


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Table Look-Up (LUT)


ð Chaque LUT permet de réaliser une fonction combinatoire pouvant avoir
jusqu’à 4 entrées.
ð Aussi appelées Générateurs de Fonctions (FGs): La complexité des
fonctions combinatoires est limitée seulement par le nombre d’entrées

ð Le délai est constant quelle que soit la fonction implémentée.


A B C D F
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 1
Combinatorial Logic 0 1 0 0 1
A 0 1 0 1 1
B . . .
F
1 1 0 0 0
C
D 1 1 0 1 0
1 1 1 0 0
1 1 1 1 1

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 24


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Mémoire distribuée à écriture synchrone


ð Un dispositif de registres
d’entrée et de signaux de Générateur de fonction F ou G
contrôle permettent de
transformer les LUTs en
mémoire de 16 bits, à écriture DIN CE0
synchrone 4
ADR CE1

ð Nombre de slices occupés F ou G


suivant la taille de la mémoire : DECOD
4 --> 16
16 Octets = 4 Slices
64 Octets = 16 Slices MUX DOUT
256 Octets = 64 Slices 16 --> 1
ENABLE
ð La combinaison des entrées
WR_EN
commande un multiplexeur de
16 vers 1 pour la lecture.
ð Les chemins d’écriture et de
lecture sont totalement CK DELAI
CE15

indépendants.

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 25


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Exemple: Mémoire distribuée 16 Octets = 4 Slices

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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 26


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Exemple: Mémoire distribuée 16 Octets = 4 Slices

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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 27


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Exemple: Mémoire distribuée 16 Octets = 4 Slices

library IEEE;
use IEEE.std_logic_1164.all;

entity MEMO_TRI is -- Module mémoire synchrone 16 x 8 bits.


port ( ADR : in std_logic_vector(3 downto 0);
DIN : in std_logic_vector(7 downto 0);
WR, READ_B, CK : in std_logic;
DOUT : out std_logic_vector(7 downto 0));
end MEMO_TRI;

architecture ARCHI of MEMO_TRI is


signal INT : std_logic_vector(7 downto 0);
component RAM16x1s
port ( A3, A2, A1, A0, D, WE, WCLK : in std_logic;
O : out std_logic);
end component;
begin
GENE : for I in DIN'range generate
UA : RAM16x1S port map (
A3 => ADR(3), A2 => ADR(2), A1 => ADR(1), A0 => ADR(0),
D => DIN(I), WE => WR, WCLK => CK, O => INT(I));
DOUT(I) <= INT(I) when READ_B ='0' else 'Z'; -- sortie 3 états
end generate;
end ARCHI;

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 28


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Mémoire distribuée double port

Générateur de fonction F ou G
ð En séparant les adresses de
lecture et celles d’écriture, il est DIN CE0

possible de lire à une adresse Adr F CE1

pendant une écriture à une 4


adresse indépendante. DECOD
4 --> 16

ð Dans ce cas, deux générateurs DOUT


MUX
de fonctions sont utilisés pour 16 --> 1
une mémoire double port de 16 ENABLE

bits. WR_EN

ð 16 Octets = 8 slices
CE15
CK DELAI
Adr G
4

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 29


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Registres à décalage de longueur programmable

ð Par la mise en cascade des 16 Générateur de fonction F ou G


éléments de mémorisation, la
LUT peut être utilisée en
DIN
registre à décalage (DASR).

ð Le nombre de coups d’horloge


de retard est programmable
dynamiquement entre 1 et 16.
MUX DOUT
ð Les primitives Xilinx de 16 --> 1
registres à décalage
implémentés en LUTs sont CE
baptisées SRL16.
CK DELAI

ð Ces primitives sont en principe


automatiquement inférées par
les outils de synthèse.
Adr
Note : Les bascules des SRL ne
4
peuvent pas être resettées

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 30


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Exemple de LUT utilisés en Shift Register

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

ð Les SRL16 peuvent être utilisés pour créer des


retards (NOPs)
q Cet exemple utilise 64 LUTs (32 slices) au lieu de 576 flip-
flops (288 slices)

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 31


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Structure Simplifiée du Slice


ð Chaque slice dispose de quatre
sorties
• Deux sorties de registres
+ deux sorties combinatoires
• Deux BUFTs (buffers tri-state) sont
associés à chaque CLB. Ils sont
accessibles par chacune des sorties
D PRE
du CLB LUT Carry D Q
CE

ð Les fonctions combinatoires et CLR

bascules sont utilisables


indépendament

ð Une logique arithmétique dédiée


D PRE
permet l’implémentation optimisée LUT Carry
D Q
CE
de fonctions telles que : CE

• Additionneurs, soustracteurs, CLR


comparateurs, accumulateurs…
• Mais aussi de multiplieurs,
multiplieurs/accumulateurs…

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 32


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Logique arithmétique (Fast Carry)


Logique programmable et fonctions arithmétiques :
Approche Xilinx : • Un dispositif spécialisé de calcul
et de propagation de retenue est
A15 COUT
associé à chaque générateur de
S15 = f (A15, B15, CIN)
B15 CIN
fonction.
• Un slice peut donc être configuré
Fonction de 3 entrées comme une ALU 2 bits.
• La propagation de retenue s’effectue
A3 COUT
du bas vers le haut, entre Slices voisins
S3 = f (A3, B3, CIN)
B3 • Temps de propagation de la retenue
CIN
1 slice entre 2 Slices :
A2 COUT

S2 = f (A2, B2, CIN) VIRTEX-E - 7 : ~ 50 ps / bit


B2 CIN
• Temps de propagation de la retenue
A1 COUT
S1 = f (A1, B1, CIN) pour un additionneur ou soustracteur 32
B1 CIN bits :
1 slice
A0 COUT
50 ps x 32 = 1,6 ns
S0 = f (A0, B0, CIN)
B0 CIN

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 33


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Logique arithmétique (Fast Carry)


Addition/soustraction avec le même nombre de slices

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

S2 = f (A2, B2, CIN, ADD_SUB)


B2 CIN

A1 COUT
S1 = f (A1, B1, CIN, ADD_SUB)
B1 CIN

A0 COUT

S0 = f (A0, B0, CIN, ADD_SUB)


B0 CIN

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 34


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Logique arithmétique (Fast Carry)


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

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;

architecture Behavioral of DEMO is


Signal DIFFERENCE, SOMME: std_logic_vector(13 downto 0);
begin

SOMME <= A + B;
DIFFERENCE <= A - B;
S <= SOMME when ADD_SUB = '1' else DIFFERENCE;

--S <= (A + B) when ADD_SUB = '1' else (A - B);

--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;

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 35


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 36


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Multiplexeurs dédiés

ð En outre, chaque Slice dispose de


multiplexeurs dédiés permettant
d’augmenter la capacité logique sans avoir
recours aux ressources de routage.

Voir MUXF5, MUXF6,…

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 37


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Multiplexeurs dédiés

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity muxN_1 is generic(N: integer := 8);


Port ( Din : in std_logic_vector(N-1 downto 0);
sel : in integer range 0 to N-1;
S : out std_logic);
end muxN_1;

architecture Behavioral of muxN_1 is

begin

S <= Din(sel);

end Behavioral;

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 38


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 39


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Fonctions évoluées de traitement du signal

• Blocs de mémoire synchrone simple et double port :

• Blocs de 4 Kbits : sur familles Virtex, Virtex-E, Spartan-II et Spartan-II-E.

• Blocs de 18 Kbits : sur famille Virtex-II


• Ces blocs de mémoire permettent d’implémenter efficacement des FIFOs,
des lignes à retard digitales, mais aussi des fonctions séquentielles
complexes et rapides (ex : machines d’états, séquenceurs…)

• Multiplieurs câblés 18x18 bits signés : sur famille Virtex-II

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 40


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Fonctions évoluées de traitement du signal


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

ü Le coeur de logique de Virtex-II


s’alimente en 1.5V
ü Les différentes banques d’I/Os De 4 à 12 DCM (Digital Clock Managers)
peuvent être alimentées en 1.5, 1.8, et 8 x 2 buffers d’horloges
2.5 ou 3.3v

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 41


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Architecture d’un Blocs de RAM simple port

Diagramme simplifié de la configuration simple port


(4 Kbits/bloc pour Spartan II, Virtex, ...)

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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 42


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Architecture d’un Blocs de RAM simple port

Diagramme simplifié de la configuration simple port


(18 Kbits/bloc pour Virtex-II )

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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 43


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Block Select RAM (simple ou double port entrées et sorties séparées)


DI

ADDR ð Mémoire à écriture et lecture synchrones, par


RAMB4_S# blocs de 4 ou 18Kbits suivant les familles
WE
EN ð Double port par construction
RST DO
CLK • Chaque port (A et B) supporte les écritures et
lectures synchrones.
• Horloges indépendantes sur les deux ports
DIA

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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 44


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Block Select RAM (simple ou double port entrées et sorties séparées)


DI
ð Configuration indépendante des largeurs de bus sur
ADDR chacun des deux ports
RAMB4_S#
WE
EN
RST DO
Autres familles Virtex-II
CLK
4K x 1 16K x 1
2K x 2 8K x 2
DIA
1K x 4 4K x 4
ADDRA 512 x 8 2K x 9
256 x 16 1K x 18
WEA 512 x 36
ENA
RSTA DOA
CLKA
ð Conversion automatique et instantannée de largeur
de bus, sérialiseurs, paraléliseurs…
DIB
RAMB4_S#_S#
ADDRB Ex1 : Port A organisé en 8 bits, Port B en 16 bits :
RAMB4_S8_S16 (Spartan-II)
WEB
ENB Ex2 : Port A organisé en 4 bits, Port B en 18 bits :
RSTB DOB RAMB16_S4_S18 (Virtex-II)
CLKB

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 45


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Block Select RAM : CONFIGURATION 128 x 32

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>

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 46


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Block Select RAM Utilisation en machines d’états, séquenceurs…

ð Utilisé en mode ROM (dévalidation des


REBOUCLAGE DES ETATS ENCODES EN BINAIRE cycles d’écriture) un bloc de RAM peut
implémenter très efficacement des
DI machines d’états et/ou séquenceurs.
ADDR
ENTREES
ð Exemples :
RAMB4_S8
WE • Configuration 512 x 8 :
ENABLE EN
SET/RESET RST DO
ETATS
ET
§ 32 états, 4 entrées + 3 sorties
SORTIES
CLOCK
CLK § 16 états, 5 entrées + 4 sorties
• Les signaux RST et EN peuvent être
utilisés pour augmenter le nombre
d’entrées disponible

Exemple de fichier NCF d’initialisation de la mémoire à la configuration:


INST U1_BRAM INIT_00 = 282828285c281d28282828285c351d28282828285c281d28282828285c351d00;
INST U1_BRAM INIT_01 = 284040402840404028404040284040402840404028404040284040402840401d;
INST U1_BRAM INIT_02 = 6835683568686868683568356868682835283528282828283528352828282828;
……...
INST U1_BRAM INIT_0f = f4d4f4d4d49cd4f4d4d4d4d4d4d4d4d400000000d4d4d4d4d4d4d4d4d4d4d4d4;

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 47


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Distribution d’horloges

w L’utilisation d’un BUFG impose le choix des broches d’entrée spécifiques.

Arbre d’horloge disposant de


connexions directes vers toutes
les bascules et autres éléments
séquentiels

IPAD BUFG
(dédié)

Délai de distribution de l’horloge

(lié à la taille du FPGA)

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 48


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Distribution d’horloges: DLL et DMC

Suivant les familles, des fonctions hardware de haut niveau sont


disponibles :

• Digital Delay Locked Loop (DLL) : sur familles Virtex, Virtex-E,


Spartan-II et Spartan-II-E.
• Les DLL permettent de multiplier et/ou diviser les fréquences
d’horloge, de générer des horloges multi-phases, de compenser
le délai interne de propagation…
• Digital Clock Manager (DCM) : sur famille Virtex-II.
• Les DCM permettent entre autres la synthèse de fréquence, le
réglage statique ou dynamique de phase des horloges…

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 50


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

DLL Delay-Locked Loop

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 51


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Distribution d’horloges: DLL et DMC

• 4 sorties de DLL sont utilisables simultanément, parmi les 6 disponibles


• La sortie LOCKED passe à ‘1’ pour indiquer que la DCM est verrouillée
• Rapports de division pour la sortie CLKDV : 1.5, 2, 2.5, 3, 4, 5, 8 ou 16
ð Attribut à placer dans le fichier UCF : INST U1 CLKDV = 2.5;

• L’entrée d’horloge doit être stable pour que la DLL fonctionne


correctement. Tout changement de la fréquence d’entrée doit etre
accompagné d’un Reset de la DCM, afin de provoquer une séquence de
remise en phase (indépendament de l’état de la sortie LOCKED).

• En VHDL, les DLL doivent etre instanciées avec les composants


associés (IBUFG, BUFG)

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 52


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Code VHDL pour l’utilisation de CLKDLL


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
HORLOGE
use IEEE.STD_LOGIC_ARITH.ALL; CLKDLL
IBUFG BUFG
use IEEE.STD_LOGIC_UNSIGNED.ALL;
library UNISIM; ICK CLKIN CLK0 CK
CLK90
use UNISIM.VComponents.all; CLK180
CLK270
entity HORLOGE is
Port ( ICK : in std_logic; CLKFB CLK2X

CK : out std_logic); CLKDV


end HORLOGE; RST
LOCKED
architecture Behavioral of HORLOGE is
signal CLKIN, CLK0, CLKFB, GND : std_logic;
begin
GND <= '0';
U1 : IBUFG port map (I => ICK, O => CLKIN);
U2 : CLKDLL port map (
CLKIN => CLKIN, CLKFB => CLKFB, RST => GND, CLK0 => CLK0, CLK90 => open,
CLK180 => open, CLK270 => open, CLK2X => open, CLKDV => open, LOCKED => open );
U3 : BUFG port map (I => CLK0, O => CLKFB);
CK <= CLKFB;
end Behavioral;

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 53


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Distribution d’horloges: DLL et DMC

• Digital Delay Locked Loop :


• Exemple d’utilisation en multiplieur de fréquence par 4

Multiplication de fréquence : 33MHz x 4


BUFG non indispensable en Virtex-E
33MHZ
CLKIN CLK0 Si le 66 MHZ n’est pas utilisé dans le design
CLK90
IBUFG CLKFB CLK180
CLK270
66MHZ
CLK2X CLKIN CLK0
CLK90
CLKDV BUFG CLKFB CLK180
CLK270
RST LOCKED 132MHZ
CLK2X

CLKDV BUFG

RST LOCKED

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 54


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Blocs d’entrée/sortie: IOB

Toutes les familles présentent au


minimum les caractéristiques
MULTIPEXEURS STATIQUES suivantes d’IOB :
(sélection définie pendant la configuration)

ð 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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 55


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Fonctions évoluées de traitement du signal


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

ü Le coeur de logique de Virtex-II


s’alimente en 1.5V
ü Les différentes banques d’I/Os De 4 à 12 DCM (Digital Clock Managers)
peuvent être alimentées en 1.5, 1.8, et 8 x 2 buffers d’horloges
2.5 ou 3.3v

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 56


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Blocs d’entrée/sortie: IOB

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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 57


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Blocs d’entrée/sortie: IOB

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

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 58


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Blocs d’entrée/sortie: IOB

• 16 standards supportés par


Spartan-II

• LVDS, BLVDS et LVPECL


supportés par SPARTAN-IIE et
Virtex-E

• Les entrées VREF


permettent de définir une
tension de seuil d’entrée
personnalisée pour chacune
des 8 banques d’IOs.

• Chaque banque dispose de


son propre VCCO.

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 59


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Ressources de Routage

ð Parmi les différentes ressources de routage :


• Interconnexions directes entre éléments voisins : charge capacitive très
faible, délai de routage quasiment nul.
• Arbres d’horloges : charge capacitive relativement importante, mais délai
réduit grâce aux buffers spécialisés (BUFG), et skew limité à +/- 100 ps.
• Tous les arbres d’horloges peuvent accéder à l’entrée d’horloge des
éléments clockés (Bascules, Blocs de RAM synchrones…) avec un délai
uniforme sur toute la surface de la puce.
• Longues lignes horizontales : optimisées pour la distribution des bus de
données. Sont accédées directement par les buffers Tri-state (BUFT).
• Longues lignes verticales : optimisées pour la distribution des signaux de
controle, en particulier pour les fonctions logiques distribuées en colonnes
(compteurs, opérateurs arithmétiques, banques de registres…)
• Interconnexions générales : nombreuses et souples, permettent de
connecter virtuellement deux points quelconques du FPGA, avec un délai
d’interconnexion lié à la mise en série d’éléments RC.

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 60


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Interconnexions Générales

ð Les interconnexions générales sont constituées de courtes lignes


métalliques qui peuvent être reliées entre elles par l’intermédiaire de
matrices de switches (elles mêmes constituées de transistors rendus
passants ou non, suivant le routage).
ð Les interconnexions générales agissent comme des séries de liaisons
R-C :
• Les transistors des matrices de switches ont un effet résistif
• Les pistes métalliques ont une capacité parasite
• Le cumul de ces deux effets résistifs et capacitifs induit un délai dans la
connexion ainsi routée.
• Plus grand sera le nombre de matrices de switches traversées, plus
important sera le délai sur la liaison.

ð En familles SPARTAN-II/E et VIRTEX /E, certaines matrices de


switches disposent de buffers, afin de réduire l’impact des effets R-C.
Sur VIRTEX-II, toutes les matrices de switches sont bufferisées.

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 61


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Interconnexions Générales

Switch Switch Switch


matrix matrix matrix

Interconnexion
directe
T0 = 0 ns
Slice Slice T3 = Z ns Slice

Switch
matrix

Slice Slice Slice


T1 = X ns T2 = Y ns

Capacité
Capacité
parasite
Switch Switch Switch
matrix matrix matrix

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 62


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Bus de données internes et signaux de controle


Longues lignes
horizontales
Buffers Tri-
Tri-state

Slice Slice Slice

Slice Slice Slice

Longues lignes verticales

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 63


Ce document a été fabriqué par PDFmail (Copyright RTE Software)
http://www.pdfmail.com

Ressources de routage hiérarchisées

Entrées/sorties auxiliaires et signaux de contrôle

MSB Propagation des données MSB

Bus de données Signaux Bus de données


de
contrôle
LSB LSB

Entrées/sorties auxiliaires et signaux de contrôle

26/10/2009 Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 64

You might also like