Exemplo n.º 1
0
 /// <summary>Configures common settings for the ModAcc measurement and selects the measurement.</summary>
 /// <param name="lte">Specifies the LTE signal to configure.</param>
 /// <param name="modAccConfig">Specifies the ModAcc settings to apply.</param>
 /// <param name="selectorString">Pass an empty string. The signal name that is passed when creating the signal configuration is used. See the RFmx help for more documention of this parameter.</param>
 public static void ConfigureModAcc(RFmxLteMX lte, ModAccConfiguration modAccConfig, string selectorString = "")
 {
     lte.SelectMeasurements(selectorString, RFmxLteMXMeasurementTypes.ModAcc, false);
     lte.ModAcc.Configuration.ConfigureAveraging(selectorString, modAccConfig.AveragingEnabled, modAccConfig.AveragingCount);
     lte.ModAcc.Configuration.ConfigureSynchronizationModeAndInterval(selectorString, modAccConfig.SynchronizationMode, modAccConfig.MeasurementOffset, modAccConfig.MeasurementLength);
     lte.ModAcc.Configuration.ConfigureEvmUnit(selectorString, modAccConfig.EvmUnit);
 }
 /// <summary>Configures common settings for the ModAcc measurement and selects the measurement.</summary>
 /// <param name="nr">Specifies the NR signal to configure.</param>
 /// <param name="modAccConfig">Specifies the ModAcc settings to apply.</param>
 /// <param name="selectorString">Pass an empty string. The signal name that is passed when creating the signal configuration is used. See the RFmx help for more documention of this parameter.</param>
 public static void ConfigureModacc(RFmxNRMX nr, ModAccConfiguration modAccConfig, string selectorString = "")
 {
     nr.SelectMeasurements(selectorString, RFmxNRMXMeasurementTypes.ModAcc, false);
     nr.ModAcc.Configuration.SetMeasurementLengthUnit(selectorString, modAccConfig.MeasurementLengthUnit);
     nr.ModAcc.Configuration.SetMeasurementOffset(selectorString, modAccConfig.MeasurementOffset);
     nr.ModAcc.Configuration.SetMeasurementLength(selectorString, modAccConfig.MeasurementLength);
     nr.ModAcc.Configuration.SetEvmUnit(selectorString, modAccConfig.EvmUnit);
     nr.ModAcc.Configuration.SetAveragingEnabled(selectorString, modAccConfig.AveragingEnabled);
     nr.ModAcc.Configuration.SetAveragingCount(selectorString, modAccConfig.AveragingCount);
 }
        public static void ConfigureModacc(RFmxNRMX nrSignal, ModAccConfiguration modaccConfig, string selectorString = "")
        {
            nrSignal.ModAcc.Configuration.SetMeasurementEnabled(selectorString, true);
            nrSignal.ModAcc.Configuration.SetAllTracesEnabled(selectorString, true);

            nrSignal.ModAcc.Configuration.SetSynchronizationMode(selectorString, modaccConfig.synchronizationMode);
            nrSignal.ModAcc.Configuration.SetAveragingEnabled(selectorString, modaccConfig.averagingEnabled);
            nrSignal.ModAcc.Configuration.SetAveragingCount(selectorString, modaccConfig.averagingCount);

            nrSignal.ModAcc.Configuration.SetMeasurementLengthUnit(selectorString, modaccConfig.measurementLengthUnit);
            nrSignal.ModAcc.Configuration.SetMeasurementOffset(selectorString, modaccConfig.measurementOffset);
            nrSignal.ModAcc.Configuration.SetMeasurementLength(selectorString, modaccConfig.measurementLength);
        }
Exemplo n.º 4
0
        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);
        }