Du matériel, pas des instructions.
Suivez les mêmes entrées jusqu’à des cellules logiques indépendantes.
Vue 3D active · A–D entrées · Espace horloge · R réinitialiser · L étiquettes · 1–6 chapitres · Échap libère
Le rendu 3D n’est pas disponible
Les commandes logiques, les tables de vérité et le moteur de chronogrammes restent disponibles.
Commencez par une expérience de cinq minutes
Dans Additionneur complet, inversez A, B et C. SUM est leur parité ; CARRY est à 1 lorsqu’au moins deux entrées sont à 1. Aucune horloge n’est nécessaire. Ouvrez Dans une LUT pour voir quel bit stocké les entrées sélectionnent. Modifiez un bit mémoire : vous avez reconfiguré un circuit, pas changé une entrée de données.
Chargez ensuite le Pipeline à 2 étages, ouvrez Mémoriser un bit et appliquez des impulsions d’horloge. Les deux registres échantillonnent leurs valeurs D sur le même front. Le second registre échantillonne la sortie précédente du premier registre, et non une valeur que ce front vient de produire. Désactivez CE pour conserver l’état. SRST est synchrone et prioritaire sur CE.
Ce qu’est vraiment une LUT
Pour une LUT à quatre entrées, l’adresse vaut I0 + 2·I1 + 4·I2 + 8·I3. Il y a 16 bits stockés. INIT[address] est le résultat combinatoire. L’arbre visible 16→8→4→2→1 est un réseau logiquement équivalent de 15 multiplexeurs à deux entrées. I0 sélectionne au sein des paires ; I1, I2 et I3 sélectionnent des groupes de plus en plus grands. Cette explication ne prétend pas décrire une implantation précise des transistors. L’arbre affiche la sélection qu’impliquent les entrées de LUT déjà arrivées ; ses portes internes ne sont pas simulées individuellement avec leurs retards. F se met à jour après un retard de LUT global de 620 ps.
Par exemple, 0x6666 réalise I0 XOR I1 ; 0x9696 réalise la parité à trois entrées ; 0xE8E8 réalise une fonction majorité à trois entrées. Les huit lignes supérieures de la table se répètent lorsqu’une fonction ignore I3. Le contenu mémoire de la LUT reste inchangé pendant que les entrées de données varient.
Qu’est-ce qui est configurable, et qu’est-ce qui ne l’est pas ?
La configuration détermine les bits des LUT, les sources d’entrée et si la sortie exposée d’une cellule utilise F ou la sortie Q du registre. Les mux et le câblage métallique existent déjà dans la puce fabriquée ; la configuration en sélectionne le comportement. Le microscope du routage résume cela par une source sélectionnée par destination. Les composants réels ont des pistes en nombre fini, une connectivité des commutateurs et des contraintes de routage propres à chaque famille, et non un crossbar universel.
Chacune des 16 cellules du labo possède une LUT4 et une DFF facultative sur front montant. Un vrai bloc logique configurable regroupe généralement plusieurs éléments logiques ; les noms, la taille des LUT et les règles de regroupement et de partage varient selon la famille. Certains FPGA utilisent des LUT plus grandes ou fractionnables. Les technologies de configuration des FPGA varient aussi : n’en déduisez pas que tout FPGA utilise une configuration en SRAM volatile.
Le moteur numérique
Le moteur utilise des picosecondes entières, des événements de signal en file d’attente, des retards de transport sur l’interconnexion et un retard inertiel pour les LUT. Le retard de routage non constant vaut 260 ps + 140 ps × Manhattan hops + added route delay. Les entrées reliées à une constante ont un retard de routage modélisé nul. Le retard de LUT est de 620 ps et le retard horloge-Q de 220 ps ; le setup et le hold valent respectivement 200 ps et 120 ps. Ce sont des valeurs explicatives, pas les spécifications d’une puce.
Toutes les entrées D sont échantillonnées avant que la moindre sortie Q ne change, sur un front montant idéal commun. La rétroaction du compteur est donc synchrone. Les boucles de rétroaction entièrement combinatoires sont rejetées. X signifie qu’une valeur numérique n’est pas garantie : une entrée de LUT inconnue ne donne un résultat connu que si toutes les lignes correspondantes de la table concordent. Une violation de setup ou de hold produit, par prudence, un état inconnu. Le moteur ne prédit ni la tension analogique de métastabilité ni sa résolution probabiliste.
Impulsion d’horloge planifie une impulsion complète sur une limite ultérieure de la grille d’horloge de 12 ns, une fois que l’état actuel a disposé de son temps de setup. Les limites inactives peuvent être sautées entre les actions de l’utilisateur : c’est un banc de test interactif, pas un oscillateur qui fonctionne en continu. Lancer l’horloge met de telles impulsions en file d’attente de façon répétée. Événement suivant suspend la propagation automatique et avance d’un horodatage de simulation. Le chronogramme et l’export VCD contiennent de véritables états enregistrés du modèle, pas des sinusoïdes illustratives. L’affichage conserve un historique glissant d’au plus 4 000 instantanés d’événements.
L’analyse temporelle, une feuille explicite et distincte
Le chapitre d’analyse temporelle ne modifie ni le circuit simulé ni son chronogramme. Il vérifie un chemin hypothétique de registre à registre dans des cas min/max illustratifs. Le setup utilise l’arrivée la plus tardive : tCQ(max) + route(max) + N·tLUT(max). Son échéance est T + capture−launch skew − uncertainty − setup. Le hold utilise l’arrivée la plus précoce et exige qu’elle dépasse capture−launch skew + uncertainty + hold. Un skew de capture positif favorise le setup et pénalise le hold. Réduire la fréquence d’horloge ne suffit pas à corriger une violation de hold sur un même front.
La feuille utilise tCQ max/min = 0,22/0,10 ns et tLUT max/min = 0,62/0,18 ns. Une incertitude prudente de 0,10 ns s’applique séparément à chaque vérification. Une borne de fréquence calculée sur le seul setup ne garantit pas le timing de toute la conception. La feuille omet la reconvergence d’horloge, les exceptions, les chemins multicycles, l’analyse multi-horloge et les cas temporels des fabricants.
La configuration et le petit compilateur
Le convertisseur booléen accepte au plus quatre variables, ainsi que NON, ET, XOR, OU et les parenthèses. Il analyse une expression, évalue les 16 cas et convertit exactement cette fonction en une LUT4. Il attribue une cellule pédagogique fixe et quatre connexions d’entrée. Il ne synthétise pas de Verilog arbitraire, ne résout pas de vraie congestion de routage, n’effectue pas de placement guidé par le timing et ne génère pas de bitstream de fabricant. Le RTL généré décrit la netlist actuellement configurée du labo, y compris la remise à zéro synchrone et les affectations non bloquantes des registres. La prise en charge de l’initialisation des registres dans un FPGA dépend de la cible et de l’outil.
Programmer un mot, modifier une connexion ou choisir une sortie via registre ou en contournement est traité comme une reconfiguration complète du modèle : l’horloge s’arrête, l’exécution et l’historique du chronogramme redémarrent, Q s’initialise à 0 et les niveaux choisis des entrées primaires sont conservés. Ce n’est pas une simulation de reconfiguration partielle dynamique. Les fichiers de projet JSON stockent le circuit et les entrées primaires, pas l’état d’exécution analogique ou transitoire.
Ressources dédiées et limites du modèle
Les colonnes BRAM et DSP servent de contexte architectural : on peut les inspecter, mais elles ne sont pas instanciées dans les netlists logiques fournies. Dans de nombreuses architectures réelles, des chaînes de retenue dédiées accélèrent l’arithmétique. Ici, l’additionneur et le compteur utilisent volontairement la logique des LUT pour montrer le mécanisme booléen ; ils ne prétendent pas à une implantation optimisée sur chaîne de retenue.
Aucun de ces aspects n’est modélisé : comportement des transistors, consommation, échauffement, intégrité du signal, métastabilité analogique, normes électriques d’E/S, skew détaillé de l’arbre d’horloge, probabilité d’inversion des bits SRAM, classe de vitesse du composant, brochage du fabricant. L’écartement entre les couches, les plots façon boîtier et les dimensions sont illustratifs. Exécuter ce simulateur JavaScript, ce n’est pas faire fonctionner un FPGA : il reproduit en logiciel la sémantique numérique décrite.
Commandes et accessibilité
Glissez pour orbiter, glissez avec Maj ou avec le bouton droit pour déplacer la vue, pincez pour zoomer. Sélectionnez Dessus pour une vue en plan orthographique. Cliquez sur une cellule logique, un bit de LUT ou un point de croisement du routage. Tous les paramètres modifiables du circuit sont aussi accessibles par des contrôles de formulaire classiques. Lorsque la vue 3D a le focus, la molette zoome, les flèches font orbiter la vue, A–D inversent les entrées primaires, Espace met une impulsion d’horloge en file d’attente, R réinitialise l’exécution, 1–6 changent de chapitre, L affiche ou masque les étiquettes, ? ouvre ce guide et Échap libère la vue. Le labo utilise WebGL 2 en natif et calcule chaque signal dans ce navigateur.
Principales références techniques
Les concepts d’architecture et les équations temporelles ont été vérifiés à l’aide des sources suivantes. Les liens externes s’ouvrent dans un nouvel onglet.
Pourquoi une mémoire dédiée existe
Une LUT stocke une petite table de vérité, et certaines LUT de FPGA peuvent aussi être configurées en mémoire distribuée. Les tampons, FIFO et tables plus volumineux s’implémentent plus efficacement avec des ressources dédiées de RAM en blocs. Les blocs réels ont des capacités, des largeurs, des modes de port, des validations d’écriture, un timing de lecture et un comportement de lecture pendant l’écriture bien précis.
Un autre rôle pour les bits
Dans ce labo, les bits INIT d’une LUT définissent une fonction booléenne. Dans une conception mémoire en fonctionnement, les adresses, les données et les validations d’écriture accèdent aux données de l’utilisateur. Ces deux usages ne doivent pas être confondus avec les bits de configuration qui choisissent le mode de fonctionnement de la RAM ou routent ses ports.
Sélectionnez les cellules LUT ambrées pour revenir au chemin de données simulé. Ce modèle visuel n’invente ni latence de BRAM, ni comportement de collision en double port, ni données utilisateur stockées.
Un multiplieur n’a pas à consommer de nombreuses LUT
De nombreuses familles de FPGA comportent des blocs arithmétiques dédiés à des opérations comme la multiplication et la multiplication-accumulation. Ils peuvent inclure des registres de pipeline, des additionneurs, des mux d’opérandes et des connexions en cascade. La largeur, la gestion du signe, les opérations prises en charge et le timing dépendent du composant.
Du HDL à la bonne ressource
Un outil de synthèse peut inférer un bloc DSP à partir d’un RTL arithmétique lorsque la cible, la largeur des opérandes et les réglages de synthèse le permettent. Il peut au contraire implémenter une fonction plus petite dans des LUT. Davantage de ressources matérielles peuvent fonctionner simultanément ; leur débit et leur latence dépendent toujours de l’horloge, du pipeline et du déplacement des données.
Ce labo pédagogique montre volontairement de petites fonctions à base de LUT. Il ne prétend pas que sa colonne DSP schématique soit une primitive arithmétique de fabricant simulée.
Enregistrez vos mots de LUT configurés, vos connexions, vos choix de registre et les niveaux des entrées primaires. Les chronogrammes et l’état transitoire des registres ne font pas partie d’un fichier de configuration.
Configuration portable
Un fichier JSON lisible et validé, au format FABRIC. Pas un bitstream de fabricant.
Point de sauvegarde dans le navigateur
Stocké uniquement dans ce navigateur. Sa disponibilité dépend de la politique de stockage du navigateur.
Activité des signaux enregistrée
Exportez la trace temporelle actuelle des événements au format standard Value Change Dump (échelle de temps de 1 ps).
Description matérielle lisible
Générée à partir de la netlist réellement programmée, pas d’un brouillon d’expression non appliqué.
Dans le numéro en cours
Les abonnés ouvrent chaque nouvelle exposition le jour de sa sortie. Un compte DigiSim gratuit ouvre celle-ci à partir du {memberDate} ; sans compte, elle s’ouvre le {anonymousDate}.
Se connecter ou s’inscrireVoir les offresL’exposition est indisponible. La lecture est en pause. Rechargez pour réessayer.