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 wri...
As for seeing the read signal, it appears you are tapping the EMIF IP with Signal Tap, not your controller, so as noted in the link above, it does have a read signal. As such, something else in your system must be accessing the EMIF IP and issuing read if it's not your controller. You mention the HPS. Is this EMIF a dedicated memory connected to the HPS or is it configured in the FPGA fabric and you are accessing the EMIF from the HPS over the H2F bridge? I'm guessing the latter.
So, I don't believe I am using another logic instead of hard memory controller. At least, the hmc provides an avalon-mm interface, and I use my logic to write to this interface, nothing more, so indeed I am using the HMC, isn't it ? My QSYS structure is the following and helps to get a clearer picture (there are other things, but I focus on this issue):
I have 2 avalon-mm masters accessing EMIF, for read/writing to an external DDR4 SDRAM based on FPGA side. One master is customized IP inside FPGA fabric and writes data to EMIF through amm interface, meaning through the hard memory controller of EMIF. As you guessed well, the other master is actually the HPS that accesses EMIF for reading, through H2F bridge and avalon-mm bridge adapter.
The two masters are connected to the same slave EMIF amm base address 0x0, and as far as I know , avalon performs arbitration automatically.
- I don't see any burstbegintransfer in the EMIF amm-slave interface, maybe this is automatically assigned by internal's EMIF logic when a burst begins ? Also, I don't see burstbegintransfer (not transaction) in the Component Editor for an "Avalon Memory Mapped Host" interface (don't pay attention to the "Name", just an example):
- For the read signal : I don't have any other IP connected to this slave. The amm bridge host never issues any "read" signal during operation before I ask, and never issues anything anyway (I checked in SignalTap).
- I suppose the chipselect_n signal might be confusing, I will try to remove it completely from interface (and not let it to 1 or 0) and see how it goes.
Also, about the clocks. Pipeline bridge host has 50 MHz source clock, my custom master write IP has 50 MHz clock, but my EMIF can only be provided 1 clock source (pll_ref_clk), which is the DDR4_REF_CLK about ~266MHz. I'm not quite certain what is the EMIF avalon-mm source clock, and if it can cause any problem that my masters (50MHz) have different clock domain ? I don't know if tapping any amm signal in signaltap is also a problem ?
Here is again a picture of SignalTap during a write transaction from my master write of just 1 burst, which is called "Capture_Burst_ad9250", and the emif amm signals "a10s_hanpilot_emif_ddr4bh" , I hope is somehow readable :