LUTs, bascules, blocs RAM, DSP, interconnexions - les ressources physiques d'un FPGA moderne.
Un FPGA fournit des ressources logiques et des connexions programmables. Le fichier de configuration choisit leurs fonctions et les relie pour former le circuit. Charger une autre configuration permet de changer ce circuit après fabrication.
Calculer et mémoriser un état
Une LUT (look-up table) stocke la table de vérité d'une fonction. Dans la série 7 d'AMD/Xilinx, une LUT à six entrées contient bits de configuration et peut produire toute fonction booléenne de six variables.
2
⁶
=
64
Les fabricants organisent différemment leurs ressources :
Ressource
AMD/Xilinx série 7
Altera Cyclone V
Logique combinatoire
LUT à 6 entrées
LUT adaptative fracturable dans une ALM
Regroupement
8 LUT par CLB
10 ALM par LAB
Registres
16 bascules par CLB
4 registres par ALM
Les bascules D mémorisent les valeurs entre les fronts d'horloge. Dans la série 7, un CLB (configurable logic block) regroupe huit LUT et seize bascules. Les chaînes de retenue dédiées accélèrent notamment les additions et les compteurs. Ces quantités sont propres à cette architecture ; elles ne définissent pas tous les FPGA.
Utiliser les mémoires et les DSP
Les BRAM sont des mémoires embarquées de taille fixe. Dans la série 7, on trouve notamment des blocs de 18 ou 36 kbits. Une description adaptée permet au synthétiseur de reconnaître une mémoire :
-- Inférence automatique d'une BRAM simple portarchitecture 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;
Propriété
Ce qu’il faut vérifier
Taille
Dépend de la famille ; 18 ou 36 kbits en série 7
Nombre de blocs
Dépend de la référence du composant
Ports
Simple port, simple dual port ou true dual port selon la configuration
Lecture
Synchrone dans cet exemple ; les registres optionnels ajoutent de la latence
L'inférence dépend du mode d'accès, des options et de la cible ; vérifie le rapport pour savoir si la mémoire utilise réellement une BRAM.
Les DSP sont des circuits dédiés à la multiplication et aux opérations MAC (multiply-accumulate). Un DSP48 peut notamment calculer P = A × B + C. Sa latence dépend des registres de pipeline activés : un débit d'un résultat par cycle ne signifie pas une latence d'un cycle.
Ces blocs servent aux filtres FIR et IIR, aux corrélateurs, aux FFT et au traitement d'images. Le synthétiseur peut les utiliser lorsque les opérations et les largeurs du VHDL correspondent aux ressources disponibles.
Relier le circuit à la carte
Les E/S configurables doivent respecter le standard et la tension de leur banque :
Interface ou ressource
Usage
LVCMOS 3,3 V / 1,8 V
GPIO avec une banque compatible
LVDS
Signaux différentiels
SSTL
Interfaces de mémoire compatibles
SERDES / transceivers
Sérialisation ; PCIe requiert notamment des transceivers adaptés
Les contraintes de broche et de standard sont écrites dans le fichier XDC :
À l'intérieur du FPGA, un réseau programmable relie les ressources. L'outil de routage choisit les connexions après le placement. Leurs délais limitent souvent la fréquence maximale ; une même description peut donc donner des performances différentes selon le composant et les contraintes.
Voici quelques familles pour situer les architectures :
Fabricant
Famille
Exemple de positionnement
AMD/Xilinx
Artix-7, Kintex-7
Logique, interfaces et DSP
AMD/Xilinx
Zynq-7000
SoC avec processeur ARM et FPGA
AMD/Xilinx
Virtex UltraScale+
Designs à forte capacité
Altera
Cyclone V / 10
Designs sensibles au coût
Altera
Arria 10
Logique et DSP
Lattice
ECP5
Logique, DSP et interfaces
Gowin
GW1N
Designs de petite taille
Les détails des LUT et des DSP sont décrits dans les guides CLB série 7 et DSP48E1.
L’organisation des ALM est détaillée dans le guide Cyclone V.