Generador de bits de paridad par en VHDL

0

Estoy tratando de hacer un proyecto simple en VHDL. La especificación es que toma datos de 4 bits como entrada y genera un bit de paridad (usaré este pequeño módulo en UART más adelante). Mi enfoque es que, si sumo cada bit de los datos, obtengo el número de 1 dentro. de eso Entonces, si es incluso genero 0, otra cosa 1.

Escribí tal código para este propósito:

    library IEEE;
    use IEEE.std_logic_1164.all;
    use IEEE.numeric_std.all;
    use IEEE.std_logic_unsigned.all;


    entity parity_checker is
         Port ( data : in  STD_LOGIC_VECTOR (3 downto 0);
                  even_parity_bit : out  STD_LOGIC);
    end parity_checker;

    architecture Behavioral of parity_checker is

    signal sum_of_1s : std_logic_vector (2 downto 0) := "000";

    begin

    sum_of_1s <= data(0) + data(1) + data(2) + data(3);

    if (sum_of_1s(0) = '1') then -- There is an odd number of 1's, so parity bit is 1.
    even_parity_bit <= '1';

    else
    even_parity_bit <= '0';

    end if;

    end Behavioral;

Cuando intento compilar esto, VHDL da un error y dice "+ no puedo tener tales operandos en este contexto". En la línea donde sumo los datos.

Supongo que conozco la razón, que es + no se puede realizar '1' + '1' y etc., pero se puede realizar "001" + "001" y tal. Entonces, ¿cómo debo resolver este problema mientras sigo usando mi método de sumar todos los bits?

    
pregunta Deniz Yildirim

0 respuestas

Lea otras preguntas en las etiquetas