FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6421 Discussions

EMIF writing to DDR through AVMM speed issue

rled64
Novice
240 Views

Hello,

 

I am using Arria 10 device based plateform (HAN Pilot - Terasic) and I want to write data to an FPGA side DDR4 with EMIF.I control this EMIF with avalon memory mapped interface (avmm) but I believe that I reached its maximum throughput and this is slowing me down for writing 256b of data at a rate of 250 MHz. When I issue a write command, I have to wait for the "amm_waitrequest" (also called ~amm_ready) signal from the EMIF to be released which takes a while. Here is a signaltap diagram showing the waitrequest and write signals, compared with the above data updating much faster. Since the waitrequest is too long, the amm_writedata[256] is updated at a much slower rate :

rled64_0-1720542110570.png

 

Since the waitrequest is the issue there, I suppose the whole AVMM interface is the issue. Is there any way to speed up the interface, or should I rather use another interface, like DMA ?

Thanks

Labels (1)
0 Kudos
4 Replies
sstrell
Honored Contributor III
238 Views

Are you using Platform Designer?  Are there any other components connected in a system design that could be causing waitrequest to remain high longer than expected?

0 Kudos
rled64
Novice
235 Views

Yes I am, the EMIF is accessed both from a customized IP (called Capture) that writes data through AVMM, and from the HPS through an AVMM bridge. Normaly the HPS doesn't issue any read during the write operation from Capture but I can check this indeed.
Do you think the high state of waitrequest is abnormally long compared to a nominal behavior ? Here it is 8 times slower than the 250 MHz desired writing frequency.

Here is a capture of the platform designer with the customized ip Capture and the avmm bridge :

rled64_0-1720543177440.png

 

0 Kudos
sstrell
Honored Contributor III
224 Views

This is why you usually want to use dedicated memory for the HPS instead of going through the H2F bridge if possible.  Is there a reason why you are going through an additional pipeline bridge for the HPS to access the memory?

As to the length of the waitrequest, you would need to look at what's happening with the pipeline bridge accessing the RAM.

0 Kudos
rled64
Novice
213 Views

I'm afraid I lack of knowledge there. My goal is that I want to be able to read data incoming from an ADC on a very wide time window, which for instance would be 1 GB of data generated. I cannot use FIFO or onchip RAM because it's not its purpose on sizes this big, so I'm writing these data to a RAM.
So the FPGA side should be able to write this data to RAM in real time, I mean faster than the generated data rate. And the HPS side should be able to read it after this was written, it can be delayed, and at it's own speed it's not a matter.
Is there another solution there instead of using an FPGA side RAM which obligates me to access it through H2F from HPS ?
I would like to write on a dedicated HPS RAM memory but I guess I was just afraid of timing issues. if the FPGA can access it in real time then I should go for it.

0 Kudos
Reply