FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
The Intel sign-in experience has changed to support enhanced security controls. If you sign in, click here for more information.
6162 Discussions

How do Matrix Transpose (corner turn) with SGDMA ?

Honored Contributor II

Hi all, 


I want use SGDMA to do matrix transpose. Matrix dimension is 512x16. It is possible? At first, by using Stream-to-Memory to store 16 stacked of data vertically from data stream (data length 512), then do Memory-to-Stream to stream out 512 data horizontally (data length 16). 


Similar information regarding writes would be appreciated. 


many thanks for help 



0 Kudos
3 Replies
Honored Contributor II

Is there anybody who can solve my problem? or is my problem easily solved?

Honored Contributor II

Your question lacks some vital information: 

I read that the incoming data are 512 V * 16 H. 

How many bits is each data-word? 

What is the incoming speed in MW/s? 

What is the required outgoing speed in MW/s 

What type of memory do you have?How many bits wide? How fast? 

What other components are accessing this memory? With what bandwidth requirements?
Honored Contributor II

Thanks Josyb for your response.. 


I am sorry, I am confused about word and data that you mean. 

I try to describe with my way of thinking. 


I need 32 bits per data coming from 14 bit ADC. 

A stream contains 512 data.  

There are 16 stream sequentially and store to memory using SGDMA stream to memory. 

And resulting 512 stream out transposely (SGDMA memory to stream). 

A stream-out contains 16 data. 

And also resulting 32 bits per data. 


I use 2 different clock system, 2MHz for stream input (incoming speed), 150MHz inside QSys (outgoing speed) controlled by Nios 

I use Cyclone III EP3C120 board. At this moment there is no other component for accessing memory. 


What approach do you suggest to solve this issue? 


Thank you..