##// END OF EJS Templates
Added lfr_output_save module in lpp_sim lib :...
Added lfr_output_save module in lpp_sim lib : this module permits to write in file all evolution of the analog LFR's output during a simulation Added test Test_DAC_to_File : an implementation example of lfr_output_save module.

File last commit:

r688:c0c43c9d60f1 tip Simu-LFR-FM
r688:c0c43c9d60f1 tip Simu-LFR-FM
Show More
lfr_output_save.vhd
85 lines | 2.7 KiB | text/x-vhdl | VhdlLexer
/ lib / lpp / lpp_sim / lfr_output_save.vhd
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;