Bien concevoir avec un FPGA

Transcription

Bien concevoir avec un FPGA
Mise en œuvre
CIRCUITS LOGIQUES PROGRAMMABLES
Bien concevoir avec
un FPGA
Réussir une application
à base de FPGA, c’est
respecter un certain
nombre de principes
comme une bonne connaissance de la topologie
du réseau logique
programmable et l’adoption d’une méthodologie
synchrone.
ès l’origine, les FPGA, tels que
Xilinx les a inventés, avaient la
réputation de mettre à disposition
de l’utilisateur une conception
rapide, fiable et simple. Si cette
réputation est totalement justifiée, les progrès technologiques ont permis, depuis, d’accéder à des matrices logiques programmables
de plusieurs millions de portes. Cette complexité actuelle reste absolument gérable et
permet la réalisation d’applications très performantes moyennant une bonne connaissance des ressources offertes et le respect
d’une méthodologie de conception.
Malheureusement, certains concepteurs
Par Edgard Garcia,
MVD
Edgard Garcia a créé
la société MVD,
spécialisée dans le
traitement d’images
et référence française en matière de
FPGA Xilinx. Depuis
de nombreuses
années, MVD conçoit
des FPGA en langage
VHDL pour tous types
d’applications, y
lement pour concevoir simplement et rapidement, mais aussi pour réussir leurs conceptions. La démonstration de cette méthode de
Trois modes de
configuration des LUT
En a, un générateur de fonctions
combinatoires. En b, configuration en
mémoire 16 bits à écriture synchrone.
En c, configuration en registre à décalage de longueur programmable.
compris le prototypage d’Asic.
débutants, voyant dans la souplesse du programmable une possibilité infinie de corrections d’erreurs, dédaignent toute méthode et
connaissent des échecs. Ces déboires, relevant
de leur entière responsabilité, les amènent
parfois à déclarer à tort que l’utilisation de
certains FPGA haut de gamme est difficile.
L’objet de cet article est de montrer que les
adjectifs « simple » ou « difficile » sont hors
de propos pour ce type de conception. C’est
la réussite du projet qui est facile à obtenir si
l’on suit avec sérieux et méthode un certain
nombre d’étapes.
La haute densité des matrices de Xilinx n’est
pas un obstacle car un jeu d’outils de développement accompagne efficacement
Architecture simplifiée
l’utilisateur. Les quatre règles de base
FIGURE 1
d’un « slice »
sont:
- bien connaître les caractéristiques
Un bloc de logique combinatoire est constitué
du FPGA ciblé pour assurer son adéde deux ou quatre «slices».
quation avec les besoins du projet;
- respecter une méthodologie de
conception et un style d’écriture;
- opter pour des outils de synthèse
de qualité;
- maîtriser les outils d’implantation.
PRE
Carry
D
Q
Autrement dit, il faut bien comLUT
CE
prendre les possibilités offertes par le
CLR
réseau logique programmable choisi
ainsi que les moyens à mettre en
œuvre pour en tirer le meilleur profit.
PRE
En nous appuyant sur différentes
Carry
D
Q
LUT
architectures de FPGA, nous allons
CE
décrypter les principales possibilités
CLR
mises à la disposition des utilisateurs
et les points qu’ils doivent absolument connaître et maîtriser, pas seu-
D
2
FIGURE 2
Éléments mémoire
initialisés à la
configuration
F1
F2
F3
F4
Mux
16 1
DOUT
a)
DIN
Adr/
F ou G
DEGCO
Mux
16 1
DOUT
Mux
16 1
DOUT
Enable
WR_EN
CK
DEL
b)
DIN
CE
CK
DEL
Adr
4
c)
Extrait du n°125 d’Electronique - Mai 2002
Mise en œuvre
conception sera faite sur des FPGA Xilinx. Les
familles proposées sont Spartan-II, SpartanIIE,Virtex-E et Virtex-II.
Bien connaître son sujet
Les qualités et l’organisation générale des
matrices de ces familles sont décrites dans
l’encadré ci-dessous. Nous y voyons qu’un
des modules de base est le bloc logique configurable (ou CLB), lui-même constitué de
« slices ». La figure 1 illustre l’architecture
simplifiée d’un slice. La logique combinatoire est implantée grâce aux LUT (look-up
tables) contenues dans chaque slice. Ces LUT
peuvent également être configurées comme
éléments de mémoire synchrone, simple ou
double-port de 16 bits, ou encore comme
registres à décalage de 16 bits.
Il existe donc trois modes de configuration
de ces LUT. Plus précisément, le fonctionnement en mode combinatoire est obtenu en
lisant le contenu pointé par les signaux d’entrée (figure 2a). Autrement dit, les LUT sont
des mémoires dont le contenu est initialisé
lors de la configuration du FPGA. De ce fait,
elles permettent à l’utilisateur d’en disposer
en mode «élément mémoire» dans chacun
des slices si nécessaire (figure2b). La figure
2c décrit le mode de configuration particulier
en registre à décalage de longueur programmable jusqu’à 16 bits.
Par ailleurs, une logique supplémentaire
utile pour la réalisation de fonctions arithmétiques est disponible dans chaque slice.
Grâce à ces éléments, et au style d’écriture
adapté, des modules de type accumulateur chargeable en addition/soustraction
pourront être implantés à raison de 2 bits
par slice. Le niveau de performance est
alors prédictible et il pourra dépasser les
200MHz pour des opérateurs 32 bits.
A noter que l’appel à ces éléments de
logique arithmétique, comme la propagation rapide de la retenue (figure 3),
implique l’utilisation de ressources de
routage dédiées. En effet, afin de préserver la performance de telles fonctions, la
propagation de la retenue s’effectue du
bas vers le haut via des connexions
directes entre slices adjacents. Ainsi, les
LSB sont vers le bas de la matrice et les
MSB sont vers le haut, ceci par rapport à
la vue du FPGA Xilinx dans les outils graphiques que sont le «Floorplanner» et le
«FPGA Editor».
Les bascules dans chaque slice ont aussi
des caractéristiques importantes pour le
concepteur. En particulier, elles sont ini-
Performances et densités à la carte
horloges (DLL et DCM).
- Multiplieurs câblés (Virtex-II).
Et bien d’autres possibilités
permettant d’optimiser à la fois la
performance et la densité des
fonctions logiques et/ou arithmétiques.
Comme le montre la figure ciaprès sur l’organisaOrganisation des FPGA de Xilinx
FIGURE
tion générale des FPGA
Xilinx, l’essentiel des
Les matrices de Xilinx comportent essentiellement des blocs
fonctions logiques sera
logiques configurables.
implanté en CLB (blocs
de logique configuraBanque 0
Banque 1
Blocs
ble), eux-mêmes consd’entrée/sortie
(IOB)
titués de « slices ». Un
répartis en
« slice » comprend
8 banques
deux bascules D, de la
logique combinatoire et
Banque 2
arithmétique et/ou des
fonctions de mémoire
distribuée ou de
registre à décalage.
Blocs de logique
Suivant les familles,
configurables
un CLB peut être
constitué de deux ou
Banque 3
quatre slices, c’est-àdire qu’il peut comprendre jusqu’à huit
bascules D, et, par
exemple, 128 bits de
mémoire ou des
Dispositifs de gestion des horloges
Blocs SelectRam
et buffers spécialisés
fonctions arithmésimple et double port
tiques et/ou logiques.
➜ Les différentes architectures
de FPGA Xilinx sont Spartan-II,
Spartan-IIE, Virtex-E et Virtex-II.
Leurs caractéristiques principales sont :
- Complexités allant de 15 000 à
plus de 8 millions de portes.
- Faible consommation.
- Grande souplesse d’utilisation
des entrées-sorties avec adaptation d’impédance (Virtex-II) et
configuration en mode différentiel
(Spartan-IIE, Virtex-E et Virtex-II).
- Fonctions mémoire (distribuée et
blocs de Ram).
- Dispositifs de gestion des
Extrait du n°125 d’Electronique - Mai 2002
Configuration de «slices»
pour fonctions arithmétiques
FIGURE 3
Une logique supplémentaire (Fast Carry)
permet l’implantation de fonctions de type
accumulateur chargeables en addition/soustraction.
ADD_SUB A15
B15
1 slice
1 slice
COUT
D
Q
EC
CK
CIN
A3
COUT
B3
CIN
A2
COUT
B2
CIN
A1
COUT
B1
CIN
A0
COUT
B0
CIN
D
Q
EC
CK
D
Q
EC
CK
D
Q
EC
CK
D
Q
EC
CK
Validation horloge
tialisées systématiquement à la mise sous
tension (par défaut à la valeur ‘0’), et sont
utilisables indépendamment de la logique
combinatoire disponible dans le même slice.
En outre, chaque bascule bénéficie de broches
de contrôle telles que : entrée dédiée de
validation de l’horloge (Clock enable) permettant d’activer ou de suspendre le fonctionnement de chacune des bascules individuellement, et ceci sans avoir à insérer de la
logique combinatoire sur le chemin de l’horloge ; entrées de « set » et de « reset » synchrones ou asynchrones. La polarité des
signaux d’horloge, de Clock enable, de set et
de reset est programmable pour chacune des
bascules.Autrement dit, ces signaux peuvent
être individuellement actifs au niveau haut ou
au niveau bas.
Les outils de synthèse appropriés permettront de tirer profit de ces détails d’architecture à partir du code source VHDL (ou Verilog).
Maîtriser la propagation
des signaux
Une attention particulière doit être apportée à la distribution des horloges, élément
crucial dans tout projet d’électronique numérique. La plupart des FPGA, et notamment
ceux de Xilinx, disposent de ressources (buffers et routage associé) qui permettent une
3
Mise en œuvre
Ressources de routage pour les horloges
FIGURE 4
En a, les buffers d’horloge et les ressources de routage associées. En b, des dispositifs de gestion des
horloges permettent d’adapter la fréquence d’horloge. En c, diagramme simplifié d’un dispositif de gestion
de la phase et de la fréquence de l’horloge.
Arbre
d’horloge
Délai de distribution de l’horloge = 0 ns
(compensé par l’asservissement de la DLL)
CLKDLL
IPAD
(dédié)
I
BUFG
O
I
CLKIN
IBUFG
(dédié)
CLKFB
Délai de distribution
de l’horloge
RST
CLK0
CLK90
CLK180
CLK270
O
BUFG
CLK2X
CLKDV
LOCKED
(lié à la taille du FPGA)
a)
b)
Mux
CLK0
Arbre
d’horloge
BUFG
CLKIN
Délais élémentaires
(40 à 60 ps)
Comparateur
de phase
séquentiel
CLKFB
LOCKED
c)
4
de garantir une gigue ne
dépassant pas 100ps dans
le pire des cas.
Dans les FPGA Xilinx, les
ressources de routage sont
fortement structurées. Elles
sont constituées de plusieurs types d’interconnexions (directes, générales…) et de longues lignes
de métal horizontales et
verticales. Ces dernières
vont permettre le routage
efficace de certains types
de signaux.
Pour résumer, nous pourrions dire que le flot de
données principal doit circuler en horizontal (par
rapport à la vue graphique
de la matrice dans les outils
Xilinx), et que les signaux
de contrôle doivent être distribués en vertical pour
optimiser le routage. Cette
optimisation engendrera
une meilleure performance,
Les règles de positionnement des E/S
FIGURE 5
Pour obtenir des performances optimales, il est important de
respecter les lois d’implantation des bus principaux et des
entrées/sorties.
Entrées/sorties auxiliaires et signaux de contrôle
Propagation des données
MSB
Bus de données
répartition d’horloge parfaite, c’est-à-dire
sans dérive (skew) ; un point particulièrement important pour les conceptions synchrones. Le déroulement des événements est
le suivant : les outils de synthèse détectent
automatiquement les sources d’horloge, et
infèrent les buffers spécialisés et les ressources de routage associées (figure 4a). A
la charge du concepteur de choisir une
matrice offrant un nombre de tampons d’horloge suffisant pour son application.
Les dispositifs de gestion des horloges permettent l’implantation aisée et efficace de
fonctions comme la multiplication et la division de la fréquence, l’ajustement statique
ou dynamique de la phase ou la synthèse de
fréquence. Ces deux dernières caractéristiques sont propres aux FPGA Virtex-II. Grâce
à cette technologie entièrement numérique,
le concepteur peut faire appel à toutes ces
fonctions de gestion d’horloge, sans avoir à se
soucier des filtres de boucles et autres critères habituellement rencontrés avec les technologies analogiques (figure 4b et 4c). La gestion de la phase et de la fréquence d’horloge
s’effectue en utilisant un grand nombre de
lignes à retard (50ps environ), ce qui permet
MSB
Signaux
de
contrôle
LSB
Bus de données
Arbre d’horloge disposant
de connexions directes
vers toutes les bascules
et autres éléments séquenciels
de même qu’une réduction des temps
de placement/routage. La consommation sera également réduite car les
charges capacitives inhérentes au routage seront minimales.
Cependant, pour garantir un routage
efficace, rien de tel que de suivre
quelques règles simples pour définir
le brochage du FPGA. En effet, un
bon positionnement des blocs d’entrées/sorties —généralement décidé
avant l’implantation sur le FPGA pour
paralléliser la réalisation des lignes
de cuivre— donne au logiciel toutes
facilités pour utiliser les ressources
de routage optimales pour chacun des
signaux. En outre, si la méthode d’implantation des fonctions arithmétiques
et assimilées, telles que compteurs,
comparateurs, etc., est correctement
respectée (position verticale avec LSB
vers le bas, MSB vers le haut du
FPGA), les bus principaux d’entrées/sorties suivront la même loi de
positionnement. Les entrées/sorties
restantes seront placées de manière
intuitive en tenant compte des
connexions entre les divers modules.
Si la figure 5 présente ces principes de
positionnement pour les entrées/sorties, précisons les caractéristiques de
ces blocs d’E/S. La règle est toujours
la même : plus vous connaîtrez les
possibilités offertes, meilleures seront
les performances.
L’échange de données avec la circuiterie externe (microprocesseur, DSP,
LSB
Entrées/sorties auxiliaires et signaux de contrôle
Extrait du n°125 d’Electronique - Mai 2002
Mise en œuvre
mémoires rapides, convertisseurs
Méthodologie de développement:
Configuration des blocs d’E/S
FIGURE 6
A/N et N/A) est souvent un critère
vous avez dit synchrone?
Les
blocs
d’entrées/sorties
(IOB)
comportent
des
important dans la perspective des
bascules sur les chemins d’entrée, de sortie et de
Il est important de rappeler quelques notions
performances à atteindre. Les
contrôle trois-états, bascules utilisées, si nécessaire,
de base sur la méthodologie à adopter dans
blocs d’entrées/sorties disposent
par les outils de synthèse.
le cadre de conception d’électronique numéde bascules sur les chemins d’enrique. La citation suivante donne une idée
trée, de sortie et de contrôle troisMultiplexeurs statiques
assez précise des ennuis encourus si une cerétats. Les outils de synthèse les
(sélection définie pendant la configuration)
taine méthodologie de conception n’est pas
plus sophistiqués permettent l’utiprise en compte: «Les développements asynlisation systématique (lorsque cela
TRI
chrones peuvent ruiner votre projet, votre cars’applique) de ces bascules, garanEC
TRI_ENABLE
rière professionnelle et même votre santé. Refutissant ainsi les temps d’établissez simplement de concevoir en asynchrone…»
sement et de «clock-to-out» puisLes conceptions asynchrones présentent faciqu’ils deviennent indépendants
OUT
lement des défauts de fonctionnement aléadu placement et donc du routage.
PAD
EC
OBUF
toires. Certaines d’entre elles manifesteront
Enfin, les FPGA de la famille VirOUT_ENABLE
des problèmes de fonctionnement en temtex-II comprennent des registres
pérature, d’autres liés au vieillissement du
doubles sur chacun de leurs trois
IN
composant ou autres paramètres externes.
chemins, autorisant ainsi la réaIN_Q
La figure 7a montre un des montages source
lisation d’interfaces DDR (Double
EC
IBUF
d’asynchronismes et donc de fonctionnement
Data Rate) pour la communicaaléatoire communément appelé « Gated
tion avec les mémoires SDram du
CLK
clock». Dans cet exemple, l’horloge est génémême nom ou autres dispositifs
IN_ENABLE
rée à partir d’une fonction combinatoire de
du même type (figure 6).
plusieurs signaux. La sortie de cette fonction
La configuration électrique des
présentera des parasites qui pourront être
blocs d’E/S donne la possibilité
d’ajuster la raideur des fronts sur les étages port B, sans que le concepteur ait à se sou- interprétés par certaines bascules comme
de sortie, la sortance, les seuils de commuta- cier de la mise en parallèle ou de la sériali- des fronts d’horloge; d’où un fonctionnement
non prédictible des bascules. De plus, dans ce
tion et les standards de communication sation.
(LVTTL, LVCmos, SSTL, PCI, LVDS…). Par Enfin, dans certains cas, la souplesse de la type de montage, le signal de sortie de la
ailleurs, la famille Virtex-II offre d’adapter configuration et des signaux de contrôle de logique combinatoire sera normalement routé
en impédance aussi bien les entrées que les ces blocs Ram autorise l’implantation de par des ressources d’interconnexions génésorties, sans avoir à insérer les traditionnelles fonctions logiques complexes avec une effi- rales. Le temps de propagation jusqu’à l’enrésistances d’adaptation. Résultat : un gain cacité surprenante. Pour plus d’informa- trée des bascules présentera un décalage
de place important sur les circuits imprimés tions, se référer aux articles sur l’implanta- (skew) difficilement contrôlable. Ceci augtion de machines d’états en blocs Ram et mentera encore le risque de fonctionnement
et une grande souplesse.
sur un convolueur bidimensionnel en matrice aléatoire. Dans l’exemple illustré sur la figure
Savoir tirer un bon parti des blocs
9 x 9 fonctionnant à 200 MHz (Electronique 7b, une fonction combinatoire va effectuer
de Ram
n°103, p.69 et n°119, p.58, et sur le site un «set» (ou un «reset») asynchrone d’une
Les familles Spartan-II, Spartan-IIE et Virtex- www.mvd-fpga.com).
ou plusieurs bascules. Comme dans toute
E possèdent des blocs de mémoire (Ram
Quelques pièges de l’asynchronisme
double-port) à écriture et lecture synchrones
FIGURE 7
de 4Kbits. Leur nombre va de 4 blocs pour la
En a, ne pas générer une horloge à partir d’une fonction combinatoire. En b, ne pas générer
matrice 2S15, à 96 blocs pour le FPGA
un signal de contrôle à partir d’une fonction combinatoire.
V1000E. De son côté, la série Virtex-II dispose de blocs de Ram d’une capacité de
18Kbits chacun. Ils sont entre 4 et 200 suivant
COMB
?
le FPGA. Chacun de ces blocs de 18Kbits est
?
BUFG
«accompagné» d’un multiplieur 18x18 bits
signés. Chaque bloc est configurable indivi?
duellement et ceci sur chacun des deux ports
SET ou RESET
A et B. Pour les capacités de 4Kbits, les disasynchrone
a)
b)
positions possibles sont: 4Kx1, 2Kx2, 1Kx4,
COMB
?
512x8 et 256x16. Ceux de la série Virtex-II
acceptent: 16Kx1, 8Kx2, 4Kx4, 2Kx9, 1Kx18
A
et 512x36.
COMB
B
Outre l’efficacité d’implantation de fonctions
C
A
mémoires et/ou Fifo, cette architecture perCOMB
B
met également la conversion automatique
C
et instantanée de la largeur des bus entrants
et sortants. Ainsi, il est possible par exemple
de recevoir (et d’envoyer) un flot de données série à 180MHz sur le port A, alors que
les données seront exploitées à une fréquence moyenne de 5 MHz et 36 bits sur le
Extrait du n°125 d’Electronique - Mai 2002
5
Mise en œuvre
Ram
Ram
fonction combinatoire, le signal de
quelques recommandations utiles
Quelques conseils pour une conception FIGURE 8
sortie ne sera généralement pas
pour une conception synchrone. Les
synchrone
exempt de parasites, et des remises à
bascules et autres éléments séquenLe respect de ces quelques principes assure que tous les
«1» intempestives sont à prévoir.
cés reçoivent l’horloge précisément au
éléments reçoivent les signaux nécessaires (dont l’horloge) à
Afin d’éviter ces problèmes très diffimême moment, car celle-ci est disl’exact moment prévu.
cilement maîtrisables par des techtribuée par un arbre spécialisé, grâce
Buffer global (BUFG)
niques d’implantation complexes et
au buffer global, lui-même automa(automatiquement inséré
coûteuses, il est important d’adopter
tiquement inféré par l’outil de synpar les outils de synthèse)
une méthodologie adéquate. Un dévethèse sur l’analyse du code. Le set
loppement fiable doit pouvoir être
(ou reset) asynchrone n’est pas utilisé
reproduit de manière totalement préen cours de fonctionnement, mais
dictible et indépendamment de la
seulement pour l’initialisation lors
technologie utilisée qui évolue tous
de la mise sous tension.
les jours. Il doit présenter un foncLorsque deux modules travaillant
tionnement sans faille quelle que soit
dans des domaines d’horloges difféla fréquence de fonctionnement, du
rents échangent des données, le
continu jusqu’à une fréquence limite,
concepteur devra prendre les préBroche spécialisée
dans toute la plage active de l’applicautions nécessaires pour s’assurer de
(imposée par le concepteur
cation.
la validité de l’interprétation des donou librement choisie par
l’outil de placement)
Il se trouve que cette reproductibilité
nées par l’élément récepteur. La
Arbre d’horloge
est particulièrement aisée à obtenir:
figure 9 expose l’une des manières
(automatiquement connecté en sortie du BUFG
il suffit pour cela de concevoir avec
de faire communiquer entre elles
et garantissant un délai identique sur chacune
une méthodologie synchrone. Un
deux portions de circuit séquencées
des destinations)
développement (ou une partie de
par des horloges asynchrones. Dans
développement) synchrone est entiècet exemple, les échanges de donrement séquencé par une horloge. Celle-ci loges associés), de manière à garantir la simul- nées entre les deux domaines d’horloge s’efest distribuée sur des ressources spéciali- tanéité parfaite des fronts sur tous les élé- fectuent par l’intermédiaire d’une mémoire
sées (buffer global ou BUFG, et arbres d’hor- ments destinataires. La figure 8 illustre Fifo. L’horloge CK2 est utilisée comme horloge
Echanges de données sur deux
horloges (CK1 et CK2)
FIGURE 9
Dans cet exemple, l’échange des données entre les zones du
circuit, contrôlées l’une par CK1 et l’autre par CK2, s’effectue
par l’intermédiaire d’une mémoire Fifo.
COMB
CK 1
BUFG
CK 2
BUFG
D
Q
RD_CK
RD ENA
Fifo
WR ENA
WR_CK
d’écriture, alors que la lecture est séquencée
par CK1. Les signaux « autorisation d’écriture» (WR-ENA) et «autorisation de lecture»
(RD-ENA) sont respectivement générés à
partir des horloges CK2 et CK1. L’asynchronisme entre les deux horloges est absorbé
dans la Fifo. Sa profondeur devra prendre
en compte les différences de cadence sur
chacun des deux ports.
De nombreux autres cas de figure peuvent
être envisagés. En tout état de cause, le passage d’informations d’un domaine d’horloge
vers un autre devra faire l’objet d’une attention particulière pour assurer l’intégrité du
transfert. ■
6
Extrait du n°125 d’Electronique - Mai 2002