Vous êtes sur la page 1sur 8

Type de document: Tutorial Support par NI: oui Date de publication: 3 janv.

2012

Les FPGA entirement dvoils


Introduction Les outils de conception haut niveau offrent la technologie FPGA (field-programmable gate array) aux ingnieurs et scientifiques qui possdent peu, voire aucune comptence en matire de conception de matriel numrique. Que l'on utilise la programmation graphique, en C ANSI, ou VHDL, le processus de synthse est particulirement complexe et fait s'interroger sur le fonctionnement rel des FPGA. Que se passe-t-il vraiment l'intrieur des circuits intgrs pour que les programmes s'excutent au sein des blocs configurables de silicium ? Ce white paper est destin aux concepteurs qui ne sont pas spcialistes du numrique et qui souhaitent comprendre les lments fondamentaux d'un FPGA et dcouvrir les secrets de son fonctionnement. Ces informations sont toujours utiles lorsque l'on a recours des outils de conception haut niveau et peuvent faire la lumire sur le fonctionnement intrinsque d'une technologie extraordinaire. Table des matires 1. 2. 3. 4. 5. 6. 7. 8. Field Programmable Gate Arrays Bascules Tables de correspondance (LUT) Boucles cadences une seule priode Multiplicateurs et DSP slices Bloc de RAM Conclusion Ressources supplmentaires

Field Programmable Gate Arrays Chaque circuit intgr FPGA est constitu d'un nombre limit de ressources prdfinies avec des interconnexions programmables pour mettre en uvre un circuit numrique reconfigurable.

Figure n1. Les diffrents lments d'un FPGA

Dans les spcifications d'un circuit intgr FPGA vous trouverez la quantit de blocs logiques configurables, le nombre de blocs logiques de fonctions figes, comme les multiplicateurs et la taille des ressources de la mmoire telles que le bloc de RAM embarque (embedded block RAM). Un circuit intgr FPGA est compos de plusieurs autres lments, mais ceux-ci sont typiquement les plus importants lors du choix et de la comparaison des FPGA en vue d'une application spcifique. Au niveau le plus bas, les bloc logiques configurables, tels que les slices (tranches) ou les cellules logiques lmentaires, sont constitus de deux lments essentiels : des tables de correspondance (LUT ou Look-Up-Table) et des bascules Flip-Flop. Il est important de le souligner car les diverses familles des FPGA se distinguent par la faon dont les bascules et les LUT sont conditionnes ensemble. Les FPGA de la famille Virtex-II, par exemple, sont pourvus de slices avec deux LUT et deux bascules, tandis que ceux de la famille Virtex-5 ont des slices avec quatre LUT et quatre bascules. L'architecture des tables de correspondance elle-mme peut tre diffrente (quatre entres au lieu de six) mais vous trouverez de plus amples dtails sur la faon dont fonctionnent les LUT dans un autre chapitre. Le Tableau n1 rpertorie les spcifications des FPGA utiliss dans les cibles matrielles NI LabVIEW FPGA. Jusqu'ici le nombre de portes a permis de comparer les circuits intgrs FPGA avec la technologie ASIC, mais cela ne permet pas de connatre rellement le nombre de composants particuliers au sein d'un FPGA. C'est l'une des raisons pour laquelle Xilinx n'a pas spcifi le nombre de portes pour la nouvelle famille Virtex-5.

Virtex-II 1000

Virtex-II 3000

Spartan-3 1000

Spartan-3 2000

Virtex-5 LX30

Virtex-5 LX50

Virtex-5 LX85

Virtex-5 LX110

Portes

1 millions

3 millions

1 millions

2 millions

-----

-----

-----

-----

Bascules

10 240

28 672

15 360

40 960

19 200

28 800

51 840

69 120

LUT

10 240

28 672

15 360

40 960

19 200

28 800

51 840

69 120

Multiplicateur

40

96

24

40

32

48

48

64

1/8

www.ni.com

Bloc de RAM (kbit)

720

1 728

432

720

1 152

1 728

3 456

4 608

Tableau n1. Spcifications des ressources FPGA pour diffrentes familles Pour mieux comprendre ces spcifications, il convient de prendre en considration la faon dont le code est synthtis dans le circuit numrique. La synthse est le processus qui consiste traduire des langages de programmation de haut niveau en vritables mises en uvre matrielles. Pour tout morceau de code synthtisable donn, qu'il soit graphique ou textuel, il existe un schma de circuit correspondant qui dcrit la faon dont les blocs logiques devraient tre cbls les uns aux autres. Le Module LabVIEW FPGA ajoute de la logique autour de chaque fonction du diagramme avant d'envoyer le schma final au compilateur. Examinons une petite portion de code du diagramme pour voir quoi devrait ressembler le schma correspondant. La Figure n2 montre l'exemple de cinq signaux boolens transmis un ensemble de fonctions boolennes afin de calculer graphiquement une seule valeur binaire.

Figure n2. Petite portion de diagramme LabVIEW avec logique boolenne simple Dans des conditions normales (en dehors de la boucle cadence une seule priode de LabVIEW), le schma de circuit correspondant qui rsulte de la portion de diagramme de la Figure n2 ressemble la Figure n3.

Figure n3. Schma de circuit correspondant la logique boolenne de la Figure n2 Cela peut tre difficile discerner, mais il y a en fait deux branches de circuit cres en parallle. Les cinq fils noirs suprieurs aboutissent la premire branche, ce qui ajoute une bascule entre chaque opration de boolen. Les cinq fils noirs infrieurs sont relis une seconde chane de logique avec le mme nombre de bascules, qui est cre pour suivre le nombre de priodes d'horloges ncessaires afin de propager les donnes travers le circuit numrique. Au total, 12 bascules et 12 LUT sont utilises pour la mise uvre de ce schma. La branche suprieure et chaque composant sont analyss dans les paragraphes qui suivent.

Bascules

Figure n4. Symbole de la bascule Les bascules sont des registres dcalage binaires qui servent synchroniser la logique et enregistrer les tats logiques entre les priodes d'horloges. chaque front d'horloge, une bascule dclenche la valeur 1 ou 0 (VRAI ou FAUX) sur son entre et maintient cette valeur stable jusqu'au prochain front d'horloge. Dans des conditions normales, LabVIEW FPGA place une bascule entre chaque opration afin d'optimiser le temps de propagation disponible pour l'excution de chaque opration. L'exception cette rgle se produit lorsque le code est plac l'intrieur d'une boucle cadence une seule priode. Dans cette structure de boucle spcifique, les bascules sont ajoutes uniquement au dbut et la fin de l'itration de boucle, et c'est au programmeur de comprendre les considrations spcifiques au cadencement. Vous trouverez de plus amples dtails sur la faon dont le code est synthtis au sein d'une boucle cadence une seule priode dans un prochain chapitre. La Figure n5 reprsente la branche suprieure de la Figure n3, avec les bascules indiques en rouge.

2/8

www.ni.com

Figure n5. Schma reprsent avec les bascules en rouge

Tables de correspondance (LUT)

Figure n6: LUT quatre entres

La logique qui demeure dans le schma reprsent par la Figure n6 est mise en uvre grce de trs petites quantits de RAM sous la forme de LUT. Il est facile de supposer que le nombre de portes du systme dans un FPGA se rapporte au nombre de portes NON ET et NON OU dans un circuit intgr spcifique, mais, en ralit, l'ensemble de la logique combinatoire (ET, OU, NON ET, XOU, etc.) est implmente en tant que tables de vrit dans la mmoire LUT. Une table de vrit est une liste prdfinie d'tats de sorties pour chaque combinaison d'entres. (De vagues rminiscences des tableaux de Karnaugh vous reviennent peut-tre l'esprit.) Voici un bref rappel des cours de logique numrique : L'opration ET boolenne, par exemple, est illustre Figure n7 :

Figure n7. Opration ET boolenne

La table de vrit correspondante pour les deux entres d'une opration ET est reprsente Tableau n2.

Entre 2 Sortie Entre 1

Tableau n2. Table de vrit pour une opration ET boolenne

Vous pouvez aussi vous reprsenter les entres avec une indexation numrique pour tous les tats possibles des sorties, comme le montre le Tableau n3.

3/8

www.ni.com

Sortie Indice de LUT

0 (00)

1 (01)

2 (10)

3 (11)

Tableau n3. Implmentation LUT d'une table de vrit pour une opration ET boolenne Les FPGA des familles Virtex-II et Spartan-3 sont pourvus de tables de correspondance quatre entres pour mettre en uvre des tables de vrit avec jusqu' 16 combinaisons de quatre signaux d'entre. La Figure n8 est un exemple de mise en uvre de circuit quatre entres.

Figure n8. Circuit de quatre signaux d'entre correspondant la logique boolenne

Le Tableau n4 montre la table de vrit correspondante que l'on pourrait implmenter dans une LUT quatre entres.

Indice de LUT

Sortie

0 (0000)

1 (0001)

2 (0010)

3 (0011)

4 (0100)

5 (0101)

6 (0110)

7 (0111)

8 (1000)

9 (1001)

10 (1010)

11 (1011)

12 (1100)

4/8

www.ni.com

13 (1101)

14 (1110)

15 (1111)

Tableau 4. Table de vrit correspondante pour le circuit reprsent par la Figure n8

Les FPGA de la famille Virtex-5 utilisent des LUT six entres pour mettre en uvre des tables de vrit avec jusqu' 64 combinaisons de six signaux d'entre diffrents. Cela gagne en importance lorsque l'on utilise des boucles cadences une seule priode dans LabVIEW FPGA, tant donn que la logique combinatoire entre les bascules peut devenir trs complexe. Le chapitre suivant dcrit la faon dont les boucles cadences une seule priode optimisent l'utilisation des ressources FPGA dans LabVIEW.

Boucles cadences une seule priode L'exemple de code utilis dans les paragraphes prcdents supposait que le code tait plac en dehors du cas d'une boucle cadence une seule priode, et qu'un circuit annexe tait synthtis afin d'assurer l'excution par flux de donnes synchrone. La boucle cadence une seule priode est une structure particulire dans LabVIEW FPGA qui gnre un schma de circuit optimis, avec pour objectif que toutes les branches de logique puissent s'excuter dans un seul cycle d'horloge. Si une boucle cadence une seule priode est configure pour s'excuter 40 MHz, par exemple, toutes les branches de logique doivent s'excuter en l'espace d'une impulsion d'horloge de 25 ns. Si l'on plaait la logique boolenne d'un des exemples rencontrs prcdemment l'intrieur d'une boucle cadence une seule priode (voir Figure n9), le schma de circuit correspondant gnr ressemblerait la Figure n10.

Figure n9. Logique boolenne simple l'intrieur d'une boucle cadence une seule priode

Figure n10. Schma de circuit correspondant la logique boolenne de la Figure n9

Lorsqu'on la compare au schma prcdent reprsent par la Figure n3, il est vident que cette mise en uvre est beaucoup plus simple. La logique entre les bascules ncessiterait au moins deux LUT quatre entres sur un FPGA de la famille Virtex-II ou Spartan-3 (voir Figure n11).

5/8

www.ni.com

Figure n11. Une implmentation de la LUT quatre entres du schma de circuit reprsent par la Figure n10

tant donn que les FPGA de la famille Virtex-5 sont dots de LUT six entres, on pourrait mettre en uvre exactement la mme logique au sein d'une seule LUT (voir Figure n12).

Figure n12. Une implmentation de la LUT six entres du schma de circuit reprsent par la Figure n10

La boucle cadence une seule priode utilise dans cet exemple (Figure n9) est configure pour s'excuter 40 MHz, ce qui signifie que la logique entre n'importe quelle bascule donne doit s'excuter en l'espace d'une impulsion d'horloge de 25 ns. La vitesse maximale laquelle le code peut s'excuter dpend de la propagation des lectrons travers le circuit. La branche de logique avec le temps de propagation le plus long est appele le chemin critique, et il dtermine la vitesse d'horloge maximale thorique pour cette partie du circuit. Les LUT six entres sur les FPGA de la famille Virtex-5 rduisent non seulement le nombre total de LUT ncessaires la mise en uvre d'une portion de logique donne, mais aussi le temps de propagation des lectrons travers cette portion. Cela signifie qu'il est possible de configurer la mme boucle cadence une seule priode pour des frquences d'horloge plus leves en choisissant tout simplement une cible matrielle Virtex-5. Pour en savoir plus sur les avantages des FPGA de la famille Virtex-5, consultez le tutorial intitul "Les cinq principaux atouts de la technologie FPGA".

Multiplicateurs et DSP slices

Figure n13. Fonction Multiplier La tche apparemment simple qui consiste multiplier deux nombres peut s'avrer extrmement consommatrice de ressources et difficile mettre en uvre dans un circuit numrique. Pour fournir un certain cadre de rfrence, le Figure n14 reprsente le schma d'une des options d'implmentation d'un multiplicateur 4 bits par 4 bits utilisant la logique combinatoire.

6/8

www.ni.com

Figure n14. Schma d'un multiplicateur 4 bits x 4 bits

Imaginez maintenant que l'on multiplie deux nombres de 32 bits : vous obtenez au final plus de 2000 oprations pour une seule multiplication. De ce fait, les FPGA sont dots d'un circuit de multiplicateurs prconstruit pour conomiser l'utilisation des LUT et des bascules dans les applications de traitement du signal et de mathmatiques. Les FPGA des familles Virtex-II et Spartan-3 ont des multiplicateurs 18 bits x 18 bits, si bien que multiplier deux nombres de 32 bits requiert trois multiplicateurs pour une seule opration. De nombreux algorithmes de traitement du signal ncessitent de conserver le cumul des nombres multiplis, et, en consquence, les FPGA aux performances plus leves comme ceux de la famille Virtex-5 ont un circuit prconstruit multiplicateur-accumulateur. Ces blocs de traitement prconstruits, galement appels DSP48 slices, intgrent un multiplicateur 25 bits x 18 bits avec un circuit additionneur. LabVIEW FPGA, cependant, utilise la fonctionnalit des multiplicateurs de manire indpendante. Le Tableau n5 illustre les ressources de multiplicateurs pour diffrentes familles de FPGA.

Virtex-II 1000

Virtex-II 3000

Spartan-3 1000

Spartan-3 2000

Virtex-5 LX30

Virtex-5 LX50

Virtex-5 LX85

Virtex-5 LX110

Nombre de multiplicateurs

40

96

24

40

32

48

48

64

Type

18x18

18x18

18x18

18x18

DSP48 Slices

DSP48 Slices

DSP48 Slices

DSP48 Slices

Tableau n5. Ressources des multiplicateurs pour divers FPGA

Bloc de RAM Les ressources de mmoire sont une autre spcification cl prendre en compte lors du choix des FPGA. Une mmoire RAM dfinie par l'utilisateur, embarque sur le circuit intgr FPGA, est utile pour le stockage d'ensembles de donnes ou faire passer des valeurs entre des boucles parallles. Selon la famille FPGA, il convient de configurer la RAM embarque en blocs de 16 ou 36 kbits. Il y a toujours la possibilit d'implmenter les ensembles de donnes sous forme de tableau utilisant des bascules. Toutefois, les tableaux volumineux deviennent rapidement fort consommateurs de ressources de logique FPGA. Un tableau comportant 100 lments de nombres de 32 bits pourrait consommer plus de 30 % des bascules dans un FPGA de la famille Virtex-II 1000 ou occuper moins de 1 % du bloc de RAM embarque. Les algorithmes de traitement de signaux numriques ont souvent besoin de conserver la trace d'un bloc entier de donnes, ou des coefficients d'une quation complexe, et sans mmoire embarque, de nombreuses fonctions de traitement ne pourraient pas s'intgrer dans la logique configurable d'un circuit intgr FPGA. La Figure n15 reprsente les fonctions graphiques permettant de lire et d'crire dans la mmoire l'aide d'un bloc de RAM.

Figure n15. Fonctions de bloc de RAM pour lire et crire dans la mmoire Il est galement possible d'utiliser des blocs de mmoire afin de contenir des donnes de formes d'ondes priodiques pour la gnration de signaux embarque en stockant une priode complte sous la forme d'une table de valeurs et en indexant la table de manire squentielle. La frquence ultime du signal de sortie est dtermine par la vitesse laquelle les valeurs sont indexes. Cette mthode peut tre utilise afin de modifier de manire dynamique la frquence de sortie sans introduire de transition prononce dans la forme d'onde.

7/8

www.ni.com

Figure n16. Fonctions de blocs de RAM pour buffers FIFO L'excution parallle propre aux FPGA permet aux portions indpendantes de la logique matrielle d'tre commandes par diffrentes horloges. Transmettre les donnes entre des logiques fonctionnant des frquences diffrentes peut s'avrer difficile, et la mmoire embarque est frquemment utilise dans le but de lisser le transfert l'aide de buffers FIFO (first-in-first-out ou premier entr, premier sorti). Il est possible de configurer les buffers FIFO, illustrs par la Figure n16, pour qu'ils aient des tailles diffrentes et garantir que les donnes ne soient pas perdues entre des parties asynchrones du circuit intgr FPGA. Le Tableau n6 reprsente le bloc de RAM configurable par l'utilisateur embarqu dans diverses familles de FPGA.

Virtex-II 3000

Virtex-II 1000

Spartan-3 1000

Spartan-3 2000

Virtex-5 LX30

Virtex-5 LX50

Virtex-5 LX85

Virtex-5 LX110

Mmoire RAM totale (kbits)

1728

720

432

720

1152

1728

3456

4608

Taille des blocs (kbits)

16

16

16

16

36

36

36

36

Tableau n6. Ressources mmoire pour divers FPGA

Conclusion L'adoption de la technologie FPGA continue de s'tendre mesure que les outils de haut niveau voluent et dveloppent les concepts dcrits dans ce white paper. Il demeure cependant important de jeter un il l'intrieur du FPGA et d'apprcier tout ce qui se produit rellement lorsque deux diagrammes sont compils afin de s'excuter dans du silicium. Comparer et slectionner des cibles matrielles en s'appuyant sur les bascules, les tables de correspondance, les multiplicateurs et le bloc de RAM est le meilleur moyen d'effectuer le bon choix de FPGA pour une application. Comprendre l'utilisation des ressources est extrmement utile lors du dveloppement, tout particulirement lors de l'optimisation de la taille et de la vitesse. Ces lments fondamentaux n'ont pas la prtention de constituer une liste exhaustive de toutes les ressources et il y a de nombreuses autres composantes des FPGA qui n'ont pas t abordes ici. Vous pouvez approfondir vos connaissances des FPGA et de la conception de matriels numriques grce aux ressources que nous vous recommandons ci-dessous.

Ressources supplmentaires The Design Warrior's Guide to FPGAs - par Clive Maxwell Articles d'utilisateurs de la technologie FPGA Vido : introduction LabVIEW Les cinq principaux atouts de la technologie FPGA Lgislation Ce tutorial a t dvelopp par National Instruments. Bien qu'un support technique puisse tre fourni pour ce tutorial, il n'a pas t compltement test ni vrifi, et NI ne garantit pas sa qualit, ni qu'il continuera tre support pour les nouvelles versions des produits et drivers qui y sont rattachs. CE TUTORIAL EST FOURNI "EN L'TAT" SANS GARANTIE D'AUCUNE SORTE, ET EST SUJET CERTAINES RESTRICTIONS COMME PLUS SPCIFIQUEMENT DTERMINES DANS LES CONDITIONS D'UTILISATION DE NI.COM ( http://ni.com/legal/termsofuse/unitedstates/us/).

8/8

www.ni.com