SIGNALin_start:INSTD_LOGIC;-- start of interval, e.g. sop or sync
SIGNALin_start:INSTD_LOGIC;-- start of interval, e.g. sop or sync
SIGNALin_val:INSTD_LOGIC;
SIGNALin_val:INSTD_LOGIC;
SIGNALtrack_max:INOUTREAL;-- store local tracker in signal
SIGNALtrack_min:INOUTREAL;-- store local tracker in signal
SIGNALaccum_mean:INOUTREAL;-- store local accumulator in signal
SIGNALaccum_mean:INOUTREAL;-- store local accumulator in signal
SIGNALaccum_power:INOUTREAL;-- store local accumulator in signal
SIGNALaccum_power:INOUTREAL;-- store local accumulator in signal
SIGNALmeasured_max:OUTREAL;-- maximum sample value
SIGNALmeasured_min:OUTREAL;-- minimum sample value
SIGNALmeasured_mean:OUTREAL;-- average sample value (DC)
SIGNALmeasured_mean:OUTREAL;-- average sample value (DC)
SIGNALmeasured_power:OUTREAL;-- average sample power
SIGNALmeasured_power:OUTREAL;-- average sample power
SIGNALmeasured_ampl:OUTREAL);-- corresponding sine amplitude
SIGNALmeasured_ampl:OUTREAL);-- corresponding sine amplitude
...
@@ -462,8 +466,12 @@ PACKAGE BODY tb_diag_pkg IS
...
@@ -462,8 +466,12 @@ PACKAGE BODY tb_diag_pkg IS
SIGNALin_dat:INSTD_LOGIC_VECTOR;
SIGNALin_dat:INSTD_LOGIC_VECTOR;
SIGNALin_start:INSTD_LOGIC;-- start of interval, e.g. sop or sync
SIGNALin_start:INSTD_LOGIC;-- start of interval, e.g. sop or sync
SIGNALin_val:INSTD_LOGIC;
SIGNALin_val:INSTD_LOGIC;
SIGNALtrack_max:INOUTREAL;-- store local tracker in signal
SIGNALtrack_min:INOUTREAL;-- store local tracker in signal
SIGNALaccum_mean:INOUTREAL;-- store local accumulator in signal
SIGNALaccum_mean:INOUTREAL;-- store local accumulator in signal
SIGNALaccum_power:INOUTREAL;-- store local accumulator in signal
SIGNALaccum_power:INOUTREAL;-- store local accumulator in signal
SIGNALmeasured_max:OUTREAL;-- maximum sample value
SIGNALmeasured_min:OUTREAL;-- minimum sample value
SIGNALmeasured_mean:OUTREAL;-- average sample value (DC)
SIGNALmeasured_mean:OUTREAL;-- average sample value (DC)
SIGNALmeasured_power:OUTREAL;-- average sample power
SIGNALmeasured_power:OUTREAL;-- average sample power
SIGNALmeasured_ampl:OUTREAL)IS-- corresponding sine amplitude
SIGNALmeasured_ampl:OUTREAL)IS-- corresponding sine amplitude
...
@@ -475,14 +483,20 @@ PACKAGE BODY tb_diag_pkg IS
...
@@ -475,14 +483,20 @@ PACKAGE BODY tb_diag_pkg IS
BEGIN
BEGIN
IFrising_edge(dp_clk)THEN
IFrising_edge(dp_clk)THEN
IFin_start='1'THEN
IFin_start='1'THEN
-- Hold last interval accumulation
-- Hold last interval max, min and accumulation
measured_max<=track_max;
measured_min<=track_min;
measured_power<=c_power;
measured_power<=c_power;
measured_ampl<=c_ampl;
measured_ampl<=c_ampl;
-- Start new interval accumulation
-- Start new interval accumulation
track_max<=REAL'LOW;
track_min<=REAL'HIGH;
accum_mean<=c_dat;
accum_mean<=c_dat;
accum_power<=(ABS(c_dat))**2.0;-- Must use ABS() with ** of real, because (negative)**2.0 yields error and value 0.0, also must use brackets (ABS()) to avoid compile error
accum_power<=(ABS(c_dat))**2.0;-- Must use ABS() with ** of real, because (negative)**2.0 yields error and value 0.0, also must use brackets (ABS()) to avoid compile error
proc_diag_measure_cw_statistics(c_N_samples,dp_clk,fil_sosi.re,fil_sosi.sync,fil_sosi.valid,fir_accum_mean_a,fir_accum_power_a,fir_mean_a,fir_power_a,fir_ampl_a);-- use fir_ to distinguish from similar fil_ signal
proc_diag_measure_cw_statistics(c_N_samples,dp_clk,fil_sosi.re,fil_sosi.sync,fil_sosi.valid,fir_track_max_a,fir_track_min_a,fir_accum_mean_a,fir_accum_power_a,fir_max_a,fir_min_a,fir_mean_a,fir_power_a,fir_ampl_a);-- use fir_ to distinguish from similar fil_ signal
proc_diag_measure_cw_statistics(c_N_samples,dp_clk,fil_sosi.im,fil_sosi.sync,fil_sosi.valid,fir_accum_mean_b,fir_accum_power_b,fir_mean_b,fir_power_b,fir_ampl_b);-- use fir_ to distinguish from similar fil_ signal
proc_diag_measure_cw_statistics(c_N_samples,dp_clk,fil_sosi.im,fil_sosi.sync,fil_sosi.valid,fir_track_max_b,fir_track_min_b,fir_accum_mean_b,fir_accum_power_b,fir_max_b,fir_min_b,fir_mean_b,fir_power_b,fir_ampl_b);-- use fir_ to distinguish from similar fil_ signal