SBAA543 July 2022 AFE7900 , AFE7920 , AFE7950
It is possible that when the start of ILA is close to LMFC edge, some of lane0/1/2/3_f_counter_any_lane_ready read a very small value close to 0, and some lanes read values close to maximum value of fcounter (31 when K=32 and F=4). The buffer index is essentially a circular indexing as the buffer has to absorb both advancements and delays in time. Such a case is shown in Figure 5-2(1).
Initially, the lane0/1/2/3_f_counter_any_lane_ready registers read from the range of (30,31,0,1,2). Specifically, lane0_f_counter_any_lane_ready reads 30 and lane3_f_counter_any_lane_ready reads 2. In such cases, it is recommended to shift the LMFC counter by writing to link0_init_f_counter, so that all fcounter values are close by values.
On rising edge of LMFC, the counter starts from value of link0_init_o_counter/4. In other words, the LMFC counter is shifted by link0_init_o_counter/4 × F. In JESD204B, the link0_init_o_counter can only be programmed to values that are multiples of 4.
In Figure 5-2, link0_init_o_counter is set to 28 (In this case F is assumed to be 1). With this, lane0_f_counter_any_lane_ready reads ((30+28/4)%32) = 5 and lane3_f_counter_any_lane_ready reads 2+28/4 = 9. RBD is set as 13 which has a margin of 4 from the last arriving lane.
Note that the RBD value is also with reference to the shifted LMFC counter.
This can be done in Latte by setting the following paramter:
sysParams.jesdRxInitLmfcCounter = 7
Parts of figures were based on JEDEC JESD204C standard, Figure 5 and Figure 50. Copyright JEDEC. Modifications have not been approved by and do not reflect the views of JEDEC.