Principe fondamental des FPGA
Un FPGA (Field-Programmable Gate Array) est un circuit intégré reconfigurable permettant d'implémenter des fonctions numériques personnalisées. Sa programmation modifie les interconnexions internes et le comportement des éléments logiques sans modification physique.
Structure de base
L'élément central est la table de consultation (LUT) qui émule des fonctions logiques. Une LUT à n entrées agit comme une mémoire contenant 2n valeurs, configurable pour reproduire toute fonction combinatoire.
Exemple de LUT à 2 entrées
Fonction ET :
| Entrée A | Entrée B | Sortie |
|----------|----------|--------|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Matrice d'interconnexion
Des multiplexeurs configurables forment un réseau routage dynamique. Chaque multiplexeur sélectionne un signal parmi plusieurs sources selon sa configuraton mémoire :
Sortie = Entrée[selection]
// Exemple 6:1 avec contrôle binaire
module Multiplexeur6v1 (
input [5:0] donnees,
input [2:0] choix,
output reg resultat
);
always @(*) begin
case(choix)
3'b000: resultat = donnees[0];
3'b001: resultat = donnees[1];
// ... autres cas
3'b101: resultat = donnees[5];
endcase
end
endmodule
Blocs logiques configurables
Les CLB (Configurable Logic Blocks) regroupent des LUTs et registres. Chaque CLB contient typiquement :
- 4 LUTs 6-entrées
- 8 bascules D
- Circuits d'arithmétique (additionneurs)
Ressourcse spécialisées
Mémoire embarquée
Les BRAM (Block RAM) sont des blocs mémoires dédiés configurables en :
- Mémoire simple/duale port
- FIFO
- Mémoire tampon
Gestion d'horloge
Les modules CMT (Clock Management Tiles) incluent :
- PLL : Synthèse de fréquence
- DLL : Correction de délai
Interfaces d'entrée/sortie
Les IOB (Input/Output Blocks) offrent :
- Adaptation électrique (LVDS, LVCMOS)
- Contrôle d'impédance
- Registres dédiés pour la synchronisation
Avantages comparatifs
| Technologie | Latence | Flexibilité | Consommation |
|---|---|---|---|
| FPGA | Nanoseconde | Reconfiguration dynamique | Élevée |
| Microcontrôleur | Microseconde | Logicielle uniquement | Modérée |
| ASIC | Picoseconde | Nulle | Optimisée |
Applications typiques
- Traitement signal temps réel (SDR)
- Prototypage accéléré
- Contrôleurs haute vitesse (PCIe, Ethernet)