UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Contributor
Contributor
160 Views
Registered: ‎11-21-2018

zcu111 Bare-metal Example PowerUp status

Hello,

I am trying to understand what happens with RF data converter bloc.

I follow the tuto https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/RF-Data-Converter-Software-Drivers-Really-Foolproof-not-Really/ba-p/947945,

and I created a similar design on Vivado with a DAC and an ADC. 

 

vivado.png

Can someone explain to me why when I activate the PLL I have:
   for ADC -> PowerUpStatus: 0 and ADC Tile State:7
   for DAC ->PowerUpStatus: 0 and DAC Tile State: 7
and when I don't activate it I have:
   for ADC -> PowerUpStatus: 1 and ADC Tile State: 15
   for DAC ->PowerUpStatus: 1 and DAC Tile State: 15

Attached files contain the tcl and c functions using the API drivers

 

terminal with PLL enable .pngterminal with PLL not enable .png

Maybe @klumsde has a clear explanation and can help me to better understand.

Many Thanks.

Best Regards

0 Kudos
2 Replies
Moderator
Moderator
146 Views
Registered: ‎04-18-2011

Re: zcu111 Bare-metal Example PowerUp status

Step 7 is clock detect.

I am thinking that when you program the RF PLL on the board to give you the Tile PLL reference clock then something goes wrong. 

What FS do you use when you provide it with the sample clock directly?

there was a problem with that xrfdc_clk.c. 

#ifdef XPS_BOARD_ZCU111
printf("\n Configuring the Clock \r\n");
#ifdef __BAREMETAL__
LMK04208ClockConfig(1, LMK04208_CKin);
LMX2594ClockConfig(1, 3932160);
#else
LMK04208ClockConfig(12, LMK04208_CKin);
LMX2594ClockConfig(12, 3932160);
#endif
#endif

 

There was a bug found in the code that programs the LMX

The LMX2594ClockConfig function accepts the desired frequency, checks the frequency is a member of the look up table and sets this as the frequency to be programmed. The problem occurs due to this check

the problem occurs because of this check. 

If you look at line 554 of xrfdc_clk.c 

for(XFreqIndex=0 ; XFreqIndex<20; XFreqIndex++) {
if (ClockingLmx[XFreqIndex].XFrequency == XFrequency) {
Lmx2594Updatei2c( XIicDevFile, ClockingLmx[XFreqIndex].LMX2594_A);
return 0;
}

There is in fact 26 entries in the look up table of frequency settings. 

This is fixed now. 

Pull down the file from here: https://gitenterprise.xilinx.com/embeddedsw/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/rfdc/examples/xrfdc_clk.c#L734

or just change the loop condition to be something like

 for(XFreqIndex=0 ; XFreqIndex < sizeof(ClockingLmx) / sizeof(ClockingLmx[0]); XFreqIndex++)

Try that and let us know how you get on. 

 

Keith 

 

 

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Highlighted
Contributor
Contributor
116 Views
Registered: ‎11-21-2018

Re: zcu111 Bare-metal Example PowerUp status

Thank you for your answer Keith,

I try again but with exactly the same files you gave us in the tutorial to be sure everything is fine and with the new xrfdc_clk.c I found here 

https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/rfdc/examples/xrfdc_clk.c and change the line 554 of xrfdc_clk.c 

(unfortunately I can't follow the link : https://gitenterprise.xilinx.com/embeddedsw/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/rfdc/examples/xrfdc_clk.c#L734 , is it possible to have it by another way? )

I have no idea why It doesn't work. Because I built exactly the same project you did (with "zcu111_pinout.xdc" and "zcu111_simple_adc.tcl"  to be sure that it doesn't come from the Vivado project, but I have the same issue:

conf vivado.png pbpower.JPG

 

Do you have an idea? Is it possible that the problem comes from the board?

Thank you again for your help @klumsde.

Regards, Camille

0 Kudos