He implementado un componente de sumador simple con dos entradas y una salida.
port ( A,B : in std_logic_vector(31 downto 0);
R : out std_logic_vector(31 downto 0)
);
Creé un banco de pruebas para probar este componente. Luego modifiqué este banco de pruebas para leer las entradas de un archivo de texto y para escribir los resultados en un archivo de texto. Actualmente las entradas deben ser cadenas binarias; De manera similar, la salida se escribe como una cadena binaria.
Ahora mejoraría este banco de pruebas para leer las entradas como valor entero del archivo de texto. Pude hacer este cambio con éxito. Pero también me gustaría que la salida se escribiera como un entero: en este caso, el compilador informa de un error en una línea del siguiente código fuente.
architecture tb4 of tb4_AdderBehav is
component AdderBehav is
port ( A,B : in std_logic_vector(31 downto 0);
R : out std_logic_vector(31 downto 0)
);
end component;
signal A,B : std_logic_vector(31 downto 0);
signal R : std_logic_vector(31 downto 0);
begin
dut: AdderBehav port map (A,B,R);
process
variable tbInputs, tbOutput : line;
variable va, vb, vr : integer;
file data_file : text;
file result_file : text;
begin
file_open(data_file,"dati_int.txt",READ_MODE);
file_open(result_file,"risultati_int.txt",WRITE_MODE);
while not endfile(data_file) loop
readline(data_file,tbInputs); read(tbInputs,va); read(tbInputs,vb);
A <= conv_std_logic_vector(va, A'length);
B <= conv_std_logic_vector(vb, B'length);
wait for 10 ns;
--vr := conv_integer(R); -- ERROR: No feasible entries for subprogram "CONV_INTEGER"
--write(tbOutput,vr);
write(tbOutput,R);
writeline(result_file,tbOutput);
end loop;
file_close(data_file);
file_close(result_file);
wait;
end process;
end tb4;
¿Por qué ocurre el error en el código fuente que se muestra arriba? En el código fuente he incluido las siguientes bibliotecas:
ieee.std_logic_1164.all;
ieee.std_logic_textio.all;
ieee.std_logic_arith.all;
ieee.numeric_std.all;
std.textio.all;