Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
Announcements
Need Forum Guidance? Click here

Search our FPGA Knowledge Articles here.
18955 Discussions

How to switch Transceiver transmitter PLL

JDeff
Beginner
337 Views

I am following the user guide to switch transmitter pll sources. I read register x117(3:0) and get x"B'". I then do a read-modify-write to register x111. but before I modify, the read value is x"78". after manipulating the pll maping value of x"B" I should write x"FB" to x111. I am confused though because I am switching to the same pll that is already active (just trying to test the state machine logic) so i would expect to write the same value to x111 as I read.

When I write xFB to x111, the calibration hangs and the transcever does not come back to life. however, without changing any logic if I write x78 to x111 (the same value that I read) the calibration completes just fine.

 

What am I doing wrong that PLL switching is not working

0 Kudos
1 Solution
CheePin_C_Intel
Employee
209 Views

Hi,

 

As I understand it, you have some inquiries related to the TX PLL switching in the Native PHY. I believe you are referring to A10 devices. If yes, as I understand it from the user guide, to switch to tx_serial_clk0, the 8 bit mapping should be:

 

{~logical_PLL_offset_readdata[3], logical_PLL_offset_readdata[1:0],logical_PLL_offset_readdata[3], logical_PLL_offset_readdata[3:0] }

 

With the read back value = 0xB -> 4'b 1011, after encoding, the value should be 8'b 0111 1011 -> 0x7B instead of 0xFB. Please help to correct me if I have encoded this incorrectly.

 

Thank you very much.

 

Best regards,

Chee Pin

View solution in original post

4 Replies
CheePin_C_Intel
Employee
210 Views

Hi,

 

As I understand it, you have some inquiries related to the TX PLL switching in the Native PHY. I believe you are referring to A10 devices. If yes, as I understand it from the user guide, to switch to tx_serial_clk0, the 8 bit mapping should be:

 

{~logical_PLL_offset_readdata[3], logical_PLL_offset_readdata[1:0],logical_PLL_offset_readdata[3], logical_PLL_offset_readdata[3:0] }

 

With the read back value = 0xB -> 4'b 1011, after encoding, the value should be 8'b 0111 1011 -> 0x7B instead of 0xFB. Please help to correct me if I have encoded this incorrectly.

 

Thank you very much.

 

Best regards,

Chee Pin

JDeff
Beginner
209 Views

Yes that was my mistake. I did not realize ~ notation meant NOT bit 3. It now works correctly. Thank you

CheePin_C_Intel
Employee
209 Views

Hi,

 

Just would like to follow up with you on this. Thank you.

CheePin_C_Intel
Employee
209 Views

Thanks for the update. Glad that you have managed to resolve the issue.

Reply