Le comportement matériel ne peut être implémenté sans instructions conditionnelles et autres moyens de contrôler le flux de logique. Verilog dispose dun ensemble de blocs et mécanismes de contrôle de flux pour y parvenir. if-else-if Cet énoncé conditionnel est utilisé pour décider si certaines inst
Assignations Bloquantes (Blocking) Les instructions daffectation bloquantes utilisent le symbole = et sont exécutées les unes après les autres dans un bloc procédural. Cependant, cela nempêche pas lexécution dinstructions qui sexécutent dans un bloc parallèle. module tb; reg [7:0] a, b, c, d, e;
Laffectation de valeurs sur des nets et des variables est appelée affectation. Il existe trois formes de base : Procédurale Continue Procédurale continue Valeurs LHS autorisées Une affectation comporte deux parties : le côté droit (RHS) et le côté gauche (LHS), séparés par un symbole égal (
Il existe des façons de regrouper instructions équivalentes syntaxiquement à une instruction unique : blocs dinstructions (block statements). Deux types : séquentiel et parallèle. Séquentiel Instructions enveloppées avec begin et end, exécutées séquentiellement dans lordre donné. Valeurs de délai re
Exemple précédent explorait détecteur simple. Voici détecteur de motif pour séquence légèrement plus longue. Conception Détecteur motif 110101 : module det_110101 (input clk, input rstn, input in, output out); parameter IDLE = 0, S1 = 1, S11 = 2, S110 = 3, S1101 = 4, S11010 = 5, S110101 = 6; reg [2:
Exemple très courant de machine détats finis (FSM) : détecteur de séquence où le matériel doit détecter quand un motif fixe apparaît dans un flux de bits binaires en entrée. Exemple Détecteur de séquence 1011 : module det_1011 (input clk, input rstn, input in, output out); parameter IDLE = 0, S1 = 1
Un bloc generate permet de multiplier instances de modules ou faire instanciation conditionnelle. Il permet de construire la conception basée sur paramètres Verilog. Particulièrement pratique quand même opération/instance doit être répétée plusieurs fois ou si code doit être inclus conditionnellemen
Tout code comportemental sécrit dans module ... endmodule. Toute conception numérique va dans bloc module. Peut avoir ports définis ou non - signaux entrant comme input ou sortant comme output. Module Module vide ci-dessous appelé testbench. Nom libre (alphanumérique + _). module testbench; endmodu
Un ensemble dinstructions Verilog sexécute séquentiellement en simulation. Placées dans bloc procédural. Deux types principaux : initial et always. Syntaxe initial [instruction unique] initial begin [instructions multiples] end À quoi sert le bloc initial ? Bloc initial non synthétisable : ne peut
Article précédent montrait exemples bloc always pour logique combinatoire. Bloc always aussi principalement utilisé pour logique séquentielle avec éléments mémoire comme bascules retenant valeurs. Bascule JK Bascule JK stocke valeurs avec 2 entrées données j, k, reset rstn, horloge clk. Table de vér
Le bloc always Verilog sert pour logique séquentielle et combinatoire. Quelques exemples avec assign vus précédemment. Même ensemble exploré avec always. Exemple #1 : Logique combinatoire simple Code implémentant logique combinatoire simple avec sortie z de type reg mise à jour quand signaux liste s
Un bloc always est lun des blocs procéduraux en Verilog. Les instructions à lintérieur sexécutent séquentiellement. Syntaxe always @ (event) [instruction] always @ (event) begin [instructions multiples] end Le bloc always sexécute lors dun événement particulier défini par une liste de sensibilité.
Fils et variables multi-bit Verilog peuvent être regroupés pour former un net ou variable multi-bit plus grand via opérateurs de concaténation { et } séparés par virgules. Concaténation autorise aussi expressions et constantes dimensionnées comme opérandes. Taille de chaque opérande doit être connue
Des données non traitées sont inutiles ; il y a toujours calcul dans circuits numériques et systèmes informatiques. Examinons les opérateurs Verilog permettant aux outils de synthèse de réaliser éléments matériels appropriés. Opérateurs arithmétiques Verilog Si second opérande division/modulo = 0, r
Linstruction assign Verilog pilote continûment un signal de type wire et se synthétise en logique combinatoire. Voici plus dexemples de conception avec assign. Exemple #1 : Logique combinatoire simple Code implémentant logique combinatoire simple avec sortie z pilotée par assign pour réaliser équati
Les signaux de type wire ou types similaires nécessitent une affectation continue de valeur. Exemple : fil électrique sur breadboard connectant pièces. Tant que batterie +5V appliquée à une extrémité, composant à lautre extrémité reçoit la tension requise. En Verilog, ce concept est réalisé par lin
Comme vu précédemment, les conceptions complexes sintègrent en instanciant plusieurs modules hiérarchiquement. Les modules sont instanciés dans dautres modules et leurs ports connectés à dautres signaux du module parent. Connexions de ports : liste ordonnée ou par nom. Connexion par liste ordonnée C
Les ports sont un ensemble de signaux agissant comme entrées/sorties dun module, moyen principal de communication. Imaginez un module comme une puce fabriquée sur un PCB : la seule communication se fait via ses broches. Les ports sont comme des broches pour envoyer/recevoir signaux du monde extérieu
Un module est un bloc de code Verilog implémentant une certaine fonctionnalité. Les modules peuvent être imbriqués ; un module de niveau supérieur communique avec ses sous-modules via leurs ports dentrée/sortie. Syntaxe Un module doit être encadré par module et endmodule. Le nom suit module, liste d
Une déclaration de tableau (array) dun net ou variable peut être scalaire ou vectoriel. Nombre illimité de dimensions en spécifiant une plage dadresses après le nom didentificateur : tableau multidimensionnel. Tableaux autorisés pour reg, wire, integer et real. reg y1 [11:0]; // tableau sc
Verilog
Presses pneumatiques dans la fabrication : applications, avantages et comparaison aux presses hydrauliques
Optimiser le marketing manufacturier avec l'IA : guide pratique d'expérimentation
Radar ultrasonique Arduino HC-SR04 : Affichage temps réel avec servo et Processing
Structures en C embarqué : guide pratique pour la définition, l'utilisation et l'optimisation mémoire