From d7ac4b2fecd78200d5e7297bf785e6f1206a4448 Mon Sep 17 00:00:00 2001
From: Priest <priest>
Date: Mon, 24 Oct 2016 07:42:31 +0000
Subject: [PATCH] Added entities dp_bsn_monitor and diag_data_buffer and
 changed unb1_ctrl accordingly

---
 .../src/vhdl/compaan_io_test_bn.vhd           | 157 +++++++++++++-----
 1 file changed, 115 insertions(+), 42 deletions(-)

diff --git a/applications/compaan/designs/compaan_io_test_bn/src/vhdl/compaan_io_test_bn.vhd b/applications/compaan/designs/compaan_io_test_bn/src/vhdl/compaan_io_test_bn.vhd
index a0aa35404d..5fda8e52ec 100644
--- a/applications/compaan/designs/compaan_io_test_bn/src/vhdl/compaan_io_test_bn.vhd
+++ b/applications/compaan/designs/compaan_io_test_bn/src/vhdl/compaan_io_test_bn.vhd
@@ -23,22 +23,16 @@
 -- Purpose:
 -- . Test Compaan's capability of inter-FPGA communication
 
-LIBRARY IEEE, common_lib, unb1_board_lib, dp_lib, eth_lib, tech_tse_lib, diag_lib, tr_10GbE_lib, technology_lib;
+LIBRARY IEEE, common_lib, unb1_board_lib, dp_lib, diag_lib, technology_lib;
 use IEEE.STD_LOGIC_1164.ALL;
 USE IEEE.NUMERIC_STD.ALL;
 USE common_lib.common_pkg.ALL;
 USE common_lib.common_str_pkg.ALL;
 USE common_lib.common_mem_pkg.ALL;
-USE common_lib.common_network_layers_pkg.ALL;
-USE common_lib.common_interface_layers_pkg.ALL;
 USE unb1_board_lib.unb1_board_pkg.ALL;
 USE unb1_board_lib.unb1_board_peripherals_pkg.ALL;
 USE dp_lib.dp_stream_pkg.ALL;
-USE tech_tse_lib.tech_tse_pkg.ALL;
-USE eth_lib.eth_pkg.ALL;
-USE common_lib.common_network_layers_pkg.ALL;
 USE diag_lib.diag_pkg.ALL;
-USE common_lib.common_field_pkg.ALL;
 USE technology_lib.technology_pkg.ALL;
 
 ENTITY compaan_io_test_bn IS
@@ -100,6 +94,8 @@ ARCHITECTURE str OF compaan_io_test_bn IS
   -- General
   CONSTANT c_fw_version            : t_unb1_board_fw_version := (1, 0);
   CONSTANT c_block_size            : NATURAL := 8;
+  CONSTANT c_gap_size              : NATURAL := 3000; 
+  CONSTANT c_nof_blocks_per_sync   : NATURAL := 200000;
   CONSTANT c_use_1GbE              : BOOLEAN := TRUE;
   CONSTANT c_use_phy               : t_c_unb1_board_use_phy  := (sel_a_b(g_sim, 0, 1), 0, 0, 0, 0, 0, 0, 1);
   -- Terminal                      
@@ -122,7 +118,10 @@ ARCHITECTURE str OF compaan_io_test_bn IS
   CONSTANT c_term_rx_fifo_size     : NATURAL := c_bram_m9k_fifo_depth;
   CONSTANT c_term_rx_fifo_fill     : NATURAL := 0;
   CONSTANT c_term_rx_timeout_w     : NATURAL := 0;
-                            
+  
+  -- BSN Monitor
+  CONSTANT c_nof_bsn_mon_streams   : NATURAL := 2;
+  CONSTANT c_bsn_mon_timeout       : NATURAL := (c_block_size+c_gap_size)*c_nof_blocks_per_sync*10/8;
   -----------------------------------------------------------------------------
   -- SIGNALS
   -----------------------------------------------------------------------------
@@ -164,6 +163,10 @@ ARCHITECTURE str OF compaan_io_test_bn IS
   SIGNAL TEST_FIFO_FULL            : STD_LOGIC_VECTOR(1 DOWNTO 0);
   SIGNAL TEST_BLOCK_RD             : STD_LOGIC_VECTOR(2 DOWNTO 0);
   
+  -- BSN monitor
+  SIGNAL bsn_monitor_snk_in_arr    : t_dp_sosi_arr(c_nof_bsn_mon_streams-1 DOWNTO 0);                                                            
+  SIGNAL bsn_monitor_snk_out_arr   : t_dp_siso_arr(c_nof_bsn_mon_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy);
+  
   -- MM interface
   -- . Terminal                         
   SIGNAL reg_tr_nonbonded_mosi          : t_mem_mosi;
@@ -172,7 +175,15 @@ ARCHITECTURE str OF compaan_io_test_bn IS
   SIGNAL reg_diagnostics_miso           : t_mem_miso; 
   -- . Compaan                          
   SIGNAL reg_compaan_mosi               : t_mem_mosi;
-  SIGNAL reg_compaan_miso               : t_mem_miso; 
+  SIGNAL reg_compaan_miso               : t_mem_miso;
+  -- . Databuffer
+  SIGNAL ram_diag_data_buffer_mosi      : t_mem_mosi;
+  SIGNAL ram_diag_data_buffer_miso      : t_mem_miso;
+  SIGNAL reg_diag_data_buffer_mosi      : t_mem_mosi;
+  SIGNAL reg_diag_data_buffer_miso      : t_mem_miso;
+  -- . BSN Monitor
+  SIGNAL reg_bsn_monitor_mosi           : t_mem_mosi;
+  SIGNAL reg_bsn_monitor_miso           : t_mem_miso; 
   -- . UNB1 Cntrl                       
   SIGNAL reg_wdi_mosi                   : t_mem_mosi;
   SIGNAL reg_wdi_miso                   : t_mem_miso;  
@@ -288,7 +299,8 @@ BEGIN
   -----------------------------------------------------------------------------
   u_compaan_design: ENTITY work.compaan_wrapper
     GENERIC MAP(
-      g_blocks_per_sync => c_block_size
+      g_blocks_per_sync => c_nof_blocks_per_sync,
+      g_blocksize       => c_block_size
     )
     PORT MAP(
       -- Streaming sink
@@ -323,6 +335,61 @@ BEGIN
     END GENERATE;
   END GENERATE;
 
+  -----------------------------------------------------------------------------
+  -- Databuffer
+  -----------------------------------------------------------------------------
+  u_diag_data_buffer : ENTITY diag_lib.mms_diag_data_buffer
+    GENERIC MAP (    
+      g_nof_streams  => c_nof_streams,
+      g_data_w       => c_term_data_w,
+      g_buf_nof_data => 1024,
+      g_buf_use_sync => FALSE 
+    )
+    PORT MAP (
+      mm_rst            => mm_rst,
+      mm_clk            => mm_clk,
+      dp_rst            => dp_rst,
+      dp_clk            => dp_clk,
+    
+      ram_data_buf_mosi => ram_diag_data_buffer_mosi,
+      ram_data_buf_miso => ram_diag_data_buffer_miso,
+      reg_data_buf_mosi => reg_diag_data_buffer_mosi,
+      reg_data_buf_miso => reg_diag_data_buffer_miso,
+    
+      in_sync           => compaan_snk_in_arr(3).sync,
+      in_sosi_arr       => compaan_snk_in_arr(3 DOWNTO 3)
+    );
+  
+  -----------------------------------------------------------------------------
+  -- BSN monitor
+  -----------------------------------------------------------------------------
+  u_dp_bsn_monitor: ENTITY dp_lib.mms_dp_bsn_monitor
+    GENERIC MAP (
+      g_nof_streams        => c_nof_bsn_mon_streams,
+      g_cross_clock_domain => TRUE,
+      g_sync_timeout       => c_bsn_mon_timeout,
+      g_cnt_sop_w          => ceil_log2(c_nof_blocks_per_sync+1),     
+      g_cnt_valid_w        => ceil_log2(c_nof_blocks_per_sync*c_block_size+1),
+      g_log_first_bsn      => TRUE
+    )
+    PORT MAP (
+      mm_rst      => mm_rst,
+      mm_clk      => mm_clk,
+      reg_mosi    => reg_bsn_monitor_mosi,
+      reg_miso    => reg_bsn_monitor_miso,
+      
+      dp_rst      => dp_rst,
+      dp_clk      => dp_clk,
+      in_siso_arr => bsn_monitor_snk_out_arr,
+      in_sosi_arr => bsn_monitor_snk_in_arr
+    );   
+  
+  bsn_monitor_snk_in_arr(0)  <= compaan_snk_in_arr(3);
+  bsn_monitor_snk_out_arr(0) <= compaan_snk_out_arr(3);
+
+  bsn_monitor_snk_in_arr(1)  <= compaan_src_out_arr(3);
+  bsn_monitor_snk_out_arr(1) <= compaan_src_in_arr(3);
+
   -----------------------------------------------------------------------------
   -- UNB1 Control
   -----------------------------------------------------------------------------
@@ -357,7 +424,7 @@ BEGIN
 
       dp_rst                   => dp_rst,
       dp_clk                   => dp_clk,
-      dp_pps                   => OPEN,
+      dp_pps                   => dp_pps,
       dp_rst_in                => dp_rst,
       dp_clk_in                => dp_clk,
 
@@ -428,37 +495,43 @@ BEGIN
       g_sim_node_nr => g_sim_node_nr
     )
     PORT MAP(
-      mm_clk                   =>  mm_clk,
-      mm_rst                   =>  mm_rst,
-      pout_wdi                 =>  pout_wdi,
-      reg_wdi_mosi             =>  reg_wdi_mosi,
-      reg_wdi_miso             =>  reg_wdi_miso,
-      reg_unb_system_info_mosi =>  reg_unb_system_info_mosi,
-      reg_unb_system_info_miso =>  reg_unb_system_info_miso,
-      rom_unb_system_info_mosi =>  rom_unb_system_info_mosi,
-      rom_unb_system_info_miso =>  rom_unb_system_info_miso,
-      reg_unb_sens_mosi        =>  reg_unb_sens_mosi,
-      reg_unb_sens_miso        =>  reg_unb_sens_miso,
-      reg_ppsh_mosi            =>  reg_ppsh_mosi,
-      reg_ppsh_miso            =>  reg_ppsh_miso,
-      eth1g_mm_rst             =>  eth1g_mm_rst,
-      eth1g_reg_interrupt      =>  eth1g_reg_interrupt,
-      eth1g_ram_mosi           =>  eth1g_ram_mosi,
-      eth1g_ram_miso           =>  eth1g_ram_miso,
-      eth1g_reg_mosi           =>  eth1g_reg_mosi,
-      eth1g_reg_miso           =>  eth1g_reg_miso,
-      eth1g_tse_mosi           =>  eth1g_tse_mosi,
-      eth1g_tse_miso           =>  eth1g_tse_miso,
-      reg_epcs_mosi            =>  reg_epcs_mosi,
-      reg_epcs_miso            =>  reg_epcs_miso,
-      reg_remu_mosi            =>  reg_remu_mosi,
-      reg_remu_miso            =>  reg_remu_miso,
-      reg_diagnostics_mosi     =>  reg_diagnostics_mosi,
-      reg_diagnostics_miso     =>  reg_diagnostics_miso,
-      reg_tr_nonbonded_mosi    =>  reg_tr_nonbonded_mosi,
-      reg_tr_nonbonded_miso    =>  reg_tr_nonbonded_miso,
-      reg_compaan_mosi         =>  reg_compaan_mosi,
-      reg_compaan_miso         =>  reg_compaan_miso
+      mm_clk                    =>  mm_clk,
+      mm_rst                    =>  mm_rst,
+      pout_wdi                  =>  pout_wdi,
+      reg_wdi_mosi              =>  reg_wdi_mosi,
+      reg_wdi_miso              =>  reg_wdi_miso,
+      reg_unb_system_info_mosi  =>  reg_unb_system_info_mosi,
+      reg_unb_system_info_miso  =>  reg_unb_system_info_miso,
+      rom_unb_system_info_mosi  =>  rom_unb_system_info_mosi,
+      rom_unb_system_info_miso  =>  rom_unb_system_info_miso,
+      reg_unb_sens_mosi         =>  reg_unb_sens_mosi,
+      reg_unb_sens_miso         =>  reg_unb_sens_miso,
+      reg_ppsh_mosi             =>  reg_ppsh_mosi,
+      reg_ppsh_miso             =>  reg_ppsh_miso,
+      eth1g_mm_rst              =>  eth1g_mm_rst,
+      eth1g_reg_interrupt       =>  eth1g_reg_interrupt,
+      eth1g_ram_mosi            =>  eth1g_ram_mosi,
+      eth1g_ram_miso            =>  eth1g_ram_miso,
+      eth1g_reg_mosi            =>  eth1g_reg_mosi,
+      eth1g_reg_miso            =>  eth1g_reg_miso,
+      eth1g_tse_mosi            =>  eth1g_tse_mosi,
+      eth1g_tse_miso            =>  eth1g_tse_miso,
+      reg_epcs_mosi             =>  reg_epcs_mosi,
+      reg_epcs_miso             =>  reg_epcs_miso,
+      reg_remu_mosi             =>  reg_remu_mosi,
+      reg_remu_miso             =>  reg_remu_miso,
+      reg_diag_data_buffer_mosi =>  reg_diag_data_buffer_mosi,
+      reg_diag_data_buffer_miso =>  reg_diag_data_buffer_miso,
+      ram_diag_data_buffer_mosi =>  ram_diag_data_buffer_mosi,
+      ram_diag_data_buffer_miso =>  ram_diag_data_buffer_miso,
+      reg_bsn_monitor_mosi      =>  reg_bsn_monitor_mosi,
+      reg_bsn_monitor_miso      =>  reg_bsn_monitor_miso,
+      reg_diagnostics_mosi      =>  reg_diagnostics_mosi,
+      reg_diagnostics_miso      =>  reg_diagnostics_miso,
+      reg_tr_nonbonded_mosi     =>  reg_tr_nonbonded_mosi,
+      reg_tr_nonbonded_miso     =>  reg_tr_nonbonded_miso,
+      reg_compaan_mosi          =>  reg_compaan_mosi,
+      reg_compaan_miso          =>  reg_compaan_miso
     );
 
 END str;
\ No newline at end of file
-- 
GitLab