LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; LIBRARY grlib; USE grlib.amba.ALL; USE grlib.stdlib.ALL; USE grlib.devices.ALL; USE GRLIB.DMA2AHB_Package.ALL; LIBRARY techmap; USE techmap.gencomp.ALL; PACKAGE lpp_waveform_pkg IS TYPE LPP_TYPE_ADDR_FIFO_WAVEFORM IS ARRAY (NATURAL RANGE <>) OF STD_LOGIC_VECTOR(6 DOWNTO 0); COMPONENT lpp_waveform_snapshot GENERIC ( data_size : INTEGER; nb_snapshot_param_size : INTEGER); PORT ( clk : IN STD_LOGIC; rstn : IN STD_LOGIC; enable : IN STD_LOGIC; burst_enable : IN STD_LOGIC; nb_snapshot_param : IN STD_LOGIC_VECTOR(nb_snapshot_param_size-1 DOWNTO 0); start_snapshot : IN STD_LOGIC; data_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); data_in_valid : IN STD_LOGIC; data_out : OUT STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); data_out_valid : OUT STD_LOGIC); END COMPONENT; COMPONENT lpp_waveform_burst GENERIC ( data_size : INTEGER); PORT ( clk : IN STD_LOGIC; rstn : IN STD_LOGIC; enable : IN STD_LOGIC; data_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); data_in_valid : IN STD_LOGIC; data_out : OUT STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); data_out_valid : OUT STD_LOGIC); END COMPONENT; COMPONENT lpp_waveform_snapshot_controler GENERIC ( delta_snapshot_size : INTEGER; delta_f2_f0_size : INTEGER; delta_f2_f1_size : INTEGER); PORT ( clk : IN STD_LOGIC; rstn : IN STD_LOGIC; delta_snapshot : IN STD_LOGIC_VECTOR(delta_snapshot_size-1 DOWNTO 0); delta_f2_f1 : IN STD_LOGIC_VECTOR(delta_f2_f1_size-1 DOWNTO 0); delta_f2_f0 : IN STD_LOGIC_VECTOR(delta_f2_f0_size-1 DOWNTO 0); coarse_time_0 : IN STD_LOGIC; data_f0_in_valid : IN STD_LOGIC; data_f2_in_valid : IN STD_LOGIC; start_snapshot_f0 : OUT STD_LOGIC; start_snapshot_f1 : OUT STD_LOGIC; start_snapshot_f2 : OUT STD_LOGIC); END COMPONENT; COMPONENT lpp_waveform GENERIC ( hindex : INTEGER; tech : INTEGER; data_size : INTEGER; nb_burst_available_size : INTEGER; nb_snapshot_param_size : INTEGER; delta_snapshot_size : INTEGER; delta_f2_f0_size : INTEGER; delta_f2_f1_size : INTEGER); PORT ( clk : IN STD_LOGIC; rstn : IN STD_LOGIC; AHB_Master_In : IN AHB_Mst_In_Type; AHB_Master_Out : OUT AHB_Mst_Out_Type; coarse_time_0 : IN STD_LOGIC; delta_snapshot : IN STD_LOGIC_VECTOR(delta_snapshot_size-1 DOWNTO 0); delta_f2_f1 : IN STD_LOGIC_VECTOR(delta_f2_f1_size-1 DOWNTO 0); delta_f2_f0 : IN STD_LOGIC_VECTOR(delta_f2_f0_size-1 DOWNTO 0); enable_f0 : IN STD_LOGIC; enable_f1 : IN STD_LOGIC; enable_f2 : IN STD_LOGIC; enable_f3 : IN STD_LOGIC; burst_f0 : IN STD_LOGIC; burst_f1 : IN STD_LOGIC; burst_f2 : IN STD_LOGIC; nb_burst_available : IN STD_LOGIC_VECTOR(nb_burst_available_size-1 DOWNTO 0); nb_snapshot_param : IN STD_LOGIC_VECTOR(nb_snapshot_param_size-1 DOWNTO 0); status_full : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); status_full_ack : IN STD_LOGIC_VECTOR(3 DOWNTO 0); status_full_err : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); status_new_err : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); addr_data_f0 : IN STD_LOGIC_VECTOR(31 DOWNTO 0); addr_data_f1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0); addr_data_f2 : IN STD_LOGIC_VECTOR(31 DOWNTO 0); addr_data_f3 : IN STD_LOGIC_VECTOR(31 DOWNTO 0); data_f0_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); data_f1_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); data_f2_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); data_f3_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); data_f0_in_valid : IN STD_LOGIC; data_f1_in_valid : IN STD_LOGIC; data_f2_in_valid : IN STD_LOGIC; data_f3_in_valid : IN STD_LOGIC); END COMPONENT; COMPONENT lpp_waveform_dma_send_Nword PORT ( HCLK : IN STD_ULOGIC; HRESETn : IN STD_ULOGIC; DMAIn : OUT DMA_In_Type; DMAOut : IN DMA_OUt_Type; Nb_word_less1 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); send : IN STD_LOGIC; address : IN STD_LOGIC_VECTOR(31 DOWNTO 0); data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); ren : OUT STD_LOGIC; send_ok : OUT STD_LOGIC; send_ko : OUT STD_LOGIC); END COMPONENT; COMPONENT lpp_waveform_dma_selectaddress GENERIC ( nb_burst_available_size : INTEGER); PORT ( HCLK : IN STD_ULOGIC; HRESETn : IN STD_ULOGIC; update : IN STD_LOGIC_VECTOR(1 DOWNTO 0); nb_burst_available : IN STD_LOGIC_VECTOR(nb_burst_available_size-1 DOWNTO 0); addr_data_reg : IN STD_LOGIC_VECTOR(31 DOWNTO 0); addr_data : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); status_full : OUT STD_LOGIC; status_full_ack : IN STD_LOGIC; status_full_err : OUT STD_LOGIC); END COMPONENT; COMPONENT lpp_waveform_dma_gen_valid PORT ( HCLK : IN STD_LOGIC; HRESETn : IN STD_LOGIC; valid_in : IN STD_LOGIC; ack_in : IN STD_LOGIC; valid_out : OUT STD_LOGIC; error : OUT STD_LOGIC); END COMPONENT; COMPONENT lpp_waveform_dma GENERIC ( data_size : INTEGER; tech : INTEGER; hindex : INTEGER; nb_burst_available_size : INTEGER); PORT ( HCLK : IN STD_ULOGIC; HRESETn : IN STD_ULOGIC; AHB_Master_In : IN AHB_Mst_In_Type; AHB_Master_Out : OUT AHB_Mst_Out_Type; data_ready : IN STD_LOGIC_VECTOR(3 DOWNTO 0); data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); data_data_ren : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); data_time_ren : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --data_f0_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); --data_f1_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); --data_f2_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); --data_f3_in : IN STD_LOGIC_VECTOR(data_size-1 DOWNTO 0); --data_f0_in_valid : IN STD_LOGIC; --data_f1_in_valid : IN STD_LOGIC; --data_f2_in_valid : IN STD_LOGIC; --data_f3_in_valid : IN STD_LOGIC; nb_burst_available : IN STD_LOGIC_VECTOR(nb_burst_available_size-1 DOWNTO 0); status_full : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); status_full_ack : IN STD_LOGIC_VECTOR(3 DOWNTO 0); status_full_err : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -- status_new_err : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); addr_data_f0 : IN STD_LOGIC_VECTOR(31 DOWNTO 0); addr_data_f1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0); addr_data_f2 : IN STD_LOGIC_VECTOR(31 DOWNTO 0); addr_data_f3 : IN STD_LOGIC_VECTOR(31 DOWNTO 0)); END COMPONENT; COMPONENT lpp_waveform_fifo_ctrl GENERIC ( offset : INTEGER; length : INTEGER; enable_ready : STD_LOGIC); PORT ( clk : IN STD_LOGIC; rstn : IN STD_LOGIC; ren : IN STD_LOGIC; wen : IN STD_LOGIC; mem_re : OUT STD_LOGIC; mem_we : OUT STD_LOGIC; mem_addr_ren : out STD_LOGIC_VECTOR(6 DOWNTO 0); mem_addr_wen : out STD_LOGIC_VECTOR(6 DOWNTO 0); ready : OUT STD_LOGIC); END COMPONENT; COMPONENT lpp_waveform_fifo_arbiter GENERIC ( tech : INTEGER); PORT ( clk : IN STD_LOGIC; rstn : IN STD_LOGIC; data_f0_valid : IN STD_LOGIC; data_f1_valid : IN STD_LOGIC; data_f2_valid : IN STD_LOGIC; data_f3_valid : IN STD_LOGIC; data_valid_ack : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); data_f0 : IN STD_LOGIC_VECTOR(159 DOWNTO 0); data_f1 : IN STD_LOGIC_VECTOR(159 DOWNTO 0); data_f2 : IN STD_LOGIC_VECTOR(159 DOWNTO 0); data_f3 : IN STD_LOGIC_VECTOR(159 DOWNTO 0); ready : IN STD_LOGIC_VECTOR(3 DOWNTO 0); time_wen : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); data_wen : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); data : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END COMPONENT; COMPONENT lpp_waveform_fifo GENERIC ( tech : INTEGER); PORT ( clk : IN STD_LOGIC; rstn : IN STD_LOGIC; ready : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); time_ren : IN STD_LOGIC_VECTOR(3 DOWNTO 0); data_ren : IN STD_LOGIC_VECTOR(3 DOWNTO 0); rdata : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); time_wen : IN STD_LOGIC_VECTOR(3 DOWNTO 0); data_wen : IN STD_LOGIC_VECTOR(3 DOWNTO 0); wdata : IN STD_LOGIC_VECTOR(31 DOWNTO 0)); END COMPONENT; END lpp_waveform_pkg;