From: hadeshyp Date: Tue, 1 Jan 2008 19:51:09 +0000 (+0000) Subject: hub can switch off channels, Jan X-Git-Tag: oldGBE~650 X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=fa8635bfbab5d71751e70dbd8a6540906e27ec71;p=trbnet.git hub can switch off channels, Jan --- diff --git a/trb_net16_hub_base.vhd b/trb_net16_hub_base.vhd index b1ade71..060520c 100644 --- a/trb_net16_hub_base.vhd +++ b/trb_net16_hub_base.vhd @@ -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;