assembly/src/sw_sup/clocking.md

3.9 KiB

Clocking

This page describes ways to set up clocking. Official documentation references:

In general, any RF card and Carriers require some clock source. Most of them have both internal clock signal generator and external MMCX and/or SMA connectors to accept the signal. By default the internal clock is used for Carriers, and external MMCX is used for RF cards. However, internal clock may be not good enough for the end-user application, so the end-user may want to change the clock source at any time.

Kasli/Kasli-SoC

For setting clocking on the Carriers you will just need to set rtio_clock in the core device config. Be aware, that setting any external clocking will require appropriate external clock signal to be supplied into CLK IN SMA connector on the front panel to boot. Therefore, firmware will be halted, the ERR LED will be red and no Ethernet connection will be established. Since the clock signal is distributed by DRTIO, there is generally no need in setting it up on satellites.

If you have connection with the Carrier, you can use coremgmt command:

artiq_coremgmt config write -s rtio_clock <OPTION>

For available options refer to the official documentation (at the top of the page).

Setting clocking for Kasli without connection

For RISC-V/legacy Kasli you will just need to connect your PC to the Kasli via data micro-USB cable and run the following:

# you may also change IP setting here, the default is 192.168.1.75
artiq_mkfs kasli.config -s ip xx.xx.xx.xx -s rtio_clock <OPTION> 
# but don't forget to update `core_addr` variable in the device_db.py file if changed
artiq_flash storage -f kasli.config

Be aware that all other settings will be erased, so you may need to restore them in the artiq_mkfs command.

Setting clocking for Kasli-SoC without connection

For this you will need to eject micro-SD card from the Kasli-SoC, either by removing the top panel or by gently pulling the Kasli-SoC from the crate, possibly with other cards. In any case, be cautious and follow the warnings. Once accessed the micro-SD card, simply add rtio_clock=<OPTION> on a new line to the existing CONFIG.TXT file and save it, or if it is absent, just download default-ish CONFIG.TXT to the SD card near (same level) boot.bin file.

RF Devices (Except Clocker)

If you want to set the clock source specifically for RF devices, you will just need to update the JSON file and regenerate device_db.py file.

For example for Urukul, you will just need to check the manual for available variants and apply them in the JSON file, so Urukul entry may look like this:

{
  "type": "urukul", 
  "dds": "ad9910", 
  "ports": [1, 2], 
  "refclk": 10e6, 
  "clk_sel": 1
}

So basically, clk_sel and refclk fields need to be set:

  • clk_sel selects the source clock, where 0 - internal 100MHz XO; 1 - front-panel SMA; 2 internal MMCX
  • refclk - reference clock frequency in Hz

These settings may need to be checked with official manual and may differ from device to device.

Clocker card

Main page: clocker.md

Clocker card allows to distribute clock signal up to 1 GHz without additional software setup. Therefore, there is no way to set it to generate signal, which would be different from input. The only setup allowed is to set to accept signal from EXT/INT ports, front-panel SMA or card's MMCX ports respectively, by switching the CLK SEL switch on the card .