]> jspc29.x-matter.uni-frankfurt.de Git - cri.git/commitdiff
number of data hubs is now automaticly scaling to the MII_NUMBER. max. 12 downlinks...
authorAdrian Weber <adrian.a.weber@exp2.physik.uni-giessen.de>
Tue, 21 Jul 2020 14:02:00 +0000 (16:02 +0200)
committerAdrian Weber <adrian.a.weber@exp2.physik.uni-giessen.de>
Tue, 21 Jul 2020 14:02:00 +0000 (16:02 +0200)
src/hub/cri_hub_func.vhd [new file with mode: 0644]
src/hub/trb_net16_cri_hub.vhd

diff --git a/src/hub/cri_hub_func.vhd b/src/hub/cri_hub_func.vhd
new file mode 100644 (file)
index 0000000..7cd7c2d
--- /dev/null
@@ -0,0 +1,113 @@
+library ieee;
+use ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+USE IEEE.std_logic_UNSIGNED.ALL;
+library work;
+use work.trb_net_std.all;
+use work.trb_net16_hub_func.all;
+
+package cri_hub_func is
+
+  function calc_uplink_number (DOWNLINK_NUM   : integer)
+    return hub_mii_config_t;
+
+  function calc_downlink_number (DOWNLINK_NUM   : integer)
+    return hub_mii_config_t;    
+    
+  function calc_uplink_only_number (DOWNLINK_NUM   : integer)
+    return hub_mii_config_t;
+    
+  function calc_number_data_hubs (MII_NUMBER   : integer)
+    return integer; 
+    
+  function calc_ports_last_data_hub (MII_NUMBER   : integer)
+    return integer;    
+    
+  function calc_number_config_hub_ports (MII_NUMBER   : integer)
+    return integer; 
+    
+end package cri_hub_func;
+
+package body cri_hub_func is
+
+
+  function calc_uplink_number (DOWNLINK_NUM   : integer) -- DOWNLINK_NUM is number of Downlinks ! Automaticly inserts one uplink at end
+    return hub_mii_config_t is       -- 0 1 2 3 4 5 6 7 8 9 a b c d e f 
+    variable tmp : hub_mii_config_t := (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+    begin
+    
+      for i in 0 to 16 loop
+        if (i = DOWNLINK_NUM) then 
+          tmp(i) := 1;
+        else 
+          tmp(i) := 0;
+        end if;
+      end loop;
+
+      return tmp;
+    end function;
+    
+  function calc_downlink_number (DOWNLINK_NUM   : integer)
+    return hub_mii_config_t is       -- 0 1 2 3 4 5 6 7 8 9 a b c d e f 
+    variable tmp : hub_mii_config_t := (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+    begin
+    
+      for i in 0 to 16 loop
+        if (i = DOWNLINK_NUM) or (i > (DOWNLINK_NUM+1)) then 
+          tmp(i) := 0;
+        else 
+          tmp(i) := 1;
+        end if;
+      end loop;
+
+      return tmp;
+    end function;    
+
+  function calc_uplink_only_number (DOWNLINK_NUM   : integer)
+    return hub_mii_config_t is
+    begin
+    
+      return calc_uplink_number(DOWNLINK_NUM);
+    end function;    
+
+  function calc_number_data_hubs (MII_NUMBER   : integer) -- ALl links. first N-1 are downlinks, last is uplink!
+    return integer is
+    variable tmp : integer := 0;
+    begin
+       if (MII_NUMBER < 2) then
+         tmp := 1;
+       else
+         tmp := ((MII_NUMBER-2) / 12) + 1;
+       end if;  
+      
+      return tmp;
+    end function;  
+    
+  function calc_ports_data_hub (MII_NUMBER   : integer;
+                                HUB   : integer) -- ALl links. first N-1 are downlinks, last is uplink!
+    return integer is
+    variable tmp : integer := 0;
+    begin
+      if HUB = (calc_number_data_hubs(MII_NUMBER)-1) then
+        if ((MII_NUMBER-1) mod 12) = 0 then
+          tmp := 12;
+        else
+          tmp := ((MII_NUMBER-1) mod 12);
+        end if;
+      else
+        tmp := 12;
+      end if;
+      return tmp;
+    end function;      
+    
+  function calc_number_config_hub_ports (MII_NUMBER   : integer) -- ALl links. first N-1 are downlinks, last is uplink!
+    return integer is
+    variable tmp : integer := 0;
+    begin
+      tmp := calc_number_data_hubs(MII_NUMBER) + 1;
+      
+      return tmp;
+    end function;    
+    
+
+end package body;
index 8edcbba9d6d171f9c5a23b8fcf65ddb5f993e837..73c94c021c65a0c3aa83ac69568c3569ea07877c 100644 (file)
@@ -6,6 +6,7 @@ library work;
 use work.trb_net_std.all;
 use work.trb_net_components.all;
 use work.trb_net16_hub_func.all;
+use work.cri_hub_func.all;
 
 --take care of USE_INPUT_SBUF for multiplexer!
 
@@ -44,8 +45,8 @@ entity trb_net16_cri_hub is
     INT_NUMBER              : integer range 0 to c_MAX_API_PER_HUB := 0;
     INT_CHANNELS            : hub_api_config_t := (others => 3);
     INT_IBUF_DEPTH          : hub_api_config_t := (others => 6);
-    RESET_IOBUF_AT_TIMEOUT  : integer range 0 to 1 := c_NO;
-    HUB_CONTROLLER_NUM      : integer range 2 to 5 := 2
+    RESET_IOBUF_AT_TIMEOUT  : integer range 0 to 1 := c_NO--;
+    --HUB_CONTROLLER_NUM      : integer range 2 to 5 := 5
     );
   port (
     CLK    : in std_logic;
@@ -65,13 +66,13 @@ entity trb_net16_cri_hub is
     MED_CTRL_OP       : out std_logic_vector (MII_NUMBER*16-1 downto 0);
     
     --Received Data from connected boards
-    DATA_ACTIVE         : out std_logic_vector(MII_NUMBER-1 downto 0);
-    DATA_OUT            : out std_logic_vector((MII_NUMBER*(2*c_DATA_WIDTH))-1 downto 0);
-    DATA_READY          : out std_logic_vector(MII_NUMBER-1 downto 0);
+    DATA_ACTIVE         : out std_logic_vector(MII_NUMBER-2 downto 0);
+    DATA_OUT            : out std_logic_vector((MII_NUMBER*(2*c_DATA_WIDTH))-2 downto 0);
+    DATA_READY          : out std_logic_vector(MII_NUMBER-2 downto 0);
     
-    DATA_ADDRESS_SENDER : out std_logic_vector((MII_NUMBER*c_DATA_WIDTH)-1 downto 0);
-    DATA_SEQNMBR        : out std_logic_vector((MII_NUMBER*8)-1 downto 0);
-    DATA_LENGTH         : out std_logic_vector((MII_NUMBER*c_DATA_WIDTH)-1 downto 0);
+    DATA_ADDRESS_SENDER : out std_logic_vector((MII_NUMBER*c_DATA_WIDTH)-2 downto 0);
+    DATA_SEQNMBR        : out std_logic_vector((MII_NUMBER*8)-2 downto 0);
+    DATA_LENGTH         : out std_logic_vector((MII_NUMBER*c_DATA_WIDTH)-2 downto 0);
     
     
     --ONEWIRE
@@ -141,32 +142,32 @@ end entity;
 
 architecture trb_net16_cri_hub_arch of trb_net16_cri_hub is
 
-  signal int_med_dataready_out  : std_logic_vector (HUB_CONTROLLER_NUM-2 downto 0);
-  signal int_med_data_out       : std_logic_vector ((HUB_CONTROLLER_NUM-1)*16-1 downto 0);
-  signal int_med_packet_num_out : std_logic_vector ((HUB_CONTROLLER_NUM-1)*3-1 downto 0);
-  signal int_med_read_in        : std_logic_vector (HUB_CONTROLLER_NUM-2 downto 0);
+  signal int_med_dataready_out  : std_logic_vector (calc_number_config_hub_ports(MII_NUMBER)-2 downto 0);
+  signal int_med_data_out       : std_logic_vector ((calc_number_config_hub_ports(MII_NUMBER)-1)*16-1 downto 0);
+  signal int_med_packet_num_out : std_logic_vector ((calc_number_config_hub_ports(MII_NUMBER)-1)*3-1 downto 0);
+  signal int_med_read_in        : std_logic_vector (calc_number_config_hub_ports(MII_NUMBER)-2 downto 0);
   
-  signal int_med_dataready_in   : std_logic_vector (HUB_CONTROLLER_NUM-2 downto 0);
-  signal int_med_data_in        : std_logic_vector ((HUB_CONTROLLER_NUM-1)*16-1 downto 0);
-  signal int_med_packet_num_in  : std_logic_vector ((HUB_CONTROLLER_NUM-1)*3-1 downto 0);
-  signal int_med_read_out       : std_logic_vector (HUB_CONTROLLER_NUM-2 downto 0);
+  signal int_med_dataready_in   : std_logic_vector (calc_number_config_hub_ports(MII_NUMBER)-2 downto 0);
+  signal int_med_data_in        : std_logic_vector ((calc_number_config_hub_ports(MII_NUMBER)-1)*16-1 downto 0);
+  signal int_med_packet_num_in  : std_logic_vector ((calc_number_config_hub_ports(MII_NUMBER)-1)*3-1 downto 0);
+  signal int_med_read_out       : std_logic_vector (calc_number_config_hub_ports(MII_NUMBER)-2 downto 0);
   
-  signal int_med_stat_op        : std_logic_vector ((HUB_CONTROLLER_NUM-1)*16-1 downto 0);
-  signal int_med_ctrl_op        : std_logic_vector ((HUB_CONTROLLER_NUM-1)*16-1 downto 0);
+  signal int_med_stat_op        : std_logic_vector ((calc_number_config_hub_ports(MII_NUMBER)-1)*16-1 downto 0);
+  signal int_med_ctrl_op        : std_logic_vector ((calc_number_config_hub_ports(MII_NUMBER)-1)*16-1 downto 0);
 
   signal bus_hub_dbg_0_rx, bus_hub_dbg_1_rx : CTRLBUS_RX;
   signal bus_hub_dbg_0_tx, bus_hub_dbg_1_tx : CTRLBUS_TX;
 
-  signal loc_stat_op_1             : std_logic_vector (15 downto 0); 
-  signal loc_ctrl_op_1             : std_logic_vector (15 downto 0); 
+  signal loc_stat_op             : std_logic_vector ((calc_number_config_hub_ports(MII_NUMBER)-1)*16-1 downto 0);
+  signal loc_ctrl_op             : std_logic_vector ((calc_number_config_hub_ports(MII_NUMBER)-1)*16-1 downto 0);
   
-  signal buf_DATA_ACTIVE          : std_logic_vector(MII_NUMBER-1 downto 0);
-  signal buf_DATA_OUT             : std_logic_vector((MII_NUMBER*(2*c_DATA_WIDTH))-1 downto 0);
-  signal buf_DATA_READY           : std_logic_vector(MII_NUMBER-1 downto 0);
+  signal buf_DATA_ACTIVE          : std_logic_vector(MII_NUMBER-2 downto 0);
+  signal buf_DATA_OUT             : std_logic_vector((MII_NUMBER*(2*c_DATA_WIDTH))-2 downto 0);
+  signal buf_DATA_READY           : std_logic_vector(MII_NUMBER-2 downto 0);
   
-  signal buf_DATA_ADDRESS_SENDER  : std_logic_vector((MII_NUMBER*c_DATA_WIDTH)-1 downto 0);
-  signal buf_DATA_SEQNMBR         : std_logic_vector((MII_NUMBER*8)-1 downto 0);
-  signal buf_DATA_LENGTH          : std_logic_vector((MII_NUMBER*c_DATA_WIDTH)-1 downto 0);
+  signal buf_DATA_ADDRESS_SENDER  : std_logic_vector((MII_NUMBER*c_DATA_WIDTH)-2 downto 0);
+  signal buf_DATA_SEQNMBR         : std_logic_vector((MII_NUMBER*8)-2 downto 0);
+  signal buf_DATA_LENGTH          : std_logic_vector((MII_NUMBER*c_DATA_WIDTH)-2 downto 0);
   
   -- Debug
   signal datardy_cnt_ret   : std_logic_vector (15 downto 0);
@@ -174,18 +175,21 @@ architecture trb_net16_cri_hub_arch of trb_net16_cri_hub is
   
 begin
 
+  gen_unused_signals : if 1 =1  generate
+    constant HUB_CONTROLLER_NUM : integer := calc_number_config_hub_ports(MII_NUMBER);
+    begin
   THE_HUB_CONTROLLER : entity work.trb_net16_cri_hub_base
     generic map( 
       HUB_USED_CHANNELS   => (0,0,0,1),
       INIT_ADDRESS        => INIT_ADDRESS,
       MII_NUMBER          => HUB_CONTROLLER_NUM,
-      MII_IS_UPLINK       => (0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),--(0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0), -- adjust to HUB_CONTROLLER_NUM (here it is for 5)
-      MII_IS_DOWNLINK     => (1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0),--(1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0),
-      MII_IS_UPLINK_ONLY  => (0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),--(0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0),
+      MII_IS_UPLINK       => calc_uplink_number(HUB_CONTROLLER_NUM-1),  --(0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0),--(0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),-- -- adjust to HUB_CONTROLLER_NUM (here it is for 5)
+      MII_IS_DOWNLINK     => calc_downlink_number(HUB_CONTROLLER_NUM-1),--(1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0),--
+      MII_IS_UPLINK_ONLY  => calc_uplink_only_number(HUB_CONTROLLER_NUM-1),--(0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0),--(0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),--
       --USE_ONEWIRE         => c_YES,
       HARDWARE_VERSION    => HARDWARE_VERSION,
       INCLUDED_FEATURES   => INCLUDED_FEATURES,
-      INIT_ENDPOINT_ID    => x"0001",
+      INIT_ENDPOINT_ID    => x"0000",
       CLOCK_FREQUENCY     => CLOCK_FREQUENCY,
       BROADCAST_SPECIAL_ADDR => BROADCAST_SPECIAL_ADDR,
       COMPILE_TIME        => COMPILE_TIME,
@@ -258,19 +262,24 @@ begin
       BUS_HUB_DBG_RX                  => bus_hub_dbg_0_rx,
       BUS_HUB_DBG_TX                  => bus_hub_dbg_0_tx
       );
-      
+  end generate;    
+
+gen_data_hubs : for i in 0 to calc_number_data_hubs(MII_NUMBER)-1 generate --MII_NUMBER = Down- and Uplinks
+    constant links     : integer := calc_ports_data_hub(MII_NUMBER,i)+1;
+    constant downlinks : integer := calc_ports_data_hub(MII_NUMBER,i);
+  begin
 THE_HUB_1 : entity work.trb_net16_cri_hub_base
     generic map( 
       HUB_USED_CHANNELS   => (0,1,0,1),
       INIT_ADDRESS        => INIT_ADDRESS,
-      MII_NUMBER          => MII_NUMBER,
+      MII_NUMBER          => links,
       MII_IS_UPLINK       => MII_IS_UPLINK,
       MII_IS_DOWNLINK     => MII_IS_DOWNLINK,
       MII_IS_UPLINK_ONLY  => MII_IS_UPLINK_ONLY,
       --USE_ONEWIRE         => c_YES,
       HARDWARE_VERSION    => HARDWARE_VERSION,
       INCLUDED_FEATURES   => INCLUDED_FEATURES,
-      INIT_ENDPOINT_ID    => x"0002",
+      INIT_ENDPOINT_ID    => std_logic_vector(to_unsigned(i+1,16)),
       CLOCK_FREQUENCY     => CLOCK_FREQUENCY,
       BROADCAST_SPECIAL_ADDR => BROADCAST_SPECIAL_ADDR,
       COMPILE_TIME        => COMPILE_TIME,
@@ -282,43 +291,43 @@ THE_HUB_1 : entity work.trb_net16_cri_hub_base
       CLK_EN => '1',
 
       --Media interfacces
-      MED_DATAREADY_OUT(MII_NUMBER-2 downto 0)                     => MED_DATAREADY_OUT(MII_NUMBER-2 downto 0),
-      MED_DATAREADY_OUT(MII_NUMBER-1)                              => int_med_dataready_in(0),
+      MED_DATAREADY_OUT(links-2 downto 0)                => MED_DATAREADY_OUT((downlinks-1)+i*12 downto i*12),
+      MED_DATAREADY_OUT(links-1)                         => int_med_dataready_in(i),
                                                                    
-      MED_DATA_OUT((MII_NUMBER-1)*16-1 downto 0)                   => MED_DATA_OUT((MII_NUMBER-1)*16-1 downto 0),
-      MED_DATA_OUT(MII_NUMBER*16-1 downto (MII_NUMBER-1)*16)       => int_med_data_in(15 downto 0),
+      MED_DATA_OUT((links-1)*16-1 downto 0)              => MED_DATA_OUT((downlinks*16)-1+i*12*16 downto i*12*16),
+      MED_DATA_OUT(links*16-1 downto (links-1)*16)       => int_med_data_in(i*16+15 downto i*16),
                                                                    
-      MED_PACKET_NUM_OUT((MII_NUMBER-1)*3-1 downto 0)              => MED_PACKET_NUM_OUT((MII_NUMBER-1)*3-1 downto 0),
-      MED_PACKET_NUM_OUT(MII_NUMBER*3-1 downto (MII_NUMBER-1)*3)   => int_med_packet_num_in(2 downto 0),
+      MED_PACKET_NUM_OUT((links-1)*3-1 downto 0)         => MED_PACKET_NUM_OUT((downlinks*3)-1+i*12*3 downto i*12*3),
+      MED_PACKET_NUM_OUT(links*3-1 downto (links-1)*3)   => int_med_packet_num_in(i*3+2 downto i*3),
                                                                    
-      MED_READ_IN((MII_NUMBER-1)*1-1 downto 0)                     => MED_READ_IN((MII_NUMBER-1)*1-1 downto 0),
-      MED_READ_IN(MII_NUMBER-1)                                    => int_med_read_out(0),
+      MED_READ_IN((links-1)*1-1 downto 0)                => MED_READ_IN((downlinks-1)+i*12 downto i*12),
+      MED_READ_IN(links-1)                               => int_med_read_out(i),
                                                                    
-      MED_DATAREADY_IN((MII_NUMBER-1)*1-1 downto 0)                => MED_DATAREADY_IN((MII_NUMBER-1)*1-1 downto 0),
-      MED_DATAREADY_IN(MII_NUMBER-1)                               => int_med_dataready_out(0),
+      MED_DATAREADY_IN((links-1)*1-1 downto 0)           => MED_DATAREADY_IN((downlinks-1)+i*12 downto i*12),
+      MED_DATAREADY_IN(links-1)                          => int_med_dataready_out(i),
                                                                    
-      MED_DATA_IN((MII_NUMBER-1)*16-1 downto 0)                    => MED_DATA_IN((MII_NUMBER-1)*16-1 downto 0),
-      MED_DATA_IN((MII_NUMBER)*16-1 downto (MII_NUMBER-1)*16)      => int_med_data_out(15 downto 0),
+      MED_DATA_IN((links-1)*16-1 downto 0)               => MED_DATA_IN((downlinks*16)-1+i*12*16 downto i*12*16),
+      MED_DATA_IN((links)*16-1 downto (links-1)*16)      => int_med_data_out(i*16+15 downto i*16),
       
-      MED_PACKET_NUM_IN((MII_NUMBER-1)*3-1 downto 0)               => MED_PACKET_NUM_IN((MII_NUMBER-1)*3-1 downto 0),
-      MED_PACKET_NUM_IN((MII_NUMBER)*3-1  downto (MII_NUMBER-1)*3) => int_med_packet_num_out(2 downto 0),
+      MED_PACKET_NUM_IN((links-1)*3-1 downto 0)          => MED_PACKET_NUM_IN((downlinks*3)-1+i*12*3 downto i*12*3),
+      MED_PACKET_NUM_IN((links)*3-1  downto (links-1)*3) => int_med_packet_num_out(i*3+2 downto i*3),
       
-      MED_READ_OUT((MII_NUMBER-1)*1-1 downto 0)                    => MED_READ_OUT((MII_NUMBER-1)*1-1 downto 0),
-      MED_READ_OUT(MII_NUMBER-1)                                   => int_med_read_in(0),
+      MED_READ_OUT((links-1)*1-1 downto 0)               => MED_READ_OUT((downlinks-1)+i*12 downto i*12),
+      MED_READ_OUT(links-1)                              => int_med_read_in(i),
       
-      MED_STAT_OP((MII_NUMBER-1)*16-1 downto 0)                    => MED_STAT_OP((MII_NUMBER-1)*16-1 downto 0),
-      MED_STAT_OP((MII_NUMBER)*16-1 downto (MII_NUMBER-1)*16)      => loc_stat_op_1, --input
+      MED_STAT_OP((links-1)*16-1 downto 0)               => MED_STAT_OP((downlinks*16)-1+i*12*16 downto i*12*16),
+      MED_STAT_OP((links)*16-1 downto (links-1)*16)      => loc_stat_op(i*16+15 downto i*16), --input
       
-      MED_CTRL_OP((MII_NUMBER-1)*16-1 downto 0)                    => MED_CTRL_OP((MII_NUMBER-1)*16-1 downto 0),
-      MED_CTRL_OP((MII_NUMBER)*16-1 downto (MII_NUMBER-1)*16)      => loc_ctrl_op_1, --output
+      MED_CTRL_OP((links-1)*16-1 downto 0)               => MED_CTRL_OP((downlinks*16)-1+i*12*16 downto i*12*16),
+      MED_CTRL_OP((links)*16-1 downto (links-1)*16)      => loc_ctrl_op(i*16+15 downto i*16), --output
 
-      DATA_ACTIVE                     => buf_DATA_ACTIVE,
-      DATA_OUT                        => buf_DATA_OUT,
-      DATA_READY                      => buf_DATA_READY,
+      DATA_ACTIVE((downlinks-1) downto 0)                => buf_DATA_ACTIVE((downlinks-1)+i*12 downto i*12),
+      DATA_OUT((downlinks*(2*c_DATA_WIDTH)-1) downto 0)  => buf_DATA_OUT((downlinks*(2*c_DATA_WIDTH)-1)+i*12*(2*c_DATA_WIDTH) downto i*12*(2*c_DATA_WIDTH)),
+      DATA_READY((downlinks-1)  downto 0)                => buf_DATA_READY((downlinks-1)+i*12 downto i*12),
       
-      DATA_ADDRESS_SENDER             => buf_DATA_ADDRESS_SENDER,
-      DATA_SEQNMBR                    => buf_DATA_SEQNMBR,
-      DATA_LENGTH                     => buf_DATA_LENGTH,
+      DATA_ADDRESS_SENDER((downlinks*c_DATA_WIDTH-1) downto 0)  => buf_DATA_ADDRESS_SENDER((downlinks*c_DATA_WIDTH-1)+i*12*c_DATA_WIDTH downto i*12*c_DATA_WIDTH),
+      DATA_SEQNMBR((downlinks*8-1) downto 0)                    => buf_DATA_SEQNMBR((downlinks*8-1)+i*12*8 downto i*12*8),
+      DATA_LENGTH((downlinks*c_DATA_WIDTH-1) downto 0)          => buf_DATA_LENGTH((downlinks*c_DATA_WIDTH-1)+i*12*c_DATA_WIDTH downto i*12*c_DATA_WIDTH),
       
       ONEWIRE_DATA                    => ONEWIRE_DATA, 
       ONEWIRE_ADDR                    => ONEWIRE_ADDR, 
@@ -353,6 +362,11 @@ THE_HUB_1 : entity work.trb_net16_cri_hub_base
       BUS_HUB_DBG_TX                  => bus_hub_dbg_1_tx
       );      
 
+--  int_med_dataready_in(3 downto 1)   <= (others => '0');
+--  int_med_data_in(63 downto 16)      <= (others => '0');
+--  int_med_packet_num_in(11 downto 3) <= (others => '0');
+--  int_med_read_in(3 downto 1)        <= (others => '0');
+ end generate;
 
 THE_Event_Cntr : process begin
   wait until rising_edge(CLK);
@@ -392,9 +406,14 @@ THE_CRI_DATA_RECEIVER_DEBUG_HANDLER : process begin
     --end if;
   end if;
   end process;      
-      
-loc_stat_op_1       <= int_med_ctrl_op(15) & "000" & x"000";--7 
-int_med_stat_op     <= loc_ctrl_op_1(15) & "000" & x"000";  --7
+
+  loc_stat_op(15 downto 0)     <= int_med_ctrl_op(15) & "000" & x"000";--7 
+  int_med_stat_op(15 downto 0) <= loc_ctrl_op(15) & "000" & x"000";  --7
+  
+-- gen_med_controls : for i in 1 to HUB_CONTROLLER_NUM-2 generate
+--   loc_stat_op((i+1)*16-1 downto i*16)     <= int_med_ctrl_op(i*16+15) & "000" & x"007";--7 
+--   int_med_stat_op((i+1)*16-1 downto i*16) <= loc_ctrl_op(i*16+15) & "000" & x"007";  --7
+-- end generate;
 
 DATA_ACTIVE         <= buf_DATA_ACTIVE;       
 DATA_OUT            <= buf_DATA_OUT;