From bb671dad7439d70caa3858a66af45f4e110f19c7 Mon Sep 17 00:00:00 2001
From: lharnaldi <lharnaldi@gmail.com>
Date: Fri, 26 Aug 2022 09:19:54 -0300
Subject: [PATCH] Cambio el core axis_counter. Ahora si cuenta desde cero y
 hasta el final. Ya no tiene el reset

---
 cores/axis_counter_v1_0/axis_counter.vhd      |   3 +-
 .../axis_lago_trigger_v1_3.vhd                | 986 +++++++++---------
 projects/adc_recorder/adc-recorder.c          | 102 +-
 3 files changed, 546 insertions(+), 545 deletions(-)

diff --git a/cores/axis_counter_v1_0/axis_counter.vhd b/cores/axis_counter_v1_0/axis_counter.vhd
index 6017cdb..d13594f 100644
--- a/cores/axis_counter_v1_0/axis_counter.vhd
+++ b/cores/axis_counter_v1_0/axis_counter.vhd
@@ -51,7 +51,8 @@ begin
   comp_next <= '0' when (cntr_reg = unsigned(cfg_data)-1) else '1';
 
   cntr_next <= cntr_reg + 1 when ((comp_reg = '1') and (m_axis_tready = '1')) else
-               (others => '0') when (comp_reg = '0') else --reset
+  --cntr_next <= cntr_reg + 1 when ((comp_reg = '1') and (m_axis_tready = '1')) else
+               --(others => '0') when (comp_reg = '0') else --reset
                cntr_reg;
 
   m_axis_tdata <= std_logic_vector(resize(cntr_reg, m_axis_tdata'length));
diff --git a/cores/axis_lago_trigger_v1_3/axis_lago_trigger_v1_3.vhd b/cores/axis_lago_trigger_v1_3/axis_lago_trigger_v1_3.vhd
index 7f1a593..2156ece 100644
--- a/cores/axis_lago_trigger_v1_3/axis_lago_trigger_v1_3.vhd
+++ b/cores/axis_lago_trigger_v1_3/axis_lago_trigger_v1_3.vhd
@@ -4,506 +4,506 @@ use ieee.std_logic_1164.all;
 use ieee.numeric_std.all;
 
 entity axis_lago_trigger is
-				generic (
-												AXIS_TDATA_WIDTH      : natural  := 32;
-												-- data arrays bit numbers
-												ADC_DATA_WIDTH        : natural := 14;    
-												DATA_ARRAY_LENGTH     : natural := 20;
-												METADATA_ARRAY_LENGTH : natural := 12;
-												SUBTRIG_ARRAY_LENGTH  : natural := 3
-								);
-				port (
-										 -- System signals
-										 aclk               : in std_logic;
-										 aresetn            : in std_logic;
-										 trig_lvl_a_i       : in std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
-										 trig_lvl_b_i       : in std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
-										 subtrig_lvl_a_i    : in std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
-										 subtrig_lvl_b_i    : in std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
-										 pps_i              : in std_logic;
-										 clk_cnt_pps_i      : in std_logic_vector(27-1 downto 0);
-										 temp_i             : in std_logic_vector(24-1 downto 0);
-										 pressure_i         : in std_logic_vector(24-1 downto 0);
-										 time_i             : in std_logic_vector(24-1 downto 0);
-										 date_i             : in std_logic_vector(24-1 downto 0);
-										 latitude_i         : in std_logic_vector(24-1 downto 0);
-										 longitude_i        : in std_logic_vector(24-1 downto 0);
-										 altitude_i         : in std_logic_vector(24-1 downto 0);
-										 satellites_i       : in std_logic_vector(24-1 downto 0);
-										 scaler_a_i         : in std_logic_vector(32-1 downto 0);
-										 scaler_b_i         : in std_logic_vector(32-1 downto 0);
-
-										 -- Slave side
-										 s_axis_tready     : out std_logic;
-										 s_axis_tdata      : in std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
-										 s_axis_tvalid     : in std_logic;
-
-										 -- Master side
-										 m_axis_tready     : in std_logic;
-										 m_axis_tdata      : out std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
-										 m_axis_tvalid     : out std_logic
-						 );
+  generic (
+            AXIS_TDATA_WIDTH      : natural  := 32;
+            -- data arrays bit numbers
+            ADC_DATA_WIDTH        : natural := 14;    
+            DATA_ARRAY_LENGTH     : natural := 20;
+            METADATA_ARRAY_LENGTH : natural := 12;
+            SUBTRIG_ARRAY_LENGTH  : natural := 3
+          );
+  port (
+         -- System signals
+         aclk               : in std_logic;
+         aresetn            : in std_logic;
+         trig_lvl_a_i       : in std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
+         trig_lvl_b_i       : in std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
+         subtrig_lvl_a_i    : in std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
+         subtrig_lvl_b_i    : in std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
+         pps_i              : in std_logic;
+         clk_cnt_pps_i      : in std_logic_vector(27-1 downto 0);
+         temp_i             : in std_logic_vector(24-1 downto 0);
+         pressure_i         : in std_logic_vector(24-1 downto 0);
+         time_i             : in std_logic_vector(24-1 downto 0);
+         date_i             : in std_logic_vector(24-1 downto 0);
+         latitude_i         : in std_logic_vector(24-1 downto 0);
+         longitude_i        : in std_logic_vector(24-1 downto 0);
+         altitude_i         : in std_logic_vector(24-1 downto 0);
+         satellites_i       : in std_logic_vector(24-1 downto 0);
+         scaler_a_i         : in std_logic_vector(32-1 downto 0);
+         scaler_b_i         : in std_logic_vector(32-1 downto 0);
+
+         -- Slave side
+         s_axis_tready     : out std_logic;
+         s_axis_tdata      : in std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
+         s_axis_tvalid     : in std_logic;
+
+         -- Master side
+         m_axis_tready     : in std_logic;
+         m_axis_tdata      : out std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
+         m_axis_tvalid     : out std_logic
+       );
 end axis_lago_trigger;
 
 architecture rtl of axis_lago_trigger is
 
-				constant PADDING_WIDTH : natural := AXIS_TDATA_WIDTH/2 - ADC_DATA_WIDTH;
-
-				--ADC related signals
-				type  adc_data_array_t is array (DATA_ARRAY_LENGTH-1 downto 0) 
-				of std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
-				signal adc_dat_a_reg, adc_dat_a_next : adc_data_array_t;
-				signal adc_dat_b_reg, adc_dat_b_next : adc_data_array_t;
-
-				type array_pps_t is array (METADATA_ARRAY_LENGTH-1 downto 0) 
-				of std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
-				signal array_pps_reg, array_pps_next : array_pps_t;
-
-				type array_scalers_t is array (SUBTRIG_ARRAY_LENGTH-1 downto 0) 
-				of std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
-				signal array_scalers_reg, array_scalers_next : array_scalers_t;
-
-				--Trigger related signals
-				--Triggers
-				signal tr1_s, tr2_s, tr_s              : std_logic; 
-				--Sub-Triggers
-				signal subtr1_s, subtr2_s, subtr_s     : std_logic; 
-
-				signal tr_status_reg, tr_status_next   : std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
-				signal cnt_status_reg, cnt_status_next : std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
-
-				signal trig_cnt_reg, trig_cnt_next     : std_logic_vector(30-1 downto 0); 
-
-				--Charge signals
-				signal charge1_reg, charge1_next       : unsigned(ADC_DATA_WIDTH-1 downto 0);
-				signal charge2_reg, charge2_next       : unsigned(ADC_DATA_WIDTH-1 downto 0);
-
-				--FSM signals
-				type state_t is (ST_IDLE,
-				ST_ATT_TR,
-				ST_SEND_TR_STATUS,
-				ST_SEND_CNT_STATUS,
-				ST_ATT_SUBTR,
-				ST_ATT_PPS);
-				signal state_reg, state_next: state_t;
-
-				signal wr_count_reg, wr_count_next : unsigned(7 downto 0);
-				signal data_to_fifo_reg, data_to_fifo_next : std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
-				signal status : std_logic_vector(2 downto 0);
-
-				signal axis_tready_reg, axis_tready_next : std_logic;
-				signal axis_tvalid_reg, axis_tvalid_next : std_logic;
-
-				signal trig_lvl_a, trig_lvl_b       : std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
-				signal subtrig_lvl_a, subtrig_lvl_b : std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
-				signal adc_dat_a, adc_dat_b         : std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
-				signal adc_reg_a, adc_next_a        : std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
-				signal adc_reg_b, adc_next_b        : std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
-
-				--Trigger scaler signals
-				signal scaler_a_cnt_reg, scaler_a_cnt_next : std_logic_vector(32-1 downto 0);
-				signal scaler_b_cnt_reg, scaler_b_cnt_next : std_logic_vector(32-1 downto 0);
-				signal scaler_a_max_tick, scaler_b_max_tick: std_logic;
-
-				--Trigger scaler signals
-				signal rate_a_cnt_reg, rate_a_cnt_next : std_logic_vector(24-1 downto 0);
-				signal rate_b_cnt_reg, rate_b_cnt_next : std_logic_vector(24-1 downto 0);
-				signal tr11_s_dly_reg, tr11_s_dly_next : std_logic;
-				signal tr21_s_dly_reg, tr21_s_dly_next : std_logic;
+  constant PADDING_WIDTH : natural := AXIS_TDATA_WIDTH/2 - ADC_DATA_WIDTH;
+
+  --ADC related signals
+  type  adc_data_array_t is array (DATA_ARRAY_LENGTH-1 downto 0) 
+  of std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
+  signal adc_dat_a_reg, adc_dat_a_next : adc_data_array_t;
+  signal adc_dat_b_reg, adc_dat_b_next : adc_data_array_t;
+
+  type array_pps_t is array (METADATA_ARRAY_LENGTH-1 downto 0) 
+  of std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
+  signal array_pps_reg, array_pps_next : array_pps_t;
+
+  type array_scalers_t is array (SUBTRIG_ARRAY_LENGTH-1 downto 0) 
+  of std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
+  signal array_scalers_reg, array_scalers_next : array_scalers_t;
+
+  --Trigger related signals
+  --Triggers
+  signal tr1_s, tr2_s, tr_s              : std_logic; 
+  --Sub-Triggers
+  signal subtr1_s, subtr2_s, subtr_s     : std_logic; 
+
+  signal tr_status_reg, tr_status_next   : std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
+  signal cnt_status_reg, cnt_status_next : std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
+
+  signal trig_cnt_reg, trig_cnt_next     : std_logic_vector(30-1 downto 0); 
+
+  --Charge signals
+  signal charge1_reg, charge1_next       : unsigned(ADC_DATA_WIDTH-1 downto 0);
+  signal charge2_reg, charge2_next       : unsigned(ADC_DATA_WIDTH-1 downto 0);
+
+  --FSM signals
+  type state_t is (ST_IDLE,
+  ST_ATT_TR,
+  ST_SEND_TR_STATUS,
+  ST_SEND_CNT_STATUS,
+  ST_ATT_SUBTR,
+  ST_ATT_PPS);
+  signal state_reg, state_next: state_t;
+
+  signal wr_count_reg, wr_count_next : unsigned(7 downto 0);
+  signal data_to_fifo_reg, data_to_fifo_next : std_logic_vector(AXIS_TDATA_WIDTH-1 downto 0);
+  signal status : std_logic_vector(2 downto 0);
+
+  signal axis_tready_reg, axis_tready_next : std_logic;
+  signal axis_tvalid_reg, axis_tvalid_next : std_logic;
+
+  signal trig_lvl_a, trig_lvl_b       : std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
+  signal subtrig_lvl_a, subtrig_lvl_b : std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
+  signal adc_dat_a, adc_dat_b         : std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
+  signal adc_reg_a, adc_next_a        : std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
+  signal adc_reg_b, adc_next_b        : std_logic_vector(AXIS_TDATA_WIDTH/2-1 downto 0);
+
+  --Trigger scaler signals
+  signal scaler_a_cnt_reg, scaler_a_cnt_next : std_logic_vector(32-1 downto 0);
+  signal scaler_b_cnt_reg, scaler_b_cnt_next : std_logic_vector(32-1 downto 0);
+  signal scaler_a_max_tick, scaler_b_max_tick: std_logic;
+
+  --Trigger scaler signals
+  signal rate_a_cnt_reg, rate_a_cnt_next : std_logic_vector(24-1 downto 0);
+  signal rate_b_cnt_reg, rate_b_cnt_next : std_logic_vector(24-1 downto 0);
+  signal tr11_s_dly_reg, tr11_s_dly_next : std_logic;
+  signal tr21_s_dly_reg, tr21_s_dly_next : std_logic;
 
 begin
 
-				trig_lvl_a <= ((PADDING_WIDTH-1) downto 0 => trig_lvl_a_i(ADC_DATA_WIDTH-1)) & trig_lvl_a_i(ADC_DATA_WIDTH-1 downto 0);
-				trig_lvl_b <= ((PADDING_WIDTH-1) downto 0 => trig_lvl_b_i(ADC_DATA_WIDTH-1)) & trig_lvl_b_i(ADC_DATA_WIDTH-1 downto 0);
-
-				subtrig_lvl_a <= ((PADDING_WIDTH-1) downto 0 => subtrig_lvl_a_i(ADC_DATA_WIDTH-1)) & subtrig_lvl_a_i(ADC_DATA_WIDTH-1 downto 0);
-				subtrig_lvl_b <= ((PADDING_WIDTH-1) downto 0 => subtrig_lvl_b_i(ADC_DATA_WIDTH-1)) & subtrig_lvl_b_i(ADC_DATA_WIDTH-1 downto 0);
-
-				adc_dat_a <= adc_reg_a;
-				adc_dat_b <= adc_reg_b;
-
-				--input registers
-				process(aclk)
-				begin
-								if (rising_edge(aclk)) then
-												if (aresetn = '0') then
-																adc_reg_a <= (others => '0');
-																adc_reg_b <= (others => '0');
-												else
-																adc_reg_a <= adc_next_a;
-																adc_reg_b <= adc_next_b;
-												end if;
-								end if;
-				end process;
-				--next state logic
-				adc_next_a <= ((PADDING_WIDTH-1) downto 0 =>
-											s_axis_tdata(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1)) &
-											s_axis_tdata(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1 downto 0)
-							when ((axis_tready_reg = '1') and (s_axis_tvalid = '1')) else
-							adc_reg_a;
-				adc_next_b <= ((PADDING_WIDTH-1) downto 0 =>
-											s_axis_tdata(AXIS_TDATA_WIDTH-PADDING_WIDTH-1)) &
-											s_axis_tdata(AXIS_TDATA_WIDTH-PADDING_WIDTH-1 downto
-											AXIS_TDATA_WIDTH/2) when ((axis_tready_reg = '1') and (s_axis_tvalid = '1')) else
-											adc_reg_b;
-
-
-				-- data registers for a second
-				process(aclk)
-				begin
-								for i in METADATA_ARRAY_LENGTH-1 downto 0 loop
-												if (rising_edge(aclk)) then
-																if (aresetn = '0') then
-																				array_pps_reg(i) <= (others => '0');
-																else
-																				array_pps_reg(i) <= array_pps_next(i);
-																end if;
-												end if;
-								end loop;
-				end process;
-				--next state logic
-
-				array_pps_next(METADATA_ARRAY_LENGTH-1) <= x"FFFFFFFF"                              when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-1);
-				array_pps_next(METADATA_ARRAY_LENGTH-2) <= "1" & "1000" & clk_cnt_pps_i             when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-2);
-				array_pps_next(METADATA_ARRAY_LENGTH-3) <= "1" & "1001" & "000" & temp_i            when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-3);
-				array_pps_next(METADATA_ARRAY_LENGTH-4) <= "1" & "1010" & "000" & pressure_i        when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-4);
-				array_pps_next(METADATA_ARRAY_LENGTH-5) <= "1" & "1011" & "000" & time_i            when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-5);
-				array_pps_next(METADATA_ARRAY_LENGTH-6) <= "1" & "1100" & "000" & latitude_i        when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-6);
-				array_pps_next(METADATA_ARRAY_LENGTH-7) <= "1" & "1100" & "001" & longitude_i       when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-7);
-				array_pps_next(METADATA_ARRAY_LENGTH-8) <= "1" & "1100" & "010" & altitude_i        when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-8);
-				array_pps_next(METADATA_ARRAY_LENGTH-9) <= "1" & "1100" & "011" & date_i            when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-9);
-				array_pps_next(METADATA_ARRAY_LENGTH-10)<= "1" & "1100" & "100" & satellites_i      when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-10);
-				array_pps_next(METADATA_ARRAY_LENGTH-11)<= "1" & "1101" & "000" & rate_a_cnt_reg    when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-11);
-				array_pps_next(METADATA_ARRAY_LENGTH-12)<= "1" & "1110" & "000" & rate_b_cnt_reg    when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-12);
-
-				------------------------------------------------------------------------------------------------------
-
-				------------------------------------------------------------------------------------------------------
-				--data acquisition for each channel
-				process(aclk)
-				begin
-								for i in (DATA_ARRAY_LENGTH-1) downto 0 loop
-												if (rising_edge(aclk)) then
-																if (aresetn = '0') then
-																				adc_dat_a_reg(i) <= (others=>'0');
-																				adc_dat_b_reg(i) <= (others=>'0');
-																else
-																				adc_dat_a_reg(i) <= adc_dat_a_next(i);
-																				adc_dat_b_reg(i) <= adc_dat_b_next(i);
-																end if;
-												end if;
-												-- next state logic
-												if (i = (DATA_ARRAY_LENGTH-1)) then
-																adc_dat_a_next(i) <= adc_dat_a;
-																adc_dat_b_next(i) <= adc_dat_b;
-												else
-																adc_dat_a_next(i) <= adc_dat_a_reg(i+1);
-																adc_dat_b_next(i) <= adc_dat_b_reg(i+1);
-												end if;
-								end loop;
-				end process;
-
-				-----------------------------------------------------------------------------------------------------
-				--rate counter
-				process(aclk)
-				begin
-								if (rising_edge(aclk)) then
-												if (aresetn = '0') then
-																rate_a_cnt_reg  <= (others => '0');
-																rate_b_cnt_reg  <= (others => '0');
-												else
-																rate_a_cnt_reg  <= rate_a_cnt_next;
-																rate_b_cnt_reg  <= rate_b_cnt_next;
-												end if;
-								end if;
-				end process;
-
-				--next state logic
-				rate_a_cnt_next <= std_logic_vector(unsigned(rate_a_cnt_reg) + 1) when scaler_a_max_tick = '1' else
-													 (others => '0') when pps_i = '1' else
-													 rate_a_cnt_reg;
-
-				rate_b_cnt_next <= std_logic_vector(unsigned(rate_b_cnt_reg) + 1) when scaler_b_max_tick = '1' else
-													 (others => '0') when pps_i = '1' else
-													 rate_b_cnt_reg;
-				-----------------------------------------------------------------------------------------------------
-				-----------------------------------------------------------------------------------------------------
-				--trigger scaler
-				process(aclk)
-				begin
-								if (rising_edge(aclk)) then
-												if (aresetn = '0') then
-																scaler_a_cnt_reg  <= (others => '0');
-																scaler_b_cnt_reg  <= (others => '0');
-																tr11_s_dly_reg    <= '0';
-																tr21_s_dly_reg    <= '0';
-												else
-																scaler_a_cnt_reg  <= scaler_a_cnt_next;
-																scaler_b_cnt_reg  <= scaler_b_cnt_next;
-																tr11_s_dly_reg    <= tr11_s_dly_next;
-																tr21_s_dly_reg    <= tr21_s_dly_next;
-												end if;
-								end if;
-				end process;
-
-				--next state logic
-				scaler_a_cnt_next <= std_logic_vector(unsigned(scaler_a_cnt_reg) + 1) when tr1_s = '1' else
-														 (others => '0') when unsigned(scaler_a_cnt_reg) = unsigned(scaler_a_i) else
-														 scaler_a_cnt_reg;
-				tr11_s_dly_next    <= '1' when tr1_s = '1' else '0';
-
-				scaler_a_max_tick <= '1' when unsigned(scaler_a_cnt_reg) = unsigned(scaler_a_i) else '0';
-
-				scaler_b_cnt_next <= std_logic_vector(unsigned(scaler_b_cnt_reg) + 1) when tr2_s = '1' else
-														 (others => '0') when unsigned(scaler_b_cnt_reg) = unsigned(scaler_b_i) else
-														 scaler_b_cnt_reg;
-				tr21_s_dly_next    <= '1' when tr2_s = '1' else '0';
-
-				scaler_b_max_tick <= '1' when unsigned(scaler_b_cnt_reg) = unsigned(scaler_b_i) else '0';
-				-----------------------------------------------------------------------------------------------------
-
-				-----------------------------------------------------------------------------------------------------
-				--trigger
-				process(aclk)
-				begin
-								if (rising_edge(aclk)) then
-												if (aresetn = '0') then
-																tr_status_reg  <= (others => '0');
-																cnt_status_reg <= (others => '0');
-																trig_cnt_reg   <= (others => '0');
-												else
-																tr_status_reg  <= tr_status_next;
-																cnt_status_reg <= cnt_status_next;
-																trig_cnt_reg   <= trig_cnt_next;
-												end if;
-								end if;
-				end process;
-
-
-				-- The trigger is at  bin 4 because we loose a clock pulse in the state machine
-				-- next state logic
-				tr1_s <=  '1' when ((adc_dat_a_reg(10)(adc_dat_a_reg(10)'left) = trig_lvl_a(trig_lvl_a'left)) and 
-									(signed(adc_dat_a_reg(10)(AXIS_TDATA_WIDTH/2-2 downto 0)) >= signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_a_reg(9)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_a_reg(8)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_a_reg(7)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_a_reg(6)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_a_reg(5)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_a_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_a_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_a_reg(1)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0)))) else
-									'0';
-				tr2_s <=  '1' when ((adc_dat_b_reg(10)(adc_dat_b_reg(10)'left) = trig_lvl_b(trig_lvl_b'left)) and 
-									(signed(adc_dat_b_reg(10)(AXIS_TDATA_WIDTH/2-2 downto 0)) >= signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_b_reg(9)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_b_reg(8)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_b_reg(7)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_b_reg(6)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_b_reg(5)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_b_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_b_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
-									(signed(adc_dat_b_reg(1)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0)))) else
-									'0';
-
-				--tr_s <= '1' when  ((tr1_s = '1') or (tr2_s = '1')) else '0';
-				tr_s <= '1' when  ((scaler_a_max_tick = '1') or (scaler_b_max_tick = '1')) else '0';
-
-				--tr_status_next <=   "010" & tr2_s & tr1_s & clk_cnt_pps_i when (tr_s = '1') else
-				tr_status_next <=   "010" & tr21_s_dly_reg & tr11_s_dly_reg & clk_cnt_pps_i when (tr_s = '1') else
-														tr_status_reg;
-				cnt_status_next <=  "10" & trig_cnt_reg when (tr_s = '1') else
-														cnt_status_reg;
-
-				trig_cnt_next <= std_logic_vector(unsigned(trig_cnt_reg) + 1) when (tr_s = '1') else
-												 trig_cnt_reg;
-
-				----------------------------------------------------------------------------------------------------------
-
-				----------------------------------------------------------------------------------------------------------
-				--sub-trigger: we test for a sub-trigger and we must not have a trigger in the next two clocks
-				process(aclk)
-				begin
-								if (rising_edge(aclk)) then
-												if (aresetn = '0') then
-																charge1_reg <= (others => '0');
-																charge2_reg <= (others => '0');
-																array_scalers_reg(SUBTRIG_ARRAY_LENGTH-1) <= (others => '0');
-																array_scalers_reg(SUBTRIG_ARRAY_LENGTH-2) <= (others => '0');
-																array_scalers_reg(SUBTRIG_ARRAY_LENGTH-3) <= (others => '0');
-												else
-																charge1_reg <= charge1_next;
-																charge2_reg <= charge2_next;
-																array_scalers_reg(SUBTRIG_ARRAY_LENGTH-1) <= array_scalers_next(SUBTRIG_ARRAY_LENGTH-1);
-																array_scalers_reg(SUBTRIG_ARRAY_LENGTH-2) <= array_scalers_next(SUBTRIG_ARRAY_LENGTH-2);
-																array_scalers_reg(SUBTRIG_ARRAY_LENGTH-3) <= array_scalers_next(SUBTRIG_ARRAY_LENGTH-3);
-												end if;
-								end if;
-				end process;
-				-- next state logic
-				subtr1_s <= '1' when adc_dat_a_reg(2)(adc_dat_a_reg(2)'left) = subtrig_lvl_a(subtrig_lvl_a'left) and 
-										signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) >= signed(subtrig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0)) and
-										signed(adc_dat_a_reg(1)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) and
-										(signed(adc_dat_a_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) or
-										(signed(adc_dat_a_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) = signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) and
-										signed(adc_dat_a_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)))) and
-										(adc_dat_a_reg(2)(adc_dat_a_reg(2)'left) = trig_lvl_a(trig_lvl_a'left)) and 
-										signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0)) and
-										signed(adc_dat_a_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0)) and
-										signed(adc_dat_a_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0)) else
-										'0';
-				subtr2_s <= '1' when adc_dat_b_reg(2)(adc_dat_b_reg(2)'left) = subtrig_lvl_b(subtrig_lvl_b'left) and
-										signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) >= signed(subtrig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0)) and
-										signed(adc_dat_b_reg(1)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) and
-										(signed(adc_dat_b_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) or
-										(signed(adc_dat_b_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) = signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) and
-										signed(adc_dat_b_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)))) and
-										(adc_dat_b_reg(2)(adc_dat_b_reg(2)'left) = trig_lvl_b(trig_lvl_b'left)) and 
-										signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0)) and
-										signed(adc_dat_b_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0)) and
-										signed(adc_dat_b_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0)) else
-										'0';
-				subtr_s <=  '1' when  ((subtr1_s = '1') or (subtr2_s = '1')) else '0';
-
-				charge1_next <= charge1_reg + adc_dat_a_reg'left - adc_dat_a_reg'right;
-				charge2_next <= charge2_reg + adc_dat_b_reg'left - adc_dat_b_reg'right;
-
-				array_scalers_next(SUBTRIG_ARRAY_LENGTH-1) <= "010" & subtr2_s & subtr1_s & clk_cnt_pps_i when (subtr_s = '1') else
-																											array_scalers_reg(SUBTRIG_ARRAY_LENGTH-1);
-				array_scalers_next(SUBTRIG_ARRAY_LENGTH-2) <= "0000" & std_logic_vector(charge1_reg) & std_logic_vector(charge2_reg) when (subtr_s = '1') else
-																											array_scalers_reg(SUBTRIG_ARRAY_LENGTH-2); --charge values per channel
-				array_scalers_next(SUBTRIG_ARRAY_LENGTH-3) <= "0000" & adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1 downto 0) & adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1 downto 0) when (subtr_s = '1') else
-																											array_scalers_reg(SUBTRIG_ARRAY_LENGTH-3); --we send the pulse maximum too
-
-				----------------------------------------------------------------------------------------------------------------
-
-				----------------------------------------------------------------------------------------------------------------
-				-- FSM controlling all
-				--================================================================
-				-- state and data registers
-				--================================================================
-				process (aclk)
-				begin
-								if (rising_edge(aclk)) then
-												if (aresetn = '0') then
-																state_reg      <= ST_IDLE;
-																wr_count_reg   <= (others => '0');
-																data_to_fifo_reg <= (others => '0');
-																axis_tvalid_reg <= '0';
-																axis_tready_reg <= '0';
-												else
-																state_reg      <= state_next;
-																wr_count_reg   <= wr_count_next;
-																data_to_fifo_reg <= data_to_fifo_next;
-																axis_tvalid_reg <= axis_tvalid_next;
-																axis_tready_reg <= axis_tready_next;
-												end if;
-								end if;
-				end process;
-				--=================================================================
-				--next-state logic & data path functional units/routing
-				--=================================================================
-				process(state_reg, status, wr_count_reg)
-				begin
-								state_next        <= state_reg;         -- default 
-								wr_count_next     <= (others => '0'); -- wr_count_reg;
-								data_to_fifo_next <= data_to_fifo_reg;  -- default 
-								axis_tvalid_next  <= '0';               -- default disable write
-								axis_tready_next  <= '1';               -- always ready
-								case state_reg is
-												when ST_IDLE =>
-																if (m_axis_tready = '1') then
-																				case status is
-																								when "001" | "011" | "101" | "111" => -- priority is for PPS data every second
-																												state_next <= ST_ATT_PPS;
-																								when "100" | "110" =>
-																												state_next <= ST_ATT_TR;
-																								when "010" =>
-																												state_next <= ST_ATT_SUBTR;
-																								when others => --"000"
-																												state_next <= ST_IDLE;
-																				end case;
-																else
-																				state_next <= ST_IDLE;
-																end if;
-
-												--we send adc data because we have a trigger
-												when ST_ATT_TR =>
-																axis_tready_next <= '0';
-																axis_tvalid_next <= '1';
-																if (m_axis_tready = '1') then
-																				wr_count_next <= wr_count_reg + 1;
-																				--data_to_fifo_next <= "00" & adc_dat_b_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1) & not(adc_dat_b_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-2 downto 0)) & "00" & adc_dat_a_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1) & not(adc_dat_a_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-2 downto 0));
-																				data_to_fifo_next <= "00" & adc_dat_b_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1) & adc_dat_b_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-2 downto 0) & "00" & adc_dat_a_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1) & adc_dat_a_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-2 downto 0);
-																				--data_to_fifo_next <= "00" & (29 downto 8 => '0') & std_logic_vector(wr_count_reg);
-																				if (wr_count_reg = DATA_ARRAY_LENGTH-1) then
-																								state_next <= ST_SEND_TR_STATUS;
-																				else
-																								state_next <= ST_ATT_TR;
-																				end if;
-																else
-																				state_next <= ST_ATT_TR;
-																end if;
-
-												when ST_SEND_TR_STATUS =>
-																axis_tready_next <= '0';
-																axis_tvalid_next <= '1';
-																if (m_axis_tready = '1') then
-																				data_to_fifo_next <= tr_status_reg;
-																				--data_to_fifo_next <= "01" & std_logic_vector(to_unsigned(33,30));
-																				state_next <= ST_SEND_CNT_STATUS;
-																else
-																				state_next <= ST_SEND_TR_STATUS;
-																end if;
-
-												when ST_SEND_CNT_STATUS =>
-																axis_tready_next <= '0';
-																axis_tvalid_next <= '1';
-																if (m_axis_tready = '1') then
-																				data_to_fifo_next <= cnt_status_reg;
-																				--data_to_fifo_next <= "10" & std_logic_vector(to_unsigned(55,30));
-																				state_next <= ST_IDLE;
-																else
-																				state_next <= ST_SEND_CNT_STATUS;
-																end if;
-
-												when ST_ATT_SUBTR =>
-																axis_tready_next <= '0';
-																axis_tvalid_next <= '1';
-																if (m_axis_tready = '1') then
-																				wr_count_next <= wr_count_reg + 1;
-																				data_to_fifo_next <= array_scalers_reg(to_integer(wr_count_reg));
-																				if (wr_count_reg = SUBTRIG_ARRAY_LENGTH-1) then
-																								state_next <= ST_IDLE;
-																				else 
-																								state_next <= ST_ATT_SUBTR;
-																				end if;
-																else
-																				state_next <= ST_ATT_SUBTR;
-																end if;
-
-												when ST_ATT_PPS =>
-																axis_tready_next <= '0';
-																axis_tvalid_next <= '1';
-																if (m_axis_tready = '1') then
-																				wr_count_next <= wr_count_reg + 1;
-																				data_to_fifo_next <= array_pps_reg(to_integer(wr_count_reg));
-																				if (wr_count_reg = METADATA_ARRAY_LENGTH-1) then
-																								state_next <= ST_IDLE;
-																				else
-																								state_next <= ST_ATT_PPS;
-																				end if;
-																else
-																				state_next <= ST_ATT_PPS;
-																end if;
-								end case;
-				end process;
-
-				status <= tr_s & subtr_s & pps_i;
-				s_axis_tready <= axis_tready_reg;
-				m_axis_tdata <= data_to_fifo_reg;
-				m_axis_tvalid <= axis_tvalid_reg;
+  trig_lvl_a <= ((PADDING_WIDTH-1) downto 0 => trig_lvl_a_i(ADC_DATA_WIDTH-1)) & trig_lvl_a_i(ADC_DATA_WIDTH-1 downto 0);
+  trig_lvl_b <= ((PADDING_WIDTH-1) downto 0 => trig_lvl_b_i(ADC_DATA_WIDTH-1)) & trig_lvl_b_i(ADC_DATA_WIDTH-1 downto 0);
+
+  subtrig_lvl_a <= ((PADDING_WIDTH-1) downto 0 => subtrig_lvl_a_i(ADC_DATA_WIDTH-1)) & subtrig_lvl_a_i(ADC_DATA_WIDTH-1 downto 0);
+  subtrig_lvl_b <= ((PADDING_WIDTH-1) downto 0 => subtrig_lvl_b_i(ADC_DATA_WIDTH-1)) & subtrig_lvl_b_i(ADC_DATA_WIDTH-1 downto 0);
+
+  adc_dat_a <= adc_reg_a;
+  adc_dat_b <= adc_reg_b;
+
+  --input registers
+  process(aclk)
+  begin
+    if (rising_edge(aclk)) then
+      if (aresetn = '0') then
+        adc_reg_a <= (others => '0');
+        adc_reg_b <= (others => '0');
+      else
+        adc_reg_a <= adc_next_a;
+        adc_reg_b <= adc_next_b;
+      end if;
+    end if;
+  end process;
+  --next state logic
+  adc_next_a <= ((PADDING_WIDTH-1) downto 0 =>
+                s_axis_tdata(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1)) &
+                s_axis_tdata(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1 downto 0)
+              when ((axis_tready_reg = '1') and (s_axis_tvalid = '1')) else
+              adc_reg_a;
+  adc_next_b <= ((PADDING_WIDTH-1) downto 0 =>
+                s_axis_tdata(AXIS_TDATA_WIDTH-PADDING_WIDTH-1)) &
+                s_axis_tdata(AXIS_TDATA_WIDTH-PADDING_WIDTH-1 downto
+                AXIS_TDATA_WIDTH/2) when ((axis_tready_reg = '1') and (s_axis_tvalid = '1')) else
+                adc_reg_b;
+
+
+  -- data registers for a second
+  process(aclk)
+  begin
+    for i in METADATA_ARRAY_LENGTH-1 downto 0 loop
+      if (rising_edge(aclk)) then
+        if (aresetn = '0') then
+          array_pps_reg(i) <= (others => '0');
+        else
+          array_pps_reg(i) <= array_pps_next(i);
+        end if;
+      end if;
+    end loop;
+  end process;
+  --next state logic
+
+  array_pps_next(METADATA_ARRAY_LENGTH-1) <= x"FFFFFFFF"                              when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-1);
+  array_pps_next(METADATA_ARRAY_LENGTH-2) <= "1" & "1000" & clk_cnt_pps_i             when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-2);
+  array_pps_next(METADATA_ARRAY_LENGTH-3) <= "1" & "1001" & "000" & temp_i            when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-3);
+  array_pps_next(METADATA_ARRAY_LENGTH-4) <= "1" & "1010" & "000" & pressure_i        when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-4);
+  array_pps_next(METADATA_ARRAY_LENGTH-5) <= "1" & "1011" & "000" & time_i            when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-5);
+  array_pps_next(METADATA_ARRAY_LENGTH-6) <= "1" & "1100" & "000" & latitude_i        when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-6);
+  array_pps_next(METADATA_ARRAY_LENGTH-7) <= "1" & "1100" & "001" & longitude_i       when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-7);
+  array_pps_next(METADATA_ARRAY_LENGTH-8) <= "1" & "1100" & "010" & altitude_i        when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-8);
+  array_pps_next(METADATA_ARRAY_LENGTH-9) <= "1" & "1100" & "011" & date_i            when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-9);
+  array_pps_next(METADATA_ARRAY_LENGTH-10)<= "1" & "1100" & "100" & satellites_i      when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-10);
+  array_pps_next(METADATA_ARRAY_LENGTH-11)<= "1" & "1101" & "000" & rate_a_cnt_reg    when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-11);
+  array_pps_next(METADATA_ARRAY_LENGTH-12)<= "1" & "1110" & "000" & rate_b_cnt_reg    when (pps_i = '1') else array_pps_reg(METADATA_ARRAY_LENGTH-12);
+
+  ------------------------------------------------------------------------------------------------------
+
+  ------------------------------------------------------------------------------------------------------
+  --data acquisition for each channel
+  process(aclk)
+  begin
+    for i in (DATA_ARRAY_LENGTH-1) downto 0 loop
+      if (rising_edge(aclk)) then
+        if (aresetn = '0') then
+          adc_dat_a_reg(i) <= (others=>'0');
+          adc_dat_b_reg(i) <= (others=>'0');
+        else
+          adc_dat_a_reg(i) <= adc_dat_a_next(i);
+          adc_dat_b_reg(i) <= adc_dat_b_next(i);
+        end if;
+      end if;
+      -- next state logic
+      if (i = (DATA_ARRAY_LENGTH-1)) then
+        adc_dat_a_next(i) <= adc_dat_a;
+        adc_dat_b_next(i) <= adc_dat_b;
+      else
+        adc_dat_a_next(i) <= adc_dat_a_reg(i+1);
+        adc_dat_b_next(i) <= adc_dat_b_reg(i+1);
+      end if;
+    end loop;
+  end process;
+
+  -----------------------------------------------------------------------------------------------------
+  --rate counter
+  process(aclk)
+  begin
+    if (rising_edge(aclk)) then
+      if (aresetn = '0') then
+        rate_a_cnt_reg  <= (others => '0');
+        rate_b_cnt_reg  <= (others => '0');
+      else
+        rate_a_cnt_reg  <= rate_a_cnt_next;
+        rate_b_cnt_reg  <= rate_b_cnt_next;
+      end if;
+    end if;
+  end process;
+
+  --next state logic
+  rate_a_cnt_next <= std_logic_vector(unsigned(rate_a_cnt_reg) + 1) when scaler_a_max_tick = '1' else
+                     (others => '0') when pps_i = '1' else
+                     rate_a_cnt_reg;
+
+  rate_b_cnt_next <= std_logic_vector(unsigned(rate_b_cnt_reg) + 1) when scaler_b_max_tick = '1' else
+                     (others => '0') when pps_i = '1' else
+                     rate_b_cnt_reg;
+  -----------------------------------------------------------------------------------------------------
+  -----------------------------------------------------------------------------------------------------
+  --trigger scaler
+  process(aclk)
+  begin
+    if (rising_edge(aclk)) then
+      if (aresetn = '0') then
+        scaler_a_cnt_reg  <= (others => '0');
+        scaler_b_cnt_reg  <= (others => '0');
+        tr11_s_dly_reg    <= '0';
+        tr21_s_dly_reg    <= '0';
+      else
+        scaler_a_cnt_reg  <= scaler_a_cnt_next;
+        scaler_b_cnt_reg  <= scaler_b_cnt_next;
+        tr11_s_dly_reg    <= tr11_s_dly_next;
+        tr21_s_dly_reg    <= tr21_s_dly_next;
+      end if;
+    end if;
+  end process;
+
+  --next state logic
+  scaler_a_cnt_next <= std_logic_vector(unsigned(scaler_a_cnt_reg) + 1) when tr1_s = '1' else
+                       (others => '0') when unsigned(scaler_a_cnt_reg) = unsigned(scaler_a_i) else
+                       scaler_a_cnt_reg;
+  tr11_s_dly_next    <= '1' when tr1_s = '1' else '0';
+
+  scaler_a_max_tick <= '1' when unsigned(scaler_a_cnt_reg) = unsigned(scaler_a_i) else '0';
+
+  scaler_b_cnt_next <= std_logic_vector(unsigned(scaler_b_cnt_reg) + 1) when tr2_s = '1' else
+                       (others => '0') when unsigned(scaler_b_cnt_reg) = unsigned(scaler_b_i) else
+                       scaler_b_cnt_reg;
+  tr21_s_dly_next    <= '1' when tr2_s = '1' else '0';
+
+  scaler_b_max_tick <= '1' when unsigned(scaler_b_cnt_reg) = unsigned(scaler_b_i) else '0';
+  -----------------------------------------------------------------------------------------------------
+
+  -----------------------------------------------------------------------------------------------------
+  --trigger
+  process(aclk)
+  begin
+    if (rising_edge(aclk)) then
+      if (aresetn = '0') then
+        tr_status_reg  <= (others => '0');
+        cnt_status_reg <= (others => '0');
+        trig_cnt_reg   <= (others => '0');
+      else
+        tr_status_reg  <= tr_status_next;
+        cnt_status_reg <= cnt_status_next;
+        trig_cnt_reg   <= trig_cnt_next;
+      end if;
+    end if;
+  end process;
+
+
+  -- The trigger is at  bin 4 because we loose a clock pulse in the state machine
+  -- next state logic
+  tr1_s <=  '1' when ((adc_dat_a_reg(10)(adc_dat_a_reg(10)'left) = trig_lvl_a(trig_lvl_a'left)) and 
+            (signed(adc_dat_a_reg(10)(AXIS_TDATA_WIDTH/2-2 downto 0)) >= signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_a_reg(9)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_a_reg(8)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_a_reg(7)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_a_reg(6)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_a_reg(5)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_a_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_a_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_a_reg(1)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0)))) else
+            '0';
+  tr2_s <=  '1' when ((adc_dat_b_reg(10)(adc_dat_b_reg(10)'left) = trig_lvl_b(trig_lvl_b'left)) and 
+            (signed(adc_dat_b_reg(10)(AXIS_TDATA_WIDTH/2-2 downto 0)) >= signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_b_reg(9)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_b_reg(8)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_b_reg(7)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_b_reg(6)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_b_reg(5)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_b_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_b_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0))) and
+            (signed(adc_dat_b_reg(1)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0)))) else
+            '0';
+
+  --tr_s <= '1' when  ((tr1_s = '1') or (tr2_s = '1')) else '0';
+  tr_s <= '1' when  ((scaler_a_max_tick = '1') or (scaler_b_max_tick = '1')) else '0';
+
+  --tr_status_next <=   "010" & tr2_s & tr1_s & clk_cnt_pps_i when (tr_s = '1') else
+  tr_status_next <=   "010" & tr21_s_dly_reg & tr11_s_dly_reg & clk_cnt_pps_i when (tr_s = '1') else
+                      tr_status_reg;
+  cnt_status_next <=  "10" & trig_cnt_reg when (tr_s = '1') else
+                      cnt_status_reg;
+
+  trig_cnt_next <= std_logic_vector(unsigned(trig_cnt_reg) + 1) when (tr_s = '1') else
+                   trig_cnt_reg;
+
+  ----------------------------------------------------------------------------------------------------------
+
+  ----------------------------------------------------------------------------------------------------------
+  --sub-trigger: we test for a sub-trigger and we must not have a trigger in the next two clocks
+  process(aclk)
+  begin
+    if (rising_edge(aclk)) then
+      if (aresetn = '0') then
+        charge1_reg <= (others => '0');
+        charge2_reg <= (others => '0');
+        array_scalers_reg(SUBTRIG_ARRAY_LENGTH-1) <= (others => '0');
+        array_scalers_reg(SUBTRIG_ARRAY_LENGTH-2) <= (others => '0');
+        array_scalers_reg(SUBTRIG_ARRAY_LENGTH-3) <= (others => '0');
+      else
+        charge1_reg <= charge1_next;
+        charge2_reg <= charge2_next;
+        array_scalers_reg(SUBTRIG_ARRAY_LENGTH-1) <= array_scalers_next(SUBTRIG_ARRAY_LENGTH-1);
+        array_scalers_reg(SUBTRIG_ARRAY_LENGTH-2) <= array_scalers_next(SUBTRIG_ARRAY_LENGTH-2);
+        array_scalers_reg(SUBTRIG_ARRAY_LENGTH-3) <= array_scalers_next(SUBTRIG_ARRAY_LENGTH-3);
+      end if;
+    end if;
+  end process;
+  -- next state logic
+  subtr1_s <= '1' when adc_dat_a_reg(2)(adc_dat_a_reg(2)'left) = subtrig_lvl_a(subtrig_lvl_a'left) and 
+              signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) >= signed(subtrig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0)) and
+              signed(adc_dat_a_reg(1)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) and
+              (signed(adc_dat_a_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) or
+              (signed(adc_dat_a_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) = signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) and
+              signed(adc_dat_a_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)))) and
+              (adc_dat_a_reg(2)(adc_dat_a_reg(2)'left) = trig_lvl_a(trig_lvl_a'left)) and 
+              signed(adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0)) and
+              signed(adc_dat_a_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0)) and
+              signed(adc_dat_a_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_a(AXIS_TDATA_WIDTH/2-2 downto 0)) else
+              '0';
+  subtr2_s <= '1' when adc_dat_b_reg(2)(adc_dat_b_reg(2)'left) = subtrig_lvl_b(subtrig_lvl_b'left) and
+              signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) >= signed(subtrig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0)) and
+              signed(adc_dat_b_reg(1)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) and
+              (signed(adc_dat_b_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) or
+              (signed(adc_dat_b_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) = signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) and
+              signed(adc_dat_b_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)))) and
+              (adc_dat_b_reg(2)(adc_dat_b_reg(2)'left) = trig_lvl_b(trig_lvl_b'left)) and 
+              signed(adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0)) and
+              signed(adc_dat_b_reg(3)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0)) and
+              signed(adc_dat_b_reg(4)(AXIS_TDATA_WIDTH/2-2 downto 0)) < signed(trig_lvl_b(AXIS_TDATA_WIDTH/2-2 downto 0)) else
+              '0';
+  subtr_s <=  '1' when  ((subtr1_s = '1') or (subtr2_s = '1')) else '0';
+
+  charge1_next <= charge1_reg + adc_dat_a_reg'left - adc_dat_a_reg'right;
+  charge2_next <= charge2_reg + adc_dat_b_reg'left - adc_dat_b_reg'right;
+
+  array_scalers_next(SUBTRIG_ARRAY_LENGTH-1) <= "010" & subtr2_s & subtr1_s & clk_cnt_pps_i when (subtr_s = '1') else
+                                                array_scalers_reg(SUBTRIG_ARRAY_LENGTH-1);
+  array_scalers_next(SUBTRIG_ARRAY_LENGTH-2) <= "0000" & std_logic_vector(charge1_reg) & std_logic_vector(charge2_reg) when (subtr_s = '1') else
+                                                array_scalers_reg(SUBTRIG_ARRAY_LENGTH-2); --charge values per channel
+  array_scalers_next(SUBTRIG_ARRAY_LENGTH-3) <= "0000" & adc_dat_a_reg(2)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1 downto 0) & adc_dat_b_reg(2)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1 downto 0) when (subtr_s = '1') else
+                                                array_scalers_reg(SUBTRIG_ARRAY_LENGTH-3); --we send the pulse maximum too
+
+  ----------------------------------------------------------------------------------------------------------------
+
+  ----------------------------------------------------------------------------------------------------------------
+  -- FSM controlling all
+  --================================================================
+  -- state and data registers
+  --================================================================
+  process (aclk)
+  begin
+    if (rising_edge(aclk)) then
+      if (aresetn = '0') then
+        state_reg      <= ST_IDLE;
+        wr_count_reg   <= (others => '0');
+        data_to_fifo_reg <= (others => '0');
+        axis_tvalid_reg <= '0';
+        axis_tready_reg <= '0';
+      else
+        state_reg      <= state_next;
+        wr_count_reg   <= wr_count_next;
+        data_to_fifo_reg <= data_to_fifo_next;
+        axis_tvalid_reg <= axis_tvalid_next;
+        axis_tready_reg <= axis_tready_next;
+      end if;
+    end if;
+  end process;
+  --=================================================================
+  --next-state logic & data path functional units/routing
+  --=================================================================
+  process(state_reg, status, wr_count_reg)
+  begin
+    state_next        <= state_reg;         -- default 
+    wr_count_next     <= (others => '0'); -- wr_count_reg;
+    data_to_fifo_next <= data_to_fifo_reg;  -- default 
+    axis_tvalid_next  <= '0';               -- default disable write
+    axis_tready_next  <= '1';               -- always ready
+    case state_reg is
+      when ST_IDLE =>
+        if (m_axis_tready = '1') then
+          case status is
+            when "001" | "011" | "101" | "111" => -- priority is for PPS data every second
+              state_next <= ST_ATT_PPS;
+            when "100" | "110" =>
+              state_next <= ST_ATT_TR;
+            when "010" =>
+              state_next <= ST_ATT_SUBTR;
+            when others => --"000"
+              state_next <= ST_IDLE;
+          end case;
+        else
+          state_next <= ST_IDLE;
+        end if;
+
+      --we send adc data because we have a trigger
+      when ST_ATT_TR =>
+        axis_tready_next <= '0';
+        axis_tvalid_next <= '1';
+        if (m_axis_tready = '1') then
+          wr_count_next <= wr_count_reg + 1;
+          --data_to_fifo_next <= "00" & adc_dat_b_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1) & not(adc_dat_b_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-2 downto 0)) & "00" & adc_dat_a_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1) & not(adc_dat_a_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-2 downto 0));
+          data_to_fifo_next <= "00" & adc_dat_b_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1) & adc_dat_b_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-2 downto 0) & "00" & adc_dat_a_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-1) & adc_dat_a_reg(0)(AXIS_TDATA_WIDTH/2-PADDING_WIDTH-2 downto 0);
+          --data_to_fifo_next <= "00" & (29 downto 8 => '0') & std_logic_vector(wr_count_reg);
+          if (wr_count_reg = DATA_ARRAY_LENGTH-1) then
+            state_next <= ST_SEND_TR_STATUS;
+          else
+            state_next <= ST_ATT_TR;
+          end if;
+        else
+          state_next <= ST_ATT_TR;
+        end if;
+
+      when ST_SEND_TR_STATUS =>
+        axis_tready_next <= '0';
+        axis_tvalid_next <= '1';
+        if (m_axis_tready = '1') then
+          data_to_fifo_next <= tr_status_reg;
+          --data_to_fifo_next <= "01" & std_logic_vector(to_unsigned(33,30));
+          state_next <= ST_SEND_CNT_STATUS;
+        else
+          state_next <= ST_SEND_TR_STATUS;
+        end if;
+
+      when ST_SEND_CNT_STATUS =>
+        axis_tready_next <= '0';
+        axis_tvalid_next <= '1';
+        if (m_axis_tready = '1') then
+          data_to_fifo_next <= cnt_status_reg;
+          --data_to_fifo_next <= "10" & std_logic_vector(to_unsigned(55,30));
+          state_next <= ST_IDLE;
+        else
+          state_next <= ST_SEND_CNT_STATUS;
+        end if;
+
+      when ST_ATT_SUBTR =>
+        axis_tready_next <= '0';
+        axis_tvalid_next <= '1';
+        if (m_axis_tready = '1') then
+          wr_count_next <= wr_count_reg + 1;
+          data_to_fifo_next <= array_scalers_reg(to_integer(wr_count_reg));
+          if (wr_count_reg = SUBTRIG_ARRAY_LENGTH-1) then
+            state_next <= ST_IDLE;
+          else 
+            state_next <= ST_ATT_SUBTR;
+          end if;
+        else
+          state_next <= ST_ATT_SUBTR;
+        end if;
+
+      when ST_ATT_PPS =>
+        axis_tready_next <= '0';
+        axis_tvalid_next <= '1';
+        if (m_axis_tready = '1') then
+          wr_count_next <= wr_count_reg + 1;
+          data_to_fifo_next <= array_pps_reg(to_integer(wr_count_reg));
+          if (wr_count_reg = METADATA_ARRAY_LENGTH-1) then
+            state_next <= ST_IDLE;
+          else
+            state_next <= ST_ATT_PPS;
+          end if;
+        else
+          state_next <= ST_ATT_PPS;
+        end if;
+    end case;
+  end process;
+
+  status <= tr_s & subtr_s & pps_i;
+  s_axis_tready <= axis_tready_reg;
+  m_axis_tdata <= data_to_fifo_reg;
+  m_axis_tvalid <= axis_tvalid_reg;
 
 end architecture rtl;
 
diff --git a/projects/adc_recorder/adc-recorder.c b/projects/adc_recorder/adc-recorder.c
index 388d582..9da0051 100644
--- a/projects/adc_recorder/adc-recorder.c
+++ b/projects/adc_recorder/adc-recorder.c
@@ -10,72 +10,72 @@
 
 int main()
 {
-  int fd, i;
-  volatile uint8_t *rst;
-  volatile void *cfg;
-  volatile int16_t *ram;
-  uint32_t size;
-  int16_t value[2];
+	int fd, i;
+	volatile uint8_t *rst;
+	volatile void *cfg;
+	volatile int16_t *ram;
+	uint32_t size;
+	int16_t value[2];
 
-  if((fd = open("/dev/mem", O_RDWR)) < 0)
-  {
-    perror("open");
-    return EXIT_FAILURE;
-  }
+	if((fd = open("/dev/mem", O_RDWR)) < 0)
+	{
+		perror("open");
+		return EXIT_FAILURE;
+	}
 
-  cfg = mmap(NULL, sysconf(_SC_PAGESIZE), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0x40000000);
+	cfg = mmap(NULL, sysconf(_SC_PAGESIZE), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0x40000000);
 
-  close(fd);
+	close(fd);
 
-  if((fd = open("/dev/cma", O_RDWR)) < 0)
-  {
-    perror("open");
-    return EXIT_FAILURE;
-  }
+	if((fd = open("/dev/cma", O_RDWR)) < 0)
+	{
+		perror("open");
+		return EXIT_FAILURE;
+	}
 
-  size = 1024*sysconf(_SC_PAGESIZE);
+	size = 1024*sysconf(_SC_PAGESIZE);
 
-  if(ioctl(fd, CMA_ALLOC, &size) < 0)
-  {
-    perror("ioctl");
-    return EXIT_FAILURE;
-  }
+	if(ioctl(fd, CMA_ALLOC, &size) < 0)
+	{
+		perror("ioctl");
+		return EXIT_FAILURE;
+	}
 
-  ram = mmap(NULL, 1024*sysconf(_SC_PAGESIZE), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+	ram = mmap(NULL, 1024*sysconf(_SC_PAGESIZE), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
 
-  rst = (uint8_t *)(cfg + 0);
+	rst = (uint8_t *)(cfg + 0);
 
-  // set writer address
-  *(uint32_t *)(cfg + 4) = size;
+	// set writer address
+	*(uint32_t *)(cfg + 4) = size;
 
-  // set number of samples
-  *(uint32_t *)(cfg + 8) = 1024 * 1024 - 1;
+	// set number of samples
+	*(uint32_t *)(cfg + 8) = 1024 * 1024 - 1;
 
-  // reset writer
-  *rst &= ~4;
-  *rst |= 4;
+	// reset writer
+	*rst &= ~4;
+	*rst |= 4;
 
-  // reset fifo and filters
-  *rst &= ~1;
-  *rst |= 1;
+	// reset fifo and filters
+	*rst &= ~1;
+	*rst |= 1;
 
-  // wait 1 second
-  sleep(1);
+	// wait 1 second
+	sleep(1);
 
-  // reset packetizer
-  *rst &= ~2;
-  *rst |= 2;
+	// reset packetizer
+	*rst &= ~2;
+	*rst |= 2;
 
-  // wait 1 second
-  sleep(1);
+	// wait 1 second
+	sleep(1);
 
-  // print IN1 and IN2 samples
-  for(i = 0; i < 1024 * 1024; ++i)
-  {
-    value[0] = ram[2 * i + 0];
-    value[1] = ram[2 * i + 1];
-    printf("%5d %5d\n", value[0], value[1]);
-  }
+	// print IN1 and IN2 samples
+	for(i = 0; i < 1024 * 1024; ++i)
+	{
+		value[0] = ram[2 * i + 0];
+		value[1] = ram[2 * i + 1];
+		printf("%5d %5d\n", value[0], value[1]);
+	}
 
-  return EXIT_SUCCESS;
+	return EXIT_SUCCESS;
 }
-- 
GitLab