static void TestDDR() { const uint dataLength = 16 * 1024; const UInt32 srcAddr = 0x10000000; const UInt32 destAddr = 0x20000000; int i; UInt32[] dataIn = new UInt32[dataLength]; for (i = 0; i < dataLength; i++) { dataIn[i] = (UInt32)i; } FpgaOp.DdrWrite(dataIn, srcAddr, dataLength); // DMA copy FpgaOp.DdrCopy(srcAddr, destAddr, dataLength); UInt32[] dataOut = new UInt32[dataLength]; for (i = 0; i < dataLength; i++) { dataOut[i] = 0; } FpgaOp.DdrRead(dataOut, destAddr, dataLength); for (i = 0; i < dataLength; i++) { if (dataIn[i] != dataOut[i]) { break; } } if (i == dataLength) { Console.WriteLine("DDR Test Passed!"); } else { Console.WriteLine("DDR Test Failed!"); } }
static void Main(string[] args) { SessionOpen(); ShowAddressMap(); #region Test //TestMemory(); //TestRegOperation(); //TestDDR(); #endregion //goto label; #region ET Test const int numOfSamples = 1024; const int osr = 8; const UInt64 Et_RegBase = 0x21000; const UInt64 Streamer_DMA_RegBase = 0x20000; const UInt64 paInAddr = 0x02000000; const UInt64 envOutAddr = 0x03000000; //Step 1. Load Waveform into DDR StreamReader sr = new StreamReader(@"c:\wjh\IQ.csv"); double[] iqData = new double[numOfSamples * 2]; string line = ""; int LineNumber = 0; while ((line = sr.ReadLine()) != null) { var iq = line.Split(','); var iData = float.Parse(iq[0]); var qData = float.Parse(iq[1]); if (LineNumber < numOfSamples) { iqData[2 * LineNumber] = iData; iqData[2 * LineNumber + 1] = qData; } LineNumber++; } var fixedPointData = ScaleToFixedPoint(iqData, true, ref scaleFactor); Console.WriteLine("scaleFactor = {0}", scaleFactor); var dataToDdr = PackToUInt32(fixedPointData); FpgaOp.DdrWrite(dataToDdr, paInAddr, numOfSamples); //Step 2. Setup ET registers FpgaOp.RegWrite(Et_RegBase + 0x4, 0x80000000 / osr); // Resampler rate = 1 FpgaOp.RegWrite(Et_RegBase + 0x10, numOfSamples); // Input Sample=1024 FpgaOp.RegWrite(Et_RegBase + 0x14, numOfSamples * osr); // Output Sample=1024 FpgaOp.RegWrite(Et_RegBase + 0x8, 0); FpgaOp.RegWrite(Et_RegBase + 0xc, 0); FpgaOp.RegWrite(Et_RegBase + 0x18, 0); var shapingTable = CreateShapingTable(); FpgaOp.RegArrayWrite(shapingTable, Et_RegBase + 0x400, 256); //Shaping Table FpgaOp.RegWrite(Et_RegBase + 0x0, 1); // Clr //Step 3. Setup Streamer32 ConfigS2MM(Streamer_DMA_RegBase, envOutAddr, numOfSamples * osr * 2); // envOut each sample 2 bytes ConfigMM2S(Streamer_DMA_RegBase, paInAddr, numOfSamples * 4); // paIn each sample 4 bytes //Step 4. Read back the ET output UInt32[] dataFromDdr = new UInt32[numOfSamples * osr / 2]; FpgaOp.DdrRead(dataFromDdr, envOutAddr, numOfSamples * osr / 2); var envData = UnpackToShort(dataFromDdr); var envData_Double = ScaleToFloatingPoint(envData); #endregion //label: //Step 5. Write Env output to file StreamWriter sw = new StreamWriter(@"c:\wjh\EnvOut.csv"); for (int i = 0; i < envData_Double.Length; i++) { sw.WriteLine("{0}", envData_Double[i]); } sw.Close(); SessionClose(); Console.ReadKey(); }