The TrbNetIBUF is buffering the data coming from the media. All word which are offered by the media must be read, otherwise something is completly wrong (=error condition)

Signal description

Media direction port

(similar as described in NewTriggerBusMedia)

Line Decription
MED_DATAREADY_IN Data word is offered by the Media (the IBUF MUST read)
MED_DATA_IN[0...15] Data word
MED_PACKET_NUM_IN[0..1] Packet number
MED_READ_OUT buffer reads a word from media
MED_ERROR_IN[0..2] Status bits

Internal direction port

Line Decription
INT_HEADER_IN Concentrator kindly asks to resend the last header
INT_DATAREADY_OUT Data word ready to be read out by the internal logic
INT_DATA_OUT[0...15] Data word
INT_PACKET_NUM_OUT[0..1] Packet number
INT_READ_IN reading
INT_ERROR_OUT[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


PIN Name Description
0 IS_LOCKED IBUF has given away a TRM. Please no more data!


PIN Name Description
0 RELEASE_LOCKED Remove locking


PIN Name Description
0-3 SEND_BUFFER_SIZE_OUT Buffer size of this IBUF
4-7 REC_BUFFER_SIZE_OUT Buffer size of the other IBUF (on the other side of the optical link)
8 GOT_EOB_OUT EOB/TRM is killed (and thus the complete buffer) in this clock cycle
9 GOT_ACK_OUT Got an ACK from the other side
10 GOT_OVERFLOW_ERROR fifo has been filled although full
11 GOT_LOCKED_ERROR fifo has been filled while in locked mode

Buffer size is 2^(n+1), max 64k words

Internal components

Entity Name Description
TrbNetFifo TRBNET_FIFO buffer which contains the incoming data

Functional description


The media direction port is connected to the data output of the media. This means if data is offered it must be read from the media. If the fifo is full and the media offers data, this is an error condition and should be noticed (GOT_OVERFLOW_ERROR).

The internal port is not critical: If data is offered, but not read, the fifo will simply not been emptied.

Header retransmit

If data is been read by the internal port, and this data word is a header, the header will be registered at the same time for later use. At any point, the internal port may ask for a header (INT_HEADER_IN). Even if the fifo is empty, the INT_DATA_OUT will contain the registered header. INT_DATAREADY_OUT should be ignored in this cas.


If the data word under read is a TRM, the IBUF goes into the locked state (IS_LOCKED). This state will be released with the RELEASE_LOCKED. RELEASE_LOCKED may be always enabled for a free running trigger system. If the IBUF is getting more data while in lock condition, this is an error condition and should be noticed (GOT_LOCKED_ERROR).


REC_BUFFER_SIZE_OUT will be updated with the media port. Default is 0 (=buffer size 2). GOT_ACK_OUT will also be updated with the media port to have a fast reaction.

-- IngoFroehlich - 21 Aug 2006
Topic revision: r6 - 2007-11-27, JanMichel
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki Send feedback | Imprint | Privacy Policy (in German)