| Liste Articles: [0-A] [A-C] [C-F] [F-J] [J-M] [M-P] [P-S] [S-Z] | Liste Catégories | Une page au hasard | Pages liées | ||||||
Le Verilog HDL (a ne pas confondre avec VHDL (Very high speed integrated circuits Hardware Description Language)
qui represente une norme differente) est un langage de description de circuits logiques en électronique (le sigle anglais HDL -Hardware Description Language- signifie
Langage de Description de Matériel), utilisé pour la conception d'ASICs (application-specific integrated circuits, circuits spécialisés) et de FPGAs (field-programmable gate array).
À l'origine, il s'agissait d'un langage propriétaire, développé par la société Cadence Design Systems , pour être utilisé dans leurs simulateurs logiques, mais le succès grandissant de VHDL a incité ses concepteurs à en faire un standard ouvert. Verilog a maintenant atteint cet objectif : c'est le standard IEEE 1364.
Verilog possède une syntaxe largement inspirée du langage de programmation C, ce qui permet d'expliquer son succès et sa diffusion rapide dans la communauté des ingénieurs qui ont déjà appris ce langage.
La structure du langage Verilog permet de décrire les entrées et les sorties de modules électroniques, pour définir des portes logiques virtuelles. La combinaison de modules permet de réaliser des schémas électroniques virtuels complexes qu'il est alors possible de tester dans un programme de simulation. De tels tests ont pour objectif de :
Ce langage est dépendant de la casse. Par exemple, size et Size désignent deux paramètres différents.
Voici un exemple de circuit logique (ici, un compteur) :
module Div20x (rst, clk, cet, cep, count,tc); //TITLE 'Divide-by-20 Counter with enables' //enable CEP is a clock enable only //enable CET is a clock enable and enables the TC output //a counter using the Verilog language parameter size = 5; parameter length = 20; input rst; input clk; input cet; input cep; output [size-1:0] count; output tc; reg [size-1:0] count; wire tc; always @ (posedge rst or posedge clk) begin if (rst) count = 5'b0; else if (cet && cep) begin if (count == length-1) begin count = 5'b0; end else count = count + 1; end end assign tc = (cet && (count == length-1)); endmodule


