Overview

Wrapper entity for various fifos. The design files for the different fpgas can also be found in the cvs, as xco-configuration files for the xilinx coregen or as precompiled ngc netlists. In all cases, the trb_net16_fifo-wrapper-entity is needed for a consistent naming of the ports.

Signal description

Generic: WIDTH and DEPTH.

Line Decription
DATA_IN [0...WIDTH-1]  
WRITE_ENABLE_IN data is written when active
DATA_OUT [0...WIDTH-1]  
READ_ENABLE_IN data is been read when active
FULL_OUT  
EMPTY_OUT  
DEPTH_OUT The depth of the fifo hardware instance

Fifo depth

The fifo depth is calculated by a simple formula real_depth = 2**depth. The smallest reasonable depth is 4 since the smallest shift register inside the fpga is 16 bits deep.

A special case is depth = 8, width = 18 and force_lut = 0 : This will generate a fifo located in a BlockRAM with a depth of 1023.

DEPTH_OUT might differ from DEPTH because of hardware reasons (I might get different things from what I want, the real fifo depth might be more than desired)

trb_net16_fifo entity

The 16 bit fifo entity is a wrapper for this fifo. Like every 16 bit entity it carries the packet number. This is combined with the data and put into a 18 Bit wide fifo. As this is a special fifo version, the width is not selectable as in the

Fifo depths with respect to the network

These values for depths can be used within the network. The usable values are limited to a few values due to restrictions for the buffer size.

The size of every buffer is given by a number from 0 to 7. 0 means that no fifo is used at all; depths 1 to 3 are implemented in Lookup tables and for a buffer size of 6 a BlockRAM is used if the width is 18 Bit (16 bit data plus 2 bit packet number). The exact sizes will be as follows:

Depth 64 bit packets / buffer data bytes w/o waitstates
0 no fifo / trm only 0
1 2 12
2 4 36
3 8 84
6 127 1524 / infty *
7 infty infty

"data bytes w/o waitstates" refers to the amount of data that can be transmitted before one has to wait for the first acknowledge of the receiving station. When using a block ram, the number of bytes that can be transmitted at full speed is not limited on the optical link, since the mean response time is in most cases smaller than 2.5 us.

Depth 7 can not be used as a generic value, but is used within the network protocol for endpoints that are always reading. The fifo size that is used by the sender also depends on the DATA_COUNT_WIDTH generic of the OBUF.
Topic revision: r4 - 2008-03-14, 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)