Fixed include paths in mexfiles and modified makefiles
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4241 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -1,13 +1,13 @@
|
|||||||
include $(OPENAIR1_DIR)/SIMULATION/LTE_PHY/Makefile
|
include $(OPENAIR1_DIR)/SIMULATION/LTE_PHY/Makefile
|
||||||
|
|
||||||
CFLAGS += -DMEX
|
CFLAGS += -DMEX
|
||||||
CFLAGS += -I/packages/matlab_r2012a/extern/include/
|
CFLAGS += -I/opt/MATLAB/extern/include/
|
||||||
|
|
||||||
# Set mex extension, can be determined with mexext function in Matlab
|
# Set mex extension, can be determined with mexext function in Matlab
|
||||||
MEXEXT = mexglx
|
MEXEXT = mexglx
|
||||||
|
|
||||||
# Just compile all the PHY objects
|
# Just compile all the PHY objects
|
||||||
OBJ = $(PHY_OBJS) $(TOP_DIR)/SIMULATION/TOOLS/taus.o
|
OBJ = $(PHY_OBJS) $(TOP_DIR)/SIMULATION/TOOLS/taus.o $(LOG_DIR)/log.o $(LOG_DIR)/vcd_signal_dumper.o
|
||||||
|
|
||||||
# List of all mex-files to compile
|
# List of all mex-files to compile
|
||||||
MEX_FILES += ./PHY/LTE_TRANSPORT/mexfiles/get_tbs.$(MEXEXT)
|
MEX_FILES += ./PHY/LTE_TRANSPORT/mexfiles/get_tbs.$(MEXEXT)
|
||||||
@@ -43,7 +43,7 @@ libs : $(OBJ)
|
|||||||
$(MEX_FILES) : %.$(MEXEXT) : %.c
|
$(MEX_FILES) : %.$(MEXEXT) : %.c
|
||||||
@echo
|
@echo
|
||||||
@echo Compiling $< ...
|
@echo Compiling $< ...
|
||||||
@mex CFLAGS="$(CFLAGS)" -f /homes/wagner/.matlab/R2012a/mexopts.sh -l$(LIBNAME) -L$(LIBDIR) -output $@ $<
|
@mex CFLAGS="$(CFLAGS)" -l$(LIBNAME) -L$(LIBDIR) -output $@ $<
|
||||||
|
|
||||||
mex : $(MEX_FILES)
|
mex : $(MEX_FILES)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* dlsch_channel_compensation_prec.c
|
* dlsch_channel_compensation_prec.c
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* dlsch_channel_level_prec.c
|
* dlsch_channel_level_prec.c
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* dlsch_encoding.c
|
* dlsch_encoding.c
|
||||||
@@ -33,7 +33,7 @@ void mexFunction( int mlhs, mxArray *plhs[],
|
|||||||
LTE_UE_DLSCH_t* dlsch;
|
LTE_UE_DLSCH_t* dlsch;
|
||||||
LTE_DL_FRAME_PARMS *frame_parms;
|
LTE_DL_FRAME_PARMS *frame_parms;
|
||||||
PHY_VARS_UE *phy_vars_ue;
|
PHY_VARS_UE *phy_vars_ue;
|
||||||
extern int *pi2tab[188],*pi5tab[188],*pi4tab[188],*pi6tab[188];
|
extern int *pi2tab16[188],*pi5tab16[188],*pi4tab16[188],*pi6tab16[188];
|
||||||
unsigned int *ptr_td;
|
unsigned int *ptr_td;
|
||||||
int *tmp[1];
|
int *tmp[1];
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ void mexFunction( int mlhs, mxArray *plhs[],
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Create new dlsch */
|
/* Create new dlsch */
|
||||||
dlsch = new_ue_dlsch(Kmimo,Mdlharq,abstraction_flag);
|
dlsch = new_ue_dlsch(Kmimo,Mdlharq,8,25,abstraction_flag);
|
||||||
|
|
||||||
// Init CRC tables
|
// Init CRC tables
|
||||||
crcTableInit();
|
crcTableInit();
|
||||||
@@ -70,16 +70,16 @@ void mexFunction( int mlhs, mxArray *plhs[],
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
memcpy(&tmp[0], &ptr_td[0], sizeof(ptr_td[0]));
|
memcpy(&tmp[0], &ptr_td[0], sizeof(ptr_td[0]));
|
||||||
memcpy(&pi2tab[0], tmp[0], 188*sizeof(pi2tab[0]));
|
memcpy(&pi2tab16[0], tmp[0], 188*sizeof(pi2tab16[0]));
|
||||||
|
|
||||||
memcpy(&tmp[0], &ptr_td[1], sizeof(ptr_td[1]));
|
memcpy(&tmp[0], &ptr_td[1], sizeof(ptr_td[1]));
|
||||||
memcpy(&pi4tab[0], tmp[0], 188*sizeof(pi4tab[0]));
|
memcpy(&pi4tab16[0], tmp[0], 188*sizeof(pi4tab16[0]));
|
||||||
|
|
||||||
memcpy(&tmp[0], &ptr_td[2], sizeof(ptr_td[2]));
|
memcpy(&tmp[0], &ptr_td[2], sizeof(ptr_td[2]));
|
||||||
memcpy(&pi5tab[0], tmp[0], 188*sizeof(pi5tab[0]));
|
memcpy(&pi5tab16[0], tmp[0], 188*sizeof(pi5tab16[0]));
|
||||||
|
|
||||||
memcpy(&tmp[0], &ptr_td[3], sizeof(ptr_td[3]));
|
memcpy(&tmp[0], &ptr_td[3], sizeof(ptr_td[3]));
|
||||||
memcpy(&pi6tab[0], tmp[0], 188*sizeof(pi6tab[0]));
|
memcpy(&pi6tab16[0], tmp[0], 188*sizeof(pi6tab16[0]));
|
||||||
|
|
||||||
harq_pid = (unsigned char) mxGetScalar(mxGetField(prhs[2],0,"harq_pid"));
|
harq_pid = (unsigned char) mxGetScalar(mxGetField(prhs[2],0,"harq_pid"));
|
||||||
dlsch->current_harq_pid = harq_pid;
|
dlsch->current_harq_pid = harq_pid;
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* dlsch_encoding_init.c
|
* dlsch_encoding_init.c
|
||||||
*
|
*
|
||||||
* Returns the decoded bit sequence.
|
* Returns the decoded bit sequence.
|
||||||
*
|
*
|
||||||
* example: dlsch_encoding_init(struct1)
|
* example: dlsch_decoding_init(struct1)
|
||||||
*
|
*
|
||||||
* Author: Sebastian Wagner
|
* Author: Sebastian Wagner
|
||||||
* Date: 23-07-2012
|
* Date: 23-07-2012
|
||||||
@@ -18,7 +18,7 @@ void mexFunction( int mlhs, mxArray *plhs[],
|
|||||||
int nrhs, const mxArray *prhs[]
|
int nrhs, const mxArray *prhs[]
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
extern int *pi2tab[188],*pi5tab[188],*pi4tab[188],*pi6tab[188];
|
extern int *pi2tab16[188],*pi5tab16[188],*pi4tab16[188],*pi6tab16[188];
|
||||||
int i;
|
int i;
|
||||||
unsigned int *ptr;
|
unsigned int *ptr;
|
||||||
int **tmp[1];
|
int **tmp[1];
|
||||||
@@ -31,20 +31,20 @@ void mexFunction( int mlhs, mxArray *plhs[],
|
|||||||
plhs[0] = mxCreateNumericMatrix(4,1, mxUINT32_CLASS, mxREAL);
|
plhs[0] = mxCreateNumericMatrix(4,1, mxUINT32_CLASS, mxREAL);
|
||||||
ptr = (unsigned int*) mxGetData(plhs[0]);
|
ptr = (unsigned int*) mxGetData(plhs[0]);
|
||||||
|
|
||||||
tmp[0] = &pi2tab[0];
|
tmp[0] = &pi2tab16[0];
|
||||||
memcpy(&ptr[0], tmp, sizeof(tmp[0]));
|
memcpy(&ptr[0], tmp, sizeof(tmp[0]));
|
||||||
tmp[0] = &pi4tab[0];
|
tmp[0] = &pi4tab16[0];
|
||||||
memcpy(&ptr[1], tmp, sizeof(tmp[0]));
|
memcpy(&ptr[1], tmp, sizeof(tmp[0]));
|
||||||
tmp[0] = &pi5tab[0];
|
tmp[0] = &pi5tab16[0];
|
||||||
memcpy(&ptr[2], tmp, sizeof(tmp[0]));
|
memcpy(&ptr[2], tmp, sizeof(tmp[0]));
|
||||||
tmp[0] = &pi6tab[0];
|
tmp[0] = &pi6tab16[0];
|
||||||
memcpy(&ptr[3], tmp, sizeof(tmp[0]));
|
memcpy(&ptr[3], tmp, sizeof(tmp[0]));
|
||||||
|
|
||||||
#ifdef DEBUG_DLSCH_DECODING_INIT
|
#ifdef DEBUG_DLSCH_DECODING_INIT
|
||||||
mexPrintf("pi2tab %p\n",&pi2tab[0]);
|
mexPrintf("pi2tab %p\n",&pi2tab16[0]);
|
||||||
mexPrintf("pi4tab %p\n",&pi4tab[0]);
|
mexPrintf("pi4tab %p\n",&pi4tab16[0]);
|
||||||
mexPrintf("pi5tab %p\n",&pi5tab[0]);
|
mexPrintf("pi5tab %p\n",&pi5tab16[0]);
|
||||||
mexPrintf("pi6tab %p\n",&pi6tab[0]);
|
mexPrintf("pi6tab %p\n",&pi6tab16[0]);
|
||||||
|
|
||||||
mexPrintf("ptr0 %p\n",ptr[0]);
|
mexPrintf("ptr0 %p\n",ptr[0]);
|
||||||
mexPrintf("ptr1 %p\n",ptr[1]);
|
mexPrintf("ptr1 %p\n",ptr[1]);
|
||||||
@@ -55,9 +55,9 @@ void mexFunction( int mlhs, mxArray *plhs[],
|
|||||||
// The memory here is never explictly freed via mxFree. It is implicitly taken
|
// The memory here is never explictly freed via mxFree. It is implicitly taken
|
||||||
// care of by clear functions at the beginning of the simulation.
|
// care of by clear functions at the beginning of the simulation.
|
||||||
for (i=0;i<188;i++) {
|
for (i=0;i<188;i++) {
|
||||||
mexMakeMemoryPersistent((void *) pi2tab[i]);
|
mexMakeMemoryPersistent((void *) pi2tab16[i]);
|
||||||
mexMakeMemoryPersistent((void *) pi5tab[i]);
|
mexMakeMemoryPersistent((void *) pi5tab16[i]);
|
||||||
mexMakeMemoryPersistent((void *) pi4tab[i]);
|
mexMakeMemoryPersistent((void *) pi4tab16[i]);
|
||||||
mexMakeMemoryPersistent((void *) pi6tab[i]);
|
mexMakeMemoryPersistent((void *) pi6tab16[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* dlsch_detection_mrc.c
|
* dlsch_detection_mrc.c
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* dlsch_dual_stream_correlation.c
|
* dlsch_dual_stream_correlation.c
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* dlsch_encoding.c
|
* dlsch_encoding.c
|
||||||
@@ -71,7 +71,7 @@ void mexFunction( int nlhs, mxArray *plhs[],
|
|||||||
abstraction_flag = (unsigned char) mxGetScalar(tmp);
|
abstraction_flag = (unsigned char) mxGetScalar(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
dlsch = new_eNB_dlsch(Kmimo,Mdlharq,abstraction_flag);
|
dlsch = new_eNB_dlsch(Kmimo,Mdlharq,25,abstraction_flag);
|
||||||
|
|
||||||
/* Allocate input */
|
/* Allocate input */
|
||||||
input_buffer = (unsigned char*) mxGetData(prhs[0]);
|
input_buffer = (unsigned char*) mxGetData(prhs[0]);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* dlsch_mu_mimo_llr.c
|
* dlsch_mu_mimo_llr.c
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* get_tbs.c
|
* get_tbs.c
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
void mexFunction( int nlhs, mxArray *plhs[],
|
void mexFunction( int nlhs, mxArray *plhs[],
|
||||||
int nrhs, const mxArray *prhs[]
|
int nrhs, const mxArray *prhs[]
|
||||||
|
|||||||
@@ -47,8 +47,13 @@ simparms.tseeds = set_taus_seed(1); % taus seeds
|
|||||||
simparms.ptr_td = dlsch_decoding_init();
|
simparms.ptr_td = dlsch_decoding_init();
|
||||||
|
|
||||||
% Init codewords
|
% Init codewords
|
||||||
|
% simparms.codeword(1) = InitCodeword(simparms,mcs(1));
|
||||||
|
% simparms.codeword(2) = InitCodeword(simparms,mcs(2));
|
||||||
|
|
||||||
simparms.codeword(1) = InitCodeword(simparms,mcs(1));
|
simparms.codeword(1) = InitCodeword(simparms,mcs(1));
|
||||||
simparms.codeword(2) = InitCodeword(simparms,mcs(2));
|
simparms.codeword(2) = InitCodeword(simparms,mcs(2));
|
||||||
|
% simparms.codeword(3) = InitCodeword(simparms,mcs(1));
|
||||||
|
% simparms.codeword(4) = InitCodeword(simparms,mcs(1));
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -29,13 +29,12 @@ addpath('../../../PHY/TOOLS/mexfiles');
|
|||||||
addpath('../../../SIMULATION/TOOLS/mexfiles');
|
addpath('../../../SIMULATION/TOOLS/mexfiles');
|
||||||
|
|
||||||
% profile on;
|
% profile on;
|
||||||
|
|
||||||
%% System parameters
|
%% System parameters
|
||||||
nt = 2; % number of transmit antennas
|
nt = 2; % number of transmit antennas
|
||||||
nr = 2; % number of receive antennas
|
nr = 2; % number of receive antennas
|
||||||
N = 100; % number of frames (or subframes, codewords)
|
N = 100; % number of frames (or subframes, codewords)
|
||||||
nSNR = 1; % number of SNR points
|
nSNR = 1; % number of SNR points
|
||||||
SNRdB = 20; % SNR per receive antenna in dB
|
SNRdB = 5; % SNR per receive antenna in dB
|
||||||
% nSNR = 13;
|
% nSNR = 13;
|
||||||
% SNRdB = linspace(8,20,nSNR);
|
% SNRdB = linspace(8,20,nSNR);
|
||||||
MCS = [16 16]; % MCS for the 2 users
|
MCS = [16 16]; % MCS for the 2 users
|
||||||
@@ -84,7 +83,7 @@ noise = zeros(simparms.NB_ANTENNAS_RX,simparms.nb_re);
|
|||||||
|
|
||||||
%% XFORMS
|
%% XFORMS
|
||||||
if (XFORMS)
|
if (XFORMS)
|
||||||
scrsz = get(0,'ScreenSize');
|
scrsz = get(0,'ScreenSize');mu_mimo
|
||||||
figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])
|
figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])
|
||||||
subplot(1,2,1);
|
subplot(1,2,1);
|
||||||
xlim([1 simparms.codeword(1).G]);
|
xlim([1 simparms.codeword(1).G]);
|
||||||
@@ -199,7 +198,7 @@ for iSNR=1:length(simparms.snr)
|
|||||||
Hmagb0(idxs:idxe,:)]...
|
Hmagb0(idxs:idxe,:)]...
|
||||||
= dlsch_channel_compensation_prec(y_fxp_t,H_fxp_t,pmi_ext,simparms,simparms.codeword(1),symbol-1);
|
= dlsch_channel_compensation_prec(y_fxp_t,H_fxp_t,pmi_ext,simparms,simparms.codeword(1),symbol-1);
|
||||||
|
|
||||||
% Interfering user
|
% Interfering stream
|
||||||
[ymf1(idxs:idxe,:)...
|
[ymf1(idxs:idxe,:)...
|
||||||
Heff1(idxs:idxe,:)...
|
Heff1(idxs:idxe,:)...
|
||||||
Hmag1(idxs:idxe,:)...
|
Hmag1(idxs:idxe,:)...
|
||||||
|
|||||||
@@ -18,15 +18,16 @@ addpath('../../../PHY/TOOLS/mexfiles');
|
|||||||
addpath('../../../SIMULATION/TOOLS/mexfiles');
|
addpath('../../../SIMULATION/TOOLS/mexfiles');
|
||||||
|
|
||||||
% profile on;
|
% profile on;
|
||||||
|
tic
|
||||||
%% System parameters
|
%% System parameters
|
||||||
nt = 2;
|
nt = 2;
|
||||||
nr = 1;
|
nr = 2;
|
||||||
N = 1000; % number of frames (codewords)
|
N = 1000; % number of frames (codewords)
|
||||||
nSNR = 1;
|
nSNR = 1;
|
||||||
SNRdB = 30;
|
%SNRdB = [1:20];
|
||||||
|
SNRdB = 10;
|
||||||
% nSNR = 13;
|
% nSNR = 13;
|
||||||
% SNRdB = linspace(8,20,nSNR);
|
%SNRdB = linspace(1,20,nSNR);
|
||||||
MCS = [9 9]; % MCS for the 2 users, currently it is assumed that mcs(2)=mcs(1)
|
MCS = [9 9]; % MCS for the 2 users, currently it is assumed that mcs(2)=mcs(1)
|
||||||
j = sqrt(-1);
|
j = sqrt(-1);
|
||||||
amp = 1/32;
|
amp = 1/32;
|
||||||
@@ -237,12 +238,12 @@ for iSNR=1:length(simparms.snr)
|
|||||||
end
|
end
|
||||||
|
|
||||||
%% Post Processing
|
%% Post Processing
|
||||||
% total_frame_erros = sum(frame_errors,2);
|
% total_frame_erros = sum(simparms.frame_errors,2);
|
||||||
% fer = total_frame_erros/N;
|
% fer = total_frame_erros/N;
|
||||||
% figure; semilogy(SNRdB,fer); grid;
|
% figure; semilogy(SNRdB,fer); grid;
|
||||||
|
%
|
||||||
|
% disp(fer);
|
||||||
%
|
%
|
||||||
% disp(fer);
|
|
||||||
|
|
||||||
% profile viewer
|
% profile viewer
|
||||||
|
toc
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* set_taus_seed.c
|
* set_taus_seed.c
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "defs.h"
|
#include "../../../defs.h"
|
||||||
|
|
||||||
/*==============================================================================
|
/*==============================================================================
|
||||||
* taus.c
|
* taus.c
|
||||||
@@ -62,7 +62,6 @@ void mexFunction( int nlhs, mxArray *plhs[],
|
|||||||
for(i=0;i<len;i++)
|
for(i=0;i<len;i++)
|
||||||
out[i] = (unsigned char)(mtaus()&0xff);
|
out[i] = (unsigned char)(mtaus()&0xff);
|
||||||
|
|
||||||
|
|
||||||
tseeds_out[0] = s0;
|
tseeds_out[0] = s0;
|
||||||
tseeds_out[1] = s1;
|
tseeds_out[1] = s1;
|
||||||
tseeds_out[2] = s2;
|
tseeds_out[2] = s2;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "./lib/mex.h"
|
#include "mex.h"
|
||||||
#include "../../SIMULATION/TOOLS/defs.h"
|
#include "../../SIMULATION/TOOLS/defs.h"
|
||||||
#include "../../PHY/types.h"
|
#include "../../PHY/types.h"
|
||||||
#include "../../PHY/defs.h"
|
#include "../../PHY/defs.h"
|
||||||
|
|||||||
Reference in New Issue
Block a user