Exemplo n.º 1
0
void rx_rate_matching(LTE_PHY_PARAMS *lte_phy_params)
{
	std::cout << "Rx RateMatching starts" << std::endl;

	ReadInputFromFiles(lte_phy_params->rdm_in, lte_phy_params->rdm_in_buf_sz, "/root/RateMatching/testsuite/testTxRateMatchOutput");
//	ReadInputFromFiles(rx_rm_in, in_buf_sz, "RxRateMatchInput");

	RxRateMatching(lte_phy_params, lte_phy_params->rdm_in, lte_phy_params->rdm_out, lte_phy_params->rdm_hard);


//	WriteOutputToFiles(lte_phy_params->rdm_out, lte_phy_params->rdm_out_buf_sz, "testRxRateMatchOutput");
	WriteOutputToFiles(lte_phy_params->rdm_out, lte_phy_params->rdm_out_buf_sz, "/root/RateMatching/testsuite/testRxRateMatchOutput");

	std::cout << "Rx RateMatching ends" << std::endl;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
int main()
{
cout<<"Rx RateMatcher"<<endl;
BSPara BS;
BS.initBSPara();
UserPara User(&BS);
RxRateMatch RxRM(&BS);
//FIFO<float> RxRMIn(1,RxRM.InBufSz);
FIFO<float> RxRMOut(1,RxRM.OutBufSz);
ReadInputFromFiles(RxRM.pInpBuf,(RxRM.InBufSz),"RxRateMatchInput");
//GeneRandomInput(RxRM.pInpBuf,RxRM.InBufSz,"RxRateMatchRandomInput");
//GeneRandomInput(RxRM.pInpBuf,RxRM.InBufSz);
RxRM.RxRateMatching(&RxRMOut);
WriteOutputToFiles(&RxRMOut,(RxRM.OutBufSz),"testRxRateMatchOutput");
//ReadOutput(&RxRMOut,(RxRM.OutBufSz));
return 0;
}
Exemplo n.º 4
0
int main()
{
cout<<"Tx RateMatcher"<<endl;
BSPara BS;
BS.initBSPara();
UserPara User(&BS);
TxRateMatch TxRM(&User);
//FIFO<int> TxRMIn(1,TxRM.InBufSz);
FIFO<int> TxRMOut(1,TxRM.OutBufSz);
ReadInputFromFiles(TxRM.pInpBuf,(TxRM.InBufSz),"TxRateMatchInput");
//GeneRandomInput(TxRM.pInpBuf,TxRM.InBufSz,"TxRateMatchRandomInput");
//GeneRandomInput(TxRM.pInpBuf,TxRM.InBufSz);
TxRM.TxRateMatching(&TxRMOut);
WriteOutputToFiles(&TxRMOut,(TxRM.OutBufSz),"testTxRateMatchOutput");
//ReadOutput(&TxRMOut,(TxRM.OutBufSz));
return 0;
}
Exemplo n.º 5
0
int main()
{
cout<<"Descrambler"<<endl;
BSPara BS;
BS.initBSPara();
UserPara User(&BS);
Descramble DSCRB(&BS);
//FIFO<float> DSCRBIn(1,DSCRB.InBufSz);
FIFO<float> DSCRBOut(1,DSCRB.OutBufSz);
ReadInputFromFiles(DSCRB.pInpBuf,DSCRB.InBufSz,"DescrambleInput");
//GeneRandomInput(DSCRB.pInpBuf,DSCRB.InBufSz,"DescrambleRandomInput");
//GeneRandomInput(DSCRB.pInpBuf,DSCRB.InBufSz);
DSCRB.Descrambling(&DSCRBOut);
WriteOutputToFiles(&DSCRBOut,(DSCRB.OutBufSz),"testDescrambleOutput");
//WriteOutputToFiles(&DSCRBOut,(DSCRB.OutBufSz),"DescrambleRandomOutput");
//ReadOutput(&DSCRBOut,(DSCRB.OutBufSz));
return 0;
}
Exemplo n.º 6
0
int main()
{
cout<<"Scrambler"<<endl;
BSPara BS;
BS.initBSPara();
UserPara User(&BS);
Scramble SCRB(&User);
//FIFO<int> SCRBIn(1,SCRB.InBufSz);
FIFO<int> SCRBOut(1,SCRB.OutBufSz);
ReadInputFromFiles(SCRB.pInpBuf,(SCRB.InBufSz),"ScrambleInput");
//GeneRandomInput(SCRB.pInpBuf,SCRB.InBufSz,"ScrambleRandomInput");
//GeneRandomInput(SCRB.pInpBuf,SCRB.InBufSz);
SCRB.Scrambling(&SCRBOut);
WriteOutputToFiles(&SCRBOut,(SCRB.OutBufSz),"testScrambleOutput");
//WriteOutputToFiles(&SCRBOut,(SCRB.OutBufSz),"ScrambleRandomOutput");
//ReadOutput(&SCRBOut,(SCRB.OutBufSz));
return 0;
}
Exemplo n.º 7
0
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;
}
Exemplo n.º 8
0
void test_turbo_decoding(LTE_PHY_PARAMS *lte_phy_params, int n_log_decoder_iters)
{
	std::cout << "Turbo Decoder starts" << std::endl;
	
	ReadInputFromFiles(lte_phy_params->td_in, lte_phy_params->td_in_buf_sz, "../testsuite/testTurboEncoderOutput");
	
	for (int i = 0; i < lte_phy_params->td_in_buf_sz; i++)
	{
		lte_phy_params->td_in[i] = (1 - 2 * lte_phy_params->td_in[i]);
	}

	double tstart, tend, ttime;
	double n_gflops, gflops;

	tstart = dtime();

	int n_test_iters = 1;
	for (int i = 0; i < n_test_iters; i++)
	{
	turbo_decoding(lte_phy_params, lte_phy_params->td_in, lte_phy_params->td_out, n_log_decoder_iters);
	}

	tend = dtime();
	ttime = tend - tstart;
	n_gflops = n_test_iters * gflop_counter(lte_phy_params);
	gflops = (n_gflops * 10e3) / ttime;
//	printf("%fms\n", ttime);
//	printf("Number of gflops = %lf\n", n_gflops);
//	printf("GFlops = %f\n", gflops);

	for (int i = 0; i < lte_phy_params->td_out_buf_sz; i++)
	{
		lte_phy_params->td_out[i] = (1 - lte_phy_params->td_out[i]) / 2;
	}
	
	WriteOutputToFiles(lte_phy_params->td_out, lte_phy_params->td_out_buf_sz, "../testsuite/testTurboDecoderOutput");
	
	std::cout << "Turbo Decoder ends" << std::endl;
}