Gibt es eine effizientere Möglichkeit, einen Anfangswert für eine Variable zu registrieren als
reg [3:0] COUNT = 4'b0000;
Wo müsste ich in diesem Fall, wenn ich beispielsweise einen 32-Bit-COUNT definieren würde, 32'b (hier 32 Nullen) schreiben?
Nichts sagt, dass Sie immer alle Nullen in Binärbasis angeben müssen. Eigentlich kann man es so schreiben:
reg [31:0] COUNT = 32'd0;
....mit einer Dezimalbasis. Der Verilog erweitert diese dezimale Null auf die angegebene 32-Bit-Breite.
Verilog füllt schmale ganzzahlige Werte immer links mit Nullen auf, wenn sie breiteren Variablen zugewiesen werden, und schneidet links ab, wenn breitere schmalere Variablen zugewiesen werden. Du hättest also schreiben können
reg [31:0] COUNT = 0;
Das Verilog-Zeichen wird erweitert, wenn die Variablen alle vorzeichenbehaftete Datentypen sind. Die Regeln werden kniffliger, wenn Sie Operanden von vorzeichenbehafteten und vorzeichenlosen Typen mischen.
Tom Tischler
32'b0
wird genauso gut funktionieren, so wird32'h0
. Verilog füllt jede "vorzeichenlose" Konstante mit Nullen und jede "vorzeichenbehaftete" Konstante mit Kopien des MSB auf.Prakash Darji
reg [WIDTH -1: 0] count = {WIDTH{1'b0}}
kann auch benutzt werden.