Introducción a los pasos de programación de VHDL 01

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)
    

Supongo que te gusta

Origin blog.csdn.net/GreatSimulation/article/details/108818639
Recomendado
Clasificación