##// 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
tb.vhd
150 lines | 3.4 KiB | text/x-vhdl | VhdlLexer
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
USE IEEE.std_logic_signed.ALL;
USE IEEE.MATH_real.ALL;
LIBRARY techmap;
USE techmap.gencomp.ALL;
LIBRARY std;
USE std.textio.ALL;
LIBRARY opencores;
USE opencores.spwpkg.ALL;
USE opencores.spwambapkg.ALL;
LIBRARY lpp;
USE lpp.lpp_sim_pkg.ALL;
USE lpp.lpp_cna.ALL;
ENTITY testbench IS
END;
ARCHITECTURE behav OF testbench IS
SIGNAL TSTAMP : INTEGER := 0;
SIGNAL clk_25 : STD_LOGIC := '0';
SIGNAL rstn_25 : STD_LOGIC;
SIGNAL end_of_simu : STD_LOGIC := '0';
SIGNAL DATA : STD_LOGIC_VECTOR(15 DOWNTO 0) := (OTHERS => '0');
SIGNAL SMP_CLK : STD_LOGIC := '1';
SIGNAL DAC_SYNC : STD_LOGIC;
SIGNAL DAC_DOUT : STD_LOGIC;
SIGNAL DAC_SCLK : STD_LOGIC;
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);
SIGNAL CAL_VALUE_valid : STD_LOGIC;
SIGNAL DAC_CAL_EN : STD_LOGIC;
SIGNAL bias_fail_sw : STD_LOGIC;
BEGIN
-----------------------------------------------------------------------------
-- SIM GLOBAL RUN
-----------------------------------------------------------------------------
PROCESS IS
BEGIN -- PROCESS
WAIT FOR 200 us;
end_of_simu <= '1';
WAIT;
END PROCESS;
-----------------------------------------------------------------------------
-- CLOCK and RESET
-----------------------------------------------------------------------------
PROCESS
BEGIN -- PROCESS
WAIT UNTIL clk_25 = '1';
rstn_25 <= '0';
WAIT UNTIL clk_25 = '1';
WAIT UNTIL clk_25 = '1';
WAIT UNTIL clk_25 = '1';
rstn_25 <= '1';
WAIT FOR 10 us;
DAC_CAL_EN <= '0';
WAIT FOR 1 us;
bias_fail_sw <= '0';
WAIT FOR 100 us;
DAC_CAL_EN <= '1';
WAIT FOR 1 us;
bias_fail_sw <= '1';
WAIT UNTIL end_of_simu = '1';
WAIT FOR 10 ps;
ASSERT false REPORT "end of test" SEVERITY note;
-- Wait forever; this will finish the simulation.
WAIT;
END PROCESS;
-----------------------------------------------------------------------------
clk_25_gen : PROCESS
BEGIN
IF end_of_simu /= '1' THEN
clk_25 <= NOT clk_25;
TSTAMP <= TSTAMP+20;
WAIT FOR 20 ns;
ELSE
WAIT FOR 20 ps;
ASSERT false REPORT "end of test" SEVERITY note;
WAIT;
END IF;
END PROCESS;
-----------------------------------------------------------------------------
clk_SMP_gen : PROCESS
BEGIN
IF end_of_simu /= '1' THEN
SMP_CLK <= NOT SMP_CLK;
IF SMP_CLK = '0' THEN
DATA <= DATA + 3;
END IF;
WAIT FOR 5000101 ps;
ELSE
WAIT FOR 20 ps;
ASSERT false REPORT "end of test" SEVERITY note;
WAIT;
END IF;
END PROCESS;
SPI_DAC_DRIVER_1: SPI_DAC_DRIVER
GENERIC MAP (
datawidth => 16,
MSBFIRST => 1)
PORT MAP (
clk => clk_25,
rstn => rstn_25,
DATA => DATA,
SMP_CLK => SMP_CLK,
SYNC => DAC_SYNC,
DOUT => DAC_DOUT,
SCLK => DAC_SCLK);
lfr_output_save_1: lfr_output_save
GENERIC MAP (
FNAME => "lfr_output.txt")
PORT MAP (
end_of_simu => end_of_simu,
timestamp => TSTAMP,
DAC_SDO => DAC_DOUT,
DAC_SCK => DAC_SCLK,
DAC_SYNC => DAC_SYNC,
DAC_CAL_EN => DAC_CAL_EN,
bias_fail_sw => bias_fail_sw);
END;