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

Real time high speed writing to DDR RAM

rled64
New Contributor I
532 Views

Hello community,

 

I originally posted a question there but my question is broader now I guess.

I use a Terasic HAN Pilot Plateform (Arria 10) for analog to digital (ADC) data acquisition project.

 

The daughter ADC card is generating a bunch of data, more precisely 256 bits at a rate of 250MHz.

 

I want to be able to store incoming data on a very large time window (millions of samples), that would represent for instance more than a few hundreds of MB. So I cannot use neither FIFO or On-chip RAM because an FPGA has its own limits. So I tried to write to a RAM accessible from FPGA side directly through EMIF but it appears I cannot write at 250 MHz because each write takes around 8 clock period at 250 MHz to be completed as you can see in the previous post.

My question is more general : is it possible to write high speed real time data to a RAM ? How to ? Should I use other IP's like DMA ? I know existance of F2SDRAM bridge but I never used it and couldn't find lot of information about it, is it more appropriate ?

Thanks in advance !

Labels (1)
0 Kudos
3 Replies
AdzimZM_Intel
Employee
433 Views

Hello,


Are you trying to connect with DDR4 memory on the board through HPS?

If yes, which DDR4 memory interface that you want to access it?


Regards,

Adzim



0 Kudos
rled64
New Contributor I
428 Views

Hello, thank you for your reply,

 

I am trying to connect with DDR4 which is on the board through FPGA for writing into it, and through HPS for reading from user application what was wrote.
To access the DDR4, I use the EMIF IP configurated with dedicated parameters from the board so I can write through EMIF amm interface to the DDR4 with FPGA logic, and read through EMIF with HPS side application.
Does this  makes sense ? The thing is that it worked when I used to send write commands at around 30 MHz, now that I need to write at 250 MHz, which is close to the 266MHz reference clock of EMIF IP, I'm afraid this is too fast because I can see that EMIF is not ready at a rate of 250 MHz.

Best regards,

0 Kudos
AdzimZM_Intel
Employee
328 Views

Hello,


If the reference clock is 266MHz, then the memory clock is 1067MHz.

It's possible to write at 250MHz.

You need to start write operation when the memory is ready.

I think you can refer to Avalon Interface Spec document about how the transfer is done.

https://www.intel.com/content/www/us/en/docs/programmable/683091/22-3/typical-read-and-write-transfers.html


I think you're trying to write constantly at 250MHz meaning every 4 ns, the write is done.

But because the memory is not yet ready to accept that write operation, the transfer is not completed.

The memory might be busy with previous transaction in this case.

You can try to write in burst transfer as it help in improve the efficiency.


Regards,

Adzim


0 Kudos
Reply