Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
9 years ago

Avalon-ST Multiplexer specifies max channel width of 31 bits but only supports 12

Hello all. I am trying to interface custom written IP with the Avalon-ST Multiplexer. I am trying to use an input of a 20-bit channel on an 8-port mux. Should be 23 bits total (Altera allows 0-31).

However, Quartus keeps specifying it's out of range and rejects it. It has done this with other of my components that have the same channel size and limits it to 0-8 bits. Not sure why.

Functional Parameters

Number of Input Ports: 8

Use Packet Scheduling: True

Use high bits to indicate source port: False

Input Interface

Data bits Per symbol: 8

Data Symbols per beat: 4

Include Packet Support: True

Channel Signal Width (bits): 31

Error Signal Width: 0

Testing with 28-bit input channel width and 8 ports:

Error: avalon_st_adapter: "Source Channel Port Width" (inChannelWidth) 28 is out of range: 0-8

Error: avalon_st_adapter: "Sink Max Channel" (outMaxChannel) 268435455 is out of range: 0-255

Error: avalon_st_adapter: "Sink Channel Port Width" (outChannelWidth) 28 is out of range: 0-8

Testing with 11-bit input channel width and 8 ports:

Error: avalon_st_adapter: "Source Channel Port Width" (inChannelWidth) 11 is out of range: 0-8

Error: avalon_st_adapter: "Sink Max Channel" (outMaxChannel) 2047 is out of range: 0-255

Error: avalon_st_adapter: "Sink Channel Port Width" (outChannelWidth) 11 is out of range: 0-8

Testing with 8-bit input channel width and 8 ports suceeds.

This yields a max output channel width of only 8-bits (input) + 4-bits (using 16 ports) = 12 bits, when the Embedded IP User's guide clear says it supports a width of 31 bits.

Thank you all

2 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I have no problem generating an Avalon ST Mux with 31 bit output channel width. Im using Q15. What version are you using?

    Is there a missmatch in the connection width somewhere?
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Solved!

    After further investigation, I think I finally understand (it only took about four days of debugging...)

    Bottom line is that if the channel signal is used, the maxChannel parameter must be set. Using the Component Editor, the parameter is stored in a signed 32-bit integer, so the maximum supported maxChannel is 2^31-1, which corresponds to a maximum channel width of 31 bits.

    I was having trouble because the Avalon-ST Multiplexer sink was setting it's maxChannel value, and my connecting Avalon-ST source did not match maxChannel. If the Avalon-ST Multiplexer sink channel width is set to 20 bits, maxChannel is set to 2^20-1. If the source and sink maxChannel values do not exactly match, Qsys inserts a channel adapter. The problem is that the inserted Avalon-ST adapter has a maximum channel width of 8, which will throw an error of the attached source with a channel size greater than 8 bits. If any component uses greater than an 8-bit channel width, maxChannel must be set to match exactly to prevent a channel adpater from being inserted.

    What I don't understand, however is that the maxChannel parameter in Component Editor seems to be a signed 32-bit integer. This means that the maximum max channel is 2^31-1, or 31 bits wide. For custom components, this limits channel usage to 31 bits, where the Avalon ST Interface Specifications allow for a channel size of up to 128 bits.

    I haven't yet explored manually editing the TCL file maxChannel to take advantage of the full 1-128 bits specified in the Avalon Interface user guide, as I only need a 20-bit channel. So, for now, my question is answered.