]> jspc29.x-matter.uni-frankfurt.de Git - trbnet.git/commitdiff
added dirty work-around for status registers, Jan
authorhadeshyp <hadeshyp>
Fri, 13 Mar 2009 15:33:34 +0000 (15:33 +0000)
committerhadeshyp <hadeshyp>
Fri, 13 Mar 2009 15:33:34 +0000 (15:33 +0000)
optical_link/flexi_PCS_synch.vhd
optical_link/hub.vhd

index cc293785d8d459f2e4d434f20faf2eb8675ab6e2..cf80c15a9b9e421d88b32a3159406db4f572a8b2 100644 (file)
@@ -29,7 +29,6 @@ entity flexi_PCS_synch is
     MED_PACKET_NUM_OUT     : out std_logic_vector(HOW_MANY_CHANNELS*c_NUM_WIDTH-1 downto 0);
     MED_READ_IN            : in  std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
     MED_READ_OUT           : out std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
-    MED_ERROR_OUT          : out std_logic_vector(HOW_MANY_CHANNELS*3-1 downto 0);
     MED_STAT_OP           : out  std_logic_vector (HOW_MANY_CHANNELS*16-1 downto 0);
     MED_CTRL_OP           : in std_logic_vector (HOW_MANY_CHANNELS*16-1 downto 0)
     );
@@ -57,10 +56,13 @@ architecture flexi_PCS_synch of flexi_PCS_synch is
       MED_READ_IN        : in std_logic
       );
   end component;
+  signal med_error : std_logic_vector(HOW_MANY_CHANNELS*3-1 downto 0);
 begin
   CHANNEL_GENERATE : for bit_index in 0 to HOW_MANY_CHANNELS-1 generate
   begin
     MED_READ_OUT <= (others => '1');
+    MED_STAT_OP(bit_index*16+15 downto bit_index*16) <= "0000000000000" & med_error((bit_index*3+2) downto bit_index*3);
+
 
     SYNCH :flexi_PCS_channel_synch
       port map (
@@ -80,7 +82,7 @@ begin
           DATA_VALID_OUT   => MED_DATAREADY_OUT(bit_index),
           FLEXI_PCS_STATUS => FLEXI_PCS_SYNCH_STATUS((bit_index*16+15) downto bit_index*16),
           MED_PACKET_NUM_OUT => MED_PACKET_NUM_OUT(((bit_index+1)*c_NUM_WIDTH-1) downto bit_index*c_NUM_WIDTH),
-          MED_ERROR_OUT    => MED_ERROR_OUT((bit_index*3+2) downto bit_index*3),
+          MED_ERROR_OUT    => med_error((bit_index*3+2) downto bit_index*3),
           MED_READ_IN      => MED_READ_IN(bit_index)
           );
   end generate;
index 7287a5f2d2480b16a357d81efa360b9db41e69a7..f4d6eb1c1df556e4a5ab201a23577fd12d86ce5a 100644 (file)
@@ -229,7 +229,6 @@ architecture hub of hub is
     MED_PACKET_NUM_OUT     : out std_logic_vector(HOW_MANY_CHANNELS*c_NUM_WIDTH-1 downto 0);
     MED_READ_IN            : in  std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
     MED_READ_OUT           : out std_logic_vector(HOW_MANY_CHANNELS-1 downto 0);
-    MED_ERROR_OUT          : out std_logic_vector(HOW_MANY_CHANNELS*3-1 downto 0);
     MED_STAT_OP            : out  std_logic_vector (HOW_MANY_CHANNELS*16-1 downto 0);
     MED_CTRL_OP            : in std_logic_vector (HOW_MANY_CHANNELS*16-1 downto 0)
     );
@@ -244,29 +243,24 @@ architecture hub of hub is
   component trb_net16_hub_base is
     generic (
     --hub control
-      HUB_CTRL_CHANNELNUM     : integer range 0 to 3 := 3;--c_SLOW_CTRL_CHANNEL;
+      HUB_CTRL_CHANNELNUM     : integer range 0 to 3 := c_SLOW_CTRL_CHANNEL;
       HUB_CTRL_DEPTH          : integer range 0 to 6 := c_FIFO_BRAM;
-      HUB_USED_CHANNELS       : hub_channel_config_t := (c_YES,c_YES,c_YES,c_YES);
-      USE_CHECKSUM            : hub_channel_config_t := (c_YES,c_YES,c_YES,c_YES);
+      HUB_USED_CHANNELS       : hub_channel_config_t := (c_YES,c_YES,c_NO,c_YES);
+      USE_CHECKSUM            : hub_channel_config_t := (c_NO,c_YES,c_YES,c_YES);
+      USE_VENDOR_CORES        : integer range 0 to 1 := c_YES;
       IBUF_SECURE_MODE        : integer range 0 to 1 := c_NO;
       INIT_ADDRESS            : std_logic_vector(15 downto 0) := x"F004";
       INIT_UNIQUE_ID          : std_logic_vector(63 downto 0) := (others => '0');
-      COMPILE_TIME       : std_logic_vector(31 downto 0) := x"00000000";
-      COMPILE_VERSION    : std_logic_vector(15 downto 0) := x"0001";
-      HARDWARE_VERSION   : std_logic_vector(31 downto 0) := x"12345678";
+      COMPILE_TIME            : std_logic_vector(31 downto 0) := x"00000000";
+      COMPILE_VERSION         : std_logic_vector(15 downto 0) := x"0001";
+      HARDWARE_VERSION        : std_logic_vector(31 downto 0) := x"12345678";
     --media interfaces
-      MII_NUMBER              : integer range 2 to c_MAX_MII_PER_HUB := 4;
+      MII_NUMBER              : integer range 2 to c_MAX_MII_PER_HUB := 3;
       MII_IBUF_DEPTH          : hub_iobuf_config_t := std_HUB_IBUF_DEPTH;
-    -- settings for apis
-      API_NUMBER              : integer range 0 to c_MAX_API_PER_HUB := 0;
-      API_CHANNELS            : hub_api_config_t := (3,3,3,3,3,3,3,3);
-      API_TYPE                : hub_api_config_t := (0,0,0,0,0,0,0,0);
-      API_FIFO_TO_INT_DEPTH   : hub_api_config_t := (1,1,1,1,1,1,1,1);
-      API_FIFO_TO_APL_DEPTH   : hub_api_config_t := (1,1,1,1,1,1,1,1);
-    --trigger reading interfaces
-      TRG_NUMBER              : integer range 0 to c_MAX_TRG_PER_HUB := 0;
-      TRG_SECURE_MODE         : integer range 0 to 1 := c_NO;
-      TRG_CHANNELS            : hub_api_config_t := (0,1,0,0,0,0,0,0)
+    -- settings for external api connections
+      INT_NUMBER              : integer range 0 to c_MAX_API_PER_HUB := 0;
+      INT_CHANNELS            : hub_api_config_t := (3,3,3,3,3,3,3,3);
+      INT_IBUF_DEPTH          : hub_api_config_t := (6,6,6,6,6,6,6,6)
       );
     port (
       CLK    : in std_logic;
@@ -282,34 +276,25 @@ architecture hub of hub is
       MED_DATA_IN       : in  std_logic_vector (MII_NUMBER*c_DATA_WIDTH-1 downto 0);
       MED_PACKET_NUM_IN : in  std_logic_vector (MII_NUMBER*c_NUM_WIDTH-1 downto 0);
       MED_READ_OUT      : out std_logic_vector (MII_NUMBER-1 downto 0);
-      MED_ERROR_IN      : in  std_logic_vector (MII_NUMBER*3-1 downto 0);
       MED_STAT_OP       : in  std_logic_vector (MII_NUMBER*16-1 downto 0);
       MED_CTRL_OP       : out std_logic_vector (MII_NUMBER*16-1 downto 0);
-      --API: interfaces
-      APL_DATA_IN           : in  std_logic_vector (VAL(API_NUMBER*c_DATA_WIDTH) downto 0);
-      APL_PACKET_NUM_IN     : in  std_logic_vector (VAL(API_NUMBER*c_NUM_WIDTH) downto 0);
-      APL_DATAREADY_IN      : in  std_logic_vector (VAL(API_NUMBER) downto 0);
-      APL_READ_OUT          : out std_logic_vector (VAL(API_NUMBER) downto 0);
-      APL_SHORT_TRANSFER_IN : in  std_logic_vector (VAL(API_NUMBER) downto 0);
-      APL_DTYPE_IN          : in  std_logic_vector (VAL(API_NUMBER*4) downto 0);
-      APL_ERROR_PATTERN_IN  : in  std_logic_vector (VAL(API_NUMBER*32) downto 0);
-      APL_SEND_IN           : in  std_logic_vector (VAL(API_NUMBER) downto 0);
-      APL_TARGET_ADDRESS_IN : in  std_logic_vector (VAL(API_NUMBER*16) downto 0);
-      APL_DATA_OUT          : out std_logic_vector (VAL(API_NUMBER*c_DATA_WIDTH) downto 0);
-      APL_PACKET_NUM_OUT    : out std_logic_vector (VAL(API_NUMBER*c_NUM_WIDTH) downto 0);
-      APL_TYP_OUT           : out std_logic_vector (VAL(API_NUMBER*3) downto 0);
-      APL_DATAREADY_OUT     : out std_logic_vector (VAL(API_NUMBER) downto 0);
-      APL_READ_IN           : in  std_logic_vector (VAL(API_NUMBER) downto 0);
-      APL_RUN_OUT           : out std_logic_vector (VAL(API_NUMBER) downto 0);
-      APL_MY_ADDRESS_IN     : in  std_logic_vector (VAL(API_NUMBER*16) downto 0);
-      APL_SEQNR_OUT         : out std_logic_vector (VAL(API_NUMBER*8) downto 0);
-      --TRG interfaces
-      TRG_GOT_TRIGGER_OUT   : out std_logic_vector (VAL(TRG_NUMBER) downto 0);
-      TRG_ERROR_PATTERN_OUT : out std_logic_vector (VAL(TRG_NUMBER*32) downto 0);
-      TRG_DTYPE_OUT         : out std_logic_vector (VAL(TRG_NUMBER*4) downto 0);
-      TRG_SEQNR_OUT         : out std_logic_vector (VAL(TRG_NUMBER*8) downto 0);
-      TRG_ERROR_PATTERN_IN  : in  std_logic_vector (VAL(TRG_NUMBER*32) downto 0);
-      TRG_RELEASE_IN        : in  std_logic_vector (VAL(TRG_NUMBER) downto 0);
+      --INT: interfaces to connect APIs
+      INT_INIT_DATAREADY_OUT    : out std_logic_vector (INT_NUMBER downto 0);
+      INT_INIT_DATA_OUT         : out std_logic_vector (INT_NUMBER*c_DATA_WIDTH downto 0);
+      INT_INIT_PACKET_NUM_OUT   : out std_logic_vector (INT_NUMBER*c_NUM_WIDTH  downto 0);
+      INT_INIT_READ_IN          : in  std_logic_vector (INT_NUMBER downto 0) := (others => '0');
+      INT_INIT_DATAREADY_IN     : in  std_logic_vector (INT_NUMBER downto 0) := (others => '0');
+      INT_INIT_DATA_IN          : in  std_logic_vector (INT_NUMBER*c_DATA_WIDTH downto 0) := (others => '0');
+      INT_INIT_PACKET_NUM_IN    : in  std_logic_vector (INT_NUMBER*c_NUM_WIDTH  downto 0) := (others => '0');
+      INT_INIT_READ_OUT         : out std_logic_vector (INT_NUMBER downto 0);
+      INT_REPLY_DATAREADY_OUT   : out std_logic_vector (INT_NUMBER downto 0);
+      INT_REPLY_DATA_OUT        : out std_logic_vector (INT_NUMBER*c_DATA_WIDTH downto 0);
+      INT_REPLY_PACKET_NUM_OUT  : out std_logic_vector (INT_NUMBER*c_NUM_WIDTH  downto 0);
+      INT_REPLY_READ_IN         : in  std_logic_vector (INT_NUMBER downto 0) := (others => '0');
+      INT_REPLY_DATAREADY_IN    : in  std_logic_vector (INT_NUMBER downto 0) := (others => '0');
+      INT_REPLY_DATA_IN         : in  std_logic_vector (INT_NUMBER*c_DATA_WIDTH downto 0) := (others => '0');
+      INT_REPLY_PACKET_NUM_IN   : in  std_logic_vector (INT_NUMBER*c_NUM_WIDTH downto 0) := (others => '0');
+      INT_REPLY_READ_OUT        : out std_logic_vector (INT_NUMBER downto 0);
       ONEWIRE               : inout std_logic;
       --Fixed status and control ports
       HUB_STAT_CHANNEL      : out std_logic_vector (2**(c_MUX_WIDTH-1)*16-1 downto 0);
@@ -331,6 +316,7 @@ architecture hub of hub is
       CTRL_DEBUG            : in  std_logic_vector (31 downto 0)      --free control regs for debugging
       );
   end component;
+
   component simpleupcounter_16bit
     port (
       QOUT : out std_logic_vector(15 downto 0);
@@ -345,20 +331,6 @@ architecture hub of hub is
       CLK  : in  std_logic;
       CLR  : in  std_logic);
     end component;
-   component trb_net_onewire
-     generic (
-       USE_TEMPERATURE_READOUT : integer range 0 to 1;
-       CLK_PERIOD              : integer);
-     port (
-       CLK       : in    std_logic;
-       RESET     : in    std_logic;
-       ONEWIRE   : inout std_logic;
-       DATA_OUT  : out   std_logic_vector(15 downto 0);
-       ADDR_OUT  : out   std_logic_vector(2 downto 0);
-       WRITE_OUT : out   std_logic;
-       TEMP_OUT  : out   std_logic_vector(11 downto 0);
-       STAT      : out   std_logic_vector(31 downto 0));
-   end component;
   component edge_to_pulse
     port (
       clock      : in  std_logic;
@@ -741,10 +713,10 @@ begin
        MED_PACKET_NUM_OUT     => med_packet_num_out_i,
        MED_READ_IN            => med_read_in_i,
        MED_READ_OUT           => med_read_out_i,
-       MED_ERROR_OUT          => med_error_out_i,
        MED_STAT_OP            => med_stat_op_i,
        MED_CTRL_OP            => med_ctrl_op_i
        );
+
  ADO_TTL(34 downto 19) <= flexi_pcs_synch_status_i(2 downto 0) & med_packet_num_out_i(1 downto 0) & rx_k_i(1 downto 0) & rxd_i(3 downto 0) & med_dataready_out_i(0) & med_data_out_i(3 downto 0);
 -- ADO_TTL(34 downto 19) <= med_dataready_out_i(0)& med_data_out_i(14 downto 0);
  ADO_TTL(15 downto 0) <= med_read_out_i(0) & flexi_pcs_synch_status_i(7 downto 6) & med_packet_num_in_i(1 downto 0) & tx_k_i(1 downto 0) & txd_synch_i(3 downto 0) & med_dataready_in_i(0) & med_data_in_i(3 downto 0);
@@ -754,6 +726,9 @@ begin
 
 
     HUB_API: trb_net16_hub_base
+          generic map(
+              MII_NUMBER => HOW_MANY_CHANNELS
+              )
           port map (
               CLK                   => LVDS_CLK_200P,
               RESET                 => global_reset_i,
@@ -766,32 +741,24 @@ begin
               MED_DATA_IN           => med_data_out_i,
               MED_PACKET_NUM_IN     => med_packet_num_out_i,
               MED_READ_OUT          => med_read_in_i,
-              MED_ERROR_IN          => med_error_out_i,
               MED_STAT_OP           => med_stat_op_i,
               MED_CTRL_OP           => med_ctrl_op_i,
-              APL_DATA_IN           => (others => '0'),
-              APL_PACKET_NUM_IN     => (others => '0'),
-              APL_DATAREADY_IN      => (others => '0'),
-              APL_READ_OUT          => open,
-              APL_SHORT_TRANSFER_IN => (others => '0'),
-              APL_DTYPE_IN          => (others => '0'),
-              APL_ERROR_PATTERN_IN  => (others => '0'),
-              APL_SEND_IN           => (others => '0'),
-              APL_TARGET_ADDRESS_IN => (others => '0'),
-              APL_DATA_OUT          => open,
-              APL_PACKET_NUM_OUT    => open,
-              APL_TYP_OUT           => open,
-              APL_DATAREADY_OUT     => open,
-              APL_READ_IN           => (others => '0'),
-              APL_RUN_OUT           => open,
-              APL_MY_ADDRESS_IN     => (others => '0'),
-              APL_SEQNR_OUT         => open,
-              TRG_GOT_TRIGGER_OUT   => open,
-              TRG_ERROR_PATTERN_OUT => open,
-              TRG_DTYPE_OUT         => open,
-              TRG_SEQNR_OUT         => open,
-              TRG_ERROR_PATTERN_IN  => (others => '0'),
-              TRG_RELEASE_IN        => (others => '0'),
+              INT_INIT_DATAREADY_OUT    => open,
+              INT_INIT_DATA_OUT         => open,
+              INT_INIT_PACKET_NUM_OUT   => open,
+              INT_INIT_READ_IN          => (others => '1'),
+              INT_INIT_DATAREADY_IN     => (others => '0'),
+              INT_INIT_DATA_IN          => (others => '0'),
+              INT_INIT_PACKET_NUM_IN    => (others => '0'),
+              INT_INIT_READ_OUT         => open,
+              INT_REPLY_DATAREADY_OUT   => open,
+              INT_REPLY_DATA_OUT        => open,
+              INT_REPLY_PACKET_NUM_OUT  => open,
+              INT_REPLY_READ_IN         => (others => '1'),
+              INT_REPLY_DATAREADY_IN    => (others => '0'),
+              INT_REPLY_DATA_IN         => (others => '0'),
+              INT_REPLY_PACKET_NUM_IN   => (others => '0'),
+              INT_REPLY_READ_OUT        => open,
               ONEWIRE               => FS_PE_11,
               HUB_STAT_CHANNEL      => hub_stat_channel_i,
               HUB_STAT_GEN          => hub_stat_gen_i,
@@ -805,6 +772,7 @@ begin
               CTRL_DEBUG            => HUB_CTRL_DEBUG
               );
 
+
     TRB_HUB_INT : trb_hub_interface
       port map (
         CLK                    => LVDS_CLK_200P,