SerDes Operation and Usage

Introduction

A Serializer / Deserializer (SerDes) in usage with onsemi sensors are devices that enable remote connection over a coax cable. The SerDes devices are in pairs, with the Serializer connected to the sensor headboard and the Deserializer connected to a Demo3 and the coax cable between them. The DevSuite Quick Start Guide has additional information on these types of connections.

The remainder of this document will describe the purpose the DevWareX built-in SerDes settings, how the override files work, the location of override examples and how to apply them, how to create a CDAT file to access SerDes registers via the DevWareX Register dialog.

DevWareX Built-In Settings

DevWareX has built-in SerDes settings to enable reading of a sensor’s registers for DevWareX Auto-Detect function to work. DevWareX will auto-detect for known SerDes, and then execute the built-in settings for the detected SerDes pair.

These built-in settings are meant mainly for register read/write, but may also sometimes work for data streaming. In most cases, an INI file preset needs to be created with the correct set of sensor and SerDes settings for efficient data streaming.

The following vendors' SerDes have built-in settings:

  • Maxim: 96706, 9296, 96716, 96792A, 96793

  • Sony: CXD4960

  • TI: 914, 934, 954, 960, 973

  • Valens: VA7044

Overriding Built-in SerDes Settings

There may be conditions in which the built-in settings do not work as expected. To override those settings, a vendor-specific INI file is copied to the base installation folder (usually “\aptina imaging”) - DevWareX will run the Preset matching the detected SerDes.

When DevWareX starts (from either a Detect or a manual-load of an SDAT file) and auto-detects the SerDes deserializer, it will check for the presence of the vendor-specific INI file in the base installation folder and run the Preset associated with the specific detected SerDes pair. To use this feature, do the following:

  1. Navigate to the vendor-specific sub-folder in “\aptina imaging\apps_data\Serdes”.

  2. Copy the INI file to the base installation folder and edit the settings for the Preset that matches the Deserializer you have connected.

    1. For example, for the Maxim 9296, copy and edit the “maxim.ini” file Preset “[MAX-9296]”.

  3. To confirm that your settings were executed, enable the SHIP log via the “Options” dialog and run “Export SHIP Log to filter on the SerDes I2C base addresses. Instructions on that can be found in the DevWareX New Features document under “Export SHIP Log”.

  4. If you don't want DevWareX to perform any settings for a given device, add a single "DELAY=1" to the preset so it isn't empty.

  5. To prevent DevWare from overwriting the I2C aliasing add "MODE= LOCK_SLAVE_IDS, 1" to the preset.

Read/Write of SerDes Registers

There are several methods of reading and writing SerDes Registers.

Via regpoke.EXE

This stand-alone application can be run by entering “regpoke.exe in the Windows search bar. Usage can be found under “Help”. The Address and Value sizes (8 or 16 bit) can be found in the vendor-specific INI file.

Via the DevWareX “Register All Access”

Start DevWareX and Detect or load the sensor SDAT file. Under “View”, select “Register All Access (Peek & Poke)”. This will start the dialog as a Tab under the Register dialog. Use the “Any Device Register” section and enter the data in the much the same manner as regpoke.exe.

Via a CDAT file

This method takes the most effort, but has the advantage of being able to define the SerDes registers by name and then access them via the DevWareX Register dialog. To use this method, do the following:

  1. Navigate to the vendor-specific sub-folder in “\aptina imaging\apps_data\Serdes”.

  2. Copy “SERDES_template.cdat” to the “board_data” folder under the installation folder.

    1. This file can be renamed, but the starting portion of “SERDES_” must be maintained as-is.

  3. Edit that .cdat file as described in the header and by following the examples for registers and bit-fields.

  4. Start DevWareX and Detect or load the sensor SDAT file.

  5. Enable the Register dialog, use the “Page:” pull-down to select the “CHIPNAME” as defined in the CDAT.

Debug SerDes Issues

The SerDes devices will lock-up if the image stream is too fast for the SerDes can handle. This will show up as a “Comm:Failure” in the Register dialog:

 

image-20240521-202432.png
Register Dialog

Do the following to first see if the SerDes have I2C communications.

  1. Exit DevWareX. Power cycle the Demo3 / SERDES sensor by unplug/plug in the USB cable.

  2. Run DevWareX but only do a Detect - do NOT run any preset, do not select Play.

  3. Do you still see Comm:Failure?

If you see “Comm:Working” in Green that means working I2C.

  • If you still see Comm:Failure then remove the SerDes and run the MARs module by itself.

  • If that doesn’t stream, the issue is the MARs module but issues with the SerDes and/or Coax cable.

Assuming you have working I2C, look at register 0x3030 / PLL_MULTIPLIER (usually that address and/or name). Edit the INI file for the preset you’re running and device the value it is set to by 50%.

Run the preset - if it streams, then the sensor was originally sending data too fast for the SerDes to handle.

  • If you get Comm:Failure again, lower the PLL_MULTIPLIER even more.

  • If you don’t get Comm:Failure but it doesn’t stream, then the SerDes programming is probably wrong.