¿Existe una forma más eficiente de registrar un valor inicial para una variable que
reg [3:0] COUNT = 4'b0000;
¿dónde, en este caso, si tuviera que definir, por ejemplo, un COUNT de 32 bits, necesitaría escribir 32'b (32 ceros aquí)?
Nada dice que siempre necesita especificar todos los ceros en base binaria. De hecho, puedes escribirlo así:
reg [31:0] COUNT = 32'd0;
....utilizando una base decimal. El Verilog extenderá ese cero decimal al ancho de 32 bits especificado.
Verilog siempre rellena los valores integrales estrechos con ceros a la izquierda cuando asigna variables más anchas, y los trunca a la izquierda cuando asigna variables más anchas a variables más estrechas. Así que podrías haber escrito
reg [31:0] COUNT = 0;
El signo de Verilog se extiende cuando todas las variables son tipos de datos firmados. Hay reglas que se vuelven más complicadas cuando mezclas operandos de tipos firmados y no firmados.
tom carpintero
32'b0
funcionará igual de bien, también lo hará32'h0
. Verilog rellenará cualquier constante 'sin firmar' con ceros y cualquier constante 'firmada' con copias del MSB.Prakash Darji
reg [WIDTH -1: 0] count = {WIDTH{1'b0}}
también puede ser usado.