Cours_FPGA_2009

64
Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT 26/10/2009 1 Circuits Logiques Programmables Ce document a été fabriqué par PDFmail (Copyright RTE Software) http://www.pdfmail.com

description

An interesting course of FPGA

Transcript of Cours_FPGA_2009

Page 1: Cours_FPGA_2009

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

Circuits Logiques Programmables

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

Page 2: Cours_FPGA_2009

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

PAL PAL Programmable Logic ArrayProgrammable 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

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

Page 3: Cours_FPGA_2009

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

PAL PAL Programmable Logic ArrayProgrammable Logic Array

A

B

C

TermeProduit

TermeProduit

TermeProduit

TermeProduit

Connexion Programmable (Flash EPROM)

5 Volt 5 Volt 5 Volt 5 Volt

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

Page 4: Cours_FPGA_2009

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

PAL PAL Programmable Logic ArrayProgrammable Logic Array

A

B

C

F1

F2

F3

F1 = AB + A ’B ’C + A ’B ’

F2 = A ’B ’C + BC + A ’B ’

F3 = AB + A ’B ’

= connexion

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

Page 5: Cours_FPGA_2009

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

PAL CombinatoirePAL Combinatoire

Macro-Cellule

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

Page 6: Cours_FPGA_2009

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

PAL SynchronePAL Synchrone

Macro-Cellule

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

Page 7: Cours_FPGA_2009

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

PAL Combinatoire et SynchronePAL Combinatoire et Synchrone

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

Page 8: Cours_FPGA_2009

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

Macro-Cellule

PAL22V10PAL22V10

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

Page 9: Cours_FPGA_2009

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

PAL22V10PAL22V10

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

Page 10: Cours_FPGA_2009

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

CPLD CPLD Complex Programmable Logic DeviceComplex Programmable Logic Device

E/S E/SMatrice d’Interconnexion

Bloc Logique

Bloc Logique

Bloc Logique

Macro-Cellule

Macro-Cellule

Macro-Cellule

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

Page 11: Cours_FPGA_2009

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

Max7000 (7064)Max7000 (7064)

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

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

Page 12: Cours_FPGA_2009

Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT26/10/2009 12

Avantages et inconvAvantages et inconvéénients des architectures CPLDnients des architectures CPLD

Avantages :

• Vitesse de fonctionnement prédictible• Routage aisé et automatique

(ressources abondantes)• Outils de développement simples

et économiques• Capacité logique équivalente :

De 4 à 20 PALs 22V10

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

D Q

D Q

D Q

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

Page 13: Cours_FPGA_2009

Circuits Logiques Programmables J. KHALLAAYOUNE, INPT-RABAT26/10/2009 13

FPGA FPGA Field Programmable Gate ArrayField Programmable Gate Array

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

BlocLogique

E/S E/S

E/S

E/S

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

Page 14: Cours_FPGA_2009

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

FPGA Xilinx anciennes gFPGA Xilinx anciennes géénnéérationsrationsBlocs 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 logiqueconfigurables (CLB)comprenant logique combinatoireet registres.Chaque CLB peut également être configuré en ALU cascadable 2 bits,ou en mémoire synchrone,simple ou double port ultra rapide1 CLB = 1Slice

Réseau d'interconnexionshierarchisé programmable- Longues lignes verticales poursignaux de contrôle- Longues lignes horizontales pour bus de données- Interconnexions générales- Interconnexions directes - Arbres d’horloges

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

Page 15: Cours_FPGA_2009

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

Architectures Virtex et SpartanArchitectures Virtex et Spartan--IIII

2 x 2 Digital Delay Locked Loop (DLL)et 2 x 2 buffers d’horloges (BUFG)

I/O Blocs d’entrée/sortie

(IOBs)répartis en 8 banques

Blocs de LogiqueConfigurables(CLB) de capacité double1 CLB = 2 Slices

Banque 0 Banque 1

Banque 2

Banque 3

Block SelectRAM(4 Kbits/bloc,Double port)

ü Le coeur de logique de Virtex et Spartan-II s’alimente en 2.5V

ü Les différentes banques d’I/Os peuvent être alimentées en 2.5 ou 3.3v

ü I/Os compatibles 5v (si Vcco = 3.3v)

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

Page 16: Cours_FPGA_2009

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

Architecture VirtexArchitecture Virtex--EE

I/O Blocs d’entrée/sortie

(IOBs)répartis en 8 banques

Modes différentiels (LVDS)

ü Le coeur de logique de Virtex-E et Spartan-II-E s’alimente en 1.8V

ü Les différentes banques d’I/Os peuvent être alimentées en 1.5, 1.8, 2.5 ou 3.3v

ü I/Os non directement compatibles 5v

2 x 4 Digital Delay Locked Loop (DLL)et 2 x 2 buffers d’horloges

Blocs de LogiqueConfigurables(CLB) de capacité double1 CLB = 2 Slices

Block SelectRAM(4 Kbits/bloc,Double port)

Banque 0 Banque 1

Banque 2

Banque 3

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

Page 17: Cours_FPGA_2009

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

Architecture VirtexArchitecture Virtex--IIII

ü Le coeur de logique de Virtex-II s’alimente en 1.5V

ü Les différentes banques d’I/Os peuvent être alimentées en 1.5, 1.8, 2.5 ou 3.3v

I/O Blocs d’entrée/sortie

répartis en 8 banques

De 4 à 12 DCM (Digital Clock Managers) et 8 x 2 buffers d’horloges

Banque 0 Banque 1

Blocs de LogiqueConfigurables1 CLB = 4 Slices

Block SelectRAM(18 Kbits/bloc,Double port)

Multiplieurs dédiés 18x18 signés

Banque 2

Banque 3

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

Page 18: Cours_FPGA_2009

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

Familles FPGA XILINXFamilles FPGA XILINX

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

VirtexVirtex--EE 11 composants11 composants

SpartanSpartan--IIII 6 composants6 composants

VirtexVirtex--IIII 11 composants11 composants

VirtexVirtex 9 composants9 composants

SpartanSpartan--IIEIIE 8 composants8 composants

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

Page 19: Cours_FPGA_2009

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

En rEn réésumsuméé ququ’’est ce quest ce qu’’un FPGA XILINX ?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).

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

Page 20: Cours_FPGA_2009

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

Structure SimplifiStructure Simplifiéée du Slicee 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 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…

LUT Carry D QCE

PRE

CLR

LUT CarryD QCE

PRE

CLR

LUT CarryD

QCE

PRE

CLR

LUT Carry DQCE

PRE

CLR

Macro-Cellule

Macro-Cellule

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

Page 21: Cours_FPGA_2009

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

Structure SimplifiStructure Simplifiéée du Slicee 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 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…

LUT Carry D QCE

PRE

CLR

LUT CarryD QCE

PRE

CLR

LUT CarryD

QCE

PRE

CLR

LUT Carry DQCE

PRE

CLR

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

Page 22: Cours_FPGA_2009

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

BasculeBascule

ð Toutes les bascules sont configurables en Latch transparent

ð Polarité programmable pour tous les signaux de contrôle : horloge, enable, set et reset.

ð SET et RESET synchrones ou asynchrones

ð Les signaux de contrôle sont communs pour les 2 bascules d’un même slice, mais peuvent être de polarité différente

ð Validation de l’horloge sur toutes les bascules des CLBs et IOBs. (Evite l’insertion de délais de logique combinatoire et de routage)

D Q

CK

01D

CE

CK

SET (synchrone ou asynchrone)

RESET (synchrone ou asynchrone)

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

Page 23: Cours_FPGA_2009

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

Table LookTable Look--Up (LUT)Up (LUT)

DOUT

DECOD4 --> 16

ENABLE

CE0

DELAI

CE1

CE15

MUX16 ==> 1

Générateur de fonction F ou G

F1F2F3F4

Eléments mémoire

initialisés à la configuration

ð Les générateurs de fonction à quatre entrées sont en fait des tables de vérité de 16 bits (LUT).

ð La combinaison des entrées commande un multiplexeur de 16 vers 1.

ð Il s’agit donc bien d’un fonctionnement purement combinatoire.

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

Page 24: Cours_FPGA_2009

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

Table LookTable Look--Up (LUT)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.

Combinatorial Logic

AB

CD

F

A B C D F

0 0 0 0 00 0 0 1 00 0 1 0 00 0 1 1 10 1 0 0 10 1 0 1 1

. . .1 1 0 0 01 1 0 1 01 1 1 0 01 1 1 1 1

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

Page 25: Cours_FPGA_2009

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

MMéémoire distribumoire distribuéée e àà éécriture synchronecriture synchrone

ADRF ou G

4DIN

WR_EN

CK

DECOD4 --> 16

ENABLE

CE0

DELAI

CE1

CE15

DOUTMUX16 --> 1

Générateur de fonction F ou Gð Un dispositif de registres

d’entrée et de signaux de contrôle permettent de transformer les LUTs enmémoire de 16 bits, à écriture synchrone

ð Nombre de slices occupés suivant la taille de la mémoire :16 Octets = 4 Slices 64 Octets = 16 Slices 256 Octets = 64 Slices

ð La combinaison des entrées commande un multiplexeur de 16 vers 1 pour la lecture.

ð Les chemins d’écriture et de lecture sont totalement indépendants.

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

Page 26: Cours_FPGA_2009

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

INT(3)

INT(2)

INT(1)

INT(0)

ADR(3)ADR(2)ADR(1)ADR(0)DIN(2)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(1)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(0)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(0)

WRCK

DOUT(3)

DOUT(2)

DOUT(1)

DOUT(0)

A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA6 A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA2

A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA5 A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA1

A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA4 A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA0

READ_B

A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA7 A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA3ADR(3)ADR(2)ADR(1)ADR(0)DIN(2)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(1)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(0)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(0)

WRCK

DOUT(7)

DOUT(6)

DOUT(5)

DOUT(4)

INT(7)

INT(6)

INT(5)

INT(4)

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

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

Page 27: Cours_FPGA_2009

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

INT(3)

INT(2)

INT(1)

INT(0)

ADR(3)ADR(2)ADR(1)ADR(0)DIN(3)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(2)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(1)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(0)

WRCK

DOUT(3)

DOUT(2)

DOUT(1)

DOUT(0)

A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA6 A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA2

A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA5 A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA1

A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA4 A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA0

READ_B

A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA7 A3A2A1A0DWEWCLK RAM16x1S

O

GENE/UA3ADR(3)ADR(2)ADR(1)ADR(0)DIN(7)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(6)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(5)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(4)

WRCK

DOUT(7)

DOUT(6)

DOUT(5)

DOUT(4)

INT(7)

INT(6)

INT(5)

INT(4)

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

SLICESLICE

SLICESLICE

SLICESLICE

SLICESLICE

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

Page 28: Cours_FPGA_2009

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

Exemple: MExemple: Méémoire distribumoire distribuéée e 16 Octets = 4 Slices16 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 issignal 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;beginGENE : for I in DIN'range generateUA : 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;

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

Page 29: Cours_FPGA_2009

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

MMéémoire distribumoire distribuéée double porte double port

ð En séparant les adresses de lecture et celles d’écriture, il est possible de lire à une adresse pendant une écriture à une adresse indépendante.

ð Dans ce cas, deux générateurs de fonctions sont utilisés pour une mémoire double port de 16 bits.

ð 16 Octets = 8 slices

Générateur de fonction F ou G

DOUT

DECOD4 --> 16

ENABLE

CE0

DELAI

CE1

CE15

MUX16 --> 1

Adr F4

DIN

WR_EN

CKAdr G

4

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

Page 30: Cours_FPGA_2009

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

Registres Registres àà ddéécalage de longueur programmablecalage de longueur programmable

ð Par la mise en cascade des 16 éléments de mémorisation, la LUT peut être utilisée en registre à décalage (DASR).

ð Le nombre de coups d’horloge de retard est programmable dynamiquement entre 1 et 16.

ð Les primitives Xilinx de registres à décalage implémentés en LUTs sont baptisées SRL16.

ð Ces primitives sont en principe automatiquement inférées par les outils de synthèse.Note : Les bascules des SRL ne peuvent pas être resettées

DOUT

DIN

CE

CK

MUX16 --> 1

Générateur de fonction F ou G

Adr4

DELAI

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

Page 31: Cours_FPGA_2009

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

Exemple de LUT utilisExemple de LUT utiliséés en Shift Registers en Shift Register

ð 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)

12 Cycles

64Operation A

4 Cycles 8 Cycles

Operation B

3 Cycles

Operation C

64

12 Cycles

Equilibrage des retards sur les deux voies

9 Cycles

Operation D - NOP

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

Page 32: Cours_FPGA_2009

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

Structure SimplifiStructure Simplifiéée du Slicee 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 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…

LUT Carry D QCE

PRE

CLR

LUT CarryD QCE

PRE

CLR

LUT CarryD

QCE

PRE

CLR

LUT Carry DQCE

PRE

CLR

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

Page 33: Cours_FPGA_2009

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

Logique arithmLogique arithméétique (Fast Carry)tique (Fast Carry)Logique programmable et fonctions arithmétiques :Approche Xilinx : • Un dispositif spécialisé de calcul

et de propagation de retenue est associé à chaque générateur de fonction.

• Un slice peut donc être configurécomme une ALU 2 bits.

• La propagation de retenue s’effectue du bas vers le haut, entre Slices voisins

• Temps de propagation de la retenue entre 2 Slices :VIRTEX-E - 7 : ~ 50 ps / bit

• Temps de propagation de la retenue pour un additionneur ou soustracteur 32 bits :

50 ps x 32 = 1,6 ns S0 = f (A0, B0, CIN)

S1 = f (A1, B1, CIN)

S2 = f (A2, B2, CIN)

S3 = f (A3, B3, CIN)

S15 = f (A15, B15, CIN)

A0B0

A1B1

A2B2

A3B3

A15B15

Fonction de 3 entrées

CIN

COUT

CIN

COUT

CIN

CIN

COUT

COUT

COUT

CIN

1 slice

1 slice

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

Page 34: Cours_FPGA_2009

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

Logique arithmLogique arithméétique (Fast Carry)tique (Fast Carry)Addition/soustraction avec le même nombre de slices

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

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

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

S3 = f (A3, B3, CIN, ADD_SUB)

S15 = f (A15, B15, CIN, ADD_SUB)

A0B0

A1B1

A2B2

A3B3

A15B15

Fonction de 4 entrées

CIN

COUT

CIN

COUT

CIN

CIN

COUT

COUT

COUT

CIN

ADD_SUB

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

Page 35: Cours_FPGA_2009

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

Logique arithmLogique arithméétique (Fast Carry)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 isPort ( 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 isSignal 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;

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

Page 36: Cours_FPGA_2009

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

Logique arithmLogique arithméétiquetiqueImplémentation d’un accumulateur en addition/soustraction

A0B0

A1B1

A2B2

A3B3

A15B15

CIN

COUT

CIN

COUT

CIN

CIN

COUT

COUT

COUT

CIN

ADD_SUB

D QECCK

D QECCK

D QECCK

D QECCK

D QECCK

1 slice

1 slice

CLOCKVALIDATION

ADD_SUB = 1:A = A + B

ADD_SUB = 0:A = A - B

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

Page 37: Cours_FPGA_2009

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

Multiplexeurs dMultiplexeurs déédidiééss

ð 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,…

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

Page 38: Cours_FPGA_2009

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

Multiplexeurs dMultiplexeurs déédidiééss

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;

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

Page 39: Cours_FPGA_2009

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

Multiplexeurs dMultiplexeurs déédidiéés: 8 s: 8 àà 11

LUT1Din0

Din1

Sel0

LUT2Din2

Din3

Sel0

MUXF5

G = Din0 Sel0\ + Din1 Sel1

F = Din2 Sel0\ + Din3 Sel1

LUT1Din4

Din5

Sel0

LUT2Din6

Din7

Sel0

MUXF5

G = Din4 Sel0\ + Din5 Sel1

F = Din6 Sel0\ + Din7 Sel1

MUXF6Sel1

Sel1

Sel2

SLICE1SLICE1

SLICE2SLICE2

SS

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

Page 40: Cours_FPGA_2009

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

Fonctions Fonctions éévoluvoluéées de traitement du signales 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

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

Page 41: Cours_FPGA_2009

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

Fonctions Fonctions éévoluvoluéées de traitement du signales de traitement du signal

ü Le coeur de logique de Virtex-II s’alimente en 1.5V

ü Les différentes banques d’I/Os peuvent être alimentées en 1.5, 1.8, 2.5 ou 3.3v

I/O Blocs d’entrée/sortie

répartis en 8 banques

De 4 à 12 DCM (Digital Clock Managers) et 8 x 2 buffers d’horloges

Banque 0 Banque 1

Blocs de LogiqueConfigurables1 CLB = 4 Slices

Block SelectRAM(18 Kbits/bloc,Double port)

Multiplieurs dédiés 18x18 signés

Banque 2

Banque 3

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

Page 42: Cours_FPGA_2009

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

Architecture dArchitecture d’’un Blocs de RAM simple portun Blocs de RAM simple port

Diagramme simplifié de la configuration simple port(4 Kbits/bloc pour Spartan II, Virtex, ...)

DECOD

ENABLE

MATRICEMEMOIRE

CONFIGURABLE

4Kx12Kx21Kx4512x8

256x16

ADDR

8 à 12 bits

WE

EN

DI1 à 16 bits

CERST

REG

MUX

DO1 à 16

RST(Reset synchrone)

CLK DELAI

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

Page 43: Cours_FPGA_2009

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

Architecture dArchitecture d’’un Blocs de RAM simple portun Blocs de RAM simple port

Diagramme simplifié de la configuration simple port(18 Kbits/bloc pour Virtex-II )

DECOD

ENABLE

MATRICEMEMOIRE

CONFIGURABLE

16Kx18Kx24Kx42Kx91Kx18512x36

ADDR

9 à 14 bits

WE

EN

DI1 à 36 bits

CESET/RST

REG

MUX

DO1 à 36

RST ou SSR(Synchronous Set Reset)

CLK DELAI

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

Page 44: Cours_FPGA_2009

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

Block Select RAMBlock Select RAM (simple ou double port entr(simple ou double port entréées et sorties ses et sorties sééparparéées)es)

ð Mémoire à écriture et lecture synchrones, par blocs de 4 ou 18Kbits suivant les familles

ð Double port par construction• Chaque port (A et B) supporte les écritures et

lectures synchrones.• Horloges indépendantes sur les deux ports

ð Set/Reset synchrone de l’étage de sortieð Entrée de validation des opérations de lecture

et d’écriture (ENA et ENB)

ð Contenu initialisé pendant la configuration• Permet l’implémentation de machines d’états,

séquenceurs…

ð Supportent les bits de parité• 1 bit de parité par octet

DI

ADDR

WEENRST DOCLK

RAMB4_S#

DIA

ADDRA

WEAENARSTA DOACLKA

DIB

ADDRB

WEBENBRSTB DOBCLKB

RAMB4_S#_S#

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

Page 45: Cours_FPGA_2009

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

Block Select RAMBlock Select RAM (simple ou double port entr(simple ou double port entréées et sorties ses et sorties sééparparéées)es)

DI

ADDR

WEENRST DOCLK

RAMB4_S#

DIA

ADDRA

WEAENARSTA DOACLKA

DIB

ADDRB

WEBENBRSTB DOBCLKB

RAMB4_S#_S#

ð Configuration indépendante des largeurs de bus sur chacun des deux ports

Autres familles Virtex-II

4K x 1 16K x 12K x 2 8K x 21K x 4 4K x 4512 x 8 2K x 9256 x 16 1K x 18

512 x 36

ð Conversion automatique et instantannée de largeur de bus, sérialiseurs, paraléliseurs…

Ex1 : Port A organisé en 8 bits, Port B en 16 bits : RAMB4_S8_S16 (Spartan-II)

Ex2 : Port A organisé en 4 bits, Port B en 18 bits :RAMB16_S4_S18 (Virtex-II)

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

Page 46: Cours_FPGA_2009

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

RAMB4_S16_S16WEENRST

CLKVCC, ADDR<6:0>

DI<31:16>

GND, ADDR<6:0>DI<15:0>

DO<31:16>

DO<15:0>

WEAENARSTA DOA<15:0>

CLKAADDRA<7:0>DIA<15:0>

Organisation 256 x 16

WEBENBRSTB DOB<15:0>CLKB

ADDRB<7:0>DIB<15:0>

Organisation 256 x 16

Block Select RAM Block Select RAM : CONFIGURATION 128 x 32: CONFIGURATION 128 x 32

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

Page 47: Cours_FPGA_2009

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

Block Select RAMBlock Select RAM Utilisation en machines dUtilisation en machines d’é’états, stats, sééquenceursquenceurs……

ð Utilisé en mode ROM (dévalidation des cycles d’écriture) un bloc de RAM peut implémenter très efficacement des machines d’états et/ou séquenceurs.

ð Exemples :• Configuration 512 x 8 :

§ 32 états, 4 entrées + 3 sorties§ 16 états, 5 entrées + 4 sorties

• Les signaux RST et EN peuvent être utilisés pour augmenter le nombre d’entrées disponible

DI

ADDR

WEENRST DOCLK

RAMB4_S8ENTREES

ENABLE

SET/RESET

CLOCK

ETATSETSORTIES

REBOUCLAGE DES ETATS ENCODES EN BINAIRE

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;

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

Page 48: Cours_FPGA_2009

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

Distribution dDistribution d’’horlogeshorloges

IPAD(dédié)

BUFG

Arbre d’horloge disposant de connexions directes vers toutes les bascules et autres éléments

séquentiels

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

Délai de distribution de l’horloge

(lié à la taille du FPGA)

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

Page 50: Cours_FPGA_2009

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

Distribution dDistribution d’’horloges: DLL et DMChorloges: DLL et DMC

Suivant les familles, des fonctions hardware de haut niveau sontdisponibles :

• 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…

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

Page 51: Cours_FPGA_2009

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

DLL DLL DelayDelay--Locked LoopLocked Loop

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

Page 52: Cours_FPGA_2009

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

Distribution dDistribution d’’horloges: DLL et DMChorloges: 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)

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

Page 53: Cours_FPGA_2009

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

Code VHDL pour lCode VHDL pour l’’utilisation de CLKDLLutilisation de CLKDLLlibrary IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

library UNISIM;

use UNISIM.VComponents.all;

entity HORLOGE is

Port ( ICK : in std_logic;

CK : out std_logic);

end HORLOGE;

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;

IBUFG BUFGCLKDLL

CLKIN

CLKFB

RST

CLK0CLK90

CLK180CLK270

CLK2X

CLKDV

LOCKED

ICK CK

HORLOGE

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

Page 54: Cours_FPGA_2009

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

Distribution dDistribution d’’horloges: DLL et DMChorloges: DLL et DMC

• Digital Delay Locked Loop :

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

Multiplication de fréquence : 33MHz x 4

CLKIN CLK0CLK90

CLKFB CLK180CLK270

CLK2X

CLKDV

RST LOCKED

IBUFG

BUFG

33MHZ

66MHZCLKIN CLK0

CLK90CLKFB CLK180

CLK270

CLK2X

CLKDV

RST LOCKED

BUFG

132MHZ

BUFG non indispensable en Virtex-ESi le 66 MHZ n’est pas utilisé dans le design

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

Page 55: Cours_FPGA_2009

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

Blocs dBlocs d’’entrentréée/sortie: IOBe/sortie: IOB

Toutes les familles présentent au minimum les caractéristiques suivantes d’IOB :

ð Etage de sortie :• Sortie directe ou à registre avec signal

de validation d’horloge• Contrôle Tri-state direct ou à registre

ð Etage d’entrée :• Entrée directe et par l’intermédiaire d’un

registre

ð Tous les registres sont intialisés à la fin de la configuration.• Valeur par défaut : 0

ð Entrée SET et RESET synchrone ou asynchrone pour tous les registres

TRITRI_ENABLE

OUTOUT_ENABLE

IN IN_Q

CLK IN_ENABLE

PAD

IBUF

OBUFEC

EC

EC

MULTIPEXEURS STATIQUES(sélection définie pendant la configuration)

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

Page 56: Cours_FPGA_2009

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

Fonctions Fonctions éévoluvoluéées de traitement du signales de traitement du signal

ü Le coeur de logique de Virtex-II s’alimente en 1.5V

ü Les différentes banques d’I/Os peuvent être alimentées en 1.5, 1.8, 2.5 ou 3.3v

I/O Blocs d’entrée/sortie

répartis en 8 banques

De 4 à 12 DCM (Digital Clock Managers) et 8 x 2 buffers d’horloges

Banque 0 Banque 1

Blocs de LogiqueConfigurables1 CLB = 4 Slices

Block SelectRAM(18 Kbits/bloc,Double port)

Multiplieurs dédiés 18x18 signés

Banque 2

Banque 3

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

Page 57: Cours_FPGA_2009

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

Blocs dBlocs d’’entrentréée/sortie: IOBe/sortie: IOB

TRITRI_ENABLE

OUTOUT_ENABLE

IN IN_Q

CLK IN_ENABLE

PAD

IBUF

OBUFEC

EC

EC

MULTIPEXEURS STATIQUES(sélection définie pendant la configuration)

Le fait de disposer de bascules d’entrée, de sortie et de contrôle tri-state permet de maîtriser les délais de sortie et temps de setup pour les entrées, indépendament de la position géographique des IOBs, et quelle que soit la qualité du routage.

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

Page 58: Cours_FPGA_2009

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

Blocs dBlocs d’’entrentréée/sortie: IOBe/sortie: IOB

TRITRI_ENABLE

OUTOUT_ENABLE

IN IN_Q

CLK IN_ENABLE

PAD

IBUF

OBUFEC

EC

EC

MULTIPEXEURS STATIQUES(sélection définie pendant la configuration)

Réglage du slew rate :

INST “NOM_IO” FAST; # defaut = slow

Réglage de la sortance :

INST “NOM_IO” DRIVE = 24; défaut = 12

Choix du standart d’entrée/sortie :

INST “NOM_IO” IO_STANDARD = SSTL2_II; # défaut = LVTTL

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

Page 59: Cours_FPGA_2009

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

Blocs dBlocs d’’entrentréée/sortie: IOBe/sortie: IOB

• 16 standards supportés par Spartan-II

• LVDS, BLVDS et LVPECLsupportés par SPARTAN-IIE et Virtex-E

• Les entrées VREF permettent de définir unetension de seuil d’entréepersonnalisée pour chacunedes 8 banques d’IOs.

• Chaque banque dispose deson propre VCCO.

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

Page 60: Cours_FPGA_2009

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

Ressources de RoutageRessources 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.

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

Page 61: Cours_FPGA_2009

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

Interconnexions GInterconnexions Géénnééralesrales

ð 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.

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

Page 62: Cours_FPGA_2009

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

Interconnexions GInterconnexions Géénnééralesrales

SwitchSwitchmatrixmatrix

SwitchSwitchmatrixmatrix

SwitchSwitchmatrixmatrix

SwitchSwitchmatrixmatrix

SwitchSwitchmatrixmatrix

SwitchSwitchmatrixmatrix

SwitchSwitchmatrixmatrix

SliceSlice

SliceSlice

SliceSlice SliceSlice

SliceSlice SliceSlice

CapacitCapacitééparasiteparasite

T0 = 0 nsT0 = 0 ns

T1 = X nsT1 = X ns T2 = Y nsT2 = Y ns

T3 = Z nsT3 = Z ns

InterconnexionInterconnexiondirectedirecte

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

Page 63: Cours_FPGA_2009

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

Bus de donnBus de donnéées internes et signaux de controlees internes et signaux de controle

SliceSlice

SliceSlice

SliceSlice SliceSlice

SliceSlice SliceSlice

Longues lignes Longues lignes horizontaleshorizontales

Buffers TriBuffers Tri--statestate

Longues lignes verticalesLongues lignes verticales

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

Page 64: Cours_FPGA_2009

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

Ressources de routage hiRessources de routage hiéérarchisrarchisééeses

Propagation des données

Signauxde

contrôle

MSB

Bus de données

LSB

MSB

Bus de données

LSB

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

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

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