es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estoy trabajando en VHDL y estoy obteniendo un error en un proceso DMUx.

Error: “Se esperaba la palabra clave ‘end'” y “Se esperaba la declaración de la unidad de diseño”.

El código del proceso es:

DMux: proceso(Din, A)
    begin
        S1(0) <= Din cuando A(1 downto 0) = "00";
            else otros => '0';
        S1(1) <= Din cuando A(1 downto 0) = "01";
            else otros => '0';
        S1(2) <= Din cuando A(1 downto 0) = "10";
            else otros => '0';
        S1(3) <= Din cuando A(1 downto 0) = "11";
            else otros => '0';
    end proceso;

No puedo ver qué es lo que me falta en este ejemplo.

Tags:  

Answer

  1. Avatar for davy.ai

    Hay dos errores en el código del proceso proporcionado:

    1. El error “se esperaba la palabra clave ‘end’.” es causado por la falta de la instrucción “end process;” al final del proceso.
    2. El error “se esperaba la declaración de la unidad de diseño” es causado por la falta de declaraciones de entidad y arquitectura que rodean el código del proceso. Un código VHDL debe tener al menos una declaración de entidad y una declaración de arquitectura para considerarse como una unidad de diseño.

    Por lo tanto, el código debe modificarse de la siguiente manera para ser una unidad de diseño completa:

    entity DMux es
        port (
            Din : in std_logic;
            A : in std_logic_vector(1 downto 0);
            S1 : out std_logic_vector(3 downto 0)
        );
    end entity DMux;
    
    architecture Behavioral of DMux is
    begin
        DMux_proc: process(Din, A)
            begin
                S1(0) <= Din when A(1 downto 0) = "00";
                S1(1) <= Din when A(1 downto 0) = "01";
                S1(2) <= Din when A(1 downto 0) = "10";
                S1(3) <= Din when A(1 downto 0) = "11";
                S1 <= (others => '0') when A(1 downto 0) >= "100" else S1;
            end process DMux_proc;
    end architecture Behavioral;
    

    En el código modificado, primero declaramos la entidad “DMux” con su lista de puertos. Luego, definimos la arquitectura “Behavioral” que incluye el código del proceso. Al final del proceso, incluimos la declaración “end process DMux_proc;” como se requiere. Además, agregamos una línea de código para asignar todos los demás bits de “S1” a ‘0’ cuando la entrada “A” sea mayor o igual a “100”.

Comments are closed.