09-09-2020 11:30 AM
Hello, I'm using a Zynq Ultrascale+ MPSoC on a custom board and trying to use the Aurora 64B/66B IP. I have the Loopback set to Normal Mode. I have connected the gt_ref_clk to 156.25Mhz external oscillator and the init_clk to a Clock Wizard that generates 43Mhz. I am connecting the Aurora to a Fast Fiber Transceiver. I am modeling the Power Up reset as described on page 68 Figure 3-2.
The problem I am having is the gt_pll_lock keep toggling and I don't know why. Can anyone help me please?
09-09-2020 06:12 PM - edited 09-09-2020 06:13 PM
Hello Joe @joe306
Let me add some comment on this post \.
1. I believe your Aurora 64B66B connectivity is something like this.
# If not could you please share a simple picture to show how you connected your system.
Please share also your Aurora 64B66B XCI file ?
2. Could you please ensure that both 156.25MHz and 43MHz for init_clk are free-run and stable before you starting Aurora 64B66B
3. if PLL_LOCK is toggling, I would suspect 3 things
(a) REFCLK or INIT_CLK does not follow clock setting set in the GUI
(b) REFCLK source has a phase-noise performance
(c) Aurora 64B66B IP is resetting itself because of a lot of errors.
Do you have ILA waveform to share ? Could you please share the following signals during initialization ?
Thanks & regards
09-10-2020 11:10 AM
09-10-2020 02:05 PM - edited 09-10-2020 02:14 PM
Hello, I've routed some of the signals you requested to output pins:
It looks like the link_reset_out is periodically being reset and that is causing or leading to the sys_reset_out to reset (go high) and causes the gt_pll_lock to go low.
I have some more to add in another post.
I've uploaded my design that you can regenerate the block design.
09-10-2020 02:46 PM
Hello, I was reading page 26 Table 2-9 about using MMCM for any clocks to the IP:
Since I am using an MMCM for the init-clk do I need to use the mmcm_not_locked pin?
This pin is only available when in Include Shared Logic is selected. I'm not using that because I need the user_clk_out pin to drive the AXI DMA IP.
Thank you very helping me. I'll get back to work.
09-10-2020 10:12 PM
Just adding my comments:
1. I believe your REFCLK is good. I can see that gt_pll_lock is asserted.
2. pma_init and reset_pb should be high on default setting (after board power-up),
please deassert those signals only after you can ensure that gt_powergood is high.
# According to your oscilloscope waveform, I suspecting that you don't follow this guideline.
3. Yes, your understanding is correct that link_reset_out assertion caused this periodical gt_pll_lock deassertion.
4. My concern looking at oscilloscope waveform above is LANE_UP does not toggle at all.
Aurora 64B66B IP has a watchdog timer to check LANE_UP status, if this signal is not asserted IP will reset itself periodically.
5. Joe:I got this working on the ZCU106 board but not on my custom board.
This is a very good hint. perhaps the problem root-cause is not on your design but on your board.
Could you please ensure that Fiber Optic Transceiver is actually sending a correct signal ( in term of DC spec, and line-rate ) to your GTH RX ?
Can you please capture the GTH RX input signal ?
If GTH RX is receiving signal correctly , I am expecting that LANE_UP should be asserted.
09-11-2020 07:14 AM
09-13-2020 11:47 PM
1. You definetely need to connect mmcm_not_locked signal as described in PG074.
2. "there is an I2C link to the Fast Fiber and when I read the I2C registers looking for a Loss of Signal bit, it always shows high indicator that there is a loss of signal on the loopback cable."
This is a good hint.
So, perhaps my assumption was correct that Aurora 64B66B signal from TX is not properly loopback-ed.
Please let me know if you still see issue with Near-End PMA loopback.
3. One more thing to check is the "Transceiver setting".
Did you configure "Insertion loss" and "Equalization mode" to fit your board configuration ?
If you are aware of channel insertion loss value between "Fabric Optic Transceiver" and "GTH RX" , you need to set correct value on the GUI and choose suitable equalizer mode.
Thanks & regards
09-14-2020 07:27 AM
Hello, thank you for responding to my message. I have not made any changes to the Transceiver settings:
I would not know where to begin adjusting things settings.
Concerning the mmcm_not_locked, that signal is only available when you select Include Shared Logic in example design:
When you select this setting it changes many input and output ports:
When the IP is updated I look the user_clk_out port is missing. I used that clock to attach to the m_axi_mm2s_aclk and m_axi_s2mm_aclk shown in yellow in the above graphic. The pin property of tx_out_clk shows a frequency of 97.65625Mhz. The user_clk_out was 48.828Mhz which is the max range on the init_clk. So I need some guidance on how to generate a clock for the AXI_DMA IP.
Last, the inputs refclk1_in, user_clk and sync_clk inputs what should be the value of user_clk? I see the sync_clk should be twice the user_clk.
Thank you very much for all your help.
09-25-2020 02:04 AM
Hello Joe @joe306
I would suggest to generate Aurora 64B66B Example design from your XCI.
You will see something like :
sync_clk and user_clk are connected to tx_out_clk ( using BUFG_GT ).
refclk1_in is a reference clock for your transceivers, so you need to connect it to IBUFDS_GTE4
Hope this helps.
09-25-2020 09:29 AM - edited 09-25-2020 11:57 AM
Thank you for responding to my message. I did create an example and it is very helpful:
I'm making some progress now. I'm running the Aurora at 1.25Gbps so my clock frequencies have changes and that causes conflicts with other things.
Will keep you informed.
Thank you very much,
09-29-2020 09:10 AM
09-29-2020 10:40 PM
Hello Joe @joe306
>If I'm running in Include Shared Logic in example design then I get the ports sync_clk, user_clk and tx_out_clk and the mmcm_not_locked port. In this case I need to use the mmcm_not_locked port.
>It would appear to me that because I am running in Shared Logic and init_clk is from a MMCM then I only need to follow the documentation: If MMCM is used to generate a stable clock (init_clk), pma_init needs to be applied to
the Aurora 64B/66B core until MMCM lock is established. This ensures that the core remains
in a known state before a stable clock is available for the core.
I believe your understanding are correct. (both of them)
>I don't think I have to run in "Include Shared Logic with example design"
Yes, this also correct.
This "Shared Logic" configuration is also applicable to most Xilinx IPs. So,
(a) If you only implement a single IP, you may prefer to configure your IP as "Include Shared Logic in core"
Since using this setting, you will get an IP with more simple interface.
(b) If you want implement a multiple IPs in your design, you propably want to share clock resources between those IPs.
If this is the case, you should configure one master IP as "Include Shared Logic in core"
and please configure the rest of the IPs (slave IP) as "Include Shared Logic in example Design",
and share the clock resources between those IPs.
09-30-2020 06:54 AM