Hi,I developed a component with a streaming soure interface whose data width is 32 bits(per symbol),but when I add this componet to a sopc system which also instantiatized a sgdma component,and the sgdma compoent was set as:transfer mode-streaming to memeory;data width-32.when I generated the sopc system,an error message displayed:"the streaming sourec has 32 bits per symbol but the sink has 8",but I think I had set the width of the sgdma's streaming sink interface as 32,so the width of the soure is compatible with that of the sink,why did this error come out?I change the width of sgdma to 64,the error message remained unchanged:"the streaming sourec has 32 bits per symbol but the sink has 8",and it seemed that the width didn't have any influence on the sgdma component,why?
The symbol size of the SGDMA is the same width as a byte. Avalon-MM is 'little endian' whereas ST is 'big endian' so when the transfer occurs between MM and ST the symbols are flipped. So the tools are just telling you that the SGDMA streaming port has a different unit of data (symbol) than the streaming port connected to it. So this symbol size is independent of the data width, by adjusting the width of the SGDMA you are just increasing/decreasing the number of symbols per beat. If you take a look at the Avalon spec this should become clear.To work around this you can make a simple ST widget that has 8-bit symbols on one side and wide symbols on the other and wire the data through between the two ports.
--- Quote Start --- Thanks for your reply,I set the symbol width of the component I developed as 8,and now it works ok! --- Quote End --- Hello, You mentioned that you developed a component and set symbol width to 8 and you have it working. I have exactly same error and I tried different ways by changing symbol bits of two-sides components, but all fail. Please, I need to explain for me what component you build to fix the problem and I would appreciate that so much ..