Skip to content

Configuration

Piotr Jarosik edited this page Sep 27, 2019 · 1 revision

JSON config files

The ARIUS device is configured with JSON files. There are two types of JSON files:

  1. TX/RX scheme definition
  2. Transducer definitions/list

An exemplary top-level structure of the JSON TX/RX scheme definition (not all sections are properly filled!):

{
    "hal": {
        "transducer": "AL2442",
        "speedOfSound": 1540.0,
        "samplingFrequency": 50000000.0,
        "coupling": "AC",
        "transmitWaveform": [
            ...
        ],
        "TGCWaveform": [
            ...
        ],
        "frame": [
            ...
        ]
    }
}

As one can notice, there are many properties that must be set in order to configure the USG hardware for action. To begin with, there is a connector property where the User has to specify the name of the transducer used by the USG hardware. This name will be used by the software in order to gather the USG head parameters, which are held in separate JSON Transducer definition/file (transducers.json). The last two fields speedOfSound and samplingFrequency represent the signal properties and are used in all of the acquisitions programmed in the frame section.

JSON TX/RX config

JSON TX/RX scheme definition file defines a complete set of parameters required for transmission and acquisition process in a single experiment (signal acquisition).

Transmit Power

The User can set the transmit voltage level to operate with. The range 0.0 to 1.0, where max level 1.0 corresponds to the TX voltage Vpp=180V.

"transmitPower":
{
    "HV0": 1.0
}

Transmit Waveform

The transmitWaveform section holds the array of definitions of the possible waveforms of transmission:

"transmitWaveform":
[
    {
        "type": "parametric",
        "parameters": {
            "A": 15,
            "B": 1,
            "C": 15,
            "D": 2,
        }
    "clock": 125000000
    }
]

IMPORTANT: Currently, only a single transmit waveform can be defined!

TGC Waveform

Time-Gain Compensation (TGC) function is implemented in the analog front-end circuitry. The user can define many waveforms of the TGC function. They are all stored in the array of the TGCWaveform property in the JSON configuration file.

An example TGC waveform definition by discrete points:

"TGCWaveform":
[
    {
        "type": "points",
        "points": [
            {
                "x": 1,
                "y": 0
            },
            {
                "x": 55,
                "y": 0.5
            },
            {
                "x": 55,
                "y": 0.5
            },
        ]
    }
]

An example TGC waveform definition by a linear function:

"TGCWaveform":
[
    {
        "type": "linear",
        "startSample": 0
        "endSample": 200
        "startValue": 0.0
        "increment": 0.004
    }
]

The TGC waveforms can be modeled in one of two ways using the type property:

  • points - as a piecewise linear function that values are interpolated from the points given in the array in the points property. Each point has its position x, represented as index of the sample (0-), and value y (0.0-1.0).
  • linear - as a monotonic linear function that starts from the startSample (initialized with the startValue) and ends in the endSample. The TGC values are incremented with each sample by the increment value.

IMPORTANT: Only the fields associated with the chosen type of the TGC waveform are necessary for proper configuration. Fields from other types will be ignored!

IMPORTANT: Currently, only one TGC waveform can be defined!

Frame

The data, that is returned to the user in the callback function, is described by the frame property of the JSON configuration file. This property is an array of frames definitions:

"frame":
[
    {
        "id": 0,
        "startSample": 0,
        "endSample": 4096,
        "transmit": {
            ...
        },
        "timeToNextEvent": 0.002,
        "softTrigger": 0,

        "event":
        [
            ...
        ]
    }
]

Each frame is distinguished by its Id field, which is an index that starts with 0. Moreover, this field also defines the order of the transmissions. The User can define the range (in samples) of the received RF signals - i.e. only the samples between the startSample and the endSample of the acquired signal will be transferred to memory. The parameter timeToNextEvent specifies a delay (in seconds) between subsequent events defined in this Frame. Finally, the softTrigger property is used in order to start TX/RX process on demand (when set to 1) or in continuous mode (default value 0).

IMPORTANT: The following properties: transmit, receive, timeToNextEvent can be overwritten in the descriptions of the individual events associated with that frame!

IMPORTANT: For the sake of acquisition performance it is recommended to use at least two frames (even with the same configuration). With two frames the hardware can simultaneously collect the data of one frame and deliver to the User the data from the other ones (so-called ping-pong buffering)!

Transmit

The transmit property describes the TX parameters for the individual events. There are two coordinate modes available:

  • Polar coordinates (e.g. for Phased-Array):
"transmit":
{
    "aperture": 192,
    "origin": 0,
    "type": "polar",
    "focus": {
        "r": 1000.0,
        "theta": 0.0,
    },
    "center": {
        "r": 0.0,
        "theta": 0.0,
    }
}
  • Cartesian coordinates (e.g. for Linear-Array):
"transmit":
{
    "aperture": 192,
    "origin": 0,
    "type": "cartesian",
    "focus": {
        "x": 0.0,
        "y": 0.0,
    },
    "center": {
        "x": 0.0,
        "y": 0.0,
    }
}

The user can define the size of the active TX aperture (aperture) used in the transmission (can be smaller than the actual physical number of the probe elements). Moreover, the defined active (virtual) TX aperture can be positioned in the actual physical aperture by defining its beginning represented by the offset from the physical first element of the probe (origin). Furthermore, the User can steer and focus the transmitted wave by setting the focus and center properties. The center defines the origin of the wave and the focus its destination. Both of these parameters are relative to the center of the defined virtual aperture. They can be represented in one of two available coordinate systems:

  • polar - where: r property defines the distance (in meters) and the theta property is the deviation angle (in degrees);
  • cartesian - where: x and y properties are point coordinates (in meters).

Event

The event property is the array of transmissions that are collected in a single frame. Each event inherits frame properties: transmit, timeToNextEvent and softTrigger. The inherited properties can be overwritten for individuals events, such as in the listing below:

"event":
[
    {
        "transmit":
        {
            "focus":
            {
                "theta": -1
            }
        }
    },
    {
        "transmit":
        {
            "focus":
            {
                "theta": 0
            }
        }
    },
    {
        "transmit":
        {
            "focus":
            {
                "theta": 0
            }
            "timeToNextEvent": 0.002,
            "softTrigger": 1
        }
    }    
]

Moreover, there is an option that can be used in order to create multiple events within one definition. The listing below presents all the possible variants:

"event":
[
    {
        "transmit":
        {
            "originRange": "0:1:192",
            "focus / center":
            {
                "thetaRange / xRange": "-10.0:1.0:10.0",
                "rRange / yRange": "-10.0:1.0:10.0"
            }
        }
    }
]

The presented notation can be identified as a 'for loop', where: the first value is a starting value, the middle one is an incrementation, and the last one is an end of the loop value. A combination of constant values and ranges in single event definition are allowed. What is more, there can be more than one range specified. However, the loops must have the same size. Finally, individual events can be intertwined with sets of events.

JSON Transducers definition

A separate JSON system file transducers.json lists all the available ultrasound probes with their names and geometry parameters. The file is accessible to the User and must be augmented with the definition of any new/custom probes that are going to be used with the Platform.

An exemplary structure of the JSON Transducer definition/list:

"transducers": [
    {
        "name": "AL2442",
        "numElements": 192,
        "pitch": 0.00021
    },
    {
        "name": "AL2442_128ch",
        "numElements": 128,
        "pitch": 0.00021
    },