Architecture interne d'un FPGA

LUTs, bascules, blocs RAM, DSP, interconnexions — les ressources physiques d'un FPGA moderne.

Qu'est-ce qu'un FPGA ?

Un FPGA (Field-Programmable Gate Array) est un circuit intégré dont la logique est reconfigurable après fabrication. Contrairement à un ASIC (circuit figé), un FPGA peut être reprogrammé autant de fois que nécessaire.

Architecture interne FPGA


Les ressources principales

LUT — Look-Up Table

La brique de base de la logique configurable. Une LUT est une petite mémoire qui implémente n'importe quelle fonction logique.

Une LUT-6 (6 entrées, standard Xilinx 7-series) peut réaliser n'importe quelle fonction de 6 variables → 2⁶ = 64 cases mémoire.

Schéma LUT-6

ParamètreXilinx 7-seriesIntel Cyclone V
LUTLUT-6LUT-6 (ALM)
LUTs / CLB810 / ALM
Nombre typique13k – 2M25k – 300k

Bascule D (Flip-Flop)

Chaque LUT est associée à une ou plusieurs bascules D. Elles stockent l'état entre les cycles d'horloge.

Un CLB (Configurable Logic Block) contient généralement 8 LUTs + 16 bascules.

Carry Chain

Les CLBs disposent de chaînes de propagation de retenue rapide, permettant d'implémenter des additionneurs et compteurs haute performance.


BRAM — Block RAM

La mémoire embarquée dans le FPGA. Organisée en blocs de taille fixe (typiquement 18 kbits ou 36 kbits).

-- Inférence automatique d'une BRAM simple port
architecture rtl of bram_sp is
  type t_mem is array(0 to 255) of std_logic_vector(7 downto 0);
  signal r_mem : t_mem;
begin
  process(i_clk)
  begin
    if rising_edge(i_clk) then
      if i_we = '1' then
        r_mem(to_integer(unsigned(i_addr))) <= i_data;
      end if;
      o_data <= r_mem(to_integer(unsigned(i_addr)));
    end if;
  end process;
end architecture rtl;
ParamètreValeur typique
Taille d'un bloc18 kbits ou 36 kbits
Nombre de blocs100 – 2000
ModesSimple port, dual port, true dual port
Latence1 cycle

DSP — Digital Signal Processing

Blocs matériels dédiés aux multiplications et opérations MAC (Multiply-Accumulate).

Bloc DSP dans architecture FPGA

Un bloc DSP48 (Xilinx) réalise : P = A × - + C en 1 cycle, à haute fréquence.

Usage typique :

  • Filtres numériques (FIR, IIR)
  • Corrélateurs, FFT
  • Unités de traitement d'images

Le synthétiseur infère automatiquement les DSP depuis votre VHDL si la structure correspond.


I/O — Entrées/Sorties

Les broches d'un FPGA sont des I/O configurables :

StandardUsage
LVCMOS 3.3V / 1.8VGPIO général
LVDSDifférentiel haute vitesse
SSTLDDR mémoires
SERDESTrès haute vitesse (HDMI, PCIe)
-- Contrainte de placement (fichier XDC Xilinx)
set_property PACKAGE_PIN W5 [get_ports o_led]
set_property IOSTANDARD LVCMOS33 [get_ports o_led]

Interconnexions

Les ressources sont reliées par un réseau d'interconnexions programmables. C'est souvent le facteur limitant la fréquence maximale.

Le synthétiseur choisit les chemins de routage — c'est pourquoi une même description VHDL peut avoir des performances différentes selon le FPGA ou les contraintes.


Familles de FPGAs courants

FabricantFamilleCible
Xilinx (AMD)Artix-7, Kintex-7Mid-range
Xilinx (AMD)Zynq-7000SoC (ARM + FPGA)
Xilinx (AMD)Virtex Ultrascale+Hautes performances
Intel (Altera)Cyclone V / 10Low-cost
Intel (Altera)Arria 10Mid-range
LatticeECP5Ultra low-power
GowinGW1NBas coût, hobbyistes