Você está na página 1de 12

Cmo incluir un componente VHDL dentro de otro

Roberto Hassell

Instanciar un componente en un proyecto


Para aadir un archivo a su proyecto vaya a Project > Add source selecciona el archivo, y el mismo se incluye dentro de su proyecto.

Abra el archivo principal (main.vhd) y copie el encabezado entity del archivo que quiere incluir justo despus de architecture:

Del archivo fuente (por ejemplo, el del flip flop o el contador de frecuencia)

Al archivo de destino (el archivo principal de su proyecto). RECUERDE QUE DEBE CAMBIAR ENTITY por COMPONENT y colocarlo despus de architecture y finalizar con END COMPONENT

Luego debe incluir la siguiente sentencia en su cdigo, justo despus de BEGIN: Nombre : component nombre_del_componente Port Map (seal_componente => seal_en_circuito_princial, ) El ejemplo que se incluye aclara un poco la sintaxis. Las partes en azul siempre se incluyen. El nombre puede ser el que usted desee (procure que sea descriptivo). El resto de las partes depende del nombre que tengan los componentes y seales que vaya a aadir

Ejemplo
Usted quiere incluir un flip flop en su proyecto. Dentro de su archivo principal del proyecto incluye el encabezado del flip flop, recordando las palabras clave component y colocndolo justo despus de la declaracin de Architechture pero antes de Begin

architecture Behavioral of main is component flip_flop_d is Port ( d : in STD_LOGIC; r : in STD_LOGIC; s : in STD_LOGIC; clk : in STD_LOGIC; q : out STD_LOGIC); end component;

Declaracin de los signals


Los signals son seales internas que no son ni entradas ni salidas Se declaran antes del begin pero despus del Architecture Sirven para hacer conexiones entre los diversos components del circuito La sintaxis es SIGNAL nombredelsignal : STD_LOGIC;

Inclusin del componente en el circuito


El componente se incluye llamndolo por el nombre (en este caso ff1) ff1 : component flip_flop_d port map (d => q3_s, s => s, r => r, clk => clk_in, q => q0_s); * Recuerde que las seales (en verde) son las seales del circuito y las que estn en naranja son las conexiones del componente tal y como lo defini en el encabezado

Cdigo de proyecto de ejemplo


ste es el cdigo del archivo flip_flop_d.vhd Este es el que se incluye como componente del archivo principal

El archivo principal (main.vhd) queda como:


library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity main is Port ( clk : in STD_LOGIC; s : in STD_LOGIC;

r : in STD_LOGIC;
Q0 : out STD_LOGIC; Q1 : out STD_LOGIC );

end main;

architecture Behavioral of main is


component flip_flop_d is Port ( d : in STD_LOGIC; r : in STD_LOGIC; s : in STD_LOGIC; clk : in STD_LOGIC; q : out STD_LOGIC); end component;

En esta parte se aaden los components al encabezado

component ClkDiv is Port ( clkin : in STD_LOGIC; clkout : out STD_LOGIC:='0'); end component;

signal clk_in : std_logic; signal q0_s,q1_s : std_logic; begin

Finalmente, en el archivo principal y luego de aadir los componentes se colocan los signals que sirven para la conexin de los elementos y se llama a los mismos luego de la declaracin begin

ff1 : component flip_flop_d port map (d => q1_s, s => s, r => r, clk => clk_in, q => q0_s); ff2 : component flip_flop_d port map (d => q0_s, s => '0', r => '0', clk => clk_in, q => q1_s); clk_c : component clkdiv port map (clkin => clk, clkout => clk_in); q1 <= q1_s; q0 <= q0_s; end Behavioral;

Você também pode gostar