I have been trying for several months to get hold of information about how to use an Intel PHY Lite IP (for Arria 10 or Cyclone 10 GX) to implement a source-synchronous input interface:
- Last December, I asked this question on the official Intel FPGA forums, but received no useful replies.
- I asked a very similar question here on electronics.stackexchange, which helped me to confirm that PHY Lite is the correct solution to my problem.
- I then asked this question about PHY Lite in the official Intel forums, but received no useful replies.
- I recently re-phrased that into a similar question about PHY Lite in the official forums, but have received no replies yet (after 2 days).
What I have learnt so far
Besides the PHY Lite user guide, my main source of information is Intel's AN756, which describes how to migrate high-speed GPIO to the PHY Lite IP core.
There is a whole subsection related to source-synchronous interfaces. But unfortunately, there is no text description, just this one diagram showing an input interface:
My main difficulty is that the upper half of this figure (showing traditional GPIO) has two external inputs: Data and Clock. However, the lower half (PHY Lite) has three: Data, Strobe In and Ref Clock. So I don't understand what Strobe In and Ref Clock need to be connected to. In particular, I want to know if my PCB schematics need to be changed to support PHY Lite.
I can see from Table 3 of AN756 that the external (source-synchronous) clock should be connected to strobe_in
:
This is also confirmed in Table 1:
However, I don't fully understand the role of ref_clk
. I know it is recommended that this clock comes from a dedicated clock pin, but it is possible to use a quartus.ini hack to allow this clock to come from inside the FPGA (PLL).
Table 78 of the PHY Lite user guide points out that ref_clk
must be synchronous with strobe_in
"to ensure the dqs_enable signal is in-sync with strobe_in":
However, I am not sure if this is relevant for a simple source-synchronous input. The dqs_enable
logic seems to be somehow related to synchronization of rdata_en
, which is just tied high in my use case (AN756, Table 3):
It seems like maybe I just want strobe_in
and ref_clk
to both be driven by the external (source-synchronous) clock. But this fails to build, I think because they need to be separate pins.
So I'm totally stuck. I simply don't understand how to connect ref_clk
and strobe_in
. Any help would be very gratefully appreciated.