Adición de 2 valores sin signo en VHDL IEEE numeric_std: ¿por qué esta opción?

1

En VHDL, el paquete IEEE numeric_std no se comporta como uno podría esperar. La adición de dos valores sin signo codificados en 8 bits no se da en 9 bits, sino en 8 bits.

¿Cuáles son las razones de esta elección?

    
pregunta JCLL

1 respuesta

1

Esta "opción" permite que el diseñador de hardware solo maneje el desbordamiento si tiene sentido:

  • Ignorar el desbordamiento

    function add_ignore_ovf(a : unsigned(7 downto 0), b : unsigned(7 downto 0)) return unsigned(7 downto 0) is begin return a + b; end function;

    Una vez esto tiene sentido para implementar contadores de módulo 2.

  • Manejar el desbordamiento

    function add_with_ovf(a : unsigned(7 downto 0), b : unsigned(7 downto 0)) return unsigned(8 downto 0) is variable a_ext, b_ext : unsigned(8 downto 0); begin a_ext := '0' & a; b_ext := '0' & b; return a_ext + b_ext; end function;

respondido por el Lincoln

Lea otras preguntas en las etiquetas