- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
In my design, I instantiated and configured the EMIF IP via IP Catalog (not platform designer).
I then correctly connected the signals according to design examples from Terasic.
The flow of data from input up to the EMIF is:
PCIe -> Dual Clock Fifo -> EMIF
This usually works fine, however what I see now is that for certain combination of inputs, I will always get the same error. After some read transcations, I will assert the read line but I will never receive a readdata valid.
When retrieving data from DDR4, I would:
- Check if ready/waitreq_n signal is '1'
- Be sure that the write pin is cleared
- Assert the read pin for one clock cycle
- Set the correct values for the address and burst lines
Then I would not receive a readdata valid response from the IP.
The images attached show the error happening.
What could cause a read without a read valid? What would be the best way to debug this issue?
Environment:
- DE10 Agilex Board
- AGFB014R24B2E2V
Thank you for your help.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If this is Avalon, waitrequest is active high, not active low, so you have to hold the address and read control until waitrequest goes low. One cycle after waitrequest goes low is when valid data appears, qualified, in the case of a burst, with readdatavalid.
See the Avalon spec: https://www.intel.com/content/www/us/en/docs/programmable/683091/22-3/introduction-to-the-interface-specifications.html
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Continuing from my previous reply, I'd say this part is not correct
---------------------------------------------
One cycle after waitrequest goes low is when valid data appears, qualified, in the case of a burst, with readdatavalid
---------------------------------------------
From Figure 15, paragraph 3 in chapter 3.5.5.2. Read Bursts
"Host B drives address (A1), burstcount, and read. The agent asserts waitrequest, causing all inputs except beginbursttransfer to be held
constant. The agent could have returned read data from the first read request at this time, at the earliest."
Implying that the agent may delay the readvalid response, which makes sense. For an emif IP that must fetch data from outside the fpga, one must expect several cycles of delay
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I agree that this should be the case according to the manual, but that is not what I observe when simulating the IP (please refer to the attached image).
the emif signal is:
----------------------------------------------------------
which matches your description.
However when simulating the example design, we see that the amm_ready is set to 1 when accepting data
the whole confusion seems to starts because the example design negates the ready signal on the TG
----------------------------------------------------------
I observe the same using signal tap, the emif ip is sets ready to 1 when available. The initial value for that pin is 1 after calibration.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Maybe you can check if the address is satisfied with the burstlength.
Try to get which address that start to have read issue by testing multiple times.
You also can verify if the EMIF IP setting is matching to the memory device datasheet.
Regards,
Adzim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As we do not receive any response from you on the previous reply that we have provided, I now transition this thread to community support. Please login to ‘https://supporttickets.intel.com’, view details of the desire request, and post a feed/response within the next 15 days to allow me to continue to support you. After 15 days, this thread will be transitioned to community support. The community users will be able to help you on your follow-up questions.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page