There are 2 messages in this thread.
You are currently looking at messages 0 to 2.
I'm planning to use Microblaze in my project without using DMA devices. It seems than Microblaze don't have any instruction like "read and auto- increment register" so if I have to transfer data from a location to another I have to implicitaly increment pointer. Anyone knows if there is some solution that allows to transfer data with the lowest number of cycles?______________________________
Hi, Since MicroBlaze branches on register values you can first load a register with the length. MicroBlaze also have an address mode which is address = regA + regB. I would also move from the end to the beginning like this addi r5,r0,#Src_Addr addi r6,r0,#Dest_Addr addi r7,r0,#(4*(Nr_of_Words-1) .loop lw r8,r5,r7 sw r8,r6,r7 bneid r7,loop addi r7,r7,-4 This will create a loop with 1 load, 1 load, 1 branch and 1 decrement. The number of clock cycles depends on the latency to the memory but it will be 2 memory access + 3 clock cycles if the code is executed from the LMB memory. Göran Bilski C.Amendola wrote: > > I'm planning to use Microblaze in my project without using DMA > devices. It seems than Microblaze don't have any instruction like > "read and auto- increment register" so if I have to transfer data from > a location to another I have to implicitaly increment pointer. Anyone > knows if there is some solution that allows to transfer data with the > lowest number of cycles?______________________________