FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
5886 Discussions

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

Altera_Forum
Honored Contributor II
1,094 Views

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
0 Kudos
2 Replies
Altera_Forum
Honored Contributor II
109 Views

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
Honored Contributor II
109 Views

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.
Reply