Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        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();
        }
Exemplo n.º 9
0
        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();
        }
Exemplo n.º 10
0
        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();
        }
Exemplo n.º 11
0
        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();
        }
Exemplo n.º 12
0
        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();
        }
Exemplo n.º 13
0
        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();
        }
Exemplo n.º 14
0
        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();
        }