... | ... | @@ -18,23 +18,25 @@ inside. |
|
|
|
|
|
## Streamers principles of data transfer
|
|
|
|
|
|
- Streamers transfer **data words** that are of width of n \* 16 bits.
|
|
|
The width is defined by generic g\_data\_width that must be the same
|
|
|
for Tx and Rx Steamer.
|
|
|
- Streamers transfer **data words** that are of width (n \* 16) bits.
|
|
|
The width is defined by generic *g\_data\_width* that must be
|
|
|
identical for the Tx and Rx Steamer.
|
|
|
- **Data words** can be grouped in **blocks** of any size with upper
|
|
|
limit defined by g\_tx\_max\_words\_per\_frame, each **block** has
|
|
|
limit defined by *g\_tx\_max\_words\_per\_frame*, each **block** has
|
|
|
independent sequence number and CRC.
|
|
|
- A stream of **data words** arranged in one or more **blocks** is
|
|
|
encapsulated into a single Ethernet Frame
|
|
|
prepended with Streamer Header and encapsulated into a single
|
|
|
Ethernet Frame
|
|
|
- Ethernet Frame is sent when one of the following is true:
|
|
|
- a complete **block** was written to the Tx Streamer, and the
|
|
|
number of **data words** waiting in the Tx Buffer exceeds number
|
|
|
defined by generic g\_tx\_threshold
|
|
|
- a complete **block** was written to the Tx Buffer of the Tx
|
|
|
Streamer, and the number of **data words** waiting for
|
|
|
transmission exceeds the number defined by generic
|
|
|
*g\_tx\_threshold*
|
|
|
- there are **data words** in the Tx Buffer, and the time elapsed
|
|
|
from the latest write to Tx Streamer exceeded timeout defined by
|
|
|
generic g\_tx\_timeout
|
|
|
- the user explicitly requested sending frame with the data
|
|
|
currently in the Tx Buffer by asserting tx\_flush\_i
|
|
|
generic *g\_tx\_timeout*
|
|
|
- the user explicitly requested transmission the data currently in
|
|
|
the Tx Buffer by asserting *tx\_flush\_i*
|
|
|
|
|
|
-----
|
|
|
|
... | ... | |