Vecteurs
Fait partie de la section Fondamentaux du Journey Verilog de Coddy — leçon 9 sur 90.
Un vector est un wire ou reg multi-bit. Au lieu d'un single bit, les vectors vous permettent de travailler avec des buses de data. C'est une collection de bits regroupés ensemble.
Remarque : Un vector n'est pas un type de data distinct. C'est simplement une version multi-bit de wire ou reg.
wire single; // Bit unique
wire [7:0] bus; // Vecteur de 8 bits (bits 7 descendant à 0)Pour déclarer un vector, vous utilisez la syntaxe [MSB:LSB] où MSB est le le bit le plus significatif et LSB est le moins significatif.
wire [3:0] a; // vecteur wire de 4 bits
reg [7:0] data; // vecteur reg de 8 bits
wire [15:0] addr; // vecteur wire de 16 bitsAccéder aux bits
Lorsque vous accédez à des bits individuels ou à des tranches d'un vector, vous utilisez des nombres décimaux pour les positions de bits (index) et des valeurs binary (0 ou 1) pour les affectations.
C'est parce qu'une position de bit est un emplacement (comme une adresse), qui s'exprime naturellement sous la forme d'un nombre décimal, tandis que la valeur stockée dans ce bit ne peut être que 0 ou 1 — un choix binaire.
Par exemple, data[0] signifie "bit numéro zéro", et = 1 signifie "le mettre à l'état haut". Assigner un décimal comme 75 à un bit unique ne stocke pas 75 — Verilog ne conserve silencieusement que son bit le plus bas — donc écrivez toujours 0 ou 1 explicitement.
reg [7:0] data;
data = 170;
data[0] = 1; // Mettre le LSB à 1
data[7] = 0; // Mettre le MSB à 0
data[3:1] = 3'b101; // Set bits 3,2,1 to 101 (binary remains)Ordre des bits
L'ordre des bits a son importance :
wire [3:0] a; // a[3] est le MSB, a[0] est le LSB
wire [0:3] b; // b[0] est le MSB, b[3] est le LSB (moins courant)La plupart des concepteurs utilisent le format [MSB:LSB] avec le MSB à gauche.
Assignation de valeurs
reg [3:0] a;
a = 10;
a = 5;
a = 3; Vector Slices
Vous pouvez accéder à une plage de bits :
reg [15:0] word;
word[15:8] = 255; // Affecter l'octet supérieur (8'hFF = 255)
word[7:0] = 0; // Affecter l'octet inférieur (8'h00 = 0)
word[3:1] = 3'b101; // Assign a slice Défi
Le module ci-dessous a besoin de déclarations de vector.
Ce qu'il faut faire :
- Modifier chaque input et output pour qu'ils soient des vector 8-bit.
Essayez vous-même
module vector_example(
input a, // Changer en vecteur 8 bits [7:0]
input b, // Changer en vecteur 8 bits [7:0]
output c // Changer en vecteur 8 bits [7:0]
);
assign c = a & b;
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
1Introduction
Qu'est-ce que VerilogHardware vs SoftwareNiveaux d'abstraction de conceptionVotre premier moduleCommentaires4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Assignation et portes logiques
Assignation continueAssignation avec opérateursPrimitives de portes intégréesPortes AND OR NOTPortes XOR XNORRécapitulatif - Circuit à portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'ALU2Types de données
Type WireType RegEntiers et RéelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RépéterBoucle InfinieInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres avec tailleNombres sans tailleNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats de nombres6Modules
Structure d'un modulePorts d'entrée et de sortiePorts InoutInstanciation de moduleMappage de ports par nomMappage de ports par ordreRécapitulatif - Créer un module9Blocs procéduraux
Bloc AlwaysBloc InitialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - Always vs Initial12Projet Multiplexeur
Conception d'un Mux 2 vers 1Conception d'un Mux 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à états