Altera_Forum
Honored Contributor
16 years agoSGDMA dropping two bytes just before (not at) end of transfer
I'm having problems with an SGDMA controller connected up to a TSE ethernet MAC. It's a 32-bit memory to stream SGDMA set to accept misaligned transfers.
I'm trying to transmit a packet produced by the LWIP stack, which basically gives me a 42 byte header data array, and another array for the packet data. I set up a chain of two descriptors, one that sends the 42 bytes of header, chained to another that sends the data. When I run the transfer, I expect the output to be: {h[0], h[1], ..., h[40], h[41], d[0], d[1],..., d[n]} (h[] is the header, d[] is the udp packet data) But looking at the output on Ethernet and on the SGDMA's Avalon-ST output, I'm actually getting: {h[0], h[1], ..., h[34], h[35], h[38], h[39], h[40], h[41], d[0], d[1], ..., d[n]} I can't find any documentation on the behavior of the SGDMA when doing a transfer like this, or any description of what you're allowed/not allowed to do, or any example waveforms. Is it allowed to have transfers that are not multiples of 4 bytes length when the data width is 32 bit? Is there any documentation that has the info I need? Regards, David