Quiero dar dos datos de entrada de mi banco de pruebas desde un archivo que contiene bits (std_logic_victor (15 downto 0) a alguna operación aritmética entre el punto fijo y los archivos, pero cuando comienza, veo los siguientes mensajes en la consola:
Error a 200.000 ns: lectura de Textio :: llamada en una cadena o línea vacía a 200.000 ns: Error: LEER (STD_ULOGIC_VECTOR) Error: carácter '
PS: los datos se envían por dos FIFO
mi banco de pruebas:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
USE ieee.numeric_std.ALL;
use IEEE.STD_LOGIC_TEXTIO.ALL;
library std;
use std.textio.all;
library work;
use WORK .fixed_pkg.all;
use work.fixed_float_types.all;
ENTITY LST1_tb_vhd IS
END LST1_tb_vhd;
ARCHITECTURE behavior OF LST1_tb_vhd IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT LST_module
PORT(
clock_l : IN std_logic;
reset_l : IN std_logic;
read_en_l : IN std_logic;
write_en_l : IN std_logic;
outlar : IN std_logic_vector(15 downto 0);
outlar2 : IN std_logic_vector(15 downto 0);
LST_A : OUT std_logic_vector(15 downto 0);
LST_B : OUT std_logic_vector(15 downto 0);
LST1 : OUT ufixed (14 downto -11)
);
END COMPONENT;
--Inputs
SIGNAL clock_l : std_logic := '0';
SIGNAL reset_l : std_logic := '0';
SIGNAL read_en_l : std_logic := '0';
SIGNAL write_en_l : std_logic := '0';
SIGNAL outlar : std_logic_vector(15 downto 0) := (others=>'0');
SIGNAL outlar2 : std_logic_vector(15 downto 0) := (others=>'0');
--Outputs
SIGNAL LST_A : std_logic_vector(15 downto 0);
SIGNAL LST_B : std_logic_vector(15 downto 0);
SIGNAL LST1 : ufixed (14 downto -11);
constant PERIOD : time := 40 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)^
uut: LST_module PORT MAP(
clock_l => clock_l,
reset_l => reset_l,
read_en_l => read_en_l,
write_en_l => write_en_l,
outlar => outlar,
outlar2 => outlar2,
LST_A => LST_A,
LST_B => LST_B,
LST1 => LST1
);
tb : PROCESS
BEGIN
-- PROCESS TO CONTROL THE CLOCK
clock_l <= '1';
WAIT FOR PERIOD/2;
clock_l <= '0';
WAIT FOR PERIOD/2;
END PROCESS;
-- *** Test Bench - User Defined Section ***
tb2 : PROCESS
file myfile:text open read_mode is "C:\Users\hp\Desktop\LST1.txt";
file myfile2:text open read_mode is "C:\Users\hp\Desktop\LST2.txt";
file myfile3:text open write_mode is "C:\Users\hp\Desktop\add5.txt";
variable X: std_logic_vector(15 downto 0) := (others => '0');
variable Y: std_logic_vector(15 downto 0) := (others => '0');
variable L: LINE;
BEGIN
WAIT FOR PERIOD ;
reset_l <= '0';
read_en_l <= '0';
WAIT FOR PERIOD ;
reset_l <= '1';
write_en_l <= '0';
WAIT FOR PERIOD ;
WAIT FOR PERIOD ;
WAIT FOR PERIOD ;
while not ENDFILE(myfile) loop
while not ENDFILE(myfile2) loop
READLINE(myfile, L);
READ(L,X);
READLINE(myfile2, L);
READ(L,Y);
write_en_l <= '1';
outlar <= X;
outlar2 <= Y;
WAIT FOR PERIOD;
write_en_l <= '0';
WAIT FOR PERIOD;
read_en_l <= '1';
LST_A <= outlar;
LST_B <= outlar2;
WAIT FOR PERIOD ;
write(L,LST1);
writeline(myfile3,L);
wait for PERIOD;
wait for PERIOD;
read_en_l <= '0';
end loop;
end loop;
file_close(myfile);
file_close(myfile2);
END PROCESS;
END behavior;
PS: los datos de los archivos son bits de 1 y 0 codificados en 16 bits
-
LST1:
0000011110101010 0000000000101010 0000001000000001 0000011110101010 0000000000101010 0000001000000001 0000011110101010 0000000000101010 0000001000000001
LST2:
0000001010101010 0000001000001010 0000110000000001 0000000010101010 0000000000001010 0000000011000001 0000000010101010 0000000000001010 0000000000000001
También dame alguna advertencia: : HDLParsers: 3583 - Archivo "C: /Xilinx92i/vhdl/src/ieee/std_logic_unsigned.vhd" qué archivo "C: /Xilinx92i/LST_part1/FIFO.vhd" depende de que se haya modificado, pero no se ha compilado. Es posible que deba compilar "C: /Xilinx92i/vhdl/src/ieee/std_logic_unsigned.vhd". ADVERTENCIA: HDLParsers: 3583 - Archivo "C: /Xilinx92i/vhdl/src/ieee/std_logic_1164.vhd" cuyo archivo "C: /Xilinx92i/LST_part1/FIFO.vhd" depende de que se haya modificado, pero no se ha compilado. Es posible que deba compilar "C: /Xilinx92i/vhdl/src/ieee/std_logic_1164.vhd". ADVERTENCIA: HDLParsers: 3583 - Archivo "C: /Xilinx92i/vhdl/src/ieee/std_logic_1164.vhd" cuyo archivo "C: /Xilinx92i/LST_part1/LST_FIFO.vhd" depende de que se haya modificado, pero no se ha compilado. Es posible que deba compilar "C: /Xilinx92i/vhdl/src/ieee/std_logic_1164.vhd". ADVERTENCIA: HDLParsers: 3583 - Archivo "C: /Xilinx92i/vhdl/src/ieee/numeric_std.vhd" qué archivo "C: /Xilinx92i/LST_part1/LST1_Top_Module.vhd" depende de que se haya modificado, pero no se ha compilado. Es posible que deba compilar "C: /Xilinx92i/vhdl/src/ieee/numeric_std.vhd". ADVERTENCIA: HDLParsers: 3583 - Archivo "C: /Xilinx92i/vhdl/src/ieee/std_logic_1164.vhd" cuyo archivo "C: /Xilinx92i/LST_part1/LST1_Top_Module.vhd" depende de que se haya modificado, pero no se ha compilado. Es posible que deba compilar "C: /Xilinx92i/vhdl/src/ieee/std_logic_1164.vhd". ADVERTENCIA: HDLParsers: 3583 - Archivo "C: /Xilinx92i/LST_part1/xst/work/fixed_float_types.vhd" cuyo archivo "C: /Xilinx92i/LST_part1/LST1_Top_Module.vhd" depende de que se haya modificado, pero no se ha realizado. Es posible que deba compilar "C: /Xilinx92i/LST_part1/xst/work/fixed_float_types.vhd". ADVERTENCIA: HDLParsers: 3583 - Archivo "C: /Xilinx92i/LST_part1/xst/work/fixed_pkg_c.vhd" qué archivo "C: /Xilinx92i/LST_part1/LST1_Top_Module.vhd" depende de que se haya modificado, pero no se ha compilado. Es posible que necesites compilar