Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Verilog

Types de données Verilog : Bits, fils et valeurs logiques expliqués

L'intention principale des types de données en Verilog est de représenter des éléments de stockage de données comme les bits dans une bascule et des éléments de transmission comme les fils connectant portes logiques et structures séquentielles.

Quelles valeurs les variables peuvent-elles contenir ?

Presque tous les types de données ne peuvent avoir que l'une des quatre valeurs ci-dessous, sauf real et event :

0représente un zéro logique, ou condition fausse
1représente un un logique, ou condition vraie
xreprésente une valeur logique inconnue (peut être 0 ou 1)
zreprésente un état haute impédance

L'image ci-dessous montre comment ces valeurs apparaissent dans les diagrammes de timing et formes d'onde de simulation. La plupart des simulateurs utilisent la convention : rouge pour X et orange au milieu pour haute impédance Z.

Types de données Verilog : Bits, fils et valeurs logiques expliqués

Que implique le système de valeurs Verilog ?

Verilog décrivant des éléments matériels comme bascules et logique combinatoire (NAND, NOR), il doit modéliser le système de valeurs du matériel. Un logique 1 représente la tension d'alimentation Vdd (0.8V à plus de 3V selon nœud technologique). Un logique 0 représente la masse (0V).

X ou x signifie valeur inconnue (0 ou 1), différent du "don't care" en logique booléenne.

Comme tout circuit électrique incomplet, un fil non connecté aura une haute impédance à ce nœud, représenté par Z ou z. En Verilog, tout fil non connecté résulte en haute impédance.

Nets (Réseaux) et Variables

Nets et variables sont les deux groupes principaux de types de données représentant différentes structures matérielles, différant par leur affectation et rétention de valeurs.

Nets

Les nets connectent des entités matérielles comme portes logiques et ne stockent pas de valeur. Dans l'image ci-dessous, un net net_11 connecte la sortie d'une porte AND à l'entrée d'une bascule data_0. Les deux entrées de la porte AND sont connectées aux nets net_45 et net_67.

Types de données Verilog : Bits, fils et valeurs logiques expliqués

Il existe différents types de nets, mais le plus populaire en conception numérique est wire. Un wire connecte des éléments et des nets pilotés par une seule porte ou affectation continue. Similaire au fil électrique sur une breadboard.

Types de données Verilog : Bits, fils et valeurs logiques expliqués

Pour plusieurs nets, on peut les regrouper en un seul wire. Un wire 4-bit peut envoyer 4 valeurs séparées. Ces entités de largeur >1 sont appelées vecteurs.

wire [3:0] n0; // wire 4-bit -> vecteur

Types de données Verilog : Bits, fils et valeurs logiques expliqués

Il est illégal de redéclarer un nom déjà déclaré par un net, paramètre ou variable :

module design;
wire abc; wire a; wire b; wire c; wire abc; // Erreur: "abc" déjà déclaré
assign abc = a & b | c;
endmodule

Variables

Types de données Verilog : Bits, fils et valeurs logiques expliqués

Une variable abstrait un élément de stockage de données et peut retenir des valeurs. Une bascule est un bon exemple. Le type reg modélise des registres matériels car il retient des valeurs entre affectations. Notez qu'un reg ne représente pas toujours une bascule ; il peut aussi représenter de la logique combinatoire.

Types de données Verilog : Bits, fils et valeurs logiques expliqués

Autres types de données

integer

Variable à usage général de 32 bits pour modéliser du matériel et stocker des valeurs entières.

integer count; // Count est une valeur entière > 0

time

Variable non signée, 64 bits, pour stocker des quantités de temps de simulation pour le débogage. realtime stocke le temps comme quantité flottante.

time end_time;    // end_time = 50ns
realtime rtime;   // rtime = 40.25ps

real

Variable stockant des valeurs à virgule flottante, assignable comme integer et reg.

real float; // float = 12.344

Exemple

module testbench;
integer int_a;
real real_b;
time time_c;
initial begin
    int_a = 32'hcafe_1234;
    real_b = 0.1234567;
    #20;
    time_c = $time;
    $display ("int_a = 0x%0h", int_a);
    $display ("real_b = %0.5f", real_b);
    $display ("time_c = %0t", time_c);
end
endmodule

Simulation Log :

ncsim> run
int_a = 0xcafe1234
real_b = 0.12346
time_c = 20
ncsim: *W,RNQUIE: Simulation is complete.

Chaînes Verilog

Les chaînes sont stockées dans reg, la largeur doit être suffisante. Chaque caractère = 1 octet (ASCII). Si variable trop petite, troncature des bits de poids fort. Si plus grande, padding de zéros à gauche.

// "Hello World" requiert 11 octets
reg [8*11:1] str = "Hello World"; // str = "Hello World"
reg [8*5:1] str = "Hello World";  // str = "World" (tronqué)
reg [8*20:1] str = "Hello World"; // str = "       Hello World" (padding)

Exemple complet :

module testbench;
reg [8*11:1] str1;
reg [8*5:1] str2;
reg [8*20:1] str3;
initial begin
    str1 = "Hello World";
    str2 = "Hello World";
    str3 = "Hello World";
    $display ("str1 = %s", str1);
    $display ("str2 = %s", str2);
    $display ("str3 = %s", str3);
end
endmodule

Simulation Log :

ncsim> run
str1 = Hello World
str2 = World
str3 = Hello World
ncsim: *W,RNQUIE: Simulation is complete.

Verilog

  1. Maîtriser les variables C# et types de données primitifs : guide complet
  2. Comprendre les types de données C++ : Fondamentaux, modificateurs et bonnes pratiques
  3. Types de données en C expliqués : int, float, char et plus — Guide complet
  4. Maîtriser les types de données Python : Guide pratique
  5. Types de données primitifs en Java : Guide complet avec exemples
  6. 5 Modèles de Centres de Données Expliqués : Conception, Cas d'Usage et Exemples
  7. Huit Modèles Clés de Cloud Computing en 2021
  8. 8 types courants de violations de données – Exemples réels et impact
  9. Maîtriser Verilog : Tutoriel complet pour la conception de circuits numériques