Hace poco estuve probando cosas en VHDL y pasé por un ejercicio más o menos parecido al tuyo. Hace que si bien tu pregunta tiene más de seis meses, quizás mí comentario le sirva a otro que también esté ocupado en ese lenguaje de descripción.
Para abordar el ejercicio que pusiste, primero necesitas determinar las ecuaciones lógicas que describen la salida en función de las entradas. En este caso, la salida será alta (1) cuando un número impar de entradas sean altas (1).
Puedes utilizar la lógica XOR (exclusiva O) para implementar esta condición. La función XOR devuelve un valor alto (1) cuando el número de entradas altas es impar. Entonces, puedes expresar la salida como la operación XOR de todas las entradas.
Aquí tienes un ejemplo de cómo podrías escribir el código VHDL para este circuito:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Circuito_Impar is
Port ( A, B, C, D : in STD_LOGIC;
Salida : out STD_LOGIC);
end Circuito_Impar;
architecture Behavioral of Circuito_Impar is
begin
-- Ecuaciones lógicas para la salida
Salida <= (A xor B xor C xor D);
end Behavioral;
Este código define una entidad llamada
Circuito_Impar con cuatro entradas (A, B, C y D) y una salida (Salida). La arquitectura implementa la ecuación lógica utilizando la operación XOR para todas las entradas. Cuando el número de entradas altas es impar, la salida será alta (1); de lo contrario, será baja (0).
Después de escribir el código VHDL, puedes compilarlo en Quartus II y simular el circuito para ver si funciona.