From fa8635bfbab5d71751e70dbd8a6540906e27ec71 Mon Sep 17 00:00:00 2001 From: hadeshyp Date: Tue, 1 Jan 2008 19:51:09 +0000 Subject: [PATCH] hub can switch off channels, Jan --- trb_net16_hub_base.vhd | 69 +++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 34 deletions(-) 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; -- 2.43.0