]> jspc29.x-matter.uni-frankfurt.de Git - trbnet.git/commitdiff
hub can switch off channels, Jan
authorhadeshyp <hadeshyp>
Tue, 1 Jan 2008 19:51:09 +0000 (19:51 +0000)
committerhadeshyp <hadeshyp>
Tue, 1 Jan 2008 19:51:09 +0000 (19:51 +0000)
trb_net16_hub_base.vhd

index b1ade719590a206352b84dc31b9b66c78f6a1150..060520cf2301414393a613682ec64ccf2164b9c1 100644 (file)
@@ -1026,40 +1026,41 @@ HUB_MED_CONNECTED(31 downto MII_NUMBER) <= (others => '1');
     constant first_point_num : integer := calc_first_point_number(MII_NUMBER, i, HUB_CTRL_CHANNELNUM, API_NUMBER, API_CHANNELS, TRG_NUMBER, TRG_CHANNELS);
     constant next_point_num  : integer := first_point_num + point_num;
   begin
-
-    HUB_CTRL_final_activepoints((i+1)*32-1 downto i*32) <= HUB_CTRL_activepoints((i+1)*32-1 downto i*32) and HUB_MED_CONNECTED;
-    HUBLOGIC : trb_net16_hub_logic
-      generic map (
-      --media interfaces
-        POINT_NUMBER        => point_num
-        )
-      port map(
-        CLK    => CLK,
-        RESET  => RESET,
-        CLK_EN => CLK_EN,
-        INIT_DATAREADY_IN     => HUB_INIT_DATAREADY_IN(next_point_num-1 downto first_point_num),
-        INIT_DATA_IN          => HUB_INIT_DATA_IN(next_point_num*c_DATA_WIDTH-1 downto first_point_num*c_DATA_WIDTH),
-        INIT_PACKET_NUM_IN    => HUB_INIT_PACKET_NUM_IN(next_point_num*c_NUM_WIDTH-1 downto first_point_num*c_NUM_WIDTH),
-        INIT_READ_OUT         => HUB_INIT_READ_OUT(next_point_num-1 downto first_point_num),
-        INIT_DATAREADY_OUT    => HUB_INIT_DATAREADY_OUT(next_point_num-1 downto first_point_num),
-        INIT_DATA_OUT         => HUB_INIT_DATA_OUT(next_point_num*c_DATA_WIDTH-1 downto first_point_num*c_DATA_WIDTH),
-        INIT_PACKET_NUM_OUT   => HUB_INIT_PACKET_NUM_OUT(next_point_num*c_NUM_WIDTH-1 downto first_point_num*c_NUM_WIDTH),
-        INIT_READ_IN          => HUB_INIT_READ_IN(next_point_num-1 downto first_point_num),
-        REPLY_HEADER_OUT      => HUB_REPLY_SEND_HEADER_OUT(next_point_num-1 downto first_point_num),
-        REPLY_DATAREADY_IN    => HUB_REPLY_DATAREADY_IN(next_point_num-1 downto first_point_num),
-        REPLY_DATA_IN         => HUB_REPLY_DATA_IN(next_point_num*c_DATA_WIDTH-1 downto first_point_num*c_DATA_WIDTH),
-        REPLY_PACKET_NUM_IN   => HUB_REPLY_PACKET_NUM_IN(next_point_num*c_NUM_WIDTH-1 downto first_point_num*c_NUM_WIDTH),
-        REPLY_READ_OUT        => HUB_REPLY_READ_OUT(next_point_num-1 downto first_point_num),
-        REPLY_DATAREADY_OUT   => HUB_REPLY_DATAREADY_OUT(next_point_num-1 downto first_point_num),
-        REPLY_DATA_OUT        => HUB_REPLY_DATA_OUT(next_point_num*c_DATA_WIDTH-1 downto first_point_num*c_DATA_WIDTH),
-        REPLY_PACKET_NUM_OUT  => HUB_REPLY_PACKET_NUM_OUT(next_point_num*c_NUM_WIDTH-1 downto first_point_num*c_NUM_WIDTH),
-        REPLY_READ_IN         => HUB_REPLY_READ_IN(next_point_num-1 downto first_point_num),
-        STAT                  => buf_HUB_STAT_CHANNEL((i+1)*16-1 downto i*16),
-        STAT_POINTS_locked    => open,
-        STAT_ERRORBITS        => open,
-        CTRL                  => HUB_CTRL_CHANNEL((i+1)*16-1 downto i*16),
-        CTRL_activepoints     => HUB_CTRL_final_activepoints((i+1)*32-1 downto i*32)
-        );
+    gen_logic : if HUB_USED_CHANNELS(i) = 1 generate
+      HUB_CTRL_final_activepoints((i+1)*32-1 downto i*32) <= HUB_CTRL_activepoints((i+1)*32-1 downto i*32) and HUB_MED_CONNECTED;
+      HUBLOGIC : trb_net16_hub_logic
+        generic map (
+        --media interfaces
+          POINT_NUMBER        => point_num
+          )
+        port map(
+          CLK    => CLK,
+          RESET  => RESET,
+          CLK_EN => CLK_EN,
+          INIT_DATAREADY_IN     => HUB_INIT_DATAREADY_IN(next_point_num-1 downto first_point_num),
+          INIT_DATA_IN          => HUB_INIT_DATA_IN(next_point_num*c_DATA_WIDTH-1 downto first_point_num*c_DATA_WIDTH),
+          INIT_PACKET_NUM_IN    => HUB_INIT_PACKET_NUM_IN(next_point_num*c_NUM_WIDTH-1 downto first_point_num*c_NUM_WIDTH),
+          INIT_READ_OUT         => HUB_INIT_READ_OUT(next_point_num-1 downto first_point_num),
+          INIT_DATAREADY_OUT    => HUB_INIT_DATAREADY_OUT(next_point_num-1 downto first_point_num),
+          INIT_DATA_OUT         => HUB_INIT_DATA_OUT(next_point_num*c_DATA_WIDTH-1 downto first_point_num*c_DATA_WIDTH),
+          INIT_PACKET_NUM_OUT   => HUB_INIT_PACKET_NUM_OUT(next_point_num*c_NUM_WIDTH-1 downto first_point_num*c_NUM_WIDTH),
+          INIT_READ_IN          => HUB_INIT_READ_IN(next_point_num-1 downto first_point_num),
+          REPLY_HEADER_OUT      => HUB_REPLY_SEND_HEADER_OUT(next_point_num-1 downto first_point_num),
+          REPLY_DATAREADY_IN    => HUB_REPLY_DATAREADY_IN(next_point_num-1 downto first_point_num),
+          REPLY_DATA_IN         => HUB_REPLY_DATA_IN(next_point_num*c_DATA_WIDTH-1 downto first_point_num*c_DATA_WIDTH),
+          REPLY_PACKET_NUM_IN   => HUB_REPLY_PACKET_NUM_IN(next_point_num*c_NUM_WIDTH-1 downto first_point_num*c_NUM_WIDTH),
+          REPLY_READ_OUT        => HUB_REPLY_READ_OUT(next_point_num-1 downto first_point_num),
+          REPLY_DATAREADY_OUT   => HUB_REPLY_DATAREADY_OUT(next_point_num-1 downto first_point_num),
+          REPLY_DATA_OUT        => HUB_REPLY_DATA_OUT(next_point_num*c_DATA_WIDTH-1 downto first_point_num*c_DATA_WIDTH),
+          REPLY_PACKET_NUM_OUT  => HUB_REPLY_PACKET_NUM_OUT(next_point_num*c_NUM_WIDTH-1 downto first_point_num*c_NUM_WIDTH),
+          REPLY_READ_IN         => HUB_REPLY_READ_IN(next_point_num-1 downto first_point_num),
+          STAT                  => buf_HUB_STAT_CHANNEL((i+1)*16-1 downto i*16),
+          STAT_POINTS_locked    => open,
+          STAT_ERRORBITS        => open,
+          CTRL                  => HUB_CTRL_CHANNEL((i+1)*16-1 downto i*16),
+          CTRL_activepoints     => HUB_CTRL_final_activepoints((i+1)*32-1 downto i*32)
+          );
+    end generate;
   end generate;