In the case of 4 DAC JESD links, there
exist 2 links in top JESD and 2 other links in bottom JESD. In such a case, below
procedure is used to set the RBD.
-
Link 1
Read Page 0x16[2] : lane0_f_counter_all_lane_ready = 16 for link
1
getAllLaneReady(afeInst,0,&laneAllReady)
laneAllReady = 16 for link 1
Link 2
Read Page 0x16[2] : lane2_f_counter_all_lane_ready = 26 for link
2
getAllLaneReady(afeInst,1,&laneAllReady)
laneAllReady = 26 for link 2
Link 3
Read Page 0x16[3] : lane0_f_counter_all_lane_ready = 36 for link
3
getAllLaneReady(afeInst,2,&laneAllReady)
laneAllReady = 36 for link 3
Link 4
Read Page 0x16[3] : lane2_f_counter_all_lane_ready = 46 for link
4
getAllLaneReady(afeInst,3,&laneAllReady)
laneAllReady = 46 for link 4
- Obtain valid range of RBD.
Link
1
getGoodRbdRange(afeInst,0,&rbdMin,&rbdMax)
rbdMin =
17
rbdMax = 35 (Based on skew = 3, rbdMax =
min(allLaneReady) + BufferDepth - 10 = 16 - 3 + 32 - 10)
Link
2
getGoodRbdRange(afeInst,1,&rbdMin,&rbdMax)
rbdMin =
27
rbdMax =45 (Based on skew = 3, rbdMax =
min(allLaneReady) + BufferDepth - 10 = 26 - 3 + 32 - 10)
Link
3
getGoodRbdRange(afeInst,2,&rbdMin,&rbdMax)
rbdMin =
37
rbdMax =55 (Based on skew = 3, rbdMax =
min(allLaneReady) + BufferDepth - 10 = 36 - 3 + 32 - 10)
Link
4
getGoodRbdRange(afeInst,3,&rbdMin,&rbdMax)
rbdMin =
47
rbdMax = 1 (Based on skew = 3, rbdMax =
min(allLaneReady) + BufferDepth - 10 = 46 - 3 + 32 -
10)
- In this example, optimal value is chosen as rbdMin+3 = 20 for link1, 30 for link
2, 40 for link 3 and 50 for link 4. In cases with multiple AFEs on a PCB, valid
ranges can be looked at for all AFEs and optimal RBD can be chosen.
- The optimal RBD is set and
adcDacSync is run.
Link
1
setManualRbd(afeInst,0,20)
Link
2
setManualRbd(afeInst,1,30)
Link
3
setManualRbd(afeInst,2,40)
Link
4
setManualRbd(afeInst,3,50)
adcDacSync(afeInst,1)
- Read back
link0_sysref_cnt_on_release_opportunity from the first page for link 1,
link1_sysref_cnt_on_release_opportunity from the first page for link 2,
link0_sysref_cnt_on_release_opportunity from second page for link 3 and
link1_sysref_cnt_on_release_opportunity from second page for link 4.
Link
1
getSysrefCntOnReleaseOpp(afeInst,0,&readVal)
If readVal=1,
optimal RBD is chosen as (20+1)%64 = 21
Link
2
getSysrefCntOnReleaseOpp(afeInst,1,&readVal)
If readVal=1,
optimal RBD is chosen as (30+1)%64 = 31
Link
3
getSysrefCntOnReleaseOpp(afeInst,2,&readVal)
If readVal=1,
optimal RBD is chosen as (40+1)%64 = 41
Link
4
getSysrefCntOnReleaseOpp(afeInst,3,&readVal)
If readVal=1,
optimal RBD is chosen as (50+1)%64 = 51
- In the config, value of 21 is set
for the link0_rbd_m1 in the first page, value of 31 is set for the link1_rbd_m1
in the first page, value for 41 is set for the link0_rbd_m1 in the second page
and value for 51 is set for the link1_rbd_m1 in the second page. In Latte,
sysParams.jesdRxRbd is set to [21,31,41,51]