用参数扫描法从矢量信号收发器中获取参数化I/Q数据
这个例子展示了如何连接到NI PXIe-5841矢量信号收发器(VST),并使用NI- rfsa RF列表模式将其配置为返回时间触发的频率和参考功率级扫描列表。
连接到仪器
连接到VST仪器使用ividev
函数。对于本例,指定驱动程序名称为niRFSA
资源名为PXI1Slot2
.或者,对于模拟硬件,可以不指定资源名(""
)和IVI驱动程序设置名称-值参数为型号:5841
.驱动程序设置也是可选的。如果您没有为驱动程序设置指定名称-值参数,ividev
使用默认设置值。有关默认实参值的详细信息,请参见ividev
.
isSimulated =假;如果issimulate dev = ividev(“niRFSA”,“PXI1Slot2”,模拟=true, DriverSetup=“模型:5841”)其他的Dev = ividev(“niRFSA”,“PXI1Slot2”)结束
dev = niRFSA与属性:型号:“NI PXIe-5841”制造商:“国家仪器”SerialNumber:“ResourceName:“PXI1Slot2”VendorDriver:“niRFSA”模拟:0 ChannelIDs:“0”FIFOEndpointIDs:“FIFOEndpoint0”UserSourceIDs:“usersource0”垂直:[1x1垂直]SignalPath: [1x1 SignalPath]采集:[1x1采集]时钟:[1x1时钟]触发器:[1x1触发器]事件:[1x1事件]devicecharacistics: [1x1 devicecharacistics] PeerToPeer: [1x1 PeerToPeer]配置列表:[1x1 ConfigurationList] InherentIVIAttributes: [1x1 InherentIVIAttributes] Deembedding: [1x1 Deembedding] SelfCalibration: [1x1 SelfCalibration] FactoryCalibration: [1x1 FactoryCalibration] ExternalAlignment: [1x1 ExternalAlignment] DeviceSpecific: [1x1 DeviceSpecific] accestiontype: IQ显示所有功能
配置采集属性
配置VST获取通道上的IQ数据0
”。对于单通道设备,可以不指定通道(""
).设置以下参数为指定值:
采集类型- I/Q数据
采集速率- 10mhz
ch =“0”;configureAcquisitionType (dev,“智商”);configureIQRate(dev, ch, 10e6);
配置每个波形的波形和样本的数量
获取10个波形,每个波形包含10000个来自信道的I/Q数据样本。0
,以及关于所获得的波形的附加信息。
finitessamples = true;numSamples = 10000;numRecords = 10;configureNumberOfSamples(dev, ch, limitesamples, numSamples);configureNumberOfRecords(dev, ch, limitesamples, numRecords);
创建射频配置列表并添加测量值
射频配置列表包括配置列表步骤,每个步骤都是使用列表属性指定的。创建一个列表并配置它:
通过传入每个步骤中需要更改的属性的属性id来创建一个配置列表。将新列表设置为活跃的列表。
将列表步骤添加到活动配置列表。本例中配置了10个不同的载波频率和基准电平。
通过在生成计时器事件之前设置计时器计数的时间来配置步骤之间的时间(以秒为单位)。
dev.SignalPath.Advanced.FrequencySettlingUnits =“FSU_SECONDS_AFTER_IO”;dev. signalpath . advanced . frequencysettlement = 0.006;步骤1:通过传入属性id来创建一个配置列表%载波频率和参考电平listName =“configList”;listAttributeIDs = [“NIRFSA_ATTR_IQ_CARRIER_FREQUENCY”“NIRFSA_ATTR_REFERENCE_LEVEL”];numAttributes = length(listAttributeIDs);setAsActiveList = true;createconfigationlist (dev, listName, numAttributes, listAttributeIDs, setAsActiveList);步骤2:为每个指定属性的每个离散值创建列表步骤numSteps = 10;setAsActiveStep = true;载频范围为9.9e8 ~ 1.01e9carrierFreq = linspace(9.9e8, 1.01e9, numSteps);%功率等级从-30到-20 dBm不等refLevels = linspace(-30, -20, numSteps);为k = 1:numSteps createconfigationliststep (dev, setAsActiveStep);configureIQCarrierFrequency(dev, ch, carrierFreq(k));configureReferenceLevel(dev, ch, refLevels(k));结束步骤3:配置步骤之间的时间:% 1。配置定时器事件间隔% 2。将设备配置为等待数字提前触发(其中%表示新记录开始的时间)每2毫秒改变一次dev.ConfigurationList.TimerEventInterval = 0.002;configureDigitalEdgeAdvanceTrigger (dev,“TimerEvent”,“RISING_EDGE”)
获得波形
获取指定数量的波形。
启动(dev);超时= 10;[data, waveformInfo] = fetchIQMultiRecordComplexF32(dev, ch, 0, numRecords, numSamples, timeout);
地块采集样本
构造一个频率值向量使用信息从waveformInfo
结构为第一获得的波形。
K = 1;t0 = waveformInfo(k).relativeInitialX;tincr = waveformInfo(k).xIncrement;n = double(waveformInfo(k).actualSamples);T = t0 + tincr.*(0:n-1);
在相关的子图中显示第一个采集波形的I数据和Q数据。
Subplot (211) plot(t, real(data(k,:)))轴紧网格小Subplot (212) plot(t, imag(data(k,:)))轴紧网格小
清理
重置活动配置,断开与仪器的连接,然后清除ividev
对象。
deleteConfigurationList (dev, listName);清晰的dev;
另请参阅
ividriverlist
|ividevlist
|ividev