Thanks for the hint. Long story short: I don't understand the synchronization architecture of the Urukul. Any hint would be welcome, otherwise I will, again, waste days trying to figure it out on my own by looking at schematics, datasheets, and source code (there seems to be no documentation describing the architecture, just a bunch of variables without explanation how they are linked together).

To understand how the DDS chip synchronization works there is no substitute to reading the chip datasheet. It would be redundant to replicate that information. I'm not aware of an alternative.

The core of the problem is twofold: to synchronize SYNC_CLK, accurate and deterministic generation of SYNC_IN pulses to meet S/H to (DDS) SYS_CLK This requires tuning starting from a seed value that stored either in EEPROM or given in the device db.
Additionally the IO_UPDATE pulses need to be placed deterministically to meed (DDS) SYNC_CLK S/H.

OK, I read the datasheet, but that does not explain how the sinara-hw/sw interacts with the DDS. I don't even know what question to ask. One starter may be: It seems like I will need a TTLClockGen. The manual says, that I cannot use a regular TTL channel for that. What are regular TTL channels and which ones are the ones I need? Is this an extra hardware?

    Can I reproduce this without having a TTL card? I have a Kasli, Urukul, Zotino and Fastino card.

    Sure. This also shows up as deterministic carrier-envelope phase between the Urukul RF switch TTL (envelope) and the RF phase (carrier).

    FabianS The manual says, that I cannot use a regular TTL channel for that.

    Where?

      rjo You don't say what you did to get to where you are now. Which system is this?
      Usually you only need to do what I referenced (https://forum.m-labs.hk/d/228-phase-ambiguity-in-urukul/3) and you are done. The rest happens behind the scenes.

      Custom system. I did not see your edit yet. I will give that a try, I have not seen this option anywhere in the manual...

      sb10q Where?

      In
      https://m-labs.hk/artiq/manual/core_drivers_reference.html#artiq.coredevice.ttl.TTLClockGen
      it reads:

      This should be used with TTL channels that have a clock generator built into the gateware (not compatible with regular TTL channels).

      Ok, but TTLClockGen has nothing to do with Urukul synchronization.

      Ok, but TTLClockGen has nothing to do with Urukul synchronization.

      TTLClockGen is the component that implements Urukul synchronization.

      This should be used with TTL channels that have a clock generator built into the gateware (not compatible with regular TTL channels).

      A misunderstanding. "This" meaning the coredevice driver that's documented here, "channel" referring to the gateware PHY. They both don't refer to the hardware.

      3 years later

      FabianS One starter may be: It seems like I will need a TTLClockGen. The manual says, that I cannot use a regular TTL channel for that. What are regular TTL channels and which ones are the ones I need? Is this an extra hardware?

      Sorry to ask after almost 3 years,do you finally solve the problem or find something else useful? I seem to have similar problem about synchronization of Urukul