Tengo un simple componente de divisor de reloj basado en registro que puedo ingresar cuando no tengo un PLL de repuesto:
library IEEE;
use IEEE.std_logic_1164.ALL;
use IEEE.numeric_std.ALL;
entity div128 is
port(
inclk0 : in std_logic;
locked : out std_logic;
c0 : out std_logic
);
end entity;
architecture syn of div128 is
begin
div : process(inclk0) is
variable counter : unsigned(6 downto 0);
begin
if(rising_edge(inclk0)) then
counter := counter + 1;
c0 <= counter(6);
end if;
end process;
locked <= '1';
end architecture;
Ahora me gustaría reutilizar este componente en múltiples lugares, en diferentes dominios de reloj, sin repetirme más a menudo que estrictamente necesario.
-
¿Debo crear una declaración
create_generated_clock
para cada instancia, o puedo especificar una vez que cada instancia genere un reloj-divide_by 128
desde su entrada? -
¿También podría extraer el divisor de un parámetro
generic
y transferirlo a las restricciones de tiempo? -
¿Tendría sentido usar atributos aquí en lugar de un archivo SDC?