使用前导探测触发捕获
本例展示了如何使用软件定义无线电(SDR)使用前导探测从空中捕获数据。该示例还展示了如何使用同一无线电的传输功能来循环返回测试波形。
简介
该示例演示了这些步骤。
生成包含序言的波形。
配置前音探测器,检测前音序列。
使用
plotThreshold
函数用于校准固定或自适应阈值并捕获数据。探索触发偏移。
设置无线电
调用radioConfigurations
函数。该函数返回您使用无线电设置向导保存的所有可用无线电设置配置。有关更多信息,请参见连接和设置NI USRP无线电.
savedRadioConfigurations = radioConfigurations;
要使用保存的无线电设置配置名称更新下拉菜单,请单击更新.然后选择本例中要使用的收音机。
savedRadioConfigurationNames = [string({savedRadioConfigurations.Name})];无线电=savedRadioConfigurationNames (1);
生成传输波形
创建一个包含扎多夫-楚序文序列的传输波形。为了能够直接演示序文检测工作流,请在序文之前和之后连接零。
使用Zadoff-Chu序列的38根生成长度为137的序文序列并归一化。与零连接。
preamble = zadoffChuSeq(38,137);Preamble =序文/规范(序文,2);prePadLen = 2501;postadlen = 2500;headSignal =复杂(零(prePadLen,1),零(prePadLen,1));rearSignal = complex(零(推迟len,1),零(推迟len,1));inputSignal =[头信号;序言的;rearSignal];
绘制传输波形。
图();次要情节(2,1,1);情节(真正的(inputSignal));副标题(“真正的一部分”);包含(“样本”);ylabel (“振幅”);标题(“带序言的波形”);次要情节(2,1,2);情节(图像放大(inputSignal),颜色=“r”);副标题(“虚部”);包含(“样本”);ylabel (“振幅”);
配置前置探测器
使用指定的无线电创建一个前导探测对象。为了加快此示例在后续运行时的执行时间,请重用该示例第一次运行时的工作区对象。
清晰的pdpd = preambleDetector(无线电);
设置前导探测器的射频属性。设置RadioGain
属性根据本地无线信道。
pd。SampleRate =30720000;pd。CenterFrequency =2450000000;pd。RadioGain =30.;%增加,如果信号水平低。
要更新下拉菜单与天线可用于捕获您的收音机,请调用hCaptureAntennas
helper函数。然后选择本例中要使用的天线。
captureAntennaSelection = hcaptureantenna (radio);pd。天线=captureAntennaSelection (1);
配置前音检测的前音序列。
pd。序文;
捕获数据类型设置为生成的传输波形的数据类型。
pd。CaptureDataType =“替身”;
配置传输变量
设置发射增益和发射天线值。根据本地无线信道设置发射增益变量。
txGain =30.;%增加,如果信号水平低。
若要更新下拉菜单与天线可在您的收音机上传输,请调用hTransmitAntennas
helper函数。然后选择本例中要使用的天线。
transmitAntennaSelection = htransmitantenna(无线电);txAntenna =transmitAntennaSelection (1);
使用固定阈值检测前文并捕获数据
当相关器输出大于固定阈值时触发数据捕获。通过设置固定阈值为0,可以分析前导探测器的行为,了解如何设置固定阈值才能成功检测。
将前导检测器设置为固定阈值。若要设置阈值方法,请停止任何正在进行的传输。
stopTransmission (pd);pd。ThresholdMethod =“固定”;
最初将固定阈值设置为0。
pd。FixedThreshold = 0;
发射测试波形。
传输(pd、inputSignal“连续”TransmitGain = txGain,...TransmitCenterFrequency = pd.CenterFrequency TransmitAntennas = txAntenna);
使用plotThreshold
函数通过绘制10,000个样本来分析探测器的行为。因为固定的阈值为0,所以来自相关器输出的所有样本都是可能的触发点。检查峰值触发点的相关器输出值。因为采样相位决定了相关器峰值的质量,所以运行plotThreshold
函数多次,以查看触发点如何变化。
plotThreshold (pd, 10 e3);
选择低于任何触发点值的阈值。再次绘制阈值信息并调整固定阈值,直到触发点只出现在相关器输出峰值上。
pd。FixedThreshold =5;plotThreshold (pd, 10 e3);
一旦设置了阈值,就可以捕获数据。
[data, ~, ~, status] = capture(pd,10e3,seconds(1));plotCapturedData(数据、状态);
使用自适应阈值检测前文并捕获数据
作为固定阈值的替代方案,当相关器输出大于自适应阈值时,可以触发数据捕获,自适应阈值随输入信号功率动态变化。通过将自适应阈值增益和偏移量设置为0,可以分析前导探测器的行为,并了解如何配置自适应阈值以成功检测。
设置前导检测器使用自适应阈值。若要设置阈值方法,请停止任何正在进行的传输。
stopTransmission (pd);pd。ThresholdMethod =“自适应”;
将自适应阈值增益和偏移量初始设置为0。
pd。AdaptiveThresholdGain = 0;pd。AdaptiveThresholdOffset = 0;
发射测试波形。
传输(pd、inputSignal“连续”TransmitGain = txGain,...TransmitCenterFrequency = pd.CenterFrequency TransmitAntennas = txAntenna);
使用plotThreshold
函数通过绘制10,000个样本来分析探测器的行为。检查峰值触发点上的相关器输出值,并运行plotThreshold
如果需要,多次执行。
plotThreshold (pd, 10 e3);
若要从图的底部删除所有触发点,请将自适应阈值偏移设置为高于噪声下限的值。调整自适应阈值增益并重复绘制阈值信息,直到相关器输出大于自适应阈值。
pd。AdaptiveThresholdOffset =1;pd。AdaptiveThresholdGain =0.25;plotThreshold (pd, 10 e3);
一旦配置了阈值,就捕获数据。
[data, ~, ~, status] = capture(pd,10e3,seconds(1));plotCapturedData(数据、状态);
将“触发偏移量”设置为“捕获数据中包含前导”
要捕获前导序列,请将触发器偏移量设置为前导的长度。若要设置触发偏移量,请停止任何正在进行的传输。
stopTransmission (pd);pd。TriggerOffset =-137年;
传输测试波形并捕获数据。
传输(pd、inputSignal“连续”TransmitGain = txGain,...TransmitCenterFrequency = pd.CenterFrequency TransmitAntennas = txAntenna);检测并捕获10,000个样本,超时1秒[data, ~, ~, status] = capture(pd,10e3,seconds(1));plotCapturedData(数据、状态);
端传输
若要结束连续传输,请调用stopTransmission
函数在序言检测器对象上执行。
stopTransmission (pd);
本地函数
函数plotCapturedData(数据、状态)如果状态%如果检测成功,绘制数据图();次要情节(2,1,1);情节(真正的(双(数据)));标题(“捕获信号的实部”)包含(“样本”);ylabel (“振幅”);次要情节(2,1,2);情节(图像放大(双(数据)),颜色=“r”);标题(“捕获信号的虚部”)包含(“样本”);ylabel (“振幅”);其他的disp (“检测失败了。”)结束结束