Overlapped Measurements and Named Results

NI-RFmx TDSCDMA 2.5 Help

Edition Date: June 2018

Part Number: 375760F-01

»View Product Info
Download Help (Windows Only)

Many automated test applications require multiple independent measurements on a single instrument. Such applications include amplifier frequency/power sweeps or multi-DUT wireless device tests. Often engineers implement these applications by serially sequencing measurements. However, with NI-RFmx, you can perform multiple measurements overlapped in time with a feature called overlapped measurements. This feature can be used when measurements in a sequence are independent of previous results. The measurements must be performed on separate acquisitions because they require different hardware configurations, such as a different frequency or reference level. Overlapped measurements maximize utilization of the RF hardware and enable parallel processing of the measurements, thus vastly reducing the overall test time for a sequence of multiple measurements. In the following conceptual example, two overlapped ACP measurements are performed at two different reference levels. This simple program completes the following operations:

  • Configures the reference level for the first ACP measurement.
  • Initiates the first ACP acquisition.
  • Waits for the ACP acquisition to be complete and the PXI RF module to be released. NI-RFmx spawns a thread for ACP analysis in the background without delaying the next measurement.
  • Initiates the second ACP acquisition before the first ACP measurement analysis is complete.
  • Waits for the second ACP acquisition to be complete before the first ACP measurement analysis is complete.
  • Fetches both the measurement results when their respective analysis threads are complete.

RFmxSpecAn_CfgReferenceLevel(instrumentHandle, "", referenceLevel1);
RFmxSpecAn_Initiate(instrumentHandle, "", "ACP_Results_1");
RFmxSpecAn_WaitForAcquisitionComplete(instrumentHandle, timeout);
RFmxSpecAn_CfgReferenceLevel(instrumentHandle, "", referenceLevel2s);
RFmxSpecAn_Initiate(instrumentHandle, "", "ACP_Results_2");
RFmxSpecAn_WaitForAcquisitionComplete(instrumentHandle, timeout);
RFmxSpecAn_BuildSignalString("", "ACP_Results_1", SELECTOR_STRING_LEN, resultString1);
// resultString1 = “result::ACP_Results_1”
RFmxSpecAn_ACPFetchOffsetMeasurementArray(instrumentHandle, resultString1, timeout, lowerRelativePowerArr1,
                                          upperRelativePowerArr1, lowerAbsolutePowerArr1,
                                          upperAbsolutePowerArr1, arraySize1, NULL);
RFmxSpecAn_BuildSignalString("", "ACP_Results_2", SELECTOR_STRING_LEN, resultString2);
// resultString2 = “result::ACP_Results_2”
RFmxSpecAn_ACPFetchOffsetMeasurementArray(instrumentHandle, resultString2, timeout, lowerRelativePowerArr2,
                                          upperRelativePowerArr2, lowerAbsolutePowerArr2,
                                          upperAbsolutePowerArr2, arraySize2, NULL);

The key feature that enables overlapped measurements in NI-RFmx is a feature called Named Results. In the previous example, both the first and second ACP measurements are initiated and tagged with a name. The RFmxSpecAn_Initiate function is called first with the ACP measurement enabled and the result name as ACP_Results_1, and then it is called again with the second ACP measurement enabled and the result name as ACP_Results_2. The results of these two measurements are stored independently, and can be fetched in any sequence after the measurements are complete using the same result names passed to the initiate function. You can create the result name passed to the fetch function using a set of Build String Utility functions provided by NI-RFmx. In the above example, RFmxSpecAn_BuildSignalString function is used to create a result string “result::ACP_Results_1” and passed to the Fetch function.

Measurement results are referenced by the result name, measurement type, and the signal instance.  If no result name is specified, the default result name (“”) is used.

The following characters are not allowed in signal name and result name: ()*+,-./{} !"#$%&':;<=>?@[]\^`|~ and any non-printable character.

When using overlapped measurements, you must specify the result name in Initiate and then use that name to fetch the results. If you reuse the same result name, the previous named results with that name are overwritten. This behavior applies to the default result name (“”) as well. When you initiate a measurement, RFmx clears out all previous results with the same result name passed to the initiate VI. This clearing process keeps you from accidentally fetching a result from a previous initiate. Notice that only the results with the same name in the default or named signal configuration passed to Initiate are cleared. For example, if you call initiate with selectorString set to “signal:MySignal” and resultName set to “MyResult”, Initiate clears all results named “MyResult” that were previously initiated with the signal “MySignal”.

As mentioned, NI-RFmx provides a set of Build String Utility functions to create named result strings. The following code snippet shows RFmxSpecAn_BuildOffsetString2 function to create a result string and fetch result for offset 1.

 RFmxSpecAn_BuildSignalString("", "ACP_Result", SELECTOR_STRING_LEN, selectorString);
// selectorString = “result::ACP_Result”
RFmxSpecAn_Initiate(instrumentHandle, selectorString, "");
RFmxSpecAn_BuildOffsetString2("",selectorString, 1, SELECTOR_STRING_LEN, offsetResultString);
//offsetResultString = “result::ACP_Result/offset1”
RFmxSpecAn_ACPFetchOffsetMeasurement(instrumentHandle, offsetResultString, timeout,
                                     &offCh1LowerRelativePower,& offCh1UpperRelativePower,
                                     &offCh1LowerAbsolutePower, &offCh1UpperAbsolutePower);

The benefit of the overlapped measurements technique improves with more measurements in your sequence. In fact, there is no limit on the number of measurements you can overlap. However, as the number of named results increases, consider deleting the measurement results that have been fetched to conserve process memory space. The named results can be deleted using the RFmxSpecAn_ClearNamedResult function. After a named result is cleared all the measurement results for that named result are erased from the process memory of your application. If all named results need to be cleared from the memory RFmxSpecAn_ClearAllNamedResults function can be called.

Refer to the RFmxSpecAnTxpMultipleResultNames example application installed by NI-RFmx SpecAn, which conducts multiple TxP measurements at different frequencies and clears the named result for TxP measurement once it has been fetched. The example can be found in the following location:
 Users\Public\Documents\National Instruments\RFmx\SpecAn\Examples\C\Advanced\RFmxSpecAnTxpMultipleResultNames

The following figure demonstrates the sequence of events for the mentioned TxP measurement example.

The actual time it takes to acquire the samples and analyze the TxP measurements may vary based on your system performance and measurement settings; however, the sequence of events such as configure, acquire, and so on, will remain the same. NI-RFmx automatically starts the analysis or processing of the measurement immediately after the samples for the measurement are acquired. After the processing of the measurement is complete, you can fetch the measurement results.

Depending on the computational complexity of the measurement, overlapped measurements technique can have a huge impact on overall test time. Measurement parallelism is a known technique to reduce test time. NI-RFmx makes reducing test time easier by managing threads and results so that you can develop and realize the benefits of PXI faster.

WAS THIS ARTICLE HELPFUL?

Not Helpful