preambleDetector
Description
Use the preambleDetector application object to configure the specified
software-defined radio (SDR) as a preamble detector. You can use the preamble detector to
detect and capture a signal of interest from the air using a correlation with a known preamble
sequence. The object specifies the preamble sequence and the thresholding and triggering
parameters. For more details on the internal architecture of the preamble detector, see Algorithms.
This diagram shows a conceptual overview of detecting and capturing radio signals in Wireless Testbench™ using a radio that you configure with this application object. The object also enables you to send a test waveform for detection and capture. The onboard data buffering ensures contiguous data capture and transmit.
Creation
Description
creates a preamble detector application object for the specified radio,
pd = preambleDetector(radio)radio.
Note
The object requires exclusive access to radio hardware resources. Before creating this object, clear any existing Wireless Testbench application object associated with the specified radio from the workspace.
sets properties using one or more name-value arguments. For example,
pd = preambleDetector(radio,PropertyName=Value)CaptureDataType="double" sets the data type of the returned captured
signal to double.
Input Arguments
Radio setup configuration, specified as one of these options:
String scalar — The name of a radio setup configuration you saved using the Radio Setup wizard. For example,
"MyRadio".To list all saved radio setup configurations, call the
radioConfigurationsfunction with no input arguments.Radio object — A radio object that corresponds to a radio setup configuration you saved using the Radio Setup wizard (since R2025a).
To create a radio object for a radio setup configuration with the name
"MyRadio", callradio = radioConfigurations("MyRadio").Use this option when you want to use synchronization features. You can refer to radio object properties to get information about the radio setup configuration that the object corresponds to, such as the model number of the radio, the radio IP address, and the synchronization options. Additionally, you can:
Check the lock status of the reference clock, local oscillators, or GPS disciplined oscillator (GPSDO) on the radio using the
referenceLockedStatus,loLockedStatus, andgpsLockedStatusfunctions respectively.Get the current radio time using the
getRadioTimefunction.Synchronize multiple devices by setting the radio time using the
getTimeLastPPSandsetTimeNextPPSfunctions.Get time and GPS information from the radio using the
getGPSTimeandgetGPSNMEAfunctions.Schedule synchronized property updates on your
preambleDetectorobject using thesetCommandTime,getCommandTime, andclearCommandTimefunctions.
For more information, see Time-Synchronize Operations.
For a list of supported radios, see Supported Radio Devices.
Properties
Capture center frequency in Hz, specified as a positive numeric scalar. The valid center frequency range depends on the radio device.
| Radio Device | Center Frequency |
|---|---|
USRP™ E320 | 70 MHz to 6 GHz |
USRP N300 | 1 MHz to 6 GHz |
USRP N310 | 1 MHz to 6 GHz |
USRP N320 | 1 MHz to 6 GHz |
USRP N321 | 1 MHz to 6 GHz |
USRP X300 | 10 MHz to 6 GHz |
USRP X310 | 10 MHz to 6 GHz |
USRP X410 | 1 MHz to 8 GHz |
Data Types: double
Capture radio gain in dB, specified as a positive numeric scalar. The valid gain range depends on the radio device.
| Radio Device | Capture Radio Gain |
|---|---|
USRP E320 | 0 dB to 76 dB |
USRP N300 | 0 dB to 75 dB |
USRP N310 | 0 dB to 75 dB |
USRP N320 | 0 dB to 60 dB |
USRP N321 | 0 dB to 60 dB |
USRP X300 + UBX 160 | 0 dB to 31.5 dB |
USRP X300 + TwinRX | 0 dB to 93 dB |
USRP X310 + UBX 160 | 0 dB to 31.5 dB |
USRP X310 + TwinRX | 0 dB to 93 dB |
USRP X410 | 0 dB to 60 dB |
Data Types: double
Capture radio antenna, specified as a string scalar. Use this table to identify a supported radio antenna port on the radio device and the corresponding string constant that you can specify for this property. The default value depends on the radio.
| Radio Device | Supported Antenna Port | String Scalar |
|---|---|---|
USRP E320 | RFA channel: RX2 port |
|
RFB channel: RX2 port |
| |
USRP N300 | RF0 channel: RX2 port | "RF0:RX2" (default) |
| RF1 channel: RX2 port | "RF1:RX2" | |
USRP N310 | RF0 channel: RX2 port | "RF0:RX2" (default) |
| RF1 channel: RX2 port | "RF1:RX2" | |
| RF2 channel: RX2 port | "RF2:RX2"
| |
| RF3 channel: RX2 port | "RF3:RX2" | |
USRP N320 | RF0 channel: RX2 port | "RF0:RX2" (default) |
| RF1 channel: RX2 port | "RF1:RX2" | |
USRP N321 | RF0 channel: RX2 port | "RF0:RX2" (default) |
| RF0 channel: RX2 port | "RF1:RX2" | |
USRP X300 + UBX 160 | RFA channel: RX2 port |
|
RFB channel: RX2 port |
| |
USRP X300 + TwinRX | RFA channel: TX/RX port |
|
RFA channel: RX2 port |
| |
RFB channel: TX/RX port |
| |
RFB channel: RX2 port |
| |
USRP X310 + UBX 160 | RFA channel: RX2 port |
|
RFB channel: RX2 port |
| |
USRP X310 + TwinRX | RFA channel: TX/RX port |
|
RFA channel: RX2 port |
| |
RFB channel: TX/RX port |
| |
RFB channel: RX2 port |
| |
USRP X410 | DB0 RF0 channel: RX 1 port |
|
DB0 RF1 channel: RX 1 port |
| |
DB1 RF0 channel: RX 1 port |
| |
DB1 RF1 channel: RX 1 port |
|
Note
When you update this property, the execution time of the next object function call increases by a few seconds.
Data Types: string
Baseband sample rate in Hz, specified as a positive numeric scalar. For more information on how the radio achieves the specified sample rate, see Baseband Sample Rate in NI USRP Radios.
The sample rate depends on the radio device.
| Radio Device | Sample Rate |
|---|---|
USRP E320 |
|
USRP N300 |
|
USRP N310 | |
USRP N320 USRP N321 |
|
USRP X300 USRP X310 |
|
USRP X410 |
|
Note
To update this property, you must stop any ongoing transmission by calling the
stopTransmission function on the application object. When you
update this property, the execution time of the next object function call increases by a few
seconds.
Data Types: double
Data type of the captured data, specified as "int16",
"double", or "single". Use this property to
set the data type of the captured data that the capture object
function returns.
Note
When you update this property, the execution time of the next object function call increases by a few seconds.
Data Types: string
Since R2024a
Unit of capture request timestamp, specified as "datetime" or "sample-clock-cycle". Use this property to set the data type of the timestamp that the capture object function returns.
Data Types: string
Behavior of the capture or
plotThreshold
object functions upon dropped samples, specified as one of these values.
"error"— The object function stops with an error message."warning"— The object function displays a warning message."none"— The object function ignores dropped samples.
Data Types: string
Preamble sequence, specified as a numeric column vector of length between 4 and 1024 and vector elements in the range [–1, 1]. The first object function call validates the preamble length against the maximum preamble length.
You can assign a double, single, or
fi (requires Fixed-Point Designer™) data type to this property. To assign a fixed-point data type, use the
fi (Fixed-Point Designer) object. The fixed-point data type must be signed with
the WordLength property set to 16 and
FractionLength property set to 15.
Note
To update this property, you must stop any ongoing transmission by calling the
stopTransmission function on the application object. When you
update this property, the execution time of the next object function call increases by a few
seconds.
Data Types: double | single | fi
Threshold calculation method to trigger data capture, specified as one of these values.
"adaptive"— The threshold is the scaled signal power. To configure the scaled signal power, set theAdaptiveThresholdGainandAdaptiveThresholdOffsetproperties."fixed"— The threshold is a constant, specified by theFixedThresholdproperty.
For more details, see Internal Architecture of Preamble Detection.
Note
To update this property, you must stop any ongoing transmission by calling the
stopTransmission function on the application object. When you
update this property, the execution time of the next object function call increases by a few
seconds.
Data Types: string
Fixed threshold value, specified as a numeric scalar in the range [0, 4095]. For more details, see Internal Architecture of Preamble Detection.
Dependencies
This property applies only when you set ThresholdMethod to "fixed".
Data Types: double
Adaptive threshold offset to avoid false trigger points, specified as a numeric scalar in the range [0, 2]. For more details, see Internal Architecture of Preamble Detection.
Dependencies
This property applies only when you set ThresholdMethod to "adaptive".
Data Types: double
Adaptive threshold gain value applied to the average input signal power before adaptive threshold calculation, specified as a numeric scalar in the range [0, 64]. For more details, see Internal Architecture of Preamble Detection.
Dependencies
This property applies only when you set ThresholdMethod to "adaptive".
Data Types: double
Trigger point offset, specified as an integer in the range [–4095, 4096]. This value specifies the start of data capture relative to the trigger point. For more details, see Thresholding and Triggering.
Note
To update this property, you must stop any ongoing transmission by calling the
stopTransmission function on the application object. When you
update this property, the execution time of the next object function call increases by a few
seconds.
Data Types: double
Object Functions
capture | Capture signal of interest from the air upon detection |
plotThreshold | Plot preamble detection signals for triggering |
transmit | Transmit waveform using preamble or energy detector |
stopTransmission | Stop transmission from preamble or energy detector |
Examples
Define a preamble sequence with good correlation properties. For example, generate and normalize a Zadoff-Chu sequence of length 137.
seq = zadoffChuSeq(38,137); preamble = seq/norm(seq,2);
Create and configure a preamble detector object, specifying a radio setup configuration previously saved in the Radio Setup wizard. Set the sample rate to 10.24 MHz and the center frequency to 2.2 GHz.
pd = preambleDetector("MyRadio")pd =
preambleDetector with properties:
Antennas: "RF0:RX2"
CenterFrequency: 2.4000e+09
SampleRate: 250000000
RadioGain: 10
Preamble: [16×1 double]
CaptureDataType: "int16"
TriggerOffset: 0
DroppedSamplesAction: "error"
ThresholdMethod: "adaptive"
TimestampUnit: "datetime"
AdaptiveThresholdOffset: 0
AdaptiveThresholdGain: 0
pd.SampleRate = 10.24e6;
pd.CenterFrequency = 2.2e9;
pd.CaptureDataType = "double";Specify the preamble.
pd.Preamble = preamble;
Set the trigger offset to a negative value to capture 500 samples before the trigger point.
pd.TriggerOffset = -500;
Capture 10 ms of data with a timeout of 1 s.
[data,timestamp,droppedSamples,status] = capture(pd,milliseconds(10),seconds(1));
Define a preamble sequence with good correlation properties. For example, generate and normalize a Zadoff-Chu sequence of length 137.
seq = zadoffChuSeq(38,137); preamble = seq/norm(seq,2);
Create and configure a preamble detector object, specifying a radio setup configuration previously saved in the Radio Setup wizard. Set the sample rate to 10.24 MHz and the center frequency to 2.2 GHz.
pd = preambleDetector("MyRadio",SampleRate=10.24e6,CenterFrequency=2.2e9)pd =
preambleDetector with properties:
Antennas: "RF0:RX2"
CenterFrequency: 2.2000e+09
SampleRate: 10240000
RadioGain: 10
Preamble: [16×1 double]
CaptureDataType: "int16"
TriggerOffset: 0
DroppedSamplesAction: "error"
ThresholdMethod: "adaptive"
TimestampUnit: "datetime"
AdaptiveThresholdOffset: 0
AdaptiveThresholdGain: 0
Specify the preamble.
pd.Preamble = preamble;
Capture ten consecutive signals with the specified preamble with a capture length of 5 ms and a timeout of 2 s.
[data,timestamp,droppedSamples,status] = capture(pd,milliseconds(5),seconds(2),"NumCaptures",10);Tips
You
cannot use save and load to store and reload
Wireless Testbench objects. Instead, you can
re-create the object with these steps:
Write code to create a
preambleDetectorobject with a saved radio setup configurationradioand set the properties.Save the code to a script.
Run the script in a new MATLAB® session with the same saved radio setup configuration.
Algorithms
This diagram shows a conceptual overview of triggered capture based on preamble detection. The input is an RF signal received from the RF board of the radio.
The Programmable FIR filter correlates the input signal with a known preamble sequence. To specify the preamble sequence, use the
Preambleproperty.The Threshold calculation component provides the threshold for the trigger point generation. For more information on how to adjust the threshold, see Thresholding and Triggering.
The Capture controller component controls the triggered capture.
The Comparator component generates the trigger point, which is the first data sample for which the correlator output power is greater than the threshold.
The Data packaging component starts the data capture at the trigger point. To adjust the start of the data capture relative to the trigger point, use the
TriggerOffsetproperty.
The trigger point is the first data sample for which the correlator output power is greater than the threshold. To calibrate the thresholding and triggering operation:
Adjust the gain on the RF signal by using the
RadioGainproperty.Adjust the threshold. You can specify an adaptive threshold or a fixed threshold.
For adaptive threshold, set the
ThresholdMethodproperty to"adaptive", then use theAdaptiveThresholdGainproperty to set the adaptive threshold gain value. To avoid false triggers, adjust theAdaptiveThresholdOffsetproperty.For fixed threshold, set the
ThresholdMethodproperty to"fixed", then use theFixedThresholdproperty to set the fixed threshold value.
Call the
plotThresholdobject function to display and analyze the correlator output power, threshold, and corresponding trigger points.
By default, data capture stars at the trigger point. To adjust the start of the data
capture relative to the trigger point, use the TriggerOffset
property.
For example, this figure shows a scenario in which the trigger offset is 0. Therefore, data capture starts at the trigger point.
In this second scenario, the trigger point is the same, but the trigger offset is –9. Therefore, data capture starts at the specified trigger offset.
For an example of how to calibrate the thresholding and triggering operation, see Triggered Capture Using Preamble Detection.
Version History
Introduced in R2022aYou can now use a radio object as the radio input argument when you
create a preambleDetector object.
The capture object function can now capture multiple consecutive signals with a preambleDetector object. Set the TimestampUnit property to "sample-clock-cycle" to return the capture function output argument timestamp as an integer number of sample clock cycles.
The valid range of the TriggerOffset property has changed. The trigger offset can now be an
integer in the range [–4095, 4096]. In previous releases, the valid range was
[-3096,4096].
The valid length of the preamble sequence specified by the
Preambleproperty has changed. The preamble sequence now must be a vector of length between 4 and 1024. In previous releases, the maximum sequence length depends on the master clock rate that the object automatically selects for the radio based on the sample rate.The vector elements of the preamble sequence are now in the range [–1, 1]. In previous releases, you cannot set the vector elements of the preamble sequence to
1.
See Also
Functions
Objects
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)