... | @@ -16,10 +16,10 @@ words |
... | @@ -16,10 +16,10 @@ words |
|
## Streamers principles of data transfer
|
|
## Streamers principles of data transfer
|
|
|
|
|
|
- **Tx Streamer** transfer **data words** that are of width (n \* 16)
|
|
- **Tx Streamer** transfer **data words** that are of width (n \* 16)
|
|
bits. The width is defined by generic *g\_data\_width* that must be
|
|
bits. The width is defined by generic `g_data_width` that must be
|
|
identical for the Tx and Rx Steamer.
|
|
identical for the Tx and Rx Steamer.
|
|
- **Data words** can be grouped in **blocks** of any size with upper
|
|
- **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.
|
|
independent sequence number and CRC.
|
|
- A stream of **data words** arranged in one or more **blocks** is
|
|
- A stream of **data words** arranged in one or more **blocks** is
|
|
encapsulated into an Ethernet Frame. At transmission, the frame is
|
|
encapsulated into an Ethernet Frame. At transmission, the frame is
|
... | @@ -28,13 +28,13 @@ words |
... | @@ -28,13 +28,13 @@ words |
|
- a complete **block** was written to the buffer of the Tx
|
|
- a complete **block** was written to the buffer of the Tx
|
|
Streamer, and the number of **data words** waiting for
|
|
Streamer, and the number of **data words** waiting for
|
|
transmission exceeds the number defined by generic
|
|
transmission exceeds the number defined by generic
|
|
*g\_tx\_threshold*,
|
|
`g_tx_threshold`,
|
|
- there are **data words** in the buffer of the Tx Streamer, and
|
|
- there are **data words** in the buffer of the Tx Streamer, and
|
|
the time elapsed from the latest write to Tx Streamer exceeded
|
|
the time elapsed from the latest write to Tx Streamer exceeded
|
|
timeout defined by generic *g\_tx\_timeout*,
|
|
timeout defined by generic `g_tx_timeout`,
|
|
- the user asserts *tx\_flush\_i* to explicitly request
|
|
- the user asserts `tx_flush_i` to explicitly request transmission
|
|
transmission of the data that has been written to the buffer of
|
|
of the data that has been written to the buffer of the Tx
|
|
the Tx Streamer.
|
|
Streamer.
|
|
|
|
|
|
-----
|
|
-----
|
|
|
|
|
... | @@ -42,7 +42,7 @@ words |
... | @@ -42,7 +42,7 @@ words |
|
|
|
|
|
The number of **data words** grouped into **blocks** is specified by the
|
|
The number of **data words** grouped into **blocks** is specified by the
|
|
user who indicates the last **data word**. Inside the frame, each
|
|
user who indicates the last **data word**. Inside the frame, each
|
|
*block** ends with a CRC and an *escape code* (0xCAFE).
|
|
*block** ends with a CRC and an *escape code* (`0xCAFE`).
|
|
The Streamer Frame consists of a transmission timestamp and a collection
|
|
The Streamer Frame consists of a transmission timestamp and a collection
|
|
of **blocks**, it is sent in the payload of an Ethernet Frame, as
|
|
of **blocks**, it is sent in the payload of an Ethernet Frame, as
|
|
depicted in the figure below.
|
|
depicted in the figure below.
|
... | @@ -58,25 +58,49 @@ Each **block** starts with an ID number |
... | @@ -58,25 +58,49 @@ Each **block** starts with an ID number |
|
|
|
|
|
-----
|
|
-----
|
|
|
|
|
|
## Transmission module (currently available only in branch ML-addressReviewFeedback)
|
|
## WR streamers module
|
|
|
|
|
|
- It is meant to be a used as a building block in WR-based nodes.
|
|
- The `wr-streamers.vhd` module provides a [WR PTP Core](/Wrpc-core)
|
|
|
|
-compatible communication module.
|
|
|
|
It is meant to be a used as a building block in WR-based nodes (It
|
|
|
|
is enabled when the @ g\_fabric\_iface@ generic is set to
|
|
|
|
`STREAMERS` inside `xwrc-board-common.vhd` module).
|
|
Additionally to transmission and reception of data, it provides
|
|
Additionally to transmission and reception of data, it provides
|
|
advanced diagnostics and debugging capabilities that can be accessed
|
|
advanced diagnostics and debugging capabilities that can be accessed
|
|
via SNMP and WB registers (via PCI or VME).
|
|
via SNMP and WB registers (via PCI or VME).
|
|
- It includes the following sub-modules:
|
|
- It includes the following sub-modules:
|
|
- Tx Streamer (xtx\_streamer)
|
|
- Tx Streamer (`xtx_streamer.vhd`)
|
|
- RX Straamer (xrx\_streamer)
|
|
- RX Streamer (`xrx_streamer.vhd`)
|
|
- Statistics (xrtx\_streamers\_stats)
|
|
- Statistics (`xrtx_streamers_stats.vhd`)
|
|
- WB config and status register
|
|
- WB config and status register
|
|
(wr\_transmission\_wb)
|
|
(`wr_transmission_wb.vhd`)
|
|
|
|
|
|
![](/uploads/edd22866e5eef5320c48d20260d0fc25/xwr_transmissionx700.jpg)
|
|
![](/uploads/edd22866e5eef5320c48d20260d0fc25/xwr_transmissionx700.jpg)
|
|
|
|
|
|
|
|
### Interface of the `wr-streamers.vhd` module:
|
|
|
|
|
|
|
|
* `g_streamers_op_mode` - Indicates whether this module instantiates
|
|
|
|
both TX and RX streamers (set to `TX_AND_RX`) or only one
|
|
|
|
of them. An application that only receives or only transmits might want
|
|
|
|
to use `RX_ONLY` or `TX_ONLY` mode in order to save resources.
|
|
|
|
* `g_tx_streamer_params` - Transmission defaults for Tx streamer.
|
|
|
|
Corresponds to the Tx streamerngenerics stored in one record.
|
|
|
|
* `g_rx_streamer_params` - Reception defaults for Rx streamer.
|
|
|
|
Corresponds to the Rx streamer generics stored in one record.
|
|
|
|
* `g_stats_cnt_width` - Width of statistics counters: frame
|
|
|
|
rx/tx/lost, block lost, counter of accumuted latency (minimum 15 bits,
|
|
|
|
max 32).
|
|
|
|
* `g_stats_acc_width` - Width of latency accumulator (max value 64)
|
|
|
|
.
|
|
|
|
* `g_slave_mode` - Specifies wishbone interface mode.
|
|
|
|
* `g_slave_granularity` - Set wishbone address granularity.
|
|
|
|
|
|
## Interface of Tx and Rx Streamer modules
|
|
## Interface of Tx and Rx Streamer modules
|
|
|
|
|
|
### **Transceiver configuration:**
|
|
### **Transceiver configuration:**
|
|
|
|
|
|
|
|
VHDL generics to specify Tx and Rx pair configuration:
|
|
|
|
|
|
- **Common to Tx and Rx**
|
|
- **Common to Tx and Rx**
|
|
- `g_data_width` - Generic defines the width of input/output data
|
|
- `g_data_width` - Generic defines the width of input/output data
|
|
in multiples of 16 bits (n\*16). It must be identical for the Tx
|
|
in multiples of 16 bits (n\*16). It must be identical for the Tx
|
... | | ... | |