Recientemente comencé a utilizar registros para las definiciones de mis puertos, especialmente si deseo agrupar señales que pertenecen a una determinada interfaz. Sin embargo, el problema que estoy enfrentando aquí es que no puedo pasar, digamos el ancho de un std_logic_vector, a la entidad por medio de un genérico. Así que, básicamente, lo que quiero hacer es la siguiente:Pasar genéricos a tipos de puerto de registro
library ieee;
use ieee.std_logic_1164.all;
use work.math_pkg.all;
package fifo_pkg is
type fifo_in_type is record
data_in : std_logic_vector(DATA_WIDTH_??- 1 downto 0);
rd : std_logic;
wr : std_logic;
end record;
type fifo_out_type is record
data_out : std_logic_vector(DATA_WIDTH_?? - 1 downto 0);
empty : std_logic;
full : std_logic;
end record;
component fifo is
generic
(
MIN_DEPTH : integer;
DATA_WIDTH : integer
);
port
(
clk : in std_logic;
res_n : in std_logic;
i : in fifo_in_type;
o : out fifo_out_type
);
end component fifo;
end fifo_pkg;
así que la solución ideal sería cuando puedo utilizar el mismo genérico en mi expediente como lo hice en la entidad. (Entonces DATA_WIDTH es igual que DATA_WIDTH_ ??). Sé que esto debería funcionar de alguna manera con vhdl 2008, sin embargo mi quartus II 11sp1 no es compatible con los genéricos en los registros.
¿Existe una forma elegante de lograr ese tipo de "aprobación genérica" que se puede sintetizar? Sé que uno podría simplemente almacenar una constante en el paquete, pero luego no puedo usar el mismo paquete fifo para crear instancias de varias fifo con diferentes anchos.
Un millón de gracias, T
Hola Martin, Gracias por las sugerencias, ambos son bonitos y elegantes. Sin embargo, esto no funciona en Quartus versión 11.0 sp1. Parece que el quartus solo admite un subconjunto muy limitado de vhdl 2008 hasta el momento. ¿Alguna otra idea para hacer esto? Me pregunto si eso funcionaría con Synplify ... Gracias, T – user1017739
Es una pena (sobre Quartus), pero no del todo inesperada. El archivo de ayuda Synplify implica que no conoce los registros con matrices * sin restricciones y * tipos genéricos. –
sí, eso es un poco decepcionante :( – user1017739