From de6faf5fc12b252cc142bca47ee28b4bd2d85162 Mon Sep 17 00:00:00 2001
From: Eric Kooistra <kooistra@astron.nl>
Date: Mon, 24 Oct 2022 17:06:34 +0200
Subject: [PATCH] Add t_diag_block_gen_integer and
 func_diag_bg_ctrl_integer_to_slv().

---
 libraries/base/diag/src/vhdl/diag_pkg.vhd | 37 ++++++++++++++++++++---
 1 file changed, 33 insertions(+), 4 deletions(-)

diff --git a/libraries/base/diag/src/vhdl/diag_pkg.vhd b/libraries/base/diag/src/vhdl/diag_pkg.vhd
index 1d1fd44248..896a8d5959 100644
--- a/libraries/base/diag/src/vhdl/diag_pkg.vhd
+++ b/libraries/base/diag/src/vhdl/diag_pkg.vhd
@@ -123,9 +123,20 @@ PACKAGE diag_pkg IS
     mem_low_adrs       : STD_LOGIC_VECTOR(c_diag_bg_mem_low_adrs_w       -1 DOWNTO 0);  
     mem_high_adrs      : STD_LOGIC_VECTOR(c_diag_bg_mem_high_adrs_w      -1 DOWNTO 0);  
     bsn_init           : STD_LOGIC_VECTOR(c_diag_bg_bsn_init_w           -1 DOWNTO 0);  
-  END RECORD;   
-  
-  CONSTANT c_diag_block_gen_rst     : t_diag_block_gen := (         '0',      
+  END RECORD;
+
+  TYPE t_diag_block_gen_integer IS RECORD
+    enable             : STD_LOGIC;
+    enable_sync        : STD_LOGIC;
+    samples_per_packet : NATURAL;
+    blocks_per_sync    : NATURAL;
+    gapsize            : NATURAL;
+    mem_low_adrs       : NATURAL;
+    mem_high_adrs      : NATURAL;
+    bsn_init           : NATURAL;
+  END RECORD;
+
+  CONSTANT c_diag_block_gen_rst     : t_diag_block_gen := (         '0',
                                                                     '0',      
                                                            TO_UVEC( 256, c_diag_bg_samples_per_packet_w), 
                                                            TO_UVEC(  10, c_diag_bg_blocks_per_sync_w),      
@@ -143,11 +154,17 @@ PACKAGE diag_pkg IS
                                                            TO_UVEC(  15, c_diag_bg_mem_high_adrs_w),   -- fits any BG buffer that has address width >= 4
                                                            TO_UVEC(   0, c_diag_bg_bsn_init_w));
                                                        
+  CONSTANT c_diag_block_gen_integer_rst     : t_diag_block_gen_integer := ('0', '0', 256, 10, 128, 0,  1, 0);
+  CONSTANT c_diag_block_gen_integer_enabled : t_diag_block_gen_integer := ('1', '0',  50, 10,   7, 0, 15, 0);
+
   TYPE t_diag_block_gen_arr IS ARRAY (INTEGER RANGE <>) OF t_diag_block_gen;
- 
+  TYPE t_diag_block_gen_integer_arr IS ARRAY (INTEGER RANGE <>) OF t_diag_block_gen_integer;
+
   -- Overloaded sel_a_b (from common_pkg) for t_diag_block_gen
   FUNCTION sel_a_b(sel : BOOLEAN; a, b : t_diag_block_gen) RETURN t_diag_block_gen; 
 
+  FUNCTION func_diag_bg_ctrl_integer_to_slv(bg_ctrl_int : t_diag_block_gen_integer) RETURN t_diag_block_gen;
+
   -----------------------------------------------------------------------------
   -- Data buffer
   -----------------------------------------------------------------------------
@@ -214,4 +231,16 @@ PACKAGE BODY diag_pkg IS
     END IF;
   END;
 
+  FUNCTION func_diag_bg_ctrl_integer_to_slv(bg_ctrl_int : t_diag_block_gen_integer) RETURN t_diag_block_gen IS
+  BEGIN
+    RETURN (        bg_ctrl_int.enable,
+                    bg_ctrl_int.enable_sync,
+            TO_UVEC(bg_ctrl_int.samples_per_packet, c_diag_bg_samples_per_packet_w),
+            TO_UVEC(bg_ctrl_int.blocks_per_sync   , c_diag_bg_blocks_per_sync_w),
+            TO_UVEC(bg_ctrl_int.gapsize           , c_diag_bg_gapsize_w),
+            TO_UVEC(bg_ctrl_int.mem_low_adrs      , c_diag_bg_mem_low_adrs_w),
+            TO_UVEC(bg_ctrl_int.mem_high_adrs     , c_diag_bg_mem_high_adrs_w),
+            TO_UVEC(bg_ctrl_int.bsn_init          , c_diag_bg_bsn_init_w));
+  END;
+
 END diag_pkg;
-- 
GitLab