Estoy realizando los primeros pasos en VHDL e ISE (de Xilinx).
He intentado crear un simple 16bit - > Convertidor de 32 bits. El convertidor recibe un complemento a 2 números (16 bits, por lo que es 1 bit para signo y 15 bits para número de módulo) y genera su forma de 32 bits.
He escrito un fragmento de código en VHDL:
library IEEE;
--using standard lib
use IEEE.STD_LOGIC_1164.ALL;
--lib provides arithmetic functions for vectors
use IEEE.NUMERIC_STD.ALL;
--using lib for operating on U2-code numbers
use IEEE.STD_LOGIC_SIGNED.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity MB_16b_to_32_conv is
Port ( X_16b : in STD_LOGIC_VECTOR (16-1 downto 0);
Y_32b : out STD_LOGIC_VECTOR (32-1 downto 0));
end MB_16b_to_32_conv;
architecture Behavioral of MB_16b_to_32_conv is
begin
Y_32b <= std_logic_vector(resize(signed(X_16b), 32-1));
end Behavioral;
ejecutar una simulación en Xilinx ISE me da un error: la entrada es "0000000000000101" y la salida es "0000000000000101U" (naranja en iSIM).
Cuando se convierte a decimal en iSIM, obtengo entrada = 5 y salida = U. No sé por qué hay una U y cómo deshacerme de ella, así que estoy buscando ayuda.