EMIF Avalon-MM Burst never ending
Hello,
I try to write data to "EMIF Intel Arria 10 FPGA" (for DDR4 SDRAM) component with avalon-mm burst. If this works for burstlenght of 1, it doesn't for 2 or more.
It means that if I try to write a burst of 2 or more, the slave will stay in locked position forever, and abritration will prevent other master to read EMIF (for instance I cant to read from HPS).
As you can see in the picture below, I want to write with a burstlength of 2 :
We can properly see the "amm_write" twice, however there is a "amm_read" that occures right in the middle, I don't know why, and also, I don't know why I would have recurrent reads before I start writting, since my master only writes, I have no "read" output, maybe emif performs auto-check ?
Anyway, after these 2 writes, emif avalon interface hangs and I cannot send read from HPS anymore.
Also, there is no "chip_select" on the emif amm interface (see https://docplayer.net/88824953-External-memory-interfaces-intel-arria-10-fpga-ip-user-guide.html). However, if I don't assert chip_select during transaction from master to emif, it will not work ! Because of this, I'm not really sure how to exactly assert this chip_select signal since it is not visible anywhere on the EMIF, but it affects its behavior...
Moreover, I would like to add beginbursttransaction signal on my master , but in QSYS Component Editor -> Signals & Interfaces -> my "avalon_master" conduit end doesn't provide any signal of this kind.
Any insight please ? It seems very unclear to perform transactions to emif using avalon-mm burst
Thanks
Roman
Hi,
I think the busrtbegintransfer signal no longer used in Arria 10 device.
The signal exist to support legacy memory controllers.
Most of the avalon interfaces got some details in the Avalon Interface Specifications: https://www.intel.com/content/www/us/en/docs/programmable/683091/22-3/memory-mapped-interface-signal-roles.html
About the clocks, the PLL_REF_CLK should be the clock source for EMIF IP.
The EMIF IP can provide the clock to user logic through the EMIF_USR_CLK.
You may feed your logic with this clock.
The chip select for EMIF interface is between FPGA and external memory.
https://www.intel.com/content/www/us/en/docs/programmable/683106/21-1-19-2-0/mem-for-ddr4.html
Regards,
Adzim