void test_scrambling(LTE_PHY_PARAMS *lte_phy_params) { std::cout << "Tx scrambling starts" << std::endl; // ReadInputFromFiles(lte_phy_params->scramb_in, lte_phy_params->scramb_in_buf_sz, "../testsuite/ScrambleInput"); GeneRandomInput(lte_phy_params->scramb_in, lte_phy_params->scramb_in_buf_sz, "../testsuite/RandomScrambleInput"); GenScrambInt(lte_phy_params->scramb_seq_int, lte_phy_params->scramb_in_buf_sz); // double tstart, tend, ttime; // tstart = dtime(); // for (int i = 0; i < 1; i++) { Scrambling(lte_phy_params, lte_phy_params->scramb_in, lte_phy_params->scramb_out); // } // tend = dtime(); // ttime = tend - tstart; // printf("%fms\n", ttime); WriteOutputToFiles(lte_phy_params->scramb_out, lte_phy_params->scramb_out_buf_sz, "../testsuite/testScrambleOutput"); std::cout << "Tx scrambling ends" << std::endl; }
void Descrambling(/*LTE_PHY_PARAMS *lte_phy_params, */float pInpSeq[N_SCRAMB_IN_MAX], float pOutSeq[N_SCRAMB_OUT_MAX], int n) { // int n_inp; float scramb_seq_float[N_SCRAMB_IN_MAX]; int scramb_seq_int[N_SCRAMB_IN_MAX]; int i; // n_inp = lte_phy_params->scramb_in_buf_sz; // Generate integer scrambling sequence GenScrambInt(scramb_seq_int, n); /* for (i = 0; i < n_inp; i++) { if (1 == scramb_seq_int[i]) { scramb_seq_float[i] = -1.0; } else { scramb_seq_float[i] = +1.0; } } for (i = 0; i < n_inp; i++) pOutSeq[i] = pInpSeq[i] * scramb_seq_float[i]; */ for (i = 0; i < n; i++) { pOutSeq[i] = (pInpSeq[i] * (scramb_seq_int[i] * (-2.0) + 1.0)); } }
void test_scrambling(LTE_PHY_PARAMS *lte_phy_params) { std::cout << "Tx scrambling starts" << std::endl; // ReadInputFromFiles(lte_phy_params->scramb_in, lte_phy_params->scramb_in_buf_sz, "../testsuite/ScrambleInput"); GeneRandomInput(lte_phy_params->scramb_in, lte_phy_params->scramb_in_buf_sz, "/root/Scrambling/testsuite/RandomScrambleInput"); // GeneRandomInput(lte_phy_params->scramb_in, lte_phy_params->scramb_in_buf_sz, "../testsuite/RandomScrambleInput"); GenScrambInt(lte_phy_params->scramb_seq_int, lte_phy_params->scramb_in_buf_sz); Scrambling(lte_phy_params, lte_phy_params->scramb_in, lte_phy_params->scramb_out); WriteOutputToFiles(lte_phy_params->scramb_out, lte_phy_params->scramb_out_buf_sz, "/root/Scrambling/testsuite/testScrambleOutput"); // WriteOutputToFiles(lte_phy_params->scramb_out, lte_phy_params->scramb_out_buf_sz, "../testsuite/testScrambleOutput"); std::cout << "Tx scrambling ends" << std::endl; }
void test_descrambling(LTE_PHY_PARAMS *lte_phy_params) { std::cout << "Rx descrambling starts" << std::endl; float *rx_scramb_in = (float *)malloc(lte_phy_params->descramb_in_buf_sz * sizeof(float)); float *rx_scramb_out = (float *)malloc(lte_phy_params->descramb_out_buf_sz * sizeof(float)); int i; ReadInputFromFiles(lte_phy_params->descramb_in, lte_phy_params->descramb_in_buf_sz, "/root/Scrambling/testsuite/testScrambleOutput"); // ReadInputFromFiles(lte_phy_params->descramb_in, lte_phy_params->descramb_in_buf_sz, "../testsuite/testScrambleOutput"); // ReadInputFromFiles(rx_scramb_in, in_buf_sz, "testScrambleOutput"); for (i = 0; i < lte_phy_params->descramb_in_buf_sz; i++) { if (lte_phy_params->descramb_in[i] == 0) rx_scramb_in[i] = -1.0; else rx_scramb_in[i] = 1.0; } GenScrambInt(lte_phy_params->scramb_seq_int, lte_phy_params->scramb_in_buf_sz); Descrambling(lte_phy_params, rx_scramb_in, rx_scramb_out); double energy,ttime,tbegin; micpower_start(); tbegin = dtime(); // Descrambling(lte_phy_params, lte_phy_params->descramb_in, lte_phy_params->descramb_out); for(i = 0;i < 100000; i++) Descrambling(lte_phy_params, rx_scramb_in, rx_scramb_out); ttime = dtime() - tbegin; energy = micpower_finalize(); // printf("Energy used in %lf\n", energy); // printf("whole time is %fms\n", ttime); printf("%lf\t%f\t%f\n", energy, ttime, (energy * 1000.0) / ttime); for (i = 0; i < lte_phy_params->descramb_out_buf_sz; i++) { if (rx_scramb_out[i] > 0) lte_phy_params->descramb_out[i] = 1.0; else lte_phy_params->descramb_out[i] = 0.0; } WriteOutputToFiles(lte_phy_params->descramb_out, lte_phy_params->descramb_out_buf_sz, "/root/Scrambling/testsuite/testDescrambleOutput"); // WriteOutputToFiles(lte_phy_params->descramb_out, lte_phy_params->descramb_out_buf_sz, "../testsuite/testDescrambleOutput"); cout << "Rx descrambling ends" << endl; }
void Scrambling(LTE_PHY_PARAMS *lte_phy_params, int *pInpSeq, int *pOutSeq) { int n_inp; int scramb_seq_int[N_SCRAMB_IN_MAX]; int i; n_inp = lte_phy_params->scramb_in_buf_sz; GenScrambInt(scramb_seq_int, n_inp); ////////////////////////Scrambling//////////////////////////// for (i = 0; i < n_inp; i++) { pOutSeq[i] = (pInpSeq[i] + scramb_seq_int[i]) % 2; } ////////////////////////END Scrambling//////////////////////////// }
void Scrambling(/*LTE_PHY_PARAMS *lte_phy_params, */int pInpSeq[N_SCRAMB_IN_MAX], int pOutSeq[N_SCRAMB_OUT_MAX], int n) { // int n_inp; int scramb_seq_int[N_SCRAMB_IN_MAX]; int i; // n_inp = lte_phy_params->scramb_in_buf_sz; GenScrambInt(scramb_seq_int, n); ////////////////////////Scrambling//////////////////////////// Scrambling_label1:for (i = 0; i < n; i++) { #pragma HLS PIPELINE pOutSeq[i] = (pInpSeq[i] + scramb_seq_int[i]) % 2; } ////////////////////////END Scrambling//////////////////////////// }
void test_descrambling(LTE_PHY_PARAMS *lte_phy_params) { std::cout << "Rx descrambling starts" << std::endl; float *rx_scramb_in = (float *)malloc(lte_phy_params->descramb_in_buf_sz * sizeof(float)); float *rx_scramb_out = (float *)malloc(lte_phy_params->descramb_out_buf_sz * sizeof(float)); int i; ReadInputFromFiles(lte_phy_params->descramb_in, lte_phy_params->descramb_in_buf_sz, "../testsuite/testScrambleOutput"); // ReadInputFromFiles(rx_scramb_in, in_buf_sz, "testScrambleOutput"); GenScrambInt(lte_phy_params->scramb_seq_int, lte_phy_params->descramb_in_buf_sz); for (i = 0; i < lte_phy_params->descramb_in_buf_sz; i++) { if (lte_phy_params->descramb_in[i] == 0) rx_scramb_in[i] = -1.0; else rx_scramb_in[i] = 1.0; } int n_iters = 1; for (i = 0; i < n_iters; i++) { Descrambling(lte_phy_params, rx_scramb_in, rx_scramb_out); } for (i = 0; i < lte_phy_params->descramb_out_buf_sz; i++) { if (rx_scramb_out[i] > 0) lte_phy_params->descramb_out[i] = 1.0; else lte_phy_params->descramb_out[i] = 0.0; } WriteOutputToFiles(lte_phy_params->descramb_out, lte_phy_params->descramb_out_buf_sz, "../testsuite/testDescrambleOutput"); cout << "Rx descrambling ends" << endl; }
void Descrambling(/*LTE_PHY_PARAMS *lte_phy_params, */float pInpSeq[/*N_SCRAMB_IN_MAX*/ N_SCRAMB_IN], float pOutSeq[/*N_SCRAMB_OUT_MAX*/ N_SCRAMB_OUT], int n) { // int n_inp; float scramb_seq_float[N_SCRAMB_IN_MAX]; int scramb_seq_int[N_SCRAMB_IN_MAX]; int i; printf("%d %d\n", N_SCRAMB_IN, n); // n_inp = lte_phy_params->scramb_in_buf_sz; // Generate integer scrambling sequence GenScrambInt(scramb_seq_int, n); /* for (i = 0; i < n_inp; i++) { if (1 == scramb_seq_int[i]) { scramb_seq_float[i] = -1.0; } else { scramb_seq_float[i] = +1.0; } } for (i = 0; i < n_inp; i++) pOutSeq[i] = pInpSeq[i] * scramb_seq_float[i]; */ for (i = 0; i < /*n*/ N_SCRAMB_IN; i++) { #pragma HLS PIPELINE II=4 pOutSeq[i] = (pInpSeq[i] * (scramb_seq_int[i] * (-2.0) + 1.0)); } }