ADRV9009
Recommended for New Designs
The ADRV9009 is a highly integrated, radio frequency (RF), agile transceiver offering dual transmitters and receivers, integrated synthesizers, and digital...
Datasheet
ADRV9009 on Analog.com
Hello,
I am using custom board with ultrascale+ and muti adrv9009.
I need to use MCS and RF PLL phase sync function.
The software that I use is no-os example( I modified for muti chip) and Firmware is 6.0.2, API is 3.6.0.5.
Refer to UG1295 and API manual, I did some tests and got results as list:
1. Just run TALISE_enableMultichipSync(), and .rfPllPhaseSyncMode = TAL_RFPLLMCS_INIT_AND_SYNC.
Result : After TALISE_enableMultichipSync, I get MultiChipSyncStatus,the SyncStatus value is 0xB. Look muti TX Singal on the oscilloscope, RF PLL Phase Sync is not sync.
2. Run TALISE_enableMultichipSync(), and set .rfPllPhaseSyncMode = TAL_RFPLLMCS_INIT_AND_SYNC.
Result : same as test 1.
3. Just run TALISE_enableMultichipRfLOPhaseSync(), and set .rfPllPhaseSyncMode = TAL_RFPLLMCS_INIT_AND_SYNC.
Result : After TALISE_enableMultichipSync, I get MultiChipSyncStatus,the SyncStatus value is 0x3, JESD Link Status error.
3.Set .rfPllPhaseSyncMode = TAL_RFPLLMCS_INIT_AND_SYNC, run TALISE_enableMultichipSync() first, then run TALISE_enableMultichipRfLOPhaseSync() , and set .rfPllPhaseSyncMode = TAL_RFPLLMCS_INIT_AND_SYNC.
Result : After TALISE_enableMultichipSync, I get MultiChipSyncStatus,the SyncStatus value is 0xB, after TALISE_enableMultichipRfLOPhaseSync() , the SyncStatus value is 0x3, JESD Link Status OK, RF PLL Phase is synced.
So,
1. Should I use both TALISE_enableMultichipSync() and TALISE_enableMultichipRfLOPhaseSync() for mcs and RF PLL sync?
2. why does TALISE_enableMultichipRfLOPhaseSync() reset Device Clock divider Sync Status? Does this have any effect to msc ?
Should I use both TALISE_enableMultichipSync() and TALISE_enableMultichipRfLOPhaseSync() for mcs and RF PLL sync?
Yes. Your third sequence is correct. You have to first run MCS to set JESD204B deterministic latency using SYSREF signal pulses as normal. Then you have to run RFPLL phase synchronization that uses existing signaling and the SYSREF signal to accomplish LO phase synchronization.
Hope you are sending the SYSREF's after the MCS as per the JES204B API Initialization sequence given in UG.
Hello srimoyi,
TALISE_enableMultichipRfLOPhaseSync() must be called INSTEAD of TALISE_enableMultichipSync() or shall we call both of them ?
We found a power point document telling to call one instead of the other, but your answer says to call both of them.
www.analog.com/.../Talise_Release_6-0_Customer_ Release_ Notes_3-6-0-6.pdf
can you tell us when to call each ? I mean at what point inside the initialization procedure
Thanks
BR
Pietro
You have to run both the MCS as well as RFPLLMCS. MCS is meant for baseband synchronization and RFPLL is meant for RFPLL synchronization.
Sequence to run MCS:
Initialize all devices in system using TALISE_initialize() 2) Run TALISE_enableMultichipSync with enableMcs = 1 3) Send at least 4 SYSREF pulses 4) Run TALISE_enableMultichipSync with enableMcs = 0 5) Run ARM cals and continue to active Transmit/Receive.
Sequence to run RFPLL MCS:
1) Initialize all devices in system using TALISE_initialize() 2) Run TALISE_enableMultichipRfLOPhaseSync with enableDigTestClk = 1 before TALISE_runInitCals() 3) Send at least 3 SYSREF pulses 4) Run TALISE_enableMultichipRfLOPhaseSync with enableDigTestClk = 0 5) Send at least 3 SYSREF pulses 6) Continue with init sequnece ...Run initCals, bringup JESD, etc
You have to run both the MCS as well as RFPLLMCS. MCS is meant for baseband synchronization and RFPLL is meant for RFPLL synchronization.
Sequence to run MCS:
Initialize all devices in system using TALISE_initialize() 2) Run TALISE_enableMultichipSync with enableMcs = 1 3) Send at least 4 SYSREF pulses 4) Run TALISE_enableMultichipSync with enableMcs = 0 5) Run ARM cals and continue to active Transmit/Receive.
Sequence to run RFPLL MCS:
1) Initialize all devices in system using TALISE_initialize() 2) Run TALISE_enableMultichipRfLOPhaseSync with enableDigTestClk = 1 before TALISE_runInitCals() 3) Send at least 3 SYSREF pulses 4) Run TALISE_enableMultichipRfLOPhaseSync with enableDigTestClk = 0 5) Send at least 3 SYSREF pulses 6) Continue with init sequnece ...Run initCals, bringup JESD, etc
But if I have to perform both synchronizations MCS and RFPLL what shall I do ?
call both the API in the same init procedure ?
Pietro
Yes you can do that in the same init script.
Hi srimoyi,
It's good luck to so many useful suggestions about MCS. I have a question that what does Initialize all devices in system using TALISE_initialize means?""
For example, I have one zcu102+two adrv9009s, does it mean that I should TALISE_initialize the first board and then the second board and then do chips MCS? like the figure below?
No. You need to initialize as well as trigger MCS for all the boards in the system at the same time
You mean that I should TALISE_initialize the first adrv9009 and then do MCS, and then TALISE_initialize the second adrv9009 and then do MCS again, is it right?
Yes. You can initialize and run MCS for the two boards one after the other.
I think you need to run them at the same time,
you are right