Overview
The
TrbNetOBUF is controlling what data content is leaving the hub.
Signal description
(similar as described in
NewTriggerBusMedia)
Line |
Decription |
MED_DATAREADY_OUT |
|
MED_DATA_OUT[0...15] |
Data word |
MED_PACKET_NUM_OUT[0..1] |
Packet number |
MED_READ_IN |
|
MED_ERROR_OUT[0..2] |
Status bits |
Internal direction port
Line |
Decription |
INT_DATAREADY_IN |
|
INT_DATA_IN[0...15] |
Data word |
INT_PACKET_NUM_IN[0..1] |
Packet number |
INT_READ_OUT |
reading |
INT_ERROR_IN[0..2] |
Status bits |
Status and control port
Line |
Decription |
STAT_LOCKED[0...15] |
Status of the locking mechanism |
CTRL_LOCKED[0...15] |
Control of the locking mechanism |
STAT_BUFFER[0...31] |
Status of the handshake and buffer control |
CTRL_BUFFER[0...31] |
Status of the handshake and buffer control |
STAT_LOCKED
CTRL_LOCKED
STAT_BUFFER
PIN |
Name |
Description |
0-1 |
TRANSMITTED_BUFFERS |
Transmitted buffers without ACK |
16-31 |
CURRENT_DATA_COUNT |
Transmitted data words in current buffer |
CTRL_BUFFER
PIN |
Name |
Description |
0-3 |
SEND_BUFFER_SIZE_IN |
Buffer size of my IBUF |
4-7 |
REC_BUFFER_SIZE_IN |
Buffer size of the other IBUF (on the other side of the optical link) |
8 |
SEND_ACK_IN |
EOB/TRM is killed by my partner IBUF, and ACK should be sent |
9 |
GOT_ACK_IN |
Got an ACK from the other side |
Functional description
The
TrbNetOBUF is preparing the data for the output from 3 different sources: The data from the input, the EOB and the ACK words (Priority from low to high)
The next data word is prepared when the media is reading the current word.
ACK
The ACK is prepared if SEND_ACK_IN is high or a SEND_ACK_IN was registered.
EOB
The EOB is sent if the current_data_count is matching (REC_BUFFER_SIZE_IN+1)**2. The EOB is prepared and for the next cycle CURRENT_DATA_COUNT will
be resettet and TRANSMITTED_BUFFERS will be increased (if GOT_ACK_IN was not high in the same cycle)
Normal data word
CURRENT_DATA_COUNT will be increased.
--
IngoFroehlich - 21 Aug 2006