Lo siento por la cantidad de código por adelantado (agregué el código ya que no estaba seguro de que sea necesario aquí para resolver mi problema).
Mi objetivo principal es vincular dos componentes que están juntos en dos archivos .vhd
en un bloque en un tercer archivo.
Digamos que tengo el siguiente código en mi archivo chooser.vhd :
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
use work.all;
entity chooser is
port(
clk, rst : in std_logic;
DATA : in std_logic_vector(4 downto 0);
A : out std_logic_vector(4 downto 0);
Src : in std_logic_vector(1 downto 0);
SOp : in std_logic_vector(1 downto 0);
debug : out std_logic_vector(4 downto 0)
);
end entity;
architecture structural of chooser is
-- here
begin
end architecture;
Y que tengo dos componentes en otros dos archivos llamados registry.vhd y MUX3x5.vhd
MUX3x5.vhd
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity MUX3x5 is
port(
IN0 : in std_logic_vector(4 downto 0);
IN1 : in std_logic_vector(4 downto 0);
IN2 : in std_logic_vector(4 downto 0);
SEL : in std_logic_vector(1 downto 0);
O : out std_logic_vector(4 downto 0)
);
end entity;
architecture behaviour of MUX3x5 is
...
end architecture;
registry.vhd tiene una salida de 5 bits
Quiero conectarlos como sigue dentro de chooser.vhd registro - > MUX3x5 (en la segunda entrada). ¿Cómo hago eso en la arquitectura de mi elección arriba?
¿Debo declararlos como componentes con sus puertos como se ve en la declaración de la entidad en los archivos originales de los componentes en la arquitectura y luego enrutarlos en el mapa del puerto? Al igual que:
Attempt
architecture structural of chooser is
signal -- signals here
-- copy of the inputs/outputs in the entity declaration in the file above
component MUX3x5 is
port(
IN0 : in std_logic_vector(4 downto 0);
IN1 : in std_logic_vector(4 downto 0);
IN2 : in std_logic_vector(4 downto 0);
SEL : in std_logic_vector(1 downto 0);
O : out std_logic_vector(4 downto 0)
);
end component;
component registry is
port(
-- some signals here
TS : out std_logic_vector(4 downto 0)
);
begin
-- port map here
port map(
TS => IN1;
-- other maps
);
end architecture;