void ConfigureNR() { NR = instrSession.GetNRSignalConfiguration(); /* Create a new RFmx Session */ instrSession.ConfigureFrequencyReference("", frequencyReferenceSource, frequencyReferenceFrequency); NR.SetSelectedPorts("", selectedPorts); NR.ConfigureRF("", centerFrequency, referenceLevel, externalAttenuation); NR.ConfigureDigitalEdgeTrigger("", digitalEdgeSource, digitalEdge, triggerDelay, enableTrigger); NR.SetLinkDirection("", RFmxNRMXLinkDirection.Uplink); NR.SetFrequencyRange("", frequencyRange); NR.SetBand("", band); NR.ComponentCarrier.SetBandwidth("", carrierBandwidth); NR.ComponentCarrier.SetCellID("", cellID); NR.ComponentCarrier.SetBandwidthPartSubcarrierSpacing("", subcarrierSpacing); NR.SetAutoResourceBlockDetectionEnabled("", autoResourceBlockDetectionEnabled); NR.ComponentCarrier.SetPdschModulationType("", pdschModulationType); NR.ComponentCarrier.SetPdschSlotAllocation("", pdschSlotAllocation); NR.ComponentCarrier.SetPdschSymbolAllocation("", pdschSymbolAllocation); NR.ComponentCarrier.SetPdschNumberOfResourceBlockClusters("", NumberOfResourceBlockClusters); subblockString = RFmxNRMX.BuildSubblockString("", 0); carrierString = RFmxNRMX.BuildCarrierString(subblockString, 0); bandwidthPartString = RFmxNRMX.BuildBandwidthPartString(carrierString, 0); userString = RFmxNRMX.BuildUserString(bandwidthPartString, 0); pdschConfigString = RFmxNRMX.BuildPdschConfigString(userString, 0); for (int i = 0; i < NumberOfResourceBlockClusters; i++) { pdschClusterString = RFmxNRMX.BuildPdschClusterString(pdschConfigString, i); NR.ComponentCarrier.SetPdschResourceBlockOffset(pdschClusterString, pdschResourceBlockOffset[i]); NR.ComponentCarrier.SetPdschNumberOfResourceBlocks(pdschClusterString, pdschNumberOfResourceBlocks[i]); } NR.ComponentCarrier.SetPdschDmrsPowerMode("", pdschDmrsPowerMode); NR.ComponentCarrier.SetPdschDmrsPower("", pdschDmrsPower); NR.ComponentCarrier.SetPdschDmrsConfigurationType("", pdschDmrsConfigurationType); NR.ComponentCarrier.SetPdschMappingType("", pdschMappingType); NR.ComponentCarrier.SetPdschDmrsTypeAPosition("", pdschDmrsTypeAPosition); NR.ComponentCarrier.SetPdschDmrsDuration("", pdschDmrsDuration); NR.ComponentCarrier.SetPdschDmrsAdditionalPositions("", pdschDmrsAdditionalPositions); NR.ComponentCarrier.SetSsbEnabled("", ssbEnabled); NR.ComponentCarrier.SetSsbCrbOffset("", ssbCrbOffset); NR.ComponentCarrier.SetSsbSubcarrierOffset("", ssbSubcarrierOffset); NR.ComponentCarrier.SetSsbPattern("", ssbPattern); NR.SelectMeasurements("", RFmxNRMXMeasurementTypes.ModAcc, true); NR.ModAcc.Configuration.SetSynchronizationMode("", synchronizationMode); NR.ModAcc.Configuration.SetAveragingEnabled("", averagingEnabled); NR.ModAcc.Configuration.SetAveragingCount("", averagingCount); NR.ModAcc.Configuration.SetMeasurementLengthUnit("", measurementLengthUnit); NR.ModAcc.Configuration.SetMeasurementOffset("", measurementOffset); NR.ModAcc.Configuration.SetMeasurementLength("", measurementLength); NR.Initiate("", ""); }
public static void ConfigureCommon(RFmxInstrMX sessionHandle, RFmxNRMX nrSignal, CommonConfiguration commonConfig, string selectorString = "") { nrSignal.ConfigureFrequency(selectorString, commonConfig.CenterFrequency_Hz); nrSignal.ConfigureExternalAttenuation(selectorString, commonConfig.ExternalAttenuation_dB); sessionHandle.ConfigureFrequencyReference(selectorString, commonConfig.FrequencyReferenceSource, 10e6); nrSignal.ConfigureDigitalEdgeTrigger(selectorString, commonConfig.DigitalEdgeSource, commonConfig.DigitalEdgeType, commonConfig.TriggerDelay_s, commonConfig.EnableTrigger); if (commonConfig.AutoLevelEnabled) { nrSignal.AutoLevel(selectorString, commonConfig.AutoLevelMeasurementInterval, out commonConfig.ReferenceLevel_dBm); } else { nrSignal.ConfigureReferenceLevel(selectorString, commonConfig.ReferenceLevel_dBm); } }
public static void ConfigureCommon(ref RFmxInstrMX sessionHandle, ref RFmxSpecAnMX specAnSignal, CommonConfiguration commonConfig, AutoLevelConfiguration autoLevelConfig, string selectorString = "") { sessionHandle.ConfigureFrequencyReference("", commonConfig.FrequencyReferenceSource, 10e6); sessionHandle.SetLOSource("", commonConfig.LOSource); sessionHandle.SetDownconverterFrequencyOffset("", commonConfig.LOOffset); specAnSignal.ConfigureDigitalEdgeTrigger(selectorString, commonConfig.DigitalEdgeSource, commonConfig.DigitalEdgeType, commonConfig.TriggerDelay_s, commonConfig.EnableTrigger); specAnSignal.ConfigureFrequency(selectorString, commonConfig.CenterFrequency_Hz); specAnSignal.Spectrum.Configuration.ConfigureSpan(selectorString, commonConfig.Span_Hz); specAnSignal.ConfigureExternalAttenuation(selectorString, commonConfig.ExternalAttenuation_dB); if (autoLevelConfig.AutoLevelReferenceLevel) { specAnSignal.AutoLevel(selectorString, commonConfig.Span_Hz, autoLevelConfig.AutoLevelMeasureTime_s, out _); } else { specAnSignal.ConfigureReferenceLevel(selectorString, commonConfig.ReferenceLevel_dBm); } }
private void ConfigureSpecAn() { /* Get SpecAn signal */ specAn = instrSession.GetSpecAnSignalConfiguration(); specAn.ConfigureFrequency("", centerFrequency); instrSession.ConfigureFrequencyReference("", frequencySource, frequency); specAn.SetSelectedPorts("", selectedPorts); specAn.ConfigureReferenceLevel("", referenceLevel); specAn.ConfigureExternalAttenuation("", externalAttenuation); instrSession.ConfigureRFAttenuation("", rfAttenuationAuto, rfAttenuation); specAn.SelectMeasurements("", RFmxSpecAnMXMeasurementTypes.IM, enableAllTraces); specAn.IM.Configuration.ConfigureAveraging("", averagingEnabled, averagingCount, averagingType); specAn.IM.Configuration.ConfigureRbwFilter("", rbwAuto, rbw, rbwFilterType); specAn.IM.Configuration.ConfigureSweepTime("", sweepTimeAuto, sweepTimeInterval); specAn.IM.Configuration.ConfigureFft("", fftWindow, fftPadding); specAn.IM.Configuration.ConfigureMeasurementMethod("", measurementMethod); specAn.IM.Configuration.ConfigureFundamentalTones("", lowerToneFrequency, upperToneFrequency); specAn.IM.Configuration.ConfigureAutoIntermodsSetup("", autoIntermodsSetupEnabled, maximumIntermodOrder); specAn.Initiate("", ""); }
public static void ConfigureCommon(RFmxInstrMX sessionHandle, RFmxWlanMX wlanSignal, CommonConfiguration commonConfig, AutoLevelConfiguration autoLevelConfig, string selectorString = "") { string instrModel; sessionHandle.ConfigureFrequencyReference("", commonConfig.FrequencyReferenceSource, 10e6); sessionHandle.GetInstrumentModel("", out instrModel); sessionHandle.SetLOSource("", commonConfig.LOSource); sessionHandle.SetDownconverterFrequencyOffset("", commonConfig.LOOffset); wlanSignal.ConfigureDigitalEdgeTrigger(selectorString, commonConfig.DigitalEdgeSource, commonConfig.DigitalEdgeType, commonConfig.TriggerDelay_s, commonConfig.EnableTrigger); wlanSignal.ConfigureFrequency(selectorString, commonConfig.CenterFrequency_Hz); wlanSignal.ConfigureExternalAttenuation(selectorString, commonConfig.ExternalAttenuation_dB); if (autoLevelConfig.AutoLevelReferenceLevel) { wlanSignal.AutoLevel(selectorString, autoLevelConfig.AutoLevelMeasureTime_s); } else { wlanSignal.ConfigureReferenceLevel(selectorString, commonConfig.ReferenceLevel_dBm); } }
public void ConfigureNR(ComplexWaveform <ComplexSingle> niFormattedData) { NR = instrSession.GetNRSignalConfiguration(); /* Create a new RFmx Session */ instrSession.ConfigureRFAttenuation("", RFmxInstrMXRFAttenuationAuto.True, 20); instrSession.ConfigureFrequencyReference("", RFmxInstrMXConstants.OnboardClock, 10e6); //instrSession.SetTriggerExportOutputTerminal("", ""); NR.ConfigureDigitalEdgeTrigger("", "PXI_Trig2", RFmxNRMXDigitalEdgeTriggerEdge.Rising, 0, true); NR.SelectMeasurements("", RFmxNRMXMeasurementTypes.ModAcc, true); NR.ModAcc.Configuration.SetMeasurementEnabled("", true); NR.ModAcc.Configuration.SetAveragingEnabled("", averagingEnabled); NR.ModAcc.Configuration.SetAveragingCount("", averagingCount); // NR.SetBand("", band); // Signal COnfiguration NR.SetLinkDirection("", lnkDirection); // Carrier Definition NR.ComponentCarrier.SetNumberOfComponentCarriers("", 1); #if false //*************************************************************** //-------------DEVELOPMENT OF MULTI_CARRIER---------------------- //*************************************************************** // 2-CC // Carrier Definition string[] arrCC = new string[2]; NR.ComponentCarrier.SetNumberOfComponentCarriers("", 2); for (int i = 0; i < arrCC.Length; i++) { arrCC[i] = RFmxNRMX.BuildCarrierString("", i); NR.ComponentCarrier.SetCellID(arrCC[i], cellID); NR.ComponentCarrier.SetBandwidth(arrCC[i], componentCarrierBandwidth); NR.ComponentCarrier.SetNumberOfBandwidthParts(arrCC[i], 1); NR.ComponentCarrier.SetBandwidthPartSubcarrierSpacing(arrCC[i], subcarrierSpacing); NR.SetAutoResourceBlockDetectionEnabled(arrCC[i], RFmxNRMXAutoResourceBlockDetectionEnabled.False); NR.ComponentCarrier.SetPuschResourceBlockOffset(arrCC[i], puschRBOffset); NR.ComponentCarrier.SetPuschNumberOfResourceBlocks(arrCC[i], puschNumberOfRBs); } //*************************************************************** #endif NR.ComponentCarrier.SetCellID("", cellID); NR.ComponentCarrier.SetBandwidth("", componentCarrierBandwidth); // BWP Setup NR.ComponentCarrier.SetNumberOfBandwidthParts("", 1); NR.ComponentCarrier.SetBandwidthPartSubcarrierSpacing("", subcarrierSpacing); NR.SetAutoResourceBlockDetectionEnabled("", RFmxNRMXAutoResourceBlockDetectionEnabled.False); NR.ComponentCarrier.SetPuschResourceBlockOffset("", puschRBOffset); NR.ComponentCarrier.SetPuschNumberOfResourceBlocks("", puschNumberOfRBs); // PUSCH Setup NR.ComponentCarrier.SetNumberOfPuschConfigurations("", 1); NR.ComponentCarrier.SetPuschSymbolAllocation("", puschSymbolAllocation); NR.ComponentCarrier.SetPuschSlotAllocation("", puschSlotAllocation); NR.ComponentCarrier.SetPuschNumberOfResourceBlockClusters("", puschNumberOfRBClusters); //int maxRBs = 0, offsetRBs = 0; //NR.ComponentCarrier.GetPuschResourceBlockOffset("", out offsetRBs); //NR.ComponentCarrier.GetPuschNumberOfResourceBlocks("", out maxRBs); // PUSCH Allocations //NR.ComponentCarrier.SetResourceBlockAlignmentMode("", RFmxNRMXResourceBlockAlignmentMode.Disabled); //for (int i = 0; i < NumberOfSubblocks; i++) //{ // subblockString = RFmxNRMX.BuildSubblockString("", 0); // carrierString = RFmxNRMX.BuildCarrierString(subblockString, 0); // puschClusterString = RFmxNRMX.BuildPuschClusterString(carrierString, i); // NR.ComponentCarrier.SetPuschResourceBlockOffset(puschClusterString, puschRBOffset); // NR.ComponentCarrier.SetPuschNumberOfResourceBlocks(puschClusterString, puschNumberOfRBs); //} NR.ComponentCarrier.SetPuschModulationType("", puschModulationType); NR.ComponentCarrier.SetPuschTransformPrecodingEnabled("", puschTransformPrecodingEnabled); // Missing DataScramblingIDMode Methods NR.ComponentCarrier.SetPuschDmrsScramblingIDMode("", RFmxNRMXPuschDmrsScramblingIDMode.CellID); NR.ComponentCarrier.SetPuschDmrsScramblingID("", 0); NR.ComponentCarrier.SetPuschMappingType("", puschDmrsMappingType); // PUSCH DM-RS NR.ComponentCarrier.SetPuschDmrsScramblingIDMode("", RFmxNRMXPuschDmrsScramblingIDMode.CellID); NR.ComponentCarrier.SetPuschDmrsScramblingID("", 0); // PUSCH---DMRS //I would like to add the following DMRS settings to the user configured EVM measurement: //DMRS Config type, //DMRS Mapping type, //DMRS Type A Position, //DMRS Duration, //DMRS Additional Positions, //Number of CDM Groups //*** DMRS Power only available if CP-OFDM NR.ComponentCarrier.SetPuschDmrsPowerMode("", puschDmrsPowerMode); if (puschDmrsPowerMode == RFmxNRMXPuschDmrsPowerMode.CdmGroups) { NR.ComponentCarrier.SetPuschDmrsPower("", 0); NR.ComponentCarrier.SetPuschDmrsConfigurationType("", RFmxNRMXPuschDmrsConfigurationType.Type1); } else { NR.ComponentCarrier.SetPuschDmrsPower("", puschDmrsPower); } if (puschTransformPrecodingEnabled == RFmxNRMXPuschTransformPrecodingEnabled.False) { NR.ComponentCarrier.SetPuschDmrsConfigurationType("", puschDmrsConfigurationType); } NR.ComponentCarrier.SetPuschDmrsDuration("", puschDmrsDuration); NR.ComponentCarrier.SetPuschDmrsTypeAPosition("", puschDmrsTypeAPosition); NR.ComponentCarrier.SetPuschDmrsAdditionalPositions("", puschDmrsAdditionalPositions); NR.ComponentCarrier.SetPuschMappingType("", puschDmrsMappingType); if (puschTransformPrecodingEnabled == RFmxNRMXPuschTransformPrecodingEnabled.True) { NR.ComponentCarrier.SetPuschDmrsNumberOfCdmGroups("", 2); } else { if (puschDmrsConfigurationType == RFmxNRMXPuschDmrsConfigurationType.Type1) { NR.ComponentCarrier.SetPuschDmrsNumberOfCdmGroups("", MathHelper.Clamp <int>(puschDmrsNumCdmGroups, 1, 2)); } else { NR.ComponentCarrier.SetPuschDmrsNumberOfCdmGroups("", MathHelper.Clamp <int>(puschDmrsNumCdmGroups, 1, 3)); } } // Why String??? NR.ComponentCarrier.SetPuschDmrsAntennaPorts("", 0.ToString()); if (puschTransformPrecodingEnabled == RFmxNRMXPuschTransformPrecodingEnabled.True) { NR.ComponentCarrier.SetPuschDmrsScramblingIDMode("", RFmxNRMXPuschDmrsScramblingIDMode.CellID); NR.ComponentCarrier.SetPuschDmrsScramblingID("", 0); NR.ComponentCarrier.SetPdschDmrsnScid("", 0); } NR.ComponentCarrier.SetPuschDmrsPuschIDMode("", RFmxNRMXPuschDmrsPuschIDMode.CellID); NR.ComponentCarrier.SetPuschDmrsPuschID("", 0); //NR.ModAcc.Configuration.SetFftWindowLength("", 10e-3); if (this.duplexScheme == frmRFmxSettings.RFmxDuplexMode.TDD) { NR.ModAcc.Configuration.SetMeasurementLengthUnit("", RFmxNRMXModAccMeasurementLengthUnit.Time); NR.ModAcc.Configuration.SetMeasurementOffset("", 0); NR.ModAcc.Configuration.SetMeasurementLength("", 1e-3); } else { NR.ModAcc.Configuration.SetMeasurementLengthUnit("", measurementLengthUnit); NR.ModAcc.Configuration.SetMeasurementOffset("", measurementOffset); NR.ModAcc.Configuration.SetMeasurementLength("", measurementLength); } NR.ModAcc.Configuration.SetEvmUnit("", evmUnit); //NR.ModAcc.Configuration.SetSynchronizationMode("", RFmxNRMXModAccSynchronizationMode.HalfSubframe); //NR.Initiate("", ""); NR.Commit(""); #region Run Analysis bool averagingDone; double recommendedPreTriggerTime; RFmxInstrMXRecommendedAcquisitionType recType; instrSession.GetRecommendedAcquisitionType("", out recType); double acquisitionTime; instrSession.GetRecommendedIQAcquisitionTime("", out acquisitionTime); int numberOfRecords; instrSession.GetRecommendedNumberOfRecords("", out numberOfRecords); //instrSession.GetRecommendedSpectralAcquisitionSpan("", out spectralAcquisitionSpan); double minimumSampleRate; instrSession.GetRecommendedIQMinimumSampleRate("", out minimumSampleRate); instrSession.GetRecommendedIQPreTriggerTime("", out recommendedPreTriggerTime); Console.WriteLine("Rec pre-trigger time = " + recommendedPreTriggerTime.ToString()); //ComplexWaveform<ComplexSingle> niFormattedData; //if (!RIFileType) // niFormattedData = ConvertIqDataToNiComplexFormat(traceData); //else // niFormattedData = RIData; #endregion Run Analysis ///AnalyzeIQ reset must be true for for last or single AnalyzeIQ call. ///Note: averaging in offline mode is done in MXA (IQ data in this module has been averaged). NR.AnalyzeIQ("", "", niFormattedData, true, out averagingDone); //int err = NR.Initiate("", ""); NR.WaitForMeasurementComplete("", 10); }
private void ConfigureNR() { watch.Start(); NR_offsets = instrSession.GetNRSignalConfiguration("signal::offsets"); NR_carrier = instrSession.GetNRSignalConfiguration("signal::carrier"); instrSession.ConfigureFrequencyReference("", frequencyReferenceSource, frequencyReferenceFrequency); instrSession.SetDownconverterFrequencyOffset("signal::carrier", 256e6); //Configure offset measurements NR_offsets.SetSelectedPorts("", selectedPorts); NR_offsets.ConfigureRF("", centerFrequency, referenceLevel, externalAttenuation); NR_offsets.ConfigureDigitalEdgeTrigger("", digitalEdgeSource, digitalEdge, triggerDelay, enableTrigger); NR_offsets.SetLinkDirection("", linkDirection); NR_offsets.SetFrequencyRange("", frequencyRange); NR_offsets.SetBand("", modaccBand); NR_offsets.ComponentCarrier.SetBandwidth("", carrierBandwidth); NR_offsets.ComponentCarrier.SetBandwidthPartSubcarrierSpacing("", subcarrierSpacing); NR_offsets.SelectMeasurements("", RFmxNRMXMeasurementTypes.Acp | RFmxNRMXMeasurementTypes.Sem, true); //Configure carrier measurements NR_carrier.SetSelectedPorts("", selectedPorts); NR_carrier.ConfigureRF("", centerFrequency, referenceLevel, externalAttenuation); NR_carrier.ConfigureDigitalEdgeTrigger("", digitalEdgeSource, digitalEdge, triggerDelay, enableTrigger); NR_carrier.SetLinkDirection("", linkDirection); NR_carrier.SetFrequencyRange("", frequencyRange); NR_carrier.SetBand("", modaccBand); NR_carrier.ComponentCarrier.SetBandwidth("", carrierBandwidth); NR_carrier.ComponentCarrier.SetBandwidthPartSubcarrierSpacing("", subcarrierSpacing); NR_carrier.SelectMeasurements("", RFmxNRMXMeasurementTypes.ModAcc | RFmxNRMXMeasurementTypes.Chp | RFmxNRMXMeasurementTypes.Obw, true); NR_offsets.Acp.Configuration.ConfigureSweepTime("", RFmxNRMXAcpSweepTimeAuto.True, sweepTimeInterval); NR_offsets.Chp.Configuration.ConfigureSweepTime("", RFmxNRMXChpSweepTimeAuto.True, sweepTimeInterval); NR_offsets.Obw.Configuration.ConfigureSweepTime("", RFmxNRMXObwSweepTimeAuto.True, sweepTimeInterval); NR_offsets.Sem.Configuration.ConfigureSweepTime("", RFmxNRMXSemSweepTimeAuto.True, sweepTimeInterval); NR_carrier.ModAcc.Configuration.SetAveragingEnabled("", RFmxNRMXModAccAveragingEnabled.False); NR_carrier.ModAcc.Configuration.SetAveragingCount("", averagingCount); NR_offsets.Acp.Configuration.ConfigureAveraging("", RFmxNRMXAcpAveragingEnabled.False, averagingCount, RFmxNRMXAcpAveragingType.Rms); NR_carrier.Chp.Configuration.ConfigureAveraging("", RFmxNRMXChpAveragingEnabled.False, averagingCount, RFmxNRMXChpAveragingType.Rms); NR_carrier.Obw.Configuration.ConfigureAveraging("", RFmxNRMXObwAveragingEnabled.False, averagingCount, RFmxNRMXObwAveragingType.Rms); NR_offsets.Sem.Configuration.ConfigureAveraging("", RFmxNRMXSemAveragingEnabled.False, averagingCount, RFmxNRMXSemAveragingType.Rms); NR_carrier.ModAcc.Configuration.SetMeasurementLengthUnit("", measurementLengthUnit); NR_carrier.ModAcc.Configuration.SetMeasurementOffset("", measurementOffset); NR_carrier.ModAcc.Configuration.SetMeasurementLength("", measurementLength); if (linkDirection == RFmxNRMXLinkDirection.Uplink) { NR_offsets.Sem.Configuration.ConfigureUplinkMaskType("", uplinkMaskType); } else { NR_offsets.ConfiguregNodeBCategory("", gNodeBCategory); NR_offsets.Sem.Configuration.SetDownlinkMaskType("", downlinkMaskType); NR_offsets.Sem.Configuration.SetDeltaFMaximum("", deltaFMaximum); NR_offsets.Sem.Configuration.ComponentCarrier.ConfigureRatedOutputPower("", componentCarrierRatedOutputPower); } NR_offsets.Commit(""); NR_carrier.Commit(""); offsetResults = RFmxNRMX.BuildResultString("offsetResults"); carrierResults = RFmxNRMX.BuildResultString("carrierResults"); NR_carrier.Initiate("", "carrierResults"); instrSession.WaitForAcquisitionComplete(timeout); NR_offsets.Initiate("", "offsetResults"); //NR_offsets.WaitForMeasurementComplete("", timeout); // NR_carrier.Initiate("", ""); }