Quartus® Prime Pro Edition User Guide: Platform Designer

ID 683609
Date 4/17/2025
Public

Visible to Intel only — GUID: hto1743457187774

Ixiasoft

Document Table of Contents

6.12.6.5. Dataflow with Width Adaptation Examples

The following examples show dataflow with width adaptations considerations when using the AXI Streaming Crossbar IP.

Table 207.  Example 1: 32-bit Transmitter interacts with 128-bit Receiver via 256-bit Crossbar
Example Characteristics Description
Example 1
  • 32-bit transmitter communicating with a 128-bit receiver via 256-bit crossbar.
  • Transmitter supports TID, TDEST, TLAST, TKEEP, TUSER.
  • TUSER: 1 bit per byte.
  • Transmitter sends a 2 beat packet.
Beat #1

TDATA: 0xABAB_ABAB

TLAST: 0

TDEST: 0001

TID: 00

TKEEP: 1111

TUSER: 1010

Beat #2

TDATA:0xCDCD_CDCD

TLAST:1

TDEST: 0001

TID:00

TKEEP:1111

TUSER:1011

AXI-ST to Avalon-ST Converter Data Flow
Beat #1
  • avst_data = {axi_tdata, tuser},
  • avst_valid= axi_tvalid,
  • avst_channel = {tdest,tid}
  • avst_sop=1, avst_eop=0
Beat #2
  • avst_data = {axi_tdata,tuser}
  • avst_valid=axi_tvalid,
  • avst_channel = {tdest,tid}
  • avst_sop=0, avst_eop=1
Data width converter output (up_conversion)
  • avst_data = {{TDATA7,TUSER7}.{TDATA6,TUSER6}.{TDATA5,TUSER5}.{TDATA4,TUSER4},{TDATA3,TUSER3}.{TDATA2,TUSER2}.{TDATA1,TUSER1}.{TDATA0,TUSER0}}
  • avst_sop = 1'b1, avst_eop = 1'b1,
  • avst_empty= 5'h24
  • avst_channel = {tdest,tid}
Data out of crossbar Same as "Data width converter output."
Data width converter output (down_conversion)
  • avst_data= {{TDATA3,TUSER3}.{TDATA2,TUSER2}.{TDATA1,TUSER1}.{TDATA0,TUSER0}}
  • avst_sop=1'b1, avst_eop=1'b1
  • avst_empty=4'h8
  • avst_channel = {tdest,tid}
Avalon Streaming to AXI-Stream output
  • axi_tdata = data section of avst_data
  • axi_tvalid = avst_valid
  • tkeep = 16'b0000000011111111 (256)
  • tlast = 1'b1 (1)
  • tuser= user data section of avst_data output of data width converter
Table 208.  Example 2: 32-bit Transmitter interacts with 128-bit Receiver via 256-bit Crossbar
Example Characteristics Description
Example 2
  • 256-bit transmitter communicates with a 128-bit receiver via 256-bit crossbar.
  • Transmitter supports TID, TDEST, TLAST, TKEEP, TUSER.
  • TUSER: 1 bit per byte.
  • Transmitter sends a 2-beat packet (that is, a 512-bit packet).
Beat #1

TDATA: 256 bits

TLAST:0

TDEST:0001

TID: 01

TKEEP: all 1s

TUSER: 32-bit value

TKEEP: 32-bit value all 1s

Beat #2

TDATA: 256 bits

TLAST:1

TDEST:0001

TID: 01

TKEEP: all 1s

TUSER: 32-bit value

TKEEP: 32-bit value all 1s

AXI-ST to Avalon-ST Converter Output
Beat #1
  • avst_data = {axi_tdata, tuser}
  • avst_valid=axi_tvalid
  • avst_channel = tdest,tid
  • avst_sop=1, avst_eop=0
Beat #2
  • avst_data = {axi_tdata,tuser}
  • avst_valid=axi_tvalid
  • avst_channel = tdest,tid
  • avst_sop=0, avst_eop=1
Data width converter Not needed at ingress.
Data out of crossbar 256-bit
Data width converter output
  • 1st beat: avst_data = {axi_tdata0_0, tuser0_0}, avst_sop = 1'b1, avst_eop=0 avst_empty = 'h0; 
  • 2nd beat: avst_data = {axi_tdata0_1, tuser0_1}, avst_sop = 1'b0, avst_eop=0 avst_empty = 'h0;
  • 3rd beat: avst_data = {axi_tdata1_0, tuser1_0}, avst_sop = 1'b0, avst_eop=0 avst_empty = 'h0;
  • 4th beat: avst_data = {axi_tdata1_1, tuser1_1}, avst_sop = 1'b0, avst_eop=1 avst_empty = 'h0;
Avalon Streaming to AXI-Stream output
Beat #1
  • axi_tdata = avst_data
  • axi_tvalid = avst_valid
  • tkeep = 16'b1111_1111
  • tlast = 1'b0,
  • tuser passed on from section of avst_data
Beat #2
  • axi_tdata = avst_data
  • axi_tvalid = avst_valid
  • tkeep = 16'b1111_1111
  • tlast = 1'b0
  • tuser passed on from section of avst_data
Beat #3
  • axi_tdata = avst_data
  • axi_tvalid = avst_valid
  • tkeep = 16'b1111_1111
  • tlast = 1'b0
  • tuser passed on from section of avst_data
Beat #4
  • axi_tdata = avst_data
  • axi_tvalid = avst_valid
  • tkeep = 16'b1111_1111
  • tlast = 1'b1
  • tuser passed on from section of avst_data