Synchronizing Multiple Crimson Units

In this tutorial, we describe the procedure for synchronizing multiple crimson units.

1. Setup

Necessary Equipment

Firmware Setup

  1. Ensure that each crimson is configured with unique IP addresses for MGMT and SFP+ ports. (This may have been configured by Per Vices before shipping the crimson units).

  2. Ensure that crimson has been programmed with the latest firmware from https://github.com/pervices/releases.

Hardware Connections

  1. Connect the crimson power cable to the rear of each crimson unit and to power.

  2. Connect a synchronized external reference to the REF IN SMA of each crimson unit. With the latest firmware, crimson will automatically detect a 5MHz or 10MHz external reference when it boots up. If the external reference frequency changes, crimson must be re-booted. Prefer a 5MHz reference because Crimson uses an internal 5MHz reference to generate a 325MHz clock. A 10MHz reference is also acceptable, but will likely result in greater offset that the calibration will have to correct because of the divide by 2 that is used to provide a 5MHz reference to crimson. Note: many UHD programs instruct the SDR to use an internal reference, which overrides the state that crimson boots up in. If you are using external reference ensure that your UHD program specifies that.

  3. Connect a synchronized PPS to the PPS SMA of each crimson unit. Note that this SMA is a direct connection to the FPGA to ensure high slew rate. 2.5V DC is the maximum voltage that may be applied to this high impedance input.

  4. Connect the MGMT ethernet and SFP+ ports of each crimson such that the host machine may send data to and receive data from each crimson unit.

  5. Power the crimson units on.

  6. Be prepared to connect the SMA cables to the RX and TX SMAs on crimson as directed by the calibration script.

2. Calibration Script

Calibration will use the python script uhd_multicrimson_alignement.py that is installed at /lib/uhd/examples/python. Every time that one of the synchronized crimson units is re-booted, the calibration must be run again.

  1. Run the calibration script with root permissions. This ensures that UHD has the correct permissions to set thread priority and save the data received from crimson. Provide the MGMT IP addresses of the crimson units as arguements to the script. Example: sudo python /lib/uhd/examples/python/uhd_multicrimson_alignement.py 192.168.10.101 192.168.10.102

  2. The script will write the delay on the crimson units to zero, overwriting the effect of any previous calibration run.

  3. The script will instruct the manner to connect SMA cables to the TX and RX ports of the crimson units. Press Enter once the cables are connected.

  4. The script will measure the delay between the crimson units’ TX chains and write compensating delay to one crimson unit.

  5. The script will instruct the manner to connect SMA cables to the TX and RX ports of the crimson units. Press Enter once the cables are connected.

  6. The script will measure the delay between the crimson units’ RX chains and write compensating delay to one crimson unit.

The calibration script can be called with a final arguement to verify that the delays are set. In this case, the script will not write any delay values to crimson. The script will prompt the same connections, and measure the delay. The script will print the delay, which is expected to be zero once the units have been aligned by running the calibration script once. Example: sudo python /lib/uhd/examples/python/uhd_multicrimson_alignement.py 192.168.10.101 192.168.10.102 verify