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