2010-03-10 25 views
5

Uso de VHDL Quiero tener algunos registros que almacenan 16 bits en cada uno. Entonces, encontré que VHDL tiene una matriz integrada, y quiero usarla para almacenar 16 bits en cada elemento en iy, por lo que quiero saber si VHDL asigna esta matriz a registros reales o no.Representación de hardware para matrices en VHDL

Respuesta

3

La respuesta corta es no; el tipo de matriz no se correlaciona con un registro.

La respuesta larga:

El tipo de matriz en VHDL es solo una colección indexada de elementos del mismo tipo. En su caso, probablemente use una matriz como resultado de un banco de registros.

Por lo tanto, supongamos que tiene un banco de 8 registros con 16 bits cada uno. La salida de este banco sería una matriz (de tamaño 8) de vectores de 16 bits. La declaración de componentes para este banco de registros sería algo como esto:

 
component reg8x16 
    port(
    clock: in std_logic; 
    reset: in std_logic; 
    enable: in std_logic; 
    rout : out r_array(0 to 7) 
    ); 
end component; 

rout es su gama de productos registrados desde el banco de registros. Por lo tanto, puede desviar la salida del registro 0 del banco usando rout(0), que es del tipo std_logic_vector(15 downto 0).

Además, no olvide declarar el tipo de matriz en algún lugar (generalmente en un archivo de paquete). Se vería algo como:

type r_array is array (integer range <>) of std_logic_vector(15 downto 0);

La declaración (integer range <>) es una especie de marcador de posición para el rango de índice de matriz - se llenará más tarde cuando se utiliza el tipo de matriz (por ejemplo, en nuestra declaración de componentes más arriba) .

No estoy seguro de si esto responde su pregunta o no. No entraré en los detalles de cómo crear el componente reg8x16. Básicamente, usted acaba de crear un registro de 16 bits cuya salida es del tipo std_logic_vector(15 downto 0); (puede buscar cómo hacerlo en línea ... es VHDL bastante básico). Luego solo crea una instancia de 8 de esos registros, y los pone en el componente llamado reg8x16.

3

Una matriz es como cualquier otra variable o señal: si describe un comportamiento que significa que debe recordar su estado de una marca de reloj a otra, entonces se inventarán flipflops (o bloques de memoria, si las condiciones son correctas) por el sintetizador.

1

Cualquier matriz con un rango válido se asignaría a los cables en netlist generada. Esto es bastante obvio: el hardware contiene solo puertas y cables. Algo así como un (3 downto 0) (1 a 0) haría un cable de tamaño 4x2 u 8 bits. Ahora asigna accesos individuales como a (3) (1) a índices en esta matriz de 1 dimensión. Entonces a (3) (1) es básicamente un (7).

0

página de comprobación this, consultar también la VHDL register

Básicamente se trata de una matriz de std_logic_vector con las longitudes requeridas