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