Empezando con el lenguaje VHDL
Modelado estructural
Este artículo utiliza un ejemplo de comparación para mostrar la arquitectura y la escritura del código VHDL.
Descripción general del código Step0
entity my_compare is
port( A_IN : in std_logic_vector(2 downto 0) ;
B_IN : in std_logic_vector(2 downto 0) ;
EQ_OUT : out std_logic);
end my_compare;
architecture structural of my_compare is
------------------- component declarations --------------------
component big_xnor is
port ( A,B: in std_logic;
F: out std_logic);
end component;
component big_and3 is
port (A,B,C: in std_logic;
F : out std_logic);
end component;
-----------------Internal signal declarations -----------------
signal p1_out, p2_out, p3_out: std_logic;
begin
----------------Create instances of components and map ----------
x1: big_xnor port map(A=> A_IN(2), B=> B_IN(2), F => p1_out);
x2: big_xnor port map(A=> A_IN(1), B=> B_IN(1), F => p2_out);
x3: big_xnor port map(A=> A_IN(0), B=> B_IN(0), F => p3_out);
a1: big_and3 port map(A=> p1_out, B =>p2_out, C=>p3_out, F=> EQ_OUT)
end structural;
Paso 1: generar declaración de entidad de nivel superior
Diseñar puertos de entrada y salida
entity my_compare is
port( A_IN : in std_logic_vector(2 downto 0) ;
B_IN : in std_logic_vector(2 downto 0) ;
EQ_OUT : out std_logic);
end my_compare;
paso2 Declare las unidades de diseño de nivel inferior utilizadas
- Prepare las declaraciones del componente reemplazando la entidad con el componente Las
puertas XOR escritas en el pasado se escribieron usando la entidad de diseño de nivel superior. Ahora, si desea usarlo como un componente en la entidad comparadora, debe declararlo.
component big_xnor is
port ( A,B: in std_logic;
F: out std_logic);
end component;
component big_and3 is
port (A,B,C: in std_logic;
F : out std_logic);
end component;
Paso 3 Declarar señales internas
Además de la entrada y salida total, habrá algunas entradas y salidas de datos temporales en el medio de cada módulo.
Esto requiere la definición de variables internas para almacenar.
Tenga en cuenta que se coloca después del componente y antes de comenzar.
architecture structural of my_compare is
-- component declarations
component big_xnor is
port ( A,B: in std_logic;
F: out std_logic);
end component;
component big_and3 is
port (A,B,C: in std_logic;
F : out std_logic);
end component;
------- internal signal declarations--------------------------
signal p1_out, p2_out, p3_out: std_logic;
begin
-- ......
end structural;
Paso 4 Cree instancias de componentes y mapee
Para construir la correspondencia del puerto de la instancia, debe reemplazar General A, B, F con => entrada y salida reales.
begin
x1: big_xnor port map(A=> A_IN(2), B=> B_IN(2), F => p1_out);
x2: big_xnor port map(A=> A_IN(1), B=> B_IN(1), F => p2_out);
x3: big_xnor port map(A=> A_IN(0), B=> B_IN(0), F => p3_out);
a1: big_and3 port map(A=> p1_out, B =>p2_out, C=>p3_out, F=> EQ_OUT)