|
|
LIBRARY ieee;
|
|
|
USE ieee.std_logic_1164.ALL;
|
|
|
USE ieee.numeric_std.ALL;
|
|
|
|
|
|
LIBRARY std;
|
|
|
USE std.textio.ALL;
|
|
|
|
|
|
ENTITY lfr_output_save IS
|
|
|
GENERIC(
|
|
|
FNAME : STRING := "output.txt"
|
|
|
);
|
|
|
PORT(
|
|
|
end_of_simu : IN STD_LOGIC;
|
|
|
timestamp : IN integer;
|
|
|
|
|
|
-- DAC --------------------------------------------------------------------
|
|
|
DAC_SDO : in STD_LOGIC;
|
|
|
DAC_SCK : in STD_LOGIC;
|
|
|
DAC_SYNC : in STD_LOGIC;
|
|
|
DAC_CAL_EN : in STD_LOGIC;
|
|
|
-- BIAS_FAIL --------------------------------------------------------------
|
|
|
bias_fail_sw : in STD_LOGIC
|
|
|
);
|
|
|
END lfr_output_save;
|
|
|
|
|
|
ARCHITECTURE beh OF lfr_output_save IS
|
|
|
|
|
|
FILE output_file : TEXT OPEN write_mode IS FNAME;
|
|
|
|
|
|
SIGNAL CAL_VALUE_data_v : STD_LOGIC_VECTOR(15 DOWNTO 0) := (OTHERS => '0');
|
|
|
SIGNAL CAL_VALUE_valid_v : STD_LOGIC_VECTOR(16 DOWNTO 0) := (OTHERS => '0');
|
|
|
|
|
|
SIGNAL CAL_VALUE_data : STD_LOGIC_VECTOR(15 DOWNTO 0);
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
-- Data orginization in the output file :
|
|
|
-----------------------------------------------------------------------------
|
|
|
-- Exemple of output.txt file :
|
|
|
-- TIME CAL_VALUE CAL_ENABLE BIAS_FAIL_VALUE
|
|
|
-- TIME CAL_VALUE CAL_ENABLE BIAS_FAIL_VALUE
|
|
|
-----------------------------------------------------------------------------
|
|
|
-- TIME : integer. Current time (in ns)
|
|
|
-- others : integer(0 to 255). Current value.
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
-- DAC : SPI to Parralel
|
|
|
PROCESS (DAC_SCK) IS
|
|
|
BEGIN -- PROCESS
|
|
|
IF DAC_SCK'event AND DAC_SCK = '1' THEN -- rising clock edge
|
|
|
CAL_VALUE_valid_v(0) <= '0';
|
|
|
CAL_VALUE_valid_v(16 DOWNTO 1) <= CAL_VALUE_valid_v(15 DOWNTO 0);
|
|
|
IF DAC_SYNC = '1' THEN
|
|
|
CAL_VALUE_valid_v(0) <= '1';
|
|
|
END IF;
|
|
|
CAL_VALUE_data_v(15 DOWNTO 0) <= CAL_VALUE_data_v(14 DOWNTO 0) & DAC_SDO;
|
|
|
END IF;
|
|
|
END PROCESS;
|
|
|
|
|
|
CAL_VALUE_data <= CAL_VALUE_data_v WHEN CAL_VALUE_valid_v(16) = '1';
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
--
|
|
|
PROCESS(end_of_simu, CAL_VALUE_data, DAC_CAL_EN, bias_fail_sw)
|
|
|
VARIABLE line_var : LINE;
|
|
|
BEGIN
|
|
|
IF end_of_simu = '1' THEN
|
|
|
file_close(output_file);
|
|
|
ELSE
|
|
|
write(line_var, INTEGER'IMAGE(timestamp));
|
|
|
write(line_var," " & INTEGER'IMAGE(to_integer(UNSIGNED(CAL_VALUE_data))));
|
|
|
write(line_var," " & STD_LOGIC'IMAGE(DAC_CAL_EN));
|
|
|
write(line_var," " & STD_LOGIC'IMAGE(bias_fail_sw));
|
|
|
writeline(output_file, line_var);
|
|
|
END IF;
|
|
|
END PROCESS;
|
|
|
|
|
|
END beh;
|
|
|
|