Texo Parameters

Texo has three types of parameters, transmit, receive, and data control. The API listing documents these parameters briefly, however this page will offer more insights on how to use them and some of their nuances.

Global Parameters

 * texoSetPower(int overallPower, int MaxPositivePower, int maxNegativePower)
 * Sets the power values for the sequence. All values ranges from 0 to 15.

Generic Parameters
The following parameters are generic to both transmit and receive and deserve some detailed information:
 * centerElement
 * The center element parameter determines where the firing and/or receive will occur on the transducer. Most probes have 64 or 128 elements, and centerElement can be any value in between. Element interpolation is a feature that is automatically programmed into Ultrasonix software, so that element centers can be specified in 1/10th of an element. Interpolation is done through moderate alterations to the time delays to steer the transmit beams and receive delays by small increments. Because the aperture of the transmit or receive must be an even number, most centerElement specifications should interpolate to a half element. For instance if element 64 is desired as the center, 63.5 (parameter set as 635) should be specified.

 


 * aperture
 * The aperture parameter specified how many elements are in either the transmit firing and/or receive beamforming. For transmit, up to 128 elements can be in the aperture, where more elements means greater energy output. A single element can be setup to transmit if the aperture is set equal to 0. Setting to 1 would be logical, however because of the even aperture requirement, 1 is handled differently internally. For receive, the Sonix RP can have up to 32 receive elements, and the SonixTOUCH, up to 64. The channel masking parameter, as discussed below, also plays an important role in acquiring data with specific aperture sizes and elements.
 * angle
 * The angle is in 1/1000th of a degree, and steers the transmit beam by altering the time delays on the transmit firings, and for receive will alter the time delays in the beamforming process. Steering is useful for phased array transducers, for steering and compounding applications, and for aligning transmit and receive beams when the center elements are different for a single scanline.
 * speedOfSound
 * The speed of sound can be defined so that the time delays are altered to reflect the material or tissue that the wave is propagating through. This can be useful to try and optimize results when analyzing a received signal.

Additional Notes:
 * When the centerElement is near an edge, and the aperture goes beyond the transducer element boundary, the aperture will be automatically cut off, however focusing will still occur with just part of the aperture missing.

Transmit Parameters
The transmit parameters are set for each scanline that is programmed in Texo, there is the flexibility to create different parameters for each line, or they can all use the same properties.


 * focusDistance
 * The focus distance specifies at what point to focus the transmit beam at. This is accomplished by the software calculating the proper time delays based on the aperture requested. A focus distance of large distance, for example 30cm can be set in order to create a plane, or near-plane wave. Its value is specified in microns.
 * frequency
 * Specified in Hz, the frequency will emit a pulse at a specific frequency. More information regarding transmit pulses can be found here. Note that each transducer will have a specific bandwidth that it operates best at, as well as a central resonating frequency, however with Texo, one has the ability to try any frequency value.
 * pulseShape
 * The pulse shape alters the transmit pulse as a function of time at the frequency specified. Three values can be set in the string for defining a pulse: '0' for off, '+' for positive excitation, and '-' for negative excitation. By combining strings of '+' and '-', and using the proper transmit frequency, one can embed frequencies within a single transmission.
 * useManualDelays
 * If set to false, then the focusDistance parameter shall be used to calculate the time delays, if set to true, then it is up to the user to provide an array of time delay values as described in the following parameter.
 * manualDelays
 * This array can be populated to set a delay for each element in 25ns values if useManualDelays is set to true. The number of delay values (maximum of 128), should reflect the aperture setting, and is always 0 based (i.e. for an aperture of 64, populate array indicies 0 to 63).
 * tableIndex
 * In order to gain the ability to add more scanlines to a custom sequence, transmit definitions can be re-used when calling addTransmit. The order in which these are added determines the index to reference, where the first call to addTransmit refers to index of 0. If set to -1, then a new transmit definition is automatically added.
 * useDeadElements
 * If set to false, then every element is deemed to be working within the aperture, if set to false, then the following parameter can be populated to emulate dead elements within the transducer, and they will not be part of the firing sequence.
 * deadElements
 * When useDeadElements is set to true, this array can be populated with 1's and 0's, where 1 specifies a working element and 0 specifies a dead element. To be implemented properly, the entire array should be populated with valid values.
 * sync
 * Enables 1 or disables 0 the trigger output for each scan line. This parameter combined with line trigger allows the user to selectively turn the trigger on/off for each individual transmit independently.

Analog Front End (AFE)
Analog front end parameters are set in the VCA

VCAInfo vcaInfo; vcaInfo.amplification = 32; vcaInfo.activetermination = 4; vcaInfo.inclamp = 1600; vcaInfo.LPF = 1; vcaInfo.lnaIntegratorEnable = 1; vcaInfo.pgaIntegratorEnable = 1; vcaInfo.hpfDigitalEnable = 0; vcaInfo.hp fDigitalValue = 10;

where


 * PGA is Programmable gain amplifier
 * LNA is low noise amplifier
 * AAF/LPF is Antialiasing filter
 * Digital HPF to avoid RF saturation

These parameter affect the gain and frequency response of your RF signal. Depending on your hardware and transducer, you need to optimize these parameters to get the best range for your RF signal.

Receive Parameters
The receive parameters are set for each scanline that is programmed in Texo, there is the flexibility to create different parameters for each line, or they can all use the same properties.


 * acquisitionDepth
 * Specified in microns, how deep to acquire data. This will also determine the line duration for the scanline, unless overridden by the custom line duration.
 * saveDelay
 * Data can stored after a certain amount of time. The delay is in microns, and will not delay the acquisition past the depth specified. For example, if delay is 1cm and depth is 4cm, only 1cm to 4cm will be acquired for a total of 3cm, the first cm will be discarded.
 * channelMask
 * An important parameter for acquiring pre-beamformed data or shutting off elements during receive. The mask is split into two 32 bit words, where on the Sonix RP, only the first word is used since it has only 32 channels, and the SonixTOUCH will use all 64 bits. Setting all bits to 0, except for one specific index to 1, will result in a pre-beamformed data capture. The mask is centered around the centerElement that is set in the receive parameters.

 


 * applyFocus
 * If set to true, then dynamic receive beamforming is implemented. If set to false, then all channels specified in the aperture will have no delay applied.
 * useManualDelays
 * If set to false, then dynamic beamforming time delays will be calculated internally based on the applyFocus setting. If set to true, then it is up to the user to provide an array of time delay values as described in the following parameter. For now, only one delay can be programmed, however to make dynamic receive beamforming, a very large set of arrays (perhaps a pointer) should be passable in the future.
 * manualDelays
 * This array can be populated to set a delay for each element in 25ns values if useManualDelays is set to true. The number of delay values (maximum of 64 on SonixTOUCH and 32 on Sonix RP), should reflect the aperture setting, and is always 0 based (i.e. for an aperture of 16, populate array indicies 0 to 16).
 * customLineDuration
 * Programmed in ns, and if set to 0 no effect on the receive, however if non-zero then the line duration will be extended to program a custom PRF that is different from the pre-calculated duration when the acquisition depth is set. Note that this duration should be longer than the depth of acquisition duration, otherwise no effect will take place.

 


 * lgcValue
 * A digital gain value that can be applied to the entire scanline.
 * tgcSel
 * The index into the table in which TGC curves are stored. Up to 10 curves can be stored when calling an addTGC function.
 * tableIndex
 * In order to gain the ability to add more scanlines to a custom sequence, receive definitions can be re-used when calling addReceive. The order in which these are added determines the index to reference, where the first call to addReceive refers to index of 0. If set to -1, then a new receive definition is automatically added.
 * decimation
 * The decimation applied to the RF or B data being captured. Since the sampling is at 40MHz, setting to 0 will have effect, where 1 will result in 20MHz sampled data, 2 will result in 10MHz, etc. Note that for most cases the Sonix RP can only transfer back 20MHz sampled data, due to PCI card restrictions, and the SonixTOUCH can typically handle up to 15cm of 40MHz sampled data.
 * numChannels
 * Since the SonixTOUCH can technically have a variable number of channels (32 or 64), this should be set to properly reflect the hardware configuration.
 * rxAprCrv
 * Programming this curvature allows you to have control over the number of element in the RX aperture as a function of depth. Using this parameter a fixed F-number can be used for RX beamforming. This curvature can be programmed as follows

rxPrms.rxAprCrv.top = 10; // top point (e.g. 10% of the aperture) rxPrms.rxAprCrv.mid = 50; // mid point (e.g. 50% of the aperture) rxPrms.rxAprCrv.btm = 100; // bottom point (e.g. 100% of the aperture) rxPrms.rxAprCrv.vmid = 50; // location of the mid point (e.g. in the center)

This is the same as adjusting your Rx Apr curve in the Exam software.