Necesita ayuda para implementar el sumador de 4 bits con comprobación de desbordamiento (VHDL)

0

Estoy tratando de implementar un sumador / restador de 4 bits que suma o resta dos números A y B del complemento de 4 bits 2, donde la señal de control SB elige qué operación se realiza cambiando el valor de b de positivo a negativo. También necesitamos chequeo de desbordamiento. Esto es lo que tenemos hasta ahora:

    library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity add_sub_4bit is
    Port ( a : in  STD_LOGIC_VECTOR(3 downto 0);
           b : in  STD_LOGIC_VECTOR(3 downto 0);
              sel: in STD_LOGIC;
           sum : out  STD_LOGIC_VECTOR(3 downto 0);
              overflow: out STD_LOGIC );
end add_sub_4bit;

architecture Behavioral of add_sub_4bit is
    signal localsum: STD_LOGIC_VECTOR(3 downto 0);
    signal localover: STD_LOGIC;
begin
    localsum <= a + b when sel='0' 
    else 
    a - b +"0001";
    sum <= localsum;

process (a,b,localsum,localover) begin
    if a(3) = '0' AND b(3) = '0' AND localsum(3) = '1' then
        localover <= '1'; 
    elsif  a(3) = '1' AND b(3) = '1' AND localsum(3) = '0' then
        localover <='1';
    else
        localover <='0';
    end if;
end process;
    overflow<= localover;

end Behavioral;

He logrado implementar la comprobación de desbordamiento si ambos bits son positivos o si ambos son negativos. Sin embargo, no estoy seguro de que se pueda hacer mejor o de forma más confiable. Por ejemplo, si obtiene A = -2 (1110) y B = 7 (0111) por lo que el primero es negativo y el siguiente es positivo, los resultados serán incorrectos para mí, porque el programa no maneja ese caso y no estoy seguro de cómo manejarlo con exactitud.

Por lo tanto, le agradecería que me aconsejara cómo implementar la comprobación de bits en el caso de que los signos de las entradas no sean idénticos, soy muy nuevo en VHDL.

    
pregunta nana

0 respuestas

Lea otras preguntas en las etiquetas