4 votos

¿Cuál es la diferencia entre un array escalar y un array vectorial?

Primera pregunta

Tanto si declaramos el array como escalar o vectorial, podemos acceder a cada elemento bit a bit. Por ejemplo, podemos declarar dos matrices a continuación.

reg scalar_array[0:9];
reg [0:9] vector_array;  

always @*
begin
  scalar_array[0] = 1'b1;
  vector_array[0] = 1'b1;
end

Me gustaría saber si existe la diferencia entre dos declaraciones.


Segunda pregunta

Además, cuando declaro el array bidimensional como abajo, podría acceder a toda la fila usando el operador de indexación[] para la variable declarada usando una sintaxis de abajo.

reg[X:X] var_name [Y:Y];  

Sin embargo, no pude acceder a toda la fila cuando declaré el array utilizando la siguiente sintaxis.

reg var_name [X:X][Y:Y];

Me gustaría saber cómo se puede sintetizar este concepto en el hardware, y si ambos son sintetizables, cuál es la diferencia entre ellos.

reg [0:9] vector_array_2d [0:15];
reg scalar_array_2d[0:9][0:15];
always @*
begin
  vector_array_2d[0] = 'd1;
  scalar_array_2d[0] = 'd1; //raise the error!! 
end

1voto

lajuette Puntos 247

Para su primera pregunta, busque el diferencia entre matrices empaquetadas y no empaquetadas .

Tu segunda pregunta es una limitación de Verilog con los arrays sin empaquetar - sólo permite el acceso a un elemento del array a la vez. SystemVerilog no tiene esta restricción. Puedes acceder a un array sin empaquetar como un todo, o seleccionar una dimensión entera.

0voto

Aaron Thomas Puntos 101

Para la primera pregunta, la diferencia radica en cómo se debe tratar el registro: como un bus (un único valor, más amplio que un bit) o como un array (múltiples valores, almacenados bajo un mismo nombre). Parece un poco filosófico, pero esta respuesta proporciona más detalles.

Para la segunda pregunta, puede depender del fabricante o del proveedor. Por ejemplo, Xilinx Vivado sintetizará matrices multidimensionales de hasta dos dimensiones solamente (ref UG901 ).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X