show menu


Les utilisateurs connectés peuvent télécharger ce cours en pdf


Cours: Introduction aux FPGAs (avec la famille de FPGAs Xilinx 7-series)

Posté par Florent -

Introduction

Le premier Field Programmable Gate Array (FPGA) commercialement viable, appelé XC2064, a été inventé en 1985 par Ross Freeman et Bernard Vonderschmitt, les co-fondateurs de Xilinx.

Ross Freeman and Bernard Vonderschmitt les deux inventeurs du FPGA

Figure 1 - Ross Freeman (à gauche) and Bernard Vonderschmitt (à droite),
les deux inventeurs du FPGA

De nos jours, les FPGAs sont utilisés dans de nombreuses application telles que aérospatial et défense, automobile, broadcast, électronique quand public, data centers, industriel, médical ou télécommunications. Les leaders sur le marché des FPGAs sont Xilinx, Altera, Lattice et Microsemi. Le marché des FPGAs est estime à 9.88 milliard de dollars pour 2020.

Qu’est-ce qu’un FPGA?

Un FPGA est un circuit intégré (Integrated Circuit (IC) en anglais) pour lequel la fonctionnalité peut être définie après la fabrication (sur le terrain - “in the field” en anglais) en utilisant des langages de description hardware (ex: VHDL, Verilog). Les FPGAs actuels peuvent être reconfigure (reprogrammer) à tout moment.  Les FPGAs Xilinx 7series stockent leurs configurations personnalisées dans des bascules internes de types SRAM.

 

Structure conceptuelle d’un FPGA

Figure 2 – Structure conceptuelle d’un FPGA

Un FPGA est un tableau 2 dimensions principalement formes de Blocs Logiques Configurables (Configurable Logic Blocks (CLBs) en anglais), de blocs d’entrées/sorties (Input Output Blocs (IOB) en anglais) et d’interrupteurs programmables (programmable switches en anglais). La Figure 2 montre une structure conceptuelle d’un FPGA.

Un CLB peut être configure (programme) pour réaliser une fonction basique [1]. Les CLBs sont connectes les uns aux autres par des interrupteurs. Tous les éléments d’un FPGA sont configures en utilisant un Bitstream (qui est généralement un fichier .bit).

Structure des Blocs Logiques Configurables (CLB) des FPGAs Xilinx 7series

Les CLBs sont les principales ressources logiques pour implémenter des circuits aussi bien séquentiels que combinatoires. Chaque élément CLB est connecté à une matrice d’interrupteurs pour accéder à la matrice de routage principale. Un élément CLB contient deux paires de slices[2]. Les slices sont les éléments fondamentaux d’un FPGA. Ils contiennent les LUTs (Look Up Table) et les registres. Dans les FPGAs Xilinx 7series, il y a deux types de slices: SLICEM et SLICEL. Toutes les slices contiennent quatre LUTs à 6 entrées, huit registres, des wide multiplexers et une carry chain. La Figure 3 montre la structure des CLB des FPGAs Xilinx 7series.

Schéma d’un CLB

Figure 3 – Schéma d’un CLB (source:[2])

Look-Up Table (LUT)

Une Look-Up Table (LUT) peut implémenter toutes les fonctions correspondant à son nombre d’entrées et peut être cascade à d’autres pour réaliser des fonctions plus complexes [3]. Une terminologie courante est de faire référence à un LUT avec n entrées par une n-LUT. Par exemple, une LUT avec 6 entrées sera nommée 6-LUT.

Les FPGAs Xilinx 7series utilisent des 6-LUT avec six entrées indépendantes (A1 à A6) et deux sorties indépendantes (O5 et O6) [2]. Comme montre sur la Figure 4, chaque 6-LUT des FPGAs Xilinx 7-series peut être utilisée comme une 6-LUT ou peut être configurés en deux 5-LUTs [4]. Les LUTs peuvent implémenter:

·         Toute fonction booléenne à six entrées

·         Deux fonctions booléenne avec 5 entrées du moment que les deux fonctions ont leurs entrées communes

· Deux fonctions booléenne avec 3 et 2 entrées (ou moins) avec des entrées différentes

Structure des 6-LUTs dans les FPGAs Xilinx 7-series

Figure 4 - Structure des 6-LUTs dans les FPGAs  Xilinx 7-series

Wide Multiplexers

16:1 Multiplexer in a Slice

Figure 5 - 16:1 Multiplexer in a Slice (source: [2])

Les multiplexeurs (MUXs) dans les CLBs des FPGAs Xilinx 7-series peuvent être utilises, avec des LUTs, pour implémenter les fonctions suivantes:

·         Multiplexeurs 4:1 (4 vers 1) en utilisant une LUT (jusqu’à quatre 4:1 MUXs implémentables par slice)

·         Multiplexeurs  8:1 en utilisant deux LUTs (jusqu’à deux 8:1 MUXs par slice)

·         Multiplexeurs  16:1 en utilisant quatre LUTs (jusqu’à une 16:1 MUXs par slice)

Chaque LUT peut être configure comme un MUX 4:1. Comme montre sur la Figure 5, chaque F7MUX combine les sorties de deux LUTs (pour implémenter une fonction arbitraire avec 7 entrées ou un MUX 8:1) et chaque F8MUX combine les sorties de deux F7MUXs (pour implémenter une fonction arbitraire avec 8 entrées ou un MUX 16:1)[4].

Bibliography


[1]

P. P. Chu, Embeddded SoPC Design With NIOS II Processor and VHDL Examples, Cleveland: John Wiley & Sons, 2011.

[2]

Xilinx, “UG474 (v1.7) - 7 Series FPGAs CLB User Guide,” 2014.

[3]

D. G. Bailey, Design for embedded image processing on FPGAs, Singapore: John Wiley & Sons, 2011.

[4]

Xilinx, “7-Series CLB Architecture,” [Online]. Available: http://www.xilinx.com/video/fpga/7-series-clb-architecture.html.

[5]

R. Dubey, Introduction to Embedded System Design Using Field Programmable Gate Arrays, London: Springer, 2009.