public void InitializeParameters() { //shared Parameters centerFrequency = 3e9; //Hz resourceName = "5840"; filePath = @"C:\Users\Public\Documents\National Instruments\RFIC Test Software\Waveforms\LTE_FDD_UL_1x20MHz_256QAM_OS4.tdms"; signalStringSpecan = "specanSig0"; resultStringSpecan = "specanResult0"; //Tuner Configration tunerAddress = "10.0.0.1"; commonConfiguration = FocusTuner.CommonConfiguration.GetDefault(); commonConfiguration.CalibrationID = 1; gammaSweep = GetConstantVSWR(2, 20); //Generator Configuiration sgInstrConfig = SG.InstrumentConfiguration.GetDefault(); sgInstrConfig.CarrierFrequency_Hz = centerFrequency; sgInstrConfig.DutAverageInputPower_dBm = -10.0; sgInstrConfig.ExternalAttenuation_dB = 0; //Analyzer Configuration saInstrConfig = RFmxInstr.InstrumentConfiguration.GetDefault(); saCommonConfig = CommonConfiguration.GetDefault(); saCommonConfig.ExternalAttenuation_dB = 0; saCommonConfig.CenterFrequency_Hz = centerFrequency; saCommonConfig.ReferenceLevel_dBm = 0.0; saAutolevelConfig = AutoLevelConfiguration.GetDefault(); saAutolevelConfig.Enabled = true; txpConfigurationSpecAn = RFmxSpecAn.TxpConfiguration.GetDefault(); txpConfigurationSpecAn.RbwFilterType = RFmxSpecAnMXTxpRbwFilterType.None; txpConfigurationSpecAn.RrcAlpha = 0; }
private void CommitTestConfiguration(NIRfsg rfsg, RFmxInstrMX instr) { SG.DownloadWaveform(rfsg, lteTdd10Waveform); SG.ConfigureContinuousGeneration(rfsg, lteTdd10Waveform); var lteCommonConfig = CommonConfiguration.GetDefault(); string instrumentModel = rfsg.Identity.InstrumentModel; if (Regex.IsMatch(instrumentModel, "NI PXIe-5830")) { lteCommonConfig.SelectedPorts = "if1"; lteCommonConfig.CenterFrequency_Hz = 6.5e9; } else if (Regex.IsMatch(instrumentModel, "NI PXIe-5831")) { lteCommonConfig.SelectedPorts = "rf1/port0"; lteCommonConfig.CenterFrequency_Hz = 28e9; } var lte = instr.GetLteSignalConfiguration(); RFmxLTE.ConfigureCommon(lte, lteCommonConfig); RFmxLTE.ConfigureStandard(lte, RFmxLTE.StandardConfiguration.GetDefault()); RFmxLTE.ConfigureModAcc(lte, RFmxLTE.ModAccConfiguration.GetDefault()); lte.Commit(""); rfsg.Utility.Commit(); }
public override Task <RFmxCommonConfiguration> GetDefaultCommonConfiguration(RFmxSession request, ServerCallContext context) { var defaultCommonConfig = CommonConfiguration.GetDefault(); return(Task.FromResult(new RFmxCommonConfiguration() { Session = request, SelectedPorts = defaultCommonConfig.SelectedPorts, CenterFrequencyHz = defaultCommonConfig.CenterFrequency_Hz, ReferenceLevelDBm = defaultCommonConfig.ReferenceLevel_dBm, ExternalAttenuationDB = defaultCommonConfig.ExternalAttenuation_dB, TriggerEnabled = defaultCommonConfig.TriggerEnabled, DigitalTriggerSource = defaultCommonConfig.DigitalTriggerSource, TriggerDelayS = defaultCommonConfig.TriggerDelay_s })); }
public void TestOfflineAnalysisSingleCarrierTdd() { RFmxInstrMX instr = new RFmxInstrMX("", "AnalysisOnly=1"); RFmxLteMX lte = instr.GetLteSignalConfiguration(); ConfigureCommon(lte, CommonConfiguration.GetDefault()); StandardConfiguration signalConfig = StandardConfiguration.GetDefault(); signalConfig.DuplexScheme = RFmxLteMXDuplexScheme.Tdd; ConfigureStandard(lte, signalConfig); ModAccConfiguration modAccConfig = ModAccConfiguration.GetDefault(); modAccConfig.MeasurementOffset = 4; ConfigureModAcc(lte, modAccConfig); lte.Commit(""); instr.GetRecommendedIQPreTriggerTime("", out double pretriggerTime); PrecisionTimeSpan timeOffset = new PrecisionTimeSpan(-pretriggerTime); Waveform wfm = LoadWaveformFromTDMS(@"Support Files\LTE_TDD_2.0.tdms"); Buffer <ComplexSingle> readBuffer = wfm.Data.GetBuffer(true); WritableBuffer <ComplexSingle> writeBuffer = wfm.Data.GetWritableBuffer(); int sampleOffset = (int)Math.Round(pretriggerTime * wfm.SampleRate); for (int i = 0; i < readBuffer.Size; i++) { writeBuffer[i] = readBuffer[(i - sampleOffset + readBuffer.Size) % readBuffer.Size]; } wfm.Data.PrecisionTiming = PrecisionWaveformTiming.CreateWithRegularInterval( wfm.Data.PrecisionTiming.SampleInterval, timeOffset); lte.AnalyzeIQ("", "", wfm.Data, true, out _); ModAccResults modAccResults = FetchModAcc(lte); instr.Close(); Assert.IsTrue(modAccResults.ComponentCarrierResults[0].MeanRmsCompositeEvm < 0.001); }
static void Main() { #region Configure Generation string resourceName = "VST2"; string filePath = Path.GetFullPath(@"Support Files\80211a_20M_48Mbps.tdms"); NIRfsg nIRfsg = new NIRfsg(resourceName, false, false); InstrumentConfiguration instrConfig = InstrumentConfiguration.GetDefault(); instrConfig.CarrierFrequency_Hz = 2.412e9; ConfigureInstrument(nIRfsg, instrConfig); Waveform waveform = LoadWaveformFromTDMS(filePath); DownloadWaveform(nIRfsg, waveform); WaveformTimingConfiguration timing = new WaveformTimingConfiguration { DutyCycle_Percent = 60, PreBurstTime_s = 1e-9, PostBurstTime_s = 1e-9, BurstStartTriggerExport = "PXI_Trig0" }; PAENConfiguration paenConfig = new PAENConfiguration { PAEnableMode = PAENMode.Dynamic, PAEnableTriggerExportTerminal = "PFI0", PAEnableTriggerMode = RfsgMarkerEventOutputBehaviour.Toggle }; ConfigureBurstedGeneration(nIRfsg, waveform, timing, paenConfig, out double period, out _); nIRfsg.Initiate(); #endregion RFmxInstrMX instr = new RFmxInstrMX("VST2", ""); RFmxWlanMX wlan = instr.GetWlanSignalConfiguration(); instr.GetWlanSignalConfiguration(); CommonConfiguration commonConfiguration = CommonConfiguration.GetDefault(); commonConfiguration.CenterFrequency_Hz = 2.412e9; AutoLevelConfiguration autoLevel = new AutoLevelConfiguration { AutoLevelMeasureTime_s = period, AutoLevelReferenceLevel = true }; SA.RFmxWLAN.ConfigureCommon(instr, wlan, commonConfiguration, autoLevel); SignalConfiguration signal = SignalConfiguration.GetDefault(); signal.AutoDetectSignal = false; signal.ChannelBandwidth_Hz = 20e6; signal.Standard = RFmxWlanMXStandard.Standard802_11ag; SA.RFmxWLAN.ConfigureSignal(wlan, signal); TxPConfiguration txpConfig = new TxPConfiguration { AveragingCount = 10, MaximumMeasurementInterval_s = waveform.BurstLength_s, AveragingEnabled = RFmxWlanMXTxpAveragingEnabled.True }; SA.RFmxWLAN.ConfigureTxP(wlan, txpConfig); OFDMModAccConfiguration modAccConfig = OFDMModAccConfiguration.GetDefault(); modAccConfig.OptimizeDynamicRangeForEvmEnabled = RFmxWlanMXOfdmModAccOptimizeDynamicRangeForEvmEnabled.False; modAccConfig.AveragingEnabled = RFmxWlanMXOfdmModAccAveragingEnabled.True; SA.RFmxWLAN.ConfigureOFDMModAcc(wlan, modAccConfig); TxPServoConfiguration servoConfig = TxPServoConfiguration.GetDefault(); servoConfig.TargetTxPPower_dBm = 0.5; SA.RFmxWLAN.TxPServoPower(wlan, nIRfsg, servoConfig, autoLevel); SEMConfiguration semConfig = SEMConfiguration.GetDefault(); SA.RFmxWLAN.ConfigureSEM(wlan, semConfig); wlan.Initiate("", ""); TxPResults txpRes = SA.RFmxWLAN.FetchTxP(wlan); OFDMModAccResults modAccResults = SA.RFmxWLAN.FetchOFDMModAcc(wlan); SEMResults semResults = SA.RFmxWLAN.FetchSEM(wlan); Console.WriteLine("TXP Avg Power: {0:N}", txpRes.AveragePowerMean_dBm); Console.WriteLine("Composite RMS EVM (dB): {0:N}", modAccResults.CompositeRMSEVMMean_dB); Console.WriteLine("\n----------Lower Offset Measurements----------\n"); for (int i = 0; i < semResults.LowerOffsetMargin_dB.Length; i++) { Console.WriteLine("Offset {0}", i); Console.WriteLine("Measurement Status :{0}", semResults.lowerOffsetMeasurementStatus[i]); Console.WriteLine("Margin (dB) :{0}", semResults.LowerOffsetMargin_dB[i]); Console.WriteLine("Margin Frequency (Hz) :{0}", semResults.LowerOffsetMarginFrequency_Hz[i]); Console.WriteLine("Margin Absolute Power (dBm) :{0}\n", semResults.LowerOffsetMarginAbsolutePower_dBm[i]); } Console.WriteLine("\n----------Upper Offset Measurements----------\n"); for (int i = 0; i < semResults.UpperOffsetMargin_dB.Length; i++) { Console.WriteLine("Offset {0}", i); Console.WriteLine("Measurement Status :{0}", semResults.upperOffsetMeasurementStatus[i]); Console.WriteLine("Margin (dB) :{0}", semResults.UpperOffsetMargin_dB[i]); Console.WriteLine("Margin Frequency (Hz) :{0}", semResults.UpperOffsetMarginFrequency_Hz[i]); Console.WriteLine("Margin Absolute Power (dBm) :{0}\n", semResults.UpperOffsetMarginAbsolutePower_dBm[i]); } Console.WriteLine("\n--------------------\n\nPress any key to exit."); Console.ReadKey(); wlan.Dispose(); instr.Close(); AbortGeneration(nIRfsg); CloseInstrument(nIRfsg); }