I have generated a MATLAB script using TES, the MATLAB script is as follows:
%Make DLL visible to matlab NET.addAssembly('D:\ADRV9009\ADRV9009 Transceiver Evaluation Software\AdiCmdServerClient.dll'); Link = AdiCmdServerClient.AdiCommandServerClient.Instance; status = Link.hw.Connect('192.168.1.10', 55555); if status == 1 fprintf('Connected to Zync\n'); else fprintf('Unable to connect to Zync platform\n'); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % GUI Version: 3.6.0.6 DLL Version: 3.6.0.6 FPGA Version: 4E00021A ArmVersion: 0.0.0 Build type = TAL_ARM_BUILD_DEBUG StreamVersion: 2.17 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Link.FpgaTalise.StopTxData(); Link.Ad9528.InitDeviceDataStructure(122880000, 30720000, 122880000); Link.Ad9528.ResetDevice(); Link.Ad9528.Initialize(); pause(0.5); arePllsLocked = Link.Ad9528.WaitForPllLock(); fprintf('Ad9528 arePllsLocked = %d\n', arePllsLocked); Link.Ad9528.EnableClockOutputs(hex2dec('300A')); Link.SetSpiChannel(1); %用于选择不同的SPI设备 Link.FpgaTalise.ResetFpgaRegisters(); % Link.FpgaTalise.ResetFpgaIp(FpgaResets.resetMask); AdiCmdServerClient.FpgaTalise.ResetFpgaIp(FpgaResets.ClearAllRst); % Link.FpgaTalise.ResetFpgaIp(AdiCmdServerClient.FpgaResets.ClearAllRst); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Init Structures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Link.Talise.InitClearProfiles(); Link.Talise.InitClocks(1, 122880, 9830400, 2, AdiCmdServerClient.HsDiv.HsDiv2p5); Link.Talise.InitRfPllUseExternalLo(1, 0); Link.Talise.InitRxProfiles(1, 2, 4, 1, 245760, 200000000, 200000, [182, 142, 173, 90, 1280, 982, 1335, 96, 1369, 48, 1012, 18, 48, 48, 37, 208, 0, 0, 0, 0, 52, 0, 7, 6, 42, 0, 7, 6, 42, 0, 25, 27, 0, 0, 25, 27, 0, 0, 165, 44, 31, 905],AdiCmdServerClient.RxDdcMode.RxDdcBypass); Link.Talise.InitFirFilters(1, AdiCmdServerClient.FilterName.Rx, 'D:\ADRV9009\ADRV9009 Transceiver Evaluation Software\Resources\DigitalFilters\RxPFIRApp215_BW200_ADC1966p08_OR245p76.ftr'); Link.Talise.InitRxSettings(1, AdiCmdServerClient.RxChannel.Rx1, AdiCmdServerClient.FramerSelect.FramerA); Link.Talise.InitTxProfiles(1, 1, 1, 2, 2, 2, 1, 245760, 100000000, 225000000, 225000, 113000, [212, 140, 175, 90, 1280, 699, 1304, 59, 1343, 33, 913, 27, 48, 48, 34, 192, 0, 0, 0, 0, 48, 0, 7, 6, 42, 0, 7, 6, 42, 0, 25, 27, 0, 0, 25, 27, 0, 0, 165, 44, 31, 905]); Link.Talise.InitFirFilters(1, AdiCmdServerClient.FilterName.Tx, 'D:\ADRV9009\ADRV9009 Transceiver Evaluation Software\Resources\DigitalFilters\TxPFIRApp110_IR245p76_BW225_PriSigBW100.ftr'); Link.Talise.InitTxSettings(1, AdiCmdServerClient.TxAttenStepSize.TxAtten0P05DB, AdiCmdServerClient.TxChannel.Tx1, 0, 0, AdiCmdServerClient.DeframerSelect.DeframerA, AdiCmdServerClient.TxDataIfPllUnlock.TxRampedDownToZero); Link.Talise.InitObsProfiles(1, 1, 4, 2, 245760, 200000000, 225000, [185, 141, 172, 90, 1280, 942, 1332, 90, 1368, 46, 1016, 19, 48, 48, 37, 208, 0, 0, 0, 0, 52, 0, 7, 6, 42, 0, 7, 6, 42, 0, 25, 27, 0, 0, 25, 27, 0, 0, 165, 44, 31, 905],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],AdiCmdServerClient.OrxDdcMode.OrxDdcDisabled, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); Link.Talise.InitFirFilters(1, AdiCmdServerClient.FilterName.ORx, 'D:\ADRV9009\ADRV9009 Transceiver Evaluation Software\Resources\DigitalFilters\ORxPFIRApp307_BW200_ADC1966p08_OR245p76.ftr'); Link.Talise.InitObsRxSettings(1, AdiCmdServerClient.ObsRxChannel.ObsRxOff, AdiCmdServerClient.ObsRxLoSource.RfPll, AdiCmdServerClient.FramerSelect.FramerB); Link.Talise.InitRfPllEnablePhaseSync(1, AdiCmdServerClient.RfPllMcs.NoSync); Link.Talise.InitRxNcoShiftCfg(1, 0, 0, 0, 0, 0, 0, 0, 0); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Init Jesd %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Link.Talise.InitJesd204bFramer(1, AdiCmdServerClient.FramerSelect.FramerA, 1, 0, 0, 2, 32, 4, 16, 1, 1, 2, 228, 31, 0, 0, 0, 1, 0, 0); Link.Talise.InitJesd204bFramer(1, AdiCmdServerClient.FramerSelect.FramerB, 0, 0, 0, 2, 32, 4, 16, 1, 1, 1, 228, 31, 0, 1, 0, 1, 0, 0); Link.FpgaTalise.SetupTxConvXbar(AdiCmdServerClient.FpgaFramerSelect.FramerA, hex2dec('E4')); Link.FpgaTalise.SetupTxConvXbar(AdiCmdServerClient.FpgaFramerSelect.FramerB, hex2dec('E4')); Link.GetPcbDescript(); Link.Talise.InitJesd204bDeframer(1, AdiCmdServerClient.DeframerSelect.DeframerA, 0, 0, 0, 2, 32, 1, 1, 1, 228, 17, 0, 0, 16, 1, 0, 0, 0, 0); Link.FpgaTalise.ResetFpgaIp(AdiCmdServerClient.FpgaResets.TxJesdRst); pause(0.5); Link.FpgaTalise.ResetFpgaIp(AdiCmdServerClient.FpgaResets.ClearAllRst); Link.FpgaTalise.SetupJesd204(122880, 245760, 2, 2, 32, 1, 1, 16, 245760, 2, 1, 32, 1, 16, 245760, 0, 0, 32, 1, 1, 16, AdiCmdServerClient.FpgaFramerSelect.FramerA, AdiCmdServerClient.FpgaDeframerSelect.DeframerA, AdiCmdServerClient.FpgaDeframerSelect.DeframerB, false); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Program Talise %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Link.Talise.ResetDevice(); Link.Talise.Initialize(); Link.Talise.SetDacFullScale(AdiCmdServerClient.DacFullScale.DacFs0dB); pllStatus = Link.Talise.GetPllsLockStatus(); fprintf('Talise pllStatus = %d\n', pllStatus); Link.Talise.EnableMultichipSync(hex2dec('1'), hex2dec('0')); Link.Ad9528.RequestSysref(1); Link.Ad9528.RequestSysref(1); Link.Ad9528.RequestSysref(1); pause(0.1); mcsStatus = Link.Talise.EnableMultichipSync(hex2dec('0'), hex2dec('0')); fprintf('MCS Status = %d\n', mcsStatus); Link.FpgaTalise.SetupJesd204bOversampler(AdiCmdServerClient.FpgaDeframerSelect.DeframerB, AdiCmdServerClient.FpgaSampleDecimation.DecimateBy1); Link.SetLogLevel(0); if pllStatus && 1 Link.Talise.InitArm(); Link.Talise.LoadStreamProcessor('C:\Users\zhao\AppData\Local\Temp\TaliseStream.bin'); Link.Talise.LoadArm('D:\ADRV9009\ADRV9009 Transceiver Evaluation Software\Resources\arm_firmware\TaliseTDDArmFirmware.bin'); isArmGood = Link.Talise.VerifyArmChecksum(); fprintf('isArmGood = %d\n', isArmGood); if isArmGood && 1 fprintf('ARM Loaded Successfully\n'); else fprintf('ARM File not loaded correctly\n'); end else fprintf('ARM File not loaded correctly\n'); end Link.Talise.GetArmVersion(); Link.SetLogLevel(63); Link.Talise.SetPllLoopFilter(AdiCmdServerClient.PllName.RfPll, 300, 3); Link.Talise.SetRfPllFrequency(AdiCmdServerClient.PllName.RfPll, 4000000000); pllStatus = Link.Talise.GetPllsLockStatus(); fprintf('Talise pllStatus = %d\n', pllStatus); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % InitCals %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Link.Talise.AbortInitCals(0); %initCalMask = 0 %initCalMask |= int(Link.Talise.CalMask.TxBaseBandFilter); %initCalMask |= int(Link.Talise.CalMask.AdcTuner); %initCalMask |= int(Link.Talise.CalMask.Tia3dBCorner); %initCalMask |= int(Link.Talise.CalMask.DcOffset); %initCalMask |= int(Link.Talise.CalMask.RxGainDelay); %initCalMask |= int(Link.Talise.CalMask.FlashCal); %initCalMask |= int(Link.Talise.CalMask.PathDelay); %initCalMask |= int(Link.Talise.CalMask.TxLoLeakageInternal); %initCalMask |= int(Link.Talise.CalMask.TxQecInit); %initCalMask |= int(Link.Talise.CalMask.LoopbackRxLoDelay); %initCalMask |= int(Link.Talise.CalMask.LoopbackRxRxQecInit); %initCalMask |= int(Link.Talise.CalMask.RxQecInit); %initCalMask |= int(Link.Talise.CalMask.ORxQecInit); %initCalMask |= int(Link.Talise.CalMask.TxDac); Link.Talise.RunInitCals(hex2dec('65DEF')); Link.Talise.WaitInitCals(60000, 0); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Framer/Deframer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Link.FpgaTalise.EnableJesd204bFramer(AdiCmdServerClient.FpgaFramerSelect.DisableAll); Link.FpgaTalise.ResetFpgaIp(AdiCmdServerClient.FpgaResets.TxJesdRst); Link.FpgaTalise.ResetFpgaIp(AdiCmdServerClient.FpgaResets.ClearAllRst); Link.FpgaTalise.EnableJesd204bFramer(AdiCmdServerClient.FpgaFramerSelect.FramerA); Link.Talise.EnableDeframerLink(AdiCmdServerClient.DeframerSelect.DeframerA, 0); Link.Talise.EnableDeframerLink(AdiCmdServerClient.DeframerSelect.DeframerA, 1); Link.Talise.EnableSysrefToDeframer(AdiCmdServerClient.DeframerSelect.DeframerA, 1); Link.FpgaTalise.EnableJesd204bDeframer(AdiCmdServerClient.FpgaDeframerSelect.DisableAll); Link.Talise.EnableFramerTestData(AdiCmdServerClient.FramerSelect.FramerA, AdiCmdServerClient.FramerDataSource.FtdAdcData, AdiCmdServerClient.FramerInjectPoint.FtdFramerInput); Link.Talise.EnableFramerTestData(AdiCmdServerClient.FramerSelect.FramerB, AdiCmdServerClient.FramerDataSource.FtdAdcData, AdiCmdServerClient.FramerInjectPoint.FtdFramerInput); Link.FpgaTalise.ResetFpgaIp(AdiCmdServerClient.FpgaResets.ClearAllRst); Link.FpgaTalise.ResetFpgaIp(AdiCmdServerClient.FpgaResets.RxJesdRst); Link.FpgaTalise.ResetFpgaIp(AdiCmdServerClient.FpgaResets.ClearAllRst); Link.FpgaTalise.EnableJesd204bDeframer(AdiCmdServerClient.FpgaDeframerSelect.DeframerA); Link.Talise.EnableFramerLink(AdiCmdServerClient.FramerSelect.FramerA, 0); Link.Talise.EnableFramerLink(AdiCmdServerClient.FramerSelect.FramerA, 1); Link.Talise.EnableSysrefToFramer(AdiCmdServerClient.FramerSelect.FramerA, 1); Link.Ad9528.RequestSysref(1); Link.Talise.ReadFramerStatus(AdiCmdServerClient.FramerSelect.FramerA); Link.Talise.ReadDeframerStatus(AdiCmdServerClient.DeframerSelect.DeframerA); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Tracking Cals %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% pause(1); %trackingCalMask = 0 Link.Talise.EnableTrackingCals(0); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % GainWithFloatingPoint or GainWithNoCompensation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Ensure Stream File has been set to receive Floating Point Data rxDataFormatter = AdiCmdServerClient.TaliseRxDataFormat; rxDataFormatter.FormatSelect = (AdiCmdServerClient.RxDataFormatModes.GainCompensationDisabled); rxDataFormatter.FpNumExpBits = (AdiCmdServerClient.FpExponentModes.TwoExponentBits); rxDataFormatter.FpRoundMode = (AdiCmdServerClient.FpRoundingModes.RoundToEven); rxDataFormatter.FpRx1Atten = (AdiCmdServerClient.FpAttenSteps.FpAtten0dB); rxDataFormatter.FpRx2Atten = (AdiCmdServerClient.FpAttenSteps.FpAtten0dB); rxDataFormatter.FpHideLeadingOne = (1); rxDataFormatter.IntEmbeddedBits = (AdiCmdServerClient.EmbeddedBits.Embed1SlicerBitAtLsb); rxDataFormatter.IntSampleResolution = (rxDataFormatter.IntSampleRes.Integer12Bit2sComp); Link.Talise.SetRxDataFormat(rxDataFormatter); %Link.Talise.SetRxDataFormat(TaliseRxDataFormat.0,0,0,0,0,1,0,0,2,0,0,3,3,0,0); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Set Gain & Attenuation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Link.Talise.SetRxManualGain(AdiCmdServerClient.RxChannel.Rx1, 255); Link.Talise.SetRxManualGain(AdiCmdServerClient.RxChannel.Rx2, 255); Link.Talise.SetObsRxManualGain(AdiCmdServerClient.ObsRxChannel.ObsRx1, 255); Link.Talise.SetObsRxManualGain(AdiCmdServerClient.ObsRxChannel.ObsRx2, 255); Link.Talise.SetTxAttenuation(AdiCmdServerClient.TxChannel.Tx1, 0); Link.Talise.SetTxAttenuation(AdiCmdServerClient.TxChannel.Tx2, 0); Link.hw.Disconnect();
I have successfully imported AdiCmdServerClient.dll, and the DLL is visible to MATLAB. At the same time, I also refer to the technical documentation and related posts,
but I still cannot control ADRV9009+ZCU706 through MATLAB, and the related error is as follows:
Can a corresponding answer be given。
thanks