Sized Numbers
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 14 sur 90.
Il existe une manière de déclarer un nombre avec une taille spécifique en Verilog. On l'appelle un nombre dimensionné. C'est utile, car cela évite toute confusion concernant le nombre de bits de votre nombre et garantit que votre matériel se comporte exactement comme prévu.
Un nombre avec taille respecte ce format : [bits]'[format][value]
<strong>bits</strong>: le nombre de bits (par exemple,8)<strong>'</strong>: une apostrophe qui sépare la taille du format (obligatoire)
<strong>format</strong>: la base du nombre :bpour le binaire,dpour le décimal,hpour l’hexadécimal ouopour l’octal<strong>value</strong>: le nombre réel (par exemple,1010)
Par exemple :
4'b1010: 4 bits, binaire 1010 (décimal 10)8'd255: 8 bits, décimal 255 (binaire 11111111)16'hFF: 16 bits, hexadécimal FF (binaire 0000000011111111)3'b1: 3 bits, binaire 001 (les bits de gauche sont remplis de zéros)
Exemple de code :
reg [7:0] data;
data = 8'b10101010; // 8 bits, binary 10101010
data = 8'd170; // 8 bits, décimal 170
data = 8'hAA; // 8 bits, hex AALes trois exemples attribuent la même valeur à data.
Pourquoi la taille est importante
Sans taille :
reg [7:0] data;
data = 1; // Que signifie ceci ? 1 bit ? 8 bits ?Verilog suppose par défaut que les petits nombres font 32 bits, ce qui peut entraîner des problèmes.
Avec une taille :
reg [7:0] data;
data = 8'b00000001; // Clear: 8-bit value 1Remplissage par des zéros
Lorsque vous affectez une valeur plus petite à un vecteur plus grand, Verilog remplit les bits de gauche avec des zéros :
reg [7:0] data;
data = 4'b1010; // Becomes 8'b00001010Défi
Complétez le code en écrivant les nombres de la taille correcte.
What faire :
- Définissez
acomme un nombre binaire de 8 bits pour 170 en decimal (binary 10101010) - Définissez
bcomme un nombre binaire de 4 bits pour 12 en decimal (binary 1100) - Définissez
ccomme un nombre hexadécimal de 16 bits pour 255 en decimal (hex FF)
Essayez vous-même
module sized_challenge;
reg [7:0] a;
reg [3:0] b;
reg [15:0] c;
initial begin
a = ______; // binaire 8 bits pour 170 (10101010)
b = ______; // binaire 4 bits pour 12 (1100)
c = ______; // hexadécimal 16 bits pour 255 (FF)
$display("a = %b", a);
$display("b = %b", b);
$display("c = %h", c);
$finish;
end
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 VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicEntraînez-vous par vous-même : Compilateur Verilog en ligne