TM
Block Preview

Introduction

This block extracts a single specific phase from a time-multiplexed (TM) bus and outputs it as a scalar signal. Unlike the TM Splitter which extracts all phases, this component selects only one phase based on the Phase Select property.

The operation is purely combinational with zero clock latency:

$$ \mathrm{OUT} = \mathrm{IN}[W \times (P+1) - 1 : W \times P] $$

where $W$ is the signal size per phase and $P$ is the selected phase index (0 to TM_FACTOR-1).

Pin Description

IN Input Variable bit TM

Input TM bus, always TM. Width: Signal Size × TM Factor TM Factor: Configurable (2 to 32)

Bit layout: Phase i = IN[(i+1)×W-1 : i×W]

Default: Must be connected
OUT Output Variable bit BIT VECTOR

Output scalar signal, std_logic_vector. Width: Signal Size (same as one TM phase)

Contains the data from the selected TM phase (Phase Select property). Pin label shows: “OUT[P]” where P is the selected phase number.

Output is combinational (zero latency).

Properties

Property window

Signal Size SignalSize

Set the size in bits of each TM phase

Width in bits of each TM phase (1 to 16384 bits). The output will have this same width. Total input width = Signal Size × TM Factor.

Default: 16

Range: 1 – 16384

TM Factor TMFactor

Select the TM Factor of the input

Number of TM phases in the input (2 to 32). This determines the valid range for Phase Select (0 to TM Factor - 1).

Default: 4

Options: 2 4 8 16 32

Phase Select PhaseSelect

Select which TM phase to extract (0 to TM_FACTOR-1)

Index of the TM phase to extract (0 to TM Factor - 1). Phase 0 corresponds to the LSBs of the TM bus. This is a compile-time constant and cannot be changed at runtime.

Default: 0

Range: 0 – 31

Functional description

The TM Phase Extractor selects a single phase from the input TM bus based on the Phase Select property and outputs it as a scalar signal.

Extraction operation

For a TM factor of $N$, signal size $W$, and selected phase $P$:

$$ \mathrm{OUT}[W-1:0] = \mathrm{IN}[(P+1)W - 1 : PW] $$

where:

  • $P$ → Phase Select (0 to $N-1$)
  • $W$ → Signal Size (bits per phase)
  • $N$ → TM Factor

Example with TM Factor = 4, Signal Size = 16

TM input (64 bits): $$ \mathrm{IN}[63:0] = \texttt{0xDEF0_9ABC_5678_1234} $$

Phase mapping:

  • Phase 0: IN[15:0] = 0x1234
  • Phase 1: IN[31:16] = 0x5678
  • Phase 2: IN[47:32] = 0x9ABC
  • Phase 3: IN[63:48] = 0xDEF0

Extracted outputs based on Phase Select:

  • Phase Select = 0 → OUT = 0x1234
  • Phase Select = 1 → OUT = 0x5678
  • Phase Select = 2 → OUT = 0x9ABC
  • Phase Select = 3 → OUT = 0xDEF0

Phase selection constraints

The Phase Select property must satisfy: $$ 0 \leq P < \text{TM Factor} $$

If this constraint is violated, compilation will fail with an error.

Visual representation

For TM Factor = 8, selecting Phase 3:

  TM Bus (8 phases):
┌────┬────┬────┬────┬────┬────┬────┬────┐
│ P7 │ P6 │ P5 │ P4 │ P3 │ P2 │ P1 │ P0 │
└────┴────┴────┴────┴─┬──┴────┴────┴────┘
                      │
                      └─────> OUT (Phase 3)
  

Timing

The component is purely combinational with zero latency:

Property Latency (clock cycles)
TM Phase Extractor 0

Output is available immediately in the same clock cycle as the input.

Typical use cases

  • Extracting a specific channel from multi-channel TM data
  • Monitoring individual TM phases for debugging
  • Routing one TM channel to scalar processing
  • Channel selection for analysis or output
  • Creating test points from TM buses

Comparison with other components

  • TM Splitter: Extracts all phases into separate outputs
  • TM Phase Extractor: Extracts one phase selected by property
  • TM Signal Replicator: Broadcasts one input to all phases (inverse concept)

Important notes

  • Phase Select is a compile-time constant (not runtime configurable)
  • Phase numbering starts from 0 (LSBs) and increases toward MSBs
  • No clock required - purely combinational wiring
  • Only one phase is extracted; others are discarded