Cyclone V GX, Custom PHY, using fPLL as TX PLL
Hi,
I'm trying to get six independent SATA links on a Cyclone V GX with six transceivers, as far as I can see this should be possible.
My approach for clocking would be to run all the channel PLLs in CDR mode for RX clocking, and generate the TX serial clock using the fPLL, which can feed it to the x6 clock network. The TX parallel clock is then generated in the channel clock divider, as the fPLL does not drive the parallel clock.
- Can I specify that with the Custom PHY megafunction, or do I need to go a different path here? Simply configuring a Custom PHY in duplex mode instantiates one CDR and one CMU PLL per channel, and these fail to merge afterwards.
- Can I use a single fPLL for all channels, or should I use both (one for channel 0-2, one for channel 3-5)?
- If I want to support both 1.5Gbps and 3Gbps, can I divide the serial clock in the channel, or do I need to set up a separate fPLL and set up clock distribution accordingly?
- Can I run the fPLL off the system clock for the rest of the fabric (generated in a normal PLL), or should I add a separate reference clock to my board?
Simon
Okay, I have a valid PLL configuration now: two fPLLs that feed as external PLLs into three transceivers each.
For reference: the fPLL's output port is not valid as an input clock for a transceiver block if reconfiguration is enabled, because that routes the clock through the per-output C divider to allow reconfiguration to set up a divisor here, this gives an error message that the CLKCDRLOC port on the transceiver is not properly connected. The knowledge base entry for this is incomplete: connecting to outclk_0 only works if PLL reconfiguration is disabled.
The solution here is to disable reconfiguration for the fPLLs, or enable access to the DPA outputs in the PLL configuration and connect the clock to phout[0], then the design compiles.