public static void EnableRxFramerPrbs([Values(Mykonos.MYK_PRBS_ORDER.PRBS7, Mykonos.MYK_PRBS_ORDER.PRBS15, Mykonos.MYK_PRBS_ORDER.PRBS31)] Mykonos.MYK_PRBS_ORDER prbsorder) { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); //reset the device Link.Mykonos.resetDevice(); System.Threading.Thread.Sleep(100); //setting SPI channel for 4-wire mode Link.setSpiChannel(1); Link.spiWrite(0x000, 0x18); Link.Mykonos.enableRxFramerPrbs(prbsorder, 1); byte PRBSspi = Link.spiRead(0x72); if (prbsorder == Mykonos.MYK_PRBS_ORDER.PRBS7) { Assert.AreEqual(PRBSspi, 0x01, "PRBS7 mismatch"); } else if (prbsorder == Mykonos.MYK_PRBS_ORDER.PRBS15) { Assert.AreEqual(PRBSspi, 0x03, "PRBS15 mismatch"); } else { Assert.AreEqual(PRBSspi, 0x05, "PRBS31 mismatch"); } Link.Disconnect(); }
public static void MykonosReadTIA3dbCorner() { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); Link.setSpiChannel(TestSetup.MykonosSpi); //Just for debug -read TIA 3dB corner byte spiReg = 0; double rx1TiaCap = 480; //fF double rx2TiaCap = 480; //fF spiReg = Link.spiRead(0x224); Debug.WriteLine("0xRCAL code = " + spiReg.ToString("X")); spiReg = Link.spiRead(0x693); Debug.WriteLine("0x693 = " + spiReg.ToString("X")); rx1TiaCap += ((spiReg & 0x3F) * 10); spiReg = Link.spiRead(0x694); Debug.WriteLine("0x694 = " + spiReg.ToString("X")); rx1TiaCap += ((spiReg & 0x1F) * 320); Console.WriteLine("Rx1 TIA 3dB corner = " + (1 / (2 * System.Math.PI * 1100 * rx1TiaCap * System.Math.Pow(10, -9))) + " MHz"); spiReg = Link.spiRead(0x695); Debug.WriteLine("0x695 = " + spiReg.ToString("X")); rx2TiaCap += ((spiReg & 0x3F) * 10); spiReg = Link.spiRead(0x696); Debug.WriteLine("0x696 = " + spiReg.ToString("X")); rx2TiaCap += ((spiReg & 0x1F) * 320); Console.WriteLine("Rx1 TIA 3dB corner = " + (1 / (2 * System.Math.PI * 1100 * rx2TiaCap * System.Math.Pow(10, -9))) + " MHz"); Link.Disconnect(); }
public static void MykonosCheckRxFramerLink() { //TODO: Possible convert these to SPI Writes AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); Link.setSpiChannel(TestSetup.MykonosSpi); byte status = Link.Mykonos.readRxFramerStatus(); Console.WriteLine("Framer Status: " + status.ToString("X")); Assert.AreEqual(0x20, (status & 0x20), "SYSREF not received by Mykonos Rx Framer IP"); status = Link.Mykonos.readOrxFramerStatus(); Console.WriteLine("ObsRx Framer Status: " + status.ToString("X")); Assert.AreEqual(0x20, (status & 0x20), "SYSREF not received by Mykonos ObsRx Framer IP"); UInt32 syncStatus = Link.FpgaMykonos.readSyncbStatus(); Console.WriteLine("SYNC Status: " + syncStatus.ToString("X")); Assert.AreEqual(0x02, (syncStatus & 0x2), "RXSYNBC not asserted, Rx JESD204 Link down."); Link.Disconnect(); }
public static void EnableDeframerPrbsChecker([Values(Mykonos.MYK_PRBS_ORDER.PRBS7, Mykonos.MYK_PRBS_ORDER.PRBS15, Mykonos.MYK_PRBS_ORDER.PRBS31)] Mykonos.MYK_PRBS_ORDER prbsorder) { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); //setting SPI channel for 4-wire mode Link.setSpiChannel(1); Link.spiWrite(0x000, 0x18); Link.Mykonos.enableDeframerPrbsChecker(0xF, prbsorder, 1); byte PRBSspi = Link.spiRead(0xA5); if (prbsorder == Mykonos.MYK_PRBS_ORDER.PRBS7) { Assert.AreEqual(PRBSspi, 0xF1, "PRBS7 mismatch"); } else if (prbsorder == Mykonos.MYK_PRBS_ORDER.PRBS15) { Assert.AreEqual(PRBSspi, 0xF3, "PRBS15 mismatch"); } else { Assert.AreEqual(PRBSspi, 0xF5, "PRBS31 mismatch"); } Link.Disconnect(); }
public static void SetTxPllFrequencyTo700Mhz() { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); Link.setSpiChannel(MykonosSpi); Link.Mykonos.setRfPllFrequency(Mykonos.PLLNAME.TX_PLL, 700000000); System.Threading.Thread.Sleep(1000); byte spiData1 = 0x0; //Check Tx PLL Lock spiData1 = Link.spiRead(0x2C7); Console.WriteLine("Myk: Tx Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: Tx CLK Syn not locked"); //Check Tx VCO Divider, //For 700Mhz Expecting 0x3 spiData1 = Link.spiRead(0x2F2); Console.WriteLine("SPI Addr: 0x2F2:" + spiData1.ToString("X")); Assert.AreEqual(0x03, spiData1 & 0x0F, "Myk: Tx VCO Divider not as expected"); //Check Tx Synth SDM Integer //For 700Mhz ref Clock 61.44Mhz Expecting 0x0B6 spiData1 = Link.spiRead(0x2B1); Console.WriteLine("SPI Addr: 0x2B1:" + spiData1.ToString("X")); Assert.AreEqual(0xB6, spiData1 & 0xFF, "Myk: Tx Synth SDM Int not as expected"); spiData1 = Link.spiRead(0x2B2); Console.WriteLine("SPI Addr: 0x2B2:" + spiData1.ToString("X")); Assert.AreEqual(0x00, spiData1 & 0x07, "Myk: Tx Synth SDM Int not as expected"); //Check Tx Synth SDM FRAC //For 700Mhz ref Clock 61.44Mhz Expecting 0x255300 spiData1 = Link.spiRead(0x2B3); Console.WriteLine("SPI Addr: 0x2B3:" + spiData1.ToString("X")); Assert.AreEqual(0x00, spiData1 & 0xFF, "Myk: Tx Synth SDM LBS Int not as expected"); spiData1 = Link.spiRead(0x2B4); Console.WriteLine("SPI Addr: 0x2B4:" + spiData1.ToString("X")); Assert.AreEqual(0x53, spiData1 & 0xFF, "Myk: Tx Synth SDM Int not as expected"); spiData1 = Link.spiRead(0x2B5); Console.WriteLine("SPI Addr: 0x2B5:" + spiData1.ToString("X")); Assert.AreEqual(0x25, spiData1 & 0x7F, "Myk: Tx Synth SDM Int MSB not as expected"); //Check All PLL Lock Status spiData1 = Link.spiRead(0x157); Console.WriteLine("Myk: Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: CLK PLL not locked"); spiData1 = Link.spiRead(0x257); Console.WriteLine("Myk: Rx Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: Rx CLK Syn not locked"); spiData1 = Link.spiRead(0x2C7); Console.WriteLine("Myk: Tx Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: Tx CLK Syn not locked"); spiData1 = Link.spiRead(0x357); Console.WriteLine("Myk: SnRx Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: SnRx CLK Syn not locked"); spiData1 = Link.spiRead(0x17F); Console.WriteLine("Myk: Cal PLL Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: Cal PLL not locked"); ulong readBack = 0; Link.Mykonos.getRfPllFrequency(Mykonos.PLLNAME.TX_PLL, ref readBack); Assert.AreEqual(700000000, readBack, "Tx PLL Frequency Readback Not as Expected"); Link.Disconnect(); }
public static void CheckRunInitCalsFromReady() { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); Link.hw.ReceiveTimeout = 0; Link.setSpiChannel(MykonosSpi); byte spiData1 = 0x0; Console.WriteLine("Starting CheckRunInitCalsFromReady Test"); //Test Setup Check ARM in READY STATE spiData1 = Link.spiRead(0xD40); Console.WriteLine("SPI Addr: 0xD40:" + spiData1.ToString("X")); Assert.AreEqual(0x1, (spiData1 & 0x3), "Myk: Test Setup Failed Radio State is Not in READY STATE"); //Run Init Cals UInt32 testCalMask = 0x0; testCalMask = settings.calMask; Console.WriteLine("Test Setup: Cals" + testCalMask.ToString("X")); TestSetup.MykonosInitCals(settings); System.Threading.Thread.Sleep(10000); //Check ARM in INIT STATE //Via SPI Readback //Via API UInt32 radioState = 0; spiData1 = Link.spiRead(0xD40); Console.WriteLine("SPI Addr: 0xD40:" + spiData1.ToString("X")); Assert.AreEqual(0x2, (spiData1 & 0x3), "Myk: 1 Radio State is Not in INIT STATE"); Link.Mykonos.getRadioState(ref radioState); Console.WriteLine("MYKONOS RadioState = " + radioState.ToString("X")); Assert.AreEqual(0x2, (radioState & 0x3), "Myk: 2 Radio State not INIT"); //Check which Init calibrations were //Completed Sucessfully during last RUN_INIT byte[] armData = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }; Link.Mykonos.sendArmCommand(GetCmd, new byte[] { IntCalsDoneObjId }, 1); Link.Mykonos.readArmMem(0x20000000, 8, 1, ref armData); //armData[1] is the calmask [15:8], and armData[0] is calmask[7:0] since last init //armData[2] is the calmask [15:8], and armData[3] is calmask[7:0] since power up Console.WriteLine("Init Cals Requested: " + testCalMask.ToString("X")); Console.WriteLine("Init Cals Done Last Power Up: " + armData[2].ToString("X") + armData[3].ToString("X")); Console.WriteLine("Init Cals Done Last Init: " + armData[1].ToString("X") + armData[0].ToString("X")); Assert.AreEqual(testCalMask, ((UInt32)(((UInt32)(armData[1]) << 8) | ((UInt32)(armData[0])))), "Init Cals did not match the mask written to ARM memory"); Link.Disconnect(); }
public static void MykonosCheckInitCals() { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); Link.setSpiChannel(TestSetup.MykonosSpi); Console.WriteLine("InitArmCal(0x" + settings.calMask.ToString("X") + ")"); Console.WriteLine("SPIRead x119: " + Link.spiRead(0x119).ToString("X")); Console.WriteLine("SPIReadxD34: " + Link.spiRead(0xD34).ToString("X")); Link.Disconnect(); }
public static void SweepTxPllFrequency() { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); Link.setSpiChannel(1); Link.Mykonos.init_clocks(settings.mykSettings.DeviceClock_kHz, 9830400, Mykonos.VCODIV.VCODIV_1, 4); double[] freq = { 1.2605E+10, 1.2245E+10, 1.1906E+10, 1.1588E+10, 1.1288E+10, 1.1007E+10, 1.0742E+10, 1.0492E+10, 1.0258E+10, 1.0036E+10, 9.8278E+09, 9.6311E+09, 9.4453E+09, 9.2698E+09, 9.1036E+09, 8.9463E+09, 8.7970E+09, 8.6553E+09, 8.5206E+09, 8.3923E+09, 8.2699E+09, 8.1531E+09, 8.0414E+09, 7.9344E+09, 7.8318E+09, 7.7332E+09, 7.6384E+09, 7.5471E+09, 7.4590E+09, 7.3740E+09, 7.2919E+09, 7.2124E+09, 7.1355E+09, 7.0610E+09, 6.9887E+09, 6.9186E+09, 6.8506E+09, 6.7846E+09, 6.7205E+09, 6.6582E+09, 6.5978E+09, 6.5392E+09, 6.4823E+09, 6.4270E+09, 6.3734E+09, 6.3214E+09, 6.2709E+09, 6.2220E+09, 6.1745E+09, 6.1284E+09, 6.0836E+09, 6.0401E+09, 5.9977E+09 }; byte pllStatus = 0; for (int i = 0; i <= 52; i++) { Link.Mykonos.setRfPllFrequency(Mykonos.PLLNAME.TX_PLL, (UInt64)(freq[i] / 4)); System.Threading.Thread.Sleep(100); byte spiData1 = 0x0; //Check PLL Lock Status spiData1 = Link.spiRead(0x157); Console.WriteLine("Myk: Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: CLK PLL not locked"); spiData1 = Link.spiRead(0x257); Console.WriteLine("Myk: Rx Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: Rx CLK Syn not locked"); spiData1 = Link.spiRead(0x2C7); Console.WriteLine("Myk: Tx Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: Tx CLK Syn not locked"); spiData1 = Link.spiRead(0x357); Console.WriteLine("Myk: SnRx Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: SnRx CLK Syn not locked"); spiData1 = Link.spiRead(0x17F); Console.WriteLine("Myk: Cal PLL Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: Cal PLL not locked"); Console.WriteLine("Frequency: " + freq[i] / 4 + ", PLL Status: 0x" + pllStatus.ToString("X")); //TODO: Check if these need to be Added to Pass Criteria byte vcoOutLevel = (byte)(Link.spiRead(0x2BA) & 0x0F); byte vcoVar = (byte)(Link.spiRead(0x2B9) & 0xF); byte vcoBiasRef = (byte)(Link.spiRead(0x2C2) & 0x7); byte vcoBiasTcf = (byte)((Link.spiRead(0x2C2) >> 3) & 0x3); byte vcoCalOffset = (byte)((Link.spiRead(0x2B8) >> 3) & 0xF); byte vcoVarRef = (byte)(Link.spiRead(0x2D1) & 0xF); byte iCp = (byte)(Link.spiRead(0x2BB) & 0x3F); byte lfC2 = (byte)((Link.spiRead(0x2BE) >> 4) & 0xF); byte lfC1 = (byte)(Link.spiRead(0x2BE) & 0xF); byte lfR1 = (byte)((Link.spiRead(0x2BF) >> 4) & 0xF); byte lfC3 = (byte)(Link.spiRead(0x2BF) & 0xF); byte lfR3 = (byte)(Link.spiRead(0x2C0) & 0xF); Console.WriteLine(freq[i] + "\t" + vcoOutLevel + "\t" + vcoVar + "\t" + vcoBiasRef + "\t" + vcoBiasTcf + "\t" + vcoCalOffset + "\t" + vcoVarRef + "\t" + iCp + "\t" + lfC2 + "\t" + lfC1 + "\t" + lfR1 + "\t" + lfC3 + "\t" + lfR3); } Link.Disconnect(); }
public static void SetTxPllFrequency() { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); Link.setSpiChannel(1); //Link.spiWrite(0x2B0, 0x4); //Link.spiWrite(0x233, 0x1B); Link.Mykonos.setRfPllFrequency(Mykonos.PLLNAME.TX_PLL, 700000000); System.Threading.Thread.Sleep(1000); //Link.spiWrite(0x2B0, 0x05); byte pllStatus = Link.Mykonos.checkPllsLockStatus(); Console.WriteLine("PLL Status: 0x" + pllStatus.ToString("X")); UInt16[] spiAddr = new UInt16[35]; byte[] spiData = null; for (int j = 0; j < 35; j++) { spiAddr[j] = (UInt16)(0x2B0 + j); } spiData = Link.spiRead(spiAddr); for (int j = 0; j < 35; j++) { Console.WriteLine("SPI Addr: " + spiAddr[j].ToString("X") + ": " + spiData[j].ToString("X")); } byte spiData1 = Link.spiRead(0x382); Console.WriteLine("SPI Addr: 0x382:" + spiData1.ToString("X")); spiData1 = Link.spiRead(0x230); Console.WriteLine("SPI Addr: 0x230:" + spiData1.ToString("X")); spiData1 = Link.spiRead(0x231); Console.WriteLine("SPI Addr: 0x231:" + spiData1.ToString("X")); spiData1 = Link.spiRead(0x232); Console.WriteLine("SPI Addr: 0x232:" + spiData1.ToString("X")); spiData1 = Link.spiRead(0x233); Console.WriteLine("SPI Addr: 0x233:" + spiData1.ToString("X")); spiData1 = Link.spiRead(0x157); Console.WriteLine("SPI Addr: 0x157:" + spiData1.ToString("X")); spiData1 = Link.spiRead(0x257); Console.WriteLine("SPI Addr: 0x257:" + spiData1.ToString("X")); spiData1 = Link.spiRead(0x2C7); Console.WriteLine("SPI Addr: 0x2C7:" + spiData1.ToString("X")); spiData1 = Link.spiRead(0x357); Console.WriteLine("SPI Addr: 0x357:" + spiData1.ToString("X")); spiData1 = Link.spiRead(0x17F); Console.WriteLine("SPI Addr: 0x17F:" + spiData1.ToString("X")); Link.Disconnect(); }
public static void MykonosCheckTxDeFramerLink() { //TODO: Possible convert these to SPI Writes AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); Link.setSpiChannel(TestSetup.MykonosSpi); Console.WriteLine("Mykonos Deframer Status: " + Link.Mykonos.readDeframerStatus().ToString("X")); byte spiReg = 0; spiReg = Link.spiRead(0x1B0); Console.WriteLine("SPI Reg x1B0 = " + spiReg.ToString("X")); Link.Disconnect(); }
public static void ReadRxGainTable() { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); byte spiReg1 = 0; byte spiReg2 = 0; byte index = 0; byte feGain = 0; byte extControl = 0; byte digGain = 0; byte enableAtten = 0; Link.setSpiChannel(1); Link.spiWrite(0x00A, 0x84); spiReg1 = Link.spiRead(0x00A); Console.WriteLine("Scratch Reg Test: " + spiReg1.ToString("X")); Assert.AreEqual(0x84, spiReg1, "SPI not working"); Link.spiWrite(0x516, 0x0C); //Enable Rx1 gain table for readback Int16[] coefs = new Int16[128]; for (byte i = 255; i > 128; i--) { Link.spiWrite(0x500, i); index = Link.spiRead(0x50A); feGain = Link.spiRead(0x50B); extControl = Link.spiRead(0x50C); spiReg2 = Link.spiRead(0x50D); digGain = (byte)(spiReg2 & 0x7F); enableAtten = (byte)(spiReg2 >> 7); Console.WriteLine(index + ", " + feGain + ", " + extControl + ", " + digGain + ", " + enableAtten); } Link.spiWrite(0x516, 0x08); //Enable Rx1 gain table for readback Link.Disconnect(); }
public static void MykonosInitStatusCheck() { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); Link.setSpiChannel(TestSetup.MykonosSpi); Console.WriteLine("SPIRead x119: " + Link.spiRead(0x119).ToString("X")); Console.WriteLine("SPIRead x157: " + Link.spiRead(0x157).ToString("X")); Console.WriteLine("SPIRead x1B3: " + Link.spiRead(0x1B3).ToString("X")); UInt32 pllStatus = Link.spiRead(0x157); Assert.AreEqual(0x01, pllStatus & 0x01, "CLK PLL not locked"); UInt32 ensmStatus = Link.spiRead(0x1B3); Assert.AreEqual(0x05, ensmStatus & 0x7, "Not in Alert state."); Link.Disconnect(); }
public static void TestMCS() { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); byte mcsStatus = 0; Link.setSpiChannel(1); Link.spiWrite(0x120, 0x00); Link.Mykonos.enableMultichipSync(1, ref mcsStatus); Link.Ad9528.requestSysref(true); Link.Ad9528.requestSysref(true); Link.Ad9528.requestSysref(true); Link.Ad9528.requestSysref(true); Link.Mykonos.enableMultichipSync(0, ref mcsStatus); Link.Disconnect(); }
public static void getPllFrequency([Values(Mykonos.PLLNAME.RX_PLL, Mykonos.PLLNAME.SNIFFER_PLL)] Mykonos.PLLNAME pllName) { AdiCommandServerClient Link = AdiCommandServerClient.Instance; Link.hw.Connect(TestSetupConfig.ipAddr, TestSetupConfig.port); Link.setSpiChannel(MykonosSpi); Link.Mykonos.setRfPllFrequency(pllName, 3500000000); System.Threading.Thread.Sleep(1000); byte spiData1 = 0x0; //Check PLL Lock Status spiData1 = Link.spiRead(0x157); Console.WriteLine("Myk: Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: CLK PLL not locked"); spiData1 = Link.spiRead(0x257); Console.WriteLine("Myk: Rx Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: Rx CLK Syn not locked"); spiData1 = Link.spiRead(0x2C7); Console.WriteLine("Myk: Tx Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: Tx CLK Syn not locked"); spiData1 = Link.spiRead(0x357); Console.WriteLine("Myk: SnRx Clk Syn Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: SnRx CLK Syn not locked"); spiData1 = Link.spiRead(0x17F); Console.WriteLine("Myk: Cal PLL Stat:" + spiData1.ToString("X")); Assert.AreEqual(0x01, spiData1 & 0x01, "Myk: Cal PLL not locked"); ulong readBack = 0; Link.Mykonos.getRfPllFrequency(Mykonos.PLLNAME.CLK_PLL, ref readBack); Console.Write("Test" + settings.rxProfileData.ClkPllFrequency_kHz); Assert.AreEqual(settings.rxProfileData.ClkPllFrequency_kHz, (readBack / 1000), "CLKPLL Frequency Readback Not as Expected"); Console.WriteLine("Clk Pll Frequency: " + readBack); Link.Mykonos.getRfPllFrequency(pllName, ref readBack); Assert.AreEqual(3500000000, readBack, "PLL Frequency Readback Not as Expected"); Link.Disconnect(); }