Verilog

Le Verilog, de son nom complet Verilog HDL est un langage de description matériel de circuits logiques en électronique, utilisé pour la conception d'ASICs (application-specific integrated circuits, circuits spécialisés) et de FPGAs (field-programmable gate array).

Ne pas confondre avec son concurrent VHDL.

Le sigle anglais HDL -Hardware Description Language- signifie Langage de Description du Matériel. « Verilog HDL » ne doit pas être abrégé en VHDL, ce sigle étant utilisé pour le langage concurrent VHSIC Hardware Description Language.

Historique

À 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 (Very high speed integrated circuits Hardware Description Language, autre langage aux objectifs similaires) a incité ses concepteurs à faire de Verilog un standard ouvert ; c'est le standard IEEE 1364 dont il existe plusieurs versions, qui ont été enrichies pour offrir des fonctions équivalentes à celles de VHDL.

Verilog combine deux aspects :

  • la simulation : il permet de décrire l'enchaînement d'événements ;
  • description par combinaison d'éléments (modules, expressions, portes logiques…), ce qui permet de synthétiser des circuits.

La syntaxe de Verilog est réputée largement inspirée du langage de programmation C, bien que la ressemblance se limite en fait aux expressions. Ceci explique en partie son succès et sa diffusion rapide dans la communauté des ingénieurs qui ont déjà appris le langage C.

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 :

  • valider le comportement des circuits décrits (le résultat qu'ils délivrent est bien celui attendu) ;
  • valider les performances de ces circuits (ils répondent dans un temps donné et les signaux qui parcourent les différents modules sont correctement synchronisés).

Exemple de circuit en Verilog

Voici un exemple de circuit logique (ici, un compteur) décrit au niveau RTL (Register Transfer Level), c'est-à-dire synthétisable :

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; // These inputs/outputs represent 
input clk; // connections to the module.
input cet;
input cep;

output [size-1:0] count;
output tc;

reg [size-1:0] count; // Signals assigned 
                      // within an always 
                      // (or initial)block 
                      // must be of type reg
                      
wire tc; // Other signals are of type wire

// The always statement below is a parallel
// execution statement that
// executes any time the signals 
// rst or clk transition from low to high

always @ (posedge clk or posedge rst)
  if (rst) // This causes reset of the cntr
    count <= 5'b0;
  else
  if (cet && cep) // Enables both  true
    begin
      if (count == length-1)
        count <= 5'b0;
      else
        count <= count + 5'b1; // 5'b1 is 5 bits 
    end                        // wide and equal 
                               // to the value 1.

// the value of tc is continuously assigned 
// the value of the expression
assign tc = (cet && (count == length-1));

endmodule

Notes et références

    Voir aussi

    Articles connexes

    Liens externes

    • Portail de l’informatique
    • Portail de l’électricité et de l’électronique
    Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.