From e2c6a3544cd572ef545de609ce6af65497f62fa0 Mon Sep 17 00:00:00 2001 From: Reinier van der Walle <walle@astron.nl> Date: Fri, 17 Sep 2021 10:28:44 +0200 Subject: [PATCH] added st_histogram to VHDL --- .../src/vhdl/lofar2_unb2b_sdp_station.vhd | 8 +++++ .../src/vhdl/mmm_lofar2_unb2b_sdp_station.vhd | 16 +++++++++- .../qsys_lofar2_unb2b_sdp_station_pkg.vhd | 7 +++++ .../vhdl/node_sdp_adc_input_and_timing.vhd | 30 +++++++++++++++++++ .../lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd | 2 ++ .../libraries/sdp/src/vhdl/sdp_station.vhd | 6 ++++ 6 files changed, 68 insertions(+), 1 deletion(-) diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd index 537221081a..2f8f0c9f3f 100644 --- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd @@ -238,6 +238,10 @@ ARCHITECTURE str OF lofar2_unb2b_sdp_station IS SIGNAL reg_diag_data_buf_bsn_mosi : t_mem_mosi := c_mem_mosi_rst; SIGNAL reg_diag_data_buf_bsn_miso : t_mem_miso := c_mem_miso_rst; + -- ST Histogram + SIGNAL ram_st_histogram_mosi : t_mem_mosi := c_mem_mosi_rst; + SIGNAL ram_st_histogram_miso : t_mem_miso := c_mem_miso_rst; + -- Aduh statistics monitor SIGNAL reg_aduh_monitor_mosi : t_mem_mosi := c_mem_mosi_rst; SIGNAL reg_aduh_monitor_miso : t_mem_miso := c_mem_miso_rst; @@ -592,6 +596,8 @@ BEGIN ram_diag_data_buf_bsn_miso => ram_diag_data_buf_bsn_miso, reg_diag_data_buf_bsn_mosi => reg_diag_data_buf_bsn_mosi, reg_diag_data_buf_bsn_miso => reg_diag_data_buf_bsn_miso, + ram_st_histogram_mosi => ram_st_histogram_mosi, + ram_st_histogram_miso => ram_st_histogram_miso, reg_aduh_monitor_mosi => reg_aduh_monitor_mosi, reg_aduh_monitor_miso => reg_aduh_monitor_miso, ram_st_sst_mosi => ram_st_sst_mosi, @@ -713,6 +719,8 @@ BEGIN ram_diag_data_buf_bsn_miso => ram_diag_data_buf_bsn_miso, reg_diag_data_buf_bsn_mosi => reg_diag_data_buf_bsn_mosi, reg_diag_data_buf_bsn_miso => reg_diag_data_buf_bsn_miso, + ram_st_histogram_mosi => ram_st_histogram_mosi, + ram_st_histogram_miso => ram_st_histogram_miso, reg_aduh_monitor_mosi => reg_aduh_monitor_mosi, reg_aduh_monitor_miso => reg_aduh_monitor_miso, diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/mmm_lofar2_unb2b_sdp_station.vhd b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/mmm_lofar2_unb2b_sdp_station.vhd index 4d630d837d..a5002af9f7 100644 --- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/mmm_lofar2_unb2b_sdp_station.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/mmm_lofar2_unb2b_sdp_station.vhd @@ -130,6 +130,10 @@ ENTITY mmm_lofar2_unb2b_sdp_station IS reg_diag_data_buf_bsn_mosi : OUT t_mem_mosi; reg_diag_data_buf_bsn_miso : IN t_mem_miso; + -- ST Histogram + ram_st_histogram_mosi : OUT t_mem_mosi; + ram_st_histogram_miso : IN t_mem_miso; + -- Aduh reg_aduh_monitor_mosi : OUT t_mem_mosi; reg_aduh_monitor_miso : IN t_mem_miso; @@ -304,6 +308,9 @@ BEGIN u_mm_file_reg_diag_data_buf_bsn : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_DIAG_DATA_BUFFER_BSN") PORT MAP(mm_rst, mm_clk, reg_diag_data_buf_bsn_mosi, reg_diag_data_buf_bsn_miso ); + u_mm_file_ram_st_histogram : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "RAM_ST_HISTOGRAM") + PORT MAP(mm_rst, mm_clk, ram_st_histogram_mosi, ram_st_histogram_miso ); + u_mm_file_reg_aduh_monitor : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_ADUH_MONITOR") PORT MAP(mm_rst, mm_clk, reg_aduh_monitor_mosi, reg_aduh_monitor_miso ); @@ -599,7 +606,6 @@ BEGIN reg_mmdp_ctrl_write_export => reg_mmdp_ctrl_mosi.wr, reg_mmdp_ctrl_writedata_export => reg_mmdp_ctrl_mosi.wrdata(c_word_w-1 DOWNTO 0), - ram_diag_data_buffer_bsn_clk_export => OPEN, ram_diag_data_buffer_bsn_reset_export => OPEN, ram_diag_data_buffer_bsn_address_export => ram_diag_data_buf_bsn_mosi.address(c_sdp_ram_diag_data_buf_bsn_addr_w-1 DOWNTO 0), @@ -616,6 +622,14 @@ BEGIN reg_diag_data_buffer_bsn_read_export => reg_diag_data_buf_bsn_mosi.rd, reg_diag_data_buffer_bsn_readdata_export => reg_diag_data_buf_bsn_miso.rddata(c_word_w-1 DOWNTO 0), + ram_st_histogram_clk_export => OPEN, + ram_st_histogram_reset_export => OPEN, + ram_st_histogram_address_export => ram_st_histogram_mosi.address(c_sdp_ram_st_histogram_addr_w-1 DOWNTO 0), + ram_st_histogram_write_export => ram_st_histogram_mosi.wr, + ram_st_histogram_writedata_export => ram_st_histogram_mosi.wrdata(c_word_w-1 DOWNTO 0), + ram_st_histogram_read_export => ram_st_histogram_mosi.rd, + ram_st_histogram_readdata_export => ram_st_histogram_miso.rddata(c_word_w-1 DOWNTO 0), + reg_aduh_monitor_reset_export => OPEN, reg_aduh_monitor_clk_export => OPEN, reg_aduh_monitor_address_export => reg_aduh_monitor_mosi.address(c_sdp_reg_aduh_monitor_addr_w-1 DOWNTO 0), diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/qsys_lofar2_unb2b_sdp_station_pkg.vhd b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/qsys_lofar2_unb2b_sdp_station_pkg.vhd index 6bc6268484..43cfd5dfa1 100644 --- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/qsys_lofar2_unb2b_sdp_station_pkg.vhd +++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/qsys_lofar2_unb2b_sdp_station_pkg.vhd @@ -91,6 +91,13 @@ PACKAGE qsys_lofar2_unb2b_sdp_station_pkg IS ram_diag_data_buffer_bsn_reset_export : out std_logic; -- export ram_diag_data_buffer_bsn_write_export : out std_logic; -- export ram_diag_data_buffer_bsn_writedata_export : out std_logic_vector(31 downto 0); -- export + ram_st_histogram_address_export : out std_logic_vector(12 downto 0); -- export + ram_st_histogram_clk_export : out std_logic; -- export + ram_st_histogram_read_export : out std_logic; -- export + ram_st_histogram_readdata_export : in std_logic_vector(31 downto 0) := (others => 'X'); -- export + ram_st_histogram_reset_export : out std_logic; -- export + ram_st_histogram_write_export : out std_logic; -- export + ram_st_histogram_writedata_export : out std_logic_vector(31 downto 0); -- export ram_equalizer_gains_address_export : out std_logic_vector(12 downto 0); -- export ram_equalizer_gains_clk_export : out std_logic; -- export ram_equalizer_gains_read_export : out std_logic; -- export diff --git a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_adc_input_and_timing.vhd b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_adc_input_and_timing.vhd index a4db59cf56..7866f1dd3d 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_adc_input_and_timing.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_adc_input_and_timing.vhd @@ -85,6 +85,10 @@ ENTITY node_sdp_adc_input_and_timing IS reg_diag_data_buf_bsn_mosi : IN t_mem_mosi; reg_diag_data_buf_bsn_miso : OUT t_mem_miso; + -- ST Histogram + ram_st_histogram_mosi : IN t_mem_mosi; + ram_st_histogram_miso : OUT t_mem_miso; + -- Aduh (statistics) monitor reg_aduh_monitor_mosi : IN t_mem_mosi; reg_aduh_monitor_miso : OUT t_mem_miso; @@ -442,6 +446,32 @@ BEGIN in_sync => st_sosi_arr(0).sync ); + ----------------------------------------------------------------------------- + -- ST Histogram + ----------------------------------------------------------------------------- + + u_st_histogram : ENTITY st_lib.mmp_st_histogram + GENERIC MAP ( + g_nof_instances => c_sdp_S_pn, + g_data_w => c_sdp_W_adc, + g_nof_bins => c_sdp_V_si_histogram, + g_nof_data_per_sync => 10**6 * c_sdp_f_adc_MHz + ) + PORT MAP ( + mm_rst => mm_rst_internal, + mm_clk => mm_clk, + dp_rst => rx_rst, + dp_clk => rx_clk, + + ram_copi => ram_st_histogram_mosi, + ram_cipo => ram_st_histogram_miso, + + snk_in_arr => st_sosi_arr + ); + + + + ----------------------------------------------------------------------------- -- Output Stage diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd index 34b60a1579..71c70f6fa3 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd @@ -84,6 +84,7 @@ PACKAGE sdp_pkg is CONSTANT c_sdp_V_sample_delay : NATURAL := 4096; CONSTANT c_sdp_V_si_db : NATURAL := 1024; CONSTANT c_sdp_V_si_db_large : NATURAL := 131072; + CONSTANT c_sdp_V_si_histogram : NATURAL := 512; CONSTANT c_sdp_W_adc : NATURAL := 14; CONSTANT c_sdp_W_adc_jesd : NATURAL := 16; CONSTANT c_sdp_W_beamlet : NATURAL := 8; @@ -297,6 +298,7 @@ PACKAGE sdp_pkg is CONSTANT c_sdp_reg_bsn_scheduler_addr_w : NATURAL := 1; CONSTANT c_sdp_ram_diag_data_buf_bsn_addr_w : NATURAL := ceil_log2(c_sdp_S_pn*c_sdp_V_si_db_large); -- Dimension DB address range for largest DB, so that both the large and the default small DB fit. CONSTANT c_sdp_reg_diag_data_buf_bsn_addr_w : NATURAL := 1 + ceil_log2(c_sdp_S_pn); + CONSTANT c_sdp_ram_st_histogram_addr_w : NATURAL := ceil_log2(c_sdp_S_pn*c_sdp_V_si_histogram); CONSTANT c_sdp_reg_aduh_monitor_addr_w : NATURAL := 2 + ceil_log2(c_sdp_S_pn); -- FSUB MM address widths diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd index 539d746a10..26714361d8 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_station.vhd @@ -134,6 +134,10 @@ ENTITY sdp_station IS reg_diag_data_buf_bsn_mosi : IN t_mem_mosi := c_mem_mosi_rst; reg_diag_data_buf_bsn_miso : OUT t_mem_miso := c_mem_miso_rst; + -- ST Histogram + ram_st_histogram_mosi : IN t_mem_mosi := c_mem_mosi_rst; + ram_st_histogram_miso : OUT t_mem_miso := c_mem_miso_rst; + -- Aduh statistics monitor reg_aduh_monitor_mosi : IN t_mem_mosi := c_mem_mosi_rst; reg_aduh_monitor_miso : OUT t_mem_miso := c_mem_miso_rst; @@ -428,6 +432,8 @@ BEGIN ram_diag_data_buf_bsn_miso => ram_diag_data_buf_bsn_miso, reg_diag_data_buf_bsn_mosi => reg_diag_data_buf_bsn_mosi, reg_diag_data_buf_bsn_miso => reg_diag_data_buf_bsn_miso, + ram_st_histogram_mosi => ram_st_histogram_mosi, + ram_st_histogram_miso => ram_st_histogram_miso, reg_aduh_monitor_mosi => reg_aduh_monitor_mosi, reg_aduh_monitor_miso => reg_aduh_monitor_miso, -- GitLab