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?