Declaración de variable vectorial en el Verilog que no comienza con el MSB (por ejemplo, reg var [0] [20])

1

Estoy familiarizado con la sintaxis descrita en aquí

  

net_type [msb: lsb] list_of_net_identifiers;

     

reg [msb: lsb] list_of_register_identifiers;

Por ejemplo, para declarar la dirección de memoria de 32 bits, podría usar la sintaxis como

reg [31:0] address;

También para declarar la memoria compuesta de los 16 elementos que constan de 32 bits cada uno,

reg [31:0] mem [15:0]; 

Sin embargo, con frecuencia podría enfrentar la sintaxis como a continuación para declarar matrices multidimensionales.

reg [31:0] mem [0:15]

He buscado en Google y he encontrado un artículo relacionado en aquí .  Parece que si el número más grande viene primero o no, el primer número antes de los dos puntos (:) es el MSB y el LSB sigue. Parece que la diferencia viene de la preferencia de codificación.

Sin embargo, creo que mezclar el estilo [31: 0] y [0:15] es poco intuitivo y confuso, aunque depende de la preferencia. Pude ver mucha mezcla, especialmente en la declaración de matrices multidimensionales. ¿Por qué se permite su uso? ¿Hay alguna ventaja que no pude notar?

    
pregunta JaeHyuk Lee

1 respuesta

2

En Verilog, el orden del índice numérico de una memoria es solo una cuestión de preferencia, excepto cuando se carga la memoria desde un archivo de texto. La primera línea del archivo representa el índice left , y como la mayoría de los otros idiomas, comienza en 0, por lo que [0:15] es la forma más común de declarar un rango de memoria. De lo contrario, no hay ninguna ventaja de una manera u otra en la forma en que declara un rango de memoria, ya que solo puede hacer referencia a un elemento de memoria a la vez.

Lo mismo se puede decir acerca de un vector si nunca planea acceder a bits individuales del vector. Pero una vez que lo haga, la forma en que dirija cada bit se convierte en significativo en la posición de un valor integral.

En SystemVerilog, el orden tanto del ancho del vector como de las dimensiones de la memoria se vuelve significativo porque puede transmitir las memorias como un todo y seleccionar partes al igual que lo hace con un vector.

    
respondido por el dave_59

Lea otras preguntas en las etiquetas