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?
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?
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;
Lea otras preguntas en las etiquetas vhdl