A hub is, like in any other network, a logical unit that merges the data coming in on different lines and sends it out on every other line.
Hub logic: Example of operation
Let's assume, we have a hub with 5 interfaces. (Whether they are media independent interfaces or application interfaces does not matter, they are all treated the same inside the hub logic).
A data transmission is coming in on the init channel of line 1. This data is copied to the init channel of all other lines.
Now, we have to wait for the answers on all four channels. Lines 2 and 3 react immediately with a TRM on the reply channel. These TRM are stored until all interfaces have sent their answers. Lines 4 and 5 send back some data. First the data of line 4 is passed to line 1, who initiated the transfer. After the TRM of line 4 is received, the data of line 5 is read and sent to line 1. Now all interfaces have sent their TRM, so the merged TRM of all interfaces is sent to line 1. The transfer is finished and the hub goes back to idle mode.
Configuration
Each hub can be configured by a large number of generics. The complete table can be found in
TrbNetConfiguration.
Control registers
Every hub has its own network address and one slow control interface. This is used to retrieve information about the current status, to switch off unused interfaces or to solve an error condition.
Address |
Direction |
Name |
Description |
80-83 |
STAT |
HUB_STAT_locked |
1 bit per port. '1' when waiting for TRM, '0' otherwise |
84 |
STAT |
HUB_STAT_active_points |
1 bit per port - '1' when link is active, '0' when link is not operational |
85 |
CFG |
HUB_UPLINKS |
Lists all uplinks |
86 |
CFG |
HUB_DOWNLINKS |
Lists all downlinks |
87 |
STAT |
IPU_STATUS |
IPU status register |
88-8B |
STAT |
HUB_STAT_TIMEOUT |
timeout of a connected endpoint, one register for each channel. Status is cleared after read |
8C-8F |
STAT |
HUB_STAT_ACK |
status for all init obufs: set if obuf is waiting for two acknowledges |
90-9F |
STAT |
HUB_ERROR_BITS |
0-7:LVL1 0-7, 8-15:LVL1 23-16, 16-23:IPU 0-7, 24-31:IPU 23-16 |
A0-A3 |
STAT |
HUB_STAT_ERROR |
status & error bits per channel |
A4 |
STAT |
HUB_SCTRL_ERROR |
combination of errorbits 1,3,6 in slow control channel per port |
Address |
Direction |
Name |
Description |
C0 |
CTRL |
HUB_CTRL_SWITCH_PORTS_CH0 |
Switch port logically off on channel 0 |
C1 |
CTRL |
HUB_CTRL_SWITCH_PORTS_CH1 |
see above |
C2 |
CTRL |
HUB_CTRL_SWITCH_PORTS_CH2 |
see above |
C3 |
CTRL |
HUB_CTRL_SWITCH_PORTS_CH3 |
see above |
C4 |
CTRL |
HUB_CTRL_SWITCH_INTERFACE |
completely switch off port (currently: Do NOT use) |
C5 |
CTRL |
HUB_TIMEOUT_TIME |
set timeout delay for each channel (4 bits per channel) * |
C6 |
CTRL |
LOCAL_NETWORK_RESET |
reset part of network connected to this link |
*)Timeout time is a 4 bit value which determines the time the downlink has to answer until a timeout occurs. Time = (2**(value+16))/Clock_freq = 0.66ms * 2**value. 0 switches timeout off.