DECT-NR+ Scheduling Latency issues

Hi

I am quite well familiar with DECT-NR+ and the Nordic Boards, as well as nrf91xx, we use a nrf9151.

Also some kind of involved at this opener initiative, but I cannot say here any more about this.

We using the latest (shared with us) mfw version at PHY and haveing our "own" MAC Implementation.

But my we going down to radio, so ignore the MAC.

My question is related according to TX - TX Latency, basically I have two different TX Operations and want them to schedule.

One Operation starts at Slot 16 and goes two Slots, so it ends at Slot 18.

2nd Operation starts at Slot 18 and my assumption was that when I schedule quite the same Operation and staying in the same mode (TX Operation, only)

than there is no delay in between.

But it looks lilke that at least the Latency for TX Transmission "idle_to_active" with 29030 ticks is needed to schedule another Operation within this time.

It feels odd and strange together, because why? is there any delay for TX - TX necessary? just for IPC communication and transfer data from nrf to Radio ? or?
And why is a whole slot needed ? the 29030 - 28800 = 230 which is a Slot plus 230 ticks. 

Is there a magic switch or function pointer I can use to have a schedule_tx_after_tx operation ? similiar question with schedule_rx_after_rx operation ? with delays

From AI answer: "If your two TX operations are logically one burst, consider whether they can be combined into a single longer TX operation rather than two separate scheduled ones."

good point, but the Receiver is different etc.

Kind regards

thanks

Parents
  • Hi, 

    What NCS and MFW versions are you using?

    schnitzlein said:
    You can also address this question with from a company you might well know

    Sorry, I cannot find the information regarding the name you mentioned. 

    Regards,
    Amanda H.

  • All fine, they do internally somehow.

    I am the just the tech guy, not in the management world.

    ncs is: v3.2.4

    mfw: mfw-nr+-phy_nrf91x1_2.0.0.zip

    Regards,
    Christoph

  • Hello again,

    to add more insights:
    Please see in git post Line the idle_to_active
     https://github.com/Opener-Initiative/dect_open_stack_ms/blob/main/lib/dect_nrplus/mac/dect_mac_sm_ft.c#L3105

    We achive something similiar but this is somekind of waste of a slot or a blind-slot for each op, right?

    I want to stay in Radio ACTIVE for some Slots, is that possible? With different TX Ops ? or RX Ops

    Scenario (with sycnd devices)

    Assuming I have a stream of data, which should be addressed scheduled to others. One device will schedule different slots pre-allocated / scheduled.
    But the delay is important here, it should be keep low as possible.

    Radio is in low latency mode and the ops_transsion delay and other I am aware of.
    But why that many delay?

    Cant I just stay in ACTIVE State wait for new data or new data is arrived (assuming dma + acklowged isr), checking for next timeslot to schedule and use that data for that timeslot.

    After the frame is over remove it, or keep in softbuffer if necessary, is that so?

    I am basically searching for the lowest latency with high output of data I could achieve.

    Just the idea in reducing the idle_to_active, active_to_idle delays just haveing a small operation_transistion delay or wait_for_dma + IPC sth. ?

    Thanks in advance
    Have a great day :) 

    bye

Reply
  • Hello again,

    to add more insights:
    Please see in git post Line the idle_to_active
     https://github.com/Opener-Initiative/dect_open_stack_ms/blob/main/lib/dect_nrplus/mac/dect_mac_sm_ft.c#L3105

    We achive something similiar but this is somekind of waste of a slot or a blind-slot for each op, right?

    I want to stay in Radio ACTIVE for some Slots, is that possible? With different TX Ops ? or RX Ops

    Scenario (with sycnd devices)

    Assuming I have a stream of data, which should be addressed scheduled to others. One device will schedule different slots pre-allocated / scheduled.
    But the delay is important here, it should be keep low as possible.

    Radio is in low latency mode and the ops_transsion delay and other I am aware of.
    But why that many delay?

    Cant I just stay in ACTIVE State wait for new data or new data is arrived (assuming dma + acklowged isr), checking for next timeslot to schedule and use that data for that timeslot.

    After the frame is over remove it, or keep in softbuffer if necessary, is that so?

    I am basically searching for the lowest latency with high output of data I could achieve.

    Just the idea in reducing the idle_to_active, active_to_idle delays just haveing a small operation_transistion delay or wait_for_dma + IPC sth. ?

    Thanks in advance
    Have a great day :) 

    bye

Children
  • Our experts are on vacation. I will check with them and update the case when they are back. I am sorry about any inconvenience this might cause. 

  • thanks for quick reply :) 


    Sure it can wait,

    next two weeks I am in vacation.


    Hope to hear from you.

  • Currently each modem command is atomic thus modem goes after the operation to “idle/stand-by” state and next operation needs to get back “up” from idle state to “active” state. Fast, back-to-back tx-tx, rx-rx, tx-rx or rx-tx operations require some work from our side and new FW release.

    The delays in state transitions is inherent to modem RF resources ramping down and ramping up for next transmission/reception. Currently the gap you have to have is approximately single slot. The exact value is reported in API. This value in microseconds you can convert to ticks by multiplying the duration with 69.12MHz clock.

    Please also see the FW / NCS compatibility matrix.

  • Thanks a lot for the answer! :) 

    Most of this is we figured already out.
    The we rely currently on the "scheduled_operation_transition"

    Is this the correct delay to be used than or 
    idle_to_active + <operation_startup_time + duration> + active_to_idle ?
    It feels like that with low_latency mode we are already scheduling massive staying in ACTIVE  somekind of and only the <operation_startup_time + duration> + scheduled_operation_transition + <operation_time>  is necessary.

    Can you put some light into this darkness for me? 

    kind regards
    Christoph
  • This is explained in the documentation DECT NR+ physical layer — nrfxlib 3.3.1 documentation, I hope well enough.

    Thus, if you schedule operations the first operation you need to take the t_{standby_to_idle} and t_{idle_to_active} into account depending on radio mode. The second operation needs only t_{min_sched_opr_trans_dly} also noted as t_m in the figures.

    The modem packet scheduler handles automatically whether it has time to go to IDLE or STANDBY between consecutively scheduled operations. If you have scheduled multiple operations in advance.

    If it goes to IDLE or STANDBY then the next operation always pays the t_{standby_to_idle} and t_{idle_to_active} delays.

    So if the modem knows what is going to happen after current radio command it is executing the delay between radio operations is < 1 slot. But if it does not know, or the command comes too late, i.e. modem is already transitioning to IDLE or to STANDBY, then you pay additional latency.

Related